aboutsummaryrefslogtreecommitdiffstats
path: root/qv4isel_masm.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2012-12-13 12:09:04 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-12-13 12:38:11 +0100
commit9edd6967753c16512c8c589f3dedcae02687070a (patch)
treea8c4460d5c556fa9b087c229ba88dd68980ce9ef /qv4isel_masm.cpp
parentd6fcbdbf5182dcd549ef685cfeb2e3e90d3e81c7 (diff)
Correctly set up nested functions
Make sure we have the correct set of nested functions in both IR::Function and VM::Function. This is required so that closures can work correctly. Change-Id: I42493d5ee503090653b71650c8d19e06c4bcfdda Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'qv4isel_masm.cpp')
-rw-r--r--qv4isel_masm.cpp7
1 files changed, 2 insertions, 5 deletions
diff --git a/qv4isel_masm.cpp b/qv4isel_masm.cpp
index cabd1f7c5c..298d0b51f1 100644
--- a/qv4isel_masm.cpp
+++ b/qv4isel_masm.cpp
@@ -381,7 +381,7 @@ InstructionSelection::~InstructionSelection()
delete _asm;
}
-VM::Function *InstructionSelection::run(IR::Function *function)
+void InstructionSelection::run(VM::Function *vmFunction, IR::Function *function)
{
qSwap(_function, function);
Assembler* oldAssembler = _asm;
@@ -425,14 +425,11 @@ VM::Function *InstructionSelection::run(IR::Function *function)
#endif
_asm->ret();
- VM::Function *vmFunc = vmFunction(_function);
- _asm->link(vmFunc);
+ _asm->link(vmFunction);
qSwap(_function, function);
delete _asm;
_asm = oldAssembler;
-
- return vmFunc;
}
String *InstructionSelection::identifier(const QString &s)