7200949: JSR 292: rubybench/bench/time/bench_base64.rb fails with jruby.jar not on boot class path

Reviewed-by: jrose, kvn
This commit is contained in:
Christian Thalinger 2012-10-01 14:50:10 -07:00
parent 9972f3d338
commit 59b8489a0c
22 changed files with 358 additions and 135 deletions

View file

@ -30,6 +30,7 @@
#include "ci/ciMethod.hpp"
#include "ci/ciMethodData.hpp"
#include "ci/ciMethodHandle.hpp"
#include "ci/ciMethodType.hpp"
#include "ci/ciNullObject.hpp"
#include "ci/ciObjArray.hpp"
#include "ci/ciObjArrayKlass.hpp"
@ -237,23 +238,23 @@ ciObject* ciObjectFactory::get(oop key) {
assert(key == NULL || Universe::heap()->is_in_reserved(key), "must be");
NonPermObject* &bucket = find_non_perm(key);
if (bucket != NULL) {
return bucket->object();
}
NonPermObject* &bucket = find_non_perm(key);
if (bucket != NULL) {
return bucket->object();
}
// The ciObject does not yet exist. Create it and insert it
// into the cache.
Handle keyHandle(key);
ciObject* new_object = create_new_object(keyHandle());
assert(keyHandle() == new_object->get_oop(), "must be properly recorded");
init_ident_of(new_object);
// The ciObject does not yet exist. Create it and insert it
// into the cache.
Handle keyHandle(key);
ciObject* new_object = create_new_object(keyHandle());
assert(keyHandle() == new_object->get_oop(), "must be properly recorded");
init_ident_of(new_object);
assert(Universe::heap()->is_in_reserved(new_object->get_oop()), "must be");
// Not a perm-space object.
insert_non_perm(bucket, keyHandle(), new_object);
return new_object;
}
// Not a perm-space object.
insert_non_perm(bucket, keyHandle(), new_object);
return new_object;
}
// ------------------------------------------------------------------
// ciObjectFactory::get
@ -324,6 +325,8 @@ ciObject* ciObjectFactory::create_new_object(oop o) {
return new (arena()) ciMemberName(h_i);
else if (java_lang_invoke_MethodHandle::is_instance(o))
return new (arena()) ciMethodHandle(h_i);
else if (java_lang_invoke_MethodType::is_instance(o))
return new (arena()) ciMethodType(h_i);
else
return new (arena()) ciInstance(h_i);
} else if (o->is_objArray()) {