Use constexpr instead of const in symbol definitions that are obviously constexpr.
[WebKit-https.git] / Source / JavaScriptCore / assembler / MacroAssemblerARM64E.h
index 0b968f6..aa97f38 100644 (file)
@@ -39,6 +39,9 @@ using Assembler = TARGET_ASSEMBLER;
 
 class MacroAssemblerARM64E : public MacroAssemblerARM64 {
 public:
+    static constexpr unsigned numberOfPACBits = 25;
+    static constexpr uintptr_t nonPACBitsMask = (1ull << (64 - numberOfPACBits)) - 1;
+
     ALWAYS_INLINE void tagReturnAddress()
     {
         tagPtr(ARM64Registers::sp, ARM64Registers::lr);
@@ -104,7 +107,7 @@ public:
         m_assembler.xpacd(target);
     }
 
-    static const RegisterID InvalidGPR  = static_cast<RegisterID>(-1);
+    static constexpr RegisterID InvalidGPR  = static_cast<RegisterID>(-1);
 
     enum class CallSignatureType {
         CFunctionCall,
@@ -187,27 +190,27 @@ public:
 
     ALWAYS_INLINE Jump jump() { return MacroAssemblerARM64::jump(); }
 
-    void jump(RegisterID target, PtrTag tag)
+    void farJump(RegisterID target, PtrTag tag)
     {
         if (tag == NoPtrTag)
-            return MacroAssemblerARM64::jump(target, tag);
+            return MacroAssemblerARM64::farJump(target, tag);
 
         ASSERT(tag != CFunctionPtrTag);
         RegisterID diversityGPR = getCachedDataTempRegisterIDAndInvalidate();
         move(TrustedImm64(tag), diversityGPR);
-        jump(target, diversityGPR);
+        farJump(target, diversityGPR);
     }
 
-    void jump(RegisterID target, RegisterID tag)
+    void farJump(RegisterID target, RegisterID tag)
     {
         ASSERT(tag != target);
         m_assembler.brab(target, tag);
     }
 
-    void jump(Address address, PtrTag tag)
+    void farJump(Address address, PtrTag tag)
     {
         if (tag == NoPtrTag)
-            return MacroAssemblerARM64::jump(address, tag);
+            return MacroAssemblerARM64::farJump(address, tag);
 
         ASSERT(tag != CFunctionPtrTag);
         RegisterID targetGPR = getCachedDataTempRegisterIDAndInvalidate();
@@ -217,7 +220,7 @@ public:
         m_assembler.brab(targetGPR, diversityGPR);
     }
 
-    void jump(Address address, RegisterID tag)
+    void farJump(Address address, RegisterID tag)
     {
         RegisterID targetGPR = getCachedDataTempRegisterIDAndInvalidate();
         ASSERT(tag != targetGPR);
@@ -225,10 +228,10 @@ public:
         m_assembler.brab(targetGPR, tag);
     }
 
-    void jump(BaseIndex address, PtrTag tag)
+    void farJump(BaseIndex address, PtrTag tag)
     {
         if (tag == NoPtrTag)
-            return MacroAssemblerARM64::jump(address, tag);
+            return MacroAssemblerARM64::farJump(address, tag);
 
         ASSERT(tag != CFunctionPtrTag);
         RegisterID targetGPR = getCachedDataTempRegisterIDAndInvalidate();
@@ -238,7 +241,7 @@ public:
         m_assembler.brab(targetGPR, diversityGPR);
     }
 
-    void jump(BaseIndex address, RegisterID tag)
+    void farJump(BaseIndex address, RegisterID tag)
     {
         RegisterID targetGPR = getCachedDataTempRegisterIDAndInvalidate();
         ASSERT(tag != targetGPR);
@@ -246,10 +249,10 @@ public:
         m_assembler.brab(targetGPR, tag);
     }
 
-    void jump(AbsoluteAddress address, PtrTag tag)
+    void farJump(AbsoluteAddress address, PtrTag tag)
     {
         if (tag == NoPtrTag)
-            return MacroAssemblerARM64::jump(address, tag);
+            return MacroAssemblerARM64::farJump(address, tag);
 
         RegisterID targetGPR = getCachedDataTempRegisterIDAndInvalidate();
         RegisterID diversityGPR = getCachedMemoryTempRegisterIDAndInvalidate();
@@ -259,7 +262,7 @@ public:
         m_assembler.brab(targetGPR, diversityGPR);
     }
 
-    void jump(AbsoluteAddress address, RegisterID tag)
+    void farJump(AbsoluteAddress address, RegisterID tag)
     {
         RegisterID targetGPR = getCachedDataTempRegisterIDAndInvalidate();
         ASSERT(tag != targetGPR);
@@ -267,6 +270,11 @@ public:
         load64(Address(targetGPR), targetGPR);
         m_assembler.brab(targetGPR, tag);
     }
+
+    ALWAYS_INLINE void ret()
+    {
+        m_assembler.retab();
+    }
 };
 
 } // namespace JSC