hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp
changeset 22504 b1837533ba65
parent 21198 dd647e8d1d72
child 23844 0c29a324ae14
equal deleted inserted replaced
22503:45d730e9202e 22504:b1837533ba65
   153 }
   153 }
   154 
   154 
   155 
   155 
   156 address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, size_t index_size) {
   156 address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, size_t index_size) {
   157   address entry = __ pc();
   157   address entry = __ pc();
       
   158 
       
   159   if (state == atos) {
       
   160     __ profile_return_type(O0, G3_scratch, G1_scratch);
       
   161   }
   158 
   162 
   159 #if !defined(_LP64) && defined(COMPILER2)
   163 #if !defined(_LP64) && defined(COMPILER2)
   160   // All return values are where we want them, except for Longs.  C2 returns
   164   // All return values are where we want them, except for Longs.  C2 returns
   161   // longs in G1 in the 32-bit build whereas the interpreter wants them in O0/O1.
   165   // longs in G1 in the 32-bit build whereas the interpreter wants them in O0/O1.
   162   // Since the interpreter will return longs in G1 and O0/O1 in the 32bit
   166   // Since the interpreter will return longs in G1 and O0/O1 in the 32bit
  1331   // runtime, exception handling i.e. unlock_if_synchronized_method will
  1335   // runtime, exception handling i.e. unlock_if_synchronized_method will
  1332   // check this thread local flag.
  1336   // check this thread local flag.
  1333   __ movbool(true, G3_scratch);
  1337   __ movbool(true, G3_scratch);
  1334   __ stbool(G3_scratch, do_not_unlock_if_synchronized);
  1338   __ stbool(G3_scratch, do_not_unlock_if_synchronized);
  1335 
  1339 
       
  1340   __ profile_parameters_type(G1_scratch, G3_scratch, G4_scratch, Lscratch);
  1336   // increment invocation counter and check for overflow
  1341   // increment invocation counter and check for overflow
  1337   //
  1342   //
  1338   // Note: checking for negative value instead of overflow
  1343   // Note: checking for negative value instead of overflow
  1339   //       so we have a 'sticky' overflow test (may be of
  1344   //       so we have a 'sticky' overflow test (may be of
  1340   //       importance as soon as we have true MT/MP)
  1345   //       importance as soon as we have true MT/MP)