Mercurial > hg > graal-jvmci-8
comparison src/share/vm/interpreter/bytecodeInterpreter.cpp @ 2256:173926398291
7018673: Zero: 6953144, 6990754 and 7009756 made some changes which broke Zero
Reviewed-by: kvn, chrisphi, twisti
author | twisti |
---|---|
date | Fri, 11 Feb 2011 03:17:53 -0800 |
parents | 8012aa3ccede |
children | 850b2295a494 |
comparison
equal
deleted
inserted
replaced
2255:bf29934d2f4f | 2256: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 // |