diff options
Diffstat (limited to 'deps/v8/src/wasm/wasm-objects-inl.h')
-rw-r--r-- | deps/v8/src/wasm/wasm-objects-inl.h | 95 |
1 files changed, 81 insertions, 14 deletions
diff --git a/deps/v8/src/wasm/wasm-objects-inl.h b/deps/v8/src/wasm/wasm-objects-inl.h index 0144b8af5b..9adcc94f12 100644 --- a/deps/v8/src/wasm/wasm-objects-inl.h +++ b/deps/v8/src/wasm/wasm-objects-inl.h @@ -9,8 +9,11 @@ #include "src/contexts-inl.h" #include "src/heap/heap-inl.h" +#include "src/objects/foreign-inl.h" +#include "src/objects/heap-number-inl.h" #include "src/objects/js-array-buffer-inl.h" #include "src/objects/managed.h" +#include "src/objects/oddball-inl.h" #include "src/v8memory.h" #include "src/wasm/wasm-code-manager.h" #include "src/wasm/wasm-module.h" @@ -21,18 +24,33 @@ namespace v8 { namespace internal { +OBJECT_CONSTRUCTORS_IMPL(WasmExceptionObject, JSObject) +OBJECT_CONSTRUCTORS_IMPL(WasmExceptionTag, Struct) +OBJECT_CONSTRUCTORS_IMPL(WasmExportedFunctionData, Struct) +OBJECT_CONSTRUCTORS_IMPL(WasmDebugInfo, Struct) +OBJECT_CONSTRUCTORS_IMPL(WasmGlobalObject, JSObject) +OBJECT_CONSTRUCTORS_IMPL(WasmInstanceObject, JSObject) +OBJECT_CONSTRUCTORS_IMPL(WasmMemoryObject, JSObject) +OBJECT_CONSTRUCTORS_IMPL(WasmModuleObject, JSObject) +OBJECT_CONSTRUCTORS_IMPL(WasmTableObject, JSObject) +OBJECT_CONSTRUCTORS_IMPL(AsmWasmData, Struct) + +NEVER_READ_ONLY_SPACE_IMPL(WasmDebugInfo) + CAST_ACCESSOR(WasmDebugInfo) CAST_ACCESSOR(WasmExceptionObject) +CAST_ACCESSOR(WasmExceptionTag) CAST_ACCESSOR(WasmExportedFunctionData) CAST_ACCESSOR(WasmGlobalObject) CAST_ACCESSOR(WasmInstanceObject) CAST_ACCESSOR(WasmMemoryObject) CAST_ACCESSOR(WasmModuleObject) CAST_ACCESSOR(WasmTableObject) +CAST_ACCESSOR(AsmWasmData) #define OPTIONAL_ACCESSORS(holder, name, type, offset) \ bool holder::has_##name() { \ - return !READ_FIELD(this, offset)->IsUndefined(); \ + return !READ_FIELD(*this, offset)->IsUndefined(); \ } \ ACCESSORS(holder, name, type, offset) @@ -64,6 +82,10 @@ OPTIONAL_ACCESSORS(WasmModuleObject, breakpoint_infos, FixedArray, wasm::NativeModule* WasmModuleObject::native_module() const { return managed_native_module()->raw(); } +std::shared_ptr<wasm::NativeModule> WasmModuleObject::shared_native_module() + const { + return managed_native_module()->get(); +} const wasm::WasmModule* WasmModuleObject::module() const { // TODO(clemensh): Remove this helper (inline in callers). return native_module()->module(); @@ -90,7 +112,9 @@ SMI_ACCESSORS(WasmMemoryObject, maximum_pages, kMaximumPagesOffset) OPTIONAL_ACCESSORS(WasmMemoryObject, instances, WeakArrayList, kInstancesOffset) // WasmGlobalObject -ACCESSORS(WasmGlobalObject, array_buffer, JSArrayBuffer, kArrayBufferOffset) +ACCESSORS(WasmGlobalObject, untagged_buffer, JSArrayBuffer, + kUntaggedBufferOffset) +ACCESSORS(WasmGlobalObject, tagged_buffer, FixedArray, kTaggedBufferOffset) SMI_ACCESSORS(WasmGlobalObject, offset, kOffsetOffset) SMI_ACCESSORS(WasmGlobalObject, flags, kFlagsOffset) BIT_FIELD_ACCESSORS(WasmGlobalObject, flags, type, WasmGlobalObject::TypeBits) @@ -102,8 +126,9 @@ int WasmGlobalObject::type_size() const { } Address WasmGlobalObject::address() const { - DCHECK_LE(offset() + type_size(), array_buffer()->byte_length()); - return Address(array_buffer()->backing_store()) + offset(); + DCHECK_NE(type(), wasm::kWasmAnyRef); + DCHECK_LE(offset() + type_size(), untagged_buffer()->byte_length()); + return Address(untagged_buffer()->backing_store()) + offset(); } int32_t WasmGlobalObject::GetI32() { @@ -122,6 +147,11 @@ double WasmGlobalObject::GetF64() { return ReadLittleEndianValue<double>(address()); } +Handle<Object> WasmGlobalObject::GetAnyRef() { + DCHECK_EQ(type(), wasm::kWasmAnyRef); + return handle(tagged_buffer()->get(offset()), GetIsolate()); +} + void WasmGlobalObject::SetI32(int32_t value) { WriteLittleEndianValue<int32_t>(address(), value); } @@ -138,12 +168,17 @@ void WasmGlobalObject::SetF64(double value) { WriteLittleEndianValue<double>(address(), value); } +void WasmGlobalObject::SetAnyRef(Handle<Object> value) { + DCHECK_EQ(type(), wasm::kWasmAnyRef); + tagged_buffer()->set(offset(), *value); +} + // WasmInstanceObject PRIMITIVE_ACCESSORS(WasmInstanceObject, memory_start, byte*, kMemoryStartOffset) PRIMITIVE_ACCESSORS(WasmInstanceObject, memory_size, size_t, kMemorySizeOffset) PRIMITIVE_ACCESSORS(WasmInstanceObject, memory_mask, size_t, kMemoryMaskOffset) -PRIMITIVE_ACCESSORS(WasmInstanceObject, roots_array_address, Address, - kRootsArrayAddressOffset) +PRIMITIVE_ACCESSORS(WasmInstanceObject, isolate_root, Address, + kIsolateRootOffset) PRIMITIVE_ACCESSORS(WasmInstanceObject, stack_limit_address, Address, kStackLimitAddressOffset) PRIMITIVE_ACCESSORS(WasmInstanceObject, real_stack_limit_address, Address, @@ -162,6 +197,14 @@ PRIMITIVE_ACCESSORS(WasmInstanceObject, indirect_function_table_targets, Address*, kIndirectFunctionTableTargetsOffset) PRIMITIVE_ACCESSORS(WasmInstanceObject, jump_table_start, Address, kJumpTableStartOffset) +PRIMITIVE_ACCESSORS(WasmInstanceObject, data_segment_starts, Address*, + kDataSegmentStartsOffset) +PRIMITIVE_ACCESSORS(WasmInstanceObject, data_segment_sizes, uint32_t*, + kDataSegmentSizesOffset) +PRIMITIVE_ACCESSORS(WasmInstanceObject, dropped_data_segments, byte*, + kDroppedDataSegmentsOffset) +PRIMITIVE_ACCESSORS(WasmInstanceObject, dropped_elem_segments, byte*, + kDroppedElemSegmentsOffset) ACCESSORS(WasmInstanceObject, module_object, WasmModuleObject, kModuleObjectOffset) @@ -169,20 +212,20 @@ ACCESSORS(WasmInstanceObject, exports_object, JSObject, kExportsObjectOffset) ACCESSORS(WasmInstanceObject, native_context, Context, kNativeContextOffset) OPTIONAL_ACCESSORS(WasmInstanceObject, memory_object, WasmMemoryObject, kMemoryObjectOffset) -OPTIONAL_ACCESSORS(WasmInstanceObject, globals_buffer, JSArrayBuffer, - kGlobalsBufferOffset) +OPTIONAL_ACCESSORS(WasmInstanceObject, untagged_globals_buffer, JSArrayBuffer, + kUntaggedGlobalsBufferOffset) +OPTIONAL_ACCESSORS(WasmInstanceObject, tagged_globals_buffer, FixedArray, + kTaggedGlobalsBufferOffset) OPTIONAL_ACCESSORS(WasmInstanceObject, imported_mutable_globals_buffers, FixedArray, kImportedMutableGlobalsBuffersOffset) OPTIONAL_ACCESSORS(WasmInstanceObject, debug_info, WasmDebugInfo, kDebugInfoOffset) OPTIONAL_ACCESSORS(WasmInstanceObject, table_object, WasmTableObject, kTableObjectOffset) -ACCESSORS(WasmInstanceObject, imported_function_instances, FixedArray, - kImportedFunctionInstancesOffset) -ACCESSORS(WasmInstanceObject, imported_function_callables, FixedArray, - kImportedFunctionCallablesOffset) -OPTIONAL_ACCESSORS(WasmInstanceObject, indirect_function_table_instances, - FixedArray, kIndirectFunctionTableInstancesOffset) +ACCESSORS(WasmInstanceObject, imported_function_refs, FixedArray, + kImportedFunctionRefsOffset) +OPTIONAL_ACCESSORS(WasmInstanceObject, indirect_function_table_refs, FixedArray, + kIndirectFunctionTableRefsOffset) OPTIONAL_ACCESSORS(WasmInstanceObject, managed_native_allocations, Foreign, kManagedNativeAllocationsOffset) OPTIONAL_ACCESSORS(WasmInstanceObject, exceptions_table, FixedArray, @@ -195,6 +238,14 @@ inline bool WasmInstanceObject::has_indirect_function_table() { return indirect_function_table_sig_ids() != nullptr; } +void WasmInstanceObject::clear_padding() { + if (FIELD_SIZE(kOptionalPaddingOffset) != 0) { + DCHECK_EQ(4, FIELD_SIZE(kOptionalPaddingOffset)); + memset(reinterpret_cast<void*>(address() + kOptionalPaddingOffset), 0, + FIELD_SIZE(kOptionalPaddingOffset)); + } +} + IndirectFunctionTableEntry::IndirectFunctionTableEntry( Handle<WasmInstanceObject> instance, int index) : instance_(instance), index_(index) { @@ -214,6 +265,12 @@ ACCESSORS(WasmExceptionObject, serialized_signature, PodArray<wasm::ValueType>, kSerializedSignatureOffset) ACCESSORS(WasmExceptionObject, exception_tag, HeapObject, kExceptionTagOffset) +// WasmExportedFunction +WasmExportedFunction::WasmExportedFunction(Address ptr) : JSFunction(ptr) { + SLOW_DCHECK(IsWasmExportedFunction(*this)); +} +CAST_ACCESSOR(WasmExportedFunction) + // WasmExportedFunctionData ACCESSORS(WasmExportedFunctionData, wrapper_code, Code, kWrapperCodeOffset) ACCESSORS(WasmExportedFunctionData, instance, WasmInstanceObject, @@ -242,6 +299,16 @@ uint32_t WasmTableObject::current_length() { return functions()->length(); } bool WasmMemoryObject::has_maximum_pages() { return maximum_pages() >= 0; } +// WasmExceptionTag +SMI_ACCESSORS(WasmExceptionTag, index, kIndexOffset) + +// AsmWasmData +ACCESSORS(AsmWasmData, managed_native_module, Managed<wasm::NativeModule>, + kManagedNativeModuleOffset) +ACCESSORS(AsmWasmData, export_wrappers, FixedArray, kExportWrappersOffset) +ACCESSORS(AsmWasmData, asm_js_offset_table, ByteArray, kAsmJsOffsetTableOffset) +ACCESSORS(AsmWasmData, uses_bitset, HeapNumber, kUsesBitsetOffset) + #include "src/objects/object-macros-undef.h" } // namespace internal |