Mercurial > hg > graal-compiler
comparison src/share/vm/ci/ciObjectFactory.cpp @ 989:148e5441d916
6863023: need non-perm oops in code cache for JSR 292
Summary: Make a special root-list for those few nmethods which might contain non-perm oops.
Reviewed-by: twisti, kvn, never, jmasa, ysr
author | jrose |
---|---|
date | Tue, 15 Sep 2009 21:53:47 -0700 |
parents | b32a809aab08 |
children | a1423fe86a18 |
comparison
equal
deleted
inserted
replaced
987:00977607da34 | 989:148e5441d916 |
---|---|
259 // into the cache. | 259 // into the cache. |
260 Handle keyHandle(key); | 260 Handle keyHandle(key); |
261 ciObject* new_object = create_new_object(keyHandle()); | 261 ciObject* new_object = create_new_object(keyHandle()); |
262 assert(keyHandle() == new_object->get_oop(), "must be properly recorded"); | 262 assert(keyHandle() == new_object->get_oop(), "must be properly recorded"); |
263 init_ident_of(new_object); | 263 init_ident_of(new_object); |
264 if (!keyHandle->is_perm()) { | 264 if (!new_object->is_perm()) { |
265 // Not a perm-space object. | 265 // Not a perm-space object. |
266 insert_non_perm(bucket, keyHandle(), new_object); | 266 insert_non_perm(bucket, keyHandle(), new_object); |
267 return new_object; | 267 return new_object; |
268 } | 268 } |
269 new_object->set_perm(); | |
270 if (len != _ci_objects->length()) { | 269 if (len != _ci_objects->length()) { |
271 // creating the new object has recursively entered new objects | 270 // creating the new object has recursively entered new objects |
272 // into the table. We need to recompute our index. | 271 // into the table. We need to recompute our index. |
273 index = find(keyHandle(), _ci_objects); | 272 index = find(keyHandle(), _ci_objects); |
274 } | 273 } |