aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qmljs_runtime.cpp2
-rw-r--r--qmljs_runtime.h5
-rw-r--r--qv4isel_masm.cpp6
3 files changed, 6 insertions, 7 deletions
diff --git a/qmljs_runtime.cpp b/qmljs_runtime.cpp
index 2ca6f8a579..230f13c22c 100644
--- a/qmljs_runtime.cpp
+++ b/qmljs_runtime.cpp
@@ -330,7 +330,7 @@ void Context::initCallContext(ExecutionEngine *e, const Value *object, FunctionO
void Context::leaveCallContext(FunctionObject *f, Value *returnValue)
{
if (returnValue)
- __qmljs_copy(returnValue, &result);
+ *returnValue = result;
if (! f->needsActivation) {
delete[] locals;
diff --git a/qmljs_runtime.h b/qmljs_runtime.h
index 38e7fcb3f2..a21269361d 100644
--- a/qmljs_runtime.h
+++ b/qmljs_runtime.h
@@ -639,11 +639,6 @@ inline void __qmljs_init_object(Value *result, Object *object)
*result = Value::fromObject(object);
}
-inline void __qmljs_copy(Value *result, Value *source)
-{
- *result = *source;
-}
-
// type conversion and testing
inline void __qmljs_to_primitive(Context *ctx, Value *result, const Value *value, int typeHint)
{
diff --git a/qv4isel_masm.cpp b/qv4isel_masm.cpp
index 7ce009bd54..8129d62907 100644
--- a/qv4isel_masm.cpp
+++ b/qv4isel_masm.cpp
@@ -642,5 +642,9 @@ void InstructionSelection::callRuntimeMethodImp(const char* name, BuiltinMethod
template <typename Result, typename Source>
void InstructionSelection::copyValue(Result result, Source source)
{
- generateFunctionCall(__qmljs_copy, result, source);
+ // ### could avoid using Gpr0 in many cases
+ loadArgument(source, Gpr0);
+ loadDouble(Gpr0, FPGpr0);
+ loadArgument(result, Gpr0);
+ storeDouble(FPGpr0, Gpr0);
}