1171 __ breakpoint_trap(Assembler::zero); 1172 #endif // ASSERT 1173 1174 const int entry_size = frame::interpreter_frame_monitor_size() * wordSize; 1175 __ sub(SP, entry_size, SP); // account for initial monitor 1176 __ sub(O2, entry_size, O2); // initial monitor 1177 __ st_ptr(O1, O2, BasicObjectLock::obj_offset_in_bytes()); // and allocate it for interpreter use 1178 __ bind(done); 1179 } 1180 1181 // Remember initial frame bottom 1182 1183 __ st_ptr(SP, XXX_STATE(_frame_bottom)); 1184 1185 __ st_ptr(O2, XXX_STATE(_stack_base)); 1186 1187 __ sub(O2, wordSize, O2); // prepush 1188 __ st_ptr(O2, XXX_STATE(_stack)); // PREPUSH 1189 1190 __ lduh(max_stack, O3); // Full size expression stack 1191 guarantee(!EnableMethodHandles, "no support yet for java.lang.invoke.MethodHandle"); //6815692 1192 //6815692//if (EnableMethodHandles) 1193 //6815692// __ inc(O3, methodOopDesc::extra_stack_entries()); 1194 __ sll(O3, LogBytesPerWord, O3); 1195 __ sub(O2, O3, O3); 1196 // __ sub(O3, wordSize, O3); // so prepush doesn't look out of bounds 1197 __ st_ptr(O3, XXX_STATE(_stack_limit)); 1198 1199 if (!native) { 1200 // 1201 // Code to initialize locals 1202 // 1203 Register init_value = noreg; // will be G0 if we must clear locals 1204 // Now zero locals 1205 if (true /* zerolocals */ || ClearInterpreterLocals) { 1206 // explicitly initialize locals 1207 init_value = G0; 1208 } else { 1209 #ifdef ASSERT 1210 // initialize locals to a garbage pattern for better debugging 1211 init_value = O3; 1212 __ set( 0x0F0F0F0F, init_value ); | 1171 __ breakpoint_trap(Assembler::zero); 1172 #endif // ASSERT 1173 1174 const int entry_size = frame::interpreter_frame_monitor_size() * wordSize; 1175 __ sub(SP, entry_size, SP); // account for initial monitor 1176 __ sub(O2, entry_size, O2); // initial monitor 1177 __ st_ptr(O1, O2, BasicObjectLock::obj_offset_in_bytes()); // and allocate it for interpreter use 1178 __ bind(done); 1179 } 1180 1181 // Remember initial frame bottom 1182 1183 __ st_ptr(SP, XXX_STATE(_frame_bottom)); 1184 1185 __ st_ptr(O2, XXX_STATE(_stack_base)); 1186 1187 __ sub(O2, wordSize, O2); // prepush 1188 __ st_ptr(O2, XXX_STATE(_stack)); // PREPUSH 1189 1190 __ lduh(max_stack, O3); // Full size expression stack 1191 guarantee(!EnableInvokeDynamic, "no support yet for java.lang.invoke.MethodHandle"); //6815692 1192 //6815692//if (EnableInvokeDynamic) 1193 //6815692// __ inc(O3, methodOopDesc::extra_stack_entries()); 1194 __ sll(O3, LogBytesPerWord, O3); 1195 __ sub(O2, O3, O3); 1196 // __ sub(O3, wordSize, O3); // so prepush doesn't look out of bounds 1197 __ st_ptr(O3, XXX_STATE(_stack_limit)); 1198 1199 if (!native) { 1200 // 1201 // Code to initialize locals 1202 // 1203 Register init_value = noreg; // will be G0 if we must clear locals 1204 // Now zero locals 1205 if (true /* zerolocals */ || ClearInterpreterLocals) { 1206 // explicitly initialize locals 1207 init_value = G0; 1208 } else { 1209 #ifdef ASSERT 1210 // initialize locals to a garbage pattern for better debugging 1211 init_value = O3; 1212 __ set( 0x0F0F0F0F, init_value ); |