Mercurial > hg > truffle
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) { |