hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp
changeset 8330 5f6046a69677
parent 8107 78e5bd944384
parent 8326 752682831ac6
child 8862 51b3027ec748
child 8725 8c1e3dd5fe1b
equal deleted inserted replaced
8123:2d683e4bb197 8330:5f6046a69677
  1940       CASE(_new): {
  1940       CASE(_new): {
  1941         u2 index = Bytes::get_Java_u2(pc+1);
  1941         u2 index = Bytes::get_Java_u2(pc+1);
  1942         constantPoolOop constants = istate->method()->constants();
  1942         constantPoolOop constants = istate->method()->constants();
  1943         if (!constants->tag_at(index).is_unresolved_klass()) {
  1943         if (!constants->tag_at(index).is_unresolved_klass()) {
  1944           // Make sure klass is initialized and doesn't have a finalizer
  1944           // Make sure klass is initialized and doesn't have a finalizer
  1945           oop entry = (klassOop) *constants->obj_at_addr(index);
  1945           oop entry = constants->slot_at(index).get_oop();
  1946           assert(entry->is_klass(), "Should be resolved klass");
  1946           assert(entry->is_klass(), "Should be resolved klass");
  1947           klassOop k_entry = (klassOop) entry;
  1947           klassOop k_entry = (klassOop) entry;
  1948           assert(k_entry->klass_part()->oop_is_instance(), "Should be instanceKlass");
  1948           assert(k_entry->klass_part()->oop_is_instance(), "Should be instanceKlass");
  1949           instanceKlass* ik = (instanceKlass*) k_entry->klass_part();
  1949           instanceKlass* ik = (instanceKlass*) k_entry->klass_part();
  1950           if ( ik->is_initialized() && ik->can_be_fastpath_allocated() ) {
  1950           if ( ik->is_initialized() && ik->can_be_fastpath_allocated() ) {
  2030             // Constant pool may have actual klass or unresolved klass. If it is
  2030             // Constant pool may have actual klass or unresolved klass. If it is
  2031             // unresolved we must resolve it
  2031             // unresolved we must resolve it
  2032             if (METHOD->constants()->tag_at(index).is_unresolved_klass()) {
  2032             if (METHOD->constants()->tag_at(index).is_unresolved_klass()) {
  2033               CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception);
  2033               CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception);
  2034             }
  2034             }
  2035             klassOop klassOf = (klassOop) *(METHOD->constants()->obj_at_addr(index));
  2035             klassOop klassOf = (klassOop) METHOD->constants()->slot_at(index).get_oop();
  2036             klassOop objKlassOop = STACK_OBJECT(-1)->klass(); //ebx
  2036             klassOop objKlassOop = STACK_OBJECT(-1)->klass(); //ebx
  2037             //
  2037             //
  2038             // Check for compatibilty. This check must not GC!!
  2038             // Check for compatibilty. This check must not GC!!
  2039             // Seems way more expensive now that we must dispatch
  2039             // Seems way more expensive now that we must dispatch
  2040             //
  2040             //
  2065             // Constant pool may have actual klass or unresolved klass. If it is
  2065             // Constant pool may have actual klass or unresolved klass. If it is
  2066             // unresolved we must resolve it
  2066             // unresolved we must resolve it
  2067             if (METHOD->constants()->tag_at(index).is_unresolved_klass()) {
  2067             if (METHOD->constants()->tag_at(index).is_unresolved_klass()) {
  2068               CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception);
  2068               CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception);
  2069             }
  2069             }
  2070             klassOop klassOf = (klassOop) *(METHOD->constants()->obj_at_addr(index));
  2070             klassOop klassOf = (klassOop) METHOD->constants()->slot_at(index).get_oop();
  2071             klassOop objKlassOop = STACK_OBJECT(-1)->klass();
  2071             klassOop objKlassOop = STACK_OBJECT(-1)->klass();
  2072             //
  2072             //
  2073             // Check for compatibilty. This check must not GC!!
  2073             // Check for compatibilty. This check must not GC!!
  2074             // Seems way more expensive now that we must dispatch
  2074             // Seems way more expensive now that we must dispatch
  2075             //
  2075             //