[turbofan] Lazy bailout for calls doesn't need callee.

There's no need to preserve the exact callee for lazy bailouts
from JSCallFunction in the AstGraphBuilder, as fullcodegen code
will never look at that value after the callee returns. So we
just push optimized_out instead.

BUG=v8:5267
R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2285183002
Cr-Commit-Position: refs/heads/master@{#38963}
This commit is contained in:
bmeurer 2016-08-28 22:16:05 -07:00 committed by Commit bot
parent 4f8e0fa685
commit f676db4655
2 changed files with 4 additions and 6 deletions

View File

@ -2450,7 +2450,10 @@ void AstGraphBuilder::VisitCall(Call* expr) {
args->length() + 2, feedback, receiver_hint, expr->tail_call_mode()); args->length() + 2, feedback, receiver_hint, expr->tail_call_mode());
PrepareEagerCheckpoint(possibly_eval ? expr->EvalId() : expr->CallId()); PrepareEagerCheckpoint(possibly_eval ? expr->EvalId() : expr->CallId());
Node* value = ProcessArguments(call, args->length() + 2); Node* value = ProcessArguments(call, args->length() + 2);
environment()->Push(value->InputAt(0)); // The callee passed to the call. // The callee passed to the call, we just need to push something here to
// satisfy the bailout location contract. The fullcodegen code will not
// ever look at this value, so we just push optimized_out here.
environment()->Push(jsgraph()->OptimizedOutConstant());
PrepareFrameState(value, expr->ReturnId(), OutputFrameStateCombine::Push()); PrepareFrameState(value, expr->ReturnId(), OutputFrameStateCombine::Push());
environment()->Drop(1); environment()->Drop(1);
ast_context()->ProduceValue(expr, value); ast_context()->ProduceValue(expr, value);

View File

@ -327,11 +327,6 @@
############################################################################## ##############################################################################
['variant == turbofan', { ['variant == turbofan', {
# TODO(bmeurer): TurboFan embeds strong references to all kinds of objects
# via deoptimization data (Crankshaft also does this, but lack proper test
# coverage).
'test-heap/ObjectsInOptimizedCodeAreWeak': [FAIL],
# TurboFan cpu profiler result is different. # TurboFan cpu profiler result is different.
'test-cpu-profiler/CollectDeoptEvents': [FAIL], 'test-cpu-profiler/CollectDeoptEvents': [FAIL],
'test-cpu-profiler/DeoptAtFirstLevelInlinedSource': [FAIL], 'test-cpu-profiler/DeoptAtFirstLevelInlinedSource': [FAIL],