summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/assembler/MacroAssembler.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2015-05-20 09:56:07 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2015-05-20 09:56:07 +0000
commit41386e9cb918eed93b3f13648cbef387e371e451 (patch)
treea97f9d7bd1d9d091833286085f72da9d83fd0606 /Source/JavaScriptCore/assembler/MacroAssembler.h
parente15dd966d523731101f70ccf768bba12435a0208 (diff)
downloadWebKitGtk-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.h87
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);