comparison src/share/vm/ci/ciTypeFlow.cpp @ 20804:7848fc12602b

Merge with jdk8u40-b25
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Tue, 07 Apr 2015 14:58:49 +0200
parents 89152779163c 9e69e8d1c900
children 8d4496e10a51
comparison
equal deleted inserted replaced
20184:84105dcdb05b 20804:7848fc12602b
33 #include "ci/ciTypeFlow.hpp" 33 #include "ci/ciTypeFlow.hpp"
34 #include "compiler/compileLog.hpp" 34 #include "compiler/compileLog.hpp"
35 #include "interpreter/bytecode.hpp" 35 #include "interpreter/bytecode.hpp"
36 #include "interpreter/bytecodes.hpp" 36 #include "interpreter/bytecodes.hpp"
37 #include "memory/allocation.inline.hpp" 37 #include "memory/allocation.inline.hpp"
38 #include "opto/compile.hpp"
38 #include "runtime/deoptimization.hpp" 39 #include "runtime/deoptimization.hpp"
39 #include "utilities/growableArray.hpp" 40 #include "utilities/growableArray.hpp"
40 41
41 // ciTypeFlow::JsrSet 42 // ciTypeFlow::JsrSet
42 // 43 //
728 if (basic_type == T_OBJECT || basic_type == T_ARRAY) { 729 if (basic_type == T_OBJECT || basic_type == T_ARRAY) {
729 ciObject* obj = con.as_object(); 730 ciObject* obj = con.as_object();
730 if (obj->is_null_object()) { 731 if (obj->is_null_object()) {
731 push_null(); 732 push_null();
732 } else { 733 } else {
733 assert(obj->is_instance(), "must be java_mirror of klass"); 734 assert(obj->is_instance() || obj->is_array(), "must be java_mirror of klass");
734 push_object(obj->klass()); 735 push_object(obj->klass());
735 } 736 }
736 } else { 737 } else {
737 push_translate(ciType::make(basic_type)); 738 push_translate(ciType::make(basic_type));
738 } 739 }
2644 if (!blk->is_visited()) { 2645 if (!blk->is_visited()) {
2645 // forward arc in graph 2646 // forward arc in graph
2646 assert (!blk->has_pre_order(), ""); 2647 assert (!blk->has_pre_order(), "");
2647 blk->set_next_pre_order(); 2648 blk->set_next_pre_order();
2648 2649
2649 if (_next_pre_order >= MaxNodeLimit / 2) { 2650 if (_next_pre_order >= (int)Compile::current()->max_node_limit() / 2) {
2650 // Too many basic blocks. Bail out. 2651 // Too many basic blocks. Bail out.
2651 // This can happen when try/finally constructs are nested to depth N, 2652 // This can happen when try/finally constructs are nested to depth N,
2652 // and there is O(2**N) cloning of jsr bodies. See bug 4697245! 2653 // and there is O(2**N) cloning of jsr bodies. See bug 4697245!
2653 // "MaxNodeLimit / 2" is used because probably the parser will 2654 // "MaxNodeLimit / 2" is used because probably the parser will
2654 // generate at least twice that many nodes and bail out. 2655 // generate at least twice that many nodes and bail out.