199 } |
199 } |
200 _is_constant = false; |
200 _is_constant = false; |
201 return; |
201 return; |
202 } |
202 } |
203 |
203 |
204 // This field just may be constant. The only cases where it will |
204 // This field just may be constant. The only case where it will |
205 // not be constant are: |
205 // not be constant is when the field is a *special* static&final field |
206 // |
206 // whose value may change. The three examples are java.lang.System.in, |
207 // 1. The field holds a non-perm-space oop. The field is, strictly |
207 // java.lang.System.out, and java.lang.System.err. |
208 // speaking, constant but we cannot embed non-perm-space oops into |
|
209 // generated code. For the time being we need to consider the |
|
210 // field to be not constant. |
|
211 // 2. The field is a *special* static&final field whose value |
|
212 // may change. The three examples are java.lang.System.in, |
|
213 // java.lang.System.out, and java.lang.System.err. |
|
214 |
208 |
215 KlassHandle k = _holder->get_Klass(); |
209 KlassHandle k = _holder->get_Klass(); |
216 assert( SystemDictionary::System_klass() != NULL, "Check once per vm"); |
210 assert( SystemDictionary::System_klass() != NULL, "Check once per vm"); |
217 if( k() == SystemDictionary::System_klass() ) { |
211 if( k() == SystemDictionary::System_klass() ) { |
218 // Check offsets for case 2: System.in, System.out, or System.err |
212 // Check offsets for case 2: System.in, System.out, or System.err |