comparison src/cpu/sparc/vm/templateInterpreter_sparc.cpp @ 17628:add2caa66e7e

8026253: New type profiling points: sparc support Summary: c1 and interpreter support for new type profiling on sparc Reviewed-by: kvn, twisti
author roland
date Tue, 14 Jan 2014 14:51:47 +0100
parents bd3237e0e18d
children d8041d695d19 2100bf712e2a
comparison
equal deleted inserted replaced
17627:d7773b29c65a 17628:add2caa66e7e
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)