[wasm] Make WasmModule* in ModuleEnv non-const

We need to modify that module, e.g. to add signatures to the signature
maps. Hence it cannot be const.

R=titzer@chromium.org
CC=mtrofin@chromium.org

Change-Id: I261af5b4233a0b2ec8031a9cbe0cf9f826316ae0
Reviewed-on: https://chromium-review.googlesource.com/600428
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47138}
This commit is contained in:
Clemens Hammacher 2017-08-03 16:14:24 +02:00 committed by Commit Bot
parent 9dd9419c38
commit 292cc3365a
5 changed files with 12 additions and 15 deletions

View File

@ -2321,8 +2321,7 @@ Node* WasmGraphBuilder::CallIndirect(uint32_t sig_index, Node** args,
Int32Constant(kPointerSizeLog2)),
Int32Constant(fixed_offset)),
*effect_, *control_);
auto& map = const_cast<wasm::SignatureMap&>(
module_->module->function_tables[0].map);
auto& map = module_->module->function_tables[0].map;
Node* sig_match = graph()->NewNode(
machine->WordEqual(), load_sig,
jsgraph()->SmiConstant(static_cast<int>(map.FindOrInsert(sig))));
@ -3822,8 +3821,7 @@ static void RecordFunctionCompilation(CodeEventListener::LogEventsAndTags tag,
*script_str, 0, 0));
}
Handle<Code> CompileJSToWasmWrapper(Isolate* isolate,
const wasm::WasmModule* module,
Handle<Code> CompileJSToWasmWrapper(Isolate* isolate, wasm::WasmModule* module,
Handle<Code> wasm_code, uint32_t index) {
const wasm::WasmFunction* func = &module->functions[index];

View File

@ -114,8 +114,7 @@ Handle<Code> CompileWasmToJSWrapper(Isolate* isolate, Handle<JSReceiver> target,
wasm::ModuleOrigin origin);
// Wraps a given wasm code object, producing a code object.
Handle<Code> CompileJSToWasmWrapper(Isolate* isolate,
const wasm::WasmModule* module,
Handle<Code> CompileJSToWasmWrapper(Isolate* isolate, wasm::WasmModule* module,
Handle<Code> wasm_code, uint32_t index);
// Compiles a stub that redirects a call to a wasm function to the wasm

View File

@ -693,7 +693,7 @@ MaybeHandle<WasmModuleObject> ModuleCompiler::CompileToModuleObjectInternal(
}
Handle<Code> JSToWasmWrapperCache::CloneOrCompileJSToWasmWrapper(
Isolate* isolate, const wasm::WasmModule* module, Handle<Code> wasm_code,
Isolate* isolate, wasm::WasmModule* module, Handle<Code> wasm_code,
uint32_t index) {
const wasm::WasmFunction* func = &module->functions[index];
int cached_idx = sig_map_.Find(func->sig);

View File

@ -185,7 +185,7 @@ class ModuleCompiler {
class JSToWasmWrapperCache {
public:
Handle<Code> CloneOrCompileJSToWasmWrapper(Isolate* isolate,
const wasm::WasmModule* module,
wasm::WasmModule* module,
Handle<Code> wasm_code,
uint32_t index);

View File

@ -227,7 +227,7 @@ typedef Managed<WasmModule> WasmModuleWrapper;
struct WasmInstance {
MOVE_ONLY_NO_DEFAULT_CONSTRUCTOR(WasmInstance);
const WasmModule* module; // static representation of the module.
WasmModule* module; // static representation of the module.
// -- Heap allocated --------------------------------------------------------
std::vector<Handle<FixedArray>> function_tables; // indirect function tables.
std::vector<Handle<FixedArray>>
@ -240,7 +240,7 @@ struct WasmInstance {
// -- raw globals -----------------------------------------------------------
byte* globals_start = nullptr; // start of the globals area.
explicit WasmInstance(const WasmModule* m)
explicit WasmInstance(WasmModule* m)
: module(m),
function_tables(m->function_tables.size()),
signature_tables(m->function_tables.size()),
@ -323,12 +323,12 @@ struct V8_EXPORT_PRIVATE ModuleWireBytes {
struct V8_EXPORT_PRIVATE ModuleEnv {
MOVE_ONLY_NO_DEFAULT_CONSTRUCTOR(ModuleEnv);
ModuleEnv(const WasmModule* module, WasmInstance* instance)
ModuleEnv(WasmModule* module, WasmInstance* instance)
: module(module),
instance(instance),
function_tables(instance ? &instance->function_tables : nullptr),
signature_tables(instance ? &instance->signature_tables : nullptr) {}
ModuleEnv(const WasmModule* module,
ModuleEnv(WasmModule* module,
std::vector<Handle<FixedArray>>* function_tables,
std::vector<Handle<FixedArray>>* signature_tables)
: module(module),
@ -336,7 +336,7 @@ struct V8_EXPORT_PRIVATE ModuleEnv {
function_tables(function_tables),
signature_tables(signature_tables) {}
const WasmModule* module;
WasmModule* module;
WasmInstance* instance;
std::vector<Handle<FixedArray>>* function_tables;
@ -383,10 +383,10 @@ struct V8_EXPORT_PRIVATE ModuleEnv {
// A ModuleEnv together with ModuleWireBytes.
struct ModuleBytesEnv {
ModuleBytesEnv(const WasmModule* module, WasmInstance* instance,
ModuleBytesEnv(WasmModule* module, WasmInstance* instance,
Vector<const byte> module_bytes)
: module_env(module, instance), wire_bytes(module_bytes) {}
ModuleBytesEnv(const WasmModule* module, WasmInstance* instance,
ModuleBytesEnv(WasmModule* module, WasmInstance* instance,
const ModuleWireBytes& wire_bytes)
: module_env(module, instance), wire_bytes(wire_bytes) {}