Title: [236176] releases/WebKitGTK/webkit-2.22/Source/_javascript_Core
Revision
236176
Author
[email protected]
Date
2018-09-19 05:34:00 -0700 (Wed, 19 Sep 2018)

Log Message

Merge r235785 - [JSC] Put .throwStackOverflow code after the fast path in LLInt doVMEntry
https://bugs.webkit.org/show_bug.cgi?id=189410

Reviewed by Mark Lam.

Put .throwStackOverflow code after the fast path in LLInt doVMEntry to
make doVMEntry code tight.

* llint/LLIntThunks.cpp:
(JSC::vmEntryToWasm): Deleted.
* llint/LLIntThunks.h:
(JSC::vmEntryToWasm):
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/ChangeLog (236175 => 236176)


--- releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/ChangeLog	2018-09-19 12:33:56 UTC (rev 236175)
+++ releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/ChangeLog	2018-09-19 12:34:00 UTC (rev 236176)
@@ -1,3 +1,20 @@
+2018-09-07  Yusuke Suzuki  <[email protected]>
+
+        [JSC] Put .throwStackOverflow code after the fast path in LLInt doVMEntry
+        https://bugs.webkit.org/show_bug.cgi?id=189410
+
+        Reviewed by Mark Lam.
+
+        Put .throwStackOverflow code after the fast path in LLInt doVMEntry to
+        make doVMEntry code tight.
+
+        * llint/LLIntThunks.cpp:
+        (JSC::vmEntryToWasm): Deleted.
+        * llint/LLIntThunks.h:
+        (JSC::vmEntryToWasm):
+        * llint/LowLevelInterpreter32_64.asm:
+        * llint/LowLevelInterpreter64.asm:
+
 2018-09-06  Yusuke Suzuki  <[email protected]>
 
         [WebAssembly] Optimize JS to Wasm call by removing Vector allocation

Modified: releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/llint/LLIntThunks.cpp (236175 => 236176)


--- releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/llint/LLIntThunks.cpp	2018-09-19 12:33:56 UTC (rev 236175)
+++ releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/llint/LLIntThunks.cpp	2018-09-19 12:34:00 UTC (rev 236176)
@@ -42,12 +42,6 @@
 
 namespace JSC {
 
-EncodedJSValue JS_EXPORT_PRIVATE vmEntryToWasm(void* code, VM* vm, ProtoCallFrame* frame)
-{
-    code = retagCodePtr<WasmEntryPtrTag, JSEntryPtrTag>(code);
-    return vmEntryToJavaScript(code, vm, frame);
-}
-    
 #if ENABLE(JIT)
 
 namespace LLInt {

Modified: releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/llint/LLIntThunks.h (236175 => 236176)


--- releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/llint/LLIntThunks.h	2018-09-19 12:33:56 UTC (rev 236175)
+++ releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/llint/LLIntThunks.h	2018-09-19 12:34:00 UTC (rev 236176)
@@ -38,7 +38,11 @@
     EncodedJSValue vmEntryToNative(void*, VM*, ProtoCallFrame*);
 }
 
-EncodedJSValue JS_EXPORT_PRIVATE vmEntryToWasm(void*, VM*, ProtoCallFrame*);
+inline EncodedJSValue vmEntryToWasm(void* code, VM* vm, ProtoCallFrame* frame)
+{
+    code = retagCodePtr<WasmEntryPtrTag, JSEntryPtrTag>(code);
+    return vmEntryToJavaScript(code, vm, frame);
+}
 
 namespace LLInt {
 

Modified: releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm (236175 => 236176)


--- releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm	2018-09-19 12:33:56 UTC (rev 236175)
+++ releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm	2018-09-19 12:34:00 UTC (rev 236176)
@@ -155,11 +155,6 @@
     # before we start copying the args from the protoCallFrame below.
     if C_LOOP
         bpaeq t3, VM::m_cloopStackLimit[vm], .stackHeightOK
-    else
-        bpaeq t3, VM::m_softStackLimit[vm], .stackHeightOK
-    end
-
-    if C_LOOP
         move entry, t4
         move vm, t5
         cloopCallSlowPath _llint_stack_check_at_vm_entry, vm, t3
@@ -171,38 +166,11 @@
 .stackCheckFailed:
         move t4, entry
         move t5, vm
-    end
-
-.throwStackOverflow:
-    subp 8, sp # Align stack for cCall2() to make a call.
-    move vm, a0
-    move protoCallFrame, a1
-    cCall2(_llint_throw_stack_overflow_error)
-
-    if ARMv7
-        vmEntryRecord(cfr, t3)
-        move t3, sp
+        jmp .throwStackOverflow
     else
-        vmEntryRecord(cfr, sp)
+        bpb t3, VM::m_softStackLimit[vm], .throwStackOverflow
     end
 
-    loadp VMEntryRecord::m_vm[sp], t5
-    loadp VMEntryRecord::m_prevTopCallFrame[sp], t4
-    storep t4, VM::topCallFrame[t5]
-    loadp VMEntryRecord::m_prevTopEntryFrame[sp], t4
-    storep t4, VM::topEntryFrame[t5]
-
-    if ARMv7
-        subp cfr, CalleeRegisterSaveSize, t5
-        move t5, sp
-    else
-        subp cfr, CalleeRegisterSaveSize, sp
-    end
-
-    popCalleeSaves()
-    functionEpilogue()
-    ret
-
 .stackHeightOK:
     move t3, sp
     move 4, t3
@@ -268,6 +236,36 @@
     popCalleeSaves()
     functionEpilogue()
     ret
+
+.throwStackOverflow:
+    subp 8, sp # Align stack for cCall2() to make a call.
+    move vm, a0
+    move protoCallFrame, a1
+    cCall2(_llint_throw_stack_overflow_error)
+
+    if ARMv7
+        vmEntryRecord(cfr, t3)
+        move t3, sp
+    else
+        vmEntryRecord(cfr, sp)
+    end
+
+    loadp VMEntryRecord::m_vm[sp], t5
+    loadp VMEntryRecord::m_prevTopCallFrame[sp], t4
+    storep t4, VM::topCallFrame[t5]
+    loadp VMEntryRecord::m_prevTopEntryFrame[sp], t4
+    storep t4, VM::topEntryFrame[t5]
+
+    if ARMv7
+        subp cfr, CalleeRegisterSaveSize, t5
+        move t5, sp
+    else
+        subp cfr, CalleeRegisterSaveSize, sp
+    end
+
+    popCalleeSaves()
+    functionEpilogue()
+    ret
 end
 
 macro makeJavaScriptCall(entry, temp, unused)

Modified: releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/llint/LowLevelInterpreter64.asm (236175 => 236176)


--- releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/llint/LowLevelInterpreter64.asm	2018-09-19 12:33:56 UTC (rev 236175)
+++ releases/WebKitGTK/webkit-2.22/Source/_javascript_Core/llint/LowLevelInterpreter64.asm	2018-09-19 12:34:00 UTC (rev 236176)
@@ -144,11 +144,6 @@
     # before we start copying the args from the protoCallFrame below.
     if C_LOOP
         bpaeq t3, VM::m_cloopStackLimit[vm], .stackHeightOK
-    else
-        bpaeq t3, VM::m_softStackLimit[vm], .stackHeightOK
-    end
-
-    if C_LOOP
         move entry, t4
         move vm, t5
         cloopCallSlowPath _llint_stack_check_at_vm_entry, vm, t3
@@ -160,27 +155,11 @@
 .stackCheckFailed:
         move t4, entry
         move t5, vm
+        jmp .throwStackOverflow
+    else
+        bpb t3, VM::m_softStackLimit[vm], .throwStackOverflow
     end
 
-.throwStackOverflow:
-    move vm, a0
-    move protoCallFrame, a1
-    cCall2(_llint_throw_stack_overflow_error)
-
-    vmEntryRecord(cfr, t4)
-
-    loadp VMEntryRecord::m_vm[t4], vm
-    loadp VMEntryRecord::m_prevTopCallFrame[t4], extraTempReg
-    storep extraTempReg, VM::topCallFrame[vm]
-    loadp VMEntryRecord::m_prevTopEntryFrame[t4], extraTempReg
-    storep extraTempReg, VM::topEntryFrame[vm]
-
-    subp cfr, CalleeRegisterSaveSize, sp
-
-    popCalleeSaves()
-    functionEpilogue()
-    ret
-
 .stackHeightOK:
     move t3, sp
     move 4, t3
@@ -246,6 +225,25 @@
     functionEpilogue()
 
     ret
+
+.throwStackOverflow:
+    move vm, a0
+    move protoCallFrame, a1
+    cCall2(_llint_throw_stack_overflow_error)
+
+    vmEntryRecord(cfr, t4)
+
+    loadp VMEntryRecord::m_vm[t4], vm
+    loadp VMEntryRecord::m_prevTopCallFrame[t4], extraTempReg
+    storep extraTempReg, VM::topCallFrame[vm]
+    loadp VMEntryRecord::m_prevTopEntryFrame[t4], extraTempReg
+    storep extraTempReg, VM::topEntryFrame[vm]
+
+    subp cfr, CalleeRegisterSaveSize, sp
+
+    popCalleeSaves()
+    functionEpilogue()
+    ret
 end
 
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to