[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

loki at webkit.org loki at webkit.org
Wed Dec 22 11:46:04 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 144aa8cb554a445b147ac476c7a09840a2d15fa0
Author: loki at webkit.org <loki at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Aug 6 05:50:51 2010 +0000

    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:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64818 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index 4a930ca..70b8b3f 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,19 @@
+2010-08-06  Gabor Loki  <loki at webkit.org>
+
+        Reviewed by Gavin Barraclough.
+
+        The ARM JIT does not support JSValue32_64 with RVCT
+        https://bugs.webkit.org/show_bug.cgi?id=43411
+
+        JSValue32_64 is enabled for RVCT by default.
+
+        * create_jit_stubs:
+        * jit/JITStubs.cpp:
+        (JSC::ctiTrampoline):
+        (JSC::ctiVMThrowTrampoline):
+        (JSC::ctiOpThrowNotCaught):
+        * wtf/Platform.h:
+
 2010-08-05  Chao-ying Fu  <fu at mips.com>
 
         Reviewed by Darin Adler.
diff --git a/JavaScriptCore/create_jit_stubs b/JavaScriptCore/create_jit_stubs
index 9bb9ee5..4950bfc 100644
--- a/JavaScriptCore/create_jit_stubs
+++ b/JavaScriptCore/create_jit_stubs
@@ -25,16 +25,17 @@ use Getopt::Long;
 my $usage = basename($0) . " --prefix prefix [--offset offset] file";
 
 my $rtype_template = quotemeta("#rtype#");
-my $offset_template = quotemeta("#offset#");
+my $offset_template = quotemeta(" THUNK_RETURN_ADDRESS_OFFSET");
 my $op_template = quotemeta("#op#");
 
 my $prefix;
+my $offset_is_set = 0;
 my $offset = 32;
 my $file;
 
 my $getOptionsResult = GetOptions(
     'prefix=s' => \$prefix,
-    'offset=i' => \$offset
+    'offset=i' => sub { $offset_is_set = 1; $offset = $_[1]; }
 );
 
 $file = $ARGV[0];
@@ -54,7 +55,9 @@ open(IN, $file) or die "No such file $file";
 while ( $_ = <IN> ) {
     if ( /^$prefix\_BEGIN\((.*)\)/ ) {
         $stub = $1;
-        $stub =~ s/$offset_template/$offset/g;
+        if ($offset_is_set) {
+            $stub =~ s/$offset_template/$offset/g;
+        }
         print $stub . "\n";
     }
     if ( /^$prefix\((.*)\)/ ) {
@@ -67,7 +70,9 @@ while ( $_ = <IN> ) {
         $stub = $stub_template;
         $rtype = quotemeta($1);
         $op = quotemeta($2);
-        $stub =~ s/$offset_template/$offset/g;
+        if ($offset_is_set) {
+            $stub =~ s/$offset_template/$offset/g;
+        }
         $stub =~ s/$rtype_template/$rtype/g;
         $stub =~ s/$op_template/$op/g;
         $stub =~ s/\\\*/\*/g;
diff --git a/JavaScriptCore/jit/JITStubs.cpp b/JavaScriptCore/jit/JITStubs.cpp
index c44e143..c4ff0ca 100644
--- a/JavaScriptCore/jit/JITStubs.cpp
+++ b/JavaScriptCore/jit/JITStubs.cpp
@@ -239,7 +239,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
 #define EXCEPTION_OFFSET                 0x58
 #define ENABLE_PROFILER_REFERENCE_OFFSET 0x60
 
-#elif COMPILER(GCC) && CPU(ARM_TRADITIONAL)
+#elif (COMPILER(GCC) || COMPILER(RVCT)) && CPU(ARM_TRADITIONAL)
 
 #define THUNK_RETURN_ADDRESS_OFFSET 64
 #define PRESERVEDR4_OFFSET          68
@@ -457,7 +457,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
 #define EXCEPTION_OFFSET                 0x38
 #define ENABLE_PROFILER_REFERENCE_OFFSET 0x40
 
-#elif COMPILER(GCC) && CPU(ARM_TRADITIONAL)
+#elif (COMPILER(GCC) || COMPILER(RVCT)) && CPU(ARM_TRADITIONAL)
 
 #define THUNK_RETURN_ADDRESS_OFFSET 32
 #define PRESERVEDR4_OFFSET          36
@@ -554,48 +554,6 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
 ".end " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
 );
 
-#elif COMPILER(RVCT) && CPU(ARM_TRADITIONAL)
-
-#define THUNK_RETURN_ADDRESS_OFFSET 32
-#define PRESERVEDR4_OFFSET          36
-
-__asm EncodedJSValue ctiTrampoline(void*, RegisterFile*, CallFrame*, JSValue*, Profiler**, JSGlobalData*)
-{
-    ARM
-    stmdb sp!, {r1-r3}
-    stmdb sp!, {r4-r8, lr}
-    sub sp, sp, #36
-    mov r4, r2
-    mov r5, #512
-    mov lr, pc
-    bx r0
-    add sp, sp, #36
-    ldmia sp!, {r4-r8, lr}
-    add sp, sp, #12
-    bx lr
-}
-
-__asm void ctiVMThrowTrampoline()
-{
-    ARM
-    PRESERVE8
-    mov r0, sp
-    bl cti_vm_throw
-    add sp, sp, #36
-    ldmia sp!, {r4-r8, lr}
-    add sp, sp, #12
-    bx lr
-}
-
-__asm void ctiOpThrowNotCaught()
-{
-    ARM
-    add sp, sp, #36
-    ldmia sp!, {r4-r8, lr}
-    add sp, sp, #12
-    bx lr
-}
-
 #elif COMPILER(MSVC) && CPU(X86)
 
 // These ASSERTs remind you that, if you change the layout of JITStackFrame, you
@@ -767,6 +725,44 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
     "mov pc, lr" "\n"
 );
 
+#elif COMPILER(RVCT) && CPU(ARM_TRADITIONAL)
+
+__asm EncodedJSValue ctiTrampoline(void*, RegisterFile*, CallFrame*, JSValue*, Profiler**, JSGlobalData*)
+{
+    ARM
+    stmdb sp!, {r1-r3}
+    stmdb sp!, {r4-r8, lr}
+    sub sp, sp, # PRESERVEDR4_OFFSET
+    mov r4, r2
+    mov r5, #512
+    mov lr, pc
+    bx r0
+    add sp, sp, # PRESERVEDR4_OFFSET
+    ldmia sp!, {r4-r8, lr}
+    add sp, sp, #12
+    bx lr
+}
+
+__asm void ctiVMThrowTrampoline()
+{
+    ARM
+    PRESERVE8
+    mov r0, sp
+    bl cti_vm_throw
+    add sp, sp, # PRESERVEDR4_OFFSET
+    ldmia sp!, {r4-r8, lr}
+    add sp, sp, #12
+    bx lr
+}
+
+__asm void ctiOpThrowNotCaught()
+{
+    ARM
+    add sp, sp, # PRESERVEDR4_OFFSET
+    ldmia sp!, {r4-r8, lr}
+    add sp, sp, #12
+    bx lr
+}
 #endif
 
 #if ENABLE(OPCODE_SAMPLING)
@@ -1137,9 +1133,9 @@ RVCT(__asm #rtype# cti_#op#(STUB_ARGS_DECLARATION))
 RVCT({)
 RVCT(    ARM)
 RVCT(    IMPORT JITStubThunked_#op#)
-RVCT(    str lr, [sp, ##offset#])
+RVCT(    str lr, [sp, # THUNK_RETURN_ADDRESS_OFFSET])
 RVCT(    bl JITStubThunked_#op#)
-RVCT(    ldr lr, [sp, ##offset#])
+RVCT(    ldr lr, [sp, # THUNK_RETURN_ADDRESS_OFFSET])
 RVCT(    bx lr)
 RVCT(})
 RVCT()
diff --git a/JavaScriptCore/wtf/Platform.h b/JavaScriptCore/wtf/Platform.h
index 4f90d96..9d8dbaa 100644
--- a/JavaScriptCore/wtf/Platform.h
+++ b/JavaScriptCore/wtf/Platform.h
@@ -912,7 +912,7 @@
     || CPU(SPARC64) \
     || CPU(PPC64)
 #define WTF_USE_JSVALUE64 1
-#elif CPU(MIPS) || (CPU(ARM_TRADITIONAL) && !COMPILER(GCC))
+#elif CPU(MIPS) || (CPU(ARM_TRADITIONAL) && COMPILER(MSVC))
 #define WTF_USE_JSVALUE32 1
 #elif OS(WINDOWS) && COMPILER(MINGW)
 /* Using JSVALUE32_64 causes padding/alignement issues for JITStubArg

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list