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 |