comparison src/share/vm/interpreter/bytecodeInterpreter.cpp @ 2260:850b2295a494

Merge
author kvn
date Mon, 14 Feb 2011 14:36:29 -0800
parents b92c45f2bc75 173926398291
children c7f3d0b4570f 151da0c145a8
comparison
equal deleted inserted replaced
2208:762bc029de50 2260:850b2295a494
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 //