Title: [264758] trunk/Source/_javascript_Core
Revision
264758
Author
ticaiol...@gmail.com
Date
2020-07-23 05:51:51 -0700 (Thu, 23 Jul 2020)

Log Message

[32-bits] Fixing the return of doVMEntry into LowLevelInterpreter32_64.asm
https://bugs.webkit.org/show_bug.cgi?id=214641

Reviewed by Mark Lam.

Adjusting the return of `doVMEntry` for 32-bits LLInt to proper set
`EncodedJSValue` return in little-endian architectures. It is expected
that tag is stored in `r1` and payload is stored in `r0`.

* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (264757 => 264758)


--- trunk/Source/_javascript_Core/ChangeLog	2020-07-23 12:37:06 UTC (rev 264757)
+++ trunk/Source/_javascript_Core/ChangeLog	2020-07-23 12:51:51 UTC (rev 264758)
@@ -1,3 +1,17 @@
+2020-07-23  Caio Lima  <ticaiol...@gmail.com>
+
+        [32-bits] Fixing the return of doVMEntry into LowLevelInterpreter32_64.asm
+        https://bugs.webkit.org/show_bug.cgi?id=214641
+
+        Reviewed by Mark Lam.
+
+        Adjusting the return of `doVMEntry` for 32-bits LLInt to proper set
+        `EncodedJSValue` return in little-endian architectures. It is expected
+        that tag is stored in `r1` and payload is stored in `r0`.
+
+        * llint/LowLevelInterpreter.asm:
+        * llint/LowLevelInterpreter32_64.asm:
+
 2020-07-23  Alexey Shvayka  <shvaikal...@gmail.com>
 
         Remove ArrayNode::m_optional

Modified: trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm (264757 => 264758)


--- trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm	2020-07-23 12:37:06 UTC (rev 264757)
+++ trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm	2020-07-23 12:51:51 UTC (rev 264758)
@@ -2187,7 +2187,8 @@
             # Given _slow_path_checkpoint_osr_exit_from_inlined_call has
             # parameters as CallFrame* and EncodedJSValue,
             # we need to store call result on a2, a3 and call frame on a0,
-            # leaving a1 as dummy value.
+            # leaving a1 as dummy value (this calling convention is considered only
+            # for little-endian architectures).
             move r1, a3
             move r0, a2
             move cfr, a0

Modified: trunk/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm (264757 => 264758)


--- trunk/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm	2020-07-23 12:37:06 UTC (rev 264757)
+++ trunk/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm	2020-07-23 12:51:51 UTC (rev 264758)
@@ -327,9 +327,11 @@
     move vm, a0
     move protoCallFrame, a1
     cCall2(_llint_check_vm_entry_permission)
-    move UndefinedTag, r0
-    move 0, r1
 
+    # Tag is stored in r1 and payload is stored in r0 in little-endian architectures.
+    move UndefinedTag, r1
+    move 0, r0
+
     subp cfr, CalleeRegisterSaveSize, sp
     popCalleeSaves()
     functionEpilogue()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to