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

src/cpu/sparc/vm/templateInterpreter_sparc.cpp

Print this page




 242     case T_BOOLEAN: __ subcc(G0, O0, G0); __ addc(G0, 0, Itos_i); break; // !0 => true; 0 => false
 243     case T_CHAR   : __ sll(O0, 16, O0); __ srl(O0, 16, Itos_i);   break; // cannot use and3, 0xFFFF too big as immediate value!
 244     case T_BYTE   : __ sll(O0, 24, O0); __ sra(O0, 24, Itos_i);   break;
 245     case T_SHORT  : __ sll(O0, 16, O0); __ sra(O0, 16, Itos_i);   break;
 246     case T_LONG   :
 247 #ifndef _LP64
 248                     __ mov(O1, Itos_l2);  // move other half of long
 249 #endif              // ifdef or no ifdef, fall through to the T_INT case
 250     case T_INT    : __ mov(O0, Itos_i);                         break;
 251     case T_VOID   : /* nothing to do */                         break;
 252     case T_FLOAT  : assert(F0 == Ftos_f, "fix this code" );     break;
 253     case T_DOUBLE : assert(F0 == Ftos_d, "fix this code" );     break;
 254     case T_OBJECT :
 255       __ ld_ptr(FP, (frame::interpreter_frame_oop_temp_offset*wordSize) + STACK_BIAS, Itos_i);
 256       __ verify_oop(Itos_i);
 257       break;
 258     default       : ShouldNotReachHere();
 259   }
 260   __ ret();                           // return from interpreter activation
 261   __ delayed()->restore(I5_savedSP, G0, SP);  // remove interpreter frame
 262   NOT_PRODUCT(__ emit_long(0);)       // marker for disassembly
 263   return entry;
 264 }
 265 
 266 address TemplateInterpreterGenerator::generate_safept_entry_for(TosState state, address runtime_entry) {
 267   address entry = __ pc();
 268   __ push(state);
 269   __ call_VM(noreg, runtime_entry);
 270   __ dispatch_via(vtos, Interpreter::normal_table(vtos));
 271   return entry;
 272 }
 273 
 274 
 275 address TemplateInterpreterGenerator::generate_continuation_for(TosState state) {
 276   address entry = __ pc();
 277   __ dispatch_next(state);
 278   return entry;
 279 }
 280 
 281 //
 282 // Helpers for commoning out cases in the various type of method entries.




 242     case T_BOOLEAN: __ subcc(G0, O0, G0); __ addc(G0, 0, Itos_i); break; // !0 => true; 0 => false
 243     case T_CHAR   : __ sll(O0, 16, O0); __ srl(O0, 16, Itos_i);   break; // cannot use and3, 0xFFFF too big as immediate value!
 244     case T_BYTE   : __ sll(O0, 24, O0); __ sra(O0, 24, Itos_i);   break;
 245     case T_SHORT  : __ sll(O0, 16, O0); __ sra(O0, 16, Itos_i);   break;
 246     case T_LONG   :
 247 #ifndef _LP64
 248                     __ mov(O1, Itos_l2);  // move other half of long
 249 #endif              // ifdef or no ifdef, fall through to the T_INT case
 250     case T_INT    : __ mov(O0, Itos_i);                         break;
 251     case T_VOID   : /* nothing to do */                         break;
 252     case T_FLOAT  : assert(F0 == Ftos_f, "fix this code" );     break;
 253     case T_DOUBLE : assert(F0 == Ftos_d, "fix this code" );     break;
 254     case T_OBJECT :
 255       __ ld_ptr(FP, (frame::interpreter_frame_oop_temp_offset*wordSize) + STACK_BIAS, Itos_i);
 256       __ verify_oop(Itos_i);
 257       break;
 258     default       : ShouldNotReachHere();
 259   }
 260   __ ret();                           // return from interpreter activation
 261   __ delayed()->restore(I5_savedSP, G0, SP);  // remove interpreter frame
 262   NOT_PRODUCT(__ emit_int32(0);)       // marker for disassembly
 263   return entry;
 264 }
 265 
 266 address TemplateInterpreterGenerator::generate_safept_entry_for(TosState state, address runtime_entry) {
 267   address entry = __ pc();
 268   __ push(state);
 269   __ call_VM(noreg, runtime_entry);
 270   __ dispatch_via(vtos, Interpreter::normal_table(vtos));
 271   return entry;
 272 }
 273 
 274 
 275 address TemplateInterpreterGenerator::generate_continuation_for(TosState state) {
 276   address entry = __ pc();
 277   __ dispatch_next(state);
 278   return entry;
 279 }
 280 
 281 //
 282 // Helpers for commoning out cases in the various type of method entries.


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