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

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

Issue 2629853004: [wasm] Skip serialization of breakpoints and certion stubs (Closed)
Patch Set: Move implementation to .cc file Created 3 years, 11 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 | « src/wasm/wasm-objects.h ('k') | no next file » | 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 "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 545 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 return Handle<WasmSharedModuleData>::cast(arr); 556 return Handle<WasmSharedModuleData>::cast(arr);
557 } 557 }
558 558
559 bool WasmSharedModuleData::is_asm_js() { 559 bool WasmSharedModuleData::is_asm_js() {
560 bool asm_js = module()->origin == wasm::ModuleOrigin::kAsmJsOrigin; 560 bool asm_js = module()->origin == wasm::ModuleOrigin::kAsmJsOrigin;
561 DCHECK_EQ(asm_js, script()->type() == Script::TYPE_NORMAL); 561 DCHECK_EQ(asm_js, script()->type() == Script::TYPE_NORMAL);
562 DCHECK_EQ(asm_js, has_asm_js_offset_table()); 562 DCHECK_EQ(asm_js, has_asm_js_offset_table());
563 return asm_js; 563 return asm_js;
564 } 564 }
565 565
566 void WasmSharedModuleData::RecreateModuleWrapper( 566 void WasmSharedModuleData::ReinitializeAfterDeserialization(
567 Isolate* isolate, Handle<WasmSharedModuleData> shared) { 567 Isolate* isolate, Handle<WasmSharedModuleData> shared) {
568 DCHECK(shared->get(kModuleWrapper)->IsUndefined(isolate)); 568 DCHECK(shared->get(kModuleWrapper)->IsUndefined(isolate));
569 #ifdef DEBUG
570 // No BreakpointInfo objects should survive deserialization.
571 if (shared->has_breakpoint_infos()) {
572 for (int i = 0, e = shared->breakpoint_infos()->length(); i < e; ++i) {
573 DCHECK(shared->breakpoint_infos()->get(i)->IsUndefined(isolate));
574 }
575 }
576 #endif
577
578 shared->set(kBreakPointInfos, isolate->heap()->undefined_value());
569 579
570 WasmModule* module = nullptr; 580 WasmModule* module = nullptr;
571 { 581 {
572 // We parse the module again directly from the module bytes, so 582 // We parse the module again directly from the module bytes, so
573 // the underlying storage must not be moved meanwhile. 583 // the underlying storage must not be moved meanwhile.
574 DisallowHeapAllocation no_allocation; 584 DisallowHeapAllocation no_allocation;
575 SeqOneByteString* module_bytes = shared->module_bytes(); 585 SeqOneByteString* module_bytes = shared->module_bytes();
576 const byte* start = 586 const byte* start =
577 reinterpret_cast<const byte*>(module_bytes->GetCharsAddress()); 587 reinterpret_cast<const byte*>(module_bytes->GetCharsAddress());
578 const byte* end = start + module_bytes->length(); 588 const byte* end = start + module_bytes->length();
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 PrintF("->%d", current->instance_id()); 791 PrintF("->%d", current->instance_id());
782 if (!current->has_weak_next_instance()) break; 792 if (!current->has_weak_next_instance()) break;
783 CHECK(!current->ptr_to_weak_next_instance()->cleared()); 793 CHECK(!current->ptr_to_weak_next_instance()->cleared());
784 current = 794 current =
785 WasmCompiledModule::cast(current->ptr_to_weak_next_instance()->value()); 795 WasmCompiledModule::cast(current->ptr_to_weak_next_instance()->value());
786 } 796 }
787 PrintF("\n"); 797 PrintF("\n");
788 #endif 798 #endif
789 } 799 }
790 800
791 void WasmCompiledModule::RecreateModuleWrapper( 801 void WasmCompiledModule::ReinitializeAfterDeserialization(
792 Isolate* isolate, Handle<WasmCompiledModule> compiled_module) { 802 Isolate* isolate, Handle<WasmCompiledModule> compiled_module) {
793 // This method must only be called immediately after deserialization. 803 // This method must only be called immediately after deserialization.
794 // At this point, no module wrapper exists, so the shared module data is 804 // At this point, no module wrapper exists, so the shared module data is
795 // incomplete. 805 // incomplete.
796 Handle<WasmSharedModuleData> shared( 806 Handle<WasmSharedModuleData> shared(
797 static_cast<WasmSharedModuleData*>(compiled_module->get(kID_shared)), 807 static_cast<WasmSharedModuleData*>(compiled_module->get(kID_shared)),
798 isolate); 808 isolate);
799 DCHECK(!WasmSharedModuleData::IsWasmSharedModuleData(*shared)); 809 DCHECK(!WasmSharedModuleData::IsWasmSharedModuleData(*shared));
800 WasmSharedModuleData::RecreateModuleWrapper(isolate, shared); 810 WasmSharedModuleData::ReinitializeAfterDeserialization(isolate, shared);
801 DCHECK(WasmSharedModuleData::IsWasmSharedModuleData(*shared)); 811 DCHECK(WasmSharedModuleData::IsWasmSharedModuleData(*shared));
802 } 812 }
803 813
804 uint32_t WasmCompiledModule::mem_size() const { 814 uint32_t WasmCompiledModule::mem_size() const {
805 return has_memory() ? memory()->byte_length()->Number() : default_mem_size(); 815 return has_memory() ? memory()->byte_length()->Number() : default_mem_size();
806 } 816 }
807 817
808 uint32_t WasmCompiledModule::default_mem_size() const { 818 uint32_t WasmCompiledModule::default_mem_size() const {
809 return min_mem_pages() * WasmModule::kPageSize; 819 return min_mem_pages() * WasmModule::kPageSize;
810 } 820 }
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
1161 !array->get(kPreviousInstanceWrapper)->IsFixedArray()) 1171 !array->get(kPreviousInstanceWrapper)->IsFixedArray())
1162 return false; 1172 return false;
1163 return true; 1173 return true;
1164 } 1174 }
1165 1175
1166 void WasmInstanceWrapper::set_instance_object(Handle<JSObject> instance, 1176 void WasmInstanceWrapper::set_instance_object(Handle<JSObject> instance,
1167 Isolate* isolate) { 1177 Isolate* isolate) {
1168 Handle<WeakCell> cell = isolate->factory()->NewWeakCell(instance); 1178 Handle<WeakCell> cell = isolate->factory()->NewWeakCell(instance);
1169 set(kWrapperInstanceObject, *cell); 1179 set(kWrapperInstanceObject, *cell);
1170 } 1180 }
OLDNEW
« no previous file with comments | « src/wasm/wasm-objects.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698