diff options
author | cfang <none@none> | 2009-04-23 14:04:24 -0700 |
---|---|---|
committer | cfang <none@none> | 2009-04-23 14:04:24 -0700 |
commit | a8289b89245c606c2b98702b33bfa6ef1c257b8f (patch) | |
tree | 173557e6311cf26cce66fb67a4f2b0598bb3c691 /src/share/vm/opto/graphKit.cpp | |
parent | f7b52c44a8f1e0d0a219219ddb30a0366b46b4b4 (diff) |
6589834: deoptimization problem with -XX:+DeoptimizeALot
Summary: Relocate the stack pointer adjustment to where uncommon_trap is actually inserted for new_array.
Reviewed-by: kvn, jrose
Diffstat (limited to 'src/share/vm/opto/graphKit.cpp')
-rw-r--r-- | src/share/vm/opto/graphKit.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/share/vm/opto/graphKit.cpp b/src/share/vm/opto/graphKit.cpp index c37e7c85d..db27bbada 100644 --- a/src/share/vm/opto/graphKit.cpp +++ b/src/share/vm/opto/graphKit.cpp @@ -2980,6 +2980,7 @@ Node* GraphKit::new_instance(Node* klass_node, // See comments on new_instance for the meaning of the other arguments. Node* GraphKit::new_array(Node* klass_node, // array klass (maybe variable) Node* length, // number of array elements + int nargs, // number of arguments to push back for uncommon trap bool raw_mem_only, // affect only raw memory Node* *return_size_val) { jint layout_con = Klass::_lh_neutral_value; @@ -2995,6 +2996,7 @@ Node* GraphKit::new_array(Node* klass_node, // array klass (maybe variable) Node* cmp_lh = _gvn.transform( new(C, 3) CmpINode(layout_val, intcon(layout_con)) ); Node* bol_lh = _gvn.transform( new(C, 2) BoolNode(cmp_lh, BoolTest::eq) ); { BuildCutout unless(this, bol_lh, PROB_MAX); + _sp += nargs; uncommon_trap(Deoptimization::Reason_class_check, Deoptimization::Action_maybe_recompile); } |