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

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

Issue 2393443003: [wasm] explicitly mark off unlinked wasm module instances (Closed)
Patch Set: [wasm] reset owning instance explicitly Created 4 years, 2 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
« no previous file with comments | « no previous file | test/mjsunit/regress/wasm/regression-02256.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <memory> 5 #include <memory>
6 6
7 #include "src/base/atomic-utils.h" 7 #include "src/base/atomic-utils.h"
8 #include "src/code-stubs.h" 8 #include "src/code-stubs.h"
9 9
10 #include "src/macro-assembler.h" 10 #include "src/macro-assembler.h"
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 it.rinfo()->update_wasm_global_reference(globals_start, nullptr); 766 it.rinfo()->update_wasm_global_reference(globals_start, nullptr);
767 changed = true; 767 changed = true;
768 } 768 }
769 } 769 }
770 if (changed) { 770 if (changed) {
771 Assembler::FlushICache(isolate, code->instruction_start(), 771 Assembler::FlushICache(isolate, code->instruction_start(),
772 code->instruction_size()); 772 code->instruction_size());
773 } 773 }
774 } 774 }
775 } 775 }
776 compiled_module->reset_weak_owning_instance();
777 compiled_module->reset_heap(); 776 compiled_module->reset_heap();
778 } 777 }
779 778
780 static void InstanceFinalizer(const v8::WeakCallbackInfo<void>& data) { 779 static void InstanceFinalizer(const v8::WeakCallbackInfo<void>& data) {
781 JSObject** p = reinterpret_cast<JSObject**>(data.GetParameter()); 780 JSObject** p = reinterpret_cast<JSObject**>(data.GetParameter());
782 JSObject* owner = *p; 781 JSObject* owner = *p;
783 WasmCompiledModule* compiled_module = 782 WasmCompiledModule* compiled_module =
784 WasmCompiledModule::cast(owner->GetInternalField(kWasmCompiledModule)); 783 WasmCompiledModule::cast(owner->GetInternalField(kWasmCompiledModule));
785 Isolate* isolate = reinterpret_cast<Isolate*>(data.GetIsolate()); 784 Isolate* isolate = reinterpret_cast<Isolate*>(data.GetIsolate());
786 DCHECK(compiled_module->has_weak_module_object()); 785 DCHECK(compiled_module->has_weak_module_object());
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 DCHECK(!next->cleared()); 823 DCHECK(!next->cleared());
825 if (prev == nullptr) { 824 if (prev == nullptr) {
826 WasmCompiledModule::cast(next->value())->reset_weak_prev_instance(); 825 WasmCompiledModule::cast(next->value())->reset_weak_prev_instance();
827 } else { 826 } else {
828 WasmCompiledModule::cast(next->value()) 827 WasmCompiledModule::cast(next->value())
829 ->set_ptr_to_weak_prev_instance(prev); 828 ->set_ptr_to_weak_prev_instance(prev);
830 } 829 }
831 } 830 }
832 } 831 }
833 } 832 }
833 compiled_module->reset_weak_owning_instance();
834 GlobalHandles::Destroy(reinterpret_cast<Object**>(p)); 834 GlobalHandles::Destroy(reinterpret_cast<Object**>(p));
835 } 835 }
836 836
837 Handle<FixedArray> SetupIndirectFunctionTable( 837 Handle<FixedArray> SetupIndirectFunctionTable(
838 Isolate* isolate, Handle<FixedArray> wasm_functions, 838 Isolate* isolate, Handle<FixedArray> wasm_functions,
839 Handle<FixedArray> indirect_table_template, 839 Handle<FixedArray> indirect_table_template,
840 Handle<FixedArray> tables_to_replace) { 840 Handle<FixedArray> tables_to_replace) {
841 Factory* factory = isolate->factory(); 841 Factory* factory = isolate->factory();
842 Handle<FixedArray> cloned_indirect_tables = 842 Handle<FixedArray> cloned_indirect_tables =
843 factory->CopyFixedArray(indirect_table_template); 843 factory->CopyFixedArray(indirect_table_template);
(...skipping 959 matching lines...) Expand 10 before | Expand all | Expand 10 after
1803 WasmCompiledModule* compiled_module = 1803 WasmCompiledModule* compiled_module =
1804 WasmCompiledModule::cast(instance->GetInternalField(kWasmCompiledModule)); 1804 WasmCompiledModule::cast(instance->GetInternalField(kWasmCompiledModule));
1805 CHECK(compiled_module->has_weak_module_object()); 1805 CHECK(compiled_module->has_weak_module_object());
1806 CHECK(compiled_module->ptr_to_weak_module_object()->cleared()); 1806 CHECK(compiled_module->ptr_to_weak_module_object()->cleared());
1807 } 1807 }
1808 1808
1809 } // namespace testing 1809 } // namespace testing
1810 } // namespace wasm 1810 } // namespace wasm
1811 } // namespace internal 1811 } // namespace internal
1812 } // namespace v8 1812 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/regress/wasm/regression-02256.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698