From bf22c55036f6429ccfc849ea71f33e757fae47fa Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Wed, 11 Sep 2013 11:26:32 +0200 Subject: Fix passing of exception table pointers to ARM runtime on unwinding Our synthetic exception unwind table for ARM is located at (char *)codeStart + function->codeSize; This relies on function->codeSize to contain the number of bytes of instructions the function has, not the size of the MacroAssemblerCodeRef (which contains the size of the entire area). This patch fixes the calculation of function->codeSize and also replaces the QHash for the IR::Function* -> CodeRef mapping in the masm backend with a simple vector that's perfectly sufficient. Bug spotted by Petr Nejedly Change-Id: I78a53599085c613c6d97aa2490922f54e0bb4f63 Reviewed-by: Lars Knoll --- src/qml/compiler/qv4isel_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/qml/compiler/qv4isel_p.h') diff --git a/src/qml/compiler/qv4isel_p.h b/src/qml/compiler/qv4isel_p.h index ef601cd152..450a0f072a 100644 --- a/src/qml/compiler/qv4isel_p.h +++ b/src/qml/compiler/qv4isel_p.h @@ -70,7 +70,7 @@ public: void setUseFastLookups(bool b) { useFastLookups = b; } protected: - virtual void run(V4IR::Function *function) = 0; + virtual void run(int functionIndex) = 0; virtual QV4::CompiledData::CompilationUnit *backendCompileStep() = 0; protected: -- cgit v1.2.3 From 525c4ee8a9d436a7ce2f785cdb908735271486a4 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Mon, 9 Sep 2013 20:34:30 +0200 Subject: Remove unused code to generate post increment and decrement expressions We generate lower level code in codegen and don't use these runtime methods anymore. Change-Id: If1023ce5295431305f4528839bcf2a3031fa7ad2 Reviewed-by: Simon Hausmann --- src/qml/compiler/qv4isel_p.h | 8 -------- 1 file changed, 8 deletions(-) (limited to 'src/qml/compiler/qv4isel_p.h') diff --git a/src/qml/compiler/qv4isel_p.h b/src/qml/compiler/qv4isel_p.h index 450a0f072a..e1cccedd2c 100644 --- a/src/qml/compiler/qv4isel_p.h +++ b/src/qml/compiler/qv4isel_p.h @@ -108,14 +108,6 @@ public: // to implement by subclasses: virtual void callBuiltinDeleteSubscript(V4IR::Temp *base, V4IR::Expr *index, V4IR::Temp *result) = 0; virtual void callBuiltinDeleteName(const QString &name, V4IR::Temp *result) = 0; virtual void callBuiltinDeleteValue(V4IR::Temp *result) = 0; - virtual void callBuiltinPostDecrementMember(V4IR::Temp *base, const QString &name, V4IR::Temp *result) = 0; - virtual void callBuiltinPostDecrementSubscript(V4IR::Temp *base, V4IR::Temp *index, V4IR::Temp *result) = 0; - virtual void callBuiltinPostDecrementName(const QString &name, V4IR::Temp *result) = 0; - virtual void callBuiltinPostDecrementValue(V4IR::Temp *value, V4IR::Temp *result) = 0; - virtual void callBuiltinPostIncrementMember(V4IR::Temp *base, const QString &name, V4IR::Temp *result) = 0; - virtual void callBuiltinPostIncrementSubscript(V4IR::Temp *base, V4IR::Temp *index, V4IR::Temp *result) = 0; - virtual void callBuiltinPostIncrementName(const QString &name, V4IR::Temp *result) = 0; - virtual void callBuiltinPostIncrementValue(V4IR::Temp *value, V4IR::Temp *result) = 0; virtual void callBuiltinThrow(V4IR::Expr *arg) = 0; virtual void callBuiltinFinishTry() = 0; virtual void callBuiltinForeachIteratorObject(V4IR::Temp *arg, V4IR::Temp *result) = 0; -- cgit v1.2.3