comparison src/share/vm/graal/graalCompiler.cpp @ 7084:9ba90252ce08

HotSpotResolvedJavaType is now the HotSpot implementation of ResolvedJavaType, Renamed old HotSpotResolvedJavaType to HotSpotResolvedObjectType Renamed HotSpotTypePrimitive to HotSpotResolvedPrimitiveType Renamed HotSpotTypeUnresolved to HotSpotUnresolvedJavaType
author Gilles Duboscq <duboscq@ssw.jku.at>
date Wed, 28 Nov 2012 14:07:25 +0100
parents 41938af2b3d8
children eec7173947a1
comparison
equal deleted inserted replaced
7083:fa3c8913d674 7084:9ba90252ce08
162 assert(_initialized, "must already be initialized"); 162 assert(_initialized, "must already be initialized");
163 ResourceMark rm; 163 ResourceMark rm;
164 ciEnv* current_env = JavaThread::current()->env(); 164 ciEnv* current_env = JavaThread::current()->env();
165 JavaThread::current()->set_env(NULL); 165 JavaThread::current()->set_env(NULL);
166 JavaThread::current()->set_compiling(true); 166 JavaThread::current()->set_compiling(true);
167 Handle holder = GraalCompiler::createHotSpotResolvedJavaType(method, CHECK); 167 Handle holder = GraalCompiler::createHotSpotResolvedObjectType(method, CHECK);
168 jboolean success = VMToCompiler::compileMethod(method(), holder, entry_bci, blocking, method->graal_priority()); 168 jboolean success = VMToCompiler::compileMethod(method(), holder, entry_bci, blocking, method->graal_priority());
169 JavaThread::current()->set_compiling(false); 169 JavaThread::current()->set_compiling(false);
170 JavaThread::current()->set_env(current_env); 170 JavaThread::current()->set_env(current_env);
171 if (success != JNI_TRUE) { 171 if (success != JNI_TRUE) {
172 method->clear_queued_for_compilation(); 172 method->clear_queued_for_compilation();
251 BasicType basicType = java_lang_Class::primitive_type(java_class()); 251 BasicType basicType = java_lang_Class::primitive_type(java_class());
252 return VMToCompiler::createPrimitiveJavaType((int) basicType, THREAD); 252 return VMToCompiler::createPrimitiveJavaType((int) basicType, THREAD);
253 } else { 253 } else {
254 KlassHandle klass = java_lang_Class::as_Klass(java_class()); 254 KlassHandle klass = java_lang_Class::as_Klass(java_class());
255 Handle name = java_lang_String::create_from_symbol(klass->name(), CHECK_NULL); 255 Handle name = java_lang_String::create_from_symbol(klass->name(), CHECK_NULL);
256 return GraalCompiler::createHotSpotResolvedJavaType(klass, name, CHECK_NULL); 256 return GraalCompiler::createHotSpotResolvedObjectType(klass, name, CHECK_NULL);
257 } 257 }
258 } 258 }
259 259
260 Handle GraalCompiler::get_JavaType(KlassHandle klass, TRAPS) { 260 Handle GraalCompiler::get_JavaType(KlassHandle klass, TRAPS) {
261 Handle name = VmIds::toString<Handle>(klass->name(), THREAD); 261 Handle name = VmIds::toString<Handle>(klass->name(), THREAD);
262 return createHotSpotResolvedJavaType(klass, name, CHECK_NULL); 262 return createHotSpotResolvedObjectType(klass, name, CHECK_NULL);
263 } 263 }
264 264
265 Handle GraalCompiler::get_JavaField(int offset, int flags, Symbol* field_name, Handle field_holder, Handle field_type, TRAPS) { 265 Handle GraalCompiler::get_JavaField(int offset, int flags, Symbol* field_name, Handle field_holder, Handle field_type, TRAPS) {
266 Handle name = VmIds::toString<Handle>(field_name, CHECK_NULL); 266 Handle name = VmIds::toString<Handle>(field_name, CHECK_NULL);
267 return VMToCompiler::createJavaField(field_holder, name, field_type, offset, flags, false, CHECK_NULL); 267 return VMToCompiler::createJavaField(field_holder, name, field_type, offset, flags, false, CHECK_NULL);
268 } 268 }
269 269
270 Handle GraalCompiler::createHotSpotResolvedJavaType(methodHandle method, TRAPS) { 270 Handle GraalCompiler::createHotSpotResolvedObjectType(methodHandle method, TRAPS) {
271 KlassHandle klass = method->method_holder(); 271 KlassHandle klass = method->method_holder();
272 oop java_class = klass->java_mirror(); 272 oop java_class = klass->java_mirror();
273 oop graal_mirror = java_lang_Class::graal_mirror(java_class); 273 oop graal_mirror = java_lang_Class::graal_mirror(java_class);
274 if (graal_mirror != NULL) { 274 if (graal_mirror != NULL) {
275 assert(graal_mirror->is_a(HotSpotResolvedJavaType::klass()), "unexpected class..."); 275 assert(graal_mirror->is_a(HotSpotResolvedObjectType::klass()), "unexpected class...");
276 return graal_mirror; 276 return graal_mirror;
277 } 277 }
278 Handle name = java_lang_String::create_from_symbol(klass->name(), CHECK_NULL); 278 Handle name = java_lang_String::create_from_symbol(klass->name(), CHECK_NULL);
279 return GraalCompiler::createHotSpotResolvedJavaType(klass, name, CHECK_NULL); 279 return GraalCompiler::createHotSpotResolvedObjectType(klass, name, CHECK_NULL);
280 } 280 }
281 281
282 Handle GraalCompiler::createHotSpotResolvedJavaType(KlassHandle klass, Handle name, TRAPS) { 282 Handle GraalCompiler::createHotSpotResolvedObjectType(KlassHandle klass, Handle name, TRAPS) {
283 oop java_class = klass->java_mirror(); 283 oop java_class = klass->java_mirror();
284 oop graal_mirror = java_lang_Class::graal_mirror(java_class); 284 oop graal_mirror = java_lang_Class::graal_mirror(java_class);
285 if (graal_mirror != NULL) { 285 if (graal_mirror != NULL) {
286 assert(graal_mirror->is_a(HotSpotResolvedJavaType::klass()), "unexpected class..."); 286 assert(graal_mirror->is_a(HotSpotResolvedObjectType::klass()), "unexpected class...");
287 return graal_mirror; 287 return graal_mirror;
288 } 288 }
289 289
290 Handle simpleName = name; 290 Handle simpleName = name;
291 if (klass->oop_is_instance()) { 291 if (klass->oop_is_instance()) {
297 // TODO replace this with the correct value 297 // TODO replace this with the correct value
298 bool hasFinalizableSubclass = false; 298 bool hasFinalizableSubclass = false;
299 299
300 int sizeOrSpecies; 300 int sizeOrSpecies;
301 if (klass->is_interface()) { 301 if (klass->is_interface()) {
302 sizeOrSpecies = (int) 0x80000000; // see HotSpotResolvedJavaType.INTERFACE_SPECIES_VALUE 302 sizeOrSpecies = (int) 0x80000000; // see HotSpotResolvedObjectType.INTERFACE_SPECIES_VALUE
303 } else if (klass->oop_is_array()) { 303 } else if (klass->oop_is_array()) {
304 sizeOrSpecies = (int) 0x7fffffff; // see HotSpotResolvedJavaType.ARRAY_SPECIES_VALUE 304 sizeOrSpecies = (int) 0x7fffffff; // see HotSpotResolvedObjectType.ARRAY_SPECIES_VALUE
305 } else { 305 } else {
306 sizeOrSpecies = InstanceKlass::cast(klass())->size_helper() * HeapWordSize; 306 sizeOrSpecies = InstanceKlass::cast(klass())->size_helper() * HeapWordSize;
307 if (!InstanceKlass::cast(klass())->can_be_fastpath_allocated()) { 307 if (!InstanceKlass::cast(klass())->can_be_fastpath_allocated()) {
308 sizeOrSpecies = -sizeOrSpecies; 308 sizeOrSpecies = -sizeOrSpecies;
309 } 309 }