Mercurial > hg > truffle
comparison 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 |
comparison
equal
deleted
inserted
replaced
10280:8bcfd9ce2c6b | 10281:1da5d70655e9 |
---|---|
820 // Returns a newly allocated unescaped object. | 820 // Returns a newly allocated unescaped object. |
821 add_java_object(call, PointsToNode::NoEscape); | 821 add_java_object(call, PointsToNode::NoEscape); |
822 ptnode_adr(call_idx)->set_scalar_replaceable(false); | 822 ptnode_adr(call_idx)->set_scalar_replaceable(false); |
823 } else if (meth->is_boxing_method()) { | 823 } else if (meth->is_boxing_method()) { |
824 // Returns boxing object | 824 // Returns boxing object |
825 add_java_object(call, PointsToNode::NoEscape); | 825 PointsToNode::EscapeState es; |
826 vmIntrinsics::ID intr = meth->intrinsic_id(); | |
827 if (intr == vmIntrinsics::_floatValue || intr == vmIntrinsics::_doubleValue) { | |
828 // It does not escape if object is always allocated. | |
829 es = PointsToNode::NoEscape; | |
830 } else { | |
831 // It escapes globally if object could be loaded from cache. | |
832 es = PointsToNode::GlobalEscape; | |
833 } | |
834 add_java_object(call, es); | |
826 } else { | 835 } else { |
827 BCEscapeAnalyzer* call_analyzer = meth->get_bcea(); | 836 BCEscapeAnalyzer* call_analyzer = meth->get_bcea(); |
828 call_analyzer->copy_dependencies(_compile->dependencies()); | 837 call_analyzer->copy_dependencies(_compile->dependencies()); |
829 if (call_analyzer->is_return_allocated()) { | 838 if (call_analyzer->is_return_allocated()) { |
830 // Returns a newly allocated unescaped object, simply | 839 // Returns a newly allocated unescaped object, simply |