src/share/vm/interpreter/bytecodeInterpreter.cpp

changeset 2563
173926398291
parent 2462
8012aa3ccede
child 2567
850b2295a494
equal deleted inserted replaced
2562:bf29934d2f4f 2563:173926398291
1934 CASE(_new): { 1934 CASE(_new): {
1935 u2 index = Bytes::get_Java_u2(pc+1); 1935 u2 index = Bytes::get_Java_u2(pc+1);
1936 constantPoolOop constants = istate->method()->constants(); 1936 constantPoolOop constants = istate->method()->constants();
1937 if (!constants->tag_at(index).is_unresolved_klass()) { 1937 if (!constants->tag_at(index).is_unresolved_klass()) {
1938 // Make sure klass is initialized and doesn't have a finalizer 1938 // Make sure klass is initialized and doesn't have a finalizer
1939 oop entry = (klassOop) *constants->obj_at_addr(index); 1939 oop entry = constants->slot_at(index).get_oop();
1940 assert(entry->is_klass(), "Should be resolved klass"); 1940 assert(entry->is_klass(), "Should be resolved klass");
1941 klassOop k_entry = (klassOop) entry; 1941 klassOop k_entry = (klassOop) entry;
1942 assert(k_entry->klass_part()->oop_is_instance(), "Should be instanceKlass"); 1942 assert(k_entry->klass_part()->oop_is_instance(), "Should be instanceKlass");
1943 instanceKlass* ik = (instanceKlass*) k_entry->klass_part(); 1943 instanceKlass* ik = (instanceKlass*) k_entry->klass_part();
1944 if ( ik->is_initialized() && ik->can_be_fastpath_allocated() ) { 1944 if ( ik->is_initialized() && ik->can_be_fastpath_allocated() ) {
2024 // Constant pool may have actual klass or unresolved klass. If it is 2024 // Constant pool may have actual klass or unresolved klass. If it is
2025 // unresolved we must resolve it 2025 // unresolved we must resolve it
2026 if (METHOD->constants()->tag_at(index).is_unresolved_klass()) { 2026 if (METHOD->constants()->tag_at(index).is_unresolved_klass()) {
2027 CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception); 2027 CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception);
2028 } 2028 }
2029 klassOop klassOf = (klassOop) *(METHOD->constants()->obj_at_addr(index)); 2029 klassOop klassOf = (klassOop) METHOD->constants()->slot_at(index).get_oop();
2030 klassOop objKlassOop = STACK_OBJECT(-1)->klass(); //ebx 2030 klassOop objKlassOop = STACK_OBJECT(-1)->klass(); //ebx
2031 // 2031 //
2032 // Check for compatibilty. This check must not GC!! 2032 // Check for compatibilty. This check must not GC!!
2033 // Seems way more expensive now that we must dispatch 2033 // Seems way more expensive now that we must dispatch
2034 // 2034 //
2059 // Constant pool may have actual klass or unresolved klass. If it is 2059 // Constant pool may have actual klass or unresolved klass. If it is
2060 // unresolved we must resolve it 2060 // unresolved we must resolve it
2061 if (METHOD->constants()->tag_at(index).is_unresolved_klass()) { 2061 if (METHOD->constants()->tag_at(index).is_unresolved_klass()) {
2062 CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception); 2062 CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception);
2063 } 2063 }
2064 klassOop klassOf = (klassOop) *(METHOD->constants()->obj_at_addr(index)); 2064 klassOop klassOf = (klassOop) METHOD->constants()->slot_at(index).get_oop();
2065 klassOop objKlassOop = STACK_OBJECT(-1)->klass(); 2065 klassOop objKlassOop = STACK_OBJECT(-1)->klass();
2066 // 2066 //
2067 // Check for compatibilty. This check must not GC!! 2067 // Check for compatibilty. This check must not GC!!
2068 // Seems way more expensive now that we must dispatch 2068 // Seems way more expensive now that we must dispatch
2069 // 2069 //

mercurial