| Index: src/sh4/frames-sh4.h
|
| diff --git a/src/x64/frames-x64.h b/src/sh4/frames-sh4.h
|
| similarity index 73%
|
| copy from src/x64/frames-x64.h
|
| copy to src/sh4/frames-sh4.h
|
| index 3e3d63d62b917f4c2547dd353cbeec6b7128ef9e..79d7e633b41ee0c5a06d0fdb6963d15f3f199ed2 100644
|
| --- a/src/x64/frames-x64.h
|
| +++ b/src/sh4/frames-sh4.h
|
| @@ -1,4 +1,4 @@
|
| -// Copyright 2012 the V8 project authors. All rights reserved.
|
| +// Copyright 2011-2012 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:
|
| @@ -25,29 +25,55 @@
|
| // (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_
|
| +#ifndef V8_SH4_FRAMES_SH4_H_
|
| +#define V8_SH4_FRAMES_SH4_H_
|
| +
|
| +#include "memory.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
|
|
| +
|
| +// Register lists
|
| +// Note that the bit values must match those used in actual instruction encoding
|
| const int kNumRegs = 16;
|
| +
|
| +
|
| +// Caller-saved registers
|
| const RegList kJSCallerSaved =
|
| - 1 << 0 | // rax
|
| - 1 << 1 | // rcx
|
| - 1 << 2 | // rdx
|
| - 1 << 3 | // rbx - used as a caller-saved register in JavaScript code
|
| - 1 << 7; // rdi - callee function
|
| + 1 << 0 | // r0
|
| + 1 << 1 | // r1
|
| + 1 << 2 | // r2
|
| + 1 << 3 | // r3
|
| + 1 << 4 | // r4
|
| + 1 << 5 | // r5
|
| + 1 << 6 | // r6
|
| + 1 << 7; // r7
|
| +
|
| +const int kNumJSCallerSaved = 8;
|
| +
|
| +// Callee-saved registers preserved when switching from C to JavaScript
|
| +const RegList kCalleeSaved =
|
| + 1 << 8 | // r8
|
| + 1 << 9 | // r9
|
| + 1 << 10 | // r10
|
| + 1 << 11 | // r11
|
| + 1 << 12 | // r12 (roots in JS)
|
| + 1 << 13 | // r13 (cp in JS)
|
| + 1 << 14; // r14 (fp in JS)
|
| +
|
| +const int kNumCalleeSaved = 7;
|
|
|
| -const int kNumJSCallerSaved = 5;
|
|
|
| typedef Object* JSCallerSavedBuffer[kNumJSCallerSaved];
|
|
|
| +
|
| // Number of registers for which space is reserved in safepoints.
|
| const int kNumSafepointRegisters = 16;
|
|
|
| // ----------------------------------------------------
|
|
|
| +
|
| class StackHandlerConstants : public AllStatic {
|
| public:
|
| static const int kNextOffset = 0 * kPointerSize;
|
| @@ -62,26 +88,23 @@ class StackHandlerConstants : public AllStatic {
|
|
|
| class EntryFrameConstants : public AllStatic {
|
| public:
|
| -#ifdef _WIN64
|
| - static const int kCallerFPOffset = -10 * kPointerSize;
|
| -#else
|
| - static const int kCallerFPOffset = -8 * kPointerSize;
|
| -#endif
|
| - static const int kArgvOffset = 6 * kPointerSize;
|
| + static const int kCallerFPOffset = -3 * kPointerSize;
|
| };
|
|
|
|
|
| class ExitFrameConstants : public AllStatic {
|
| public:
|
| - static const int kCodeOffset = -2 * kPointerSize;
|
| - static const int kSPOffset = -1 * kPointerSize;
|
| + static const int kCodeOffset = -2 * kPointerSize;
|
| + static const int kSPOffset = -1 * kPointerSize;
|
|
|
| - static const int kCallerFPOffset = +0 * kPointerSize;
|
| - static const int kCallerPCOffset = +1 * kPointerSize;
|
| + // The caller fields are below the frame pointer on the stack.
|
| + static const int kCallerFPOffset = 0 * kPointerSize;
|
| + // The calling JS function is below FP.
|
| + static const int kCallerPCOffset = 1 * kPointerSize;
|
|
|
| // FP-relative displacement of the caller's SP. It points just
|
| // below the saved PC.
|
| - static const int kCallerSPDisplacement = +2 * kPointerSize;
|
| + static const int kCallerSPDisplacement = 2 * kPointerSize;
|
| };
|
|
|
|
|
| @@ -94,8 +117,8 @@ class StandardFrameConstants : public AllStatic {
|
| static const int kMarkerOffset = -2 * kPointerSize;
|
| static const int kContextOffset = -1 * kPointerSize;
|
| static const int kCallerFPOffset = 0 * kPointerSize;
|
| - static const int kCallerPCOffset = +1 * kPointerSize;
|
| - static const int kCallerSPOffset = +2 * kPointerSize;
|
| + static const int kCallerPCOffset = 1 * kPointerSize;
|
| + static const int kCallerSPOffset = 2 * kPointerSize;
|
| };
|
|
|
|
|
| @@ -131,6 +154,7 @@ inline Object* JavaScriptFrame::function_slot_object() const {
|
| return Memory::Object_at(fp() + offset);
|
| }
|
|
|
| +
|
| } } // namespace v8::internal
|
|
|
| -#endif // V8_X64_FRAMES_X64_H_
|
| +#endif // V8_SH4_FRAMES_SH4_H_
|
|
|