< prev index next >

src/share/vm/interpreter/templateInterpreter.cpp

Print this page
rev 9088 : 8139040: Fix initializations before ShouldNotReachHere() etc. and enable -Wuninitialized on linux.


 545     case ftos: vep = __ pc(); __ pop(ftos); fep = __ pc(); generate_and_dispatch(t); break;
 546     case dtos: vep = __ pc(); __ pop(dtos); dep = __ pc(); generate_and_dispatch(t); break;
 547     case vtos: set_vtos_entry_points(t, bep, cep, sep, aep, iep, lep, fep, dep, vep);     break;
 548     default  : ShouldNotReachHere();                                                 break;
 549   }
 550 }
 551 
 552 
 553 //------------------------------------------------------------------------------------------------------------------------
 554 
 555 void TemplateInterpreterGenerator::generate_and_dispatch(Template* t, TosState tos_out) {
 556   if (PrintBytecodeHistogram)                                    histogram_bytecode(t);
 557 #ifndef PRODUCT
 558   // debugging code
 559   if (CountBytecodes || TraceBytecodes || StopInterpreterAt > 0) count_bytecode();
 560   if (PrintBytecodePairHistogram)                                histogram_bytecode_pair(t);
 561   if (TraceBytecodes)                                            trace_bytecode(t);
 562   if (StopInterpreterAt > 0)                                     stop_interpreter_at();
 563   __ verify_FPU(1, t->tos_in());
 564 #endif // !PRODUCT
 565   int step;
 566   if (!t->does_dispatch()) {
 567     step = t->is_wide() ? Bytecodes::wide_length_for(t->bytecode()) : Bytecodes::length_for(t->bytecode());
 568     if (tos_out == ilgl) tos_out = t->tos_out();
 569     // compute bytecode size
 570     assert(step > 0, "just checkin'");
 571     // setup stuff for dispatching next bytecode
 572     if (ProfileInterpreter && VerifyDataPointer
 573         && MethodData::bytecode_has_profile(t->bytecode())) {
 574       __ verify_method_data_pointer();
 575     }
 576     __ dispatch_prolog(tos_out, step);
 577   }
 578   // generate template
 579   t->generate(_masm);
 580   // advance
 581   if (t->does_dispatch()) {
 582 #ifdef ASSERT
 583     // make sure execution doesn't go beyond this point if code is broken
 584     __ should_not_reach_here();
 585 #endif // ASSERT




 545     case ftos: vep = __ pc(); __ pop(ftos); fep = __ pc(); generate_and_dispatch(t); break;
 546     case dtos: vep = __ pc(); __ pop(dtos); dep = __ pc(); generate_and_dispatch(t); break;
 547     case vtos: set_vtos_entry_points(t, bep, cep, sep, aep, iep, lep, fep, dep, vep);     break;
 548     default  : ShouldNotReachHere();                                                 break;
 549   }
 550 }
 551 
 552 
 553 //------------------------------------------------------------------------------------------------------------------------
 554 
 555 void TemplateInterpreterGenerator::generate_and_dispatch(Template* t, TosState tos_out) {
 556   if (PrintBytecodeHistogram)                                    histogram_bytecode(t);
 557 #ifndef PRODUCT
 558   // debugging code
 559   if (CountBytecodes || TraceBytecodes || StopInterpreterAt > 0) count_bytecode();
 560   if (PrintBytecodePairHistogram)                                histogram_bytecode_pair(t);
 561   if (TraceBytecodes)                                            trace_bytecode(t);
 562   if (StopInterpreterAt > 0)                                     stop_interpreter_at();
 563   __ verify_FPU(1, t->tos_in());
 564 #endif // !PRODUCT
 565   int step = 0;
 566   if (!t->does_dispatch()) {
 567     step = t->is_wide() ? Bytecodes::wide_length_for(t->bytecode()) : Bytecodes::length_for(t->bytecode());
 568     if (tos_out == ilgl) tos_out = t->tos_out();
 569     // compute bytecode size
 570     assert(step > 0, "just checkin'");
 571     // setup stuff for dispatching next bytecode
 572     if (ProfileInterpreter && VerifyDataPointer
 573         && MethodData::bytecode_has_profile(t->bytecode())) {
 574       __ verify_method_data_pointer();
 575     }
 576     __ dispatch_prolog(tos_out, step);
 577   }
 578   // generate template
 579   t->generate(_masm);
 580   // advance
 581   if (t->does_dispatch()) {
 582 #ifdef ASSERT
 583     // make sure execution doesn't go beyond this point if code is broken
 584     __ should_not_reach_here();
 585 #endif // ASSERT


< prev index next >