From cdbdb969eca8557ea71631eedad93a3273023e20 Mon Sep 17 00:00:00 2001 From: "deanm@chromium.org" Date: Tue, 5 May 2009 12:26:29 +0000 Subject: [PATCH] Add a x64 stub of frames-x64.h so we have StackHandlerConstants. 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 | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/src/x64/frames-x64.h b/src/x64/frames-x64.h index 209aa2d..6e3632c 100644 --- a/src/x64/frames-x64.h +++ b/src/x64/frames-x64.h @@ -25,3 +25,97 @@ // (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_ -- 2.7.4