8026253: New type profiling points: sparc support

C1 and interpreter support for new type profiling on sparc

Reviewed-by: kvn, twisti
This commit is contained in:
Roland Westrelin 2014-01-14 14:51:47 +01:00
parent bff5f5c875
commit b1c92a140b
8 changed files with 385 additions and 12 deletions

View file

@ -156,6 +156,10 @@ address TemplateInterpreterGenerator::generate_StackOverflowError_handler() {
address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, size_t index_size) {
address entry = __ pc();
if (state == atos) {
__ profile_return_type(O0, G3_scratch, G1_scratch);
}
#if !defined(_LP64) && defined(COMPILER2)
// All return values are where we want them, except for Longs. C2 returns
// longs in G1 in the 32-bit build whereas the interpreter wants them in O0/O1.
@ -1333,6 +1337,7 @@ address InterpreterGenerator::generate_normal_entry(bool synchronized) {
__ movbool(true, G3_scratch);
__ stbool(G3_scratch, do_not_unlock_if_synchronized);
__ profile_parameters_type(G1_scratch, G3_scratch, G4_scratch, Lscratch);
// increment invocation counter and check for overflow
//
// Note: checking for negative value instead of overflow