61 //
62 // <-- Lesp (points 1 past TOS)
63 // [bottom word used for stack ]
64 // ...
65 // [top word used for stack] (first word of stack is double-word aligned)
66
67 // [space for outgoing args (conservatively allocated as max_stack - 6 + interpreter_frame_extra_outgoing_argument_words)]
68 // [6 words for C-arg storage]
69 // [C-aggregate-word (unused)]
70 // [16 words for register saving] <--- SP
71 // ...
72 // 0x0000000
73 //
74 // The in registers and local registers are preserved in a block at SP.
75 //
76 // The first six in registers (I0..I5) hold the first six locals.
77 // The locals are used as follows:
78 // Lesp first free element of expression stack
79 // (which grows towards __higher__ addresses)
80 // Lbcp is set to address of bytecode to execute
81 // It is accessed in the frame under the name "bcx".
82 // It may at times (during GC) be an index instead.
83 // Lmethod the method being interpreted
84 // Llocals the base pointer for accessing the locals array
85 // (lower-numbered locals have lower addresses)
86 // Lmonitors the base pointer for accessing active monitors
87 // Lcache a saved pointer to the method's constant pool cache
88 //
89 //
90 // When calling out to another method,
91 // G5_method is set to method to call, G5_inline_cache_klass may be set,
92 // parameters are put in O registers, and also extra parameters
93 // must be cleverly copied from the top of stack to the outgoing param area in the frame,
94 // ------------------------------ C++ interpreter ----------------------------------------
95 // Layout of C++ interpreter frame:
96 //
97
98
99
100 // All frames:
101
|
61 //
62 // <-- Lesp (points 1 past TOS)
63 // [bottom word used for stack ]
64 // ...
65 // [top word used for stack] (first word of stack is double-word aligned)
66
67 // [space for outgoing args (conservatively allocated as max_stack - 6 + interpreter_frame_extra_outgoing_argument_words)]
68 // [6 words for C-arg storage]
69 // [C-aggregate-word (unused)]
70 // [16 words for register saving] <--- SP
71 // ...
72 // 0x0000000
73 //
74 // The in registers and local registers are preserved in a block at SP.
75 //
76 // The first six in registers (I0..I5) hold the first six locals.
77 // The locals are used as follows:
78 // Lesp first free element of expression stack
79 // (which grows towards __higher__ addresses)
80 // Lbcp is set to address of bytecode to execute
81 // It may at times (during GC) be an index instead.
82 // Lmethod the method being interpreted
83 // Llocals the base pointer for accessing the locals array
84 // (lower-numbered locals have lower addresses)
85 // Lmonitors the base pointer for accessing active monitors
86 // Lcache a saved pointer to the method's constant pool cache
87 //
88 //
89 // When calling out to another method,
90 // G5_method is set to method to call, G5_inline_cache_klass may be set,
91 // parameters are put in O registers, and also extra parameters
92 // must be cleverly copied from the top of stack to the outgoing param area in the frame,
93 // ------------------------------ C++ interpreter ----------------------------------------
94 // Layout of C++ interpreter frame:
95 //
96
97
98
99 // All frames:
100
|