aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-08-05 23:41:42 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-08-07 14:20:52 +0200
commit36f28fdbebadbd61ff5907b8378abcf907b12dd3 (patch)
treedc3ded8237dc0977e56b3c57f38d9c47a24bff1a /src
parente8e7fff1f50d3517acaee8242180a89600334da3 (diff)
Remove context argument from most binops
Change-Id: I4fa2636f1b2c8e8426b64d6e16bc7c223e6f327a Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/qml/qml/v4/llvm_runtime.cpp72
-rw-r--r--src/qml/qml/v4/moth/qv4instr_moth_p.h9
-rw-r--r--src/qml/qml/v4/moth/qv4isel_moth.cpp32
-rw-r--r--src/qml/qml/v4/moth/qv4vme_moth.cpp6
-rw-r--r--src/qml/qml/v4/qv4context.cpp2
-rw-r--r--src/qml/qml/v4/qv4isel_masm.cpp26
-rw-r--r--src/qml/qml/v4/qv4isel_masm_p.h1
-rw-r--r--src/qml/qml/v4/qv4object.cpp28
-rw-r--r--src/qml/qml/v4/qv4object_p.h4
-rw-r--r--src/qml/qml/v4/qv4runtime.cpp5
-rw-r--r--src/qml/qml/v4/qv4runtime_p.h77
11 files changed, 164 insertions, 98 deletions
diff --git a/src/qml/qml/v4/llvm_runtime.cpp b/src/qml/qml/v4/llvm_runtime.cpp
index 0498bab44f..032ef82ab8 100644
--- a/src/qml/qml/v4/llvm_runtime.cpp
+++ b/src/qml/qml/v4/llvm_runtime.cpp
@@ -105,19 +105,19 @@ bool __qmljs_llvm_to_boolean(ExecutionContext *ctx, const Value *value)
return __qmljs_to_boolean(*value);
}
-void __qmljs_llvm_bit_and(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_bit_and(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_bit_and(ctx, result, *left, *right);
+ __qmljs_bit_and(result, *left, *right);
}
-void __qmljs_llvm_bit_or(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_bit_or(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_bit_or(ctx, result, *left, *right);
+ __qmljs_bit_or(result, *left, *right);
}
-void __qmljs_llvm_bit_xor(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_bit_xor(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_bit_xor(ctx, result, *left, *right);
+ __qmljs_bit_xor(result, *left, *right);
}
void __qmljs_llvm_add(ExecutionContext *ctx, Value *result, Value *left, Value *right)
@@ -125,79 +125,79 @@ void __qmljs_llvm_add(ExecutionContext *ctx, Value *result, Value *left, Value *
__qmljs_add(ctx, result, *left, *right);
}
-void __qmljs_llvm_sub(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_sub(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_sub(ctx, result, *left, *right);
+ __qmljs_sub(result, *left, *right);
}
-void __qmljs_llvm_mul(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_mul(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_mul(ctx, result, *left, *right);
+ __qmljs_mul(result, *left, *right);
}
-void __qmljs_llvm_div(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_div(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_div(ctx, result, *left, *right);
+ __qmljs_div(result, *left, *right);
}
-void __qmljs_llvm_mod(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_mod(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_mod(ctx, result, *left, *right);
+ __qmljs_mod(result, *left, *right);
}
-void __qmljs_llvm_shl(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_shl(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_shl(ctx, result, *left, *right);
+ __qmljs_shl(result, *left, *right);
}
-void __qmljs_llvm_shr(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_shr(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_shr(ctx, result, *left, *right);
+ __qmljs_shr(result, *left, *right);
}
-void __qmljs_llvm_ushr(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_ushr(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_ushr(ctx, result, *left, *right);
+ __qmljs_ushr(result, *left, *right);
}
-void __qmljs_llvm_gt(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_gt(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_gt(ctx, result, *left, *right);
+ __qmljs_gt(result, *left, *right);
}
-void __qmljs_llvm_lt(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_lt(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_lt(ctx, result, *left, *right);
+ __qmljs_lt(result, *left, *right);
}
-void __qmljs_llvm_ge(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_ge(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_ge(ctx, result, *left, *right);
+ __qmljs_ge(result, *left, *right);
}
-void __qmljs_llvm_le(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_le(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_le(ctx, result, *left, *right);
+ __qmljs_le(result, *left, *right);
}
-void __qmljs_llvm_eq(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_eq(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_eq(ctx, result, *left, *right);
+ __qmljs_eq(result, *left, *right);
}
-void __qmljs_llvm_ne(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_ne(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_ne(ctx, result, *left, *right);
+ __qmljs_ne(result, *left, *right);
}
-void __qmljs_llvm_se(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_se(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_se(ctx, result, *left, *right);
+ __qmljs_se(result, *left, *right);
}
-void __qmljs_llvm_sne(ExecutionContext *ctx, Value *result, Value *left, Value *right)
+void __qmljs_llvm_sne(ExecutionContext *, Value *result, Value *left, Value *right)
{
- __qmljs_sne(ctx, result, *left, *right);
+ __qmljs_sne(result, *left, *right);
}
void __qmljs_llvm_instanceof(ExecutionContext *ctx, Value *result, Value *left, Value *right)
diff --git a/src/qml/qml/v4/moth/qv4instr_moth_p.h b/src/qml/qml/v4/moth/qv4instr_moth_p.h
index 7397a1811d..ac7196e2d1 100644
--- a/src/qml/qml/v4/moth/qv4instr_moth_p.h
+++ b/src/qml/qml/v4/moth/qv4instr_moth_p.h
@@ -97,6 +97,7 @@ QT_BEGIN_NAMESPACE
F(CJump, cjump) \
F(Unop, unop) \
F(Binop, binop) \
+ F(BinopContext, binopContext) \
F(AddNumberParams, addNumberParams) \
F(MulNumberParams, mulNumberParams) \
F(SubNumberParams, subNumberParams) \
@@ -481,6 +482,13 @@ union Instr
Param rhs;
Param result;
};
+ struct instr_binopContext {
+ MOTH_INSTR_HEADER
+ QV4::BinOpContext alu;
+ Param lhs;
+ Param rhs;
+ Param result;
+ };
struct instr_addNumberParams {
MOTH_INSTR_HEADER
Param lhs;
@@ -574,6 +582,7 @@ union Instr
instr_cjump cjump;
instr_unop unop;
instr_binop binop;
+ instr_binopContext binopContext;
instr_addNumberParams addNumberParams;
instr_mulNumberParams mulNumberParams;
instr_subNumberParams subNumberParams;
diff --git a/src/qml/qml/v4/moth/qv4isel_moth.cpp b/src/qml/qml/v4/moth/qv4isel_moth.cpp
index 04d759ed8d..610f429f5d 100644
--- a/src/qml/qml/v4/moth/qv4isel_moth.cpp
+++ b/src/qml/qml/v4/moth/qv4isel_moth.cpp
@@ -77,7 +77,7 @@ inline QV4::BinOp aluOpFunction(V4IR::AluOp op)
case V4IR::OpBitXor:
return QV4::__qmljs_bit_xor;
case V4IR::OpAdd:
- return QV4::__qmljs_add;
+ return 0;
case V4IR::OpSub:
return QV4::__qmljs_sub;
case V4IR::OpMul:
@@ -109,9 +109,9 @@ inline QV4::BinOp aluOpFunction(V4IR::AluOp op)
case V4IR::OpStrictNotEqual:
return QV4::__qmljs_sne;
case V4IR::OpInstanceof:
- return QV4::__qmljs_instanceof;
+ return 0;
case V4IR::OpIn:
- return QV4::__qmljs_in;
+ return 0;
case V4IR::OpAnd:
return 0;
case V4IR::OpOr:
@@ -540,12 +540,26 @@ void InstructionSelection::binop(V4IR::AluOp oper, V4IR::Expr *leftSource, V4IR:
Q_ASSERT(leftSource->asTemp() && rightSource->asTemp());
#endif // USE_TYPE_INFO
- Instruction::Binop binop;
- binop.alu = aluOpFunction(oper);
- binop.lhs = getParam(leftSource);
- binop.rhs = getParam(rightSource);
- binop.result = getResultParam(target);
- addInstruction(binop);
+ if (oper == V4IR::OpInstanceof || oper == V4IR::OpIn || oper == V4IR::OpAdd) {
+ Instruction::BinopContext binop;
+ if (oper == V4IR::OpInstanceof)
+ binop.alu = QV4::__qmljs_instanceof;
+ else if (oper == V4IR::OpIn)
+ binop.alu = QV4::__qmljs_in;
+ else
+ binop.alu = QV4::__qmljs_add;
+ binop.lhs = getParam(leftSource);
+ binop.rhs = getParam(rightSource);
+ binop.result = getResultParam(target);
+ addInstruction(binop);
+ } else {
+ Instruction::Binop binop;
+ binop.alu = aluOpFunction(oper);
+ binop.lhs = getParam(leftSource);
+ binop.rhs = getParam(rightSource);
+ binop.result = getResultParam(target);
+ addInstruction(binop);
+ }
}
void InstructionSelection::inplaceNameOp(V4IR::AluOp oper, V4IR::Temp *rightSource, const QString &targetName)
diff --git a/src/qml/qml/v4/moth/qv4vme_moth.cpp b/src/qml/qml/v4/moth/qv4vme_moth.cpp
index 678d0edc4f..a06ce4139a 100644
--- a/src/qml/qml/v4/moth/qv4vme_moth.cpp
+++ b/src/qml/qml/v4/moth/qv4vme_moth.cpp
@@ -502,9 +502,13 @@ QV4::Value VME::run(QV4::ExecutionContext *context, const uchar *&code,
MOTH_END_INSTR(Unop)
MOTH_BEGIN_INSTR(Binop)
- instr.alu(context, VALUEPTR(instr.result), VALUE(instr.lhs), VALUE(instr.rhs));
+ instr.alu(VALUEPTR(instr.result), VALUE(instr.lhs), VALUE(instr.rhs));
MOTH_END_INSTR(Binop)
+ MOTH_BEGIN_INSTR(BinopContext)
+ instr.alu(context, VALUEPTR(instr.result), VALUE(instr.lhs), VALUE(instr.rhs));
+ MOTH_END_INSTR(BinopContext)
+
MOTH_BEGIN_INSTR(AddNumberParams)
QV4::Value lhs = VALUE(instr.lhs);
QV4::Value rhs = VALUE(instr.rhs);
diff --git a/src/qml/qml/v4/qv4context.cpp b/src/qml/qml/v4/qv4context.cpp
index ed01548410..ce947e51e8 100644
--- a/src/qml/qml/v4/qv4context.cpp
+++ b/src/qml/qml/v4/qv4context.cpp
@@ -543,7 +543,7 @@ void ExecutionContext::inplaceBitOp(String *name, const Value &value, BinOp op)
{
Value lhs = getProperty(name);
Value result;
- op(this, &result, lhs, value);
+ op(&result, lhs, value);
setProperty(name, result);
}
diff --git a/src/qml/qml/v4/qv4isel_masm.cpp b/src/qml/qml/v4/qv4isel_masm.cpp
index 23688dbb82..4317ba0d54 100644
--- a/src/qml/qml/v4/qv4isel_masm.cpp
+++ b/src/qml/qml/v4/qv4isel_masm.cpp
@@ -351,13 +351,17 @@ void Assembler::leaveStandardStackFrame(int locals)
#define OP(op) \
- { isel_stringIfy(op), op, 0, 0 }
+ { isel_stringIfy(op), op, 0, 0, 0 }
+#define OPCONTEXT(op) \
+ { isel_stringIfy(op), 0, op, 0, 0 }
#define INLINE_OP(op, memOp, immOp) \
- { isel_stringIfy(op), op, memOp, immOp }
+ { isel_stringIfy(op), op, 0, memOp, immOp }
+#define INLINE_OPCONTEXT(op, memOp, immOp) \
+ { isel_stringIfy(op), 0, op, memOp, immOp }
#define NULL_OP \
- { 0, 0, 0, 0 }
+ { 0, 0, 0, 0, 0 }
const Assembler::BinaryOperationInfo Assembler::binaryOperations[QQmlJS::V4IR::LastAluOp + 1] = {
NULL_OP, // OpInvalid
@@ -373,7 +377,7 @@ const Assembler::BinaryOperationInfo Assembler::binaryOperations[QQmlJS::V4IR::L
INLINE_OP(__qmljs_bit_or, &Assembler::inline_or32, &Assembler::inline_or32), // OpBitOr
INLINE_OP(__qmljs_bit_xor, &Assembler::inline_xor32, &Assembler::inline_xor32), // OpBitXor
- INLINE_OP(__qmljs_add, &Assembler::inline_add32, &Assembler::inline_add32), // OpAdd
+ INLINE_OPCONTEXT(__qmljs_add, &Assembler::inline_add32, &Assembler::inline_add32), // OpAdd
INLINE_OP(__qmljs_sub, &Assembler::inline_sub32, &Assembler::inline_sub32), // OpSub
INLINE_OP(__qmljs_mul, &Assembler::inline_mul32, &Assembler::inline_mul32), // OpMul
@@ -393,8 +397,8 @@ const Assembler::BinaryOperationInfo Assembler::binaryOperations[QQmlJS::V4IR::L
OP(__qmljs_se), // OpStrictEqual
OP(__qmljs_sne), // OpStrictNotEqual
- OP(__qmljs_instanceof), // OpInstanceof
- OP(__qmljs_in), // OpIn
+ OPCONTEXT(__qmljs_instanceof), // OpInstanceof
+ OPCONTEXT(__qmljs_in), // OpIn
NULL_OP, // OpAnd
NULL_OP // OpOr
@@ -403,7 +407,7 @@ const Assembler::BinaryOperationInfo Assembler::binaryOperations[QQmlJS::V4IR::L
void Assembler::generateBinOp(V4IR::AluOp operation, V4IR::Temp* target, V4IR::Temp *left, V4IR::Temp *right)
{
const BinaryOperationInfo& info = binaryOperations[operation];
- if (!info.fallbackImplementation) {
+ if (!info.fallbackImplementation && !info.contextImplementation) {
assert(!"unreachable");
return;
}
@@ -481,8 +485,12 @@ void Assembler::generateBinOp(V4IR::AluOp operation, V4IR::Temp* target, V4IR::T
}
// Fallback
- generateFunctionCallImp(Assembler::Void, info.name, info.fallbackImplementation, ContextRegister,
- Assembler::PointerToValue(target), Assembler::Reference(left), Assembler::Reference(right));
+ if (info.contextImplementation)
+ generateFunctionCallImp(Assembler::Void, info.name, info.contextImplementation, ContextRegister,
+ Assembler::PointerToValue(target), Assembler::Reference(left), Assembler::Reference(right));
+ else
+ generateFunctionCallImp(Assembler::Void, info.name, info.fallbackImplementation,
+ Assembler::PointerToValue(target), Assembler::Reference(left), Assembler::Reference(right));
if (binOpFinished.isSet())
binOpFinished.link(this);
diff --git a/src/qml/qml/v4/qv4isel_masm_p.h b/src/qml/qml/v4/qv4isel_masm_p.h
index b53b0e5c74..fa14ffac62 100644
--- a/src/qml/qml/v4/qv4isel_masm_p.h
+++ b/src/qml/qml/v4/qv4isel_masm_p.h
@@ -597,6 +597,7 @@ public:
struct BinaryOperationInfo {
const char *name;
QV4::BinOp fallbackImplementation;
+ QV4::BinOpContext contextImplementation;
MemRegBinOp inlineMemRegOp;
ImmRegBinOp inlineImmRegOp;
};
diff --git a/src/qml/qml/v4/qv4object.cpp b/src/qml/qml/v4/qv4object.cpp
index 16b57871af..edfb535e7a 100644
--- a/src/qml/qml/v4/qv4object.cpp
+++ b/src/qml/qml/v4/qv4object.cpp
@@ -162,11 +162,11 @@ void Object::putValue(Property *pd, PropertyAttributes attrs, const Value &value
}
-void Object::inplaceBinOp(ExecutionContext *ctx, BinOp op, String *name, const Value &rhs)
+void Object::inplaceBinOp(ExecutionContext *, BinOp op, String *name, const Value &rhs)
{
Value v = get(name);
Value result;
- op(ctx, &result, v, rhs);
+ op(&result, v, rhs);
put(name, result);
}
@@ -177,6 +177,30 @@ void Object::inplaceBinOp(ExecutionContext *ctx, BinOp op, const Value &index, c
bool hasProperty = false;
Value v = getIndexed(idx, &hasProperty);
Value result;
+ op(&result, v, rhs);
+ putIndexed(idx, result);
+ return;
+ }
+ String *name = index.toString(ctx);
+ assert(name);
+ inplaceBinOp(ctx, op, name, rhs);
+}
+
+void Object::inplaceBinOp(ExecutionContext *ctx, BinOpContext op, String *name, const Value &rhs)
+{
+ Value v = get(name);
+ Value result;
+ op(ctx, &result, v, rhs);
+ put(name, result);
+}
+
+void Object::inplaceBinOp(ExecutionContext *ctx, BinOpContext op, const Value &index, const Value &rhs)
+{
+ uint idx = index.asArrayIndex();
+ if (idx < UINT_MAX) {
+ bool hasProperty = false;
+ Value v = getIndexed(idx, &hasProperty);
+ Value result;
op(ctx, &result, v, rhs);
putIndexed(idx, result);
return;
diff --git a/src/qml/qml/v4/qv4object_p.h b/src/qml/qml/v4/qv4object_p.h
index a6f1c04abd..8d064adcaa 100644
--- a/src/qml/qml/v4/qv4object_p.h
+++ b/src/qml/qml/v4/qv4object_p.h
@@ -154,8 +154,10 @@ struct Q_QML_EXPORT Object: Managed {
void putValue(Property *pd, PropertyAttributes attrs, const Value &value);
- void inplaceBinOp(ExecutionContext *ctx, BinOp op, String *name, const Value &rhs);
+ void inplaceBinOp(ExecutionContext *, BinOp op, String *name, const Value &rhs);
void inplaceBinOp(ExecutionContext *ctx, BinOp op, const Value &index, const Value &rhs);
+ void inplaceBinOp(ExecutionContext *ctx, BinOpContext op, String *name, const Value &rhs);
+ void inplaceBinOp(ExecutionContext *ctx, BinOpContext op, const Value &index, const Value &rhs);
/* The spec default: Writable: true, Enumerable: false, Configurable: true */
void defineDefaultProperty(String *name, Value value);
diff --git a/src/qml/qml/v4/qv4runtime.cpp b/src/qml/qml/v4/qv4runtime.cpp
index d974ad5296..6df48fcea6 100644
--- a/src/qml/qml/v4/qv4runtime.cpp
+++ b/src/qml/qml/v4/qv4runtime.cpp
@@ -233,7 +233,10 @@ void __qmljs_inplace_bit_xor_name(ExecutionContext *ctx, String *name, const Val
void __qmljs_inplace_add_name(ExecutionContext *ctx, String *name, const Value &value)
{
- ctx->inplaceBitOp(name, value, __qmljs_add);
+ Value lhs = ctx->getProperty(name);
+ Value result;
+ __qmljs_add(ctx, &result, lhs, value);
+ ctx->setProperty(name, result);
}
void __qmljs_inplace_sub_name(ExecutionContext *ctx, String *name, const Value &value)
diff --git a/src/qml/qml/v4/qv4runtime_p.h b/src/qml/qml/v4/qv4runtime_p.h
index fb346029f0..52a8925a47 100644
--- a/src/qml/qml/v4/qv4runtime_p.h
+++ b/src/qml/qml/v4/qv4runtime_p.h
@@ -187,29 +187,30 @@ void __qmljs_delete_name(QV4::ExecutionContext *ctx, QV4::Value *result, QV4::St
void Q_NORETURN __qmljs_throw(QV4::ExecutionContext*, const QV4::Value &value);
// binary operators
-typedef void (*BinOp)(QV4::ExecutionContext *ctx, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+typedef void (*BinOp)(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+typedef void (*BinOpContext)(QV4::ExecutionContext *ctx, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
void __qmljs_instanceof(QV4::ExecutionContext *ctx, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
void __qmljs_in(QV4::ExecutionContext *ctx, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_bit_or(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_bit_xor(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_bit_and(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_add(QV4::ExecutionContext *ctx, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_sub(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_mul(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_div(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_mod(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_shl(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_shr(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_ushr(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_gt(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_lt(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_ge(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_le(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_eq(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_ne(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_se(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
-void __qmljs_sne(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_add(ExecutionContext *ctx, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_bit_or(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_bit_xor(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_bit_and(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_sub(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_mul(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_div(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_mod(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_shl(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_shr(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_ushr(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_gt(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_lt(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_ge(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_le(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_eq(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_ne(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_se(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
+void __qmljs_sne(QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
void __qmljs_add_helper(QV4::ExecutionContext *ctx, QV4::Value *result, const QV4::Value &left, const QV4::Value &right);
@@ -360,7 +361,7 @@ inline void __qmljs_not(QV4::Value *result, const QV4::Value &value)
}
// binary operators
-inline void __qmljs_bit_or(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_bit_or(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
@@ -374,7 +375,7 @@ inline void __qmljs_bit_or(QV4::ExecutionContext *, QV4::Value *result, const QV
*result = QV4::Value::fromInt32(lval | rval);
}
-inline void __qmljs_bit_xor(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_bit_xor(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
@@ -388,7 +389,7 @@ inline void __qmljs_bit_xor(QV4::ExecutionContext *, QV4::Value *result, const Q
*result = QV4::Value::fromInt32(lval ^ rval);
}
-inline void __qmljs_bit_and(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_bit_and(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
@@ -419,7 +420,7 @@ inline void __qmljs_add(QV4::ExecutionContext *ctx, QV4::Value *result, const QV
__qmljs_add_helper(ctx, result, left, right);
}
-inline void __qmljs_sub(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_sub(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
@@ -433,7 +434,7 @@ inline void __qmljs_sub(QV4::ExecutionContext *, QV4::Value *result, const QV4::
*result = QV4::Value::fromDouble(lval - rval);
}
-inline void __qmljs_mul(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_mul(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
@@ -447,7 +448,7 @@ inline void __qmljs_mul(QV4::ExecutionContext *, QV4::Value *result, const QV4::
*result = QV4::Value::fromDouble(lval * rval);
}
-inline void __qmljs_div(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_div(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
@@ -456,7 +457,7 @@ inline void __qmljs_div(QV4::ExecutionContext *, QV4::Value *result, const QV4::
*result = QV4::Value::fromDouble(lval / rval);
}
-inline void __qmljs_mod(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_mod(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
@@ -473,7 +474,7 @@ inline void __qmljs_mod(QV4::ExecutionContext *, QV4::Value *result, const QV4::
*result = QV4::Value::fromDouble(std::fmod(lval, rval));
}
-inline void __qmljs_shl(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_shl(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
@@ -487,7 +488,7 @@ inline void __qmljs_shl(QV4::ExecutionContext *, QV4::Value *result, const QV4::
*result = QV4::Value::fromInt32(lval << rval);
}
-inline void __qmljs_shr(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_shr(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
@@ -501,7 +502,7 @@ inline void __qmljs_shr(QV4::ExecutionContext *, QV4::Value *result, const QV4::
*result = QV4::Value::fromInt32(lval >> rval);
}
-inline void __qmljs_ushr(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_ushr(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
@@ -520,49 +521,49 @@ inline void __qmljs_ushr(QV4::ExecutionContext *, QV4::Value *result, const QV4:
*result = QV4::Value::fromInt32(res);
}
-inline void __qmljs_gt(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_gt(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
*result = QV4::Value::fromBoolean(__qmljs_cmp_gt(left, right));
}
-inline void __qmljs_lt(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_lt(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
*result = QV4::Value::fromBoolean(__qmljs_cmp_lt(left, right));
}
-inline void __qmljs_ge(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_ge(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
*result = QV4::Value::fromBoolean(__qmljs_cmp_ge(left, right));
}
-inline void __qmljs_le(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_le(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
*result = QV4::Value::fromBoolean(__qmljs_cmp_le(left, right));
}
-inline void __qmljs_eq(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_eq(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
*result = QV4::Value::fromBoolean(__qmljs_cmp_eq(left, right));
}
-inline void __qmljs_ne(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_ne(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
*result = QV4::Value::fromBoolean(!__qmljs_cmp_eq(left, right));
}
-inline void __qmljs_se(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_se(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);
@@ -570,7 +571,7 @@ inline void __qmljs_se(QV4::ExecutionContext *, QV4::Value *result, const QV4::V
*result = QV4::Value::fromBoolean(r);
}
-inline void __qmljs_sne(QV4::ExecutionContext *, QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
+inline void __qmljs_sne(QV4::Value *result, const QV4::Value &left, const QV4::Value &right)
{
TRACE2(left, right);