Mercurial > hg > graal-jvmci-8
comparison src/share/vm/ci/ciObjectFactory.cpp @ 6822:f6b0eb4e44cf
7200949: JSR 292: rubybench/bench/time/bench_base64.rb fails with jruby.jar not on boot class path
Reviewed-by: jrose, kvn
author | twisti |
---|---|
date | Mon, 01 Oct 2012 14:50:10 -0700 |
parents | da91efe96a93 |
children | 6e5a59a8e4a7 8e47bac5643a |
comparison
equal
deleted
inserted
replaced
6811:1b582b1bf7cb | 6822:f6b0eb4e44cf |
---|---|
28 #include "ci/ciInstanceKlass.hpp" | 28 #include "ci/ciInstanceKlass.hpp" |
29 #include "ci/ciMemberName.hpp" | 29 #include "ci/ciMemberName.hpp" |
30 #include "ci/ciMethod.hpp" | 30 #include "ci/ciMethod.hpp" |
31 #include "ci/ciMethodData.hpp" | 31 #include "ci/ciMethodData.hpp" |
32 #include "ci/ciMethodHandle.hpp" | 32 #include "ci/ciMethodHandle.hpp" |
33 #include "ci/ciMethodType.hpp" | |
33 #include "ci/ciNullObject.hpp" | 34 #include "ci/ciNullObject.hpp" |
34 #include "ci/ciObjArray.hpp" | 35 #include "ci/ciObjArray.hpp" |
35 #include "ci/ciObjArrayKlass.hpp" | 36 #include "ci/ciObjArrayKlass.hpp" |
36 #include "ci/ciObject.hpp" | 37 #include "ci/ciObject.hpp" |
37 #include "ci/ciObjectFactory.hpp" | 38 #include "ci/ciObjectFactory.hpp" |
235 ciObject* ciObjectFactory::get(oop key) { | 236 ciObject* ciObjectFactory::get(oop key) { |
236 ASSERT_IN_VM; | 237 ASSERT_IN_VM; |
237 | 238 |
238 assert(key == NULL || Universe::heap()->is_in_reserved(key), "must be"); | 239 assert(key == NULL || Universe::heap()->is_in_reserved(key), "must be"); |
239 | 240 |
240 NonPermObject* &bucket = find_non_perm(key); | 241 NonPermObject* &bucket = find_non_perm(key); |
241 if (bucket != NULL) { | 242 if (bucket != NULL) { |
242 return bucket->object(); | 243 return bucket->object(); |
243 } | 244 } |
244 | 245 |
245 // The ciObject does not yet exist. Create it and insert it | 246 // The ciObject does not yet exist. Create it and insert it |
246 // into the cache. | 247 // into the cache. |
247 Handle keyHandle(key); | 248 Handle keyHandle(key); |
248 ciObject* new_object = create_new_object(keyHandle()); | 249 ciObject* new_object = create_new_object(keyHandle()); |
249 assert(keyHandle() == new_object->get_oop(), "must be properly recorded"); | 250 assert(keyHandle() == new_object->get_oop(), "must be properly recorded"); |
250 init_ident_of(new_object); | 251 init_ident_of(new_object); |
251 assert(Universe::heap()->is_in_reserved(new_object->get_oop()), "must be"); | 252 assert(Universe::heap()->is_in_reserved(new_object->get_oop()), "must be"); |
252 | 253 |
253 // Not a perm-space object. | 254 // Not a perm-space object. |
254 insert_non_perm(bucket, keyHandle(), new_object); | 255 insert_non_perm(bucket, keyHandle(), new_object); |
255 return new_object; | 256 return new_object; |
256 } | 257 } |
257 | 258 |
258 // ------------------------------------------------------------------ | 259 // ------------------------------------------------------------------ |
259 // ciObjectFactory::get | 260 // ciObjectFactory::get |
260 // | 261 // |
261 // Get the ciObject corresponding to some oop. If the ciObject has | 262 // Get the ciObject corresponding to some oop. If the ciObject has |
322 return new (arena()) ciCallSite(h_i); | 323 return new (arena()) ciCallSite(h_i); |
323 else if (java_lang_invoke_MemberName::is_instance(o)) | 324 else if (java_lang_invoke_MemberName::is_instance(o)) |
324 return new (arena()) ciMemberName(h_i); | 325 return new (arena()) ciMemberName(h_i); |
325 else if (java_lang_invoke_MethodHandle::is_instance(o)) | 326 else if (java_lang_invoke_MethodHandle::is_instance(o)) |
326 return new (arena()) ciMethodHandle(h_i); | 327 return new (arena()) ciMethodHandle(h_i); |
328 else if (java_lang_invoke_MethodType::is_instance(o)) | |
329 return new (arena()) ciMethodType(h_i); | |
327 else | 330 else |
328 return new (arena()) ciInstance(h_i); | 331 return new (arena()) ciInstance(h_i); |
329 } else if (o->is_objArray()) { | 332 } else if (o->is_objArray()) { |
330 objArrayHandle h_oa(THREAD, (objArrayOop)o); | 333 objArrayHandle h_oa(THREAD, (objArrayOop)o); |
331 return new (arena()) ciObjArray(h_oa); | 334 return new (arena()) ciObjArray(h_oa); |