136 _offset = -1; |
136 _offset = -1; |
137 _is_constant = false; |
137 _is_constant = false; |
138 return; |
138 return; |
139 } |
139 } |
140 |
140 |
|
141 // Access check based on declared_holder. canonical_holder should not be used |
|
142 // to check access because it can erroneously succeed. If this check fails, |
|
143 // propagate the declared holder to will_link() which in turn will bail out |
|
144 // compilation for this field access. |
|
145 if (!Reflection::verify_field_access(klass->get_Klass(), declared_holder->get_Klass(), canonical_holder, field_desc.access_flags(), true)) { |
|
146 _holder = declared_holder; |
|
147 _offset = -1; |
|
148 _is_constant = false; |
|
149 return; |
|
150 } |
|
151 |
141 assert(canonical_holder == field_desc.field_holder(), "just checking"); |
152 assert(canonical_holder == field_desc.field_holder(), "just checking"); |
142 initialize_from(&field_desc); |
153 initialize_from(&field_desc); |
143 } |
154 } |
144 |
155 |
145 ciField::ciField(fieldDescriptor *fd): _known_to_link_with_put(NULL), _known_to_link_with_get(NULL) { |
156 ciField::ciField(fieldDescriptor *fd): _known_to_link_with_put(NULL), _known_to_link_with_get(NULL) { |