Make it really work for 64 bit.
authorLars Knoll <lars.knoll@digia.com>
Wed, 10 Oct 2012 11:10:07 +0000 (13:10 +0200)
committerLars Knoll <lars.knoll@digia.com>
Wed, 10 Oct 2012 11:10:07 +0000 (13:10 +0200)
crypto.js passes now :)

qv4isel_masm.cpp
qv4isel_masm_p.h

index 7fffae7..cbf6f70 100644 (file)
@@ -58,7 +58,13 @@ void InstructionSelection::operator()(IR::Function *function)
     enterStandardStackFrame(locals);
 
     push(ContextRegister);
+#if CPU(X86)
     loadPtr(addressForArgument(0), ContextRegister);
+#elif CPU(X86_64)
+    move(RegisterArgument1, ContextRegister);
+#else
+    assert(!"TODO");
+#endif
 
     foreach (IR::BasicBlock *block, _function->basicBlocks) {
         _block = block;
index 833ceb1..7ac8df6 100644 (file)
@@ -69,7 +69,7 @@ protected:
     };
 
 #if CPU(X86) || CPU(X86_64)
-    void enterStandardStackFrame(int locals)
+    void enterStandardStackFrame(quintptr locals)
     {
         push(StackFrameRegister);
         move(StackPointerRegister, StackFrameRegister);
@@ -77,7 +77,7 @@ protected:
         subPtr(TrustedImmPtr((void*)locals), StackPointerRegister);
         push(CalleeSavedGpr);
     }
-    void leaveStandardStackFrame(int locals)
+    void leaveStandardStackFrame(quintptr locals)
     {
         pop(CalleeSavedGpr);
         // ####