Ignore:
Timestamp:
Dec 17, 2008, 7:38:10 PM (16 years ago)
Author:
[email protected]
Message:

2008-12-17 Gavin Barraclough <[email protected]>

Reviewed by Sam Weinig.

print("Hello, 64-bit jitted world!");
Get hello-world working through the JIT, on x86-64.

  • assembler/X86Assembler.h:

Fix encoding of opcode + RegisterID format instructions for 64-bit.

  • interpreter/Interpreter.cpp:
  • interpreter/Interpreter.h:

Make VoidPtrPair actually be a pair of void*s.
(Possibly should make this change for 32-bit Mac platforms, too - but won't change 32-bit behaviour in this patch).

  • jit/JIT.cpp:
  • jit/JIT.h:

Provide names for the timeoutCheckRegister & callFrameRegister on x86-64,
force x86-64 ctiTrampoline arguments onto the stack,
implement the asm trampolines for x86-64,
implement the restoreArgumentReference methods for x86-64 calling conventions.

  • jit/JITCall.cpp:
  • jit/JITInlineMethods.h:
  • wtf/Platform.h:

Add switch settings to ENABLE(JIT), on PLATFORM(X86_64) (currently still disabled).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/interpreter/Interpreter.cpp

    r39354 r39370  
    42114211#endif
    42124212
     4213#if USE(CTI_ARGUMENT)
     4214#define SETUP_VL_ARGS
     4215#else
     4216#define SETUP_VL_ARGS va_list vl_args; va_start(vl_args, args)
     4217#endif
     4218
    42134219#ifndef NDEBUG
    42144220
     
    42404246};
    42414247
    4242 #define CTI_STACK_HACK() va_list vl_args; va_start(vl_args, args); StackHack stackHack(&CTI_RETURN_ADDRESS_SLOT)
     4248#define CTI_STACK_HACK() SETUP_VL_ARGS; StackHack stackHack(&CTI_RETURN_ADDRESS_SLOT)
    42434249#define CTI_SET_RETURN_ADDRESS(address) stackHack.savedReturnAddress = address
    42444250#define CTI_RETURN_ADDRESS stackHack.savedReturnAddress
     
    42464252#else
    42474253
    4248 #define CTI_STACK_HACK() va_list vl_args; va_start(vl_args, args)
     4254#define CTI_STACK_HACK() SETUP_VL_ARGS
    42494255#define CTI_SET_RETURN_ADDRESS(address) ctiSetReturnAddress(&CTI_RETURN_ADDRESS_SLOT, address);
    42504256#define CTI_RETURN_ADDRESS CTI_RETURN_ADDRESS_SLOT
     
    42774283    do { \
    42784284        VM_THROW_EXCEPTION_AT_END(); \
    4279         VoidPtrPairValue pair = {{ 0, 0 }}; \
    4280         return pair.i; \
     4285        RETURN_PAIR(0, 0); \
    42814286    } while (0)
    42824287#define VM_THROW_EXCEPTION_AT_END() \
     
    48494854            ARG_setCallFrame(oldCallFrame);
    48504855            throwStackOverflowError(oldCallFrame, ARG_globalData, ARG_returnAddress2, CTI_RETURN_ADDRESS);
    4851             VoidPtrPairValue pair = {{ 0, 0 }};
    4852             return pair.i;
     4856            RETURN_PAIR(0, 0);
    48534857        }
    48544858
     
    48614865    }
    48624866
    4863     VoidPtrPairValue pair = {{ newCodeBlock, callFrame }};
    4864     return pair.i;
     4867    RETURN_PAIR(newCodeBlock, callFrame);
    48654868}
    48664869
     
    51615164            CHECK_FOR_EXCEPTION_AT_END();
    51625165
    5163             VoidPtrPairValue pair = {{ thisObj, asPointer(result) }};
    5164             return pair.i;
     5166            RETURN_PAIR(thisObj, asPointer(result));
    51655167        }
    51665168        ++iter;
     
    54425444    CHECK_FOR_EXCEPTION_AT_END();
    54435445
    5444     VoidPtrPairValue pair = {{ asPointer(number), asPointer(jsNumber(ARG_globalData, number->uncheckedGetNumber() + 1)) }};
    5445     return pair.i;
     5446    RETURN_PAIR(asPointer(number), asPointer(jsNumber(ARG_globalData, number->uncheckedGetNumber() + 1)));
    54465447}
    54475448
     
    55585559            CHECK_FOR_EXCEPTION_AT_END();
    55595560
    5560             VoidPtrPairValue pair = {{ base, asPointer(result) }};
    5561             return pair.i;
     5561            RETURN_PAIR(base, asPointer(result));
    55625562        }
    55635563        ++iter;
     
    56275627    CHECK_FOR_EXCEPTION_AT_END();
    56285628
    5629     VoidPtrPairValue pair = {{ asPointer(number), asPointer(jsNumber(ARG_globalData, number->uncheckedGetNumber() - 1)) }};
    5630     return pair.i;
     5629    RETURN_PAIR(asPointer(number), asPointer(jsNumber(ARG_globalData, number->uncheckedGetNumber() - 1)));
    56315630}
    56325631
Note: See TracChangeset for help on using the changeset viewer.