src/cpu/sparc/vm/cppInterpreter_sparc.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6817525 Sdiff src/cpu/sparc/vm

src/cpu/sparc/vm/cppInterpreter_sparc.cpp

Print this page




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 );


src/cpu/sparc/vm/cppInterpreter_sparc.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File