--- a/hotspot/src/share/vm/ci/ciEnv.cpp Wed Nov 12 11:01:31 2008 -0800
+++ b/hotspot/src/share/vm/ci/ciEnv.cpp Wed Nov 12 22:33:26 2008 -0800
@@ -484,11 +484,16 @@
} else if (tag.is_double()) {
return ciConstant((jdouble)cpool->double_at(index));
} else if (tag.is_string() || tag.is_unresolved_string()) {
- oop string = cpool->string_at(index, THREAD);
- if (HAS_PENDING_EXCEPTION) {
- CLEAR_PENDING_EXCEPTION;
- record_out_of_memory_failure();
- return ciConstant();
+ oop string = NULL;
+ if (cpool->is_pseudo_string_at(index)) {
+ string = cpool->pseudo_string_at(index);
+ } else {
+ string = cpool->string_at(index, THREAD);
+ if (HAS_PENDING_EXCEPTION) {
+ CLEAR_PENDING_EXCEPTION;
+ record_out_of_memory_failure();
+ return ciConstant();
+ }
}
ciObject* constant = get_object(string);
assert (constant->is_instance(), "must be an instance, or not? ");