| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 #include "src/wasm/wasm-objects.h" | 5 #include "src/wasm/wasm-objects.h" |
| 6 #include "src/utils.h" | 6 #include "src/utils.h" |
| 7 | 7 |
| 8 #include "src/assembler-inl.h" | 8 #include "src/assembler-inl.h" |
| 9 #include "src/base/iterator.h" | 9 #include "src/base/iterator.h" |
| 10 #include "src/compiler/wasm-compiler.h" | 10 #include "src/compiler/wasm-compiler.h" |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 if (offset == static_cast<uint32_t>(offset_in_func)) return true; | 214 if (offset == static_cast<uint32_t>(offset_in_func)) return true; |
| 215 } | 215 } |
| 216 return false; | 216 return false; |
| 217 } | 217 } |
| 218 #endif // DEBUG | 218 #endif // DEBUG |
| 219 | 219 |
| 220 } // namespace | 220 } // namespace |
| 221 | 221 |
| 222 Handle<WasmModuleObject> WasmModuleObject::New( | 222 Handle<WasmModuleObject> WasmModuleObject::New( |
| 223 Isolate* isolate, Handle<WasmCompiledModule> compiled_module) { | 223 Isolate* isolate, Handle<WasmCompiledModule> compiled_module) { |
| 224 ModuleOrigin origin = compiled_module->module()->origin; | 224 WasmModule* module = compiled_module->module(); |
| 225 | |
| 226 Handle<JSObject> module_object; | 225 Handle<JSObject> module_object; |
| 227 if (origin == ModuleOrigin::kWasmOrigin) { | 226 if (module->is_wasm()) { |
| 228 Handle<JSFunction> module_cons( | 227 Handle<JSFunction> module_cons( |
| 229 isolate->native_context()->wasm_module_constructor()); | 228 isolate->native_context()->wasm_module_constructor()); |
| 230 module_object = isolate->factory()->NewJSObject(module_cons); | 229 module_object = isolate->factory()->NewJSObject(module_cons); |
| 231 Handle<Symbol> module_sym(isolate->native_context()->wasm_module_sym()); | 230 Handle<Symbol> module_sym(isolate->native_context()->wasm_module_sym()); |
| 232 Object::SetProperty(module_object, module_sym, module_object, STRICT) | 231 Object::SetProperty(module_object, module_sym, module_object, STRICT) |
| 233 .Check(); | 232 .Check(); |
| 234 } else { | 233 } else { |
| 235 DCHECK(origin == ModuleOrigin::kAsmJsOrigin); | 234 DCHECK(module->is_asm_js()); |
| 236 Handle<Map> map = isolate->factory()->NewMap( | 235 Handle<Map> map = isolate->factory()->NewMap( |
| 237 JS_OBJECT_TYPE, | 236 JS_OBJECT_TYPE, |
| 238 JSObject::kHeaderSize + WasmModuleObject::kFieldCount * kPointerSize); | 237 JSObject::kHeaderSize + WasmModuleObject::kFieldCount * kPointerSize); |
| 239 module_object = isolate->factory()->NewJSObjectFromMap(map, TENURED); | 238 module_object = isolate->factory()->NewJSObjectFromMap(map, TENURED); |
| 240 } | 239 } |
| 241 module_object->SetEmbedderField(WasmModuleObject::kCompiledModule, | 240 module_object->SetEmbedderField(WasmModuleObject::kCompiledModule, |
| 242 *compiled_module); | 241 *compiled_module); |
| 243 Handle<WeakCell> link_to_module = | 242 Handle<WeakCell> link_to_module = |
| 244 isolate->factory()->NewWeakCell(module_object); | 243 isolate->factory()->NewWeakCell(module_object); |
| 245 compiled_module->set_weak_wasm_module(link_to_module); | 244 compiled_module->set_weak_wasm_module(link_to_module); |
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 577 } | 576 } |
| 578 if (!asm_js_offset_table.is_null()) { | 577 if (!asm_js_offset_table.is_null()) { |
| 579 arr->set(kAsmJsOffsetTable, *asm_js_offset_table); | 578 arr->set(kAsmJsOffsetTable, *asm_js_offset_table); |
| 580 } | 579 } |
| 581 | 580 |
| 582 DCHECK(WasmSharedModuleData::IsWasmSharedModuleData(*arr)); | 581 DCHECK(WasmSharedModuleData::IsWasmSharedModuleData(*arr)); |
| 583 return Handle<WasmSharedModuleData>::cast(arr); | 582 return Handle<WasmSharedModuleData>::cast(arr); |
| 584 } | 583 } |
| 585 | 584 |
| 586 bool WasmSharedModuleData::is_asm_js() { | 585 bool WasmSharedModuleData::is_asm_js() { |
| 587 bool asm_js = module()->origin == wasm::ModuleOrigin::kAsmJsOrigin; | 586 bool asm_js = module()->is_asm_js(); |
| 588 DCHECK_EQ(asm_js, script()->IsUserJavaScript()); | 587 DCHECK_EQ(asm_js, script()->IsUserJavaScript()); |
| 589 DCHECK_EQ(asm_js, has_asm_js_offset_table()); | 588 DCHECK_EQ(asm_js, has_asm_js_offset_table()); |
| 590 return asm_js; | 589 return asm_js; |
| 591 } | 590 } |
| 592 | 591 |
| 593 void WasmSharedModuleData::ReinitializeAfterDeserialization( | 592 void WasmSharedModuleData::ReinitializeAfterDeserialization( |
| 594 Isolate* isolate, Handle<WasmSharedModuleData> shared) { | 593 Isolate* isolate, Handle<WasmSharedModuleData> shared) { |
| 595 DCHECK(shared->get(kModuleWrapper)->IsUndefined(isolate)); | 594 DCHECK(shared->get(kModuleWrapper)->IsUndefined(isolate)); |
| 596 #ifdef DEBUG | 595 #ifdef DEBUG |
| 597 // No BreakpointInfo objects should survive deserialization. | 596 // No BreakpointInfo objects should survive deserialization. |
| (...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1215 if (!array->get(kWrapperInstanceObject)->IsWeakCell()) return false; | 1214 if (!array->get(kWrapperInstanceObject)->IsWeakCell()) return false; |
| 1216 Isolate* isolate = array->GetIsolate(); | 1215 Isolate* isolate = array->GetIsolate(); |
| 1217 if (!array->get(kNextInstanceWrapper)->IsUndefined(isolate) && | 1216 if (!array->get(kNextInstanceWrapper)->IsUndefined(isolate) && |
| 1218 !array->get(kNextInstanceWrapper)->IsFixedArray()) | 1217 !array->get(kNextInstanceWrapper)->IsFixedArray()) |
| 1219 return false; | 1218 return false; |
| 1220 if (!array->get(kPreviousInstanceWrapper)->IsUndefined(isolate) && | 1219 if (!array->get(kPreviousInstanceWrapper)->IsUndefined(isolate) && |
| 1221 !array->get(kPreviousInstanceWrapper)->IsFixedArray()) | 1220 !array->get(kPreviousInstanceWrapper)->IsFixedArray()) |
| 1222 return false; | 1221 return false; |
| 1223 return true; | 1222 return true; |
| 1224 } | 1223 } |
| OLD | NEW |