frame-constants-arm64.h 2.01 KB
Newer Older
1
// Copyright 2013 the V8 project authors. All rights reserved.
2 3
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
4

5 6
#ifndef V8_ARM64_FRAMES_ARM64_H_
#define V8_ARM64_FRAMES_ARM64_H_
7 8 9 10

namespace v8 {
namespace internal {

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
// The layout of an EntryFrame is as follows:
//
//  slot      Entry frame
//       +---------------------+-----------------------
//   0   |  bad frame pointer  |  <-- frame ptr
//       |   (0xFFF.. FF)      |
//       |- - - - - - - - - - -|
//   1   | stack frame marker  |
//       |      (ENTRY)        |
//       |- - - - - - - - - - -|
//   2   | stack frame marker  |
//       |        (0)          |
//       |- - - - - - - - - - -|
//   3   |     C entry FP      |
//       |- - - - - - - - - - -|
//   4   |   JS entry frame    |
//       |       marker        |
//       |- - - - - - - - - - -|
//   5   |      padding        |  <-- stack ptr
//  -----+---------------------+-----------------------
//
32 33
class EntryFrameConstants : public AllStatic {
 public:
34 35
  static const int kCallerFPOffset = -3 * kPointerSize;
  static const int kFixedFrameSize = 6 * kPointerSize;
36 37
};

38
class ExitFrameConstants : public TypedFrameConstants {
39
 public:
40 41
  static const int kSPOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(0);
  static const int kCodeOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(1);
42 43 44
  static const int kPaddingOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(2);
  DEFINE_TYPED_FRAME_SIZES(3);
  static const int kLastExitFrameField = kPaddingOffset;
45

46
  static const int kConstantPoolOffset = 0;  // Not used
47 48 49 50 51 52 53 54 55 56 57
};

class JavaScriptFrameConstants : public AllStatic {
 public:
  // FP-relative.
  static const int kLocal0Offset = StandardFrameConstants::kExpressionsOffset;

  // There are two words on the stack (saved fp and saved lr) between fp and
  // the arguments.
  static const int kLastParameterOffset = 2 * kPointerSize;

58
  static const int kFunctionOffset = StandardFrameConstants::kFunctionOffset;
59 60
};

61 62
}  // namespace internal
}  // namespace v8
63

64
#endif  // V8_ARM64_FRAMES_ARM64_H_