diff src/share/vm/graal/graalCompilerToVM.cpp @ 4316:b4b16e4e043f

Fix eager resolving for class constants
author Peter Hofer <peter.hofer@jku.at>
date Mon, 23 Jan 2012 14:35:29 +0100
parents 874fcc2ddd9d
children 539fca6a3b98
line wrap: on
line diff
--- a/src/share/vm/graal/graalCompilerToVM.cpp	Mon Jan 23 12:21:06 2012 +0100
+++ b/src/share/vm/graal/graalCompilerToVM.cpp	Mon Jan 23 14:35:29 2012 +0100
@@ -506,7 +506,9 @@
   
   constantPoolOop cp = instanceKlass::cast(java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(type)))->constants();
   int byteCode = (op & 0xFF);
-  if (byteCode != Bytecodes::_checkcast && byteCode != Bytecodes::_instanceof && byteCode != Bytecodes::_new && byteCode != Bytecodes::_anewarray && byteCode != Bytecodes::_multianewarray) {
+  if (byteCode != Bytecodes::_checkcast && byteCode != Bytecodes::_instanceof && byteCode != Bytecodes::_new && byteCode != Bytecodes::_anewarray
+      && byteCode != Bytecodes::_multianewarray && byteCode != Bytecodes::_ldc && byteCode != Bytecodes::_ldc_w && byteCode != Bytecodes::_ldc2_w)
+  {
     index = cp->remap_instruction_operand_from_cache(GraalCompiler::to_cp_index_u2(index));
   }
   constantTag tag = cp->tag_at(index);