95 __ z_br(klass);
96
97 __ bind(L_skip_barrier);
98 }
99
100 void LIR_Assembler::osr_entry() {
101 // On-stack-replacement entry sequence (interpreter frame layout described in frame_s390.hpp):
102 //
103 // 1. Create a new compiled activation.
104 // 2. Initialize local variables in the compiled activation. The expression stack must be empty
105 // at the osr_bci; it is not initialized.
106 // 3. Jump to the continuation address in compiled code to resume execution.
107
108 // OSR entry point
109 offsets()->set_value(CodeOffsets::OSR_Entry, code_offset());
110 BlockBegin* osr_entry = compilation()->hir()->osr_entry();
111 ValueStack* entry_state = osr_entry->end()->state();
112 int number_of_locks = entry_state->locks_size();
113
114 // Create a frame for the compiled activation.
115 __ build_frame(initial_frame_size_in_bytes(), bang_size_in_bytes());
116
117 // OSR buffer is
118 //
119 // locals[nlocals-1..0]
120 // monitors[number_of_locks-1..0]
121 //
122 // Locals is a direct copy of the interpreter frame so in the osr buffer
123 // the first slot in the local array is the last local from the interpreter
124 // and the last slot is local[0] (receiver) from the interpreter
125 //
126 // Similarly with locks. The first lock slot in the osr buffer is the nth lock
127 // from the interpreter frame, the nth lock slot in the osr buffer is 0th lock
128 // in the interpreter frame (the method lock if a sync method)
129
130 // Initialize monitors in the compiled activation.
131 // I0: pointer to osr buffer
132 //
133 // All other registers are dead at this point and the locals will be
134 // copied into place by code emitted in the IR.
135
|
95 __ z_br(klass);
96
97 __ bind(L_skip_barrier);
98 }
99
100 void LIR_Assembler::osr_entry() {
101 // On-stack-replacement entry sequence (interpreter frame layout described in frame_s390.hpp):
102 //
103 // 1. Create a new compiled activation.
104 // 2. Initialize local variables in the compiled activation. The expression stack must be empty
105 // at the osr_bci; it is not initialized.
106 // 3. Jump to the continuation address in compiled code to resume execution.
107
108 // OSR entry point
109 offsets()->set_value(CodeOffsets::OSR_Entry, code_offset());
110 BlockBegin* osr_entry = compilation()->hir()->osr_entry();
111 ValueStack* entry_state = osr_entry->end()->state();
112 int number_of_locks = entry_state->locks_size();
113
114 // Create a frame for the compiled activation.
115 __ build_frame(initial_frame_size_in_bytes(), bang_size_in_bytes(), compilation()->max_monitors());
116
117 // OSR buffer is
118 //
119 // locals[nlocals-1..0]
120 // monitors[number_of_locks-1..0]
121 //
122 // Locals is a direct copy of the interpreter frame so in the osr buffer
123 // the first slot in the local array is the last local from the interpreter
124 // and the last slot is local[0] (receiver) from the interpreter
125 //
126 // Similarly with locks. The first lock slot in the osr buffer is the nth lock
127 // from the interpreter frame, the nth lock slot in the osr buffer is 0th lock
128 // in the interpreter frame (the method lock if a sync method)
129
130 // Initialize monitors in the compiled activation.
131 // I0: pointer to osr buffer
132 //
133 // All other registers are dead at this point and the locals will be
134 // copied into place by code emitted in the IR.
135
|