Commit 219794da authored by mbrandy's avatar mbrandy Committed by Commit bot

PPC: [compiler] Always pass closure argument to with, catch and block context creation.

Port d3e5db04

Original commit message:
    Up until now we sometimes pass Smi 0 around as closure and expect the
    runtime to translate that appropriately. But we need to be careful in
    some places to not confuse the Smi 0 with a real closure. However, we
    could instead just pass the correct closure extracted from the native
    context.

    This addresses three long-standing TODOs in the JSTypedLowering pass.

R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=

Review URL: https://codereview.chromium.org/1490553002

Cr-Commit-Position: refs/heads/master@{#32430}
parent 6c6dd449
......@@ -4811,9 +4811,10 @@ void FullCodeGenerator::PushFunctionArgumentForContextAllocation() {
closure_scope->is_module_scope()) {
// Contexts nested in the native context have a canonical empty function
// as their closure, not the anonymous closure containing the global
// code. Pass a smi sentinel and let the runtime look up the empty
// function.
__ LoadSmiLiteral(ip, Smi::FromInt(0));
// code.
__ LoadP(ip, GlobalObjectOperand());
__ LoadP(ip, FieldMemOperand(ip, JSGlobalObject::kNativeContextOffset));
__ LoadP(ip, ContextOperand(ip, Context::CLOSURE_INDEX));
} else if (closure_scope->is_eval_scope()) {
// Contexts created by a call to eval have the same closure as the
// context calling eval, not the anonymous closure containing the eval
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment