Add a x64 stub of frames-x64.h so we have StackHandlerConstants.
authordeanm@chromium.org <deanm@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 5 May 2009 12:26:29 +0000 (12:26 +0000)
committerdeanm@chromium.org <deanm@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 5 May 2009 12:26:29 +0000 (12:26 +0000)
This is just a stripped down version of ia32, and will need to change.

Review URL: http://codereview.chromium.org/108010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1865 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/x64/frames-x64.h

index 209aa2d..6e3632c 100644 (file)
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+#ifndef V8_X64_FRAMES_X64_H_
+#define V8_X64_FRAMES_X64_H_
+
+namespace v8 { namespace internal {
+
+// TODO(port): This is a stub, mostly just a copy of the ia32 bit version.
+// This will all need to change to be correct for x64.
+
+static const int kNumRegs = 8;
+static const RegList kJSCallerSaved = 0;
+static const int kNumJSCallerSaved = 5;
+typedef Object* JSCallerSavedBuffer[kNumJSCallerSaved];
+
+class StackHandlerConstants : public AllStatic {
+ public:
+  static const int kNextOffset  = -1 * kPointerSize;
+  static const int kPPOffset    = -1 * kPointerSize;
+  static const int kFPOffset    = -1 * kPointerSize;
+
+  static const int kCodeOffset  = -1 * kPointerSize;
+
+  static const int kStateOffset = -1 * kPointerSize;
+  static const int kPCOffset    = -1 * kPointerSize;
+
+  static const int kAddressDisplacement = -1 * kPointerSize;
+  static const int kSize = kPCOffset + kPointerSize;
+};
+
+
+class EntryFrameConstants : public AllStatic {
+ public:
+  static const int kCallerFPOffset      = -1 * kPointerSize;
+
+  static const int kFunctionArgOffset   = -1 * kPointerSize;
+  static const int kReceiverArgOffset   = -1 * kPointerSize;
+  static const int kArgcOffset          = -1 * kPointerSize;
+  static const int kArgvOffset          = -1 * kPointerSize;
+};
+
+
+class ExitFrameConstants : public AllStatic {
+ public:
+  static const int kDebugMarkOffset = -1 * kPointerSize;
+  static const int kSPOffset        = -1 * kPointerSize;
+
+  static const int kPPDisplacement = -1 * kPointerSize;
+
+  static const int kCallerFPOffset = -1 * kPointerSize;
+  static const int kCallerPCOffset = -1 * kPointerSize;
+};
+
+
+class StandardFrameConstants : public AllStatic {
+ public:
+  static const int kExpressionsOffset = -1 * kPointerSize;
+  static const int kMarkerOffset      = -1 * kPointerSize;
+  static const int kContextOffset     = -1 * kPointerSize;
+  static const int kCallerFPOffset    = -1 * kPointerSize;
+  static const int kCallerPCOffset    = -1 * kPointerSize;
+  static const int kCallerSPOffset    = -1 * kPointerSize;
+};
+
+
+class JavaScriptFrameConstants : public AllStatic {
+ public:
+  static const int kLocal0Offset = StandardFrameConstants::kExpressionsOffset;
+  static const int kSavedRegistersOffset = -1 * kPointerSize;
+  static const int kFunctionOffset = StandardFrameConstants::kMarkerOffset;
+
+  static const int kParam0Offset   = -1 * kPointerSize;
+  static const int kReceiverOffset = -1 * kPointerSize;
+};
+
+
+class ArgumentsAdaptorFrameConstants : public AllStatic {
+ public:
+  static const int kLengthOffset = StandardFrameConstants::kExpressionsOffset;
+};
+
+
+class InternalFrameConstants : public AllStatic {
+ public:
+  static const int kCodeOffset = StandardFrameConstants::kExpressionsOffset;
+};
+
+
+inline Object* JavaScriptFrame::function_slot_object() const {
+  const int offset = JavaScriptFrameConstants::kFunctionOffset;
+  return Memory::Object_at(fp() + offset);
+}
+
+} }  // namespace v8::internal
+
+#endif  // V8_X64_FRAMES_X64_H_