Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Side by Side Diff: src/wasm/wasm-objects.cc

Issue 2676513008: [wasm] Managed<T> ensures T's lifetime does not leak past Isolate's (Closed)
Patch Set: Comments Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/base/iterator.h" 8 #include "src/base/iterator.h"
9 #include "src/debug/debug-interface.h" 9 #include "src/debug/debug-interface.h"
10 #include "src/wasm/module-decoder.h" 10 #include "src/wasm/module-decoder.h"
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 return false; 523 return false;
524 return true; 524 return true;
525 } 525 }
526 526
527 WasmSharedModuleData* WasmSharedModuleData::cast(Object* object) { 527 WasmSharedModuleData* WasmSharedModuleData::cast(Object* object) {
528 DCHECK(IsWasmSharedModuleData(object)); 528 DCHECK(IsWasmSharedModuleData(object));
529 return reinterpret_cast<WasmSharedModuleData*>(object); 529 return reinterpret_cast<WasmSharedModuleData*>(object);
530 } 530 }
531 531
532 wasm::WasmModule* WasmSharedModuleData::module() { 532 wasm::WasmModule* WasmSharedModuleData::module() {
533 return reinterpret_cast<WasmModuleWrapper*>(get(kModuleWrapper))->get(); 533 // We populate the kModuleWrapper field with a Foreign holding the
534 // address to the address of a WasmModule. This is because we can
535 // handle both cases when the WasmModule's lifetime is managed through
536 // a Managed<WasmModule> object, as well as cases when it's managed
537 // by the embedder. CcTests fall into the latter case.
538 return *(reinterpret_cast<wasm::WasmModule**>(
539 Foreign::cast(get(kModuleWrapper))->foreign_address()));
534 } 540 }
535 541
536 DEFINE_OPTIONAL_ARR_ACCESSORS(WasmSharedModuleData, module_bytes, kModuleBytes, 542 DEFINE_OPTIONAL_ARR_ACCESSORS(WasmSharedModuleData, module_bytes, kModuleBytes,
537 SeqOneByteString); 543 SeqOneByteString);
538 DEFINE_ARR_GETTER(WasmSharedModuleData, script, kScript, Script); 544 DEFINE_ARR_GETTER(WasmSharedModuleData, script, kScript, Script);
539 DEFINE_OPTIONAL_ARR_ACCESSORS(WasmSharedModuleData, asm_js_offset_table, 545 DEFINE_OPTIONAL_ARR_ACCESSORS(WasmSharedModuleData, asm_js_offset_table,
540 kAsmJsOffsetTable, ByteArray); 546 kAsmJsOffsetTable, ByteArray);
541 DEFINE_OPTIONAL_ARR_GETTER(WasmSharedModuleData, breakpoint_infos, 547 DEFINE_OPTIONAL_ARR_GETTER(WasmSharedModuleData, breakpoint_infos,
542 kBreakPointInfos, FixedArray); 548 kBreakPointInfos, FixedArray);
543 549
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after
1178 !array->get(kPreviousInstanceWrapper)->IsFixedArray()) 1184 !array->get(kPreviousInstanceWrapper)->IsFixedArray())
1179 return false; 1185 return false;
1180 return true; 1186 return true;
1181 } 1187 }
1182 1188
1183 void WasmInstanceWrapper::set_instance_object(Handle<JSObject> instance, 1189 void WasmInstanceWrapper::set_instance_object(Handle<JSObject> instance,
1184 Isolate* isolate) { 1190 Isolate* isolate) {
1185 Handle<WeakCell> cell = isolate->factory()->NewWeakCell(instance); 1191 Handle<WeakCell> cell = isolate->factory()->NewWeakCell(instance);
1186 set(kWrapperInstanceObject, *cell); 1192 set(kWrapperInstanceObject, *cell);
1187 } 1193 }
OLDNEW
« src/isolate.cc ('K') | « src/wasm/wasm-objects.h ('k') | test/cctest/wasm/test-managed.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698