diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
commit | 41386e9cb918eed93b3f13648cbef387e371e451 (patch) | |
tree | a97f9d7bd1d9d091833286085f72da9d83fd0606 /Source/JavaScriptCore/assembler/MacroAssembler.h | |
parent | e15dd966d523731101f70ccf768bba12435a0208 (diff) | |
download | WebKitGtk-tarball-41386e9cb918eed93b3f13648cbef387e371e451.tar.gz |
webkitgtk-2.4.9webkitgtk-2.4.9
Diffstat (limited to 'Source/JavaScriptCore/assembler/MacroAssembler.h')
-rw-r--r-- | Source/JavaScriptCore/assembler/MacroAssembler.h | 87 |
1 files changed, 32 insertions, 55 deletions
diff --git a/Source/JavaScriptCore/assembler/MacroAssembler.h b/Source/JavaScriptCore/assembler/MacroAssembler.h index fd4c5bbf5..4a43eb625 100644 --- a/Source/JavaScriptCore/assembler/MacroAssembler.h +++ b/Source/JavaScriptCore/assembler/MacroAssembler.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008, 2012-2015 Apple Inc. All rights reserved. + * Copyright (C) 2008, 2012, 2013 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -26,6 +26,8 @@ #ifndef MacroAssembler_h #define MacroAssembler_h +#include <wtf/Platform.h> + #if ENABLE(ASSEMBLER) #if CPU(ARM_THUMB2) @@ -69,9 +71,30 @@ namespace JSC { class MacroAssembler : public MacroAssemblerBase { public: + static bool isStackRelated(RegisterID reg) + { + return reg == stackPointerRegister || reg == framePointerRegister; + } + + static RegisterID firstRealRegister() + { + RegisterID firstRegister = MacroAssembler::firstRegister(); + while (MacroAssembler::isStackRelated(firstRegister)) + firstRegister = static_cast<RegisterID>(firstRegister + 1); + return firstRegister; + } + static RegisterID nextRegister(RegisterID reg) { - return static_cast<RegisterID>(reg + 1); + RegisterID result = static_cast<RegisterID>(reg + 1); + while (MacroAssembler::isStackRelated(result)) + result = static_cast<RegisterID>(result + 1); + return result; + } + + static RegisterID secondRealRegister() + { + return nextRegister(firstRealRegister()); } static FPRegisterID nextFPRegister(FPRegisterID reg) @@ -117,9 +140,9 @@ public: using MacroAssemblerBase::and32; using MacroAssemblerBase::branchAdd32; using MacroAssemblerBase::branchMul32; -#if CPU(ARM64) || CPU(ARM_THUMB2) || CPU(X86_64) +#if CPU(X86_64) using MacroAssemblerBase::branchPtr; -#endif +#endif // CPU(X86_64) using MacroAssemblerBase::branchSub32; using MacroAssemblerBase::lshift32; using MacroAssemblerBase::or32; @@ -235,10 +258,6 @@ public: { push(src); } - void pushToSaveImmediateWithoutTouchingRegisters(TrustedImm32 imm) - { - push(imm); - } void popToRestore(RegisterID dest) { pop(dest); @@ -253,8 +272,6 @@ public: loadDouble(stackPointerRegister, dest); addPtr(TrustedImm32(sizeof(double)), stackPointerRegister); } - - static ptrdiff_t pushToSaveByteOffset() { return sizeof(void*); } #endif // !CPU(ARM64) #if CPU(X86_64) || CPU(ARM64) @@ -345,11 +362,6 @@ public: return PatchableJump(branchPtrWithPatch(cond, left, dataLabel, initialRightValue)); } - PatchableJump patchableBranch32WithPatch(RelationalCondition cond, Address left, DataLabel32& dataLabel, TrustedImm32 initialRightValue = TrustedImm32(0)) - { - return PatchableJump(branch32WithPatch(cond, left, dataLabel, initialRightValue)); - } - #if !CPU(ARM_TRADITIONAL) PatchableJump patchableJump() { @@ -365,11 +377,6 @@ public: { return PatchableJump(branch32(cond, reg, imm)); } - - PatchableJump patchableBranch32(RelationalCondition cond, Address address, TrustedImm32 imm) - { - return PatchableJump(branch32(cond, address, imm)); - } #endif #endif @@ -467,21 +474,6 @@ public: and32(TrustedImm32(imm), srcDest); } - void lshiftPtr(Imm32 imm, RegisterID srcDest) - { - lshift32(trustedImm32ForShift(imm), srcDest); - } - - void rshiftPtr(Imm32 imm, RegisterID srcDest) - { - rshift32(trustedImm32ForShift(imm), srcDest); - } - - void urshiftPtr(Imm32 imm, RegisterID srcDest) - { - urshift32(trustedImm32ForShift(imm), srcDest); - } - void negPtr(RegisterID dest) { neg32(dest); @@ -603,11 +595,6 @@ public: store32(TrustedImm32(imm), address); } - void storePtr(TrustedImm32 imm, ImplicitAddress address) - { - store32(imm, address); - } - void storePtr(TrustedImmPtr imm, BaseIndex address) { store32(TrustedImm32(imm), address); @@ -760,16 +747,6 @@ public: lshift64(trustedImm32ForShift(imm), srcDest); } - void rshiftPtr(Imm32 imm, RegisterID srcDest) - { - rshift64(trustedImm32ForShift(imm), srcDest); - } - - void urshiftPtr(Imm32 imm, RegisterID srcDest) - { - urshift64(trustedImm32ForShift(imm), srcDest); - } - void negPtr(RegisterID dest) { neg64(dest); @@ -1009,7 +986,7 @@ public: if (bitwise_cast<uint64_t>(value * 1.0) != bitwise_cast<uint64_t>(value)) return shouldConsiderBlinding(); - value = fabs(value); + value = abs(value); // Only allow a limited set of fractional components double scaledValue = value * 8; if (scaledValue / 8 != value) @@ -1160,7 +1137,7 @@ public: void convertInt32ToDouble(Imm32 imm, FPRegisterID dest) { - if (shouldBlind(imm) && haveScratchRegisterForBlinding()) { + if (shouldBlind(imm)) { RegisterID scratchRegister = scratchRegisterForBlinding(); loadXorBlindedConstant(xorBlindConstant(imm), scratchRegister); convertInt32ToDouble(scratchRegister, dest); @@ -1196,7 +1173,7 @@ public: Jump branchPtr(RelationalCondition cond, RegisterID left, ImmPtr right) { - if (shouldBlind(right) && haveScratchRegisterForBlinding()) { + if (shouldBlind(right)) { RegisterID scratchRegister = scratchRegisterForBlinding(); loadRotationBlindedConstant(rotationBlindConstant(right), scratchRegister); return branchPtr(cond, left, scratchRegister); @@ -1206,7 +1183,7 @@ public: void storePtr(ImmPtr imm, Address dest) { - if (shouldBlind(imm) && haveScratchRegisterForBlinding()) { + if (shouldBlind(imm)) { RegisterID scratchRegister = scratchRegisterForBlinding(); loadRotationBlindedConstant(rotationBlindConstant(imm), scratchRegister); storePtr(scratchRegister, dest); @@ -1216,7 +1193,7 @@ public: void store64(Imm64 imm, Address dest) { - if (shouldBlind(imm) && haveScratchRegisterForBlinding()) { + if (shouldBlind(imm)) { RegisterID scratchRegister = scratchRegisterForBlinding(); loadRotationBlindedConstant(rotationBlindConstant(imm), scratchRegister); store64(scratchRegister, dest); |