Title: [231547] trunk/Source/_javascript_Core
Revision
231547
Author
[email protected]
Date
2018-05-08 23:29:05 -0700 (Tue, 08 May 2018)

Log Message

[MIPS] Collect callee-saved register using inline assembly
https://bugs.webkit.org/show_bug.cgi?id=185428

Patch by Dominik Infuehr <[email protected]> on 2018-05-08
Reviewed by Yusuke Suzuki.

MIPS used setjmp instead of collecting registers with inline assembly like
other architectures.

* heap/RegisterState.h:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (231546 => 231547)


--- trunk/Source/_javascript_Core/ChangeLog	2018-05-09 06:01:19 UTC (rev 231546)
+++ trunk/Source/_javascript_Core/ChangeLog	2018-05-09 06:29:05 UTC (rev 231547)
@@ -1,3 +1,15 @@
+2018-05-08  Dominik Infuehr  <[email protected]>
+
+        [MIPS] Collect callee-saved register using inline assembly
+        https://bugs.webkit.org/show_bug.cgi?id=185428
+
+        Reviewed by Yusuke Suzuki.
+
+        MIPS used setjmp instead of collecting registers with inline assembly like
+        other architectures.
+
+        * heap/RegisterState.h:
+
 2018-05-07  Yusuke Suzuki  <[email protected]>
 
         [BigInt] Simplifying JSBigInt by using bool addition

Modified: trunk/Source/_javascript_Core/heap/RegisterState.h (231546 => 231547)


--- trunk/Source/_javascript_Core/heap/RegisterState.h	2018-05-09 06:01:19 UTC (rev 231546)
+++ trunk/Source/_javascript_Core/heap/RegisterState.h	2018-05-09 06:29:05 UTC (rev 231547)
@@ -127,6 +127,32 @@
     SAVE_REG(x27, registers.x27); \
     SAVE_REG(x28, registers.x28)
 
+#elif CPU(MIPS)
+struct RegisterState {
+    uint32_t r16;
+    uint32_t r17;
+    uint32_t r18;
+    uint32_t r19;
+    uint32_t r20;
+    uint32_t r21;
+    uint32_t r22;
+    uint32_t r23;
+};
+
+#define SAVE_REG(regname, where) \
+    asm volatile ("sw $" #regname ", %0" : "=m"(where) : : "memory")
+
+#define ALLOCATE_AND_GET_REGISTER_STATE(registers) \
+    RegisterState registers; \
+    SAVE_REG(16, registers.r16); \
+    SAVE_REG(17, registers.r17); \
+    SAVE_REG(18, registers.r18); \
+    SAVE_REG(19, registers.r19); \
+    SAVE_REG(20, registers.r20); \
+    SAVE_REG(21, registers.r21); \
+    SAVE_REG(22, registers.r22); \
+    SAVE_REG(23, registers.r23)
+
 #endif
 #endif // !OS(WINDOWS)
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to