| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_WASM_OBJECTS_H_ | 5 #ifndef V8_WASM_OBJECTS_H_ |
| 6 #define V8_WASM_OBJECTS_H_ | 6 #define V8_WASM_OBJECTS_H_ |
| 7 | 7 |
| 8 #include "src/debug/debug.h" | 8 #include "src/debug/debug.h" |
| 9 #include "src/debug/interface-types.h" | 9 #include "src/debug/interface-types.h" |
| 10 #include "src/objects.h" | 10 #include "src/objects.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 namespace v8 { | 22 namespace v8 { |
| 23 namespace internal { | 23 namespace internal { |
| 24 namespace wasm { | 24 namespace wasm { |
| 25 class InterpretedFrame; | 25 class InterpretedFrame; |
| 26 class WasmInterpreter; | 26 class WasmInterpreter; |
| 27 } | 27 } |
| 28 | 28 |
| 29 class WasmCompiledModule; | 29 class WasmCompiledModule; |
| 30 class WasmDebugInfo; | 30 class WasmDebugInfo; |
| 31 class WasmInstanceObject; | 31 class WasmInstanceObject; |
| 32 class WasmInstanceWrapper; | |
| 33 | 32 |
| 34 #define DECL_OOL_QUERY(type) static bool Is##type(Object* object); | 33 #define DECL_OOL_QUERY(type) static bool Is##type(Object* object); |
| 35 #define DECL_OOL_CAST(type) static type* cast(Object* object); | 34 #define DECL_OOL_CAST(type) static type* cast(Object* object); |
| 36 | 35 |
| 37 #define DECL_GETTER(name, type) type* name(); | 36 #define DECL_GETTER(name, type) type* name(); |
| 38 | 37 |
| 39 #define DECL_OPTIONAL_ACCESSORS(name, type) \ | 38 #define DECL_OPTIONAL_ACCESSORS(name, type) \ |
| 40 INLINE(bool has_##name()); \ | 39 INLINE(bool has_##name()); \ |
| 41 DECL_ACCESSORS(name, type) | 40 DECL_ACCESSORS(name, type) |
| 42 | 41 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 Handle<FixedArray> function_table, Handle<FixedArray> signature_table); | 105 Handle<FixedArray> function_table, Handle<FixedArray> signature_table); |
| 107 }; | 106 }; |
| 108 | 107 |
| 109 // Representation of a WebAssembly.Memory JavaScript-level object. | 108 // Representation of a WebAssembly.Memory JavaScript-level object. |
| 110 class WasmMemoryObject : public JSObject { | 109 class WasmMemoryObject : public JSObject { |
| 111 public: | 110 public: |
| 112 DECL_CAST(WasmMemoryObject) | 111 DECL_CAST(WasmMemoryObject) |
| 113 | 112 |
| 114 DECL_ACCESSORS(array_buffer, JSArrayBuffer) | 113 DECL_ACCESSORS(array_buffer, JSArrayBuffer) |
| 115 DECL_INT_ACCESSORS(maximum_pages) | 114 DECL_INT_ACCESSORS(maximum_pages) |
| 116 DECL_OPTIONAL_ACCESSORS(instances_link, WasmInstanceWrapper) | 115 DECL_OPTIONAL_ACCESSORS(instances, WeakFixedArray) |
| 117 | 116 |
| 118 enum { // -- | 117 enum { // -- |
| 119 kArrayBufferIndex, | 118 kArrayBufferIndex, |
| 120 kMaximumPagesIndex, | 119 kMaximumPagesIndex, |
| 121 kInstancesLinkIndex, | 120 kInstancesIndex, |
| 122 kFieldCount | 121 kFieldCount |
| 123 }; | 122 }; |
| 124 | 123 |
| 125 DEF_SIZE(JSObject) | 124 DEF_SIZE(JSObject) |
| 126 DEF_OFFSET(ArrayBuffer) | 125 DEF_OFFSET(ArrayBuffer) |
| 127 DEF_OFFSET(MaximumPages) | 126 DEF_OFFSET(MaximumPages) |
| 128 DEF_OFFSET(InstancesLink) | 127 DEF_OFFSET(Instances) |
| 129 | 128 |
| 130 void AddInstance(Isolate* isolate, Handle<WasmInstanceObject> object); | 129 // Add an instance to the internal (weak) list. amortized O(n). |
| 131 inline void ResetInstancesLink(Isolate* isolate); | 130 static void AddInstance(Isolate* isolate, Handle<WasmMemoryObject> memory, |
| 131 Handle<WasmInstanceObject> object); |
| 132 // Remove an instance from the internal (weak) list. O(n). |
| 133 static void RemoveInstance(Isolate* isolate, Handle<WasmMemoryObject> memory, |
| 134 Handle<WasmInstanceObject> object); |
| 132 uint32_t current_pages(); | 135 uint32_t current_pages(); |
| 133 inline bool has_maximum_pages() { return maximum_pages() >= 0; } | 136 inline bool has_maximum_pages() { return maximum_pages() >= 0; } |
| 134 | 137 |
| 135 static Handle<WasmMemoryObject> New(Isolate* isolate, | 138 static Handle<WasmMemoryObject> New(Isolate* isolate, |
| 136 Handle<JSArrayBuffer> buffer, | 139 Handle<JSArrayBuffer> buffer, |
| 137 int32_t maximum); | 140 int32_t maximum); |
| 138 | 141 |
| 139 static int32_t Grow(Isolate*, Handle<WasmMemoryObject>, uint32_t pages); | 142 static int32_t Grow(Isolate*, Handle<WasmMemoryObject>, uint32_t pages); |
| 140 }; | 143 }; |
| 141 | 144 |
| 142 // A WebAssembly.Instance JavaScript-level object. | 145 // A WebAssembly.Instance JavaScript-level object. |
| 143 class WasmInstanceObject : public JSObject { | 146 class WasmInstanceObject : public JSObject { |
| 144 public: | 147 public: |
| 145 DECL_CAST(WasmInstanceObject) | 148 DECL_CAST(WasmInstanceObject) |
| 146 | 149 |
| 147 DECL_ACCESSORS(compiled_module, WasmCompiledModule) | 150 DECL_ACCESSORS(compiled_module, WasmCompiledModule) |
| 148 DECL_OPTIONAL_ACCESSORS(memory_object, WasmMemoryObject) | 151 DECL_OPTIONAL_ACCESSORS(memory_object, WasmMemoryObject) |
| 149 DECL_OPTIONAL_ACCESSORS(memory_buffer, JSArrayBuffer) | 152 DECL_OPTIONAL_ACCESSORS(memory_buffer, JSArrayBuffer) |
| 150 DECL_OPTIONAL_ACCESSORS(globals_buffer, JSArrayBuffer) | 153 DECL_OPTIONAL_ACCESSORS(globals_buffer, JSArrayBuffer) |
| 151 DECL_OPTIONAL_ACCESSORS(debug_info, WasmDebugInfo) | 154 DECL_OPTIONAL_ACCESSORS(debug_info, WasmDebugInfo) |
| 152 DECL_OPTIONAL_ACCESSORS(instance_wrapper, WasmInstanceWrapper) | |
| 153 // FixedArray of all instances whose code was imported | 155 // FixedArray of all instances whose code was imported |
| 154 DECL_OPTIONAL_ACCESSORS(directly_called_instances, FixedArray) | 156 DECL_OPTIONAL_ACCESSORS(directly_called_instances, FixedArray) |
| 155 | 157 |
| 156 enum { // -- | 158 enum { // -- |
| 157 kCompiledModuleIndex, | 159 kCompiledModuleIndex, |
| 158 kMemoryObjectIndex, | 160 kMemoryObjectIndex, |
| 159 kMemoryBufferIndex, | 161 kMemoryBufferIndex, |
| 160 kGlobalsBufferIndex, | 162 kGlobalsBufferIndex, |
| 161 kDebugInfoIndex, | 163 kDebugInfoIndex, |
| 162 kInstanceWrapperIndex, | |
| 163 kDirectlyCalledInstancesIndex, | 164 kDirectlyCalledInstancesIndex, |
| 164 kFieldCount | 165 kFieldCount |
| 165 }; | 166 }; |
| 166 | 167 |
| 167 DEF_SIZE(JSObject) | 168 DEF_SIZE(JSObject) |
| 168 DEF_OFFSET(CompiledModule) | 169 DEF_OFFSET(CompiledModule) |
| 169 DEF_OFFSET(MemoryObject) | 170 DEF_OFFSET(MemoryObject) |
| 170 DEF_OFFSET(MemoryBuffer) | 171 DEF_OFFSET(MemoryBuffer) |
| 171 DEF_OFFSET(GlobalsBuffer) | 172 DEF_OFFSET(GlobalsBuffer) |
| 172 DEF_OFFSET(DebugInfo) | 173 DEF_OFFSET(DebugInfo) |
| 173 DEF_OFFSET(InstanceWrapper) | |
| 174 DEF_OFFSET(DirectlyCalledInstances) | 174 DEF_OFFSET(DirectlyCalledInstances) |
| 175 | 175 |
| 176 WasmModuleObject* module_object(); | 176 WasmModuleObject* module_object(); |
| 177 V8_EXPORT_PRIVATE wasm::WasmModule* module(); | 177 V8_EXPORT_PRIVATE wasm::WasmModule* module(); |
| 178 | 178 |
| 179 // Get the debug info associated with the given wasm object. | 179 // Get the debug info associated with the given wasm object. |
| 180 // If no debug info exists yet, it is created automatically. | 180 // If no debug info exists yet, it is created automatically. |
| 181 static Handle<WasmDebugInfo> GetOrCreateDebugInfo(Handle<WasmInstanceObject>); | 181 static Handle<WasmDebugInfo> GetOrCreateDebugInfo(Handle<WasmInstanceObject>); |
| 182 | 182 |
| 183 static Handle<WasmInstanceObject> New(Isolate*, Handle<WasmCompiledModule>); | 183 static Handle<WasmInstanceObject> New(Isolate*, Handle<WasmCompiledModule>); |
| (...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 661 // for the local scope. Both elements are JSArrays of size | 661 // for the local scope. Both elements are JSArrays of size |
| 662 // ScopeIterator::kScopeDetailsSize and layout as described in debug-scopes.h. | 662 // ScopeIterator::kScopeDetailsSize and layout as described in debug-scopes.h. |
| 663 // The global scope contains information about globals and the memory. | 663 // The global scope contains information about globals and the memory. |
| 664 // The local scope contains information about parameters, locals, and stack | 664 // The local scope contains information about parameters, locals, and stack |
| 665 // values. | 665 // values. |
| 666 static Handle<JSArray> GetScopeDetails(Handle<WasmDebugInfo>, | 666 static Handle<JSArray> GetScopeDetails(Handle<WasmDebugInfo>, |
| 667 Address frame_pointer, | 667 Address frame_pointer, |
| 668 int frame_index); | 668 int frame_index); |
| 669 }; | 669 }; |
| 670 | 670 |
| 671 class WasmInstanceWrapper : public FixedArray { | |
| 672 public: | |
| 673 enum { // -- | |
| 674 kWrapperInstanceObjectIndex, | |
| 675 kNextInstanceWrapperIndex, | |
| 676 kPreviousInstanceWrapperIndex, | |
| 677 kFieldCount | |
| 678 }; | |
| 679 | |
| 680 static WasmInstanceWrapper* cast(Object* fixed_array) { | |
| 681 SLOW_DCHECK(IsWasmInstanceWrapper(fixed_array)); | |
| 682 return reinterpret_cast<WasmInstanceWrapper*>(fixed_array); | |
| 683 } | |
| 684 static bool IsWasmInstanceWrapper(Object* obj); | |
| 685 bool has_instance() { return get(kWrapperInstanceObjectIndex)->IsWeakCell(); } | |
| 686 Handle<WasmInstanceObject> instance_object() { | |
| 687 Object* obj = get(kWrapperInstanceObjectIndex); | |
| 688 DCHECK(obj->IsWeakCell()); | |
| 689 WeakCell* cell = WeakCell::cast(obj); | |
| 690 DCHECK(cell->value()->IsJSObject()); | |
| 691 return handle(WasmInstanceObject::cast(cell->value())); | |
| 692 } | |
| 693 bool has_next() { | |
| 694 return IsWasmInstanceWrapper(get(kNextInstanceWrapperIndex)); | |
| 695 } | |
| 696 bool has_previous() { | |
| 697 return IsWasmInstanceWrapper(get(kPreviousInstanceWrapperIndex)); | |
| 698 } | |
| 699 void set_next_wrapper(Object* obj) { | |
| 700 DCHECK(IsWasmInstanceWrapper(obj)); | |
| 701 set(kNextInstanceWrapperIndex, obj); | |
| 702 } | |
| 703 void set_previous_wrapper(Object* obj) { | |
| 704 DCHECK(IsWasmInstanceWrapper(obj)); | |
| 705 set(kPreviousInstanceWrapperIndex, obj); | |
| 706 } | |
| 707 Handle<WasmInstanceWrapper> next_wrapper() { | |
| 708 Object* obj = get(kNextInstanceWrapperIndex); | |
| 709 DCHECK(IsWasmInstanceWrapper(obj)); | |
| 710 return handle(WasmInstanceWrapper::cast(obj)); | |
| 711 } | |
| 712 Handle<WasmInstanceWrapper> previous_wrapper() { | |
| 713 Object* obj = get(kPreviousInstanceWrapperIndex); | |
| 714 DCHECK(IsWasmInstanceWrapper(obj)); | |
| 715 return handle(WasmInstanceWrapper::cast(obj)); | |
| 716 } | |
| 717 void reset_next_wrapper() { set_undefined(kNextInstanceWrapperIndex); } | |
| 718 void reset_previous_wrapper() { | |
| 719 set_undefined(kPreviousInstanceWrapperIndex); | |
| 720 } | |
| 721 void reset() { | |
| 722 for (int kID = 0; kID < kFieldCount; kID++) set_undefined(kID); | |
| 723 } | |
| 724 | |
| 725 static Handle<WasmInstanceWrapper> New(Isolate* isolate, | |
| 726 Handle<WasmInstanceObject> instance); | |
| 727 }; | |
| 728 | |
| 729 // TODO(titzer): these should be moved to wasm-objects-inl.h | 671 // TODO(titzer): these should be moved to wasm-objects-inl.h |
| 730 CAST_ACCESSOR(WasmInstanceObject) | 672 CAST_ACCESSOR(WasmInstanceObject) |
| 731 CAST_ACCESSOR(WasmMemoryObject) | 673 CAST_ACCESSOR(WasmMemoryObject) |
| 732 CAST_ACCESSOR(WasmModuleObject) | 674 CAST_ACCESSOR(WasmModuleObject) |
| 733 CAST_ACCESSOR(WasmTableObject) | 675 CAST_ACCESSOR(WasmTableObject) |
| 734 | 676 |
| 735 // WasmModuleObject | 677 // WasmModuleObject |
| 736 ACCESSORS(WasmModuleObject, compiled_module, WasmCompiledModule, | 678 ACCESSORS(WasmModuleObject, compiled_module, WasmCompiledModule, |
| 737 kCompiledModuleOffset) | 679 kCompiledModuleOffset) |
| 738 | 680 |
| 739 // WasmTableObject | 681 // WasmTableObject |
| 740 ACCESSORS(WasmTableObject, functions, FixedArray, kFunctionsOffset) | 682 ACCESSORS(WasmTableObject, functions, FixedArray, kFunctionsOffset) |
| 741 SMI_ACCESSORS(WasmTableObject, maximum_length, kMaximumLengthOffset) | 683 SMI_ACCESSORS(WasmTableObject, maximum_length, kMaximumLengthOffset) |
| 742 ACCESSORS(WasmTableObject, dispatch_tables, FixedArray, kDispatchTablesOffset) | 684 ACCESSORS(WasmTableObject, dispatch_tables, FixedArray, kDispatchTablesOffset) |
| 743 | 685 |
| 744 // WasmMemoryObject | 686 // WasmMemoryObject |
| 745 ACCESSORS(WasmMemoryObject, array_buffer, JSArrayBuffer, kArrayBufferOffset) | 687 ACCESSORS(WasmMemoryObject, array_buffer, JSArrayBuffer, kArrayBufferOffset) |
| 746 SMI_ACCESSORS(WasmMemoryObject, maximum_pages, kMaximumPagesOffset) | 688 SMI_ACCESSORS(WasmMemoryObject, maximum_pages, kMaximumPagesOffset) |
| 747 ACCESSORS(WasmMemoryObject, instances_link, WasmInstanceWrapper, | 689 ACCESSORS(WasmMemoryObject, instances, WeakFixedArray, kInstancesOffset) |
| 748 kInstancesLinkOffset) | |
| 749 | 690 |
| 750 // WasmInstanceObject | 691 // WasmInstanceObject |
| 751 ACCESSORS(WasmInstanceObject, compiled_module, WasmCompiledModule, | 692 ACCESSORS(WasmInstanceObject, compiled_module, WasmCompiledModule, |
| 752 kCompiledModuleOffset) | 693 kCompiledModuleOffset) |
| 753 ACCESSORS(WasmInstanceObject, memory_object, WasmMemoryObject, | 694 ACCESSORS(WasmInstanceObject, memory_object, WasmMemoryObject, |
| 754 kMemoryObjectOffset) | 695 kMemoryObjectOffset) |
| 755 ACCESSORS(WasmInstanceObject, memory_buffer, JSArrayBuffer, kMemoryBufferOffset) | 696 ACCESSORS(WasmInstanceObject, memory_buffer, JSArrayBuffer, kMemoryBufferOffset) |
| 756 ACCESSORS(WasmInstanceObject, globals_buffer, JSArrayBuffer, | 697 ACCESSORS(WasmInstanceObject, globals_buffer, JSArrayBuffer, |
| 757 kGlobalsBufferOffset) | 698 kGlobalsBufferOffset) |
| 758 ACCESSORS(WasmInstanceObject, debug_info, WasmDebugInfo, kDebugInfoOffset) | 699 ACCESSORS(WasmInstanceObject, debug_info, WasmDebugInfo, kDebugInfoOffset) |
| 759 ACCESSORS(WasmInstanceObject, instance_wrapper, WasmInstanceWrapper, | |
| 760 kInstanceWrapperOffset) | |
| 761 ACCESSORS(WasmInstanceObject, directly_called_instances, FixedArray, | 700 ACCESSORS(WasmInstanceObject, directly_called_instances, FixedArray, |
| 762 kDirectlyCalledInstancesOffset) | 701 kDirectlyCalledInstancesOffset) |
| 763 | 702 |
| 764 // WasmExportedFunction | 703 // WasmExportedFunction |
| 765 ACCESSORS(WasmExportedFunction, instance, WasmInstanceObject, kInstanceOffset) | 704 ACCESSORS(WasmExportedFunction, instance, WasmInstanceObject, kInstanceOffset) |
| 766 SMI_ACCESSORS(WasmExportedFunction, function_index, kFunctionIndexOffset) | 705 SMI_ACCESSORS(WasmExportedFunction, function_index, kFunctionIndexOffset) |
| 767 | 706 |
| 768 // WasmSharedModuleData | 707 // WasmSharedModuleData |
| 769 ACCESSORS(WasmSharedModuleData, module_bytes, SeqOneByteString, | 708 ACCESSORS(WasmSharedModuleData, module_bytes, SeqOneByteString, |
| 770 kModuleBytesOffset) | 709 kModuleBytesOffset) |
| 771 ACCESSORS(WasmSharedModuleData, script, Script, kScriptOffset) | 710 ACCESSORS(WasmSharedModuleData, script, Script, kScriptOffset) |
| 772 ACCESSORS(WasmSharedModuleData, asm_js_offset_table, ByteArray, | 711 ACCESSORS(WasmSharedModuleData, asm_js_offset_table, ByteArray, |
| 773 kAsmJsOffsetTableOffset) | 712 kAsmJsOffsetTableOffset) |
| 774 ACCESSORS(WasmSharedModuleData, breakpoint_infos, FixedArray, | 713 ACCESSORS(WasmSharedModuleData, breakpoint_infos, FixedArray, |
| 775 kBreakPointInfosOffset) | 714 kBreakPointInfosOffset) |
| 776 | 715 |
| 777 #define OPTIONAL_ACCESSOR(holder, name, offset) \ | 716 #define OPTIONAL_ACCESSOR(holder, name, offset) \ |
| 778 bool holder::has_##name() { \ | 717 bool holder::has_##name() { \ |
| 779 return !READ_FIELD(this, offset)->IsUndefined(GetIsolate()); \ | 718 return !READ_FIELD(this, offset)->IsUndefined(GetIsolate()); \ |
| 780 } | 719 } |
| 781 | 720 |
| 782 OPTIONAL_ACCESSOR(WasmInstanceObject, debug_info, kDebugInfoOffset) | 721 OPTIONAL_ACCESSOR(WasmInstanceObject, debug_info, kDebugInfoOffset) |
| 783 OPTIONAL_ACCESSOR(WasmInstanceObject, memory_buffer, kMemoryBufferOffset) | 722 OPTIONAL_ACCESSOR(WasmInstanceObject, memory_buffer, kMemoryBufferOffset) |
| 784 OPTIONAL_ACCESSOR(WasmInstanceObject, memory_object, kMemoryObjectOffset) | 723 OPTIONAL_ACCESSOR(WasmInstanceObject, memory_object, kMemoryObjectOffset) |
| 785 OPTIONAL_ACCESSOR(WasmInstanceObject, instance_wrapper, kInstanceWrapperOffset) | |
| 786 | 724 |
| 787 OPTIONAL_ACCESSOR(WasmMemoryObject, instances_link, kInstancesLinkOffset) | 725 OPTIONAL_ACCESSOR(WasmMemoryObject, instances, kInstancesOffset) |
| 788 | 726 |
| 789 OPTIONAL_ACCESSOR(WasmSharedModuleData, breakpoint_infos, | 727 OPTIONAL_ACCESSOR(WasmSharedModuleData, breakpoint_infos, |
| 790 kBreakPointInfosOffset) | 728 kBreakPointInfosOffset) |
| 791 OPTIONAL_ACCESSOR(WasmSharedModuleData, asm_js_offset_table, | 729 OPTIONAL_ACCESSOR(WasmSharedModuleData, asm_js_offset_table, |
| 792 kAsmJsOffsetTableOffset) | 730 kAsmJsOffsetTableOffset) |
| 793 OPTIONAL_ACCESSOR(WasmSharedModuleData, lazy_compilation_orchestrator, | 731 OPTIONAL_ACCESSOR(WasmSharedModuleData, lazy_compilation_orchestrator, |
| 794 kLazyCompilationOrchestratorOffset) | 732 kLazyCompilationOrchestratorOffset) |
| 795 | 733 |
| 796 ACCESSORS(WasmDebugInfo, locals_names, FixedArray, kLocalsNamesOffset) | 734 ACCESSORS(WasmDebugInfo, locals_names, FixedArray, kLocalsNamesOffset) |
| 797 | 735 |
| 798 OPTIONAL_ACCESSOR(WasmDebugInfo, locals_names, kLocalsNamesOffset) | 736 OPTIONAL_ACCESSOR(WasmDebugInfo, locals_names, kLocalsNamesOffset) |
| 799 | 737 |
| 800 inline void WasmMemoryObject::ResetInstancesLink(Isolate* isolate) { | |
| 801 // This has to be a raw access to bypass typechecking. | |
| 802 WRITE_FIELD(this, kInstancesLinkOffset, isolate->heap()->undefined_value()); | |
| 803 } | |
| 804 | |
| 805 #undef DECL_OOL_QUERY | 738 #undef DECL_OOL_QUERY |
| 806 #undef DECL_OOL_CAST | 739 #undef DECL_OOL_CAST |
| 807 #undef DECL_GETTER | 740 #undef DECL_GETTER |
| 808 #undef DECL_OPTIONAL_ACCESSORS | 741 #undef DECL_OPTIONAL_ACCESSORS |
| 809 #undef DECL_OPTIONAL_GETTER | 742 #undef DECL_OPTIONAL_GETTER |
| 810 | 743 |
| 811 #include "src/objects/object-macros-undef.h" | 744 #include "src/objects/object-macros-undef.h" |
| 812 | 745 |
| 813 } // namespace internal | 746 } // namespace internal |
| 814 } // namespace v8 | 747 } // namespace v8 |
| 815 | 748 |
| 816 #endif // V8_WASM_OBJECTS_H_ | 749 #endif // V8_WASM_OBJECTS_H_ |
| OLD | NEW |