aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/c1
diff options
context:
space:
mode:
authorroland <none@none>2014-01-14 14:51:47 +0100
committerroland <none@none>2014-01-14 14:51:47 +0100
commit19b3f11329847d154115535c7eff1d3607be0830 (patch)
tree7ae601cdff4d8e21ede969aaff36888756059fea /src/share/vm/c1
parent7966b94f20cffbe50aaaf91eccaf8174573f70a5 (diff)
8026253: New type profiling points: sparc support
Summary: c1 and interpreter support for new type profiling on sparc Reviewed-by: kvn, twisti
Diffstat (limited to 'src/share/vm/c1')
-rw-r--r--src/share/vm/c1/c1_LIRGenerator.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/share/vm/c1/c1_LIRGenerator.cpp b/src/share/vm/c1/c1_LIRGenerator.cpp
index 8eb018988..5ed047656 100644
--- a/src/share/vm/c1/c1_LIRGenerator.cpp
+++ b/src/share/vm/c1/c1_LIRGenerator.cpp
@@ -3288,7 +3288,10 @@ void LIRGenerator::do_ProfileReturnType(ProfileReturnType* x) {
ciSignature* signature_at_call = NULL;
x->method()->get_method_at_bci(bci, ignored_will_link, &signature_at_call);
- ciKlass* exact = profile_type(md, 0, md->byte_offset_of_slot(data, ret->type_offset()),
+ // The offset within the MDO of the entry to update may be too large
+ // to be used in load/store instructions on some platforms. So have
+ // profile_type() compute the address of the profile in a register.
+ ciKlass* exact = profile_type(md, md->byte_offset_of_slot(data, ret->type_offset()), 0,
ret->type(), x->ret(), mdp,
!x->needs_null_check(),
signature_at_call->return_type()->as_klass(),