[Interpreter] Pass correct closure argument when creating block context.
After this change, https://codereview.chromium.org/1475383002 we should not pass Smi 0 for a closure and expect runtime to look it up. We should pass the correct argument always. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1558153002 Cr-Commit-Position: refs/heads/master@{#33117}
This commit is contained in:
parent
08419a0989
commit
47d7ae1154
@ -2156,8 +2156,12 @@ void BytecodeGenerator::VisitFunctionClosureForContext() {
|
||||
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.
|
||||
builder()->LoadLiteral(Smi::FromInt(0));
|
||||
Register native_context = execution_result()->NewRegister();
|
||||
builder()
|
||||
->LoadContextSlot(execution_context()->reg(),
|
||||
Context::NATIVE_CONTEXT_INDEX)
|
||||
.StoreAccumulatorInRegister(native_context)
|
||||
.LoadContextSlot(native_context, Context::CLOSURE_INDEX);
|
||||
} else {
|
||||
DCHECK(closure_scope->is_function_scope());
|
||||
builder()->LoadAccumulatorWithRegister(Register::function_closure());
|
||||
|
@ -640,7 +640,6 @@
|
||||
'language/statements/for-in/let*': [SKIP],
|
||||
'language/statements/for-of/*': [SKIP],
|
||||
'language/statements/generators/*': [SKIP],
|
||||
'language/statements/let/*': [SKIP],
|
||||
'language/statements/try/*': [SKIP],
|
||||
'language/statements/with/*': [SKIP],
|
||||
|
||||
@ -676,6 +675,9 @@
|
||||
'built-ins/String/prototype/startsWith/this-is-undefined-throws': [SKIP],
|
||||
'built-ins/String/prototype/trim/15.5.4.20-1-1': [SKIP],
|
||||
'built-ins/String/S15.5.5.1_A4_T1': [SKIP],
|
||||
'language/block-scope/leave/nested-block-let-declaration-only-shadows-outer-parameter-value-1': [SKIP],
|
||||
'language/block-scope/leave/nested-block-let-declaration-only-shadows-outer-parameter-value-2': [SKIP],
|
||||
'language/block-scope/leave/verify-context-in-labelled-block': [SKIP],
|
||||
'language/block-scope/leave/x-after-break-to-label': [SKIP],
|
||||
'language/computed-property-names/object/accessor/getter-super': [SKIP],
|
||||
'language/computed-property-names/object/accessor/setter-super': [SKIP],
|
||||
@ -685,6 +687,7 @@
|
||||
'language/default-parameters/param-ref-uninitialized': [SKIP],
|
||||
'language/expressions/delete/11.4.1-4.a-5': [SKIP],
|
||||
'language/expressions/delete/11.4.1-4.a-6': [SKIP],
|
||||
'language/expressions/object/method-definition/name-prop-name-yield-expr': [SKIP],
|
||||
'language/expressions/object/method-definition/name-super-prop-param': [SKIP],
|
||||
'language/expressions/object/method-definition/name-super-prop-body': [SKIP],
|
||||
'language/expressions/object/prop-def-id-eval-error': [SKIP],
|
||||
@ -718,14 +721,22 @@
|
||||
'language/statements/function/S13.2.2_A19_T6': [SKIP],
|
||||
'language/statements/function/S13.2.2_A19_T7': [SKIP],
|
||||
'language/statements/function/S13.2.2_A19_T8': [SKIP],
|
||||
'language/statements/while/S12.6.2_A4_T5': [SKIP],
|
||||
'language/block-scope/leave/nested-block-let-declaration-only-shadows-outer-parameter-value-1': [SKIP],
|
||||
'language/block-scope/leave/nested-block-let-declaration-only-shadows-outer-parameter-value-2': [SKIP],
|
||||
'language/block-scope/leave/verify-context-in-labelled-block': [SKIP],
|
||||
'language/expressions/object/method-definition/name-prop-name-yield-expr': [SKIP],
|
||||
'language/statements/function/S13.2.2_A18_T1': [SKIP],
|
||||
'language/statements/function/S13.2.2_A17_T2': [SKIP],
|
||||
'language/statements/function/S13.2.2_A17_T3': [SKIP],
|
||||
'language/statements/let/block-local-closure-get-before-initialization': [SKIP],
|
||||
'language/statements/let/block-local-closure-set-before-initialization': [SKIP],
|
||||
'language/statements/let/block-local-use-before-initialization-in-declaration-statement': [SKIP],
|
||||
'language/statements/let/block-local-use-before-initialization-in-prior-statement': [SKIP],
|
||||
'language/statements/let/function-local-closure-get-before-initialization': [SKIP],
|
||||
'language/statements/let/function-local-closure-set-before-initialization': [SKIP],
|
||||
'language/statements/let/function-local-use-before-initialization-in-declaration-statement': [SKIP],
|
||||
'language/statements/let/function-local-use-before-initialization-in-prior-statement': [SKIP],
|
||||
'language/statements/let/global-closure-get-before-initialization': [SKIP],
|
||||
'language/statements/let/global-closure-set-before-initialization': [SKIP],
|
||||
'language/statements/let/global-use-before-initialization-in-declaration-statement': [SKIP],
|
||||
'language/statements/while/S12.6.2_A4_T5': [SKIP],
|
||||
|
||||
}], # ignition == True
|
||||
|
||||
['ignition == True and (arch == arm or arch == arm64)', {
|
||||
|
Loading…
Reference in New Issue
Block a user