Index: src/mips/frames-mips.h |
diff --git a/src/mips/frames-mips.h b/src/mips/frames-mips.h |
index 06e9979c26fb63a7d5df22a954bcdff1d47ef98f..644147030d6534c6a8638ae07625ea248d00530a 100644 |
--- a/src/mips/frames-mips.h |
+++ b/src/mips/frames-mips.h |
@@ -1,4 +1,4 @@ |
-// Copyright 2010 the V8 project authors. All rights reserved. |
+// Copyright 2011 the V8 project authors. All rights reserved. |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
@@ -40,16 +40,17 @@ namespace internal { |
static const int kNumRegs = 32; |
static const RegList kJSCallerSaved = |
+ 1 << 2 | // v0 |
1 << 4 | // a0 |
1 << 5 | // a1 |
1 << 6 | // a2 |
1 << 7; // a3 |
-static const int kNumJSCallerSaved = 4; |
+static const int kNumJSCallerSaved = 5; |
// Return the code of the n-th caller-saved register available to JavaScript |
-// e.g. JSCallerSavedReg(0) returns r0.code() == 0. |
+// e.g. JSCallerSavedReg(0) returns a0.code() == 4. |
int JSCallerSavedCode(int n); |
@@ -64,6 +65,18 @@ static const RegList kCalleeSaved = |
static const int kNumCalleeSaved = 11; |
+// Number of registers for which space is reserved in safepoints. Must be a |
+// multiple of 8. |
+// TODO(mips): Only 8 registers may actually be sufficient. Revisit. |
+static const int kNumSafepointRegisters = 16; |
+ |
+// Define the list of registers actually saved at safepoints. |
+// Note that the number of saved registers may be smaller than the reserved |
+// space, i.e. kNumSafepointSavedRegisters <= kNumSafepointRegisters. |
+static const RegList kSafepointSavedRegisters = kJSCallerSaved | kCalleeSaved; |
+static const int kNumSafepointSavedRegisters = |
+ kNumJSCallerSaved + kNumCalleeSaved; |
+ |
typedef Object* JSCallerSavedBuffer[kNumJSCallerSaved]; |
@@ -88,15 +101,14 @@ class EntryFrameConstants : public AllStatic { |
class ExitFrameConstants : public AllStatic { |
public: |
- // Exit frames have a debug marker on the stack. |
- static const int kSPDisplacement = -1 * kPointerSize; |
- |
- // The debug marker is just above the frame pointer. |
static const int kDebugMarkOffset = -1 * kPointerSize; |
// Must be the same as kDebugMarkOffset. Alias introduced when upgrading. |
static const int kCodeOffset = -1 * kPointerSize; |
+ static const int kSPOffset = -1 * kPointerSize; |
- static const int kSavedRegistersOffset = 0 * kPointerSize; |
+ // TODO(mips): Use a patched sp value on the stack instead. |
+ // A marker of 0 indicates that double registers are saved. |
+ static const int kMarkerOffset = -2 * kPointerSize; |
// The caller fields are below the frame pointer on the stack. |
static const int kCallerFPOffset = +0 * kPointerSize; |
@@ -126,6 +138,8 @@ class StandardFrameConstants : public AllStatic { |
static const int kCArgsSlotsSize = 4 * kPointerSize; |
// JS argument slots size. |
static const int kJSArgsSlotsSize = 0 * kPointerSize; |
+ // Assembly builtins argument slots size. |
+ static const int kBArgsSlotsSize = 0 * kPointerSize; |
}; |
@@ -159,6 +173,7 @@ inline Object* JavaScriptFrame::function_slot_object() const { |
return Memory::Object_at(fp() + offset); |
} |
+ |
} } // namespace v8::internal |
#endif |