Mercurial > hg > truffle
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 // |