--- a/hotspot/src/share/vm/ci/ciObjectFactory.cpp Fri Sep 28 14:36:20 2012 -0700
+++ b/hotspot/src/share/vm/ci/ciObjectFactory.cpp Mon Oct 01 14:50:10 2012 -0700
@@ -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 @@
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 @@
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()) {