Changeset 228932 in webkit
- Timestamp:
- Feb 22, 2018 1:53:12 PM (6 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r228926 r228932 1 2018-02-22 Mark Lam <mark.lam@apple.com> 2 3 Refactor MacroAssembler code to improve reuse and extensibility. 4 https://bugs.webkit.org/show_bug.cgi?id=183054 5 <rdar://problem/37797337> 6 7 Reviewed by Saam Barati. 8 9 * assembler/ARM64Assembler.h: 10 * assembler/MacroAssembler.cpp: 11 * assembler/MacroAssembler.h: 12 * assembler/MacroAssemblerARM.h: 13 * assembler/MacroAssemblerARM64.h: 14 (JSC::MacroAssemblerARM64::canCompact): 15 (JSC::MacroAssemblerARM64::computeJumpType): 16 (JSC::MacroAssemblerARM64::jumpSizeDelta): 17 (JSC::MacroAssemblerARM64::link): 18 (JSC::MacroAssemblerARM64::load64): 19 (JSC::MacroAssemblerARM64::load64WithAddressOffsetPatch): 20 (JSC::MacroAssemblerARM64::load32): 21 (JSC::MacroAssemblerARM64::load32WithAddressOffsetPatch): 22 (JSC::MacroAssemblerARM64::load16): 23 (JSC::MacroAssemblerARM64::load16SignedExtendTo32): 24 (JSC::MacroAssemblerARM64::load8): 25 (JSC::MacroAssemblerARM64::load8SignedExtendTo32): 26 (JSC::MacroAssemblerARM64::store64): 27 (JSC::MacroAssemblerARM64::store64WithAddressOffsetPatch): 28 (JSC::MacroAssemblerARM64::store32): 29 (JSC::MacroAssemblerARM64::store32WithAddressOffsetPatch): 30 (JSC::MacroAssemblerARM64::store16): 31 (JSC::MacroAssemblerARM64::store8): 32 (JSC::MacroAssemblerARM64::getEffectiveAddress): 33 (JSC::MacroAssemblerARM64::branchDoubleNonZero): 34 (JSC::MacroAssemblerARM64::branchDoubleZeroOrNaN): 35 (JSC::MacroAssemblerARM64::branchTruncateDoubleToInt32): 36 (JSC::MacroAssemblerARM64::loadDouble): 37 (JSC::MacroAssemblerARM64::loadFloat): 38 (JSC::MacroAssemblerARM64::moveConditionallyAfterFloatingPointCompare): 39 (JSC::MacroAssemblerARM64::moveDoubleConditionallyAfterFloatingPointCompare): 40 (JSC::MacroAssemblerARM64::storeDouble): 41 (JSC::MacroAssemblerARM64::storeFloat): 42 (JSC::MacroAssemblerARM64::call): 43 (JSC::MacroAssemblerARM64::jump): 44 (JSC::MacroAssemblerARM64::tailRecursiveCall): 45 (JSC::MacroAssemblerARM64::setCarry): 46 (JSC::MacroAssemblerARM64::reemitInitialMoveWithPatch): 47 (JSC::MacroAssemblerARM64::isBreakpoint): 48 (JSC::MacroAssemblerARM64::invert): 49 (JSC::MacroAssemblerARM64::readCallTarget): 50 (JSC::MacroAssemblerARM64::replaceWithVMHalt): 51 (JSC::MacroAssemblerARM64::replaceWithJump): 52 (JSC::MacroAssemblerARM64::maxJumpReplacementSize): 53 (JSC::MacroAssemblerARM64::patchableJumpSize): 54 (JSC::MacroAssemblerARM64::repatchCall): 55 (JSC::MacroAssemblerARM64::makeBranch): 56 (JSC::MacroAssemblerARM64::makeCompareAndBranch): 57 (JSC::MacroAssemblerARM64::makeTestBitAndBranch): 58 (JSC::MacroAssemblerARM64::ARM64Condition): 59 (JSC::MacroAssemblerARM64::moveWithFixedWidth): 60 (JSC::MacroAssemblerARM64::load): 61 (JSC::MacroAssemblerARM64::store): 62 (JSC::MacroAssemblerARM64::tryLoadWithOffset): 63 (JSC::MacroAssemblerARM64::tryLoadSignedWithOffset): 64 (JSC::MacroAssemblerARM64::tryStoreWithOffset): 65 (JSC::MacroAssemblerARM64::jumpAfterFloatingPointCompare): 66 (JSC::MacroAssemblerARM64::linkCall): 67 * assembler/MacroAssemblerARMv7.h: 68 * assembler/MacroAssemblerMIPS.h: 69 * assembler/MacroAssemblerX86Common.h: 70 * assembler/ProbeStack.h: 71 - Removed a forward declaration of an obsolete class. 72 1 73 2018-02-22 Yusuke Suzuki <utatane.tea@gmail.com> 2 74 -
trunk/Source/JavaScriptCore/assembler/ARM64Assembler.h
r224258 r228932 1 1 /* 2 * Copyright (C) 2012-201 7Apple Inc. All rights reserved.2 * Copyright (C) 2012-2018 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 309 309 } 310 310 311 pr ivate:311 protected: 312 312 static constexpr bool isSp(RegisterID reg) { return ARM64Registers::isSp(reg); } 313 313 static constexpr bool isZr(RegisterID reg) { return ARM64Registers::isZr(reg); } … … 516 516 } 517 517 518 pr ivate:518 protected: 519 519 int encodeFPImm(double d) 520 520 { … … 2990 2990 } 2991 2991 2992 pr ivate:2992 protected: 2993 2993 template<Datasize size> 2994 2994 static bool checkMovk(int insn, int _hw, RegisterID _rd) … … 3755 3755 int m_indexOfLastWatchpoint; 3756 3756 int m_indexOfTailOfLastWatchpoint; 3757 3758 public: 3759 static constexpr ptrdiff_t MAX_POINTER_BITS = 48; 3757 3760 }; 3758 3761 -
trunk/Source/JavaScriptCore/assembler/MacroAssembler.cpp
r228193 r228932 1 1 /* 2 * Copyright (C) 2012-201 7Apple Inc. All rights reserved.2 * Copyright (C) 2012-2018 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 33 33 #include <wtf/PrintStream.h> 34 34 #include <wtf/ScopedLambda.h> 35 36 #if USE(APPLE_INTERNAL_SDK) && __has_include(<WebKitAdditions/MacroAssemblerSupport.h>) 37 #include <WebKitAdditions/MacroAssemblerSupport.h> 38 #endif 35 39 36 40 namespace JSC { -
trunk/Source/JavaScriptCore/assembler/MacroAssembler.h
r228193 r228932 31 31 32 32 #if CPU(ARM_THUMB2) 33 #define TARGET_ASSEMBLER ARMv7Assembler 34 #define TARGET_MACROASSEMBLER MacroAssemblerARMv7 33 35 #include "MacroAssemblerARMv7.h" 34 36 namespace JSC { typedef MacroAssemblerARMv7 MacroAssemblerBase; }; 35 37 36 38 #elif CPU(ARM64) 39 #define TARGET_ASSEMBLER ARM64Assembler 40 #define TARGET_MACROASSEMBLER MacroAssemblerARM64 37 41 #include "MacroAssemblerARM64.h" 38 namespace JSC { typedef MacroAssemblerARM64 MacroAssemblerBase; };39 42 40 43 #elif CPU(ARM_TRADITIONAL) 44 #define TARGET_ASSEMBLER ARMAssembler 45 #define TARGET_MACROASSEMBLER MacroAssemblerARM 41 46 #include "MacroAssemblerARM.h" 42 namespace JSC { typedef MacroAssemblerARM MacroAssemblerBase; };43 47 44 48 #elif CPU(MIPS) 49 #define TARGET_ASSEMBLER MIPSAssembler 50 #define TARGET_MACROASSEMBLER MacroAssemblerMIPS 45 51 #include "MacroAssemblerMIPS.h" 46 namespace JSC {47 typedef MacroAssemblerMIPS MacroAssemblerBase;48 };49 52 50 53 #elif CPU(X86) 54 #define TARGET_ASSEMBLER X86Assembler 55 #define TARGET_MACROASSEMBLER MacroAssemblerX86 51 56 #include "MacroAssemblerX86.h" 52 namespace JSC { typedef MacroAssemblerX86 MacroAssemblerBase; };53 57 54 58 #elif CPU(X86_64) 59 #define TARGET_ASSEMBLER X86Assembler 60 #define TARGET_MACROASSEMBLER MacroAssemblerX86_64 55 61 #include "MacroAssemblerX86_64.h" 56 namespace JSC { typedef MacroAssemblerX86_64 MacroAssemblerBase; };57 62 58 63 #else … … 86 91 87 92 } // namespace Printer 93 94 using MacroAssemblerBase = TARGET_MACROASSEMBLER; 88 95 89 96 class MacroAssembler : public MacroAssemblerBase { -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerARM.h
r225360 r228932 1 1 /* 2 * Copyright (C) 2008-201 7Apple Inc.2 * Copyright (C) 2008-2018 Apple Inc. 3 3 * Copyright (C) 2009, 2010 University of Szeged 4 4 * All rights reserved. … … 35 35 namespace JSC { 36 36 37 class MacroAssemblerARM : public AbstractMacroAssembler<ARMAssembler> { 37 using Assembler = TARGET_ASSEMBLER; 38 39 class MacroAssemblerARM : public AbstractMacroAssembler<Assembler> { 38 40 static const int DoubleConditionMask = 0x0f; 39 41 static const int DoubleConditionBitSpecial = 0x10; -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
r227897 r228932 35 35 namespace JSC { 36 36 37 class MacroAssemblerARM64 : public AbstractMacroAssembler<ARM64Assembler> { 37 using Assembler = TARGET_ASSEMBLER; 38 39 class MacroAssemblerARM64 : public AbstractMacroAssembler<Assembler> { 38 40 public: 39 41 static const unsigned numGPRs = 32; … … 49 51 } 50 52 51 pr ivate:53 protected: 52 54 static const ARM64Registers::FPRegisterID fpTempRegister = ARM64Registers::q31; 53 static const A RM64Assembler::SetFlags S = ARM64Assembler::S;55 static const Assembler::SetFlags S = Assembler::S; 54 56 static const intptr_t maskHalfWord0 = 0xffffl; 55 57 static const intptr_t maskHalfWord1 = 0xffff0000l; 56 58 static const intptr_t maskUpperWord = 0xffffffff00000000l; 57 59 58 // 4 instructions - 3 to load the function pointer, + blr. 59 static const ptrdiff_t REPATCH_OFFSET_CALL_TO_POINTER = -16; 60 60 static constexpr size_t INSTRUCTION_SIZE = 4; 61 62 // N instructions to load the pointer + 1 call instruction. 63 static constexpr ptrdiff_t REPATCH_OFFSET_CALL_TO_POINTER = -((Assembler::MAX_POINTER_BITS / 16 + 1) * INSTRUCTION_SIZE); 64 61 65 public: 62 66 MacroAssemblerARM64() … … 67 71 } 68 72 69 typedef A RM64Assembler::LinkRecord LinkRecord;70 typedef A RM64Assembler::JumpType JumpType;71 typedef A RM64Assembler::JumpLinkType JumpLinkType;72 typedef A RM64Assembler::Condition Condition;73 74 static const A RM64Assembler::Condition DefaultCondition = ARM64Assembler::ConditionInvalid;75 static const A RM64Assembler::JumpType DefaultJump = ARM64Assembler::JumpNoConditionFixedSize;73 typedef Assembler::LinkRecord LinkRecord; 74 typedef Assembler::JumpType JumpType; 75 typedef Assembler::JumpLinkType JumpLinkType; 76 typedef Assembler::Condition Condition; 77 78 static const Assembler::Condition DefaultCondition = Assembler::ConditionInvalid; 79 static const Assembler::JumpType DefaultJump = Assembler::JumpNoConditionFixedSize; 76 80 77 81 Vector<LinkRecord, 0, UnsafeVectorOverflow>& jumpsToLink() { return m_assembler.jumpsToLink(); } 78 82 void* unlinkedCode() { return m_assembler.unlinkedCode(); } 79 static bool canCompact(JumpType jumpType) { return A RM64Assembler::canCompact(jumpType); }80 static JumpLinkType computeJumpType(JumpType jumpType, const uint8_t* from, const uint8_t* to) { return A RM64Assembler::computeJumpType(jumpType, from, to); }81 static JumpLinkType computeJumpType(LinkRecord& record, const uint8_t* from, const uint8_t* to) { return A RM64Assembler::computeJumpType(record, from, to); }82 static int jumpSizeDelta(JumpType jumpType, JumpLinkType jumpLinkType) { return A RM64Assembler::jumpSizeDelta(jumpType, jumpLinkType); }83 static void link(LinkRecord& record, uint8_t* from, const uint8_t* fromInstruction, uint8_t* to) { return A RM64Assembler::link(record, from, fromInstruction, to); }83 static bool canCompact(JumpType jumpType) { return Assembler::canCompact(jumpType); } 84 static JumpLinkType computeJumpType(JumpType jumpType, const uint8_t* from, const uint8_t* to) { return Assembler::computeJumpType(jumpType, from, to); } 85 static JumpLinkType computeJumpType(LinkRecord& record, const uint8_t* from, const uint8_t* to) { return Assembler::computeJumpType(record, from, to); } 86 static int jumpSizeDelta(JumpType jumpType, JumpLinkType jumpLinkType) { return Assembler::jumpSizeDelta(jumpType, jumpLinkType); } 87 static void link(LinkRecord& record, uint8_t* from, const uint8_t* fromInstruction, uint8_t* to) { return Assembler::link(record, from, fromInstruction, to); } 84 88 85 89 static const Scale ScalePtr = TimesEight; … … 92 96 93 97 enum RelationalCondition { 94 Equal = A RM64Assembler::ConditionEQ,95 NotEqual = A RM64Assembler::ConditionNE,96 Above = A RM64Assembler::ConditionHI,97 AboveOrEqual = A RM64Assembler::ConditionHS,98 Below = A RM64Assembler::ConditionLO,99 BelowOrEqual = A RM64Assembler::ConditionLS,100 GreaterThan = A RM64Assembler::ConditionGT,101 GreaterThanOrEqual = A RM64Assembler::ConditionGE,102 LessThan = A RM64Assembler::ConditionLT,103 LessThanOrEqual = A RM64Assembler::ConditionLE98 Equal = Assembler::ConditionEQ, 99 NotEqual = Assembler::ConditionNE, 100 Above = Assembler::ConditionHI, 101 AboveOrEqual = Assembler::ConditionHS, 102 Below = Assembler::ConditionLO, 103 BelowOrEqual = Assembler::ConditionLS, 104 GreaterThan = Assembler::ConditionGT, 105 GreaterThanOrEqual = Assembler::ConditionGE, 106 LessThan = Assembler::ConditionLT, 107 LessThanOrEqual = Assembler::ConditionLE 104 108 }; 105 109 106 110 enum ResultCondition { 107 Overflow = A RM64Assembler::ConditionVS,108 Signed = A RM64Assembler::ConditionMI,109 PositiveOrZero = A RM64Assembler::ConditionPL,110 Zero = A RM64Assembler::ConditionEQ,111 NonZero = A RM64Assembler::ConditionNE111 Overflow = Assembler::ConditionVS, 112 Signed = Assembler::ConditionMI, 113 PositiveOrZero = Assembler::ConditionPL, 114 Zero = Assembler::ConditionEQ, 115 NonZero = Assembler::ConditionNE 112 116 }; 113 117 114 118 enum ZeroCondition { 115 IsZero = A RM64Assembler::ConditionEQ,116 IsNonZero = A RM64Assembler::ConditionNE119 IsZero = Assembler::ConditionEQ, 120 IsNonZero = Assembler::ConditionNE 117 121 }; 118 122 119 123 enum DoubleCondition { 120 124 // These conditions will only evaluate to true if the comparison is ordered - i.e. neither operand is NaN. 121 DoubleEqual = A RM64Assembler::ConditionEQ,122 DoubleNotEqual = A RM64Assembler::ConditionVC, // Not the right flag! check for this & handle differently.123 DoubleGreaterThan = A RM64Assembler::ConditionGT,124 DoubleGreaterThanOrEqual = A RM64Assembler::ConditionGE,125 DoubleLessThan = A RM64Assembler::ConditionLO,126 DoubleLessThanOrEqual = A RM64Assembler::ConditionLS,125 DoubleEqual = Assembler::ConditionEQ, 126 DoubleNotEqual = Assembler::ConditionVC, // Not the right flag! check for this & handle differently. 127 DoubleGreaterThan = Assembler::ConditionGT, 128 DoubleGreaterThanOrEqual = Assembler::ConditionGE, 129 DoubleLessThan = Assembler::ConditionLO, 130 DoubleLessThanOrEqual = Assembler::ConditionLS, 127 131 // If either operand is NaN, these conditions always evaluate to true. 128 DoubleEqualOrUnordered = A RM64Assembler::ConditionVS, // Not the right flag! check for this & handle differently.129 DoubleNotEqualOrUnordered = A RM64Assembler::ConditionNE,130 DoubleGreaterThanOrUnordered = A RM64Assembler::ConditionHI,131 DoubleGreaterThanOrEqualOrUnordered = A RM64Assembler::ConditionHS,132 DoubleLessThanOrUnordered = A RM64Assembler::ConditionLT,133 DoubleLessThanOrEqualOrUnordered = A RM64Assembler::ConditionLE,132 DoubleEqualOrUnordered = Assembler::ConditionVS, // Not the right flag! check for this & handle differently. 133 DoubleNotEqualOrUnordered = Assembler::ConditionNE, 134 DoubleGreaterThanOrUnordered = Assembler::ConditionHI, 135 DoubleGreaterThanOrEqualOrUnordered = Assembler::ConditionHS, 136 DoubleLessThanOrUnordered = Assembler::ConditionLT, 137 DoubleLessThanOrEqualOrUnordered = Assembler::ConditionLE, 134 138 }; 135 139 … … 1049 1053 { 1050 1054 if (!address.offset && (!address.scale || address.scale == 3)) { 1051 m_assembler.ldr<64>(dest, address.base, address.index, A RM64Assembler::UXTX, address.scale);1055 m_assembler.ldr<64>(dest, address.base, address.index, Assembler::UXTX, address.scale); 1052 1056 return; 1053 1057 } 1054 1058 1055 1059 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 1056 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);1060 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 1057 1061 m_assembler.ldr<64>(dest, address.base, memoryTempRegister); 1058 1062 } … … 1072 1076 DataLabel32 label(this); 1073 1077 signExtend32ToPtrWithFixedWidth(address.offset, getCachedMemoryTempRegisterIDAndInvalidate()); 1074 m_assembler.ldr<64>(dest, address.base, memoryTempRegister, A RM64Assembler::SXTW, 0);1078 m_assembler.ldr<64>(dest, address.base, memoryTempRegister, Assembler::SXTW, 0); 1075 1079 return label; 1076 1080 } … … 1138 1142 { 1139 1143 if (!address.offset && (!address.scale || address.scale == 2)) { 1140 m_assembler.ldr<32>(dest, address.base, address.index, A RM64Assembler::UXTX, address.scale);1144 m_assembler.ldr<32>(dest, address.base, address.index, Assembler::UXTX, address.scale); 1141 1145 return; 1142 1146 } 1143 1147 1144 1148 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 1145 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);1149 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 1146 1150 m_assembler.ldr<32>(dest, address.base, memoryTempRegister); 1147 1151 } … … 1156 1160 DataLabel32 label(this); 1157 1161 signExtend32ToPtrWithFixedWidth(address.offset, getCachedMemoryTempRegisterIDAndInvalidate()); 1158 m_assembler.ldr<32>(dest, address.base, memoryTempRegister, A RM64Assembler::SXTW, 0);1162 m_assembler.ldr<32>(dest, address.base, memoryTempRegister, Assembler::SXTW, 0); 1159 1163 return label; 1160 1164 } … … 1185 1189 { 1186 1190 if (!address.offset && (!address.scale || address.scale == 1)) { 1187 m_assembler.ldrh(dest, address.base, address.index, A RM64Assembler::UXTX, address.scale);1191 m_assembler.ldrh(dest, address.base, address.index, Assembler::UXTX, address.scale); 1188 1192 return; 1189 1193 } 1190 1194 1191 1195 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 1192 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);1196 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 1193 1197 m_assembler.ldrh(dest, address.base, memoryTempRegister); 1194 1198 } … … 1216 1220 { 1217 1221 if (!address.offset && (!address.scale || address.scale == 1)) { 1218 m_assembler.ldrsh<32>(dest, address.base, address.index, A RM64Assembler::UXTX, address.scale);1222 m_assembler.ldrsh<32>(dest, address.base, address.index, Assembler::UXTX, address.scale); 1219 1223 return; 1220 1224 } 1221 1225 1222 1226 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 1223 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);1227 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 1224 1228 m_assembler.ldrsh<32>(dest, address.base, memoryTempRegister); 1225 1229 } … … 1247 1251 { 1248 1252 if (!address.offset && !address.scale) { 1249 m_assembler.ldrb(dest, address.base, address.index, A RM64Assembler::UXTX, address.scale);1253 m_assembler.ldrb(dest, address.base, address.index, Assembler::UXTX, address.scale); 1250 1254 return; 1251 1255 } 1252 1256 1253 1257 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 1254 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);1258 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 1255 1259 m_assembler.ldrb(dest, address.base, memoryTempRegister); 1256 1260 } … … 1281 1285 { 1282 1286 if (!address.offset && !address.scale) { 1283 m_assembler.ldrsb<32>(dest, address.base, address.index, A RM64Assembler::UXTX, address.scale);1287 m_assembler.ldrsb<32>(dest, address.base, address.index, Assembler::UXTX, address.scale); 1284 1288 return; 1285 1289 } 1286 1290 1287 1291 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 1288 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);1292 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 1289 1293 m_assembler.ldrsb<32>(dest, address.base, memoryTempRegister); 1290 1294 } … … 1320 1324 { 1321 1325 if (!address.offset && (!address.scale || address.scale == 3)) { 1322 m_assembler.str<64>(src, address.base, address.index, A RM64Assembler::UXTX, address.scale);1326 m_assembler.str<64>(src, address.base, address.index, Assembler::UXTX, address.scale); 1323 1327 return; 1324 1328 } 1325 1329 1326 1330 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 1327 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);1331 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 1328 1332 m_assembler.str<64>(src, address.base, memoryTempRegister); 1329 1333 } … … 1380 1384 DataLabel32 label(this); 1381 1385 signExtend32ToPtrWithFixedWidth(address.offset, getCachedMemoryTempRegisterIDAndInvalidate()); 1382 m_assembler.str<64>(src, address.base, memoryTempRegister, A RM64Assembler::SXTW, 0);1386 m_assembler.str<64>(src, address.base, memoryTempRegister, Assembler::SXTW, 0); 1383 1387 return label; 1384 1388 } … … 1416 1420 { 1417 1421 if (!address.offset && (!address.scale || address.scale == 2)) { 1418 m_assembler.str<32>(src, address.base, address.index, A RM64Assembler::UXTX, address.scale);1422 m_assembler.str<32>(src, address.base, address.index, Assembler::UXTX, address.scale); 1419 1423 return; 1420 1424 } 1421 1425 1422 1426 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 1423 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);1427 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 1424 1428 m_assembler.str<32>(src, address.base, memoryTempRegister); 1425 1429 } … … 1477 1481 DataLabel32 label(this); 1478 1482 signExtend32ToPtrWithFixedWidth(address.offset, getCachedMemoryTempRegisterIDAndInvalidate()); 1479 m_assembler.str<32>(src, address.base, memoryTempRegister, A RM64Assembler::SXTW, 0);1483 m_assembler.str<32>(src, address.base, memoryTempRegister, Assembler::SXTW, 0); 1480 1484 return label; 1481 1485 } … … 1493 1497 { 1494 1498 if (!address.offset && (!address.scale || address.scale == 1)) { 1495 m_assembler.strh(src, address.base, address.index, A RM64Assembler::UXTX, address.scale);1499 m_assembler.strh(src, address.base, address.index, Assembler::UXTX, address.scale); 1496 1500 return; 1497 1501 } 1498 1502 1499 1503 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 1500 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);1504 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 1501 1505 m_assembler.strh(src, address.base, memoryTempRegister); 1502 1506 } … … 1505 1509 { 1506 1510 if (!address.offset && !address.scale) { 1507 m_assembler.strb(src, address.base, address.index, A RM64Assembler::UXTX, address.scale);1511 m_assembler.strb(src, address.base, address.index, Assembler::UXTX, address.scale); 1508 1512 return; 1509 1513 } 1510 1514 1511 1515 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 1512 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);1516 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 1513 1517 m_assembler.strb(src, address.base, memoryTempRegister); 1514 1518 } … … 1560 1564 void getEffectiveAddress(BaseIndex address, RegisterID dest) 1561 1565 { 1562 m_assembler.add<64>(dest, address.base, address.index, A RM64Assembler::LSL, address.scale);1566 m_assembler.add<64>(dest, address.base, address.index, Assembler::LSL, address.scale); 1563 1567 if (address.offset) 1564 1568 add64(TrustedImm32(address.offset), dest); … … 1690 1694 { 1691 1695 m_assembler.fcmp_0<64>(reg); 1692 Jump unordered = makeBranch(A RM64Assembler::ConditionVS);1693 Jump result = makeBranch(A RM64Assembler::ConditionNE);1696 Jump unordered = makeBranch(Assembler::ConditionVS); 1697 Jump result = makeBranch(Assembler::ConditionNE); 1694 1698 unordered.link(this); 1695 1699 return result; … … 1699 1703 { 1700 1704 m_assembler.fcmp_0<64>(reg); 1701 Jump unordered = makeBranch(A RM64Assembler::ConditionVS);1702 Jump notEqual = makeBranch(A RM64Assembler::ConditionNE);1705 Jump unordered = makeBranch(Assembler::ConditionVS); 1706 Jump notEqual = makeBranch(Assembler::ConditionNE); 1703 1707 unordered.link(this); 1704 1708 // We get here if either unordered or equal. … … 1714 1718 zeroExtend32ToPtr(dataTempRegister, dest); 1715 1719 // Check the low 32-bits sign extend to be equal to the full value. 1716 m_assembler.cmp<64>(dataTempRegister, dataTempRegister, A RM64Assembler::SXTW, 0);1720 m_assembler.cmp<64>(dataTempRegister, dataTempRegister, Assembler::SXTW, 0); 1717 1721 return Jump(makeBranch(branchType == BranchIfTruncateSuccessful ? Equal : NotEqual)); 1718 1722 } … … 1803 1807 { 1804 1808 if (!address.offset && (!address.scale || address.scale == 3)) { 1805 m_assembler.ldr<64>(dest, address.base, address.index, A RM64Assembler::UXTX, address.scale);1809 m_assembler.ldr<64>(dest, address.base, address.index, Assembler::UXTX, address.scale); 1806 1810 return; 1807 1811 } 1808 1812 1809 1813 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 1810 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);1814 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 1811 1815 m_assembler.ldr<64>(dest, address.base, memoryTempRegister); 1812 1816 } … … 1830 1834 { 1831 1835 if (!address.offset && (!address.scale || address.scale == 2)) { 1832 m_assembler.ldr<32>(dest, address.base, address.index, A RM64Assembler::UXTX, address.scale);1836 m_assembler.ldr<32>(dest, address.base, address.index, Assembler::UXTX, address.scale); 1833 1837 return; 1834 1838 } 1835 1839 1836 1840 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 1837 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);1841 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 1838 1842 m_assembler.ldr<32>(dest, address.base, memoryTempRegister); 1839 1843 } … … 1897 1901 { 1898 1902 if (cond == DoubleNotEqual) { 1899 Jump unordered = makeBranch(A RM64Assembler::ConditionVS);1900 m_assembler.csel<datasize>(dest, src, dest, A RM64Assembler::ConditionNE);1903 Jump unordered = makeBranch(Assembler::ConditionVS); 1904 m_assembler.csel<datasize>(dest, src, dest, Assembler::ConditionNE); 1901 1905 unordered.link(this); 1902 1906 return; … … 1907 1911 // If the compare is ordered, dest is unchanged and EQ decides 1908 1912 // what value to set. 1909 m_assembler.csel<datasize>(dest, src, dest, A RM64Assembler::ConditionVS);1910 m_assembler.csel<datasize>(dest, src, dest, A RM64Assembler::ConditionEQ);1913 m_assembler.csel<datasize>(dest, src, dest, Assembler::ConditionVS); 1914 m_assembler.csel<datasize>(dest, src, dest, Assembler::ConditionEQ); 1911 1915 return; 1912 1916 } … … 1918 1922 { 1919 1923 if (cond == DoubleNotEqual) { 1920 Jump unordered = makeBranch(A RM64Assembler::ConditionVS);1921 m_assembler.csel<datasize>(dest, thenCase, elseCase, A RM64Assembler::ConditionNE);1924 Jump unordered = makeBranch(Assembler::ConditionVS); 1925 m_assembler.csel<datasize>(dest, thenCase, elseCase, Assembler::ConditionNE); 1922 1926 unordered.link(this); 1923 1927 return; … … 1928 1932 // If the compare is ordered, dest is unchanged and EQ decides 1929 1933 // what value to set. 1930 m_assembler.csel<datasize>(elseCase, thenCase, elseCase, A RM64Assembler::ConditionVS);1931 m_assembler.csel<datasize>(dest, thenCase, elseCase, A RM64Assembler::ConditionEQ);1934 m_assembler.csel<datasize>(elseCase, thenCase, elseCase, Assembler::ConditionVS); 1935 m_assembler.csel<datasize>(dest, thenCase, elseCase, Assembler::ConditionEQ); 1932 1936 return; 1933 1937 } … … 1939 1943 { 1940 1944 if (cond == DoubleNotEqual) { 1941 Jump unordered = makeBranch(A RM64Assembler::ConditionVS);1942 m_assembler.fcsel<datasize>(dest, thenCase, elseCase, A RM64Assembler::ConditionNE);1945 Jump unordered = makeBranch(Assembler::ConditionVS); 1946 m_assembler.fcsel<datasize>(dest, thenCase, elseCase, Assembler::ConditionNE); 1943 1947 unordered.link(this); 1944 1948 return; … … 1949 1953 // If the compare is ordered, dest is unchanged and EQ decides 1950 1954 // what value to set. 1951 m_assembler.fcsel<datasize>(elseCase, thenCase, elseCase, A RM64Assembler::ConditionVS);1952 m_assembler.fcsel<datasize>(dest, thenCase, elseCase, A RM64Assembler::ConditionEQ);1955 m_assembler.fcsel<datasize>(elseCase, thenCase, elseCase, Assembler::ConditionVS); 1956 m_assembler.fcsel<datasize>(dest, thenCase, elseCase, Assembler::ConditionEQ); 1953 1957 return; 1954 1958 } … … 2047 2051 { 2048 2052 if (!address.offset && (!address.scale || address.scale == 3)) { 2049 m_assembler.str<64>(src, address.base, address.index, A RM64Assembler::UXTX, address.scale);2053 m_assembler.str<64>(src, address.base, address.index, Assembler::UXTX, address.scale); 2050 2054 return; 2051 2055 } 2052 2056 2053 2057 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 2054 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);2058 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 2055 2059 m_assembler.str<64>(src, address.base, memoryTempRegister); 2056 2060 } … … 2068 2072 { 2069 2073 if (!address.offset && (!address.scale || address.scale == 2)) { 2070 m_assembler.str<32>(src, address.base, address.index, A RM64Assembler::UXTX, address.scale);2074 m_assembler.str<32>(src, address.base, address.index, Assembler::UXTX, address.scale); 2071 2075 return; 2072 2076 } 2073 2077 2074 2078 signExtend32ToPtr(TrustedImm32(address.offset), getCachedMemoryTempRegisterIDAndInvalidate()); 2075 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, A RM64Assembler::UXTX, address.scale);2079 m_assembler.add<64>(memoryTempRegister, memoryTempRegister, address.index, Assembler::UXTX, address.scale); 2076 2080 m_assembler.str<32>(src, address.base, memoryTempRegister); 2077 2081 } … … 3081 3085 m_assembler.blr(dataTempRegister); 3082 3086 AssemblerLabel callLabel = m_assembler.label(); 3083 ASSERT_UNUSED(pointerLabel, A RM64Assembler::getDifferenceBetweenLabels(callLabel, pointerLabel) == REPATCH_OFFSET_CALL_TO_POINTER);3087 ASSERT_UNUSED(pointerLabel, Assembler::getDifferenceBetweenLabels(callLabel, pointerLabel) == REPATCH_OFFSET_CALL_TO_POINTER); 3084 3088 return Call(callLabel, Call::Linkable); 3085 3089 } … … 3102 3106 AssemblerLabel label = m_assembler.label(); 3103 3107 m_assembler.b(); 3104 return Jump(label, m_makeJumpPatchable ? A RM64Assembler::JumpNoConditionFixedSize : ARM64Assembler::JumpNoCondition);3108 return Jump(label, m_makeJumpPatchable ? Assembler::JumpNoConditionFixedSize : Assembler::JumpNoCondition); 3105 3109 } 3106 3110 … … 3166 3170 m_assembler.br(dataTempRegister); 3167 3171 AssemblerLabel callLabel = m_assembler.label(); 3168 ASSERT_UNUSED(pointerLabel, A RM64Assembler::getDifferenceBetweenLabels(callLabel, pointerLabel) == REPATCH_OFFSET_CALL_TO_POINTER);3172 ASSERT_UNUSED(pointerLabel, Assembler::getDifferenceBetweenLabels(callLabel, pointerLabel) == REPATCH_OFFSET_CALL_TO_POINTER); 3169 3173 return Call(callLabel, Call::Linkable); 3170 3174 } … … 3278 3282 void setCarry(RegisterID dest) 3279 3283 { 3280 m_assembler.cset<32>(dest, A RM64Assembler::ConditionCS);3284 m_assembler.cset<32>(dest, Assembler::ConditionCS); 3281 3285 } 3282 3286 … … 3405 3409 static void reemitInitialMoveWithPatch(void* address, void* value) 3406 3410 { 3407 A RM64Assembler::setPointer(static_cast<int*>(address), value, dataTempRegister, true);3411 Assembler::setPointer(static_cast<int*>(address), value, dataTempRegister, true); 3408 3412 } 3409 3413 … … 3415 3419 } 3416 3420 3417 static bool isBreakpoint(void* address) { return A RM64Assembler::isBrk(address); }3421 static bool isBreakpoint(void* address) { return Assembler::isBrk(address); } 3418 3422 3419 3423 void nop() … … 3732 3736 static RelationalCondition invert(RelationalCondition cond) 3733 3737 { 3734 return static_cast<RelationalCondition>(A RM64Assembler::invert(static_cast<ARM64Assembler::Condition>(cond)));3738 return static_cast<RelationalCondition>(Assembler::invert(static_cast<Assembler::Condition>(cond))); 3735 3739 } 3736 3740 … … 3754 3758 static FunctionPtr readCallTarget(CodeLocationCall call) 3755 3759 { 3756 return FunctionPtr(reinterpret_cast<void(*)()>(A RM64Assembler::readCallTarget(call.dataLocation())));3760 return FunctionPtr(reinterpret_cast<void(*)()>(Assembler::readCallTarget(call.dataLocation()))); 3757 3761 } 3758 3762 3759 3763 static void replaceWithVMHalt(CodeLocationLabel instructionStart) 3760 3764 { 3761 A RM64Assembler::replaceWithVMHalt(instructionStart.executableAddress());3765 Assembler::replaceWithVMHalt(instructionStart.executableAddress()); 3762 3766 } 3763 3767 3764 3768 static void replaceWithJump(CodeLocationLabel instructionStart, CodeLocationLabel destination) 3765 3769 { 3766 A RM64Assembler::replaceWithJump(instructionStart.dataLocation(), destination.dataLocation());3770 Assembler::replaceWithJump(instructionStart.dataLocation(), destination.dataLocation()); 3767 3771 } 3768 3772 3769 3773 static ptrdiff_t maxJumpReplacementSize() 3770 3774 { 3771 return A RM64Assembler::maxJumpReplacementSize();3775 return Assembler::maxJumpReplacementSize(); 3772 3776 } 3773 3777 3774 3778 static ptrdiff_t patchableJumpSize() 3775 3779 { 3776 return A RM64Assembler::patchableJumpSize();3780 return Assembler::patchableJumpSize(); 3777 3781 } 3778 3782 … … 3821 3825 static void repatchCall(CodeLocationCall call, CodeLocationLabel destination) 3822 3826 { 3823 A RM64Assembler::repatchPointer(call.dataLabelPtrAtOffset(REPATCH_OFFSET_CALL_TO_POINTER).dataLocation(), destination.executableAddress());3827 Assembler::repatchPointer(call.dataLabelPtrAtOffset(REPATCH_OFFSET_CALL_TO_POINTER).dataLocation(), destination.executableAddress()); 3824 3828 } 3825 3829 3826 3830 static void repatchCall(CodeLocationCall call, FunctionPtr destination) 3827 3831 { 3828 A RM64Assembler::repatchPointer(call.dataLabelPtrAtOffset(REPATCH_OFFSET_CALL_TO_POINTER).dataLocation(), destination.executableAddress());3832 Assembler::repatchPointer(call.dataLabelPtrAtOffset(REPATCH_OFFSET_CALL_TO_POINTER).dataLocation(), destination.executableAddress()); 3829 3833 } 3830 3834 3831 3835 protected: 3832 ALWAYS_INLINE Jump makeBranch(A RM64Assembler::Condition cond)3836 ALWAYS_INLINE Jump makeBranch(Assembler::Condition cond) 3833 3837 { 3834 3838 m_assembler.b_cond(cond); 3835 3839 AssemblerLabel label = m_assembler.label(); 3836 3840 m_assembler.nop(); 3837 return Jump(label, m_makeJumpPatchable ? A RM64Assembler::JumpConditionFixedSize : ARM64Assembler::JumpCondition, cond);3841 return Jump(label, m_makeJumpPatchable ? Assembler::JumpConditionFixedSize : Assembler::JumpCondition, cond); 3838 3842 } 3839 3843 ALWAYS_INLINE Jump makeBranch(RelationalCondition cond) { return makeBranch(ARM64Condition(cond)); } … … 3850 3854 AssemblerLabel label = m_assembler.label(); 3851 3855 m_assembler.nop(); 3852 return Jump(label, m_makeJumpPatchable ? A RM64Assembler::JumpCompareAndBranchFixedSize : ARM64Assembler::JumpCompareAndBranch, static_cast<ARM64Assembler::Condition>(cond), dataSize == 64, reg);3856 return Jump(label, m_makeJumpPatchable ? Assembler::JumpCompareAndBranchFixedSize : Assembler::JumpCompareAndBranch, static_cast<Assembler::Condition>(cond), dataSize == 64, reg); 3853 3857 } 3854 3858 … … 3863 3867 AssemblerLabel label = m_assembler.label(); 3864 3868 m_assembler.nop(); 3865 return Jump(label, m_makeJumpPatchable ? A RM64Assembler::JumpTestBitFixedSize : ARM64Assembler::JumpTestBit, static_cast<ARM64Assembler::Condition>(cond), bit, reg);3866 } 3867 3868 A RM64Assembler::Condition ARM64Condition(RelationalCondition cond)3869 { 3870 return static_cast<A RM64Assembler::Condition>(cond);3871 } 3872 3873 A RM64Assembler::Condition ARM64Condition(ResultCondition cond)3874 { 3875 return static_cast<A RM64Assembler::Condition>(cond);3876 } 3877 3878 A RM64Assembler::Condition ARM64Condition(DoubleCondition cond)3879 { 3880 return static_cast<A RM64Assembler::Condition>(cond);3881 } 3882 3883 pr ivate:3869 return Jump(label, m_makeJumpPatchable ? Assembler::JumpTestBitFixedSize : Assembler::JumpTestBit, static_cast<Assembler::Condition>(cond), bit, reg); 3870 } 3871 3872 Assembler::Condition ARM64Condition(RelationalCondition cond) 3873 { 3874 return static_cast<Assembler::Condition>(cond); 3875 } 3876 3877 Assembler::Condition ARM64Condition(ResultCondition cond) 3878 { 3879 return static_cast<Assembler::Condition>(cond); 3880 } 3881 3882 Assembler::Condition ARM64Condition(DoubleCondition cond) 3883 { 3884 return static_cast<Assembler::Condition>(cond); 3885 } 3886 3887 protected: 3884 3888 ALWAYS_INLINE RegisterID getCachedDataTempRegisterIDAndInvalidate() 3885 3889 { … … 4016 4020 m_assembler.movk<64>(dest, getHalfword(value, 1), 16); 4017 4021 m_assembler.movk<64>(dest, getHalfword(value, 2), 32); 4022 if (Assembler::MAX_POINTER_BITS > 48) 4023 m_assembler.movk<64>(dest, getHalfword(value, 3), 48); 4018 4024 } 4019 4025 … … 4041 4047 4042 4048 if (isInIntRange(addressDelta)) { 4043 if (A RM64Assembler::canEncodeSImmOffset(addressDelta)) {4049 if (Assembler::canEncodeSImmOffset(addressDelta)) { 4044 4050 m_assembler.ldur<datasize>(dest, memoryTempRegister, addressDelta); 4045 4051 return; 4046 4052 } 4047 4053 4048 if (A RM64Assembler::canEncodePImmOffset<datasize>(addressDelta)) {4054 if (Assembler::canEncodePImmOffset<datasize>(addressDelta)) { 4049 4055 m_assembler.ldr<datasize>(dest, memoryTempRegister, addressDelta); 4050 4056 return; … … 4078 4084 4079 4085 if (isInIntRange(addressDelta)) { 4080 if (A RM64Assembler::canEncodeSImmOffset(addressDelta)) {4086 if (Assembler::canEncodeSImmOffset(addressDelta)) { 4081 4087 m_assembler.stur<datasize>(src, memoryTempRegister, addressDelta); 4082 4088 return; 4083 4089 } 4084 4090 4085 if (A RM64Assembler::canEncodePImmOffset<datasize>(addressDelta)) {4091 if (Assembler::canEncodePImmOffset<datasize>(addressDelta)) { 4086 4092 m_assembler.str<datasize>(src, memoryTempRegister, addressDelta); 4087 4093 return; … … 4163 4169 ALWAYS_INLINE bool tryLoadWithOffset(RegisterID rt, RegisterID rn, int32_t offset) 4164 4170 { 4165 if (A RM64Assembler::canEncodeSImmOffset(offset)) {4171 if (Assembler::canEncodeSImmOffset(offset)) { 4166 4172 loadUnscaledImmediate<datasize>(rt, rn, offset); 4167 4173 return true; 4168 4174 } 4169 if (A RM64Assembler::canEncodePImmOffset<datasize>(offset)) {4175 if (Assembler::canEncodePImmOffset<datasize>(offset)) { 4170 4176 loadUnsignedImmediate<datasize>(rt, rn, static_cast<unsigned>(offset)); 4171 4177 return true; … … 4177 4183 ALWAYS_INLINE bool tryLoadSignedWithOffset(RegisterID rt, RegisterID rn, int32_t offset) 4178 4184 { 4179 if (A RM64Assembler::canEncodeSImmOffset(offset)) {4185 if (Assembler::canEncodeSImmOffset(offset)) { 4180 4186 loadSignedAddressedByUnscaledImmediate<datasize>(rt, rn, offset); 4181 4187 return true; 4182 4188 } 4183 if (A RM64Assembler::canEncodePImmOffset<datasize>(offset)) {4189 if (Assembler::canEncodePImmOffset<datasize>(offset)) { 4184 4190 loadSignedAddressedByUnsignedImmediate<datasize>(rt, rn, static_cast<unsigned>(offset)); 4185 4191 return true; … … 4191 4197 ALWAYS_INLINE bool tryLoadWithOffset(FPRegisterID rt, RegisterID rn, int32_t offset) 4192 4198 { 4193 if (A RM64Assembler::canEncodeSImmOffset(offset)) {4199 if (Assembler::canEncodeSImmOffset(offset)) { 4194 4200 m_assembler.ldur<datasize>(rt, rn, offset); 4195 4201 return true; 4196 4202 } 4197 if (A RM64Assembler::canEncodePImmOffset<datasize>(offset)) {4203 if (Assembler::canEncodePImmOffset<datasize>(offset)) { 4198 4204 m_assembler.ldr<datasize>(rt, rn, static_cast<unsigned>(offset)); 4199 4205 return true; … … 4205 4211 ALWAYS_INLINE bool tryStoreWithOffset(RegisterID rt, RegisterID rn, int32_t offset) 4206 4212 { 4207 if (A RM64Assembler::canEncodeSImmOffset(offset)) {4213 if (Assembler::canEncodeSImmOffset(offset)) { 4208 4214 storeUnscaledImmediate<datasize>(rt, rn, offset); 4209 4215 return true; 4210 4216 } 4211 if (A RM64Assembler::canEncodePImmOffset<datasize>(offset)) {4217 if (Assembler::canEncodePImmOffset<datasize>(offset)) { 4212 4218 storeUnsignedImmediate<datasize>(rt, rn, static_cast<unsigned>(offset)); 4213 4219 return true; … … 4219 4225 ALWAYS_INLINE bool tryStoreWithOffset(FPRegisterID rt, RegisterID rn, int32_t offset) 4220 4226 { 4221 if (A RM64Assembler::canEncodeSImmOffset(offset)) {4227 if (Assembler::canEncodeSImmOffset(offset)) { 4222 4228 m_assembler.stur<datasize>(rt, rn, offset); 4223 4229 return true; 4224 4230 } 4225 if (A RM64Assembler::canEncodePImmOffset<datasize>(offset)) {4231 if (Assembler::canEncodePImmOffset<datasize>(offset)) { 4226 4232 m_assembler.str<datasize>(rt, rn, static_cast<unsigned>(offset)); 4227 4233 return true; … … 4397 4403 if (cond == DoubleNotEqual) { 4398 4404 // ConditionNE jumps if NotEqual *or* unordered - force the unordered cases not to jump. 4399 Jump unordered = makeBranch(A RM64Assembler::ConditionVS);4400 Jump result = makeBranch(A RM64Assembler::ConditionNE);4405 Jump unordered = makeBranch(Assembler::ConditionVS); 4406 Jump result = makeBranch(Assembler::ConditionNE); 4401 4407 unordered.link(this); 4402 4408 return result; 4403 4409 } 4404 4410 if (cond == DoubleEqualOrUnordered) { 4405 Jump unordered = makeBranch(A RM64Assembler::ConditionVS);4406 Jump notEqual = makeBranch(A RM64Assembler::ConditionNE);4411 Jump unordered = makeBranch(Assembler::ConditionVS); 4412 Jump notEqual = makeBranch(Assembler::ConditionNE); 4407 4413 unordered.link(this); 4408 4414 // We get here if either unordered or equal. … … 4419 4425 { 4420 4426 if (!call.isFlagSet(Call::Near)) 4421 A RM64Assembler::linkPointer(code, call.m_label.labelAtOffset(REPATCH_OFFSET_CALL_TO_POINTER), function.value());4427 Assembler::linkPointer(code, call.m_label.labelAtOffset(REPATCH_OFFSET_CALL_TO_POINTER), function.value()); 4422 4428 else if (call.isFlagSet(Call::Tail)) 4423 A RM64Assembler::linkJump(code, call.m_label, function.value());4429 Assembler::linkJump(code, call.m_label, function.value()); 4424 4430 else 4425 A RM64Assembler::linkCall(code, call.m_label, function.value());4431 Assembler::linkCall(code, call.m_label, function.value()); 4426 4432 } 4427 4433 -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h
r225360 r228932 1 1 /* 2 * Copyright (C) 2009-201 7Apple Inc. All rights reserved.2 * Copyright (C) 2009-2018 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2010 University of Szeged 4 4 * … … 34 34 namespace JSC { 35 35 36 class MacroAssemblerARMv7 : public AbstractMacroAssembler<ARMv7Assembler> { 36 using Assembler = TARGET_ASSEMBLER; 37 38 class MacroAssemblerARMv7 : public AbstractMacroAssembler<Assembler> { 37 39 static const RegisterID dataTempRegister = ARMRegisters::ip; 38 40 static const RegisterID addressTempRegister = ARMRegisters::r6; -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h
r225360 r228932 1 1 /* 2 * Copyright (C) 2008-201 7Apple Inc. All rights reserved.2 * Copyright (C) 2008-2018 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2010 MIPS Technologies, Inc. All rights reserved. 4 4 * … … 34 34 namespace JSC { 35 35 36 class MacroAssemblerMIPS : public AbstractMacroAssembler<MIPSAssembler> { 36 using Assembler = TARGET_ASSEMBLER; 37 38 class MacroAssemblerMIPS : public AbstractMacroAssembler<Assembler> { 37 39 public: 38 40 typedef MIPSRegisters::FPRegisterID FPRegisterID; -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
r226428 r228932 1 1 /* 2 * Copyright (C) 2008-201 7Apple Inc. All rights reserved.2 * Copyright (C) 2008-2018 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 namespace JSC { 39 39 40 class MacroAssemblerX86Common : public AbstractMacroAssembler<X86Assembler> { 40 using Assembler = TARGET_ASSEMBLER; 41 42 class MacroAssemblerX86Common : public AbstractMacroAssembler<Assembler> { 41 43 public: 42 44 #if CPU(X86_64) -
trunk/Source/JavaScriptCore/assembler/ProbeStack.h
r222871 r228932 1 1 /* 2 * Copyright (C) 2017 Apple Inc. All rights reserved.2 * Copyright (C) 2017-2018 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 34 34 35 35 namespace JSC { 36 37 struct ProbeContext;38 36 39 37 namespace Probe {
Note: See TracChangeset
for help on using the changeset viewer.