diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-09-09 20:34:30 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-12 21:52:16 +0200 |
commit | 525c4ee8a9d436a7ce2f785cdb908735271486a4 (patch) | |
tree | 759a89ab696660e1db8f9e31d249942fb4f116e7 | |
parent | 87d2362a6b156eef7b67832c24adc7a2d3fc2d5c (diff) |
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 <simon.hausmann@digia.com>
-rw-r--r-- | src/qml/compiler/qv4instr_moth_p.h | 60 | ||||
-rw-r--r-- | src/qml/compiler/qv4isel_masm.cpp | 51 | ||||
-rw-r--r-- | src/qml/compiler/qv4isel_masm_p.h | 8 | ||||
-rw-r--r-- | src/qml/compiler/qv4isel_moth.cpp | 68 | ||||
-rw-r--r-- | src/qml/compiler/qv4isel_moth_p.h | 8 | ||||
-rw-r--r-- | src/qml/compiler/qv4isel_p.cpp | 34 | ||||
-rw-r--r-- | src/qml/compiler/qv4isel_p.h | 8 | ||||
-rw-r--r-- | src/qml/compiler/qv4jsir.cpp | 4 | ||||
-rw-r--r-- | src/qml/compiler/qv4jsir_p.h | 2 | ||||
-rw-r--r-- | src/qml/compiler/qv4regalloc.cpp | 8 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4runtime.cpp | 160 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4runtime_p.h | 10 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4vme_moth.cpp | 32 |
13 files changed, 0 insertions, 453 deletions
diff --git a/src/qml/compiler/qv4instr_moth_p.h b/src/qml/compiler/qv4instr_moth_p.h index 68bc109eb4..25c8ac512c 100644 --- a/src/qml/compiler/qv4instr_moth_p.h +++ b/src/qml/compiler/qv4instr_moth_p.h @@ -81,14 +81,6 @@ QT_BEGIN_NAMESPACE F(CallBuiltinTypeofSubscript, callBuiltinTypeofSubscript) \ F(CallBuiltinTypeofName, callBuiltinTypeofName) \ F(CallBuiltinTypeofValue, callBuiltinTypeofValue) \ - F(CallBuiltinPostIncMember, callBuiltinPostIncMember) \ - F(CallBuiltinPostIncSubscript, callBuiltinPostIncSubscript) \ - F(CallBuiltinPostIncName, callBuiltinPostIncName) \ - F(CallBuiltinPostIncValue, callBuiltinPostIncValue) \ - F(CallBuiltinPostDecMember, callBuiltinPostDecMember) \ - F(CallBuiltinPostDecSubscript, callBuiltinPostDecSubscript) \ - F(CallBuiltinPostDecName, callBuiltinPostDecName) \ - F(CallBuiltinPostDecValue, callBuiltinPostDecValue) \ F(CallBuiltinDeclareVar, callBuiltinDeclareVar) \ F(CallBuiltinDefineGetterSetter, callBuiltinDefineGetterSetter) \ F(CallBuiltinDefineProperty, callBuiltinDefineProperty) \ @@ -379,50 +371,6 @@ union Instr Param value; Param result; }; - struct instr_callBuiltinPostIncMember { - MOTH_INSTR_HEADER - Param base; - int member; - Param result; - }; - struct instr_callBuiltinPostIncSubscript { - MOTH_INSTR_HEADER - Param base; - Param index; - Param result; - }; - struct instr_callBuiltinPostIncName { - MOTH_INSTR_HEADER - int name; - Param result; - }; - struct instr_callBuiltinPostIncValue { - MOTH_INSTR_HEADER - Param value; - Param result; - }; - struct instr_callBuiltinPostDecMember { - MOTH_INSTR_HEADER - Param base; - int member; - Param result; - }; - struct instr_callBuiltinPostDecSubscript { - MOTH_INSTR_HEADER - Param base; - Param index; - Param result; - }; - struct instr_callBuiltinPostDecName { - MOTH_INSTR_HEADER - int name; - Param result; - }; - struct instr_callBuiltinPostDecValue { - MOTH_INSTR_HEADER - Param value; - Param result; - }; struct instr_callBuiltinDeclareVar { MOTH_INSTR_HEADER int varName; @@ -583,14 +531,6 @@ union Instr instr_callBuiltinTypeofSubscript callBuiltinTypeofSubscript; instr_callBuiltinTypeofName callBuiltinTypeofName; instr_callBuiltinTypeofValue callBuiltinTypeofValue; - instr_callBuiltinPostIncMember callBuiltinPostIncMember; - instr_callBuiltinPostIncSubscript callBuiltinPostIncSubscript; - instr_callBuiltinPostIncName callBuiltinPostIncName; - instr_callBuiltinPostIncValue callBuiltinPostIncValue; - instr_callBuiltinPostDecMember callBuiltinPostDecMember; - instr_callBuiltinPostDecSubscript callBuiltinPostDecSubscript; - instr_callBuiltinPostDecName callBuiltinPostDecName; - instr_callBuiltinPostDecValue callBuiltinPostDecValue; instr_callBuiltinDeclareVar callBuiltinDeclareVar; instr_callBuiltinDefineGetterSetter callBuiltinDefineGetterSetter; instr_callBuiltinDefineProperty callBuiltinDefineProperty; diff --git a/src/qml/compiler/qv4isel_masm.cpp b/src/qml/compiler/qv4isel_masm.cpp index a68b58a2b3..c016d2a6b1 100644 --- a/src/qml/compiler/qv4isel_masm.cpp +++ b/src/qml/compiler/qv4isel_masm.cpp @@ -779,57 +779,6 @@ void InstructionSelection::callBuiltinDeleteValue(V4IR::Temp *result) _as->storeValue(Value::fromBoolean(false), result); } -void InstructionSelection::callBuiltinPostIncrementMember(V4IR::Temp *base, const QString &name, V4IR::Temp *result) -{ - generateFunctionCall(Assembler::Void, __qmljs_builtin_post_increment_member, - Assembler::ContextRegister, Assembler::PointerToValue(result), - Assembler::PointerToValue(base), Assembler::PointerToString(name)); -} - -void InstructionSelection::callBuiltinPostIncrementSubscript(V4IR::Temp *base, V4IR::Temp *index, V4IR::Temp *result) -{ - generateFunctionCall(Assembler::Void, __qmljs_builtin_post_increment_element, - Assembler::ContextRegister, Assembler::PointerToValue(result), - Assembler::Reference(base), Assembler::PointerToValue(index)); -} - -void InstructionSelection::callBuiltinPostIncrementName(const QString &name, V4IR::Temp *result) -{ - generateFunctionCall(Assembler::Void, __qmljs_builtin_post_increment_name, Assembler::ContextRegister, - Assembler::PointerToValue(result), Assembler::PointerToString(name)); -} - -void InstructionSelection::callBuiltinPostIncrementValue(V4IR::Temp *value, V4IR::Temp *result) -{ - generateFunctionCall(Assembler::Void, __qmljs_builtin_post_increment, - Assembler::PointerToValue(result), Assembler::PointerToValue(value)); -} - -void InstructionSelection::callBuiltinPostDecrementMember(V4IR::Temp *base, const QString &name, V4IR::Temp *result) -{ - generateFunctionCall(Assembler::Void, __qmljs_builtin_post_decrement_member, Assembler::ContextRegister, - Assembler::PointerToValue(result), Assembler::Reference(base), Assembler::PointerToString(name)); -} - -void InstructionSelection::callBuiltinPostDecrementSubscript(V4IR::Temp *base, V4IR::Temp *index, V4IR::Temp *result) -{ - generateFunctionCall(Assembler::Void, __qmljs_builtin_post_decrement_element, Assembler::ContextRegister, - Assembler::PointerToValue(result), Assembler::Reference(base), - Assembler::Reference(index)); -} - -void InstructionSelection::callBuiltinPostDecrementName(const QString &name, V4IR::Temp *result) -{ - generateFunctionCall(Assembler::Void, __qmljs_builtin_post_decrement_name, Assembler::ContextRegister, - Assembler::PointerToValue(result), Assembler::PointerToString(name)); -} - -void InstructionSelection::callBuiltinPostDecrementValue(V4IR::Temp *value, V4IR::Temp *result) -{ - generateFunctionCall(Assembler::Void, __qmljs_builtin_post_decrement, - Assembler::PointerToValue(result), Assembler::PointerToValue(value)); -} - void InstructionSelection::callBuiltinThrow(V4IR::Expr *arg) { generateFunctionCall(Assembler::Void, __qmljs_throw, Assembler::ContextRegister, diff --git a/src/qml/compiler/qv4isel_masm_p.h b/src/qml/compiler/qv4isel_masm_p.h index aa7ba86dbb..aad0903413 100644 --- a/src/qml/compiler/qv4isel_masm_p.h +++ b/src/qml/compiler/qv4isel_masm_p.h @@ -1255,14 +1255,6 @@ protected: virtual void callBuiltinDeleteSubscript(V4IR::Temp *base, V4IR::Expr *index, V4IR::Temp *result); virtual void callBuiltinDeleteName(const QString &name, V4IR::Temp *result); virtual void callBuiltinDeleteValue(V4IR::Temp *result); - virtual void callBuiltinPostDecrementMember(V4IR::Temp *base, const QString &name, V4IR::Temp *result); - virtual void callBuiltinPostDecrementSubscript(V4IR::Temp *base, V4IR::Temp *index, V4IR::Temp *result); - virtual void callBuiltinPostDecrementName(const QString &name, V4IR::Temp *result); - virtual void callBuiltinPostDecrementValue(V4IR::Temp *value, V4IR::Temp *result); - virtual void callBuiltinPostIncrementMember(V4IR::Temp *base, const QString &name, V4IR::Temp *result); - virtual void callBuiltinPostIncrementSubscript(V4IR::Temp *base, V4IR::Temp *index, V4IR::Temp *result); - virtual void callBuiltinPostIncrementName(const QString &name, V4IR::Temp *result); - virtual void callBuiltinPostIncrementValue(V4IR::Temp *value, V4IR::Temp *result); virtual void callBuiltinThrow(V4IR::Expr *arg); virtual void callBuiltinFinishTry(); virtual void callBuiltinForeachIteratorObject(V4IR::Temp *arg, V4IR::Temp *result); diff --git a/src/qml/compiler/qv4isel_moth.cpp b/src/qml/compiler/qv4isel_moth.cpp index 8e11fc68d4..fd789a623f 100644 --- a/src/qml/compiler/qv4isel_moth.cpp +++ b/src/qml/compiler/qv4isel_moth.cpp @@ -836,74 +836,6 @@ void InstructionSelection::callBuiltinDeleteValue(V4IR::Temp *result) addInstruction(load); } -void InstructionSelection::callBuiltinPostDecrementMember(V4IR::Temp *base, const QString &name, V4IR::Temp *result) -{ - Instruction::CallBuiltinPostDecMember call; - call.base = getParam(base); - call.member = registerString(name); - call.result = getResultParam(result); - addInstruction(call); -} - -void InstructionSelection::callBuiltinPostDecrementSubscript(V4IR::Temp *base, V4IR::Temp *index, V4IR::Temp *result) -{ - Instruction::CallBuiltinPostDecSubscript call; - call.base = getParam(base); - call.index = getParam(index); - call.result = getResultParam(result); - addInstruction(call); -} - -void InstructionSelection::callBuiltinPostDecrementName(const QString &name, V4IR::Temp *result) -{ - Instruction::CallBuiltinPostDecName call; - call.name = registerString(name); - call.result = getResultParam(result); - addInstruction(call); -} - -void InstructionSelection::callBuiltinPostDecrementValue(V4IR::Temp *value, V4IR::Temp *result) -{ - Instruction::CallBuiltinPostDecValue call; - call.value = getParam(value); - call.result = getResultParam(result); - addInstruction(call); -} - -void InstructionSelection::callBuiltinPostIncrementMember(V4IR::Temp *base, const QString &name, V4IR::Temp *result) -{ - Instruction::CallBuiltinPostIncMember call; - call.base = getParam(base); - call.member = registerString(name); - call.result = getResultParam(result); - addInstruction(call); -} - -void InstructionSelection::callBuiltinPostIncrementSubscript(V4IR::Temp *base, V4IR::Temp *index, V4IR::Temp *result) -{ - Instruction::CallBuiltinPostIncSubscript call; - call.base = getParam(base); - call.index = getParam(index); - call.result = getResultParam(result); - addInstruction(call); -} - -void InstructionSelection::callBuiltinPostIncrementName(const QString &name, V4IR::Temp *result) -{ - Instruction::CallBuiltinPostIncName call; - call.name = registerString(name); - call.result = getResultParam(result); - addInstruction(call); -} - -void InstructionSelection::callBuiltinPostIncrementValue(V4IR::Temp *value, V4IR::Temp *result) -{ - Instruction::CallBuiltinPostIncValue call; - call.value = getParam(value); - call.result = getResultParam(result); - addInstruction(call); -} - void InstructionSelection::callBuiltinThrow(V4IR::Expr *arg) { Instruction::CallBuiltinThrow call; diff --git a/src/qml/compiler/qv4isel_moth_p.h b/src/qml/compiler/qv4isel_moth_p.h index 435ebc41ca..c4b298eaac 100644 --- a/src/qml/compiler/qv4isel_moth_p.h +++ b/src/qml/compiler/qv4isel_moth_p.h @@ -93,14 +93,6 @@ protected: virtual void callBuiltinDeleteSubscript(V4IR::Temp *base, V4IR::Expr *index, V4IR::Temp *result); virtual void callBuiltinDeleteName(const QString &name, V4IR::Temp *result); virtual void callBuiltinDeleteValue(V4IR::Temp *result); - virtual void callBuiltinPostDecrementMember(V4IR::Temp *base, const QString &name, V4IR::Temp *result); - virtual void callBuiltinPostDecrementSubscript(V4IR::Temp *base, V4IR::Temp *index, V4IR::Temp *result); - virtual void callBuiltinPostDecrementName(const QString &name, V4IR::Temp *result); - virtual void callBuiltinPostDecrementValue(V4IR::Temp *value, V4IR::Temp *result); - virtual void callBuiltinPostIncrementMember(V4IR::Temp *base, const QString &name, V4IR::Temp *result); - virtual void callBuiltinPostIncrementSubscript(V4IR::Temp *base, V4IR::Temp *index, V4IR::Temp *result); - virtual void callBuiltinPostIncrementName(const QString &name, V4IR::Temp *result); - virtual void callBuiltinPostIncrementValue(V4IR::Temp *value, V4IR::Temp *result); virtual void callBuiltinThrow(V4IR::Expr *arg); virtual void callBuiltinFinishTry(); virtual void callBuiltinForeachIteratorObject(V4IR::Temp *arg, V4IR::Temp *result); diff --git a/src/qml/compiler/qv4isel_p.cpp b/src/qml/compiler/qv4isel_p.cpp index df879f5796..7989232926 100644 --- a/src/qml/compiler/qv4isel_p.cpp +++ b/src/qml/compiler/qv4isel_p.cpp @@ -279,40 +279,6 @@ void IRDecoder::callBuiltin(V4IR::Call *call, V4IR::Temp *result) } } break; - case V4IR::Name::builtin_postincrement: { - if (V4IR::Member *m = call->args->expr->asMember()) { - callBuiltinPostIncrementMember(m->base->asTemp(), *m->name, result); - return; - } else if (V4IR::Subscript *ss = call->args->expr->asSubscript()) { - callBuiltinPostIncrementSubscript(ss->base->asTemp(), ss->index->asTemp(), result); - return; - } else if (V4IR::Name *n = call->args->expr->asName()) { - callBuiltinPostIncrementName(*n->id, result); - return; - } else if (V4IR::Temp *arg = call->args->expr->asTemp()){ - assert(arg != 0); - callBuiltinPostIncrementValue(arg, result); - return; - } - } break; - - case V4IR::Name::builtin_postdecrement: { - if (V4IR::Member *m = call->args->expr->asMember()) { - callBuiltinPostDecrementMember(m->base->asTemp(), *m->name, result); - return; - } else if (V4IR::Subscript *ss = call->args->expr->asSubscript()) { - callBuiltinPostDecrementSubscript(ss->base->asTemp(), ss->index->asTemp(), result); - return; - } else if (V4IR::Name *n = call->args->expr->asName()) { - callBuiltinPostDecrementName(*n->id, result); - return; - } else if (V4IR::Temp *arg = call->args->expr->asTemp()){ - assert(arg != 0); - callBuiltinPostDecrementValue(arg, result); - return; - } - } break; - case V4IR::Name::builtin_throw: { V4IR::Expr *arg = call->args->expr; assert(arg->asTemp() || arg->asConst()); 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; diff --git a/src/qml/compiler/qv4jsir.cpp b/src/qml/compiler/qv4jsir.cpp index e70cf100ce..74f31bd83e 100644 --- a/src/qml/compiler/qv4jsir.cpp +++ b/src/qml/compiler/qv4jsir.cpp @@ -398,10 +398,6 @@ static const char *builtin_to_string(Name::Builtin b) return "builtin_typeof"; case Name::builtin_delete: return "builtin_delete"; - case Name::builtin_postincrement: - return "builtin_postincrement"; - case Name::builtin_postdecrement: - return "builtin_postdecrement"; case Name::builtin_throw: return "builtin_throw"; case Name::builtin_finish_try: diff --git a/src/qml/compiler/qv4jsir_p.h b/src/qml/compiler/qv4jsir_p.h index cf82e28f1e..4ccf5de139 100644 --- a/src/qml/compiler/qv4jsir_p.h +++ b/src/qml/compiler/qv4jsir_p.h @@ -311,8 +311,6 @@ struct Name: Expr { builtin_invalid, builtin_typeof, builtin_delete, - builtin_postincrement, // TODO: remove - builtin_postdecrement, // TODO: remove builtin_throw, builtin_finish_try, builtin_foreach_iterator_object, diff --git a/src/qml/compiler/qv4regalloc.cpp b/src/qml/compiler/qv4regalloc.cpp index 3428c13dbc..3b0ea8b171 100644 --- a/src/qml/compiler/qv4regalloc.cpp +++ b/src/qml/compiler/qv4regalloc.cpp @@ -190,14 +190,6 @@ protected: // IRDecoder virtual void callBuiltinDeleteSubscript(V4IR::Temp *, V4IR::Expr *, V4IR::Temp *) {} virtual void callBuiltinDeleteName(const QString &, V4IR::Temp *) {} virtual void callBuiltinDeleteValue(V4IR::Temp *) {} - virtual void callBuiltinPostDecrementMember(V4IR::Temp *, const QString &, V4IR::Temp *) {} - virtual void callBuiltinPostDecrementSubscript(V4IR::Temp *, V4IR::Temp *, V4IR::Temp *) {} - virtual void callBuiltinPostDecrementName(const QString &, V4IR::Temp *) {} - virtual void callBuiltinPostDecrementValue(V4IR::Temp *, V4IR::Temp *) {} - virtual void callBuiltinPostIncrementMember(V4IR::Temp *, const QString &, V4IR::Temp *) {} - virtual void callBuiltinPostIncrementSubscript(V4IR::Temp *, V4IR::Temp *, V4IR::Temp *) {} - virtual void callBuiltinPostIncrementName(const QString &, V4IR::Temp *) {} - virtual void callBuiltinPostIncrementValue(V4IR::Temp *, V4IR::Temp *) {} virtual void callBuiltinThrow(V4IR::Expr *) {} virtual void callBuiltinFinishTry() {} virtual void callBuiltinForeachIteratorObject(V4IR::Temp *, V4IR::Temp *) {} diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp index 76ab06cabe..e7760548a0 100644 --- a/src/qml/jsruntime/qv4runtime.cpp +++ b/src/qml/jsruntime/qv4runtime.cpp @@ -1155,166 +1155,6 @@ QV4::ReturnedValue __qmljs_builtin_typeof_element(ExecutionContext *context, con return __qmljs_builtin_typeof(context, prop); } -void __qmljs_builtin_post_increment(ValueRef result, ValueRef val) -{ - if (val->isInteger() && val->integerValue() < INT_MAX) { - if (result) - *result = *val; - val->int_32 += 1; - return; - } - - double d = val->toNumber(); - *val = Value::fromDouble(d + 1); - if (result) - *result = Value::fromDouble(d); -} - -void __qmljs_builtin_post_increment_name(ExecutionContext *context, ValueRef result, String *name) -{ - Value v = context->getProperty(name); - - if (v.isInteger() && v.integerValue() < INT_MAX) { - if (result) - *result = v; - v.int_32 += 1; - } else { - double d = v.toNumber(); - if (result) - *result = Value::fromDouble(d); - v = Value::fromDouble(d + 1); - } - - context->setProperty(name, v); -} - -void __qmljs_builtin_post_increment_member(ExecutionContext *context, ValueRef result, const ValueRef base, String *name) -{ - Object *o = base->toObject(context); - - Value v = o->get(name); - - if (v.isInteger() && v.integerValue() < INT_MAX) { - if (result) - *result = v; - v.int_32 += 1; - } else { - double d = v.toNumber(); - if (result) - *result = Value::fromDouble(d); - v = Value::fromDouble(d + 1); - } - - o->put(name, v); -} - -void __qmljs_builtin_post_increment_element(ExecutionContext *context, ValueRef result, const ValueRef base, const ValueRef index) -{ - Object *o = base->toObject(context); - - uint idx = index->asArrayIndex(); - - if (idx == UINT_MAX) { - String *s = index->toString(context); - return __qmljs_builtin_post_increment_member(context, result, base, s); - } - - Value v = o->getIndexed(idx); - - if (v.isInteger() && v.integerValue() < INT_MAX) { - if (result) - *result = v; - v.int_32 += 1; - } else { - double d = v.toNumber(); - if (result) - *result = Value::fromDouble(d); - v = Value::fromDouble(d + 1); - } - - o->putIndexed(idx, v); -} - -void __qmljs_builtin_post_decrement(ValueRef result, ValueRef val) -{ - if (val->isInteger() && val->integerValue() > INT_MIN) { - if (result) - *result = *val; - val->int_32 -= 1; - return; - } - - double d = val->toNumber(); - *val = Value::fromDouble(d - 1); - if (result) - *result = Value::fromDouble(d); -} - -void __qmljs_builtin_post_decrement_name(ExecutionContext *context, ValueRef result, String *name) -{ - Value v = context->getProperty(name); - - if (v.isInteger() && v.integerValue() > INT_MIN) { - if (result) - *result = v; - v.int_32 -= 1; - } else { - double d = v.toNumber(); - if (result) - *result = Value::fromDouble(d); - v = Value::fromDouble(d - 1); - } - - context->setProperty(name, v); -} - -void __qmljs_builtin_post_decrement_member(ExecutionContext *context, ValueRef result, const ValueRef base, String *name) -{ - Object *o = base->toObject(context); - - Value v = o->get(name); - - if (v.isInteger() && v.integerValue() > INT_MIN) { - if (result) - *result = v; - v.int_32 -= 1; - } else { - double d = v.toNumber(); - if (result) - *result = Value::fromDouble(d); - v = Value::fromDouble(d - 1); - } - - o->put(name, v); -} - -void __qmljs_builtin_post_decrement_element(ExecutionContext *context, ValueRef result, const ValueRef base, const ValueRef index) -{ - Object *o = base->toObject(context); - - uint idx = index->asArrayIndex(); - - if (idx == UINT_MAX) { - String *s = index->toString(context); - return __qmljs_builtin_post_decrement_member(context, result, base, s); - } - - Value v = o->getIndexed(idx); - - if (v.isInteger() && v.integerValue() > INT_MIN) { - if (result) - *result = v; - v.int_32 -= 1; - } else { - double d = v.toNumber(); - if (result) - *result = Value::fromDouble(d); - v = Value::fromDouble(d - 1); - } - - o->putIndexed(idx, v); -} - ExecutionContext *__qmljs_builtin_push_with_scope(const ValueRef o, ExecutionContext *ctx) { Object *obj = o->toObject(ctx); diff --git a/src/qml/jsruntime/qv4runtime_p.h b/src/qml/jsruntime/qv4runtime_p.h index c3ab8fe932..343f3c4611 100644 --- a/src/qml/jsruntime/qv4runtime_p.h +++ b/src/qml/jsruntime/qv4runtime_p.h @@ -124,16 +124,6 @@ QV4::ReturnedValue __qmljs_builtin_typeof_name(QV4::ExecutionContext *context, Q QV4::ReturnedValue __qmljs_builtin_typeof_member(QV4::ExecutionContext* context, const QV4::ValueRef base, QV4::String *name); QV4::ReturnedValue __qmljs_builtin_typeof_element(QV4::ExecutionContext* context, const QV4::ValueRef base, const QV4::ValueRef index); -void __qmljs_builtin_post_increment(QV4::ValueRef result, QV4::ValueRef val); -void __qmljs_builtin_post_increment_name(QV4::ExecutionContext *context, QV4::ValueRef result, QV4::String *name); -void __qmljs_builtin_post_increment_member(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::ValueRef base, QV4::String *name); -void __qmljs_builtin_post_increment_element(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::ValueRef base, const QV4::ValueRef index); - -void __qmljs_builtin_post_decrement(QV4::ValueRef result, QV4::ValueRef val); -void __qmljs_builtin_post_decrement_name(QV4::ExecutionContext *context, QV4::ValueRef result, QV4::String *name); -void __qmljs_builtin_post_decrement_member(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::ValueRef base, QV4::String *name); -void __qmljs_builtin_post_decrement_element(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::ValueRef base, const QV4::ValueRef index); - void Q_NORETURN __qmljs_builtin_rethrow(QV4::ExecutionContext *context); QV4::ExecutionContext *__qmljs_builtin_push_with_scope(const QV4::ValueRef o, QV4::ExecutionContext *ctx); QV4::ExecutionContext *__qmljs_builtin_push_catch_scope(QV4::String *exceptionVarName, const QV4::ValueRef exceptionValue, QV4::ExecutionContext *ctx); diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp index bf86345e27..96022cfac7 100644 --- a/src/qml/jsruntime/qv4vme_moth.cpp +++ b/src/qml/jsruntime/qv4vme_moth.cpp @@ -437,38 +437,6 @@ QV4::Value VME::run(QV4::ExecutionContext *context, const uchar *&code, VALUE(instr.result) = __qmljs_builtin_typeof(context, VALUEPTR(instr.value)).get(); MOTH_END_INSTR(CallBuiltinTypeofValue) - MOTH_BEGIN_INSTR(CallBuiltinPostIncMember) - __qmljs_builtin_post_increment_member(context, VALUEPTR(instr.result), VALUEPTR(instr.base), runtimeStrings[instr.member]); - MOTH_END_INSTR(CallBuiltinTypeofMember) - - MOTH_BEGIN_INSTR(CallBuiltinPostIncSubscript) - __qmljs_builtin_post_increment_element(context, VALUEPTR(instr.result), VALUEPTR(instr.base), VALUEPTR(instr.index)); - MOTH_END_INSTR(CallBuiltinTypeofSubscript) - - MOTH_BEGIN_INSTR(CallBuiltinPostIncName) - __qmljs_builtin_post_increment_name(context, VALUEPTR(instr.result), runtimeStrings[instr.name]); - MOTH_END_INSTR(CallBuiltinTypeofName) - - MOTH_BEGIN_INSTR(CallBuiltinPostIncValue) - __qmljs_builtin_post_increment(VALUEPTR(instr.result), VALUEPTR(instr.value)); - MOTH_END_INSTR(CallBuiltinTypeofValue) - - MOTH_BEGIN_INSTR(CallBuiltinPostDecMember) - __qmljs_builtin_post_decrement_member(context, VALUEPTR(instr.result), VALUEPTR(instr.base), runtimeStrings[instr.member]); - MOTH_END_INSTR(CallBuiltinTypeofMember) - - MOTH_BEGIN_INSTR(CallBuiltinPostDecSubscript) - __qmljs_builtin_post_decrement_element(context, VALUEPTR(instr.result), VALUEPTR(instr.base), VALUEPTR(instr.index)); - MOTH_END_INSTR(CallBuiltinTypeofSubscript) - - MOTH_BEGIN_INSTR(CallBuiltinPostDecName) - __qmljs_builtin_post_decrement_name(context, VALUEPTR(instr.result), runtimeStrings[instr.name]); - MOTH_END_INSTR(CallBuiltinTypeofName) - - MOTH_BEGIN_INSTR(CallBuiltinPostDecValue) - __qmljs_builtin_post_decrement(VALUEPTR(instr.result), VALUEPTR(instr.value)); - MOTH_END_INSTR(CallBuiltinTypeofValue) - MOTH_BEGIN_INSTR(CallBuiltinDeclareVar) __qmljs_builtin_declare_var(context, instr.isDeletable, runtimeStrings[instr.varName]); MOTH_END_INSTR(CallBuiltinDeclareVar) |