Mercurial > hg > graal-jvmci-8
comparison src/share/vm/graal/graalCodeInstaller.cpp @ 7101:0778b04fc682
better encoding of dependencies during dependency recording by Graal
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 29 Nov 2012 22:53:03 +0100 |
parents | eec7173947a1 |
children | 1baf7f1e3f23 |
comparison
equal
deleted
inserted
replaced
7100:35568cbc6a43 | 7101:0778b04fc682 |
---|---|
397 } | 397 } |
398 | 398 |
399 void CodeInstaller::assumption_MethodContents(Handle assumption) { | 399 void CodeInstaller::assumption_MethodContents(Handle assumption) { |
400 Handle method_handle = Assumptions_MethodContents::method(assumption()); | 400 Handle method_handle = Assumptions_MethodContents::method(assumption()); |
401 methodHandle method = getMethodFromHotSpotMethod(method_handle()); | 401 methodHandle method = getMethodFromHotSpotMethod(method_handle()); |
402 DepValue method_dv(_oop_recorder, method()); | 402 _dependencies->assert_evol_method(method()); |
403 _dependencies->assert_evol_method(method_dv); | |
404 } | 403 } |
405 | 404 |
406 void CodeInstaller::assumption_ConcreteSubtype(Handle assumption) { | 405 void CodeInstaller::assumption_ConcreteSubtype(Handle assumption) { |
407 Handle context_handle = Assumptions_ConcreteSubtype::context(assumption()); | 406 Handle context_handle = Assumptions_ConcreteSubtype::context(assumption()); |
408 Handle subtype_handle = Assumptions_ConcreteSubtype::subtype(assumption()); | 407 Handle subtype_handle = Assumptions_ConcreteSubtype::subtype(assumption()); |
409 Klass* context = asKlass(HotSpotResolvedObjectType::metaspaceKlass(context_handle)); | 408 Klass* context = asKlass(HotSpotResolvedObjectType::metaspaceKlass(context_handle)); |
410 Klass* subtype = asKlass(HotSpotResolvedObjectType::metaspaceKlass(subtype_handle)); | 409 Klass* subtype = asKlass(HotSpotResolvedObjectType::metaspaceKlass(subtype_handle)); |
411 | 410 |
412 DepValue subtype_dv(_oop_recorder, subtype); | 411 _dependencies->assert_leaf_type(subtype); |
413 _dependencies->assert_leaf_type(subtype_dv); | |
414 if (context != subtype) { | 412 if (context != subtype) { |
415 assert(context->is_abstract(), ""); | 413 assert(context->is_abstract(), ""); |
416 DepValue context_dv(_oop_recorder, context); | 414 _dependencies->assert_abstract_with_unique_concrete_subtype(context, subtype); |
417 _dependencies->assert_abstract_with_unique_concrete_subtype(context_dv, subtype_dv); | |
418 } | 415 } |
419 } | 416 } |
420 | 417 |
421 void CodeInstaller::assumption_ConcreteMethod(Handle assumption) { | 418 void CodeInstaller::assumption_ConcreteMethod(Handle assumption) { |
422 Handle impl_handle = Assumptions_ConcreteMethod::impl(assumption()); | 419 Handle impl_handle = Assumptions_ConcreteMethod::impl(assumption()); |
423 Handle context_handle = Assumptions_ConcreteMethod::context(assumption()); | 420 Handle context_handle = Assumptions_ConcreteMethod::context(assumption()); |
424 | 421 |
425 methodHandle impl = getMethodFromHotSpotMethod(impl_handle()); | 422 methodHandle impl = getMethodFromHotSpotMethod(impl_handle()); |
426 Klass* context = asKlass(HotSpotResolvedObjectType::metaspaceKlass(context_handle)); | 423 Klass* context = asKlass(HotSpotResolvedObjectType::metaspaceKlass(context_handle)); |
427 | 424 |
428 DepValue context_dv(_oop_recorder, context); | 425 _dependencies->assert_unique_concrete_method(context, impl()); |
429 DepValue impl_dv(_oop_recorder, impl()); | |
430 _dependencies->assert_unique_concrete_method(context_dv, impl_dv); | |
431 } | 426 } |
432 | 427 |
433 void CodeInstaller::process_exception_handlers() { | 428 void CodeInstaller::process_exception_handlers() { |
434 // allocate some arrays for use by the collection code. | 429 // allocate some arrays for use by the collection code. |
435 const int num_handlers = 5; | 430 const int num_handlers = 5; |