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

Side by Side Diff: src/snapshot/code-serializer.cc

Issue 2490663002: [wasm] Move all heap-allocated WASM structures into wasm-objects.h. (Closed)
Patch Set: [wasm] Move all heap-allocated WASM structures into wasm-objects.h. Created 4 years, 1 month 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/runtime/runtime-test.cc ('k') | src/v8.gyp » ('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 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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/snapshot/code-serializer.h" 5 #include "src/snapshot/code-serializer.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/log.h" 10 #include "src/log.h"
11 #include "src/macro-assembler.h" 11 #include "src/macro-assembler.h"
12 #include "src/snapshot/deserializer.h" 12 #include "src/snapshot/deserializer.h"
13 #include "src/snapshot/snapshot.h" 13 #include "src/snapshot/snapshot.h"
14 #include "src/version.h" 14 #include "src/version.h"
15 #include "src/wasm/wasm-module.h" 15 #include "src/wasm/wasm-module.h"
16 #include "src/wasm/wasm-objects.h"
16 17
17 namespace v8 { 18 namespace v8 {
18 namespace internal { 19 namespace internal {
19 20
20 ScriptData* CodeSerializer::Serialize(Isolate* isolate, 21 ScriptData* CodeSerializer::Serialize(Isolate* isolate,
21 Handle<SharedFunctionInfo> info, 22 Handle<SharedFunctionInfo> info,
22 Handle<String> source) { 23 Handle<String> source) {
23 base::ElapsedTimer timer; 24 base::ElapsedTimer timer;
24 if (FLAG_profile_deserialization) timer.Start(); 25 if (FLAG_profile_deserialization) timer.Start();
25 if (FLAG_trace_serializer) { 26 if (FLAG_trace_serializer) {
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 if (script->name()->IsString()) name = String::cast(script->name()); 213 if (script->name()->IsString()) name = String::cast(script->name());
213 } 214 }
214 PROFILE(isolate, CodeCreateEvent(CodeEventListener::SCRIPT_TAG, 215 PROFILE(isolate, CodeCreateEvent(CodeEventListener::SCRIPT_TAG,
215 result->abstract_code(), *result, name)); 216 result->abstract_code(), *result, name));
216 } 217 }
217 return scope.CloseAndEscape(result); 218 return scope.CloseAndEscape(result);
218 } 219 }
219 220
220 std::unique_ptr<ScriptData> WasmCompiledModuleSerializer::SerializeWasmModule( 221 std::unique_ptr<ScriptData> WasmCompiledModuleSerializer::SerializeWasmModule(
221 Isolate* isolate, Handle<FixedArray> input) { 222 Isolate* isolate, Handle<FixedArray> input) {
222 Handle<wasm::WasmCompiledModule> compiled_module = 223 Handle<WasmCompiledModule> compiled_module =
223 Handle<wasm::WasmCompiledModule>::cast(input); 224 Handle<WasmCompiledModule>::cast(input);
224 WasmCompiledModuleSerializer wasm_cs(isolate, 0); 225 WasmCompiledModuleSerializer wasm_cs(isolate, 0);
225 wasm_cs.reference_map()->AddAttachedReference(*isolate->native_context()); 226 wasm_cs.reference_map()->AddAttachedReference(*isolate->native_context());
226 wasm_cs.reference_map()->AddAttachedReference( 227 wasm_cs.reference_map()->AddAttachedReference(
227 *compiled_module->module_bytes()); 228 *compiled_module->module_bytes());
228 ScriptData* data = wasm_cs.Serialize(compiled_module); 229 ScriptData* data = wasm_cs.Serialize(compiled_module);
229 return std::unique_ptr<ScriptData>(data); 230 return std::unique_ptr<ScriptData>(data);
230 } 231 }
231 232
232 MaybeHandle<FixedArray> WasmCompiledModuleSerializer::DeserializeWasmModule( 233 MaybeHandle<FixedArray> WasmCompiledModuleSerializer::DeserializeWasmModule(
233 Isolate* isolate, ScriptData* data, Vector<const byte> wire_bytes) { 234 Isolate* isolate, ScriptData* data, Vector<const byte> wire_bytes) {
(...skipping 20 matching lines...) Expand all
254 handle(SeqOneByteString::cast(*wire_bytes_as_string))); 255 handle(SeqOneByteString::cast(*wire_bytes_as_string)));
255 256
256 Vector<const uint32_t> stub_keys = scd.CodeStubKeys(); 257 Vector<const uint32_t> stub_keys = scd.CodeStubKeys();
257 for (int i = 0; i < stub_keys.length(); ++i) { 258 for (int i = 0; i < stub_keys.length(); ++i) {
258 deserializer.AddAttachedObject( 259 deserializer.AddAttachedObject(
259 CodeStub::GetCode(isolate, stub_keys[i]).ToHandleChecked()); 260 CodeStub::GetCode(isolate, stub_keys[i]).ToHandleChecked());
260 } 261 }
261 262
262 MaybeHandle<HeapObject> obj = deserializer.DeserializeObject(isolate); 263 MaybeHandle<HeapObject> obj = deserializer.DeserializeObject(isolate);
263 if (obj.is_null() || !obj.ToHandleChecked()->IsFixedArray()) return nothing; 264 if (obj.is_null() || !obj.ToHandleChecked()->IsFixedArray()) return nothing;
264 Handle<wasm::WasmCompiledModule> compiled_module = 265 Handle<WasmCompiledModule> compiled_module =
265 Handle<wasm::WasmCompiledModule>::cast(obj.ToHandleChecked()); 266 Handle<WasmCompiledModule>::cast(obj.ToHandleChecked());
266 267
267 wasm::WasmCompiledModule::RecreateModuleWrapper(isolate, compiled_module); 268 WasmCompiledModule::RecreateModuleWrapper(isolate, compiled_module);
268 return compiled_module; 269 return compiled_module;
269 } 270 }
270 271
271 class Checksum { 272 class Checksum {
272 public: 273 public:
273 explicit Checksum(Vector<const byte> payload) { 274 explicit Checksum(Vector<const byte> payload) {
274 #ifdef MEMORY_SANITIZER 275 #ifdef MEMORY_SANITIZER
275 // Computing the checksum includes padding bytes for objects like strings. 276 // Computing the checksum includes padding bytes for objects like strings.
276 // Mark every object as initialized in the code serializer. 277 // Mark every object as initialized in the code serializer.
277 MSAN_MEMORY_IS_INITIALIZED(payload.start(), payload.length()); 278 MSAN_MEMORY_IS_INITIALIZED(payload.start(), payload.length());
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 *rejection_result = scd.SanityCheck(isolate, expected_source_hash); 429 *rejection_result = scd.SanityCheck(isolate, expected_source_hash);
429 if (*rejection_result != CHECK_SUCCESS) { 430 if (*rejection_result != CHECK_SUCCESS) {
430 cached_data->Reject(); 431 cached_data->Reject();
431 return SerializedCodeData(nullptr, 0); 432 return SerializedCodeData(nullptr, 0);
432 } 433 }
433 return scd; 434 return scd;
434 } 435 }
435 436
436 } // namespace internal 437 } // namespace internal
437 } // namespace v8 438 } // namespace v8
OLDNEW
« no previous file with comments | « src/runtime/runtime-test.cc ('k') | src/v8.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698