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;