Mercurial > hg > truffle
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) { |