summaryrefslogtreecommitdiff
path: root/src/wasm-interpreter.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm-interpreter.h')
-rw-r--r--src/wasm-interpreter.h20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h
index ae42ca648..db55cd143 100644
--- a/src/wasm-interpreter.h
+++ b/src/wasm-interpreter.h
@@ -529,12 +529,12 @@ public:
Module& wasm;
// Values of globals
- std::vector<Literal> globals;
+ std::map<Name, Literal> globals;
ModuleInstance(Module& wasm, ExternalInterface* externalInterface) : wasm(wasm), externalInterface(externalInterface) {
memorySize = wasm.memory.initial;
- for (Index i = 0; i < wasm.globals.size(); i++) {
- globals.push_back(ConstantExpressionRunner().visit(wasm.globals[i]->init).value);
+ for (auto& global : wasm.globals) {
+ globals[global->name] = ConstantExpressionRunner().visit(global->init).value;
}
externalInterface->init(wasm);
if (wasm.start.is()) {
@@ -682,19 +682,19 @@ public:
Flow visitGetGlobal(GetGlobal *curr) {
NOTE_ENTER("GetGlobal");
- auto index = curr->index;
- NOTE_EVAL1(index);
- NOTE_EVAL1(instance.globals[index]);
- return instance.globals[index];
+ auto name = curr->name;
+ NOTE_EVAL1(name);
+ NOTE_EVAL1(instance.globals[name]);
+ return instance.globals[name];
}
Flow visitSetGlobal(SetGlobal *curr) {
NOTE_ENTER("SetGlobal");
- auto index = curr->index;
+ auto name = curr->name;
Flow flow = visit(curr->value);
if (flow.breaking()) return flow;
- NOTE_EVAL1(index);
+ NOTE_EVAL1(name);
NOTE_EVAL1(flow.value);
- instance.globals[index] = flow.value;
+ instance.globals[name] = flow.value;
return Flow();
}