Mercurial > hg > graal-compiler
comparison src/share/vm/graal/graalCodeInstaller.cpp @ 13261:0ffe9e4bb364
don't go through VM to create HotSpotResolvedObjectType (part 1)
author | twisti |
---|---|
date | Sun, 08 Dec 2013 13:27:52 -0800 |
parents | 2e76d94f8383 |
children | 03bb0ee05409 |
comparison
equal
deleted
inserted
replaced
13260:f795de8d8b71 | 13261:0ffe9e4bb364 |
---|---|
141 if (kind == wordKind) { | 141 if (kind == wordKind) { |
142 oop obj = Constant::object(constant); | 142 oop obj = Constant::object(constant); |
143 jlong prim = Constant::primitive(constant); | 143 jlong prim = Constant::primitive(constant); |
144 if (obj != NULL) { | 144 if (obj != NULL) { |
145 if (obj->is_a(HotSpotResolvedObjectType::klass())) { | 145 if (obj->is_a(HotSpotResolvedObjectType::klass())) { |
146 Klass* klass = (Klass*) (address) HotSpotResolvedObjectType::metaspaceKlass(obj); | 146 Klass* klass = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(obj)); |
147 assert((Klass*) prim == klass, err_msg("%s @ %p != %p", klass->name()->as_C_string(), klass, prim)); | 147 assert((Klass*) prim == klass, err_msg("%s @ %p != %p", klass->name()->as_C_string(), klass, prim)); |
148 int index = oop_recorder->find_index(klass); | 148 int index = oop_recorder->find_index(klass); |
149 TRACE_graal_3("metadata[%d of %d] = %s", index, oop_recorder->metadata_count(), klass->name()->as_C_string()); | 149 TRACE_graal_3("metadata[%d of %d] = %s", index, oop_recorder->metadata_count(), klass->name()->as_C_string()); |
150 } else if (obj->is_a(HotSpotResolvedJavaMethod::klass())) { | 150 } else if (obj->is_a(HotSpotResolvedJavaMethod::klass())) { |
151 Method* method = (Method*) (address) HotSpotResolvedJavaMethod::metaspaceMethod(obj); | 151 Method* method = (Method*) (address) HotSpotResolvedJavaMethod::metaspaceMethod(obj); |
245 } | 245 } |
246 tty->print("%i", type); | 246 tty->print("%i", type); |
247 } else if (value->is_a(VirtualObject::klass())) { | 247 } else if (value->is_a(VirtualObject::klass())) { |
248 oop type = VirtualObject::type(value); | 248 oop type = VirtualObject::type(value); |
249 int id = VirtualObject::id(value); | 249 int id = VirtualObject::id(value); |
250 oop javaMirror = HotSpotResolvedObjectType::javaMirror(type); | 250 oop javaMirror = HotSpotResolvedObjectType::javaClass(type); |
251 Klass* klass = java_lang_Class::as_Klass(javaMirror); | 251 Klass* klass = java_lang_Class::as_Klass(javaMirror); |
252 bool isLongArray = klass == Universe::longArrayKlassObj(); | 252 bool isLongArray = klass == Universe::longArrayKlassObj(); |
253 | 253 |
254 for (jint i = 0; i < objects->length(); i++) { | 254 for (jint i = 0; i < objects->length(); i++) { |
255 ObjectValue* obj = (ObjectValue*) objects->at(i); | 255 ObjectValue* obj = (ObjectValue*) objects->at(i); |
547 _dependencies->assert_evol_method(method()); | 547 _dependencies->assert_evol_method(method()); |
548 } | 548 } |
549 | 549 |
550 void CodeInstaller::assumption_NoFinalizableSubclass(Handle assumption) { | 550 void CodeInstaller::assumption_NoFinalizableSubclass(Handle assumption) { |
551 Handle receiverType_handle = Assumptions_NoFinalizableSubclass::receiverType(assumption()); | 551 Handle receiverType_handle = Assumptions_NoFinalizableSubclass::receiverType(assumption()); |
552 Klass* receiverType = asKlass(HotSpotResolvedObjectType::metaspaceKlass(receiverType_handle)); | 552 Klass* receiverType = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(receiverType_handle)); |
553 _dependencies->assert_has_no_finalizable_subclasses(receiverType); | 553 _dependencies->assert_has_no_finalizable_subclasses(receiverType); |
554 } | 554 } |
555 | 555 |
556 void CodeInstaller::assumption_ConcreteSubtype(Handle assumption) { | 556 void CodeInstaller::assumption_ConcreteSubtype(Handle assumption) { |
557 Handle context_handle = Assumptions_ConcreteSubtype::context(assumption()); | 557 Handle context_handle = Assumptions_ConcreteSubtype::context(assumption()); |
558 Handle subtype_handle = Assumptions_ConcreteSubtype::subtype(assumption()); | 558 Handle subtype_handle = Assumptions_ConcreteSubtype::subtype(assumption()); |
559 Klass* context = asKlass(HotSpotResolvedObjectType::metaspaceKlass(context_handle)); | 559 Klass* context = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(context_handle)); |
560 Klass* subtype = asKlass(HotSpotResolvedObjectType::metaspaceKlass(subtype_handle)); | 560 Klass* subtype = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(subtype_handle)); |
561 | 561 |
562 _dependencies->assert_leaf_type(subtype); | 562 _dependencies->assert_leaf_type(subtype); |
563 if (context != subtype) { | 563 if (context != subtype) { |
564 assert(context->is_abstract(), ""); | 564 assert(context->is_abstract(), ""); |
565 _dependencies->assert_abstract_with_unique_concrete_subtype(context, subtype); | 565 _dependencies->assert_abstract_with_unique_concrete_subtype(context, subtype); |
569 void CodeInstaller::assumption_ConcreteMethod(Handle assumption) { | 569 void CodeInstaller::assumption_ConcreteMethod(Handle assumption) { |
570 Handle impl_handle = Assumptions_ConcreteMethod::impl(assumption()); | 570 Handle impl_handle = Assumptions_ConcreteMethod::impl(assumption()); |
571 Handle context_handle = Assumptions_ConcreteMethod::context(assumption()); | 571 Handle context_handle = Assumptions_ConcreteMethod::context(assumption()); |
572 | 572 |
573 methodHandle impl = getMethodFromHotSpotMethod(impl_handle()); | 573 methodHandle impl = getMethodFromHotSpotMethod(impl_handle()); |
574 Klass* context = asKlass(HotSpotResolvedObjectType::metaspaceKlass(context_handle)); | 574 Klass* context = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(context_handle)); |
575 | 575 |
576 _dependencies->assert_unique_concrete_method(context, impl()); | 576 _dependencies->assert_unique_concrete_method(context, impl()); |
577 } | 577 } |
578 | 578 |
579 void CodeInstaller::assumption_CallSiteTargetValue(Handle assumption) { | 579 void CodeInstaller::assumption_CallSiteTargetValue(Handle assumption) { |