コード例 #1
0
        public int?GetFieldOffset(FieldDefinition fd)
        {
            var key = fd.FullName;

            FieldTableEntry result;

            if (!FieldTable.TryGetValue(key, out result))
            {
                var size = WasmUtil.SizeOfType(fd.FieldType);

                // HACK HACK HACK
                int offset = fd.IsStatic
                    ? (int)ReserveHeapSpace(size)
                    : WasmUtil.OffsetOfField(fd);

                result = new FieldTableEntry(offset, fd);
                FieldTable.Add(key, result);
            }

            return(result.Offset);
        }
コード例 #2
0
ファイル: AssemblyEmitter.cs プロジェクト: WebAssembly/ilwasm
        public int? GetFieldOffset(FieldDefinition fd)
        {
            var key = fd.FullName;

            FieldTableEntry result;
            if (!FieldTable.TryGetValue(key, out result)) {
                var size = WasmUtil.SizeOfType(fd.FieldType);

                // HACK HACK HACK
                int offset = fd.IsStatic
                    ? (int)ReserveHeapSpace(size)
                    : WasmUtil.OffsetOfField(fd);

                result = new FieldTableEntry(offset, fd);
                FieldTable.Add(key, result);
            }

            return result.Offset;
        }