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

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

Issue 2405173002: [wasm] Use WasmCompiledModule type in interfaces (Closed)
Patch Set: rebase 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
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 2075 matching lines...) Expand 10 before | Expand all | Expand 10 after
2086 2086
2087 int GetNumberOfFunctions(Handle<JSObject> wasm) { 2087 int GetNumberOfFunctions(Handle<JSObject> wasm) {
2088 DCHECK(IsWasmObject(*wasm)); 2088 DCHECK(IsWasmObject(*wasm));
2089 WasmCompiledModule* compiled_module = 2089 WasmCompiledModule* compiled_module =
2090 WasmCompiledModule::cast(wasm->GetInternalField(kWasmCompiledModule)); 2090 WasmCompiledModule::cast(wasm->GetInternalField(kWasmCompiledModule));
2091 ByteArray* func_names_arr = compiled_module->ptr_to_function_names(); 2091 ByteArray* func_names_arr = compiled_module->ptr_to_function_names();
2092 // TODO(clemensh): this looks inside an array constructed elsewhere. Refactor. 2092 // TODO(clemensh): this looks inside an array constructed elsewhere. Refactor.
2093 return func_names_arr->get_int(0); 2093 return func_names_arr->get_int(0);
2094 } 2094 }
2095 2095
2096 Handle<JSObject> CreateCompiledModuleObject(Isolate* isolate, 2096 Handle<JSObject> CreateCompiledModuleObject(
2097 Handle<FixedArray> compiled_module, 2097 Isolate* isolate, Handle<WasmCompiledModule> compiled_module,
2098 ModuleOrigin origin) { 2098 ModuleOrigin origin) {
2099 Handle<JSObject> module_obj; 2099 Handle<JSObject> module_obj;
2100 if (origin == ModuleOrigin::kWasmOrigin) { 2100 if (origin == ModuleOrigin::kWasmOrigin) {
2101 Handle<JSFunction> module_cons( 2101 Handle<JSFunction> module_cons(
2102 isolate->native_context()->wasm_module_constructor()); 2102 isolate->native_context()->wasm_module_constructor());
2103 module_obj = isolate->factory()->NewJSObject(module_cons); 2103 module_obj = isolate->factory()->NewJSObject(module_cons);
2104 } else { 2104 } else {
2105 DCHECK(origin == ModuleOrigin::kAsmJsOrigin); 2105 DCHECK(origin == ModuleOrigin::kAsmJsOrigin);
2106 Handle<Map> map = isolate->factory()->NewMap( 2106 Handle<Map> map = isolate->factory()->NewMap(
2107 JS_OBJECT_TYPE, JSObject::kHeaderSize + kPointerSize); 2107 JS_OBJECT_TYPE, JSObject::kHeaderSize + kPointerSize);
2108 module_obj = isolate->factory()->NewJSObjectFromMap(map, TENURED); 2108 module_obj = isolate->factory()->NewJSObjectFromMap(map, TENURED);
2109 } 2109 }
2110 module_obj->SetInternalField(0, *compiled_module); 2110 module_obj->SetInternalField(0, *compiled_module);
2111 if (origin == ModuleOrigin::kWasmOrigin) { 2111 if (origin == ModuleOrigin::kWasmOrigin) {
2112 Handle<Symbol> module_sym(isolate->native_context()->wasm_module_sym()); 2112 Handle<Symbol> module_sym(isolate->native_context()->wasm_module_sym());
2113 Object::SetProperty(module_obj, module_sym, module_obj, STRICT).Check(); 2113 Object::SetProperty(module_obj, module_sym, module_obj, STRICT).Check();
2114 } 2114 }
2115 Handle<WeakCell> link_to_module = isolate->factory()->NewWeakCell(module_obj); 2115 Handle<WeakCell> link_to_module = isolate->factory()->NewWeakCell(module_obj);
2116 WasmCompiledModule::cast(*compiled_module) 2116 compiled_module->set_weak_module_object(link_to_module);
2117 ->set_weak_module_object(link_to_module);
2118 return module_obj; 2117 return module_obj;
2119 } 2118 }
2120 2119
2121 MaybeHandle<JSObject> CreateModuleObjectFromBytes(Isolate* isolate, 2120 MaybeHandle<JSObject> CreateModuleObjectFromBytes(Isolate* isolate,
2122 const byte* start, 2121 const byte* start,
2123 const byte* end, 2122 const byte* end,
2124 ErrorThrower* thrower, 2123 ErrorThrower* thrower,
2125 ModuleOrigin origin) { 2124 ModuleOrigin origin) {
2126 MaybeHandle<JSObject> nothing; 2125 MaybeHandle<JSObject> nothing;
2127 Zone zone(isolate->allocator()); 2126 Zone zone(isolate->allocator());
2128 ModuleResult result = 2127 ModuleResult result =
2129 DecodeWasmModule(isolate, &zone, start, end, false, origin); 2128 DecodeWasmModule(isolate, &zone, start, end, false, origin);
2130 std::unique_ptr<const WasmModule> decoded_module(result.val); 2129 std::unique_ptr<const WasmModule> decoded_module(result.val);
2131 if (result.failed()) { 2130 if (result.failed()) {
2132 thrower->Failed("Wasm decoding failed", result); 2131 thrower->Failed("Wasm decoding failed", result);
2133 return nothing; 2132 return nothing;
2134 } 2133 }
2135 MaybeHandle<FixedArray> compiled_module = 2134 MaybeHandle<WasmCompiledModule> compiled_module =
2136 decoded_module->CompileFunctions(isolate, thrower); 2135 decoded_module->CompileFunctions(isolate, thrower);
2137 if (compiled_module.is_null()) return nothing; 2136 if (compiled_module.is_null()) return nothing;
2138 2137
2139 return CreateCompiledModuleObject(isolate, compiled_module.ToHandleChecked(), 2138 return CreateCompiledModuleObject(isolate, compiled_module.ToHandleChecked(),
2140 origin); 2139 origin);
2141 } 2140 }
2142 2141
2143 bool ValidateModuleBytes(Isolate* isolate, const byte* start, const byte* end, 2142 bool ValidateModuleBytes(Isolate* isolate, const byte* start, const byte* end,
2144 ErrorThrower* thrower, ModuleOrigin origin) { 2143 ErrorThrower* thrower, ModuleOrigin origin) {
2145 Zone zone(isolate->allocator()); 2144 Zone zone(isolate->allocator());
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
2277 WasmCompiledModule* compiled_module = 2276 WasmCompiledModule* compiled_module =
2278 WasmCompiledModule::cast(instance->GetInternalField(kWasmCompiledModule)); 2277 WasmCompiledModule::cast(instance->GetInternalField(kWasmCompiledModule));
2279 CHECK(compiled_module->has_weak_module_object()); 2278 CHECK(compiled_module->has_weak_module_object());
2280 CHECK(compiled_module->ptr_to_weak_module_object()->cleared()); 2279 CHECK(compiled_module->ptr_to_weak_module_object()->cleared());
2281 } 2280 }
2282 2281
2283 } // namespace testing 2282 } // namespace testing
2284 } // namespace wasm 2283 } // namespace wasm
2285 } // namespace internal 2284 } // namespace internal
2286 } // namespace v8 2285 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698