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

Unified Diff: src/wasm/wasm-module.cc

Issue 2396043002: [wasm] Remove three fields from wasm object (Closed)
Patch Set: 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/wasm/wasm-module.cc
diff --git a/src/wasm/wasm-module.cc b/src/wasm/wasm-module.cc
index fff7dd9621a79762e53565c79038f496eb998603..802415b3f11c766fb968c38858625d371fb8708f 100644
--- a/src/wasm/wasm-module.cc
+++ b/src/wasm/wasm-module.cc
@@ -57,10 +57,7 @@ enum WasmInstanceObjectFields {
kWasmGlobalsArrayBuffer,
// TODO(clemensh): Remove function name array, extract names from module
// bytes.
- kWasmFunctionNamesArray,
- kWasmModuleBytesString,
kWasmDebugInfo,
- kWasmNumImportedFunctions,
kWasmModuleInternalFieldCount
};
@@ -989,9 +986,10 @@ Object* GetOwningWasmInstance(Code* code) {
}
uint32_t GetNumImportedFunctions(Handle<JSObject> wasm_object) {
- return static_cast<uint32_t>(
- Smi::cast(wasm_object->GetInternalField(kWasmNumImportedFunctions))
- ->value());
+ DCHECK(IsWasmObject(*wasm_object));
+ WasmCompiledModule* compiled_module = WasmCompiledModule::cast(
+ wasm_object->GetInternalField(kWasmCompiledModule));
+ return static_cast<uint32_t>(compiled_module->ptr_to_import_data()->length());
titzer 2016/10/06 15:55:09 That won't work in my latest patch; the number of
Clemens Hammacher 2016/10/06 18:46:50 Fixed as discussed.
}
WasmModule::WasmModule(byte* module_start)
@@ -1344,26 +1342,6 @@ MaybeHandle<JSObject> WasmModule::Instantiate(Isolate* isolate,
}
//--------------------------------------------------------------------------
- // Set up the debug support for the new instance.
- //--------------------------------------------------------------------------
- // TODO(clemensh): avoid referencing this stuff from the instance, use it off
- // the compiled module instead. See the following 3 assignments:
- if (compiled_module->has_module_bytes()) {
- instance->SetInternalField(kWasmModuleBytesString,
- compiled_module->ptr_to_module_bytes());
- }
-
- if (compiled_module->has_function_names()) {
- instance->SetInternalField(kWasmFunctionNamesArray,
- compiled_module->ptr_to_function_names());
- }
-
- {
- Handle<Object> handle = factory->NewNumber(num_imported_functions);
- instance->SetInternalField(kWasmNumImportedFunctions, *handle);
- }
-
- //--------------------------------------------------------------------------
// Set up the runtime support for the new instance.
//--------------------------------------------------------------------------
Handle<WeakCell> weak_link = isolate->factory()->NewWeakCell(instance);
@@ -1621,10 +1599,11 @@ void WasmCompiledModule::PrintInstancesChain() {
Handle<Object> GetWasmFunctionNameOrNull(Isolate* isolate, Handle<Object> wasm,
uint32_t func_index) {
if (!wasm->IsUndefined(isolate)) {
+ DCHECK(IsWasmObject(*wasm));
+ WasmCompiledModule* compiled_module = WasmCompiledModule::cast(
+ Handle<JSObject>::cast(wasm)->GetInternalField(kWasmCompiledModule));
Handle<ByteArray> func_names_arr_obj(
- ByteArray::cast(Handle<JSObject>::cast(wasm)->GetInternalField(
- kWasmFunctionNamesArray)),
- isolate);
+ compiled_module->ptr_to_function_names(), isolate);
Mircea Trofin 2016/10/06 15:43:21 wouldn't compiled_module->function_names() give yo
Clemens Hammacher 2016/10/06 18:46:50 Good catch, fixed.
// TODO(clemens): Extract this from the module bytes; skip whole function
// name table.
Handle<Object> name;
@@ -1658,7 +1637,6 @@ bool IsWasmObject(Object* object) {
Object* mem = obj->GetInternalField(kWasmMemArrayBuffer);
if (!obj->GetInternalField(kWasmModuleCodeTable)->IsFixedArray() ||
!(mem->IsUndefined(isolate) || mem->IsJSArrayBuffer()) ||
- !obj->GetInternalField(kWasmFunctionNamesArray)->IsByteArray() ||
!WasmCompiledModule::IsWasmCompiledModule(
obj->GetInternalField(kWasmCompiledModule))) {
return false;
@@ -1669,7 +1647,10 @@ bool IsWasmObject(Object* object) {
}
SeqOneByteString* GetWasmBytes(JSObject* wasm) {
titzer 2016/10/06 15:55:09 Please return a handle instead of a raw pointer he
Clemens Hammacher 2016/10/06 18:46:50 Done.
- return SeqOneByteString::cast(wasm->GetInternalField(kWasmModuleBytesString));
+ DCHECK(IsWasmObject(wasm));
+ WasmCompiledModule* compiled_module =
+ WasmCompiledModule::cast(wasm->GetInternalField(kWasmCompiledModule));
+ return compiled_module->ptr_to_module_bytes();
}
Handle<WasmDebugInfo> GetDebugInfo(Handle<JSObject> wasm) {
@@ -1749,9 +1730,12 @@ void PopulateFunctionTable(Handle<FixedArray> table, uint32_t table_size,
}
int GetNumberOfFunctions(JSObject* wasm) {
- Object* func_names_obj = wasm->GetInternalField(kWasmFunctionNamesArray);
+ DCHECK(IsWasmObject(wasm));
+ WasmCompiledModule* compiled_module =
+ WasmCompiledModule::cast(wasm->GetInternalField(kWasmCompiledModule));
+ ByteArray* func_names_arr = compiled_module->ptr_to_function_names();
// TODO(clemensh): this looks inside an array constructed elsewhere. Refactor.
- return ByteArray::cast(func_names_obj)->get_int(0);
+ return func_names_arr->get_int(0);
}
Handle<JSObject> CreateCompiledModuleObject(Isolate* isolate,
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698