Title: [229506] trunk/Source/_javascript_Core
Revision
229506
Author
[email protected]
Date
2018-03-10 12:13:03 -0800 (Sat, 10 Mar 2018)

Log Message

offlineasm should reset the Assembler's working state before doing another pass for a new target.
https://bugs.webkit.org/show_bug.cgi?id=183538
<rdar://problem/38325955>

Reviewed by Michael Saboff.

* llint/LowLevelInterpreter.cpp:
* offlineasm/asm.rb:
* offlineasm/cloop.rb:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (229505 => 229506)


--- trunk/Source/_javascript_Core/ChangeLog	2018-03-10 19:31:14 UTC (rev 229505)
+++ trunk/Source/_javascript_Core/ChangeLog	2018-03-10 20:13:03 UTC (rev 229506)
@@ -1,3 +1,15 @@
+2018-03-09  Mark Lam  <[email protected]>
+
+        offlineasm should reset the Assembler's working state before doing another pass for a new target.
+        https://bugs.webkit.org/show_bug.cgi?id=183538
+        <rdar://problem/38325955>
+
+        Reviewed by Michael Saboff.
+
+        * llint/LowLevelInterpreter.cpp:
+        * offlineasm/asm.rb:
+        * offlineasm/cloop.rb:
+
 2018-03-09  Brian Burg  <[email protected]>
 
         Web Inspector: there should only be one way for async backend commands to send failure

Modified: trunk/Source/_javascript_Core/llint/LowLevelInterpreter.cpp (229505 => 229506)


--- trunk/Source/_javascript_Core/llint/LowLevelInterpreter.cpp	2018-03-10 19:31:14 UTC (rev 229505)
+++ trunk/Source/_javascript_Core/llint/LowLevelInterpreter.cpp	2018-03-10 20:13:03 UTC (rev 229506)
@@ -30,6 +30,7 @@
 #include <wtf/InlineASM.h>
 
 #if !ENABLE(JIT)
+#include "Bytecodes.h"
 #include "CLoopStackInlines.h"
 #include "CodeBlock.h"
 #include "CommonSlowPaths.h"

Modified: trunk/Source/_javascript_Core/offlineasm/asm.rb (229505 => 229506)


--- trunk/Source/_javascript_Core/offlineasm/asm.rb	2018-03-10 19:31:14 UTC (rev 229505)
+++ trunk/Source/_javascript_Core/offlineasm/asm.rb	2018-03-10 20:13:03 UTC (rev 229506)
@@ -39,6 +39,10 @@
     def initialize(outp)
         @outp = outp
         @state = :cpp
+        resetAsm
+    end
+
+    def resetAsm
         @commentState = :none
         @comment = nil
         @internalComment = nil
@@ -93,6 +97,7 @@
     end
     
     def inAsm
+        resetAsm
         enterAsm
         yield
         leaveAsm

Modified: trunk/Source/_javascript_Core/offlineasm/cloop.rb (229505 => 229506)


--- trunk/Source/_javascript_Core/offlineasm/cloop.rb	2018-03-10 19:31:14 UTC (rev 229505)
+++ trunk/Source/_javascript_Core/offlineasm/cloop.rb	2018-03-10 20:13:03 UTC (rev 229506)
@@ -519,8 +519,6 @@
 end
 
 class Instruction
-    @@didReturnFromJSLabelCounter = 0
-
     def lowerC_LOOP
         case opcode
         when "addi"
@@ -1078,11 +1076,11 @@
         # use of the call instruction. Instead, we just implement JS calls
         # as an opcode dispatch.
         when "cloopCallJSFunction"
-            @@didReturnFromJSLabelCounter += 1
-            $asm.putc "lr.opcode = getOpcode(llint_cloop_did_return_from_js_#{@@didReturnFromJSLabelCounter});"
+            uid = $asm.newUID
+            $asm.putc "lr.opcode = getOpcode(llint_cloop_did_return_from_js_#{uid});"
             $asm.putc "opcode = #{operands[0].clValue(:opcode)};"
             $asm.putc "DISPATCH_OPCODE();"
-            $asm.putsLabel("llint_cloop_did_return_from_js_#{@@didReturnFromJSLabelCounter}", false)
+            $asm.putsLabel("llint_cloop_did_return_from_js_#{uid}", false)
 
         # We can't do generic function calls with an arbitrary set of args, but
         # fortunately we don't have to here. All native function calls always
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to