comparison src/share/vm/graal/graalCodeInstaller.cpp @ 18223:17c98fad6980

converted HotSpotResolvedObjectType to an interface
author Doug Simon <doug.simon@oracle.com>
date Mon, 03 Nov 2014 17:03:19 +0100
parents a8cff27ca2e1
children e04712c8928a
comparison
equal deleted inserted replaced
18222:a8cff27ca2e1 18223:17c98fad6980
164 164
165 return map; 165 return map;
166 } 166 }
167 167
168 static void record_metadata_reference(oop obj, jlong prim, jboolean compressed, OopRecorder* oop_recorder) { 168 static void record_metadata_reference(oop obj, jlong prim, jboolean compressed, OopRecorder* oop_recorder) {
169 if (obj->is_a(HotSpotResolvedObjectType::klass())) { 169 if (obj->is_a(HotSpotResolvedObjectTypeImpl::klass())) {
170 Klass* klass = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(obj)); 170 Klass* klass = java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(obj));
171 if (compressed) { 171 if (compressed) {
172 assert(Klass::decode_klass((narrowKlass) prim) == klass, err_msg("%s @ " INTPTR_FORMAT " != " INTPTR_FORMAT, klass->name()->as_C_string(), p2i(klass), prim)); 172 assert(Klass::decode_klass((narrowKlass) prim) == klass, err_msg("%s @ " INTPTR_FORMAT " != " INTPTR_FORMAT, klass->name()->as_C_string(), p2i(klass), prim));
173 } else { 173 } else {
174 assert((Klass*) prim == klass, err_msg("%s @ " INTPTR_FORMAT " != " INTPTR_FORMAT, klass->name()->as_C_string(), p2i(klass), prim)); 174 assert((Klass*) prim == klass, err_msg("%s @ " INTPTR_FORMAT " != " INTPTR_FORMAT, klass->name()->as_C_string(), p2i(klass), prim));
175 } 175 }
184 assert(java_lang_String::is_instance(obj), 184 assert(java_lang_String::is_instance(obj),
185 err_msg("unexpected metadata reference (%s) for constant " JLONG_FORMAT " (" INTPTR_FORMAT ")", obj->klass()->name()->as_C_string(), prim, prim)); 185 err_msg("unexpected metadata reference (%s) for constant " JLONG_FORMAT " (" INTPTR_FORMAT ")", obj->klass()->name()->as_C_string(), prim, prim));
186 } 186 }
187 } 187 }
188 188
189 // Records any Metadata values embedded in a Constant (e.g., the value returned by HotSpotResolvedObjectType.klass()). 189 // Records any Metadata values embedded in a Constant (e.g., the value returned by HotSpotResolvedObjectTypeImpl.klass()).
190 static void record_metadata_in_constant(oop constant, OopRecorder* oop_recorder) { 190 static void record_metadata_in_constant(oop constant, OopRecorder* oop_recorder) {
191 if (constant->is_a(HotSpotMetaspaceConstant::klass())) { 191 if (constant->is_a(HotSpotMetaspaceConstant::klass())) {
192 oop obj = HotSpotMetaspaceConstant::metaspaceObject(constant); 192 oop obj = HotSpotMetaspaceConstant::metaspaceObject(constant);
193 jlong prim = HotSpotMetaspaceConstant::primitive(constant); 193 jlong prim = HotSpotMetaspaceConstant::primitive(constant);
194 assert(Kind::typeChar(Value::kind(constant)) == 'j', "must have word kind"); 194 assert(Kind::typeChar(Value::kind(constant)) == 'j', "must have word kind");
322 } 322 }
323 } 323 }
324 } else if (value->is_a(VirtualObject::klass())) { 324 } else if (value->is_a(VirtualObject::klass())) {
325 oop type = VirtualObject::type(value); 325 oop type = VirtualObject::type(value);
326 int id = VirtualObject::id(value); 326 int id = VirtualObject::id(value);
327 oop javaMirror = HotSpotResolvedObjectType::javaClass(type); 327 oop javaMirror = HotSpotResolvedObjectTypeImpl::javaClass(type);
328 Klass* klass = java_lang_Class::as_Klass(javaMirror); 328 Klass* klass = java_lang_Class::as_Klass(javaMirror);
329 bool isLongArray = klass == Universe::longArrayKlassObj(); 329 bool isLongArray = klass == Universe::longArrayKlassObj();
330 330
331 for (jint i = 0; i < objects->length(); i++) { 331 for (jint i = 0; i < objects->length(); i++) {
332 ObjectValue* obj = (ObjectValue*) objects->at(i); 332 ObjectValue* obj = (ObjectValue*) objects->at(i);
651 _dependencies->assert_evol_method(method()); 651 _dependencies->assert_evol_method(method());
652 } 652 }
653 653
654 void CodeInstaller::assumption_NoFinalizableSubclass(Handle assumption) { 654 void CodeInstaller::assumption_NoFinalizableSubclass(Handle assumption) {
655 Handle receiverType_handle = Assumptions_NoFinalizableSubclass::receiverType(assumption()); 655 Handle receiverType_handle = Assumptions_NoFinalizableSubclass::receiverType(assumption());
656 Klass* receiverType = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(receiverType_handle)); 656 Klass* receiverType = java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(receiverType_handle));
657 _dependencies->assert_has_no_finalizable_subclasses(receiverType); 657 _dependencies->assert_has_no_finalizable_subclasses(receiverType);
658 } 658 }
659 659
660 void CodeInstaller::assumption_ConcreteSubtype(Handle assumption) { 660 void CodeInstaller::assumption_ConcreteSubtype(Handle assumption) {
661 Handle context_handle = Assumptions_ConcreteSubtype::context(assumption()); 661 Handle context_handle = Assumptions_ConcreteSubtype::context(assumption());
662 Handle subtype_handle = Assumptions_ConcreteSubtype::subtype(assumption()); 662 Handle subtype_handle = Assumptions_ConcreteSubtype::subtype(assumption());
663 Klass* context = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(context_handle)); 663 Klass* context = java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(context_handle));
664 Klass* subtype = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(subtype_handle)); 664 Klass* subtype = java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(subtype_handle));
665 665
666 if (context != subtype) { 666 if (context != subtype) {
667 assert(context->is_abstract(), ""); 667 assert(context->is_abstract(), "");
668 _dependencies->assert_abstract_with_unique_concrete_subtype(context, subtype); 668 _dependencies->assert_abstract_with_unique_concrete_subtype(context, subtype);
669 } else { 669 } else {
674 void CodeInstaller::assumption_ConcreteMethod(Handle assumption) { 674 void CodeInstaller::assumption_ConcreteMethod(Handle assumption) {
675 Handle impl_handle = Assumptions_ConcreteMethod::impl(assumption()); 675 Handle impl_handle = Assumptions_ConcreteMethod::impl(assumption());
676 Handle context_handle = Assumptions_ConcreteMethod::context(assumption()); 676 Handle context_handle = Assumptions_ConcreteMethod::context(assumption());
677 677
678 methodHandle impl = getMethodFromHotSpotMethod(impl_handle()); 678 methodHandle impl = getMethodFromHotSpotMethod(impl_handle());
679 Klass* context = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(context_handle)); 679 Klass* context = java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(context_handle));
680 680
681 _dependencies->assert_unique_concrete_method(context, impl()); 681 _dependencies->assert_unique_concrete_method(context, impl());
682 } 682 }
683 683
684 void CodeInstaller::assumption_CallSiteTargetValue(Handle assumption) { 684 void CodeInstaller::assumption_CallSiteTargetValue(Handle assumption) {