Reland - Allow lexically declared "arguments" in function scope in sloppy mode.

Lexically declared "arguments" in sloppy mode will throw redeclaration error
currently, this patch fixes it by delaying the declaration of arguments until we
fully parse parameter list and function body.

BUG=v8:4577
LOG=N

Committed: https://crrev.com/70a613dd0a5f5d205b46559b55702764464851fa
Review-Url: https://codereview.chromium.org/2290753003
Cr-Original-Commit-Position: refs/heads/master@{#39109}
Cr-Commit-Position: refs/heads/master@{#39230}
This commit is contained in:
lpy 2016-09-06 23:54:36 -07:00 committed by Commit bot
parent 332bd5e94c
commit 7a38b927c8
11 changed files with 362 additions and 306 deletions

View File

@ -488,15 +488,32 @@ void DeclarationScope::DeclareThis(AstValueFactory* ast_value_factory) {
receiver_ = var;
}
void DeclarationScope::DeclareArguments(AstValueFactory* ast_value_factory) {
DCHECK(is_function_scope());
DCHECK(!is_arrow_scope());
// Check if there's lexically declared variable named arguments to avoid
// redeclaration. See ES#sec-functiondeclarationinstantiation, step 20.
Variable* arg_variable = LookupLocal(ast_value_factory->arguments_string());
if (arg_variable != nullptr && IsLexicalVariableMode(arg_variable->mode())) {
return;
}
// Declare 'arguments' variable which exists in all non arrow functions.
// Note that it might never be accessed, in which case it won't be
// allocated during variable allocation.
if (arg_variable == nullptr) {
arguments_ = Declare(zone(), this, ast_value_factory->arguments_string(),
VAR, Variable::ARGUMENTS, kCreatedInitialized);
} else {
arguments_ = arg_variable;
}
}
void DeclarationScope::DeclareDefaultFunctionVariables(
AstValueFactory* ast_value_factory) {
DCHECK(is_function_scope());
DCHECK(!is_arrow_scope());
// Declare 'arguments' variable which exists in all non arrow functions.
// Note that it might never be accessed, in which case it won't be
// allocated during variable allocation.
arguments_ = Declare(zone(), this, ast_value_factory->arguments_string(), VAR,
Variable::ARGUMENTS, kCreatedInitialized);
new_target_ = Declare(zone(), this, ast_value_factory->new_target_string(),
CONST, Variable::NORMAL, kCreatedInitialized);
@ -1524,8 +1541,8 @@ void DeclarationScope::AllocateParameterLocals() {
bool uses_sloppy_arguments = false;
// Functions have 'arguments' declared implicitly in all non arrow functions.
if (arguments_ != nullptr) {
DCHECK(!is_arrow_scope());
// 'arguments' is used. Unless there is also a parameter called
// 'arguments', we must be conservative and allocate all parameters to
// the context assuming they will be captured by the arguments object.
@ -1546,9 +1563,6 @@ void DeclarationScope::AllocateParameterLocals() {
// allocate the arguments object by nulling out arguments_.
arguments_ = nullptr;
}
} else {
DCHECK(is_arrow_scope());
}
// The same parameter may occur multiple times in the parameters_ list.

View File

@ -617,6 +617,7 @@ class DeclarationScope : public Scope {
void set_asm_function() { asm_module_ = true; }
void DeclareThis(AstValueFactory* ast_value_factory);
void DeclareArguments(AstValueFactory* ast_value_factory);
void DeclareDefaultFunctionVariables(AstValueFactory* ast_value_factory);
// This lookup corresponds to a lookup in the "intermediate" scope sitting

View File

@ -3555,6 +3555,10 @@ FunctionLiteral* Parser::ParseFunctionLiteral(
// Parsing the body may change the language mode in our scope.
language_mode = scope->language_mode();
scope->DeclareArguments(ast_value_factory());
if (main_scope != scope) {
main_scope->DeclareArguments(ast_value_factory());
}
// Validate name and parameter names. We can do this only after parsing the
// function, since the function can declare itself strict.

View File

@ -19,9 +19,9 @@ bytecodes: [
B(Ldar), R(this),
B(StaContextSlot), R(context), U8(4),
B(CreateMappedArguments),
B(StaContextSlot), R(context), U8(5),
B(Ldar), R(new_target),
B(StaContextSlot), R(context), U8(6),
B(Ldar), R(new_target),
B(StaContextSlot), R(context), U8(5),
/* 30 E> */ B(StackCheck),
/* 34 S> */ B(CreateClosure), U8(0), U8(2),
/* 36 E> */ B(StaLookupSlotSloppy), U8(1),

View File

@ -383,528 +383,531 @@ snippet: "
var a246 = 0;
var a247 = 0;
var a248 = 0;
var a249 = 0;
eval();
var b = 100;
return b
"
frame size: 3
parameter count: 1
bytecode array length: 1040
bytecode array length: 1047
bytecodes: [
B(CreateFunctionContext), U8(253),
B(CreateFunctionContext), U8(254),
B(PushContext), R(0),
B(Ldar), R(this),
B(StaContextSlot), R(context), U8(4),
B(CreateUnmappedArguments),
B(StaContextSlot), R(context), U8(5),
B(Wide), B(StaContextSlot), R16(context), U16(257),
B(Ldar), R(new_target),
B(StaContextSlot), R(context), U8(6),
B(StaContextSlot), R(context), U8(5),
/* 30 E> */ B(StackCheck),
/* 57 S> */ B(LdaZero),
/* 57 E> */ B(StaContextSlot), R(context), U8(7),
/* 57 E> */ B(StaContextSlot), R(context), U8(6),
/* 69 S> */ B(LdaZero),
/* 69 E> */ B(StaContextSlot), R(context), U8(8),
/* 69 E> */ B(StaContextSlot), R(context), U8(7),
/* 81 S> */ B(LdaZero),
/* 81 E> */ B(StaContextSlot), R(context), U8(9),
/* 81 E> */ B(StaContextSlot), R(context), U8(8),
/* 93 S> */ B(LdaZero),
/* 93 E> */ B(StaContextSlot), R(context), U8(10),
/* 93 E> */ B(StaContextSlot), R(context), U8(9),
/* 105 S> */ B(LdaZero),
/* 105 E> */ B(StaContextSlot), R(context), U8(11),
/* 105 E> */ B(StaContextSlot), R(context), U8(10),
/* 117 S> */ B(LdaZero),
/* 117 E> */ B(StaContextSlot), R(context), U8(12),
/* 117 E> */ B(StaContextSlot), R(context), U8(11),
/* 129 S> */ B(LdaZero),
/* 129 E> */ B(StaContextSlot), R(context), U8(13),
/* 129 E> */ B(StaContextSlot), R(context), U8(12),
/* 141 S> */ B(LdaZero),
/* 141 E> */ B(StaContextSlot), R(context), U8(14),
/* 141 E> */ B(StaContextSlot), R(context), U8(13),
/* 153 S> */ B(LdaZero),
/* 153 E> */ B(StaContextSlot), R(context), U8(15),
/* 153 E> */ B(StaContextSlot), R(context), U8(14),
/* 165 S> */ B(LdaZero),
/* 165 E> */ B(StaContextSlot), R(context), U8(16),
/* 165 E> */ B(StaContextSlot), R(context), U8(15),
/* 178 S> */ B(LdaZero),
/* 178 E> */ B(StaContextSlot), R(context), U8(17),
/* 178 E> */ B(StaContextSlot), R(context), U8(16),
/* 191 S> */ B(LdaZero),
/* 191 E> */ B(StaContextSlot), R(context), U8(18),
/* 191 E> */ B(StaContextSlot), R(context), U8(17),
/* 204 S> */ B(LdaZero),
/* 204 E> */ B(StaContextSlot), R(context), U8(19),
/* 204 E> */ B(StaContextSlot), R(context), U8(18),
/* 217 S> */ B(LdaZero),
/* 217 E> */ B(StaContextSlot), R(context), U8(20),
/* 217 E> */ B(StaContextSlot), R(context), U8(19),
/* 230 S> */ B(LdaZero),
/* 230 E> */ B(StaContextSlot), R(context), U8(21),
/* 230 E> */ B(StaContextSlot), R(context), U8(20),
/* 243 S> */ B(LdaZero),
/* 243 E> */ B(StaContextSlot), R(context), U8(22),
/* 243 E> */ B(StaContextSlot), R(context), U8(21),
/* 256 S> */ B(LdaZero),
/* 256 E> */ B(StaContextSlot), R(context), U8(23),
/* 256 E> */ B(StaContextSlot), R(context), U8(22),
/* 269 S> */ B(LdaZero),
/* 269 E> */ B(StaContextSlot), R(context), U8(24),
/* 269 E> */ B(StaContextSlot), R(context), U8(23),
/* 282 S> */ B(LdaZero),
/* 282 E> */ B(StaContextSlot), R(context), U8(25),
/* 282 E> */ B(StaContextSlot), R(context), U8(24),
/* 295 S> */ B(LdaZero),
/* 295 E> */ B(StaContextSlot), R(context), U8(26),
/* 295 E> */ B(StaContextSlot), R(context), U8(25),
/* 308 S> */ B(LdaZero),
/* 308 E> */ B(StaContextSlot), R(context), U8(27),
/* 308 E> */ B(StaContextSlot), R(context), U8(26),
/* 321 S> */ B(LdaZero),
/* 321 E> */ B(StaContextSlot), R(context), U8(28),
/* 321 E> */ B(StaContextSlot), R(context), U8(27),
/* 334 S> */ B(LdaZero),
/* 334 E> */ B(StaContextSlot), R(context), U8(29),
/* 334 E> */ B(StaContextSlot), R(context), U8(28),
/* 347 S> */ B(LdaZero),
/* 347 E> */ B(StaContextSlot), R(context), U8(30),
/* 347 E> */ B(StaContextSlot), R(context), U8(29),
/* 360 S> */ B(LdaZero),
/* 360 E> */ B(StaContextSlot), R(context), U8(31),
/* 360 E> */ B(StaContextSlot), R(context), U8(30),
/* 373 S> */ B(LdaZero),
/* 373 E> */ B(StaContextSlot), R(context), U8(32),
/* 373 E> */ B(StaContextSlot), R(context), U8(31),
/* 386 S> */ B(LdaZero),
/* 386 E> */ B(StaContextSlot), R(context), U8(33),
/* 386 E> */ B(StaContextSlot), R(context), U8(32),
/* 399 S> */ B(LdaZero),
/* 399 E> */ B(StaContextSlot), R(context), U8(34),
/* 399 E> */ B(StaContextSlot), R(context), U8(33),
/* 412 S> */ B(LdaZero),
/* 412 E> */ B(StaContextSlot), R(context), U8(35),
/* 412 E> */ B(StaContextSlot), R(context), U8(34),
/* 425 S> */ B(LdaZero),
/* 425 E> */ B(StaContextSlot), R(context), U8(36),
/* 425 E> */ B(StaContextSlot), R(context), U8(35),
/* 438 S> */ B(LdaZero),
/* 438 E> */ B(StaContextSlot), R(context), U8(37),
/* 438 E> */ B(StaContextSlot), R(context), U8(36),
/* 451 S> */ B(LdaZero),
/* 451 E> */ B(StaContextSlot), R(context), U8(38),
/* 451 E> */ B(StaContextSlot), R(context), U8(37),
/* 464 S> */ B(LdaZero),
/* 464 E> */ B(StaContextSlot), R(context), U8(39),
/* 464 E> */ B(StaContextSlot), R(context), U8(38),
/* 477 S> */ B(LdaZero),
/* 477 E> */ B(StaContextSlot), R(context), U8(40),
/* 477 E> */ B(StaContextSlot), R(context), U8(39),
/* 490 S> */ B(LdaZero),
/* 490 E> */ B(StaContextSlot), R(context), U8(41),
/* 490 E> */ B(StaContextSlot), R(context), U8(40),
/* 503 S> */ B(LdaZero),
/* 503 E> */ B(StaContextSlot), R(context), U8(42),
/* 503 E> */ B(StaContextSlot), R(context), U8(41),
/* 516 S> */ B(LdaZero),
/* 516 E> */ B(StaContextSlot), R(context), U8(43),
/* 516 E> */ B(StaContextSlot), R(context), U8(42),
/* 529 S> */ B(LdaZero),
/* 529 E> */ B(StaContextSlot), R(context), U8(44),
/* 529 E> */ B(StaContextSlot), R(context), U8(43),
/* 542 S> */ B(LdaZero),
/* 542 E> */ B(StaContextSlot), R(context), U8(45),
/* 542 E> */ B(StaContextSlot), R(context), U8(44),
/* 555 S> */ B(LdaZero),
/* 555 E> */ B(StaContextSlot), R(context), U8(46),
/* 555 E> */ B(StaContextSlot), R(context), U8(45),
/* 568 S> */ B(LdaZero),
/* 568 E> */ B(StaContextSlot), R(context), U8(47),
/* 568 E> */ B(StaContextSlot), R(context), U8(46),
/* 581 S> */ B(LdaZero),
/* 581 E> */ B(StaContextSlot), R(context), U8(48),
/* 581 E> */ B(StaContextSlot), R(context), U8(47),
/* 594 S> */ B(LdaZero),
/* 594 E> */ B(StaContextSlot), R(context), U8(49),
/* 594 E> */ B(StaContextSlot), R(context), U8(48),
/* 607 S> */ B(LdaZero),
/* 607 E> */ B(StaContextSlot), R(context), U8(50),
/* 607 E> */ B(StaContextSlot), R(context), U8(49),
/* 620 S> */ B(LdaZero),
/* 620 E> */ B(StaContextSlot), R(context), U8(51),
/* 620 E> */ B(StaContextSlot), R(context), U8(50),
/* 633 S> */ B(LdaZero),
/* 633 E> */ B(StaContextSlot), R(context), U8(52),
/* 633 E> */ B(StaContextSlot), R(context), U8(51),
/* 646 S> */ B(LdaZero),
/* 646 E> */ B(StaContextSlot), R(context), U8(53),
/* 646 E> */ B(StaContextSlot), R(context), U8(52),
/* 659 S> */ B(LdaZero),
/* 659 E> */ B(StaContextSlot), R(context), U8(54),
/* 659 E> */ B(StaContextSlot), R(context), U8(53),
/* 672 S> */ B(LdaZero),
/* 672 E> */ B(StaContextSlot), R(context), U8(55),
/* 672 E> */ B(StaContextSlot), R(context), U8(54),
/* 685 S> */ B(LdaZero),
/* 685 E> */ B(StaContextSlot), R(context), U8(56),
/* 685 E> */ B(StaContextSlot), R(context), U8(55),
/* 698 S> */ B(LdaZero),
/* 698 E> */ B(StaContextSlot), R(context), U8(57),
/* 698 E> */ B(StaContextSlot), R(context), U8(56),
/* 711 S> */ B(LdaZero),
/* 711 E> */ B(StaContextSlot), R(context), U8(58),
/* 711 E> */ B(StaContextSlot), R(context), U8(57),
/* 724 S> */ B(LdaZero),
/* 724 E> */ B(StaContextSlot), R(context), U8(59),
/* 724 E> */ B(StaContextSlot), R(context), U8(58),
/* 737 S> */ B(LdaZero),
/* 737 E> */ B(StaContextSlot), R(context), U8(60),
/* 737 E> */ B(StaContextSlot), R(context), U8(59),
/* 750 S> */ B(LdaZero),
/* 750 E> */ B(StaContextSlot), R(context), U8(61),
/* 750 E> */ B(StaContextSlot), R(context), U8(60),
/* 763 S> */ B(LdaZero),
/* 763 E> */ B(StaContextSlot), R(context), U8(62),
/* 763 E> */ B(StaContextSlot), R(context), U8(61),
/* 776 S> */ B(LdaZero),
/* 776 E> */ B(StaContextSlot), R(context), U8(63),
/* 776 E> */ B(StaContextSlot), R(context), U8(62),
/* 789 S> */ B(LdaZero),
/* 789 E> */ B(StaContextSlot), R(context), U8(64),
/* 789 E> */ B(StaContextSlot), R(context), U8(63),
/* 802 S> */ B(LdaZero),
/* 802 E> */ B(StaContextSlot), R(context), U8(65),
/* 802 E> */ B(StaContextSlot), R(context), U8(64),
/* 815 S> */ B(LdaZero),
/* 815 E> */ B(StaContextSlot), R(context), U8(66),
/* 815 E> */ B(StaContextSlot), R(context), U8(65),
/* 828 S> */ B(LdaZero),
/* 828 E> */ B(StaContextSlot), R(context), U8(67),
/* 828 E> */ B(StaContextSlot), R(context), U8(66),
/* 841 S> */ B(LdaZero),
/* 841 E> */ B(StaContextSlot), R(context), U8(68),
/* 841 E> */ B(StaContextSlot), R(context), U8(67),
/* 854 S> */ B(LdaZero),
/* 854 E> */ B(StaContextSlot), R(context), U8(69),
/* 854 E> */ B(StaContextSlot), R(context), U8(68),
/* 867 S> */ B(LdaZero),
/* 867 E> */ B(StaContextSlot), R(context), U8(70),
/* 867 E> */ B(StaContextSlot), R(context), U8(69),
/* 880 S> */ B(LdaZero),
/* 880 E> */ B(StaContextSlot), R(context), U8(71),
/* 880 E> */ B(StaContextSlot), R(context), U8(70),
/* 893 S> */ B(LdaZero),
/* 893 E> */ B(StaContextSlot), R(context), U8(72),
/* 893 E> */ B(StaContextSlot), R(context), U8(71),
/* 906 S> */ B(LdaZero),
/* 906 E> */ B(StaContextSlot), R(context), U8(73),
/* 906 E> */ B(StaContextSlot), R(context), U8(72),
/* 919 S> */ B(LdaZero),
/* 919 E> */ B(StaContextSlot), R(context), U8(74),
/* 919 E> */ B(StaContextSlot), R(context), U8(73),
/* 932 S> */ B(LdaZero),
/* 932 E> */ B(StaContextSlot), R(context), U8(75),
/* 932 E> */ B(StaContextSlot), R(context), U8(74),
/* 945 S> */ B(LdaZero),
/* 945 E> */ B(StaContextSlot), R(context), U8(76),
/* 945 E> */ B(StaContextSlot), R(context), U8(75),
/* 958 S> */ B(LdaZero),
/* 958 E> */ B(StaContextSlot), R(context), U8(77),
/* 958 E> */ B(StaContextSlot), R(context), U8(76),
/* 971 S> */ B(LdaZero),
/* 971 E> */ B(StaContextSlot), R(context), U8(78),
/* 971 E> */ B(StaContextSlot), R(context), U8(77),
/* 984 S> */ B(LdaZero),
/* 984 E> */ B(StaContextSlot), R(context), U8(79),
/* 984 E> */ B(StaContextSlot), R(context), U8(78),
/* 997 S> */ B(LdaZero),
/* 997 E> */ B(StaContextSlot), R(context), U8(80),
/* 997 E> */ B(StaContextSlot), R(context), U8(79),
/* 1010 S> */ B(LdaZero),
/* 1010 E> */ B(StaContextSlot), R(context), U8(81),
/* 1010 E> */ B(StaContextSlot), R(context), U8(80),
/* 1023 S> */ B(LdaZero),
/* 1023 E> */ B(StaContextSlot), R(context), U8(82),
/* 1023 E> */ B(StaContextSlot), R(context), U8(81),
/* 1036 S> */ B(LdaZero),
/* 1036 E> */ B(StaContextSlot), R(context), U8(83),
/* 1036 E> */ B(StaContextSlot), R(context), U8(82),
/* 1049 S> */ B(LdaZero),
/* 1049 E> */ B(StaContextSlot), R(context), U8(84),
/* 1049 E> */ B(StaContextSlot), R(context), U8(83),
/* 1062 S> */ B(LdaZero),
/* 1062 E> */ B(StaContextSlot), R(context), U8(85),
/* 1062 E> */ B(StaContextSlot), R(context), U8(84),
/* 1075 S> */ B(LdaZero),
/* 1075 E> */ B(StaContextSlot), R(context), U8(86),
/* 1075 E> */ B(StaContextSlot), R(context), U8(85),
/* 1088 S> */ B(LdaZero),
/* 1088 E> */ B(StaContextSlot), R(context), U8(87),
/* 1088 E> */ B(StaContextSlot), R(context), U8(86),
/* 1101 S> */ B(LdaZero),
/* 1101 E> */ B(StaContextSlot), R(context), U8(88),
/* 1101 E> */ B(StaContextSlot), R(context), U8(87),
/* 1114 S> */ B(LdaZero),
/* 1114 E> */ B(StaContextSlot), R(context), U8(89),
/* 1114 E> */ B(StaContextSlot), R(context), U8(88),
/* 1127 S> */ B(LdaZero),
/* 1127 E> */ B(StaContextSlot), R(context), U8(90),
/* 1127 E> */ B(StaContextSlot), R(context), U8(89),
/* 1140 S> */ B(LdaZero),
/* 1140 E> */ B(StaContextSlot), R(context), U8(91),
/* 1140 E> */ B(StaContextSlot), R(context), U8(90),
/* 1153 S> */ B(LdaZero),
/* 1153 E> */ B(StaContextSlot), R(context), U8(92),
/* 1153 E> */ B(StaContextSlot), R(context), U8(91),
/* 1166 S> */ B(LdaZero),
/* 1166 E> */ B(StaContextSlot), R(context), U8(93),
/* 1166 E> */ B(StaContextSlot), R(context), U8(92),
/* 1179 S> */ B(LdaZero),
/* 1179 E> */ B(StaContextSlot), R(context), U8(94),
/* 1179 E> */ B(StaContextSlot), R(context), U8(93),
/* 1192 S> */ B(LdaZero),
/* 1192 E> */ B(StaContextSlot), R(context), U8(95),
/* 1192 E> */ B(StaContextSlot), R(context), U8(94),
/* 1205 S> */ B(LdaZero),
/* 1205 E> */ B(StaContextSlot), R(context), U8(96),
/* 1205 E> */ B(StaContextSlot), R(context), U8(95),
/* 1218 S> */ B(LdaZero),
/* 1218 E> */ B(StaContextSlot), R(context), U8(97),
/* 1218 E> */ B(StaContextSlot), R(context), U8(96),
/* 1231 S> */ B(LdaZero),
/* 1231 E> */ B(StaContextSlot), R(context), U8(98),
/* 1231 E> */ B(StaContextSlot), R(context), U8(97),
/* 1244 S> */ B(LdaZero),
/* 1244 E> */ B(StaContextSlot), R(context), U8(99),
/* 1244 E> */ B(StaContextSlot), R(context), U8(98),
/* 1257 S> */ B(LdaZero),
/* 1257 E> */ B(StaContextSlot), R(context), U8(100),
/* 1257 E> */ B(StaContextSlot), R(context), U8(99),
/* 1270 S> */ B(LdaZero),
/* 1270 E> */ B(StaContextSlot), R(context), U8(101),
/* 1270 E> */ B(StaContextSlot), R(context), U8(100),
/* 1283 S> */ B(LdaZero),
/* 1283 E> */ B(StaContextSlot), R(context), U8(102),
/* 1283 E> */ B(StaContextSlot), R(context), U8(101),
/* 1296 S> */ B(LdaZero),
/* 1296 E> */ B(StaContextSlot), R(context), U8(103),
/* 1296 E> */ B(StaContextSlot), R(context), U8(102),
/* 1309 S> */ B(LdaZero),
/* 1309 E> */ B(StaContextSlot), R(context), U8(104),
/* 1309 E> */ B(StaContextSlot), R(context), U8(103),
/* 1322 S> */ B(LdaZero),
/* 1322 E> */ B(StaContextSlot), R(context), U8(105),
/* 1322 E> */ B(StaContextSlot), R(context), U8(104),
/* 1335 S> */ B(LdaZero),
/* 1335 E> */ B(StaContextSlot), R(context), U8(106),
/* 1335 E> */ B(StaContextSlot), R(context), U8(105),
/* 1349 S> */ B(LdaZero),
/* 1349 E> */ B(StaContextSlot), R(context), U8(107),
/* 1349 E> */ B(StaContextSlot), R(context), U8(106),
/* 1363 S> */ B(LdaZero),
/* 1363 E> */ B(StaContextSlot), R(context), U8(108),
/* 1363 E> */ B(StaContextSlot), R(context), U8(107),
/* 1377 S> */ B(LdaZero),
/* 1377 E> */ B(StaContextSlot), R(context), U8(109),
/* 1377 E> */ B(StaContextSlot), R(context), U8(108),
/* 1391 S> */ B(LdaZero),
/* 1391 E> */ B(StaContextSlot), R(context), U8(110),
/* 1391 E> */ B(StaContextSlot), R(context), U8(109),
/* 1405 S> */ B(LdaZero),
/* 1405 E> */ B(StaContextSlot), R(context), U8(111),
/* 1405 E> */ B(StaContextSlot), R(context), U8(110),
/* 1419 S> */ B(LdaZero),
/* 1419 E> */ B(StaContextSlot), R(context), U8(112),
/* 1419 E> */ B(StaContextSlot), R(context), U8(111),
/* 1433 S> */ B(LdaZero),
/* 1433 E> */ B(StaContextSlot), R(context), U8(113),
/* 1433 E> */ B(StaContextSlot), R(context), U8(112),
/* 1447 S> */ B(LdaZero),
/* 1447 E> */ B(StaContextSlot), R(context), U8(114),
/* 1447 E> */ B(StaContextSlot), R(context), U8(113),
/* 1461 S> */ B(LdaZero),
/* 1461 E> */ B(StaContextSlot), R(context), U8(115),
/* 1461 E> */ B(StaContextSlot), R(context), U8(114),
/* 1475 S> */ B(LdaZero),
/* 1475 E> */ B(StaContextSlot), R(context), U8(116),
/* 1475 E> */ B(StaContextSlot), R(context), U8(115),
/* 1489 S> */ B(LdaZero),
/* 1489 E> */ B(StaContextSlot), R(context), U8(117),
/* 1489 E> */ B(StaContextSlot), R(context), U8(116),
/* 1503 S> */ B(LdaZero),
/* 1503 E> */ B(StaContextSlot), R(context), U8(118),
/* 1503 E> */ B(StaContextSlot), R(context), U8(117),
/* 1517 S> */ B(LdaZero),
/* 1517 E> */ B(StaContextSlot), R(context), U8(119),
/* 1517 E> */ B(StaContextSlot), R(context), U8(118),
/* 1531 S> */ B(LdaZero),
/* 1531 E> */ B(StaContextSlot), R(context), U8(120),
/* 1531 E> */ B(StaContextSlot), R(context), U8(119),
/* 1545 S> */ B(LdaZero),
/* 1545 E> */ B(StaContextSlot), R(context), U8(121),
/* 1545 E> */ B(StaContextSlot), R(context), U8(120),
/* 1559 S> */ B(LdaZero),
/* 1559 E> */ B(StaContextSlot), R(context), U8(122),
/* 1559 E> */ B(StaContextSlot), R(context), U8(121),
/* 1573 S> */ B(LdaZero),
/* 1573 E> */ B(StaContextSlot), R(context), U8(123),
/* 1573 E> */ B(StaContextSlot), R(context), U8(122),
/* 1587 S> */ B(LdaZero),
/* 1587 E> */ B(StaContextSlot), R(context), U8(124),
/* 1587 E> */ B(StaContextSlot), R(context), U8(123),
/* 1601 S> */ B(LdaZero),
/* 1601 E> */ B(StaContextSlot), R(context), U8(125),
/* 1601 E> */ B(StaContextSlot), R(context), U8(124),
/* 1615 S> */ B(LdaZero),
/* 1615 E> */ B(StaContextSlot), R(context), U8(126),
/* 1615 E> */ B(StaContextSlot), R(context), U8(125),
/* 1629 S> */ B(LdaZero),
/* 1629 E> */ B(StaContextSlot), R(context), U8(127),
/* 1629 E> */ B(StaContextSlot), R(context), U8(126),
/* 1643 S> */ B(LdaZero),
/* 1643 E> */ B(StaContextSlot), R(context), U8(128),
/* 1643 E> */ B(StaContextSlot), R(context), U8(127),
/* 1657 S> */ B(LdaZero),
/* 1657 E> */ B(StaContextSlot), R(context), U8(129),
/* 1657 E> */ B(StaContextSlot), R(context), U8(128),
/* 1671 S> */ B(LdaZero),
/* 1671 E> */ B(StaContextSlot), R(context), U8(130),
/* 1671 E> */ B(StaContextSlot), R(context), U8(129),
/* 1685 S> */ B(LdaZero),
/* 1685 E> */ B(StaContextSlot), R(context), U8(131),
/* 1685 E> */ B(StaContextSlot), R(context), U8(130),
/* 1699 S> */ B(LdaZero),
/* 1699 E> */ B(StaContextSlot), R(context), U8(132),
/* 1699 E> */ B(StaContextSlot), R(context), U8(131),
/* 1713 S> */ B(LdaZero),
/* 1713 E> */ B(StaContextSlot), R(context), U8(133),
/* 1713 E> */ B(StaContextSlot), R(context), U8(132),
/* 1727 S> */ B(LdaZero),
/* 1727 E> */ B(StaContextSlot), R(context), U8(134),
/* 1727 E> */ B(StaContextSlot), R(context), U8(133),
/* 1741 S> */ B(LdaZero),
/* 1741 E> */ B(StaContextSlot), R(context), U8(135),
/* 1741 E> */ B(StaContextSlot), R(context), U8(134),
/* 1755 S> */ B(LdaZero),
/* 1755 E> */ B(StaContextSlot), R(context), U8(136),
/* 1755 E> */ B(StaContextSlot), R(context), U8(135),
/* 1769 S> */ B(LdaZero),
/* 1769 E> */ B(StaContextSlot), R(context), U8(137),
/* 1769 E> */ B(StaContextSlot), R(context), U8(136),
/* 1783 S> */ B(LdaZero),
/* 1783 E> */ B(StaContextSlot), R(context), U8(138),
/* 1783 E> */ B(StaContextSlot), R(context), U8(137),
/* 1797 S> */ B(LdaZero),
/* 1797 E> */ B(StaContextSlot), R(context), U8(139),
/* 1797 E> */ B(StaContextSlot), R(context), U8(138),
/* 1811 S> */ B(LdaZero),
/* 1811 E> */ B(StaContextSlot), R(context), U8(140),
/* 1811 E> */ B(StaContextSlot), R(context), U8(139),
/* 1825 S> */ B(LdaZero),
/* 1825 E> */ B(StaContextSlot), R(context), U8(141),
/* 1825 E> */ B(StaContextSlot), R(context), U8(140),
/* 1839 S> */ B(LdaZero),
/* 1839 E> */ B(StaContextSlot), R(context), U8(142),
/* 1839 E> */ B(StaContextSlot), R(context), U8(141),
/* 1853 S> */ B(LdaZero),
/* 1853 E> */ B(StaContextSlot), R(context), U8(143),
/* 1853 E> */ B(StaContextSlot), R(context), U8(142),
/* 1867 S> */ B(LdaZero),
/* 1867 E> */ B(StaContextSlot), R(context), U8(144),
/* 1867 E> */ B(StaContextSlot), R(context), U8(143),
/* 1881 S> */ B(LdaZero),
/* 1881 E> */ B(StaContextSlot), R(context), U8(145),
/* 1881 E> */ B(StaContextSlot), R(context), U8(144),
/* 1895 S> */ B(LdaZero),
/* 1895 E> */ B(StaContextSlot), R(context), U8(146),
/* 1895 E> */ B(StaContextSlot), R(context), U8(145),
/* 1909 S> */ B(LdaZero),
/* 1909 E> */ B(StaContextSlot), R(context), U8(147),
/* 1909 E> */ B(StaContextSlot), R(context), U8(146),
/* 1923 S> */ B(LdaZero),
/* 1923 E> */ B(StaContextSlot), R(context), U8(148),
/* 1923 E> */ B(StaContextSlot), R(context), U8(147),
/* 1937 S> */ B(LdaZero),
/* 1937 E> */ B(StaContextSlot), R(context), U8(149),
/* 1937 E> */ B(StaContextSlot), R(context), U8(148),
/* 1951 S> */ B(LdaZero),
/* 1951 E> */ B(StaContextSlot), R(context), U8(150),
/* 1951 E> */ B(StaContextSlot), R(context), U8(149),
/* 1965 S> */ B(LdaZero),
/* 1965 E> */ B(StaContextSlot), R(context), U8(151),
/* 1965 E> */ B(StaContextSlot), R(context), U8(150),
/* 1979 S> */ B(LdaZero),
/* 1979 E> */ B(StaContextSlot), R(context), U8(152),
/* 1979 E> */ B(StaContextSlot), R(context), U8(151),
/* 1993 S> */ B(LdaZero),
/* 1993 E> */ B(StaContextSlot), R(context), U8(153),
/* 1993 E> */ B(StaContextSlot), R(context), U8(152),
/* 2007 S> */ B(LdaZero),
/* 2007 E> */ B(StaContextSlot), R(context), U8(154),
/* 2007 E> */ B(StaContextSlot), R(context), U8(153),
/* 2021 S> */ B(LdaZero),
/* 2021 E> */ B(StaContextSlot), R(context), U8(155),
/* 2021 E> */ B(StaContextSlot), R(context), U8(154),
/* 2035 S> */ B(LdaZero),
/* 2035 E> */ B(StaContextSlot), R(context), U8(156),
/* 2035 E> */ B(StaContextSlot), R(context), U8(155),
/* 2049 S> */ B(LdaZero),
/* 2049 E> */ B(StaContextSlot), R(context), U8(157),
/* 2049 E> */ B(StaContextSlot), R(context), U8(156),
/* 2063 S> */ B(LdaZero),
/* 2063 E> */ B(StaContextSlot), R(context), U8(158),
/* 2063 E> */ B(StaContextSlot), R(context), U8(157),
/* 2077 S> */ B(LdaZero),
/* 2077 E> */ B(StaContextSlot), R(context), U8(159),
/* 2077 E> */ B(StaContextSlot), R(context), U8(158),
/* 2091 S> */ B(LdaZero),
/* 2091 E> */ B(StaContextSlot), R(context), U8(160),
/* 2091 E> */ B(StaContextSlot), R(context), U8(159),
/* 2105 S> */ B(LdaZero),
/* 2105 E> */ B(StaContextSlot), R(context), U8(161),
/* 2105 E> */ B(StaContextSlot), R(context), U8(160),
/* 2119 S> */ B(LdaZero),
/* 2119 E> */ B(StaContextSlot), R(context), U8(162),
/* 2119 E> */ B(StaContextSlot), R(context), U8(161),
/* 2133 S> */ B(LdaZero),
/* 2133 E> */ B(StaContextSlot), R(context), U8(163),
/* 2133 E> */ B(StaContextSlot), R(context), U8(162),
/* 2147 S> */ B(LdaZero),
/* 2147 E> */ B(StaContextSlot), R(context), U8(164),
/* 2147 E> */ B(StaContextSlot), R(context), U8(163),
/* 2161 S> */ B(LdaZero),
/* 2161 E> */ B(StaContextSlot), R(context), U8(165),
/* 2161 E> */ B(StaContextSlot), R(context), U8(164),
/* 2175 S> */ B(LdaZero),
/* 2175 E> */ B(StaContextSlot), R(context), U8(166),
/* 2175 E> */ B(StaContextSlot), R(context), U8(165),
/* 2189 S> */ B(LdaZero),
/* 2189 E> */ B(StaContextSlot), R(context), U8(167),
/* 2189 E> */ B(StaContextSlot), R(context), U8(166),
/* 2203 S> */ B(LdaZero),
/* 2203 E> */ B(StaContextSlot), R(context), U8(168),
/* 2203 E> */ B(StaContextSlot), R(context), U8(167),
/* 2217 S> */ B(LdaZero),
/* 2217 E> */ B(StaContextSlot), R(context), U8(169),
/* 2217 E> */ B(StaContextSlot), R(context), U8(168),
/* 2231 S> */ B(LdaZero),
/* 2231 E> */ B(StaContextSlot), R(context), U8(170),
/* 2231 E> */ B(StaContextSlot), R(context), U8(169),
/* 2245 S> */ B(LdaZero),
/* 2245 E> */ B(StaContextSlot), R(context), U8(171),
/* 2245 E> */ B(StaContextSlot), R(context), U8(170),
/* 2259 S> */ B(LdaZero),
/* 2259 E> */ B(StaContextSlot), R(context), U8(172),
/* 2259 E> */ B(StaContextSlot), R(context), U8(171),
/* 2273 S> */ B(LdaZero),
/* 2273 E> */ B(StaContextSlot), R(context), U8(173),
/* 2273 E> */ B(StaContextSlot), R(context), U8(172),
/* 2287 S> */ B(LdaZero),
/* 2287 E> */ B(StaContextSlot), R(context), U8(174),
/* 2287 E> */ B(StaContextSlot), R(context), U8(173),
/* 2301 S> */ B(LdaZero),
/* 2301 E> */ B(StaContextSlot), R(context), U8(175),
/* 2301 E> */ B(StaContextSlot), R(context), U8(174),
/* 2315 S> */ B(LdaZero),
/* 2315 E> */ B(StaContextSlot), R(context), U8(176),
/* 2315 E> */ B(StaContextSlot), R(context), U8(175),
/* 2329 S> */ B(LdaZero),
/* 2329 E> */ B(StaContextSlot), R(context), U8(177),
/* 2329 E> */ B(StaContextSlot), R(context), U8(176),
/* 2343 S> */ B(LdaZero),
/* 2343 E> */ B(StaContextSlot), R(context), U8(178),
/* 2343 E> */ B(StaContextSlot), R(context), U8(177),
/* 2357 S> */ B(LdaZero),
/* 2357 E> */ B(StaContextSlot), R(context), U8(179),
/* 2357 E> */ B(StaContextSlot), R(context), U8(178),
/* 2371 S> */ B(LdaZero),
/* 2371 E> */ B(StaContextSlot), R(context), U8(180),
/* 2371 E> */ B(StaContextSlot), R(context), U8(179),
/* 2385 S> */ B(LdaZero),
/* 2385 E> */ B(StaContextSlot), R(context), U8(181),
/* 2385 E> */ B(StaContextSlot), R(context), U8(180),
/* 2399 S> */ B(LdaZero),
/* 2399 E> */ B(StaContextSlot), R(context), U8(182),
/* 2399 E> */ B(StaContextSlot), R(context), U8(181),
/* 2413 S> */ B(LdaZero),
/* 2413 E> */ B(StaContextSlot), R(context), U8(183),
/* 2413 E> */ B(StaContextSlot), R(context), U8(182),
/* 2427 S> */ B(LdaZero),
/* 2427 E> */ B(StaContextSlot), R(context), U8(184),
/* 2427 E> */ B(StaContextSlot), R(context), U8(183),
/* 2441 S> */ B(LdaZero),
/* 2441 E> */ B(StaContextSlot), R(context), U8(185),
/* 2441 E> */ B(StaContextSlot), R(context), U8(184),
/* 2455 S> */ B(LdaZero),
/* 2455 E> */ B(StaContextSlot), R(context), U8(186),
/* 2455 E> */ B(StaContextSlot), R(context), U8(185),
/* 2469 S> */ B(LdaZero),
/* 2469 E> */ B(StaContextSlot), R(context), U8(187),
/* 2469 E> */ B(StaContextSlot), R(context), U8(186),
/* 2483 S> */ B(LdaZero),
/* 2483 E> */ B(StaContextSlot), R(context), U8(188),
/* 2483 E> */ B(StaContextSlot), R(context), U8(187),
/* 2497 S> */ B(LdaZero),
/* 2497 E> */ B(StaContextSlot), R(context), U8(189),
/* 2497 E> */ B(StaContextSlot), R(context), U8(188),
/* 2511 S> */ B(LdaZero),
/* 2511 E> */ B(StaContextSlot), R(context), U8(190),
/* 2511 E> */ B(StaContextSlot), R(context), U8(189),
/* 2525 S> */ B(LdaZero),
/* 2525 E> */ B(StaContextSlot), R(context), U8(191),
/* 2525 E> */ B(StaContextSlot), R(context), U8(190),
/* 2539 S> */ B(LdaZero),
/* 2539 E> */ B(StaContextSlot), R(context), U8(192),
/* 2539 E> */ B(StaContextSlot), R(context), U8(191),
/* 2553 S> */ B(LdaZero),
/* 2553 E> */ B(StaContextSlot), R(context), U8(193),
/* 2553 E> */ B(StaContextSlot), R(context), U8(192),
/* 2567 S> */ B(LdaZero),
/* 2567 E> */ B(StaContextSlot), R(context), U8(194),
/* 2567 E> */ B(StaContextSlot), R(context), U8(193),
/* 2581 S> */ B(LdaZero),
/* 2581 E> */ B(StaContextSlot), R(context), U8(195),
/* 2581 E> */ B(StaContextSlot), R(context), U8(194),
/* 2595 S> */ B(LdaZero),
/* 2595 E> */ B(StaContextSlot), R(context), U8(196),
/* 2595 E> */ B(StaContextSlot), R(context), U8(195),
/* 2609 S> */ B(LdaZero),
/* 2609 E> */ B(StaContextSlot), R(context), U8(197),
/* 2609 E> */ B(StaContextSlot), R(context), U8(196),
/* 2623 S> */ B(LdaZero),
/* 2623 E> */ B(StaContextSlot), R(context), U8(198),
/* 2623 E> */ B(StaContextSlot), R(context), U8(197),
/* 2637 S> */ B(LdaZero),
/* 2637 E> */ B(StaContextSlot), R(context), U8(199),
/* 2637 E> */ B(StaContextSlot), R(context), U8(198),
/* 2651 S> */ B(LdaZero),
/* 2651 E> */ B(StaContextSlot), R(context), U8(200),
/* 2651 E> */ B(StaContextSlot), R(context), U8(199),
/* 2665 S> */ B(LdaZero),
/* 2665 E> */ B(StaContextSlot), R(context), U8(201),
/* 2665 E> */ B(StaContextSlot), R(context), U8(200),
/* 2679 S> */ B(LdaZero),
/* 2679 E> */ B(StaContextSlot), R(context), U8(202),
/* 2679 E> */ B(StaContextSlot), R(context), U8(201),
/* 2693 S> */ B(LdaZero),
/* 2693 E> */ B(StaContextSlot), R(context), U8(203),
/* 2693 E> */ B(StaContextSlot), R(context), U8(202),
/* 2707 S> */ B(LdaZero),
/* 2707 E> */ B(StaContextSlot), R(context), U8(204),
/* 2707 E> */ B(StaContextSlot), R(context), U8(203),
/* 2721 S> */ B(LdaZero),
/* 2721 E> */ B(StaContextSlot), R(context), U8(205),
/* 2721 E> */ B(StaContextSlot), R(context), U8(204),
/* 2735 S> */ B(LdaZero),
/* 2735 E> */ B(StaContextSlot), R(context), U8(206),
/* 2735 E> */ B(StaContextSlot), R(context), U8(205),
/* 2749 S> */ B(LdaZero),
/* 2749 E> */ B(StaContextSlot), R(context), U8(207),
/* 2749 E> */ B(StaContextSlot), R(context), U8(206),
/* 2763 S> */ B(LdaZero),
/* 2763 E> */ B(StaContextSlot), R(context), U8(208),
/* 2763 E> */ B(StaContextSlot), R(context), U8(207),
/* 2777 S> */ B(LdaZero),
/* 2777 E> */ B(StaContextSlot), R(context), U8(209),
/* 2777 E> */ B(StaContextSlot), R(context), U8(208),
/* 2791 S> */ B(LdaZero),
/* 2791 E> */ B(StaContextSlot), R(context), U8(210),
/* 2791 E> */ B(StaContextSlot), R(context), U8(209),
/* 2805 S> */ B(LdaZero),
/* 2805 E> */ B(StaContextSlot), R(context), U8(211),
/* 2805 E> */ B(StaContextSlot), R(context), U8(210),
/* 2819 S> */ B(LdaZero),
/* 2819 E> */ B(StaContextSlot), R(context), U8(212),
/* 2819 E> */ B(StaContextSlot), R(context), U8(211),
/* 2833 S> */ B(LdaZero),
/* 2833 E> */ B(StaContextSlot), R(context), U8(213),
/* 2833 E> */ B(StaContextSlot), R(context), U8(212),
/* 2847 S> */ B(LdaZero),
/* 2847 E> */ B(StaContextSlot), R(context), U8(214),
/* 2847 E> */ B(StaContextSlot), R(context), U8(213),
/* 2861 S> */ B(LdaZero),
/* 2861 E> */ B(StaContextSlot), R(context), U8(215),
/* 2861 E> */ B(StaContextSlot), R(context), U8(214),
/* 2875 S> */ B(LdaZero),
/* 2875 E> */ B(StaContextSlot), R(context), U8(216),
/* 2875 E> */ B(StaContextSlot), R(context), U8(215),
/* 2889 S> */ B(LdaZero),
/* 2889 E> */ B(StaContextSlot), R(context), U8(217),
/* 2889 E> */ B(StaContextSlot), R(context), U8(216),
/* 2903 S> */ B(LdaZero),
/* 2903 E> */ B(StaContextSlot), R(context), U8(218),
/* 2903 E> */ B(StaContextSlot), R(context), U8(217),
/* 2917 S> */ B(LdaZero),
/* 2917 E> */ B(StaContextSlot), R(context), U8(219),
/* 2917 E> */ B(StaContextSlot), R(context), U8(218),
/* 2931 S> */ B(LdaZero),
/* 2931 E> */ B(StaContextSlot), R(context), U8(220),
/* 2931 E> */ B(StaContextSlot), R(context), U8(219),
/* 2945 S> */ B(LdaZero),
/* 2945 E> */ B(StaContextSlot), R(context), U8(221),
/* 2945 E> */ B(StaContextSlot), R(context), U8(220),
/* 2959 S> */ B(LdaZero),
/* 2959 E> */ B(StaContextSlot), R(context), U8(222),
/* 2959 E> */ B(StaContextSlot), R(context), U8(221),
/* 2973 S> */ B(LdaZero),
/* 2973 E> */ B(StaContextSlot), R(context), U8(223),
/* 2973 E> */ B(StaContextSlot), R(context), U8(222),
/* 2987 S> */ B(LdaZero),
/* 2987 E> */ B(StaContextSlot), R(context), U8(224),
/* 2987 E> */ B(StaContextSlot), R(context), U8(223),
/* 3001 S> */ B(LdaZero),
/* 3001 E> */ B(StaContextSlot), R(context), U8(225),
/* 3001 E> */ B(StaContextSlot), R(context), U8(224),
/* 3015 S> */ B(LdaZero),
/* 3015 E> */ B(StaContextSlot), R(context), U8(226),
/* 3015 E> */ B(StaContextSlot), R(context), U8(225),
/* 3029 S> */ B(LdaZero),
/* 3029 E> */ B(StaContextSlot), R(context), U8(227),
/* 3029 E> */ B(StaContextSlot), R(context), U8(226),
/* 3043 S> */ B(LdaZero),
/* 3043 E> */ B(StaContextSlot), R(context), U8(228),
/* 3043 E> */ B(StaContextSlot), R(context), U8(227),
/* 3057 S> */ B(LdaZero),
/* 3057 E> */ B(StaContextSlot), R(context), U8(229),
/* 3057 E> */ B(StaContextSlot), R(context), U8(228),
/* 3071 S> */ B(LdaZero),
/* 3071 E> */ B(StaContextSlot), R(context), U8(230),
/* 3071 E> */ B(StaContextSlot), R(context), U8(229),
/* 3085 S> */ B(LdaZero),
/* 3085 E> */ B(StaContextSlot), R(context), U8(231),
/* 3085 E> */ B(StaContextSlot), R(context), U8(230),
/* 3099 S> */ B(LdaZero),
/* 3099 E> */ B(StaContextSlot), R(context), U8(232),
/* 3099 E> */ B(StaContextSlot), R(context), U8(231),
/* 3113 S> */ B(LdaZero),
/* 3113 E> */ B(StaContextSlot), R(context), U8(233),
/* 3113 E> */ B(StaContextSlot), R(context), U8(232),
/* 3127 S> */ B(LdaZero),
/* 3127 E> */ B(StaContextSlot), R(context), U8(234),
/* 3127 E> */ B(StaContextSlot), R(context), U8(233),
/* 3141 S> */ B(LdaZero),
/* 3141 E> */ B(StaContextSlot), R(context), U8(235),
/* 3141 E> */ B(StaContextSlot), R(context), U8(234),
/* 3155 S> */ B(LdaZero),
/* 3155 E> */ B(StaContextSlot), R(context), U8(236),
/* 3155 E> */ B(StaContextSlot), R(context), U8(235),
/* 3169 S> */ B(LdaZero),
/* 3169 E> */ B(StaContextSlot), R(context), U8(237),
/* 3169 E> */ B(StaContextSlot), R(context), U8(236),
/* 3183 S> */ B(LdaZero),
/* 3183 E> */ B(StaContextSlot), R(context), U8(238),
/* 3183 E> */ B(StaContextSlot), R(context), U8(237),
/* 3197 S> */ B(LdaZero),
/* 3197 E> */ B(StaContextSlot), R(context), U8(239),
/* 3197 E> */ B(StaContextSlot), R(context), U8(238),
/* 3211 S> */ B(LdaZero),
/* 3211 E> */ B(StaContextSlot), R(context), U8(240),
/* 3211 E> */ B(StaContextSlot), R(context), U8(239),
/* 3225 S> */ B(LdaZero),
/* 3225 E> */ B(StaContextSlot), R(context), U8(241),
/* 3225 E> */ B(StaContextSlot), R(context), U8(240),
/* 3239 S> */ B(LdaZero),
/* 3239 E> */ B(StaContextSlot), R(context), U8(242),
/* 3239 E> */ B(StaContextSlot), R(context), U8(241),
/* 3253 S> */ B(LdaZero),
/* 3253 E> */ B(StaContextSlot), R(context), U8(243),
/* 3253 E> */ B(StaContextSlot), R(context), U8(242),
/* 3267 S> */ B(LdaZero),
/* 3267 E> */ B(StaContextSlot), R(context), U8(244),
/* 3267 E> */ B(StaContextSlot), R(context), U8(243),
/* 3281 S> */ B(LdaZero),
/* 3281 E> */ B(StaContextSlot), R(context), U8(245),
/* 3281 E> */ B(StaContextSlot), R(context), U8(244),
/* 3295 S> */ B(LdaZero),
/* 3295 E> */ B(StaContextSlot), R(context), U8(246),
/* 3295 E> */ B(StaContextSlot), R(context), U8(245),
/* 3309 S> */ B(LdaZero),
/* 3309 E> */ B(StaContextSlot), R(context), U8(247),
/* 3309 E> */ B(StaContextSlot), R(context), U8(246),
/* 3323 S> */ B(LdaZero),
/* 3323 E> */ B(StaContextSlot), R(context), U8(248),
/* 3323 E> */ B(StaContextSlot), R(context), U8(247),
/* 3337 S> */ B(LdaZero),
/* 3337 E> */ B(StaContextSlot), R(context), U8(249),
/* 3337 E> */ B(StaContextSlot), R(context), U8(248),
/* 3351 S> */ B(LdaZero),
/* 3351 E> */ B(StaContextSlot), R(context), U8(250),
/* 3351 E> */ B(StaContextSlot), R(context), U8(249),
/* 3365 S> */ B(LdaZero),
/* 3365 E> */ B(StaContextSlot), R(context), U8(251),
/* 3365 E> */ B(StaContextSlot), R(context), U8(250),
/* 3379 S> */ B(LdaZero),
/* 3379 E> */ B(StaContextSlot), R(context), U8(252),
/* 3379 E> */ B(StaContextSlot), R(context), U8(251),
/* 3393 S> */ B(LdaZero),
/* 3393 E> */ B(StaContextSlot), R(context), U8(253),
/* 3393 E> */ B(StaContextSlot), R(context), U8(252),
/* 3407 S> */ B(LdaZero),
/* 3407 E> */ B(StaContextSlot), R(context), U8(254),
/* 3407 E> */ B(StaContextSlot), R(context), U8(253),
/* 3421 S> */ B(LdaZero),
/* 3421 E> */ B(StaContextSlot), R(context), U8(255),
/* 3424 S> */ B(LdrUndefined), R(2),
/* 3424 E> */ B(LdrGlobal), U8(1), R(1),
/* 3424 E> */ B(Call), R(1), R(2), U8(1), U8(0),
/* 3440 S> */ B(LdaSmi), U8(100),
/* 3440 E> */ B(Wide), B(StaContextSlot), R16(context), U16(256),
/* 3445 S> */ B(Wide), B(LdaContextSlot), R16(context), U16(256),
/* 3454 S> */ B(Return),
/* 3421 E> */ B(StaContextSlot), R(context), U8(254),
/* 3435 S> */ B(LdaZero),
/* 3435 E> */ B(StaContextSlot), R(context), U8(255),
/* 3438 S> */ B(LdrUndefined), R(2),
/* 3438 E> */ B(LdrGlobal), U8(1), R(1),
/* 3438 E> */ B(Call), R(1), R(2), U8(1), U8(0),
/* 3454 S> */ B(LdaSmi), U8(100),
/* 3454 E> */ B(Wide), B(StaContextSlot), R16(context), U16(256),
/* 3459 S> */ B(Wide), B(LdaContextSlot), R16(context), U16(256),
/* 3468 S> */ B(Return),
]
constant pool: [
]

View File

@ -84,17 +84,17 @@ parameter count: 2
bytecode array length: 26
bytecodes: [
B(CreateUnmappedArguments),
B(Star), R(0),
B(CreateRestParameter),
B(Star), R(1),
B(LdaTheHole),
B(Star), R(2),
B(CreateRestParameter),
B(Star), R(0),
B(LdaTheHole),
B(Star), R(1),
/* 10 E> */ B(StackCheck),
B(Mov), R(arg0), R(2),
B(Mov), R(arg0), R(1),
/* 29 S> */ B(LdaZero),
/* 44 E> */ B(LdrKeyedProperty), R(1), U8(1), R(4),
/* 44 E> */ B(LdrKeyedProperty), R(0), U8(1), R(4),
B(LdaZero),
/* 59 E> */ B(LdaKeyedProperty), R(0), U8(3),
/* 59 E> */ B(LdaKeyedProperty), R(2), U8(3),
B(Add), R(4), U8(5),
/* 64 S> */ B(Return),
]

View File

@ -19,9 +19,9 @@ bytecodes: [
B(Ldar), R(this),
B(StaContextSlot), R(context), U8(4),
B(CreateMappedArguments),
B(StaContextSlot), R(context), U8(5),
B(Ldar), R(new_target),
B(StaContextSlot), R(context), U8(6),
B(Ldar), R(new_target),
B(StaContextSlot), R(context), U8(5),
/* 30 E> */ B(StackCheck),
/* 34 S> */ B(LdaConstant), U8(0),
B(Star), R(3),

View File

@ -19,9 +19,9 @@ bytecodes: [
B(Ldar), R(this),
B(StaContextSlot), R(context), U8(4),
B(CreateMappedArguments),
B(StaContextSlot), R(context), U8(5),
B(Ldar), R(new_target),
B(StaContextSlot), R(context), U8(6),
B(Ldar), R(new_target),
B(StaContextSlot), R(context), U8(5),
/* 30 E> */ B(StackCheck),
/* 34 S> */ B(LdaConstant), U8(0),
B(Star), R(3),
@ -64,9 +64,9 @@ bytecodes: [
B(Ldar), R(this),
B(StaContextSlot), R(context), U8(4),
B(CreateMappedArguments),
B(StaContextSlot), R(context), U8(5),
B(Ldar), R(new_target),
B(StaContextSlot), R(context), U8(6),
B(Ldar), R(new_target),
B(StaContextSlot), R(context), U8(5),
/* 30 E> */ B(StackCheck),
/* 34 S> */ B(LdaConstant), U8(0),
B(Star), R(3),
@ -110,9 +110,9 @@ bytecodes: [
B(Ldar), R(this),
B(StaContextSlot), R(context), U8(4),
B(CreateMappedArguments),
B(StaContextSlot), R(context), U8(5),
B(Ldar), R(new_target),
B(StaContextSlot), R(context), U8(6),
B(Ldar), R(new_target),
B(StaContextSlot), R(context), U8(5),
/* 30 E> */ B(StackCheck),
/* 34 S> */ B(LdaSmi), U8(20),
/* 36 E> */ B(StaLookupSlotSloppy), U8(0),

View File

@ -56,12 +56,13 @@ namespace interpreter {
#define REPEAT_64_UNIQUE_VARS() REPEAT_32_UNIQUE_VARS() REPEAT_32_UNIQUE_VARS()
#define REPEAT_128_UNIQUE_VARS() REPEAT_64_UNIQUE_VARS() REPEAT_64_UNIQUE_VARS()
#define REPEAT_249_UNIQUE_VARS() \
#define REPEAT_250_UNIQUE_VARS() \
REPEAT_128_UNIQUE_VARS() \
REPEAT_64_UNIQUE_VARS() \
REPEAT_32_UNIQUE_VARS() \
REPEAT_16_UNIQUE_VARS() \
REPEAT_8_UNIQUE_VARS() \
UNIQUE_VAR() \
UNIQUE_VAR()
static const char* kGoldenFileDirectory =
@ -1315,7 +1316,7 @@ TEST(ContextVariables) {
"{ let b = 2; return function() { a + b; }; }\n",
"'use strict';\n"
REPEAT_249_UNIQUE_VARS()
REPEAT_250_UNIQUE_VARS()
"eval();\n"
"var b = 100;\n"
"return b\n",

View File

@ -6444,10 +6444,9 @@ TEST(DestructuringPositiveTests) {
RunParserSyncTest(context_data, data, kSuccess);
// v8:5201
// TODO(lpy): The two test sets below should be merged once
// we fix https://bugs.chromium.org/p/v8/issues/detail?id=4577
{
const char* sloppy_context_data1[][2] = {
// clang-format off
const char* sloppy_context_data[][2] = {
{"var ", " = {};"},
{"function f(", ") {}"},
{"function f(argument1, ", ") {}"},
@ -6456,26 +6455,17 @@ TEST(DestructuringPositiveTests) {
{"try {} catch(", ") {}"},
{NULL, NULL}
};
const char* data1[] = {
const char* data[] = {
"{arguments}",
"{eval}",
"{x: arguments}",
"{x: eval}",
"{arguments = false}",
"{eval = false}",
NULL
};
RunParserSyncTest(sloppy_context_data1, data1, kSuccess);
const char* sloppy_context_data2[][2] = {
{"var ", " = {};"},
{"try {} catch(", ") {}"},
{NULL, NULL}
};
const char* data2[] = {
"{arguments}",
"{x: arguments}",
"{arguments = false}",
NULL,
};
RunParserSyncTest(sloppy_context_data2, data2, kSuccess);
// clang-format on
RunParserSyncTest(sloppy_context_data, data, kSuccess);
}
}
@ -8330,3 +8320,38 @@ TEST(TrailingCommasInParametersErrors) {
RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags,
arraysize(always_flags));
}
TEST(ArgumentsRedeclaration) {
{
// clang-format off
const char* context_data[][2] = {
{ "function f(", ") {}" },
{ NULL, NULL }
};
const char* success_data[] = {
"{arguments}",
"{arguments = false}",
"arg1, arguments",
"arg1, ...arguments",
NULL
};
// clang-format on
RunParserSyncTest(context_data, success_data, kSuccess);
}
{
// clang-format off
const char* context_data[][2] = {
{ "function f() {", "}" },
{ NULL, NULL }
};
const char* data[] = {
"const arguments = 1",
"let arguments",
"var arguments",
NULL
};
// clang-format on
RunParserSyncTest(context_data, data, kSuccess);
}
}

View File

@ -11,3 +11,11 @@ function g({arguments}) {
return arguments === 42;
}
assertTrue(g({arguments: 42}));
function foo() {
let arguments = 2;
return arguments;
}
assertEquals(2, foo());
assertThrows(function(x = arguments, arguments) {}, ReferenceError);