Bug 22909 - The JSC JIT doesn't yet even run "Hello, world" on x86-64.
Summary: The JSC JIT doesn't yet even run "Hello, world" on x86-64.
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: Mac OS X 10.5
: P2 Normal
Assignee: Gavin Barraclough
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-12-17 18:52 PST by Gavin Barraclough
Modified: 2008-12-17 19:38 PST (History)
0 users

See Also:


Attachments
The patch (16.17 KB, patch)
2008-12-17 18:53 PST, Gavin Barraclough
sam: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Gavin Barraclough 2008-12-17 18:52:52 PST
Make the JIT run a simple "Hello, world" on x86-64.
Comment 1 Gavin Barraclough 2008-12-17 18:53:54 PST
Created attachment 26110 [details]
The patch

No change to 32-bit, and not yet enabled by default on 64-bit.
Comment 2 Sam Weinig 2008-12-17 19:25:37 PST
Comment on attachment 26110 [details]
The patch

> +    typedef struct
> +    {
> +        void* first;
> +        void* second;
> +    } VoidPtrPair;

This should use our normal struct format. You can fix the union at the same time if you like.

> +#if PLATFORM(X86_64)
> +            // Temporary measure - for now, this will force all arguments onto the stack (regparm(0) does not appear to have any effect).
> +            // We can allow register passing here, and move the writes of these values into the trampoline.
> +            void*, void*, void*, void*, void*, void*,

Ick!  Please add a FIXME preferably with a bug number.

>  #define ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS 1
>  #define ENABLE_JIT_OPTIMIZE_ARITHMETIC 1
>  #endif
> +#if !defined(ENABLE_JIT) && PLATFORM(X86_64) && PLATFORM(MAC) && 0
> +#define ENABLE_JIT 1
> +#define WTF_USE_CTI_ARGUMENT 1
> +#endif

Please remove the && 0 and instead set ENABLE_JIT and WTF_USE_CTI_ARGUMENT to 0.

r=me
Comment 3 Gavin Barraclough 2008-12-17 19:38:24 PST
Sending        JavaScriptCore/ChangeLog
Sending        JavaScriptCore/assembler/X86Assembler.h
Sending        JavaScriptCore/interpreter/Interpreter.cpp
Sending        JavaScriptCore/interpreter/Interpreter.h
Sending        JavaScriptCore/jit/JIT.cpp
Sending        JavaScriptCore/jit/JIT.h
Sending        JavaScriptCore/jit/JITCall.cpp
Sending        JavaScriptCore/jit/JITInlineMethods.h
Sending        JavaScriptCore/wtf/Platform.h
Transmitting file data .........
Committed revision 39370.