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 }