aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4codegen.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2017-08-26 23:13:53 +0200
committerLars Knoll <lars.knoll@qt.io>2017-08-28 13:19:49 +0000
commit8bad53758386735050bcf71348ed949988850ec6 (patch)
tree850b53e6dd8ce633dd3f914f23d9d683038cfeee /src/qml/compiler/qv4codegen.cpp
parenta50911bc0bfca1185e99ce6638fbf03cf592789d (diff)
Add a load/storeLocal instruction
Change-Id: I084979a6fef7cce9a825cae9ce57234583ceb3ce Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/compiler/qv4codegen.cpp')
-rw-r--r--src/qml/compiler/qv4codegen.cpp28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/qml/compiler/qv4codegen.cpp b/src/qml/compiler/qv4codegen.cpp
index 2254cc8808..ba2f856b4b 100644
--- a/src/qml/compiler/qv4codegen.cpp
+++ b/src/qml/compiler/qv4codegen.cpp
@@ -3009,10 +3009,16 @@ void Codegen::Reference::storeAccumulator() const
return;
}
case ScopedLocal: {
- Instruction::StoreScopedLocal store;
- store.index = index;
- store.scope = scope;
- codegen->bytecodeGenerator->addInstruction(store);
+ if (scope == 0) {
+ Instruction::StoreLocal store;
+ store.index = index;
+ codegen->bytecodeGenerator->addInstruction(store);
+ } else {
+ Instruction::StoreScopedLocal store;
+ store.index = index;
+ store.scope = scope;
+ codegen->bytecodeGenerator->addInstruction(store);
+ }
return;
}
case Name: {
@@ -3116,10 +3122,16 @@ void Codegen::Reference::loadInAccumulator() const
codegen->bytecodeGenerator->addInstruction(load);
} return;
case ScopedLocal: {
- Instruction::LoadScopedLocal load;
- load.index = index;
- load.scope = scope;
- codegen->bytecodeGenerator->addInstruction(load);
+ if (!scope) {
+ Instruction::LoadLocal load;
+ load.index = index;
+ codegen->bytecodeGenerator->addInstruction(load);
+ } else {
+ Instruction::LoadScopedLocal load;
+ load.index = index;
+ load.scope = scope;
+ codegen->bytecodeGenerator->addInstruction(load);
+ }
return;
}
case Name: