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

Side by Side Diff: src/asmjs/asm-js.cc

Issue 2695813005: [wasm] Split the compilation and instantiation API into sync and async methods. (Closed)
Patch Set: [wasm] Split the compilation and instantiation API into sync and async methods. 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
« no previous file with comments | « src/api.cc ('k') | src/value-serializer.cc » ('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 "src/asmjs/asm-js.h" 5 #include "src/asmjs/asm-js.h"
6 6
7 #include "src/api-natives.h" 7 #include "src/api-natives.h"
8 #include "src/api.h" 8 #include "src/api.h"
9 #include "src/asmjs/asm-typer.h" 9 #include "src/asmjs/asm-typer.h"
10 #include "src/asmjs/asm-wasm-builder.h" 10 #include "src/asmjs/asm-wasm-builder.h"
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 } 181 }
182 double asm_wasm_time = asm_wasm_timer.Elapsed().InMillisecondsF(); 182 double asm_wasm_time = asm_wasm_timer.Elapsed().InMillisecondsF();
183 183
184 wasm::ZoneBuffer* module = asm_wasm_result.module_bytes; 184 wasm::ZoneBuffer* module = asm_wasm_result.module_bytes;
185 wasm::ZoneBuffer* asm_offsets = asm_wasm_result.asm_offset_table; 185 wasm::ZoneBuffer* asm_offsets = asm_wasm_result.asm_offset_table;
186 Vector<const byte> asm_offsets_vec(asm_offsets->begin(), 186 Vector<const byte> asm_offsets_vec(asm_offsets->begin(),
187 static_cast<int>(asm_offsets->size())); 187 static_cast<int>(asm_offsets->size()));
188 188
189 base::ElapsedTimer compile_timer; 189 base::ElapsedTimer compile_timer;
190 compile_timer.Start(); 190 compile_timer.Start();
191 MaybeHandle<JSObject> compiled = wasm::CreateModuleObjectFromBytes( 191 MaybeHandle<JSObject> compiled = SyncCompileTranslatedAsmJs(
192 info->isolate(), module->begin(), module->end(), &thrower, 192 info->isolate(), &thrower,
193 internal::wasm::kAsmJsOrigin, info->script(), asm_offsets_vec); 193 wasm::ModuleWireBytes(module->begin(), module->end()), info->script(),
194 asm_offsets_vec);
194 DCHECK(!compiled.is_null()); 195 DCHECK(!compiled.is_null());
195 double compile_time = compile_timer.Elapsed().InMillisecondsF(); 196 double compile_time = compile_timer.Elapsed().InMillisecondsF();
196 DCHECK_GE(module->end(), module->begin()); 197 DCHECK_GE(module->end(), module->begin());
197 uintptr_t wasm_size = module->end() - module->begin(); 198 uintptr_t wasm_size = module->end() - module->begin();
198 199
199 wasm::AsmTyper::StdlibSet uses = builder.typer()->StdlibUses(); 200 wasm::AsmTyper::StdlibSet uses = builder.typer()->StdlibUses();
200 Handle<FixedArray> uses_array = 201 Handle<FixedArray> uses_array =
201 info->isolate()->factory()->NewFixedArray(static_cast<int>(uses.size())); 202 info->isolate()->factory()->NewFixedArray(static_cast<int>(uses.size()));
202 int count = 0; 203 int count = 0;
203 for (auto i : uses) { 204 for (auto i : uses) {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 Handle<JSObject> ffi_object; 270 Handle<JSObject> ffi_object;
270 if (!foreign.is_null()) { 271 if (!foreign.is_null()) {
271 Handle<JSFunction> object_function = Handle<JSFunction>( 272 Handle<JSFunction> object_function = Handle<JSFunction>(
272 isolate->native_context()->object_function(), isolate); 273 isolate->native_context()->object_function(), isolate);
273 ffi_object = isolate->factory()->NewJSObject(object_function); 274 ffi_object = isolate->factory()->NewJSObject(object_function);
274 JSObject::AddProperty(ffi_object, isolate->factory()->empty_string(), 275 JSObject::AddProperty(ffi_object, isolate->factory()->empty_string(),
275 foreign, NONE); 276 foreign, NONE);
276 } 277 }
277 278
278 i::MaybeHandle<i::Object> maybe_module_object = 279 i::MaybeHandle<i::Object> maybe_module_object =
279 i::wasm::WasmModule::Instantiate(isolate, &thrower, module, ffi_object, 280 i::wasm::SyncInstantiate(isolate, &thrower, module, ffi_object, memory);
280 memory);
281 if (maybe_module_object.is_null()) { 281 if (maybe_module_object.is_null()) {
282 return MaybeHandle<Object>(); 282 return MaybeHandle<Object>();
283 } 283 }
284 i::Handle<i::Object> module_object = maybe_module_object.ToHandleChecked(); 284 i::Handle<i::Object> module_object = maybe_module_object.ToHandleChecked();
285 285
286 i::Handle<i::Name> init_name(isolate->factory()->InternalizeUtf8String( 286 i::Handle<i::Name> init_name(isolate->factory()->InternalizeUtf8String(
287 wasm::AsmWasmBuilder::foreign_init_name)); 287 wasm::AsmWasmBuilder::foreign_init_name));
288 i::Handle<i::Object> init = 288 i::Handle<i::Object> init =
289 i::Object::GetProperty(module_object, init_name).ToHandleChecked(); 289 i::Object::GetProperty(module_object, init_name).ToHandleChecked();
290 290
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 MessageHandler::ReportMessage(isolate, &location, message); 346 MessageHandler::ReportMessage(isolate, &location, message);
347 } 347 }
348 348
349 Handle<String> exports_name = 349 Handle<String> exports_name =
350 isolate->factory()->InternalizeUtf8String("exports"); 350 isolate->factory()->InternalizeUtf8String("exports");
351 return i::Object::GetProperty(module_object, exports_name); 351 return i::Object::GetProperty(module_object, exports_name);
352 } 352 }
353 353
354 } // namespace internal 354 } // namespace internal
355 } // namespace v8 355 } // namespace v8
OLDNEW
« no previous file with comments | « src/api.cc ('k') | src/value-serializer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698