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) {