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 <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 1202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1213 // may still have placeholders for imports. | 1213 // may still have placeholders for imports. |
1214 old_code_table = original->code_table(); | 1214 old_code_table = original->code_table(); |
1215 code_table = factory->CopyFixedArray(old_code_table); | 1215 code_table = factory->CopyFixedArray(old_code_table); |
1216 | 1216 |
1217 if (original->has_weak_owning_instance()) { | 1217 if (original->has_weak_owning_instance()) { |
1218 WeakCell* tmp = original->ptr_to_weak_owning_instance(); | 1218 WeakCell* tmp = original->ptr_to_weak_owning_instance(); |
1219 DCHECK(!tmp->cleared()); | 1219 DCHECK(!tmp->cleared()); |
1220 // There is already an owner, clone everything. | 1220 // There is already an owner, clone everything. |
1221 owner = Handle<JSObject>(JSObject::cast(tmp->value()), isolate); | 1221 owner = Handle<JSObject>(JSObject::cast(tmp->value()), isolate); |
1222 // Insert the latest clone in front. | 1222 // Insert the latest clone in front. |
1223 compiled_module = original->Clone(isolate); | 1223 compiled_module = WasmCompiledModule::Clone(isolate, original); |
1224 // Replace the strong reference to point to the new instance here. | 1224 // Replace the strong reference to point to the new instance here. |
1225 // This allows any of the other instances, including the original, | 1225 // This allows any of the other instances, including the original, |
1226 // to be collected. | 1226 // to be collected. |
1227 module_object->SetInternalField(0, *compiled_module); | 1227 module_object->SetInternalField(0, *compiled_module); |
1228 compiled_module->set_weak_module_object(original->weak_module_object()); | 1228 compiled_module->set_weak_module_object(original->weak_module_object()); |
1229 link_to_original = factory->NewWeakCell(original); | 1229 link_to_original = factory->NewWeakCell(original); |
1230 // Don't link to original here. We remember the original | 1230 // Don't link to original here. We remember the original |
1231 // as a weak link. If that link isn't clear by the time we finish | 1231 // as a weak link. If that link isn't clear by the time we finish |
1232 // instantiating this instance, then we link it at that time. | 1232 // instantiating this instance, then we link it at that time. |
1233 compiled_module->reset_weak_next_instance(); | 1233 compiled_module->reset_weak_next_instance(); |
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1815 WasmCompiledModule* compiled_module = | 1815 WasmCompiledModule* compiled_module = |
1816 WasmCompiledModule::cast(instance->GetInternalField(kWasmCompiledModule)); | 1816 WasmCompiledModule::cast(instance->GetInternalField(kWasmCompiledModule)); |
1817 CHECK(compiled_module->has_weak_module_object()); | 1817 CHECK(compiled_module->has_weak_module_object()); |
1818 CHECK(compiled_module->ptr_to_weak_module_object()->cleared()); | 1818 CHECK(compiled_module->ptr_to_weak_module_object()->cleared()); |
1819 } | 1819 } |
1820 | 1820 |
1821 } // namespace testing | 1821 } // namespace testing |
1822 } // namespace wasm | 1822 } // namespace wasm |
1823 } // namespace internal | 1823 } // namespace internal |
1824 } // namespace v8 | 1824 } // namespace v8 |
OLD | NEW |