Mercurial > hg > truffle
comparison src/share/vm/opto/callGenerator.cpp @ 20573:8ed0a8dbea70
8059556: C2: crash while inlining MethodHandle invocation w/ null receiver
Reviewed-by: kvn, jrose
author | vlivanov |
---|---|
date | Wed, 01 Oct 2014 12:34:45 -0700 |
parents | 411e30e5fbb8 |
children | 7848fc12602b |
comparison
equal
deleted
inserted
replaced
20572:87f199a9c1b1 | 20573:8ed0a8dbea70 |
---|---|
860 target = C->optimize_virtual_call(caller, jvms->bci(), klass, klass, | 860 target = C->optimize_virtual_call(caller, jvms->bci(), klass, klass, |
861 target, receiver_type, is_virtual, | 861 target, receiver_type, is_virtual, |
862 call_does_dispatch, vtable_index); // out-parameters | 862 call_does_dispatch, vtable_index); // out-parameters |
863 // We lack profiling at this call but type speculation may | 863 // We lack profiling at this call but type speculation may |
864 // provide us with a type | 864 // provide us with a type |
865 speculative_receiver_type = receiver_type->speculative_type(); | 865 speculative_receiver_type = (receiver_type != NULL) ? receiver_type->speculative_type() : NULL; |
866 } | 866 } |
867 | 867 |
868 CallGenerator* cg = C->call_generator(target, vtable_index, call_does_dispatch, jvms, true, PROB_ALWAYS, speculative_receiver_type, true, true); | 868 CallGenerator* cg = C->call_generator(target, vtable_index, call_does_dispatch, jvms, true, PROB_ALWAYS, speculative_receiver_type, true, true); |
869 assert(cg == NULL || !cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here"); | 869 assert(cg == NULL || !cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here"); |
870 if (cg != NULL && cg->is_inline()) | 870 if (cg != NULL && cg->is_inline()) |