diff options
author | Lars Knoll <lars.knoll@digia.com> | 2014-03-10 19:58:05 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-11 08:37:01 +0100 |
commit | 8ed6c62dc76ebc2e510ecc028c34c160018af86c (patch) | |
tree | 335e73bcdb52b1a8300a67c1f91299e7bc97972a /src/qml/jsruntime/qv4runtime_p.h | |
parent | dfed088a50298fe4a9d0eb8a9d0a2711dfc206c1 (diff) |
Cleanup our runtime methods
Move all our runtime methods into the QV4::Runtime
struct and give them nicer names without underscores.
Sort them logically and remove a few unused methods.
Change-Id: Ib69b71764ff194d0ba211aac581f9a99734d8180
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4runtime_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4runtime_p.h | 416 |
1 files changed, 205 insertions, 211 deletions
diff --git a/src/qml/jsruntime/qv4runtime_p.h b/src/qml/jsruntime/qv4runtime_p.h index dbdb891328..4e28441e62 100644 --- a/src/qml/jsruntime/qv4runtime_p.h +++ b/src/qml/jsruntime/qv4runtime_p.h @@ -97,184 +97,178 @@ enum TypeHint { STRING_HINT }; -struct Function; -struct Object; -struct String; -struct ExecutionContext; -struct FunctionObject; -struct BooleanObject; -struct NumberObject; -struct StringObject; -struct DateObject; -struct RegExpObject; -struct ArrayObject; -struct ErrorObject; -struct ExecutionEngine; -struct InternalClass; - // This is a trick to tell the code generators that functions taking a NoThrowContext won't // throw exceptions and therefore don't need a check after the call. struct NoThrowContext : public ExecutionContext { }; -// context -QV4::ReturnedValue __qmljs_call_activation_property(QV4::ExecutionContext *, const QV4::StringRef name, CallDataRef callData); -QV4::ReturnedValue __qmljs_call_property(QV4::ExecutionContext *context, const QV4::StringRef name, CallDataRef callData); -QV4::ReturnedValue __qmljs_call_property_lookup(ExecutionContext *context, uint index, CallDataRef callData); -QV4::ReturnedValue __qmljs_call_element(ExecutionContext *context, const ValueRef index, CallDataRef callData); -QV4::ReturnedValue __qmljs_call_value(QV4::ExecutionContext *context, const QV4::ValueRef func, CallDataRef callData); - -QV4::ReturnedValue __qmljs_construct_activation_property(QV4::ExecutionContext *, const QV4::StringRef name, CallDataRef callData); -QV4::ReturnedValue __qmljs_construct_property(QV4::ExecutionContext *context, const QV4::StringRef name, CallDataRef callData); -QV4::ReturnedValue __qmljs_construct_property_lookup(ExecutionContext *context, uint index, CallDataRef callData); -QV4::ReturnedValue __qmljs_construct_value(QV4::ExecutionContext *context, const QV4::ValueRef func, CallDataRef callData); - -QV4::ReturnedValue __qmljs_builtin_typeof(QV4::ExecutionContext *ctx, const QV4::ValueRef val); -QV4::ReturnedValue __qmljs_builtin_typeof_name(QV4::ExecutionContext *context, const QV4::StringRef name); -QV4::ReturnedValue __qmljs_builtin_typeof_member(QV4::ExecutionContext* context, const QV4::ValueRef base, const QV4::StringRef name); -QV4::ReturnedValue __qmljs_builtin_typeof_element(QV4::ExecutionContext* context, const QV4::ValueRef base, const QV4::ValueRef index); - -void __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::ExecutionContext *ctx, const QV4::StringRef exceptionVarName); -QV4::ExecutionContext *__qmljs_builtin_pop_scope(QV4::ExecutionContext *ctx); -ReturnedValue __qmljs_builtin_unwind_exception(ExecutionContext *ctx); -void __qmljs_builtin_declare_var(QV4::ExecutionContext *ctx, bool deletable, const QV4::StringRef name); -QV4::ReturnedValue __qmljs_builtin_define_array(QV4::ExecutionContext *ctx, Value *values, uint length); -QV4::ReturnedValue __qmljs_builtin_define_object_literal(QV4::ExecutionContext *ctx, const QV4::Value *args, int classId, int arrayValueCount, int arrayGetterSetterCountAndFlags); -QV4::ReturnedValue __qmljs_builtin_setup_arguments_object(ExecutionContext *ctx); -void __qmljs_builtin_convert_this_to_object(ExecutionContext *ctx); - -QV4::ReturnedValue __qmljs_value_from_string(QV4::String *string); -QV4::ReturnedValue __qmljs_lookup_runtime_regexp(QV4::ExecutionContext *ctx, int id); - -// constructors -QV4::ReturnedValue __qmljs_init_closure(QV4::ExecutionContext *ctx, int functionId); - -// strings -Q_QML_EXPORT double __qmljs_string_to_number(const QString &s); -Returned<String> *__qmljs_string_from_number(QV4::ExecutionContext *ctx, double number); - -// objects -Q_QML_EXPORT ReturnedValue __qmljs_object_default_value(QV4::Object *object, int typeHint); -void __qmljs_set_activation_property(QV4::ExecutionContext *ctx, const QV4::StringRef name, const QV4::ValueRef value); -void __qmljs_set_property(QV4::ExecutionContext *ctx, const QV4::ValueRef object, const QV4::StringRef name, const QV4::ValueRef value); -QV4::ReturnedValue __qmljs_get_property(QV4::ExecutionContext *ctx, const QV4::ValueRef object, const QV4::StringRef name); -QV4::ReturnedValue __qmljs_get_activation_property(QV4::ExecutionContext *ctx, const QV4::StringRef name); - -ReturnedValue __qmljs_call_global_lookup(QV4::ExecutionContext *context, uint index, CallDataRef callData); -QV4::ReturnedValue __qmljs_construct_global_lookup(QV4::ExecutionContext *context, uint index, CallDataRef callData); - - -QV4::ReturnedValue __qmljs_get_element(QV4::ExecutionContext *ctx, const QV4::ValueRef object, const QV4::ValueRef index); -void __qmljs_set_element(QV4::ExecutionContext *ctx, const QV4::ValueRef object, const QV4::ValueRef index, const QV4::ValueRef value); - -QV4::ReturnedValue __qmljs_get_id_array(NoThrowContext *ctx); -QV4::ReturnedValue __qmljs_get_imported_scripts(NoThrowContext *ctx); -QV4::ReturnedValue __qmljs_get_context_object(NoThrowContext *ctx); -QV4::ReturnedValue __qmljs_get_scope_object(NoThrowContext *ctx); -QV4::ReturnedValue __qmljs_get_qobject_property(ExecutionContext *ctx, const ValueRef object, int propertyIndex, bool captureRequired); -QV4::ReturnedValue __qmljs_get_attached_property(ExecutionContext *ctx, int attachedPropertiesId, int propertyIndex); -void __qmljs_set_qobject_property(ExecutionContext *ctx, const ValueRef object, int propertyIndex, const ValueRef value); -QV4::ReturnedValue __qmljs_get_qml_singleton(NoThrowContext *ctx, const QV4::StringRef name); - -// For each -QV4::ReturnedValue __qmljs_foreach_iterator_object(QV4::ExecutionContext *ctx, const QV4::ValueRef in); -QV4::ReturnedValue __qmljs_foreach_next_property_name(const ValueRef foreach_iterator); +struct Q_QML_EXPORT Runtime { + // call + static ReturnedValue callGlobalLookup(ExecutionContext *context, uint index, CallDataRef callData); + static ReturnedValue callActivationProperty(ExecutionContext *, const StringRef name, CallDataRef callData); + static ReturnedValue callProperty(ExecutionContext *context, const StringRef name, CallDataRef callData); + static ReturnedValue callPropertyLookup(ExecutionContext *context, uint index, CallDataRef callData); + static ReturnedValue callElement(ExecutionContext *context, const ValueRef index, CallDataRef callData); + static ReturnedValue callValue(ExecutionContext *context, const ValueRef func, CallDataRef callData); + + // construct + static ReturnedValue constructGlobalLookup(ExecutionContext *context, uint index, CallDataRef callData); + static ReturnedValue constructActivationProperty(ExecutionContext *, const StringRef name, CallDataRef callData); + static ReturnedValue constructProperty(ExecutionContext *context, const StringRef name, CallDataRef callData); + static ReturnedValue constructPropertyLookup(ExecutionContext *context, uint index, CallDataRef callData); + static ReturnedValue constructValue(ExecutionContext *context, const ValueRef func, CallDataRef callData); + + // set & get + static void setActivationProperty(ExecutionContext *ctx, const StringRef name, const ValueRef value); + static void setProperty(ExecutionContext *ctx, const ValueRef object, const StringRef name, const ValueRef value); + static void setElement(ExecutionContext *ctx, const ValueRef object, const ValueRef index, const ValueRef value); + static ReturnedValue getProperty(ExecutionContext *ctx, const ValueRef object, const StringRef name); + static ReturnedValue getActivationProperty(ExecutionContext *ctx, const StringRef name); + static ReturnedValue getElement(ExecutionContext *ctx, const ValueRef object, const ValueRef index); + + // typeof + static ReturnedValue typeofValue(ExecutionContext *ctx, const ValueRef val); + static ReturnedValue typeofName(ExecutionContext *context, const StringRef name); + static ReturnedValue typeofMember(ExecutionContext* context, const ValueRef base, const StringRef name); + static ReturnedValue typeofElement(ExecutionContext* context, const ValueRef base, const ValueRef index); + + // delete + static ReturnedValue deleteElement(ExecutionContext *ctx, const ValueRef base, const ValueRef index); + static ReturnedValue deleteMember(ExecutionContext *ctx, const ValueRef base, const StringRef name); + static ReturnedValue deleteName(ExecutionContext *ctx, const StringRef name); + + // exceptions & scopes + static void throwException(ExecutionContext*, const ValueRef value); + static ReturnedValue unwindException(ExecutionContext *ctx); + static ExecutionContext *pushWithScope(const ValueRef o, ExecutionContext *ctx); + static ExecutionContext *pushCatchScope(ExecutionContext *ctx, const StringRef exceptionVarName); + static ExecutionContext *popScope(ExecutionContext *ctx); + + // closures + static ReturnedValue closure(ExecutionContext *ctx, int functionId); + + // function header + static void declareVar(ExecutionContext *ctx, bool deletable, const StringRef name); + static ReturnedValue setupArgumentsObject(ExecutionContext *ctx); + static void convertThisToObject(ExecutionContext *ctx); + + // literals + static ReturnedValue arrayLiteral(ExecutionContext *ctx, Value *values, uint length); + static ReturnedValue objectLiteral(ExecutionContext *ctx, const Value *args, int classId, int arrayValueCount, int arrayGetterSetterCountAndFlags); + static ReturnedValue regexpLiteral(ExecutionContext *ctx, int id); + + // foreach + static ReturnedValue foreachIterator(ExecutionContext *ctx, const ValueRef in); + static ReturnedValue foreachNextPropertyName(const ValueRef foreach_iterator); + + // unary operators + typedef ReturnedValue (*UnaryOperation)(const ValueRef); + static ReturnedValue uPlus(const ValueRef value); + static ReturnedValue uMinus(const ValueRef value); + static ReturnedValue uNot(const ValueRef value); + static ReturnedValue complement(const ValueRef value); + static ReturnedValue increment(const ValueRef value); + static ReturnedValue decrement(const ValueRef value); + + // binary operators + typedef ReturnedValue (*BinaryOperation)(const ValueRef left, const ValueRef right); + typedef ReturnedValue (*BinaryOperationContext)(ExecutionContext *ctx, const ValueRef left, const ValueRef right); + + static ReturnedValue instanceof(ExecutionContext *ctx, const ValueRef left, const ValueRef right); + static ReturnedValue in(ExecutionContext *ctx, const ValueRef left, const ValueRef right); + static ReturnedValue add(ExecutionContext *ctx, const ValueRef left, const ValueRef right); + static ReturnedValue addString(ExecutionContext *ctx, const ValueRef left, const ValueRef right); + static ReturnedValue bitOr(const ValueRef left, const ValueRef right); + static ReturnedValue bitXor(const ValueRef left, const ValueRef right); + static ReturnedValue bitAnd(const ValueRef left, const ValueRef right); + static ReturnedValue sub(const ValueRef left, const ValueRef right); + static ReturnedValue mul(const ValueRef left, const ValueRef right); + static ReturnedValue div(const ValueRef left, const ValueRef right); + static ReturnedValue mod(const ValueRef left, const ValueRef right); + static ReturnedValue shl(const ValueRef left, const ValueRef right); + static ReturnedValue shr(const ValueRef left, const ValueRef right); + static ReturnedValue ushr(const ValueRef left, const ValueRef right); + static ReturnedValue greaterThan(const ValueRef left, const ValueRef right); + static ReturnedValue lessThan(const ValueRef left, const ValueRef right); + static ReturnedValue greaterEqual(const ValueRef left, const ValueRef right); + static ReturnedValue lessEqual(const ValueRef left, const ValueRef right); + static ReturnedValue equal(const ValueRef left, const ValueRef right); + static ReturnedValue notEqual(const ValueRef left, const ValueRef right); + static ReturnedValue strictEqual(const ValueRef left, const ValueRef right); + static ReturnedValue strictNotEqual(const ValueRef left, const ValueRef right); + + // comparisons + typedef Bool (*CompareOperation)(const ValueRef left, const ValueRef right); + static Bool compareGreaterThan(const ValueRef l, const ValueRef r); + static Bool compareLessThan(const ValueRef l, const ValueRef r); + static Bool compareGreaterEqual(const ValueRef l, const ValueRef r); + static Bool compareLessEqual(const ValueRef l, const ValueRef r); + static Bool compareEqual(const ValueRef left, const ValueRef right); + static Bool compareNotEqual(const ValueRef left, const ValueRef right); + static Bool compareStrictEqual(const ValueRef left, const ValueRef right); + static Bool compareStrictNotEqual(const ValueRef left, const ValueRef right); + + typedef Bool (*CompareOperationContext)(ExecutionContext *ctx, const ValueRef left, const ValueRef right); + static Bool compareInstanceof(ExecutionContext *ctx, const ValueRef left, const ValueRef right); + static Bool compareIn(ExecutionContext *ctx, const ValueRef left, const ValueRef right); + + // conversions + static Bool toBoolean(const ValueRef value); + static ReturnedValue toDouble(const ValueRef value); + static int toInt(const ValueRef value); + static int doubleToInt(const double &d); + static unsigned toUInt(const ValueRef value); + static unsigned doubleToUInt(const double &d); + + // qml + static ReturnedValue getQmlIdArray(NoThrowContext *ctx); + static ReturnedValue getQmlImportedScripts(NoThrowContext *ctx); + static ReturnedValue getQmlContextObject(NoThrowContext *ctx); + static ReturnedValue getQmlScopeObject(NoThrowContext *ctx); + static ReturnedValue getQmlSingleton(NoThrowContext *ctx, const StringRef name); + static ReturnedValue getQmlAttachedProperty(ExecutionContext *ctx, int attachedPropertiesId, int propertyIndex); + static ReturnedValue getQmlQObjectProperty(ExecutionContext *ctx, const ValueRef object, int propertyIndex, bool captureRequired); + static void setQmlQObjectProperty(ExecutionContext *ctx, const ValueRef object, int propertyIndex, const ValueRef value); +}; -// type conversion and testing -QV4::ReturnedValue __qmljs_to_primitive(const ValueRef value, int typeHint); -Q_QML_EXPORT QV4::Bool __qmljs_to_boolean(const QV4::ValueRef value); -double __qmljs_to_number(const QV4::ValueRef value); -QV4::ReturnedValue __qmljs_to_string(QV4::ExecutionContext *ctx, const ValueRef value); -Q_QML_EXPORT Returned<String> *__qmljs_convert_to_string(QV4::ExecutionContext *ctx, const ValueRef value); -void __qmljs_numberToString(QString *result, double num, int radix = 10); -ReturnedValue __qmljs_to_object(QV4::ExecutionContext *ctx, const ValueRef value); -Returned<Object> *__qmljs_convert_to_object(QV4::ExecutionContext *ctx, const ValueRef value); - -QV4::Bool __qmljs_equal_helper(const ValueRef x, const ValueRef y); -Q_QML_EXPORT QV4::Bool __qmljs_strict_equal(const ValueRef x, const ValueRef y); - -// unary operators -typedef QV4::ReturnedValue (*UnaryOpName)(const QV4::ValueRef); -QV4::ReturnedValue __qmljs_uplus(const QV4::ValueRef value); -QV4::ReturnedValue __qmljs_uminus(const QV4::ValueRef value); -QV4::ReturnedValue __qmljs_compl(const QV4::ValueRef value); -QV4::ReturnedValue __qmljs_not(const QV4::ValueRef value); -QV4::ReturnedValue __qmljs_increment(const QV4::ValueRef value); -QV4::ReturnedValue __qmljs_decrement(const QV4::ValueRef value); - -Q_QML_EXPORT ReturnedValue __qmljs_value_to_double(const ValueRef value); -Q_QML_EXPORT int __qmljs_value_to_int32(const ValueRef value); -Q_QML_EXPORT int __qmljs_double_to_int32(const double &d); -Q_QML_EXPORT unsigned __qmljs_value_to_uint32(const ValueRef value); -Q_QML_EXPORT unsigned __qmljs_double_to_uint32(const double &d); - -QV4::ReturnedValue __qmljs_delete_subscript(QV4::ExecutionContext *ctx, const QV4::ValueRef base, const QV4::ValueRef index); -ReturnedValue __qmljs_delete_member(QV4::ExecutionContext *ctx, const QV4::ValueRef base, const QV4::StringRef name); -ReturnedValue __qmljs_delete_name(QV4::ExecutionContext *ctx, const QV4::StringRef name); - -void __qmljs_throw(QV4::ExecutionContext*, const QV4::ValueRef value); +struct Q_QML_EXPORT RuntimeHelpers { + static ReturnedValue objectDefaultValue(Object *object, int typeHint); + static ReturnedValue toPrimitive(const ValueRef value, int typeHint); + + static double stringToNumber(const QString &s); + static Returned<String> *stringFromNumber(ExecutionContext *ctx, double number); + static double toNumber(const ValueRef value); + static void numberToString(QString *result, double num, int radix = 10); + + static ReturnedValue toString(ExecutionContext *ctx, const ValueRef value); + static Returned<String> *convertToString(ExecutionContext *ctx, const ValueRef value); + + static ReturnedValue toObject(ExecutionContext *ctx, const ValueRef value); + static Returned<Object> *convertToObject(ExecutionContext *ctx, const ValueRef value); + + static Bool equalHelper(const ValueRef x, const ValueRef y); + static Bool strictEqual(const ValueRef x, const ValueRef y); + + static ReturnedValue addHelper(ExecutionContext *ctx, const ValueRef left, const ValueRef right); +}; -// binary operators -typedef QV4::ReturnedValue (*BinOp)(const QV4::ValueRef left, const QV4::ValueRef right); -typedef QV4::ReturnedValue (*BinOpContext)(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); - -QV4::ReturnedValue __qmljs_instanceof(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_in(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_add(ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_add_string(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_bit_or(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_bit_xor(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_bit_and(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_sub(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_mul(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_div(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_mod(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_shl(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_shr(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_ushr(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_gt(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_lt(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_ge(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_le(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_eq(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_ne(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_se(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::ReturnedValue __qmljs_sne(const QV4::ValueRef left, const QV4::ValueRef right); - -QV4::ReturnedValue __qmljs_add_helper(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); - -typedef QV4::Bool (*CmpOp)(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::Bool __qmljs_cmp_gt(const QV4::ValueRef l, const QV4::ValueRef r); -QV4::Bool __qmljs_cmp_lt(const QV4::ValueRef l, const QV4::ValueRef r); -QV4::Bool __qmljs_cmp_ge(const QV4::ValueRef l, const QV4::ValueRef r); -QV4::Bool __qmljs_cmp_le(const QV4::ValueRef l, const QV4::ValueRef r); -QV4::Bool __qmljs_cmp_eq(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::Bool __qmljs_cmp_ne(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::Bool __qmljs_cmp_se(const QV4::ValueRef left, const QV4::ValueRef right); -QV4::Bool __qmljs_cmp_sne(const QV4::ValueRef left, const QV4::ValueRef right); - -typedef QV4::Bool (*CmpOpContext)(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); -QV4::Bool __qmljs_cmp_instanceof(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); -QV4::Bool __qmljs_cmp_in(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right); // type conversion and testing -inline ReturnedValue __qmljs_to_primitive(const QV4::ValueRef value, int typeHint) +inline ReturnedValue RuntimeHelpers::toPrimitive(const ValueRef value, int typeHint) { - QV4::Object *o = value->asObject(); + Object *o = value->asObject(); if (!o) return value.asReturnedValue(); - return __qmljs_object_default_value(o, typeHint); + return RuntimeHelpers::objectDefaultValue(o, typeHint); } -inline double __qmljs_to_number(const ValueRef value) +inline double RuntimeHelpers::toNumber(const ValueRef value) { return value->toNumber(); } -inline QV4::ReturnedValue __qmljs_uplus(const QV4::ValueRef value) +inline ReturnedValue Runtime::uPlus(const ValueRef value) { TRACE1(value); @@ -287,7 +281,7 @@ inline QV4::ReturnedValue __qmljs_uplus(const QV4::ValueRef value) return Encode(n); } -inline QV4::ReturnedValue __qmljs_uminus(const QV4::ValueRef value) +inline ReturnedValue Runtime::uMinus(const ValueRef value) { TRACE1(value); @@ -295,12 +289,12 @@ inline QV4::ReturnedValue __qmljs_uminus(const QV4::ValueRef value) if (value->isInteger() && value->integerValue()) return Encode(-value->integerValue()); else { - double n = __qmljs_to_number(value); + double n = RuntimeHelpers::toNumber(value); return Encode(-n); } } -inline QV4::ReturnedValue __qmljs_compl(const QV4::ValueRef value) +inline ReturnedValue Runtime::complement(const ValueRef value) { TRACE1(value); @@ -308,7 +302,7 @@ inline QV4::ReturnedValue __qmljs_compl(const QV4::ValueRef value) return Encode((int)~n); } -inline QV4::ReturnedValue __qmljs_not(const QV4::ValueRef value) +inline ReturnedValue Runtime::uNot(const ValueRef value) { TRACE1(value); @@ -317,7 +311,7 @@ inline QV4::ReturnedValue __qmljs_not(const QV4::ValueRef value) } // binary operators -inline ReturnedValue __qmljs_bit_or(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::bitOr(const ValueRef left, const ValueRef right) { TRACE2(left, right); @@ -326,7 +320,7 @@ inline ReturnedValue __qmljs_bit_or(const QV4::ValueRef left, const QV4::ValueRe return Encode(lval | rval); } -inline ReturnedValue __qmljs_bit_xor(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::bitXor(const ValueRef left, const ValueRef right) { TRACE2(left, right); @@ -335,7 +329,7 @@ inline ReturnedValue __qmljs_bit_xor(const QV4::ValueRef left, const QV4::ValueR return Encode(lval ^ rval); } -inline ReturnedValue __qmljs_bit_and(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::bitAnd(const ValueRef left, const ValueRef right) { TRACE2(left, right); @@ -344,19 +338,19 @@ inline ReturnedValue __qmljs_bit_and(const QV4::ValueRef left, const QV4::ValueR return Encode(lval & rval); } -inline QV4::ReturnedValue __qmljs_add(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::add(ExecutionContext *ctx, const ValueRef left, const ValueRef right) { TRACE2(left, right); if (left->isInteger() && right->isInteger()) return add_int32(left->integerValue(), right->integerValue()).asReturnedValue(); if (left->isNumber() && right->isNumber()) - return QV4::Primitive::fromDouble(left->asDouble() + right->asDouble()).asReturnedValue(); + return Primitive::fromDouble(left->asDouble() + right->asDouble()).asReturnedValue(); - return __qmljs_add_helper(ctx, left, right); + return RuntimeHelpers::addHelper(ctx, left, right); } -inline QV4::ReturnedValue __qmljs_sub(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::sub(const ValueRef left, const ValueRef right) { TRACE2(left, right); @@ -366,10 +360,10 @@ inline QV4::ReturnedValue __qmljs_sub(const QV4::ValueRef left, const QV4::Value double lval = left->isNumber() ? left->asDouble() : left->toNumberImpl(); double rval = right->isNumber() ? right->asDouble() : right->toNumberImpl(); - return QV4::Primitive::fromDouble(lval - rval).asReturnedValue(); + return Primitive::fromDouble(lval - rval).asReturnedValue(); } -inline QV4::ReturnedValue __qmljs_mul(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::mul(const ValueRef left, const ValueRef right) { TRACE2(left, right); @@ -379,34 +373,34 @@ inline QV4::ReturnedValue __qmljs_mul(const QV4::ValueRef left, const QV4::Value double lval = left->isNumber() ? left->asDouble() : left->toNumberImpl(); double rval = right->isNumber() ? right->asDouble() : right->toNumberImpl(); - return QV4::Primitive::fromDouble(lval * rval).asReturnedValue(); + return Primitive::fromDouble(lval * rval).asReturnedValue(); } -inline QV4::ReturnedValue __qmljs_div(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::div(const ValueRef left, const ValueRef right) { TRACE2(left, right); double lval = left->toNumber(); double rval = right->toNumber(); - return QV4::Primitive::fromDouble(lval / rval).asReturnedValue(); + return Primitive::fromDouble(lval / rval).asReturnedValue(); } -inline QV4::ReturnedValue __qmljs_mod(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::mod(const ValueRef left, const ValueRef right) { TRACE2(left, right); - if (QV4::Value::integerCompatible(*left, *right) && right->integerValue() != 0) { + if (Value::integerCompatible(*left, *right) && right->integerValue() != 0) { int intRes = left->integerValue() % right->integerValue(); if (intRes != 0 || left->integerValue() >= 0) return Encode(intRes); } - double lval = __qmljs_to_number(left); - double rval = __qmljs_to_number(right); - return QV4::Primitive::fromDouble(std::fmod(lval, rval)).asReturnedValue(); + double lval = RuntimeHelpers::toNumber(left); + double rval = RuntimeHelpers::toNumber(right); + return Primitive::fromDouble(std::fmod(lval, rval)).asReturnedValue(); } -inline QV4::ReturnedValue __qmljs_shl(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::shl(const ValueRef left, const ValueRef right) { TRACE2(left, right); @@ -415,7 +409,7 @@ inline QV4::ReturnedValue __qmljs_shl(const QV4::ValueRef left, const QV4::Value return Encode((int)(lval << rval)); } -inline QV4::ReturnedValue __qmljs_shr(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::shr(const ValueRef left, const ValueRef right) { TRACE2(left, right); @@ -424,7 +418,7 @@ inline QV4::ReturnedValue __qmljs_shr(const QV4::ValueRef left, const QV4::Value return Encode((int)(lval >> rval)); } -inline QV4::ReturnedValue __qmljs_ushr(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::ushr(const ValueRef left, const ValueRef right) { TRACE2(left, right); @@ -435,71 +429,71 @@ inline QV4::ReturnedValue __qmljs_ushr(const QV4::ValueRef left, const QV4::Valu return Encode(res); } -inline QV4::ReturnedValue __qmljs_gt(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::greaterThan(const ValueRef left, const ValueRef right) { TRACE2(left, right); - bool r = __qmljs_cmp_gt(left, right); + bool r = Runtime::compareGreaterThan(left, right); return Encode(r); } -inline QV4::ReturnedValue __qmljs_lt(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::lessThan(const ValueRef left, const ValueRef right) { TRACE2(left, right); - bool r = __qmljs_cmp_lt(left, right); + bool r = Runtime::compareLessThan(left, right); return Encode(r); } -inline QV4::ReturnedValue __qmljs_ge(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::greaterEqual(const ValueRef left, const ValueRef right) { TRACE2(left, right); - bool r = __qmljs_cmp_ge(left, right); + bool r = Runtime::compareGreaterEqual(left, right); return Encode(r); } -inline QV4::ReturnedValue __qmljs_le(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::lessEqual(const ValueRef left, const ValueRef right) { TRACE2(left, right); - bool r = __qmljs_cmp_le(left, right); + bool r = Runtime::compareLessEqual(left, right); return Encode(r); } -inline QV4::ReturnedValue __qmljs_eq(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::equal(const ValueRef left, const ValueRef right) { TRACE2(left, right); - bool r = __qmljs_cmp_eq(left, right); + bool r = Runtime::compareEqual(left, right); return Encode(r); } -inline QV4::ReturnedValue __qmljs_ne(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::notEqual(const ValueRef left, const ValueRef right) { TRACE2(left, right); - bool r = !__qmljs_cmp_eq(left, right); + bool r = !Runtime::compareEqual(left, right); return Encode(r); } -inline QV4::ReturnedValue __qmljs_se(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::strictEqual(const ValueRef left, const ValueRef right) { TRACE2(left, right); - bool r = __qmljs_strict_equal(left, right); + bool r = RuntimeHelpers::strictEqual(left, right); return Encode(r); } -inline QV4::ReturnedValue __qmljs_sne(const QV4::ValueRef left, const QV4::ValueRef right) +inline ReturnedValue Runtime::strictNotEqual(const ValueRef left, const ValueRef right) { TRACE2(left, right); - bool r = ! __qmljs_strict_equal(left, right); + bool r = ! RuntimeHelpers::strictEqual(left, right); return Encode(r); } -inline QV4::Bool __qmljs_cmp_eq(const QV4::ValueRef left, const QV4::ValueRef right) +inline Bool Runtime::compareEqual(const ValueRef left, const ValueRef right) { TRACE2(left, right); @@ -514,45 +508,45 @@ inline QV4::Bool __qmljs_cmp_eq(const QV4::ValueRef left, const QV4::ValueRef ri return left->managed()->isEqualTo(right->managed()); } - return __qmljs_equal_helper(left, right); + return RuntimeHelpers::equalHelper(left, right); } -inline QV4::Bool __qmljs_cmp_ne(const QV4::ValueRef left, const QV4::ValueRef right) +inline Bool Runtime::compareNotEqual(const ValueRef left, const ValueRef right) { TRACE2(left, right); - return !__qmljs_cmp_eq(left, right); + return !Runtime::compareEqual(left, right); } -inline QV4::Bool __qmljs_cmp_se(const QV4::ValueRef left, const QV4::ValueRef right) +inline Bool Runtime::compareStrictEqual(const ValueRef left, const ValueRef right) { TRACE2(left, right); - return __qmljs_strict_equal(left, right); + return RuntimeHelpers::strictEqual(left, right); } -inline QV4::Bool __qmljs_cmp_sne(const QV4::ValueRef left, const QV4::ValueRef right) +inline Bool Runtime::compareStrictNotEqual(const ValueRef left, const ValueRef right) { TRACE2(left, right); - return ! __qmljs_strict_equal(left, right); + return ! RuntimeHelpers::strictEqual(left, right); } -inline QV4::Bool __qmljs_cmp_instanceof(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right) +inline Bool Runtime::compareInstanceof(ExecutionContext *ctx, const ValueRef left, const ValueRef right) { TRACE2(left, right); Scope scope(ctx); - QV4::ScopedValue v(scope, __qmljs_instanceof(ctx, left, right)); + ScopedValue v(scope, Runtime::instanceof(ctx, left, right)); return v->booleanValue(); } -inline uint __qmljs_cmp_in(QV4::ExecutionContext *ctx, const QV4::ValueRef left, const QV4::ValueRef right) +inline uint Runtime::compareIn(ExecutionContext *ctx, const ValueRef left, const ValueRef right) { TRACE2(left, right); Scope scope(ctx); - QV4::ScopedValue v(scope, __qmljs_in(ctx, left, right)); + ScopedValue v(scope, Runtime::in(ctx, left, right)); return v->booleanValue(); } |