summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/jit/RegisterSet.cpp
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/jit/RegisterSet.cpp
parente15dd966d523731101f70ccf768bba12435a0208 (diff)
downloadWebKitGtk-tarball-41386e9cb918eed93b3f13648cbef387e371e451.tar.gz
webkitgtk-2.4.9webkitgtk-2.4.9
Diffstat (limited to 'Source/JavaScriptCore/jit/RegisterSet.cpp')
-rw-r--r--Source/JavaScriptCore/jit/RegisterSet.cpp101
1 files changed, 14 insertions, 87 deletions
diff --git a/Source/JavaScriptCore/jit/RegisterSet.cpp b/Source/JavaScriptCore/jit/RegisterSet.cpp
index 6302e261d..362ada0de 100644
--- a/Source/JavaScriptCore/jit/RegisterSet.cpp
+++ b/Source/JavaScriptCore/jit/RegisterSet.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 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
@@ -30,92 +30,39 @@
#include "GPRInfo.h"
#include "MacroAssembler.h"
-#include "JSCInlines.h"
-#include <wtf/CommaPrinter.h>
namespace JSC {
RegisterSet RegisterSet::stackRegisters()
{
- return RegisterSet(
- MacroAssembler::stackPointerRegister,
- MacroAssembler::framePointerRegister);
-}
-
-RegisterSet RegisterSet::reservedHardwareRegisters()
-{
-#if CPU(ARM64)
- return RegisterSet(ARM64Registers::lr);
-#else
- return RegisterSet();
-#endif
+ RegisterSet result;
+ result.set(MacroAssembler::stackPointerRegister);
+ result.set(MacroAssembler::framePointerRegister);
+ return result;
}
-RegisterSet RegisterSet::runtimeRegisters()
+RegisterSet RegisterSet::specialRegisters()
{
+ RegisterSet result;
+ result.merge(stackRegisters());
+ result.set(GPRInfo::callFrameRegister);
#if USE(JSVALUE64)
- return RegisterSet(GPRInfo::tagTypeNumberRegister, GPRInfo::tagMaskRegister);
-#else
- return RegisterSet();
+ result.set(GPRInfo::tagTypeNumberRegister);
+ result.set(GPRInfo::tagMaskRegister);
#endif
-}
-
-RegisterSet RegisterSet::specialRegisters()
-{
- return RegisterSet(
- stackRegisters(), reservedHardwareRegisters(), runtimeRegisters());
+ return result;
}
RegisterSet RegisterSet::calleeSaveRegisters()
{
RegisterSet result;
-#if CPU(X86)
- result.set(X86Registers::ebx);
- result.set(X86Registers::ebp);
- result.set(X86Registers::edi);
- result.set(X86Registers::esi);
-#elif CPU(X86_64)
+#if CPU(X86_64)
result.set(X86Registers::ebx);
result.set(X86Registers::ebp);
result.set(X86Registers::r12);
result.set(X86Registers::r13);
result.set(X86Registers::r14);
result.set(X86Registers::r15);
-#elif CPU(ARM_THUMB2)
- result.set(ARMRegisters::r4);
- result.set(ARMRegisters::r5);
- result.set(ARMRegisters::r6);
- result.set(ARMRegisters::r8);
-#if !PLATFORM(IOS)
- result.set(ARMRegisters::r9);
-#endif
- result.set(ARMRegisters::r10);
- result.set(ARMRegisters::r11);
-#elif CPU(ARM_TRADITIONAL)
- result.set(ARMRegisters::r4);
- result.set(ARMRegisters::r5);
- result.set(ARMRegisters::r6);
- result.set(ARMRegisters::r7);
- result.set(ARMRegisters::r8);
- result.set(ARMRegisters::r9);
- result.set(ARMRegisters::r10);
- result.set(ARMRegisters::r11);
-#elif CPU(ARM64)
- // We don't include LR in the set of callee-save registers even though it technically belongs
- // there. This is because we use this set to describe the set of registers that need to be saved
- // beyond what you would save by the platform-agnostic "preserve return address" and "restore
- // return address" operations in CCallHelpers.
- for (
- ARM64Registers::RegisterID reg = ARM64Registers::x19;
- reg <= ARM64Registers::x28;
- reg = static_cast<ARM64Registers::RegisterID>(reg + 1))
- result.set(reg);
- result.set(ARM64Registers::fp);
- for (
- ARM64Registers::FPRegisterID reg = ARM64Registers::q8;
- reg <= ARM64Registers::q15;
- reg = static_cast<ARM64Registers::FPRegisterID>(reg + 1))
- result.set(reg);
#else
UNREACHABLE_FOR_PLATFORM();
#endif
@@ -146,29 +93,9 @@ RegisterSet RegisterSet::allRegisters()
return result;
}
-size_t RegisterSet::numberOfSetGPRs() const
-{
- RegisterSet temp = *this;
- temp.filter(allGPRs());
- return temp.numberOfSetRegisters();
-}
-
-size_t RegisterSet::numberOfSetFPRs() const
-{
- RegisterSet temp = *this;
- temp.filter(allFPRs());
- return temp.numberOfSetRegisters();
-}
-
void RegisterSet::dump(PrintStream& out) const
{
- CommaPrinter comma;
- out.print("[");
- for (Reg reg = Reg::first(); reg <= Reg::last(); reg = reg.next()) {
- if (get(reg))
- out.print(comma, reg);
- }
- out.print("]");
+ m_vector.dump(out);
}
} // namespace JSC