diff src/share/vm/c1/c1_LIRGenerator.cpp @ 14518:d8041d695d19

Merged with jdk9/dev/hotspot changeset 3812c088b945
author twisti
date Tue, 11 Mar 2014 18:45:59 -0700
parents 096c224171c4 8cdf3f43f63e
children b51e29501f30 4ca6dc0799b6
line wrap: on
line diff
--- a/src/share/vm/c1/c1_LIRGenerator.cpp	Wed Mar 12 00:00:05 2014 +0100
+++ b/src/share/vm/c1/c1_LIRGenerator.cpp	Tue Mar 11 18:45:59 2014 -0700
@@ -3288,7 +3288,10 @@
   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(),