comparison src/share/vm/ci/ciMethod.cpp @ 1648:8099e71601df

6968368: SIGSEGV in the BCEscapeAnalyzer::copy_dependencies Summary: Use GrowableArray and VectorSet allocated in ciEnv arena. Reviewed-by: never, twisti
author kvn
date Wed, 14 Jul 2010 14:47:34 -0700
parents e9ff18c4ace7
children e0ba4e04c839
comparison
equal deleted inserted replaced
1647:079980c86f33 1648:8099e71601df
52 _is_compilable = !h_m()->is_not_compilable(); 52 _is_compilable = !h_m()->is_not_compilable();
53 // Lazy fields, filled in on demand. Require allocation. 53 // Lazy fields, filled in on demand. Require allocation.
54 _code = NULL; 54 _code = NULL;
55 _exception_handlers = NULL; 55 _exception_handlers = NULL;
56 _liveness = NULL; 56 _liveness = NULL;
57 _bcea = NULL;
58 _method_blocks = NULL; 57 _method_blocks = NULL;
59 #ifdef COMPILER2 58 #ifdef COMPILER2
60 _flow = NULL; 59 _flow = NULL;
60 _bcea = NULL;
61 #endif // COMPILER2 61 #endif // COMPILER2
62 62
63 ciEnv *env = CURRENT_ENV; 63 ciEnv *env = CURRENT_ENV;
64 if (env->jvmti_can_hotswap_or_post_breakpoint() && _is_compilable) { 64 if (env->jvmti_can_hotswap_or_post_breakpoint() && _is_compilable) {
65 // 6328518 check hotswap conditions under the right lock. 65 // 6328518 check hotswap conditions under the right lock.
119 _holder = holder; 119 _holder = holder;
120 _signature = new (CURRENT_ENV->arena()) ciSignature(_holder, signature); 120 _signature = new (CURRENT_ENV->arena()) ciSignature(_holder, signature);
121 _intrinsic_id = vmIntrinsics::_none; 121 _intrinsic_id = vmIntrinsics::_none;
122 _liveness = NULL; 122 _liveness = NULL;
123 _can_be_statically_bound = false; 123 _can_be_statically_bound = false;
124 _bcea = NULL;
125 _method_blocks = NULL; 124 _method_blocks = NULL;
126 _method_data = NULL; 125 _method_data = NULL;
127 #ifdef COMPILER2 126 #ifdef COMPILER2
128 _flow = NULL; 127 _flow = NULL;
128 _bcea = NULL;
129 #endif // COMPILER2 129 #endif // COMPILER2
130 } 130 }
131 131
132 132
133 // ------------------------------------------------------------------ 133 // ------------------------------------------------------------------
1031 bool ciMethod::has_jsrs () const { FETCH_FLAG_FROM_VM(has_jsrs); } 1031 bool ciMethod::has_jsrs () const { FETCH_FLAG_FROM_VM(has_jsrs); }
1032 bool ciMethod::is_accessor () const { FETCH_FLAG_FROM_VM(is_accessor); } 1032 bool ciMethod::is_accessor () const { FETCH_FLAG_FROM_VM(is_accessor); }
1033 bool ciMethod::is_initializer () const { FETCH_FLAG_FROM_VM(is_initializer); } 1033 bool ciMethod::is_initializer () const { FETCH_FLAG_FROM_VM(is_initializer); }
1034 1034
1035 BCEscapeAnalyzer *ciMethod::get_bcea() { 1035 BCEscapeAnalyzer *ciMethod::get_bcea() {
1036 #ifdef COMPILER2
1036 if (_bcea == NULL) { 1037 if (_bcea == NULL) {
1037 _bcea = new (CURRENT_ENV->arena()) BCEscapeAnalyzer(this, NULL); 1038 _bcea = new (CURRENT_ENV->arena()) BCEscapeAnalyzer(this, NULL);
1038 } 1039 }
1039 return _bcea; 1040 return _bcea;
1041 #else // COMPILER2
1042 ShouldNotReachHere();
1043 return NULL;
1044 #endif // COMPILER2
1040 } 1045 }
1041 1046
1042 ciMethodBlocks *ciMethod::get_method_blocks() { 1047 ciMethodBlocks *ciMethod::get_method_blocks() {
1043 Arena *arena = CURRENT_ENV->arena(); 1048 Arena *arena = CURRENT_ENV->arena();
1044 if (_method_blocks == NULL) { 1049 if (_method_blocks == NULL) {