Index: src/wasm/wasm-objects.cc |
diff --git a/src/wasm/wasm-objects.cc b/src/wasm/wasm-objects.cc |
index c6ed93dedfa23f2df156731ee550a8978cf4cb7e..77d37dadfad622635471c2656d9cadb7cbe290eb 100644 |
--- a/src/wasm/wasm-objects.cc |
+++ b/src/wasm/wasm-objects.cc |
@@ -29,46 +29,6 @@ |
using namespace v8::internal; |
using namespace v8::internal::wasm; |
-#define DEFINE_GETTER0(getter, Container, name, field, type) \ |
- type* Container::name() { return type::cast(getter(field)); } |
- |
-#define DEFINE_ACCESSORS0(getter, setter, Container, name, field, type) \ |
- DEFINE_GETTER0(getter, Container, name, field, type) \ |
- void Container::set_##name(type* value) { return setter(field, value); } |
- |
-#define DEFINE_OPTIONAL_ACCESSORS0(getter, setter, Container, name, field, \ |
- type) \ |
- DEFINE_ACCESSORS0(getter, setter, Container, name, field, type) \ |
- bool Container::has_##name() { \ |
- return !getter(field)->IsUndefined(GetIsolate()); \ |
- } |
- |
-#define DEFINE_OPTIONAL_GETTER0(getter, Container, name, field, type) \ |
- DEFINE_GETTER0(getter, Container, name, field, type) \ |
- bool Container::has_##name() { \ |
- return !getter(field)->IsUndefined(GetIsolate()); \ |
- } |
- |
-#define DEFINE_GETTER0(getter, Container, name, field, type) \ |
- type* Container::name() { return type::cast(getter(field)); } |
- |
-#define DEFINE_OBJ_GETTER(Container, name, field, type) \ |
- DEFINE_GETTER0(GetEmbedderField, Container, name, field, type) |
-#define DEFINE_OBJ_ACCESSORS(Container, name, field, type) \ |
- DEFINE_ACCESSORS0(GetEmbedderField, SetEmbedderField, Container, name, \ |
- field, type) |
-#define DEFINE_OPTIONAL_OBJ_ACCESSORS(Container, name, field, type) \ |
- DEFINE_OPTIONAL_ACCESSORS0(GetEmbedderField, SetEmbedderField, Container, \ |
- name, field, type) |
-#define DEFINE_ARR_GETTER(Container, name, field, type) \ |
- DEFINE_GETTER0(get, Container, name, field, type) |
-#define DEFINE_ARR_ACCESSORS(Container, name, field, type) \ |
- DEFINE_ACCESSORS0(get, set, Container, name, field, type) |
-#define DEFINE_OPTIONAL_ARR_ACCESSORS(Container, name, field, type) \ |
- DEFINE_OPTIONAL_ACCESSORS0(get, set, Container, name, field, type) |
-#define DEFINE_OPTIONAL_ARR_GETTER(Container, name, field, type) \ |
- DEFINE_OPTIONAL_GETTER0(get, Container, name, field, type) |
- |
namespace { |
// An iterator that returns first the module itself, then all modules linked via |
@@ -198,63 +158,38 @@ bool IsBreakablePosition(Handle<WasmCompiledModule> compiled_module, |
Handle<WasmModuleObject> WasmModuleObject::New( |
Isolate* isolate, Handle<WasmCompiledModule> compiled_module) { |
- WasmModule* module = compiled_module->module(); |
- Handle<JSObject> module_object; |
- if (module->is_wasm()) { |
- Handle<JSFunction> module_cons( |
- isolate->native_context()->wasm_module_constructor()); |
- module_object = isolate->factory()->NewJSObject(module_cons); |
- Handle<Symbol> module_sym(isolate->native_context()->wasm_module_sym()); |
- Object::SetProperty(module_object, module_sym, module_object, STRICT) |
- .Check(); |
- } else { |
- DCHECK(module->is_asm_js()); |
- Handle<Map> map = isolate->factory()->NewMap( |
- JS_OBJECT_TYPE, |
- JSObject::kHeaderSize + WasmModuleObject::kFieldCount * kPointerSize); |
- module_object = isolate->factory()->NewJSObjectFromMap(map, TENURED); |
- } |
- module_object->SetEmbedderField(WasmModuleObject::kCompiledModule, |
- *compiled_module); |
+ Handle<JSFunction> module_cons( |
+ isolate->native_context()->wasm_module_constructor()); |
+ auto module_object = Handle<WasmModuleObject>::cast( |
+ isolate->factory()->NewJSObject(module_cons)); |
+ Handle<Symbol> module_sym(isolate->native_context()->wasm_module_sym()); |
+ Object::SetProperty(module_object, module_sym, module_object, STRICT).Check(); |
+ module_object->set_compiled_module(*compiled_module); |
Handle<WeakCell> link_to_module = |
isolate->factory()->NewWeakCell(module_object); |
compiled_module->set_weak_wasm_module(link_to_module); |
- return Handle<WasmModuleObject>::cast(module_object); |
-} |
- |
-WasmModuleObject* WasmModuleObject::cast(Object* object) { |
- DCHECK(object->IsJSObject()); |
- // TODO(titzer): brand check for WasmModuleObject. |
- return reinterpret_cast<WasmModuleObject*>(object); |
+ return module_object; |
} |
-bool WasmModuleObject::IsWasmModuleObject(Object* object) { |
- return object->IsJSObject() && |
- JSObject::cast(object)->GetEmbedderFieldCount() == kFieldCount; |
-} |
- |
-DEFINE_OBJ_GETTER(WasmModuleObject, compiled_module, kCompiledModule, |
- WasmCompiledModule) |
- |
Handle<WasmTableObject> WasmTableObject::New(Isolate* isolate, uint32_t initial, |
int64_t maximum, |
Handle<FixedArray>* js_functions) { |
Handle<JSFunction> table_ctor( |
isolate->native_context()->wasm_table_constructor()); |
- Handle<JSObject> table_obj = isolate->factory()->NewJSObject(table_ctor); |
- table_obj->SetEmbedderField(kWrapperTracerHeader, Smi::kZero); |
+ auto table_obj = Handle<WasmTableObject>::cast( |
+ isolate->factory()->NewJSObject(table_ctor)); |
*js_functions = isolate->factory()->NewFixedArray(initial); |
Object* null = isolate->heap()->null_value(); |
for (int i = 0; i < static_cast<int>(initial); ++i) { |
(*js_functions)->set(i, null); |
} |
- table_obj->SetEmbedderField(kFunctions, *(*js_functions)); |
- Handle<Object> max = isolate->factory()->NewNumber(maximum); |
- table_obj->SetEmbedderField(kMaximum, *max); |
+ table_obj->set_functions(**js_functions); |
+ DCHECK_EQ(maximum, static_cast<int>(maximum)); |
+ table_obj->set_maximum_length(static_cast<int>(maximum)); |
Handle<FixedArray> dispatch_tables = isolate->factory()->NewFixedArray(0); |
- table_obj->SetEmbedderField(kDispatchTables, *dispatch_tables); |
+ table_obj->set_dispatch_tables(*dispatch_tables); |
Handle<Symbol> table_sym(isolate->native_context()->wasm_table_sym()); |
Object::SetProperty(table_obj, table_sym, table_obj, STRICT).Check(); |
return Handle<WasmTableObject>::cast(table_obj); |
@@ -264,8 +199,7 @@ Handle<FixedArray> WasmTableObject::AddDispatchTable( |
Isolate* isolate, Handle<WasmTableObject> table_obj, |
Handle<WasmInstanceObject> instance, int table_index, |
Handle<FixedArray> function_table, Handle<FixedArray> signature_table) { |
- Handle<FixedArray> dispatch_tables( |
- FixedArray::cast(table_obj->GetEmbedderField(kDispatchTables)), isolate); |
+ Handle<FixedArray> dispatch_tables(table_obj->dispatch_tables()); |
DCHECK_EQ(0, dispatch_tables->length() % 4); |
if (instance.is_null()) return dispatch_tables; |
@@ -281,35 +215,13 @@ Handle<FixedArray> WasmTableObject::AddDispatchTable( |
new_dispatch_tables->set(dispatch_tables->length() + 2, *function_table); |
new_dispatch_tables->set(dispatch_tables->length() + 3, *signature_table); |
- table_obj->SetEmbedderField(WasmTableObject::kDispatchTables, |
- *new_dispatch_tables); |
+ table_obj->set_dispatch_tables(*new_dispatch_tables); |
return new_dispatch_tables; |
} |
-DEFINE_OBJ_ACCESSORS(WasmTableObject, functions, kFunctions, FixedArray) |
- |
-DEFINE_OBJ_GETTER(WasmTableObject, dispatch_tables, kDispatchTables, FixedArray) |
- |
-uint32_t WasmTableObject::current_length() { return functions()->length(); } |
- |
-bool WasmTableObject::has_maximum_length() { |
- return GetEmbedderField(kMaximum)->Number() >= 0; |
-} |
- |
-int64_t WasmTableObject::maximum_length() { |
- return static_cast<int64_t>(GetEmbedderField(kMaximum)->Number()); |
-} |
- |
-WasmTableObject* WasmTableObject::cast(Object* object) { |
- DCHECK(object && object->IsJSObject()); |
- // TODO(titzer): brand check for WasmTableObject. |
- return reinterpret_cast<WasmTableObject*>(object); |
-} |
- |
void WasmTableObject::grow(Isolate* isolate, uint32_t count) { |
- Handle<FixedArray> dispatch_tables( |
- FixedArray::cast(GetEmbedderField(kDispatchTables))); |
+ Handle<FixedArray> dispatch_tables(this->dispatch_tables()); |
DCHECK_EQ(0, dispatch_tables->length() % 4); |
uint32_t old_size = functions()->length(); |
@@ -406,46 +318,26 @@ Handle<WasmMemoryObject> WasmMemoryObject::New(Isolate* isolate, |
int32_t maximum) { |
Handle<JSFunction> memory_ctor( |
isolate->native_context()->wasm_memory_constructor()); |
- Handle<JSObject> memory_obj = |
- isolate->factory()->NewJSObject(memory_ctor, TENURED); |
- memory_obj->SetEmbedderField(kWrapperTracerHeader, Smi::kZero); |
+ auto memory_obj = Handle<WasmMemoryObject>::cast( |
+ isolate->factory()->NewJSObject(memory_ctor, TENURED)); |
if (buffer.is_null()) { |
const bool enable_guard_regions = EnableGuardRegions(); |
buffer = SetupArrayBuffer(isolate, nullptr, 0, nullptr, 0, false, |
enable_guard_regions); |
} |
- memory_obj->SetEmbedderField(kArrayBuffer, *buffer); |
- Handle<Object> max = isolate->factory()->NewNumber(maximum); |
- memory_obj->SetEmbedderField(kMaximum, *max); |
+ memory_obj->set_array_buffer(*buffer); |
+ memory_obj->set_maximum_pages(maximum); |
Handle<Symbol> memory_sym(isolate->native_context()->wasm_memory_sym()); |
Object::SetProperty(memory_obj, memory_sym, memory_obj, STRICT).Check(); |
return Handle<WasmMemoryObject>::cast(memory_obj); |
} |
-DEFINE_OBJ_ACCESSORS(WasmMemoryObject, buffer, kArrayBuffer, JSArrayBuffer) |
-DEFINE_OPTIONAL_OBJ_ACCESSORS(WasmMemoryObject, instances_link, kInstancesLink, |
- WasmInstanceWrapper) |
- |
uint32_t WasmMemoryObject::current_pages() { |
uint32_t byte_length; |
- CHECK(buffer()->byte_length()->ToUint32(&byte_length)); |
+ CHECK(array_buffer()->byte_length()->ToUint32(&byte_length)); |
return byte_length / wasm::WasmModule::kPageSize; |
} |
-bool WasmMemoryObject::has_maximum_pages() { |
- return GetEmbedderField(kMaximum)->Number() >= 0; |
-} |
- |
-int32_t WasmMemoryObject::maximum_pages() { |
- return static_cast<int32_t>(GetEmbedderField(kMaximum)->Number()); |
-} |
- |
-WasmMemoryObject* WasmMemoryObject::cast(Object* object) { |
- DCHECK(object && object->IsJSObject()); |
- // TODO(titzer): brand check for WasmMemoryObject. |
- return reinterpret_cast<WasmMemoryObject*>(object); |
-} |
- |
void WasmMemoryObject::AddInstance(Isolate* isolate, |
Handle<WasmInstanceObject> instance) { |
Handle<WasmInstanceWrapper> instance_wrapper = |
@@ -460,16 +352,11 @@ void WasmMemoryObject::AddInstance(Isolate* isolate, |
set_instances_link(*instance_wrapper); |
} |
-void WasmMemoryObject::ResetInstancesLink(Isolate* isolate) { |
- Handle<Object> undefined = isolate->factory()->undefined_value(); |
- SetEmbedderField(kInstancesLink, *undefined); |
-} |
- |
// static |
int32_t WasmMemoryObject::Grow(Isolate* isolate, |
Handle<WasmMemoryObject> memory_object, |
uint32_t pages) { |
- Handle<JSArrayBuffer> old_buffer(memory_object->buffer()); |
+ Handle<JSArrayBuffer> old_buffer(memory_object->array_buffer()); |
uint32_t old_size = 0; |
CHECK(old_buffer->byte_length()->ToUint32(&old_size)); |
Handle<JSArrayBuffer> new_buffer; |
@@ -482,7 +369,7 @@ int32_t WasmMemoryObject::Grow(Isolate* isolate, |
isolate, old_buffer->allocation_base(), |
old_buffer->allocation_length(), old_buffer->backing_store(), |
old_size, old_buffer->is_external(), old_buffer->has_guard_region()); |
- memory_object->set_buffer(*new_buffer); |
+ memory_object->set_array_buffer(*new_buffer); |
} |
DCHECK_EQ(0, old_size % WasmModule::kPageSize); |
return old_size / WasmModule::kPageSize; |
@@ -504,7 +391,7 @@ int32_t WasmMemoryObject::Grow(Isolate* isolate, |
DCHECK(WasmInstanceWrapper::IsWasmInstanceWrapper(*instance_wrapper)); |
DCHECK(instance_wrapper->has_instance()); |
Handle<WasmInstanceObject> instance = instance_wrapper->instance_object(); |
- DCHECK(IsWasmInstance(*instance)); |
+ DCHECK(instance->IsWasmInstanceObject()); |
uint32_t max_pages = instance->GetMaxMemoryPages(); |
// Grow memory object buffer and update instances associated with it. |
@@ -518,31 +405,16 @@ int32_t WasmMemoryObject::Grow(Isolate* isolate, |
instance_wrapper = instance_wrapper->next_wrapper(); |
DCHECK(WasmInstanceWrapper::IsWasmInstanceWrapper(*instance_wrapper)); |
Handle<WasmInstanceObject> instance = instance_wrapper->instance_object(); |
- DCHECK(IsWasmInstance(*instance)); |
+ DCHECK(instance->IsWasmInstanceObject()); |
SetInstanceMemory(isolate, instance, new_buffer); |
UncheckedUpdateInstanceMemory(isolate, instance, old_mem_start, old_size); |
} |
} |
- memory_object->set_buffer(*new_buffer); |
+ memory_object->set_array_buffer(*new_buffer); |
DCHECK_EQ(0, old_size % WasmModule::kPageSize); |
return old_size / WasmModule::kPageSize; |
} |
-DEFINE_OBJ_ACCESSORS(WasmInstanceObject, compiled_module, kCompiledModule, |
- WasmCompiledModule) |
-DEFINE_OPTIONAL_OBJ_ACCESSORS(WasmInstanceObject, globals_buffer, |
- kGlobalsArrayBuffer, JSArrayBuffer) |
-DEFINE_OPTIONAL_OBJ_ACCESSORS(WasmInstanceObject, memory_buffer, |
- kMemoryArrayBuffer, JSArrayBuffer) |
-DEFINE_OPTIONAL_OBJ_ACCESSORS(WasmInstanceObject, memory_object, kMemoryObject, |
- WasmMemoryObject) |
-DEFINE_OPTIONAL_OBJ_ACCESSORS(WasmInstanceObject, debug_info, kDebugInfo, |
- WasmDebugInfo) |
-DEFINE_OPTIONAL_OBJ_ACCESSORS(WasmInstanceObject, instance_wrapper, |
- kWasmMemInstanceWrapper, WasmInstanceWrapper) |
-DEFINE_OPTIONAL_OBJ_ACCESSORS(WasmInstanceObject, directly_called_instances, |
- kDirectlyCalledInstances, FixedArray) |
- |
WasmModuleObject* WasmInstanceObject::module_object() { |
return *compiled_module()->wasm_module(); |
} |
@@ -557,38 +429,12 @@ Handle<WasmDebugInfo> WasmInstanceObject::GetOrCreateDebugInfo( |
return new_info; |
} |
-WasmInstanceObject* WasmInstanceObject::cast(Object* object) { |
- DCHECK(IsWasmInstanceObject(object)); |
- return reinterpret_cast<WasmInstanceObject*>(object); |
-} |
- |
-bool WasmInstanceObject::IsWasmInstanceObject(Object* object) { |
- if (!object->IsJSObject()) return false; |
- |
- JSObject* obj = JSObject::cast(object); |
- Isolate* isolate = obj->GetIsolate(); |
- if (obj->GetEmbedderFieldCount() != kFieldCount) { |
- return false; |
- } |
- |
- Object* mem = obj->GetEmbedderField(kMemoryArrayBuffer); |
- if (!(mem->IsUndefined(isolate) || mem->IsJSArrayBuffer()) || |
- !WasmCompiledModule::IsWasmCompiledModule( |
- obj->GetEmbedderField(kCompiledModule))) { |
- return false; |
- } |
- |
- // All checks passed. |
- return true; |
-} |
- |
Handle<WasmInstanceObject> WasmInstanceObject::New( |
Isolate* isolate, Handle<WasmCompiledModule> compiled_module) { |
Handle<JSFunction> instance_cons( |
isolate->native_context()->wasm_instance_constructor()); |
Handle<JSObject> instance_object = |
isolate->factory()->NewJSObject(instance_cons, TENURED); |
- instance_object->SetEmbedderField(kWrapperTracerHeader, Smi::kZero); |
Handle<Symbol> instance_sym(isolate->native_context()->wasm_instance_sym()); |
Object::SetProperty(instance_object, instance_sym, instance_object, STRICT) |
@@ -596,11 +442,10 @@ Handle<WasmInstanceObject> WasmInstanceObject::New( |
Handle<WasmInstanceObject> instance( |
reinterpret_cast<WasmInstanceObject*>(*instance_object), isolate); |
- instance->SetEmbedderField(kCompiledModule, *compiled_module); |
- instance->SetEmbedderField(kMemoryObject, isolate->heap()->undefined_value()); |
+ instance->set_compiled_module(*compiled_module); |
Handle<WasmInstanceWrapper> instance_wrapper = |
WasmInstanceWrapper::New(isolate, instance); |
- instance->SetEmbedderField(kWasmMemInstanceWrapper, *instance_wrapper); |
+ instance->set_instance_wrapper(*instance_wrapper); |
return instance; |
} |
@@ -656,16 +501,6 @@ uint32_t WasmInstanceObject::GetMaxMemoryPages() { |
return FLAG_wasm_max_mem_pages; |
} |
-WasmInstanceObject* WasmExportedFunction::instance() { |
- return WasmInstanceObject::cast(GetEmbedderField(kInstance)); |
-} |
- |
-int WasmExportedFunction::function_index() { |
- int32_t func_index; |
- CHECK(GetEmbedderField(kIndex)->ToInt32(&func_index)); |
- return func_index; |
-} |
- |
WasmExportedFunction* WasmExportedFunction::cast(Object* object) { |
DCHECK(object && object->IsJSFunction()); |
DCHECK_EQ(Code::JS_TO_WASM_FUNCTION, |
@@ -694,14 +529,16 @@ Handle<WasmExportedFunction> WasmExportedFunction::New( |
isolate->factory()->NewSharedFunctionInfo(name, export_wrapper, false); |
shared->set_length(arity); |
shared->set_internal_formal_parameter_count(arity); |
- Handle<JSFunction> function = isolate->factory()->NewFunction( |
+ Handle<JSFunction> js_function = isolate->factory()->NewFunction( |
isolate->wasm_function_map(), name, export_wrapper); |
- function->SetEmbedderField(kWrapperTracerHeader, Smi::kZero); |
+ |
+ Handle<WasmExportedFunction> function( |
+ reinterpret_cast<WasmExportedFunction*>(*js_function), isolate); |
function->set_shared(*shared); |
+ function->set_instance(*instance); |
+ function->set_function_index(func_index); |
- function->SetEmbedderField(kInstance, *instance); |
- function->SetEmbedderField(kIndex, Smi::FromInt(func_index)); |
return Handle<WasmExportedFunction>::cast(function); |
} |
@@ -710,16 +547,16 @@ bool WasmSharedModuleData::IsWasmSharedModuleData(Object* object) { |
FixedArray* arr = FixedArray::cast(object); |
if (arr->length() != kFieldCount) return false; |
Isolate* isolate = arr->GetIsolate(); |
- if (!arr->get(kModuleWrapper)->IsForeign()) return false; |
- if (!arr->get(kModuleBytes)->IsUndefined(isolate) && |
- !arr->get(kModuleBytes)->IsSeqOneByteString()) |
+ if (!arr->get(kModuleWrapperIndex)->IsForeign()) return false; |
+ if (!arr->get(kModuleBytesIndex)->IsUndefined(isolate) && |
+ !arr->get(kModuleBytesIndex)->IsSeqOneByteString()) |
return false; |
- if (!arr->get(kScript)->IsScript()) return false; |
- if (!arr->get(kAsmJsOffsetTable)->IsUndefined(isolate) && |
- !arr->get(kAsmJsOffsetTable)->IsByteArray()) |
+ if (!arr->get(kScriptIndex)->IsScript()) return false; |
+ if (!arr->get(kAsmJsOffsetTableIndex)->IsUndefined(isolate) && |
+ !arr->get(kAsmJsOffsetTableIndex)->IsByteArray()) |
return false; |
- if (!arr->get(kBreakPointInfos)->IsUndefined(isolate) && |
- !arr->get(kBreakPointInfos)->IsFixedArray()) |
+ if (!arr->get(kBreakPointInfosIndex)->IsUndefined(isolate) && |
+ !arr->get(kBreakPointInfosIndex)->IsFixedArray()) |
return false; |
return true; |
} |
@@ -736,41 +573,34 @@ wasm::WasmModule* WasmSharedModuleData::module() { |
// a Managed<WasmModule> object, as well as cases when it's managed |
// by the embedder. CcTests fall into the latter case. |
return *(reinterpret_cast<wasm::WasmModule**>( |
- Foreign::cast(get(kModuleWrapper))->foreign_address())); |
+ Foreign::cast(get(kModuleWrapperIndex))->foreign_address())); |
} |
-DEFINE_OPTIONAL_ARR_ACCESSORS(WasmSharedModuleData, module_bytes, kModuleBytes, |
- SeqOneByteString); |
-DEFINE_ARR_GETTER(WasmSharedModuleData, script, kScript, Script); |
-DEFINE_OPTIONAL_ARR_ACCESSORS(WasmSharedModuleData, asm_js_offset_table, |
- kAsmJsOffsetTable, ByteArray); |
-DEFINE_OPTIONAL_ARR_GETTER(WasmSharedModuleData, breakpoint_infos, |
- kBreakPointInfos, FixedArray); |
-DEFINE_OPTIONAL_ARR_GETTER(WasmSharedModuleData, lazy_compilation_orchestrator, |
- kLazyCompilationOrchestrator, Foreign); |
- |
Handle<WasmSharedModuleData> WasmSharedModuleData::New( |
Isolate* isolate, Handle<Foreign> module_wrapper, |
Handle<SeqOneByteString> module_bytes, Handle<Script> script, |
Handle<ByteArray> asm_js_offset_table) { |
Handle<FixedArray> arr = |
isolate->factory()->NewFixedArray(kFieldCount, TENURED); |
- arr->set(kWrapperTracerHeader, Smi::kZero); |
- arr->set(kModuleWrapper, *module_wrapper); |
+ arr->set(kModuleWrapperIndex, *module_wrapper); |
if (!module_bytes.is_null()) { |
- arr->set(kModuleBytes, *module_bytes); |
+ arr->set(kModuleBytesIndex, *module_bytes); |
} |
if (!script.is_null()) { |
- arr->set(kScript, *script); |
+ arr->set(kScriptIndex, *script); |
} |
if (!asm_js_offset_table.is_null()) { |
- arr->set(kAsmJsOffsetTable, *asm_js_offset_table); |
+ arr->set(kAsmJsOffsetTableIndex, *asm_js_offset_table); |
} |
DCHECK(WasmSharedModuleData::IsWasmSharedModuleData(*arr)); |
return Handle<WasmSharedModuleData>::cast(arr); |
} |
+Foreign* WasmSharedModuleData::lazy_compilation_orchestrator() { |
+ return Foreign::cast(get(kLazyCompilationOrchestratorIndex)); |
+} |
+ |
bool WasmSharedModuleData::is_asm_js() { |
bool asm_js = module()->is_asm_js(); |
DCHECK_EQ(asm_js, script()->IsUserJavaScript()); |
@@ -780,7 +610,7 @@ bool WasmSharedModuleData::is_asm_js() { |
void WasmSharedModuleData::ReinitializeAfterDeserialization( |
Isolate* isolate, Handle<WasmSharedModuleData> shared) { |
- DCHECK(shared->get(kModuleWrapper)->IsUndefined(isolate)); |
+ DCHECK(shared->get(kModuleWrapperIndex)->IsUndefined(isolate)); |
#ifdef DEBUG |
// No BreakpointInfo objects should survive deserialization. |
if (shared->has_breakpoint_infos()) { |
@@ -790,7 +620,7 @@ void WasmSharedModuleData::ReinitializeAfterDeserialization( |
} |
#endif |
- shared->set(kBreakPointInfos, isolate->heap()->undefined_value()); |
+ shared->set(kBreakPointInfosIndex, isolate->heap()->undefined_value()); |
WasmModule* module = nullptr; |
{ |
@@ -815,7 +645,7 @@ void WasmSharedModuleData::ReinitializeAfterDeserialization( |
Handle<WasmModuleWrapper> module_wrapper = |
WasmModuleWrapper::New(isolate, module); |
- shared->set(kModuleWrapper, *module_wrapper); |
+ shared->set(kModuleWrapperIndex, *module_wrapper); |
DCHECK(WasmSharedModuleData::IsWasmSharedModuleData(*shared)); |
} |
@@ -860,7 +690,7 @@ void WasmSharedModuleData::AddBreakpoint(Handle<WasmSharedModuleData> shared, |
breakpoint_infos = handle(shared->breakpoint_infos(), isolate); |
} else { |
breakpoint_infos = isolate->factory()->NewFixedArray(4, TENURED); |
- shared->set(kBreakPointInfos, *breakpoint_infos); |
+ shared->set(kBreakPointInfosIndex, *breakpoint_infos); |
} |
int insert_pos = |
@@ -884,7 +714,7 @@ void WasmSharedModuleData::AddBreakpoint(Handle<WasmSharedModuleData> shared, |
if (need_realloc) { |
new_breakpoint_infos = isolate->factory()->NewFixedArray( |
2 * breakpoint_infos->length(), TENURED); |
- shared->set(kBreakPointInfos, *new_breakpoint_infos); |
+ shared->set(kBreakPointInfosIndex, *new_breakpoint_infos); |
// Copy over the entries [0, insert_pos). |
for (int i = 0; i < insert_pos; ++i) |
new_breakpoint_infos->set(i, breakpoint_infos->get(i)); |
@@ -946,7 +776,7 @@ void WasmSharedModuleData::PrepareForLazyCompilation( |
LazyCompilationOrchestrator* orch = new LazyCompilationOrchestrator(); |
Handle<Managed<LazyCompilationOrchestrator>> orch_handle = |
Managed<LazyCompilationOrchestrator>::New(isolate, orch); |
- shared->set(WasmSharedModuleData::kLazyCompilationOrchestrator, *orch_handle); |
+ shared->set(kLazyCompilationOrchestratorIndex, *orch_handle); |
} |
Handle<WasmCompiledModule> WasmCompiledModule::New( |
@@ -1575,28 +1405,25 @@ Handle<Code> WasmCompiledModule::CompileLazy( |
Handle<WasmInstanceWrapper> WasmInstanceWrapper::New( |
Isolate* isolate, Handle<WasmInstanceObject> instance) { |
Handle<FixedArray> array = |
- isolate->factory()->NewFixedArray(kWrapperPropertyCount, TENURED); |
+ isolate->factory()->NewFixedArray(kFieldCount, TENURED); |
Handle<WasmInstanceWrapper> instance_wrapper( |
reinterpret_cast<WasmInstanceWrapper*>(*array), isolate); |
Handle<WeakCell> cell = isolate->factory()->NewWeakCell(instance); |
- instance_wrapper->set(kWrapperInstanceObject, *cell); |
+ instance_wrapper->set(kWrapperInstanceObjectIndex, *cell); |
return instance_wrapper; |
} |
bool WasmInstanceWrapper::IsWasmInstanceWrapper(Object* obj) { |
if (!obj->IsFixedArray()) return false; |
Handle<FixedArray> array = handle(FixedArray::cast(obj)); |
- if (array->length() != kWrapperPropertyCount) return false; |
- if (!array->get(kWrapperInstanceObject)->IsWeakCell()) return false; |
+ if (array->length() != kFieldCount) return false; |
+ if (!array->get(kWrapperInstanceObjectIndex)->IsWeakCell()) return false; |
Isolate* isolate = array->GetIsolate(); |
- if (!array->get(kNextInstanceWrapper)->IsUndefined(isolate) && |
- !array->get(kNextInstanceWrapper)->IsFixedArray()) |
+ if (!array->get(kNextInstanceWrapperIndex)->IsUndefined(isolate) && |
+ !array->get(kNextInstanceWrapperIndex)->IsFixedArray()) |
return false; |
- if (!array->get(kPreviousInstanceWrapper)->IsUndefined(isolate) && |
- !array->get(kPreviousInstanceWrapper)->IsFixedArray()) |
+ if (!array->get(kPreviousInstanceWrapperIndex)->IsUndefined(isolate) && |
+ !array->get(kPreviousInstanceWrapperIndex)->IsFixedArray()) |
return false; |
return true; |
} |
- |
-DEFINE_OPTIONAL_ARR_ACCESSORS(WasmDebugInfo, locals_names, kLocalsNames, |
- FixedArray) |