changeset 4244:70d60ca000c6

RT-31450: Merge with Webkit master (svn revision r150795) win64 fix
author Alexey Utkin <alexey.utkin@oracle.com>
date Mon, 08 Jul 2013 20:54:50 +0400
parents d75cf082b3a8
children b85884d0523e
files modules/web/src/main/native/Source/JavaScriptCore/TargetJava.pri modules/web/src/main/native/Source/JavaScriptCore/jit/JITStubsMSVC64.asm modules/web/src/main/native/Source/WTF/wtf/CurrentTime.cpp modules/web/src/main/native/Source/WTF/wtf/Platform.h
diffstat 4 files changed, 103 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/modules/web/src/main/native/Source/JavaScriptCore/TargetJava.pri	Mon Jul 08 15:04:22 2013 +0400
+++ b/modules/web/src/main/native/Source/JavaScriptCore/TargetJava.pri	Mon Jul 08 20:54:50 2013 +0400
@@ -343,3 +343,18 @@
 } else {
     SOURCES += $$PWD/../WTF/wtf/unicode/java/UnicodeJava.cpp
 }
+
+win32-*:contains(QMAKE_TARGET.arch, x86_64) {
+    ASM_SOURCES += $$PWD/jit/JITStubsMSVC64.asm $${GENERATED_SOURCES_DIR}/GeneratedJITStubs_MSVC.asm
+
+    asm_compiler.CONFIG = target_predeps
+    asm_compiler.dependency_type = TYPE_C
+    asm_compiler.commands = ml64 /c /Fo ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN}
+    asm_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
+    asm_compiler.input = ASM_SOURCES
+    asm_compiler.variable_out = OBJECTS
+    asm_compiler.name = compiling[asm] ${QMAKE_FILE_IN}
+
+    QMAKE_EXTRA_COMPILERS += asm_compiler
+    DEFAULT_TARGETS += compiler_asm_compiler_make_all
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/web/src/main/native/Source/JavaScriptCore/jit/JITStubsMSVC64.asm	Mon Jul 08 20:54:50 2013 +0400
@@ -0,0 +1,84 @@
+;/*
+; Copyright (C) 2013 Digia Plc. and/or its subsidiary(-ies)
+;
+; Redistribution and use in source and binary forms, with or without
+; modification, are permitted provided that the following conditions
+; are met:
+; 1. Redistributions of source code must retain the above copyright
+;    notice, this list of conditions and the following disclaimer.
+; 2. Redistributions in binary form must reproduce the above copyright
+;    notice, this list of conditions and the following disclaimer in the
+;    documentation and/or other materials provided with the distribution.
+;
+; THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+; PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+; OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+;*/
+
+EXTERN cti_vm_throw : near
+PUBLIC ctiTrampoline
+PUBLIC ctiVMThrowTrampoline
+PUBLIC ctiOpThrowNotCaught
+
+_TEXT   SEGMENT
+
+ctiTrampoline PROC
+    ; Dump register parameters to their home address
+    mov qword ptr[rsp+20h], r9
+    mov qword ptr[rsp+18h], r8
+    mov qword ptr[rsp+10h], rdx
+    mov qword ptr[rsp+8h], rcx
+
+    push rbp
+    mov rbp, rsp
+    push r12
+    push r13
+    push r14
+    push r15
+    push rbx
+
+    ; Decrease rsp to point to the start of our JITStackFrame
+    sub rsp, 58h
+    mov r12, 512
+    mov r14, 0FFFF000000000000h
+    mov r15, 0FFFF000000000002h
+    mov r13, r8
+    call rcx
+    add rsp, 58h
+    pop rbx
+    pop r15
+    pop r14
+    pop r13
+    pop r12
+    pop rbp
+    ret
+ctiTrampoline ENDP
+
+ctiVMThrowTrampoline PROC
+    mov rcx, rsp
+    call cti_vm_throw
+    int 3
+ctiVMThrowTrampoline ENDP
+
+ctiOpThrowNotCaught PROC
+    add rsp, 58h
+    pop rbx
+    pop r15
+    pop r14
+    pop r13
+    pop r12
+    pop rbp
+    ret
+ctiOpThrowNotCaught ENDP
+
+_TEXT   ENDS
+
+END
\ No newline at end of file
--- a/modules/web/src/main/native/Source/WTF/wtf/CurrentTime.cpp	Mon Jul 08 15:04:22 2013 +0400
+++ b/modules/web/src/main/native/Source/WTF/wtf/CurrentTime.cpp	Mon Jul 08 20:54:50 2013 +0400
@@ -257,8 +257,10 @@
     return time.tv_sec + time.tv_nsec / 1.0e9;
 }
 
-#elif PLATFORM(JAVA)
-
+#elif PLATFORM(JAVA) && 0
+// Attention! That can be called from non-Java thread. And very often, 
+// so back to native implementation.
+//
 // Return the current system time in seconds, using the classic POSIX epoch of January 1, 1970.
 // Like time(0) from <time.h>, except with a wider range of values and higher precision.
 double currentTime()
--- a/modules/web/src/main/native/Source/WTF/wtf/Platform.h	Mon Jul 08 15:04:22 2013 +0400
+++ b/modules/web/src/main/native/Source/WTF/wtf/Platform.h	Mon Jul 08 20:54:50 2013 +0400
@@ -744,11 +744,6 @@
 #define ENABLE_JIT 1
 #endif
 
-#if PLATFORM(JAVA) && CPU(X86_64) &&  COMPILER(MSVC)
-/* [ctiTrampoline] is not implemented for MS compiler in JITStubs.cpp */
-#define ENABLE_JIT 0
-#endif
-
 /* If possible, try to enable a disassembler. This is optional. We proceed in two
    steps: first we try to find some disassembler that we can use, and then we
    decide if the high-level disassembler API can be enabled. */