summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/jit/TempRegisterSet.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/jit/TempRegisterSet.h')
-rw-r--r--Source/JavaScriptCore/jit/TempRegisterSet.h27
1 files changed, 18 insertions, 9 deletions
diff --git a/Source/JavaScriptCore/jit/TempRegisterSet.h b/Source/JavaScriptCore/jit/TempRegisterSet.h
index 0915e796a..9983229ef 100644
--- a/Source/JavaScriptCore/jit/TempRegisterSet.h
+++ b/Source/JavaScriptCore/jit/TempRegisterSet.h
@@ -23,10 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef TempRegisterSet_h
-#define TempRegisterSet_h
-
-#include <wtf/Platform.h>
+#pragma once
#if ENABLE(JIT)
@@ -41,8 +38,7 @@ class TempRegisterSet {
public:
TempRegisterSet()
{
- for (unsigned i = numberOfBytesInTempRegisterSet; i--;)
- m_set[i] = 0;
+ clearAll();
}
TempRegisterSet(const RegisterSet&);
@@ -118,6 +114,16 @@ public:
return getBit(GPRInfo::numberOfRegisters + index);
}
+ // Return the index'th free FPR.
+ FPRReg getFreeFPR(unsigned index = 0) const
+ {
+ for (unsigned i = FPRInfo::numberOfRegisters; i--;) {
+ if (!getFPRByIndex(i) && !index--)
+ return FPRInfo::toRegister(i);
+ }
+ return InvalidFPRReg;
+ }
+
template<typename BankInfo>
void setByIndex(unsigned index)
{
@@ -164,6 +170,12 @@ public:
}
private:
+ void clearAll()
+ {
+ for (unsigned i = numberOfBytesInTempRegisterSet; i--;)
+ m_set[i] = 0;
+ }
+
void setBit(unsigned i)
{
ASSERT(i < totalNumberOfRegisters);
@@ -205,6 +217,3 @@ struct TempRegisterSet { };
} // namespace JSC
#endif // ENABLE(JIT)
-
-#endif // TempRegisterSet_h
-