Mercurial > hg > graal-compiler
comparison src/share/vm/opto/doCall.cpp @ 12956:3213ba4d3dff
8024069: replace_in_map() should operate on parent maps
Summary: type information gets lost because replace_in_map() doesn't update parent maps
Reviewed-by: kvn, twisti
author | roland |
---|---|
date | Sat, 19 Oct 2013 12:16:43 +0200 |
parents | 29bdcf12457c |
children | b2ee5dc63353 |
comparison
equal
deleted
inserted
replaced
12955:252d541466ea | 12956:3213ba4d3dff |
---|---|
493 | 493 |
494 // Bump method data counters (We profile *before* the call is made | 494 // Bump method data counters (We profile *before* the call is made |
495 // because exceptions don't return to the call site.) | 495 // because exceptions don't return to the call site.) |
496 profile_call(receiver); | 496 profile_call(receiver); |
497 | 497 |
498 JVMState* new_jvms = cg->generate(jvms); | 498 JVMState* new_jvms = cg->generate(jvms, this); |
499 if (new_jvms == NULL) { | 499 if (new_jvms == NULL) { |
500 // When inlining attempt fails (e.g., too many arguments), | 500 // When inlining attempt fails (e.g., too many arguments), |
501 // it may contaminate the current compile state, making it | 501 // it may contaminate the current compile state, making it |
502 // impossible to pull back and try again. Once we call | 502 // impossible to pull back and try again. Once we call |
503 // cg->generate(), we are committed. If it fails, the whole | 503 // cg->generate(), we are committed. If it fails, the whole |
507 // This can happen if a library intrinsic is available, but refuses | 507 // This can happen if a library intrinsic is available, but refuses |
508 // the call site, perhaps because it did not match a pattern the | 508 // the call site, perhaps because it did not match a pattern the |
509 // intrinsic was expecting to optimize. Should always be possible to | 509 // intrinsic was expecting to optimize. Should always be possible to |
510 // get a normal java call that may inline in that case | 510 // get a normal java call that may inline in that case |
511 cg = C->call_generator(cg->method(), vtable_index, call_does_dispatch, jvms, try_inline, prof_factor(), /* allow_intrinsics= */ false); | 511 cg = C->call_generator(cg->method(), vtable_index, call_does_dispatch, jvms, try_inline, prof_factor(), /* allow_intrinsics= */ false); |
512 if ((new_jvms = cg->generate(jvms)) == NULL) { | 512 if ((new_jvms = cg->generate(jvms, this)) == NULL) { |
513 guarantee(failing(), "call failed to generate: calls should work"); | 513 guarantee(failing(), "call failed to generate: calls should work"); |
514 return; | 514 return; |
515 } | 515 } |
516 } | 516 } |
517 | 517 |