Changeset 64818 in webkit


Ignore:
Timestamp:
Aug 5, 2010 10:50:51 PM (14 years ago)
Author:
loki@webkit.org
Message:

The ARM JIT does not support JSValue32_64 with RVCT
https://bugs.webkit.org/show_bug.cgi?id=43411

Reviewed by Gavin Barraclough.

JSValue32_64 is enabled for RVCT by default.

  • create_jit_stubs:
  • jit/JITStubs.cpp:

(JSC::ctiTrampoline):
(JSC::ctiVMThrowTrampoline):
(JSC::ctiOpThrowNotCaught):

  • wtf/Platform.h:
Location:
trunk/JavaScriptCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r64804 r64818  
     12010-08-06  Gabor Loki  <loki@webkit.org>
     2
     3        Reviewed by Gavin Barraclough.
     4
     5        The ARM JIT does not support JSValue32_64 with RVCT
     6        https://bugs.webkit.org/show_bug.cgi?id=43411
     7
     8        JSValue32_64 is enabled for RVCT by default.
     9
     10        * create_jit_stubs:
     11        * jit/JITStubs.cpp:
     12        (JSC::ctiTrampoline):
     13        (JSC::ctiVMThrowTrampoline):
     14        (JSC::ctiOpThrowNotCaught):
     15        * wtf/Platform.h:
     16
    1172010-08-05  Chao-ying Fu  <fu@mips.com>
    218
  • trunk/JavaScriptCore/create_jit_stubs

    r61838 r64818  
    2626
    2727my $rtype_template = quotemeta("#rtype#");
    28 my $offset_template = quotemeta("#offset#");
     28my $offset_template = quotemeta(" THUNK_RETURN_ADDRESS_OFFSET");
    2929my $op_template = quotemeta("#op#");
    3030
    3131my $prefix;
     32my $offset_is_set = 0;
    3233my $offset = 32;
    3334my $file;
     
    3536my $getOptionsResult = GetOptions(
    3637    'prefix=s' => \$prefix,
    37     'offset=i' => \$offset
     38    'offset=i' => sub { $offset_is_set = 1; $offset = $_[1]; }
    3839);
    3940
     
    5556    if ( /^$prefix\_BEGIN\((.*)\)/ ) {
    5657        $stub = $1;
    57         $stub =~ s/$offset_template/$offset/g;
     58        if ($offset_is_set) {
     59            $stub =~ s/$offset_template/$offset/g;
     60        }
    5861        print $stub . "\n";
    5962    }
     
    6871        $rtype = quotemeta($1);
    6972        $op = quotemeta($2);
    70         $stub =~ s/$offset_template/$offset/g;
     73        if ($offset_is_set) {
     74            $stub =~ s/$offset_template/$offset/g;
     75        }
    7176        $stub =~ s/$rtype_template/$rtype/g;
    7277        $stub =~ s/$op_template/$op/g;
  • trunk/JavaScriptCore/jit/JITStubs.cpp

    r64798 r64818  
    240240#define ENABLE_PROFILER_REFERENCE_OFFSET 0x60
    241241
    242 #elif COMPILER(GCC) && CPU(ARM_TRADITIONAL)
     242#elif (COMPILER(GCC) || COMPILER(RVCT)) && CPU(ARM_TRADITIONAL)
    243243
    244244#define THUNK_RETURN_ADDRESS_OFFSET 64
     
    458458#define ENABLE_PROFILER_REFERENCE_OFFSET 0x40
    459459
    460 #elif COMPILER(GCC) && CPU(ARM_TRADITIONAL)
     460#elif (COMPILER(GCC) || COMPILER(RVCT)) && CPU(ARM_TRADITIONAL)
    461461
    462462#define THUNK_RETURN_ADDRESS_OFFSET 32
     
    555555);
    556556
    557 #elif COMPILER(RVCT) && CPU(ARM_TRADITIONAL)
    558 
    559 #define THUNK_RETURN_ADDRESS_OFFSET 32
    560 #define PRESERVEDR4_OFFSET          36
    561 
    562 __asm EncodedJSValue ctiTrampoline(void*, RegisterFile*, CallFrame*, JSValue*, Profiler**, JSGlobalData*)
    563 {
    564     ARM
    565     stmdb sp!, {r1-r3}
    566     stmdb sp!, {r4-r8, lr}
    567     sub sp, sp, #36
    568     mov r4, r2
    569     mov r5, #512
    570     mov lr, pc
    571     bx r0
    572     add sp, sp, #36
    573     ldmia sp!, {r4-r8, lr}
    574     add sp, sp, #12
    575     bx lr
    576 }
    577 
    578 __asm void ctiVMThrowTrampoline()
    579 {
    580     ARM
    581     PRESERVE8
    582     mov r0, sp
    583     bl cti_vm_throw
    584     add sp, sp, #36
    585     ldmia sp!, {r4-r8, lr}
    586     add sp, sp, #12
    587     bx lr
    588 }
    589 
    590 __asm void ctiOpThrowNotCaught()
    591 {
    592     ARM
    593     add sp, sp, #36
    594     ldmia sp!, {r4-r8, lr}
    595     add sp, sp, #12
    596     bx lr
    597 }
    598 
    599557#elif COMPILER(MSVC) && CPU(X86)
    600558
     
    768726);
    769727
     728#elif COMPILER(RVCT) && CPU(ARM_TRADITIONAL)
     729
     730__asm EncodedJSValue ctiTrampoline(void*, RegisterFile*, CallFrame*, JSValue*, Profiler**, JSGlobalData*)
     731{
     732    ARM
     733    stmdb sp!, {r1-r3}
     734    stmdb sp!, {r4-r8, lr}
     735    sub sp, sp, # PRESERVEDR4_OFFSET
     736    mov r4, r2
     737    mov r5, #512
     738    mov lr, pc
     739    bx r0
     740    add sp, sp, # PRESERVEDR4_OFFSET
     741    ldmia sp!, {r4-r8, lr}
     742    add sp, sp, #12
     743    bx lr
     744}
     745
     746__asm void ctiVMThrowTrampoline()
     747{
     748    ARM
     749    PRESERVE8
     750    mov r0, sp
     751    bl cti_vm_throw
     752    add sp, sp, # PRESERVEDR4_OFFSET
     753    ldmia sp!, {r4-r8, lr}
     754    add sp, sp, #12
     755    bx lr
     756}
     757
     758__asm void ctiOpThrowNotCaught()
     759{
     760    ARM
     761    add sp, sp, # PRESERVEDR4_OFFSET
     762    ldmia sp!, {r4-r8, lr}
     763    add sp, sp, #12
     764    bx lr
     765}
    770766#endif
    771767
     
    11381134RVCT(    ARM)
    11391135RVCT(    IMPORT JITStubThunked_#op#)
    1140 RVCT(    str lr, [sp, ##offset#])
     1136RVCT(    str lr, [sp, # THUNK_RETURN_ADDRESS_OFFSET])
    11411137RVCT(    bl JITStubThunked_#op#)
    1142 RVCT(    ldr lr, [sp, ##offset#])
     1138RVCT(    ldr lr, [sp, # THUNK_RETURN_ADDRESS_OFFSET])
    11431139RVCT(    bx lr)
    11441140RVCT(})
  • trunk/JavaScriptCore/wtf/Platform.h

    r64804 r64818  
    913913    || CPU(PPC64)
    914914#define WTF_USE_JSVALUE64 1
    915 #elif CPU(MIPS) || (CPU(ARM_TRADITIONAL) && !COMPILER(GCC))
     915#elif CPU(MIPS) || (CPU(ARM_TRADITIONAL) && COMPILER(MSVC))
    916916#define WTF_USE_JSVALUE32 1
    917917#elif OS(WINDOWS) && COMPILER(MINGW)
Note: See TracChangeset for help on using the changeset viewer.