Mercurial > hg > truffle
diff src/share/vm/opto/escape.cpp @ 10281:1da5d70655e9
8014286: failed java/lang/Math/DivModTests.java after 6934604 changes
Summary: Corrected escape state for the result of boxing method. Added force inlining executed boxing methods.
Reviewed-by: twisti
author | kvn |
---|---|
date | Mon, 13 May 2013 14:36:39 -0700 |
parents | 70120f47d403 |
children | 83dcb116fdb1 |
line wrap: on
line diff
--- a/src/share/vm/opto/escape.cpp Mon May 13 12:43:10 2013 -0700 +++ b/src/share/vm/opto/escape.cpp Mon May 13 14:36:39 2013 -0700 @@ -822,7 +822,16 @@ ptnode_adr(call_idx)->set_scalar_replaceable(false); } else if (meth->is_boxing_method()) { // Returns boxing object - add_java_object(call, PointsToNode::NoEscape); + PointsToNode::EscapeState es; + vmIntrinsics::ID intr = meth->intrinsic_id(); + if (intr == vmIntrinsics::_floatValue || intr == vmIntrinsics::_doubleValue) { + // It does not escape if object is always allocated. + es = PointsToNode::NoEscape; + } else { + // It escapes globally if object could be loaded from cache. + es = PointsToNode::GlobalEscape; + } + add_java_object(call, es); } else { BCEscapeAnalyzer* call_analyzer = meth->get_bcea(); call_analyzer->copy_dependencies(_compile->dependencies());