comparison src/share/vm/graal/graalCodeInstaller.cpp @ 18229:e04712c8928a

Merge
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Mon, 03 Nov 2014 10:31:39 -0800
parents 6eda3b299460 17c98fad6980
children 4221c8332c34
comparison
equal deleted inserted replaced
18228:ab489bac3bc8 18229:e04712c8928a
63 ConstantIntValue* CodeInstaller::_int_1_scope_value = new (ResourceObj::C_HEAP, mtCompiler) ConstantIntValue(1); 63 ConstantIntValue* CodeInstaller::_int_1_scope_value = new (ResourceObj::C_HEAP, mtCompiler) ConstantIntValue(1);
64 ConstantIntValue* CodeInstaller::_int_2_scope_value = new (ResourceObj::C_HEAP, mtCompiler) ConstantIntValue(2); 64 ConstantIntValue* CodeInstaller::_int_2_scope_value = new (ResourceObj::C_HEAP, mtCompiler) ConstantIntValue(2);
65 LocationValue* CodeInstaller::_illegal_value = new (ResourceObj::C_HEAP, mtCompiler) LocationValue(Location()); 65 LocationValue* CodeInstaller::_illegal_value = new (ResourceObj::C_HEAP, mtCompiler) LocationValue(Location());
66 66
67 Method* getMethodFromHotSpotMethod(oop hotspot_method) { 67 Method* getMethodFromHotSpotMethod(oop hotspot_method) {
68 assert(hotspot_method != NULL && hotspot_method->is_a(HotSpotResolvedJavaMethod::klass()), "sanity"); 68 assert(hotspot_method != NULL && hotspot_method->is_a(HotSpotResolvedJavaMethodImpl::klass()), "sanity");
69 return asMethod(HotSpotResolvedJavaMethod::metaspaceMethod(hotspot_method)); 69 return asMethod(HotSpotResolvedJavaMethodImpl::metaspaceMethod(hotspot_method));
70 } 70 }
71 71
72 const int MapWordBits = 64; 72 const int MapWordBits = 64;
73 73
74 static bool is_bit_set(typeArrayOop words, int i) { 74 static bool is_bit_set(typeArrayOop words, int i) {
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 }
176 int index = oop_recorder->find_index(klass); 176 int index = oop_recorder->find_index(klass);
177 TRACE_graal_3("metadata[%d of %d] = %s", index, oop_recorder->metadata_count(), klass->name()->as_C_string()); 177 TRACE_graal_3("metadata[%d of %d] = %s", index, oop_recorder->metadata_count(), klass->name()->as_C_string());
178 } else if (obj->is_a(HotSpotResolvedJavaMethod::klass())) { 178 } else if (obj->is_a(HotSpotResolvedJavaMethodImpl::klass())) {
179 Method* method = (Method*) (address) HotSpotResolvedJavaMethod::metaspaceMethod(obj); 179 Method* method = (Method*) (address) HotSpotResolvedJavaMethodImpl::metaspaceMethod(obj);
180 assert(!compressed, err_msg("unexpected compressed method pointer %s @ " INTPTR_FORMAT " = " INTPTR_FORMAT, method->name()->as_C_string(), p2i(method), prim)); 180 assert(!compressed, err_msg("unexpected compressed method pointer %s @ " INTPTR_FORMAT " = " INTPTR_FORMAT, method->name()->as_C_string(), p2i(method), prim));
181 int index = oop_recorder->find_index(method); 181 int index = oop_recorder->find_index(method);
182 TRACE_graal_3("metadata[%d of %d] = %s", index, oop_recorder->metadata_count(), method->name()->as_C_string()); 182 TRACE_graal_3("metadata[%d of %d] = %s", index, oop_recorder->metadata_count(), method->name()->as_C_string());
183 } else { 183 } else {
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);
653 _dependencies->assert_evol_method(method()); 653 _dependencies->assert_evol_method(method());
654 } 654 }
655 655
656 void CodeInstaller::assumption_NoFinalizableSubclass(Handle assumption) { 656 void CodeInstaller::assumption_NoFinalizableSubclass(Handle assumption) {
657 Handle receiverType_handle = Assumptions_NoFinalizableSubclass::receiverType(assumption()); 657 Handle receiverType_handle = Assumptions_NoFinalizableSubclass::receiverType(assumption());
658 Klass* receiverType = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(receiverType_handle)); 658 Klass* receiverType = java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(receiverType_handle));
659 _dependencies->assert_has_no_finalizable_subclasses(receiverType); 659 _dependencies->assert_has_no_finalizable_subclasses(receiverType);
660 } 660 }
661 661
662 void CodeInstaller::assumption_ConcreteSubtype(Handle assumption) { 662 void CodeInstaller::assumption_ConcreteSubtype(Handle assumption) {
663 Handle context_handle = Assumptions_ConcreteSubtype::context(assumption()); 663 Handle context_handle = Assumptions_ConcreteSubtype::context(assumption());
664 Handle subtype_handle = Assumptions_ConcreteSubtype::subtype(assumption()); 664 Handle subtype_handle = Assumptions_ConcreteSubtype::subtype(assumption());
665 Klass* context = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(context_handle)); 665 Klass* context = java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(context_handle));
666 Klass* subtype = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(subtype_handle)); 666 Klass* subtype = java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(subtype_handle));
667 667
668 if (context != subtype) { 668 if (context != subtype) {
669 assert(context->is_abstract(), ""); 669 assert(context->is_abstract(), "");
670 _dependencies->assert_abstract_with_unique_concrete_subtype(context, subtype); 670 _dependencies->assert_abstract_with_unique_concrete_subtype(context, subtype);
671 } else { 671 } else {
676 void CodeInstaller::assumption_ConcreteMethod(Handle assumption) { 676 void CodeInstaller::assumption_ConcreteMethod(Handle assumption) {
677 Handle impl_handle = Assumptions_ConcreteMethod::impl(assumption()); 677 Handle impl_handle = Assumptions_ConcreteMethod::impl(assumption());
678 Handle context_handle = Assumptions_ConcreteMethod::context(assumption()); 678 Handle context_handle = Assumptions_ConcreteMethod::context(assumption());
679 679
680 methodHandle impl = getMethodFromHotSpotMethod(impl_handle()); 680 methodHandle impl = getMethodFromHotSpotMethod(impl_handle());
681 Klass* context = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(context_handle)); 681 Klass* context = java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(context_handle));
682 682
683 _dependencies->assert_unique_concrete_method(context, impl()); 683 _dependencies->assert_unique_concrete_method(context, impl());
684 } 684 }
685 685
686 void CodeInstaller::assumption_CallSiteTargetValue(Handle assumption) { 686 void CodeInstaller::assumption_CallSiteTargetValue(Handle assumption) {