Mercurial > hg > graal-jvmci-8
comparison src/share/vm/c1x/c1x_VMExits.cpp @ 1941:79d04223b8a5
Added caching for resolved types and resolved fields.
This is crucial, because the local load elimination will lead to wrong results, if field equality (of two RiField objects with the same object and the same RiType) is not given. The caching makes sure that the default equals implementation is sufficient.
author | Thomas Wuerthinger <wuerthinger@ssw.jku.at> |
---|---|
date | Tue, 28 Dec 2010 18:33:26 +0100 |
parents | fe69dec9a1ed |
children | 9c96c873c42b |
comparison
equal
deleted
inserted
replaced
1940:e92a9a73324e | 1941:79d04223b8a5 |
---|---|
142 JavaCalls::call_interface(&result, vmExitsKlass(), vmSymbols::createRiTypePrimitive_name(), vmSymbols::createRiTypePrimitive_signature(), &args, THREAD); | 142 JavaCalls::call_interface(&result, vmExitsKlass(), vmSymbols::createRiTypePrimitive_name(), vmSymbols::createRiTypePrimitive_signature(), &args, THREAD); |
143 check_pending_exception("Error while calling createRiTypePrimitive"); | 143 check_pending_exception("Error while calling createRiTypePrimitive"); |
144 return (oop) result.get_jobject(); | 144 return (oop) result.get_jobject(); |
145 } | 145 } |
146 | 146 |
147 oop VMExits::createRiTypeUnresolved(Handle name, jlong accessingClassVmId, TRAPS) { | 147 oop VMExits::createRiTypeUnresolved(Handle name, TRAPS) { |
148 assert(!name.is_null(), "just checking"); | 148 assert(!name.is_null(), "just checking"); |
149 JavaValue result(T_OBJECT); | 149 JavaValue result(T_OBJECT); |
150 JavaCallArguments args; | 150 JavaCallArguments args; |
151 args.push_oop(instance()); | 151 args.push_oop(instance()); |
152 args.push_oop(name); | 152 args.push_oop(name); |
153 args.push_long(accessingClassVmId); | |
154 JavaCalls::call_interface(&result, vmExitsKlass(), vmSymbols::createRiTypeUnresolved_name(), vmSymbols::createRiTypeUnresolved_signature(), &args, THREAD); | 153 JavaCalls::call_interface(&result, vmExitsKlass(), vmSymbols::createRiTypeUnresolved_name(), vmSymbols::createRiTypeUnresolved_signature(), &args, THREAD); |
155 check_pending_exception("Error while calling createRiTypeUnresolved"); | 154 check_pending_exception("Error while calling createRiTypeUnresolved"); |
156 return (oop) result.get_jobject(); | 155 return (oop) result.get_jobject(); |
157 } | 156 } |
158 | 157 |