From da818e41878abe9dea6a9bb6f7f5b3db698a0881 Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Mon, 22 Apr 2024 18:29:29 +0800 Subject: [PATCH 01/19] check if env instruction is necessary --- .../__tests__/cse-machine-runtime-context.ts | 71 ++++++++++++++++++- src/cse-machine/interpreter.ts | 15 ++-- 2 files changed, 79 insertions(+), 7 deletions(-) diff --git a/src/cse-machine/__tests__/cse-machine-runtime-context.ts b/src/cse-machine/__tests__/cse-machine-runtime-context.ts index 61e3919b9..0fe044110 100644 --- a/src/cse-machine/__tests__/cse-machine-runtime-context.ts +++ b/src/cse-machine/__tests__/cse-machine-runtime-context.ts @@ -1,11 +1,16 @@ +import { IOptions } from '../..' import { mockContext } from '../../mocks/context' import { runCodeInSource } from '../../runner' -import { Chapter } from '../../types' +import { Chapter, RecursivePartial } from '../../types' import { stripIndent } from '../../utils/formatters' -const getContextFrom = async (code: string) => { +const getContextFrom = async (code: string, steps?: number) => { const context = mockContext(Chapter.SOURCE_4) - await runCodeInSource(code, context, { executionMethod: 'cse-machine' }) + const options: RecursivePartial = { executionMethod: 'cse-machine' }; + if (steps !== undefined) { + options.steps = steps; + } + await runCodeInSource(code, context, options) return context } @@ -67,3 +72,63 @@ for (const context of contexts) { expect((await context).runtime.changepointSteps).toMatchSnapshot() }) } +test('Avoid unnescessary environment instruction 1', async () => { + const context = getContextFrom(stripIndent( + ` + function f(n) { + return n === 0 + ? 1 + : f(n-1) * 2; + } + f(3); + ` + ), 61) + expect((await context).runtime.control).toMatchSnapshot() +}) + +test('Avoid unnescessary environment instruction 2', async () => { + const context = getContextFrom(stripIndent( + ` + function f(n) { + return n === 0 + ? 1 + : n * f(n-1); + } + f(3); + ` + ), 63) + expect((await context).runtime.control).toMatchSnapshot() +}) + +test('Avoid unnescessary environment instruction 3', async () => { + const context = getContextFrom(stripIndent( + ` + let a = 1; + function f(n) { + return n === 0 + ? 1 + : n * f(n-1); + } + f(3); + a = 2; + ` + ), 66) + expect((await context).runtime.control).toMatchSnapshot() +}) + +test('Avoid unnescessary environment instruction 4', async () => { + const context = getContextFrom(stripIndent( + ` + { + let a = 1; + let b = 2; + } + + { + 1 + 2; + 3; + } + ` + ), 3) + expect((await context).runtime.control).toMatchSnapshot() +}) \ No newline at end of file diff --git a/src/cse-machine/interpreter.ts b/src/cse-machine/interpreter.ts index ff1b357c9..f6ef54520 100644 --- a/src/cse-machine/interpreter.ts +++ b/src/cse-machine/interpreter.ts @@ -75,6 +75,7 @@ import { isInstr, isNode, isSimpleFunction, + canAvoidEnvInstr, isStreamFn, popEnvironment, pushEnvironment, @@ -439,8 +440,11 @@ const cmdEvaluators: { [type: string]: CmdEvaluator } = { const next = control.peek() // Push ENVIRONMENT instruction if needed - if next control stack item - // exists and is not an environment instruction - if (next && !(isInstr(next) && next.instrType === InstrType.ENVIRONMENT)) { + // exists and is not an environment instruction, OR the control only contains + // environment indepedent item + if (next + && !(isInstr(next) && next.instrType === InstrType.ENVIRONMENT) + && !canAvoidEnvInstr(control)) { control.push(instr.envInstr(currentEnvironment(context), command)) } @@ -950,8 +954,11 @@ const cmdEvaluators: { [type: string]: CmdEvaluator } = { const next = control.peek() // Push ENVIRONMENT instruction if needed - if next control stack item - // exists and is not an environment instruction - if (next && !(isInstr(next) && next.instrType === InstrType.ENVIRONMENT)) { + // exists and is not an environment instruction, OR the control only contains + // environment indepedent item + if (next + && !(isInstr(next) && next.instrType === InstrType.ENVIRONMENT) + && !canAvoidEnvInstr(control)) { control.push(instr.envInstr(currentEnvironment(context), command.srcNode)) } From de09673fdd6a18d0b2a1aa1c9fe088cb0f1a232a Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Mon, 22 Apr 2024 19:48:04 +0800 Subject: [PATCH 02/19] Add test cases --- .../cse-machine-runtime-context.ts.snap | 2800 +++++++++++++++++ .../__tests__/cse-machine-runtime-context.ts | 42 +- 2 files changed, 2827 insertions(+), 15 deletions(-) diff --git a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap index 00ac26440..c66e99a3a 100644 --- a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap +++ b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap @@ -1,5 +1,2805 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`Avoid unnescessary environment instruction 1 1`] = ` +Control { + "storage": Array [ + Object { + "instrType": "BinaryOperation", + "srcNode": Node { + "end": 53, + "left": Node { + "arguments": Array [ + Node { + "end": 48, + "left": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 7, + "line": 4, + }, + "start": Position { + "column": 6, + "line": 4, + }, + }, + "name": "n", + "start": 45, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 6, + "line": 4, + }, + }, + "operator": "-", + "right": Node { + "end": 48, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 47, + "type": "Literal", + "value": 1, + }, + "start": 45, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "name": "f", + "start": 43, + "type": "Identifier", + }, + "end": 49, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "start": 43, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "operator": "*", + "right": Node { + "end": 53, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 13, + "line": 4, + }, + }, + "raw": "2", + "start": 52, + "type": "Literal", + "value": 2, + }, + "start": 43, + "type": "BinaryExpression", + }, + "symbol": "*", + }, + Node { + "end": 53, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 13, + "line": 4, + }, + }, + "raw": "2", + "start": 52, + "type": "Literal", + "value": 2, + }, + Object { + "instrType": "BinaryOperation", + "srcNode": Node { + "end": 53, + "left": Node { + "arguments": Array [ + Node { + "end": 48, + "left": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 7, + "line": 4, + }, + "start": Position { + "column": 6, + "line": 4, + }, + }, + "name": "n", + "start": 45, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 6, + "line": 4, + }, + }, + "operator": "-", + "right": Node { + "end": 48, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 47, + "type": "Literal", + "value": 1, + }, + "start": 45, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "name": "f", + "start": 43, + "type": "Identifier", + }, + "end": 49, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "start": 43, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "operator": "*", + "right": Node { + "end": 53, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 13, + "line": 4, + }, + }, + "raw": "2", + "start": 52, + "type": "Literal", + "value": 2, + }, + "start": 43, + "type": "BinaryExpression", + }, + "symbol": "*", + }, + Node { + "end": 53, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 13, + "line": 4, + }, + }, + "raw": "2", + "start": 52, + "type": "Literal", + "value": 2, + }, + Object { + "instrType": "BinaryOperation", + "srcNode": Node { + "end": 53, + "left": Node { + "arguments": Array [ + Node { + "end": 48, + "left": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 7, + "line": 4, + }, + "start": Position { + "column": 6, + "line": 4, + }, + }, + "name": "n", + "start": 45, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 6, + "line": 4, + }, + }, + "operator": "-", + "right": Node { + "end": 48, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 47, + "type": "Literal", + "value": 1, + }, + "start": 45, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "name": "f", + "start": 43, + "type": "Identifier", + }, + "end": 49, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "start": 43, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "operator": "*", + "right": Node { + "end": 53, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 13, + "line": 4, + }, + }, + "raw": "2", + "start": 52, + "type": "Literal", + "value": 2, + }, + "start": 43, + "type": "BinaryExpression", + }, + "symbol": "*", + }, + ], +} +`; + +exports[`Avoid unnescessary environment instruction 2 1`] = ` +Control { + "storage": Array [ + Object { + "instrType": "BinaryOperation", + "srcNode": Node { + "end": 53, + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "name": "n", + "start": 43, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "operator": "*", + "right": Node { + "arguments": Array [ + Node { + "end": 52, + "left": Node { + "end": 50, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 4, + }, + "start": Position { + "column": 10, + "line": 4, + }, + }, + "name": "n", + "start": 49, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 4, + }, + "start": Position { + "column": 10, + "line": 4, + }, + }, + "operator": "-", + "right": Node { + "end": 52, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 4, + }, + "start": Position { + "column": 12, + "line": 4, + }, + }, + "raw": "1", + "start": 51, + "type": "Literal", + "value": 1, + }, + "start": 49, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 48, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "name": "f", + "start": 47, + "type": "Identifier", + }, + "end": 53, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "start": 47, + "type": "CallExpression", + }, + "start": 43, + "type": "BinaryExpression", + }, + "symbol": "*", + }, + Object { + "instrType": "BinaryOperation", + "srcNode": Node { + "end": 53, + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "name": "n", + "start": 43, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "operator": "*", + "right": Node { + "arguments": Array [ + Node { + "end": 52, + "left": Node { + "end": 50, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 4, + }, + "start": Position { + "column": 10, + "line": 4, + }, + }, + "name": "n", + "start": 49, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 4, + }, + "start": Position { + "column": 10, + "line": 4, + }, + }, + "operator": "-", + "right": Node { + "end": 52, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 4, + }, + "start": Position { + "column": 12, + "line": 4, + }, + }, + "raw": "1", + "start": 51, + "type": "Literal", + "value": 1, + }, + "start": 49, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 48, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "name": "f", + "start": 47, + "type": "Identifier", + }, + "end": 53, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "start": 47, + "type": "CallExpression", + }, + "start": 43, + "type": "BinaryExpression", + }, + "symbol": "*", + }, + Object { + "instrType": "BinaryOperation", + "srcNode": Node { + "end": 53, + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "name": "n", + "start": 43, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "operator": "*", + "right": Node { + "arguments": Array [ + Node { + "end": 52, + "left": Node { + "end": 50, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 4, + }, + "start": Position { + "column": 10, + "line": 4, + }, + }, + "name": "n", + "start": 49, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 4, + }, + "start": Position { + "column": 10, + "line": 4, + }, + }, + "operator": "-", + "right": Node { + "end": 52, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 4, + }, + "start": Position { + "column": 12, + "line": 4, + }, + }, + "raw": "1", + "start": 51, + "type": "Literal", + "value": 1, + }, + "start": 49, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 48, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "name": "f", + "start": 47, + "type": "Identifier", + }, + "end": 53, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "start": 47, + "type": "CallExpression", + }, + "start": 43, + "type": "BinaryExpression", + }, + "symbol": "*", + }, + ], +} +`; + +exports[`Avoid unnescessary environment instruction 3 1`] = ` +Control { + "storage": Array [ + Node { + "end": 86, + "expression": Node { + "end": 85, + "left": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 8, + }, + "start": Position { + "column": 0, + "line": 8, + }, + }, + "name": "a", + "start": 80, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 8, + }, + "start": Position { + "column": 0, + "line": 8, + }, + }, + "operator": "=", + "right": Node { + "end": 85, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 8, + }, + "start": Position { + "column": 4, + "line": 8, + }, + }, + "raw": "2", + "start": 84, + "type": "Literal", + "value": 2, + }, + "start": 80, + "type": "AssignmentExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 6, + "line": 8, + }, + "start": Position { + "column": 0, + "line": 8, + }, + }, + "start": 80, + "type": "ExpressionStatement", + }, + Object { + "instrType": "Pop", + "srcNode": Node { + "end": 86, + "expression": Node { + "end": 85, + "left": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 8, + }, + "start": Position { + "column": 0, + "line": 8, + }, + }, + "name": "a", + "start": 80, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 8, + }, + "start": Position { + "column": 0, + "line": 8, + }, + }, + "operator": "=", + "right": Node { + "end": 85, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 8, + }, + "start": Position { + "column": 4, + "line": 8, + }, + }, + "raw": "2", + "start": 84, + "type": "Literal", + "value": 2, + }, + "start": 80, + "type": "AssignmentExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 6, + "line": 8, + }, + "start": Position { + "column": 0, + "line": 8, + }, + }, + "start": 80, + "type": "ExpressionStatement", + }, + }, + Object { + "env": Object { + "head": Object { + "a": 1, + "f": [Function], + }, + "heap": Heap { + "storage": Set { + [Function], + }, + }, + "id": "47", + "name": "programEnvironment", + "tail": Object { + "head": Object { + "$accumulate": [Function], + "$append": [Function], + "$build_list": [Function], + "$enum_list": [Function], + "$filter": [Function], + "$length": [Function], + "$list_to_string": [Function], + "$map": [Function], + "$remove": [Function], + "$remove_all": [Function], + "$reverse": [Function], + "__access_export__": [Function], + "__access_named_export__": [Function], + "accumulate": [Function], + "append": [Function], + "build_list": [Function], + "build_stream": [Function], + "enum_list": [Function], + "enum_stream": [Function], + "equal": [Function], + "eval_stream": [Function], + "filter": [Function], + "for_each": [Function], + "integers_from": [Function], + "is_stream": [Function], + "length": [Function], + "list_ref": [Function], + "list_to_stream": [Function], + "list_to_string": [Function], + "map": [Function], + "member": [Function], + "remove": [Function], + "remove_all": [Function], + "reverse": [Function], + "stream_append": [Function], + "stream_filter": [Function], + "stream_for_each": [Function], + "stream_length": [Function], + "stream_map": [Function], + "stream_member": [Function], + "stream_ref": [Function], + "stream_remove": [Function], + "stream_remove_all": [Function], + "stream_reverse": [Function], + "stream_tail": [Function], + "stream_to_list": [Function], + }, + "heap": Heap { + "storage": Set { + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + }, + }, + "id": "0", + "name": "prelude", + "tail": Object { + "head": Object { + "Infinity": Infinity, + "NaN": NaN, + "apply_in_underlying_javascript": [Function], + "arity": [Function], + "array_length": [Function], + "call_cc": [Function], + "char_at": [Function], + "display": [Function], + "display_list": [Function], + "draw_data": [Function], + "error": [Function], + "get_time": [Function], + "head": [Function], + "is_array": [Function], + "is_boolean": [Function], + "is_function": [Function], + "is_list": [Function], + "is_null": [Function], + "is_number": [Function], + "is_pair": [Function], + "is_string": [Function], + "is_undefined": [Function], + "list": [Function], + "math_E": 2.718281828459045, + "math_LN10": 2.302585092994046, + "math_LN2": 0.6931471805599453, + "math_LOG10E": 0.4342944819032518, + "math_LOG2E": 1.4426950408889634, + "math_PI": 3.141592653589793, + "math_SQRT1_2": 0.7071067811865476, + "math_SQRT2": 1.4142135623730951, + "math_abs": [Function], + "math_acos": [Function], + "math_acosh": [Function], + "math_asin": [Function], + "math_asinh": [Function], + "math_atan": [Function], + "math_atan2": [Function], + "math_atanh": [Function], + "math_cbrt": [Function], + "math_ceil": [Function], + "math_clz32": [Function], + "math_cos": [Function], + "math_cosh": [Function], + "math_exp": [Function], + "math_expm1": [Function], + "math_floor": [Function], + "math_fround": [Function], + "math_hypot": [Function], + "math_imul": [Function], + "math_log": [Function], + "math_log10": [Function], + "math_log1p": [Function], + "math_log2": [Function], + "math_max": [Function], + "math_min": [Function], + "math_pow": [Function], + "math_random": [Function], + "math_round": [Function], + "math_sign": [Function], + "math_sin": [Function], + "math_sinh": [Function], + "math_sqrt": [Function], + "math_tan": [Function], + "math_tanh": [Function], + "math_trunc": [Function], + "pair": [Function], + "parse": [Function], + "parse_int": [Function], + "prompt": [Function], + "raw_display": [Function], + "set_head": [Function], + "set_tail": [Function], + "stream": [Function], + "stringify": [Function], + "tail": [Function], + "tokenize": [Function], + "undefined": undefined, + }, + "heap": Heap { + "storage": null, + }, + "id": "-1", + "name": "global", + "tail": null, + }, + }, + }, + "instrType": "Environment", + "srcNode": Node { + "arguments": Array [ + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 7, + }, + "start": Position { + "column": 2, + "line": 7, + }, + }, + "raw": "3", + "start": 76, + "type": "Literal", + "value": 3, + }, + ], + "callee": Node { + "end": 75, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 7, + }, + "start": Position { + "column": 0, + "line": 7, + }, + }, + "name": "f", + "start": 74, + "type": "Identifier", + }, + "end": 78, + "loc": SourceLocation { + "end": Position { + "column": 4, + "line": 7, + }, + "start": Position { + "column": 0, + "line": 7, + }, + }, + "start": 74, + "type": "CallExpression", + }, + }, + Object { + "instrType": "BinaryOperation", + "srcNode": Node { + "end": 70, + "left": Node { + "end": 61, + "loc": SourceLocation { + "end": Position { + "column": 7, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "name": "n", + "start": 60, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "operator": "*", + "right": Node { + "arguments": Array [ + Node { + "end": 69, + "left": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "name": "n", + "start": 66, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 69, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "raw": "1", + "start": 68, + "type": "Literal", + "value": 1, + }, + "start": 66, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "name": "f", + "start": 64, + "type": "Identifier", + }, + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "start": 64, + "type": "CallExpression", + }, + "start": 60, + "type": "BinaryExpression", + }, + "symbol": "*", + }, + Object { + "env": Object { + "callExpression": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + ], + "callee": Node { + "end": 75, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 7, + }, + "start": Position { + "column": 0, + "line": 7, + }, + }, + "name": "f", + "start": 74, + "type": "Identifier", + }, + "end": 78, + "loc": SourceLocation { + "end": Position { + "column": 4, + "line": 7, + }, + "start": Position { + "column": 0, + "line": 7, + }, + }, + "start": 74, + "type": "CallExpression", + }, + "head": Object { + "n": 3, + }, + "heap": Heap { + "storage": null, + }, + "id": "49", + "name": "f", + "tail": Object { + "head": Object { + "a": 1, + "f": [Function], + }, + "heap": Heap { + "storage": Set { + [Function], + }, + }, + "id": "47", + "name": "programEnvironment", + "tail": Object { + "head": Object { + "$accumulate": [Function], + "$append": [Function], + "$build_list": [Function], + "$enum_list": [Function], + "$filter": [Function], + "$length": [Function], + "$list_to_string": [Function], + "$map": [Function], + "$remove": [Function], + "$remove_all": [Function], + "$reverse": [Function], + "__access_export__": [Function], + "__access_named_export__": [Function], + "accumulate": [Function], + "append": [Function], + "build_list": [Function], + "build_stream": [Function], + "enum_list": [Function], + "enum_stream": [Function], + "equal": [Function], + "eval_stream": [Function], + "filter": [Function], + "for_each": [Function], + "integers_from": [Function], + "is_stream": [Function], + "length": [Function], + "list_ref": [Function], + "list_to_stream": [Function], + "list_to_string": [Function], + "map": [Function], + "member": [Function], + "remove": [Function], + "remove_all": [Function], + "reverse": [Function], + "stream_append": [Function], + "stream_filter": [Function], + "stream_for_each": [Function], + "stream_length": [Function], + "stream_map": [Function], + "stream_member": [Function], + "stream_ref": [Function], + "stream_remove": [Function], + "stream_remove_all": [Function], + "stream_reverse": [Function], + "stream_tail": [Function], + "stream_to_list": [Function], + }, + "heap": Heap { + "storage": Set { + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + }, + }, + "id": "0", + "name": "prelude", + "tail": Object { + "head": Object { + "Infinity": Infinity, + "NaN": NaN, + "apply_in_underlying_javascript": [Function], + "arity": [Function], + "array_length": [Function], + "call_cc": [Function], + "char_at": [Function], + "display": [Function], + "display_list": [Function], + "draw_data": [Function], + "error": [Function], + "get_time": [Function], + "head": [Function], + "is_array": [Function], + "is_boolean": [Function], + "is_function": [Function], + "is_list": [Function], + "is_null": [Function], + "is_number": [Function], + "is_pair": [Function], + "is_string": [Function], + "is_undefined": [Function], + "list": [Function], + "math_E": 2.718281828459045, + "math_LN10": 2.302585092994046, + "math_LN2": 0.6931471805599453, + "math_LOG10E": 0.4342944819032518, + "math_LOG2E": 1.4426950408889634, + "math_PI": 3.141592653589793, + "math_SQRT1_2": 0.7071067811865476, + "math_SQRT2": 1.4142135623730951, + "math_abs": [Function], + "math_acos": [Function], + "math_acosh": [Function], + "math_asin": [Function], + "math_asinh": [Function], + "math_atan": [Function], + "math_atan2": [Function], + "math_atanh": [Function], + "math_cbrt": [Function], + "math_ceil": [Function], + "math_clz32": [Function], + "math_cos": [Function], + "math_cosh": [Function], + "math_exp": [Function], + "math_expm1": [Function], + "math_floor": [Function], + "math_fround": [Function], + "math_hypot": [Function], + "math_imul": [Function], + "math_log": [Function], + "math_log10": [Function], + "math_log1p": [Function], + "math_log2": [Function], + "math_max": [Function], + "math_min": [Function], + "math_pow": [Function], + "math_random": [Function], + "math_round": [Function], + "math_sign": [Function], + "math_sin": [Function], + "math_sinh": [Function], + "math_sqrt": [Function], + "math_tan": [Function], + "math_tanh": [Function], + "math_trunc": [Function], + "pair": [Function], + "parse": [Function], + "parse_int": [Function], + "prompt": [Function], + "raw_display": [Function], + "set_head": [Function], + "set_tail": [Function], + "stream": [Function], + "stringify": [Function], + "tail": [Function], + "tokenize": [Function], + "undefined": undefined, + }, + "heap": Heap { + "storage": null, + }, + "id": "-1", + "name": "global", + "tail": null, + }, + }, + }, + }, + "instrType": "Environment", + "srcNode": Node { + "arguments": Array [ + Node { + "end": 69, + "left": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "name": "n", + "start": 66, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 69, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "raw": "1", + "start": 68, + "type": "Literal", + "value": 1, + }, + "start": 66, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "name": "f", + "start": 64, + "type": "Identifier", + }, + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "start": 64, + "type": "CallExpression", + }, + }, + Object { + "instrType": "BinaryOperation", + "srcNode": Node { + "end": 70, + "left": Node { + "end": 61, + "loc": SourceLocation { + "end": Position { + "column": 7, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "name": "n", + "start": 60, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "operator": "*", + "right": Node { + "arguments": Array [ + Node { + "end": 69, + "left": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "name": "n", + "start": 66, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 69, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "raw": "1", + "start": 68, + "type": "Literal", + "value": 1, + }, + "start": 66, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "name": "f", + "start": 64, + "type": "Identifier", + }, + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "start": 64, + "type": "CallExpression", + }, + "start": 60, + "type": "BinaryExpression", + }, + "symbol": "*", + }, + Object { + "env": Object { + "callExpression": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + ], + "callee": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "name": "f", + "start": 64, + "type": "Identifier", + }, + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "start": 64, + "type": "CallExpression", + }, + "head": Object { + "n": 2, + }, + "heap": Heap { + "storage": null, + }, + "id": "50", + "name": "f", + "tail": Object { + "head": Object { + "a": 1, + "f": [Function], + }, + "heap": Heap { + "storage": Set { + [Function], + }, + }, + "id": "47", + "name": "programEnvironment", + "tail": Object { + "head": Object { + "$accumulate": [Function], + "$append": [Function], + "$build_list": [Function], + "$enum_list": [Function], + "$filter": [Function], + "$length": [Function], + "$list_to_string": [Function], + "$map": [Function], + "$remove": [Function], + "$remove_all": [Function], + "$reverse": [Function], + "__access_export__": [Function], + "__access_named_export__": [Function], + "accumulate": [Function], + "append": [Function], + "build_list": [Function], + "build_stream": [Function], + "enum_list": [Function], + "enum_stream": [Function], + "equal": [Function], + "eval_stream": [Function], + "filter": [Function], + "for_each": [Function], + "integers_from": [Function], + "is_stream": [Function], + "length": [Function], + "list_ref": [Function], + "list_to_stream": [Function], + "list_to_string": [Function], + "map": [Function], + "member": [Function], + "remove": [Function], + "remove_all": [Function], + "reverse": [Function], + "stream_append": [Function], + "stream_filter": [Function], + "stream_for_each": [Function], + "stream_length": [Function], + "stream_map": [Function], + "stream_member": [Function], + "stream_ref": [Function], + "stream_remove": [Function], + "stream_remove_all": [Function], + "stream_reverse": [Function], + "stream_tail": [Function], + "stream_to_list": [Function], + }, + "heap": Heap { + "storage": Set { + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + }, + }, + "id": "0", + "name": "prelude", + "tail": Object { + "head": Object { + "Infinity": Infinity, + "NaN": NaN, + "apply_in_underlying_javascript": [Function], + "arity": [Function], + "array_length": [Function], + "call_cc": [Function], + "char_at": [Function], + "display": [Function], + "display_list": [Function], + "draw_data": [Function], + "error": [Function], + "get_time": [Function], + "head": [Function], + "is_array": [Function], + "is_boolean": [Function], + "is_function": [Function], + "is_list": [Function], + "is_null": [Function], + "is_number": [Function], + "is_pair": [Function], + "is_string": [Function], + "is_undefined": [Function], + "list": [Function], + "math_E": 2.718281828459045, + "math_LN10": 2.302585092994046, + "math_LN2": 0.6931471805599453, + "math_LOG10E": 0.4342944819032518, + "math_LOG2E": 1.4426950408889634, + "math_PI": 3.141592653589793, + "math_SQRT1_2": 0.7071067811865476, + "math_SQRT2": 1.4142135623730951, + "math_abs": [Function], + "math_acos": [Function], + "math_acosh": [Function], + "math_asin": [Function], + "math_asinh": [Function], + "math_atan": [Function], + "math_atan2": [Function], + "math_atanh": [Function], + "math_cbrt": [Function], + "math_ceil": [Function], + "math_clz32": [Function], + "math_cos": [Function], + "math_cosh": [Function], + "math_exp": [Function], + "math_expm1": [Function], + "math_floor": [Function], + "math_fround": [Function], + "math_hypot": [Function], + "math_imul": [Function], + "math_log": [Function], + "math_log10": [Function], + "math_log1p": [Function], + "math_log2": [Function], + "math_max": [Function], + "math_min": [Function], + "math_pow": [Function], + "math_random": [Function], + "math_round": [Function], + "math_sign": [Function], + "math_sin": [Function], + "math_sinh": [Function], + "math_sqrt": [Function], + "math_tan": [Function], + "math_tanh": [Function], + "math_trunc": [Function], + "pair": [Function], + "parse": [Function], + "parse_int": [Function], + "prompt": [Function], + "raw_display": [Function], + "set_head": [Function], + "set_tail": [Function], + "stream": [Function], + "stringify": [Function], + "tail": [Function], + "tokenize": [Function], + "undefined": undefined, + }, + "heap": Heap { + "storage": null, + }, + "id": "-1", + "name": "global", + "tail": null, + }, + }, + }, + }, + "instrType": "Environment", + "srcNode": Node { + "arguments": Array [ + Node { + "end": 69, + "left": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "name": "n", + "start": 66, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 69, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "raw": "1", + "start": 68, + "type": "Literal", + "value": 1, + }, + "start": 66, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "name": "f", + "start": 64, + "type": "Identifier", + }, + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "start": 64, + "type": "CallExpression", + }, + }, + Object { + "instrType": "BinaryOperation", + "srcNode": Node { + "end": 70, + "left": Node { + "end": 61, + "loc": SourceLocation { + "end": Position { + "column": 7, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "name": "n", + "start": 60, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "operator": "*", + "right": Node { + "arguments": Array [ + Node { + "end": 69, + "left": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "name": "n", + "start": 66, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 69, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "raw": "1", + "start": 68, + "type": "Literal", + "value": 1, + }, + "start": 66, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "name": "f", + "start": 64, + "type": "Identifier", + }, + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "start": 64, + "type": "CallExpression", + }, + "start": 60, + "type": "BinaryExpression", + }, + "symbol": "*", + }, + Object { + "env": Object { + "callExpression": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + ], + "callee": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "name": "f", + "start": 64, + "type": "Identifier", + }, + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "start": 64, + "type": "CallExpression", + }, + "head": Object { + "n": 1, + }, + "heap": Heap { + "storage": null, + }, + "id": "51", + "name": "f", + "tail": Object { + "head": Object { + "a": 1, + "f": [Function], + }, + "heap": Heap { + "storage": Set { + [Function], + }, + }, + "id": "47", + "name": "programEnvironment", + "tail": Object { + "head": Object { + "$accumulate": [Function], + "$append": [Function], + "$build_list": [Function], + "$enum_list": [Function], + "$filter": [Function], + "$length": [Function], + "$list_to_string": [Function], + "$map": [Function], + "$remove": [Function], + "$remove_all": [Function], + "$reverse": [Function], + "__access_export__": [Function], + "__access_named_export__": [Function], + "accumulate": [Function], + "append": [Function], + "build_list": [Function], + "build_stream": [Function], + "enum_list": [Function], + "enum_stream": [Function], + "equal": [Function], + "eval_stream": [Function], + "filter": [Function], + "for_each": [Function], + "integers_from": [Function], + "is_stream": [Function], + "length": [Function], + "list_ref": [Function], + "list_to_stream": [Function], + "list_to_string": [Function], + "map": [Function], + "member": [Function], + "remove": [Function], + "remove_all": [Function], + "reverse": [Function], + "stream_append": [Function], + "stream_filter": [Function], + "stream_for_each": [Function], + "stream_length": [Function], + "stream_map": [Function], + "stream_member": [Function], + "stream_ref": [Function], + "stream_remove": [Function], + "stream_remove_all": [Function], + "stream_reverse": [Function], + "stream_tail": [Function], + "stream_to_list": [Function], + }, + "heap": Heap { + "storage": Set { + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + [Function], + }, + }, + "id": "0", + "name": "prelude", + "tail": Object { + "head": Object { + "Infinity": Infinity, + "NaN": NaN, + "apply_in_underlying_javascript": [Function], + "arity": [Function], + "array_length": [Function], + "call_cc": [Function], + "char_at": [Function], + "display": [Function], + "display_list": [Function], + "draw_data": [Function], + "error": [Function], + "get_time": [Function], + "head": [Function], + "is_array": [Function], + "is_boolean": [Function], + "is_function": [Function], + "is_list": [Function], + "is_null": [Function], + "is_number": [Function], + "is_pair": [Function], + "is_string": [Function], + "is_undefined": [Function], + "list": [Function], + "math_E": 2.718281828459045, + "math_LN10": 2.302585092994046, + "math_LN2": 0.6931471805599453, + "math_LOG10E": 0.4342944819032518, + "math_LOG2E": 1.4426950408889634, + "math_PI": 3.141592653589793, + "math_SQRT1_2": 0.7071067811865476, + "math_SQRT2": 1.4142135623730951, + "math_abs": [Function], + "math_acos": [Function], + "math_acosh": [Function], + "math_asin": [Function], + "math_asinh": [Function], + "math_atan": [Function], + "math_atan2": [Function], + "math_atanh": [Function], + "math_cbrt": [Function], + "math_ceil": [Function], + "math_clz32": [Function], + "math_cos": [Function], + "math_cosh": [Function], + "math_exp": [Function], + "math_expm1": [Function], + "math_floor": [Function], + "math_fround": [Function], + "math_hypot": [Function], + "math_imul": [Function], + "math_log": [Function], + "math_log10": [Function], + "math_log1p": [Function], + "math_log2": [Function], + "math_max": [Function], + "math_min": [Function], + "math_pow": [Function], + "math_random": [Function], + "math_round": [Function], + "math_sign": [Function], + "math_sin": [Function], + "math_sinh": [Function], + "math_sqrt": [Function], + "math_tan": [Function], + "math_tanh": [Function], + "math_trunc": [Function], + "pair": [Function], + "parse": [Function], + "parse_int": [Function], + "prompt": [Function], + "raw_display": [Function], + "set_head": [Function], + "set_tail": [Function], + "stream": [Function], + "stringify": [Function], + "tail": [Function], + "tokenize": [Function], + "undefined": undefined, + }, + "heap": Heap { + "storage": null, + }, + "id": "-1", + "name": "global", + "tail": null, + }, + }, + }, + }, + "instrType": "Environment", + "srcNode": Node { + "arguments": Array [ + Node { + "end": 69, + "left": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "name": "n", + "start": 66, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 69, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "raw": "1", + "start": 68, + "type": "Literal", + "value": 1, + }, + "start": 66, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "name": "f", + "start": 64, + "type": "Identifier", + }, + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "start": 64, + "type": "CallExpression", + }, + }, + Node { + "end": 53, + "loc": SourceLocation { + "end": Position { + "column": 7, + "line": 4, + }, + "start": Position { + "column": 6, + "line": 4, + }, + }, + "raw": "1", + "start": 52, + "type": "Literal", + "value": 1, + }, + ], +} +`; + +exports[`Avoid unnescessary environment instruction 4 1`] = ` +Control { + "storage": Array [ + Object { + "body": Array [ + Node { + "end": 43, + "expression": Node { + "end": 42, + "left": Node { + "end": 38, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 7, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "raw": "1", + "start": 37, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 7, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "operator": "+", + "right": Node { + "end": 42, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "raw": "2", + "start": 41, + "type": "Literal", + "value": 2, + }, + "start": 37, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 7, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "start": 37, + "type": "ExpressionStatement", + }, + Node { + "end": 50, + "expression": Node { + "end": 49, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 8, + }, + "start": Position { + "column": 4, + "line": 8, + }, + }, + "raw": "3", + "start": 48, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 6, + "line": 8, + }, + "start": Position { + "column": 4, + "line": 8, + }, + }, + "start": 48, + "type": "ExpressionStatement", + }, + ], + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 9, + }, + "start": Position { + "column": 0, + "line": 6, + }, + }, + "type": "StatementSequence", + }, + Object { + "body": Array [ + Node { + "declarations": Array [ + Node { + "end": 13, + "id": Node { + "end": 9, + "loc": SourceLocation { + "end": Position { + "column": 7, + "line": 2, + }, + "start": Position { + "column": 6, + "line": 2, + }, + }, + "name": "a", + "start": 8, + "type": "Identifier", + }, + "init": Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 2, + }, + "start": Position { + "column": 10, + "line": 2, + }, + }, + "raw": "1", + "start": 12, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 2, + }, + "start": Position { + "column": 6, + "line": 2, + }, + }, + "start": 8, + "type": "VariableDeclarator", + }, + ], + "end": 14, + "kind": "let", + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "start": 4, + "typability": "NotYetTyped", + "type": "VariableDeclaration", + }, + Node { + "declarations": Array [ + Node { + "end": 26, + "id": Node { + "end": 22, + "loc": SourceLocation { + "end": Position { + "column": 7, + "line": 3, + }, + "start": Position { + "column": 6, + "line": 3, + }, + }, + "name": "b", + "start": 21, + "type": "Identifier", + }, + "init": Node { + "end": 26, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 3, + }, + "start": Position { + "column": 10, + "line": 3, + }, + }, + "raw": "2", + "start": 25, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 3, + }, + "start": Position { + "column": 6, + "line": 3, + }, + }, + "start": 21, + "type": "VariableDeclarator", + }, + ], + "end": 27, + "kind": "let", + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 2, + "line": 3, + }, + }, + "start": 17, + "typability": "NotYetTyped", + "type": "VariableDeclaration", + }, + ], + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 4, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "type": "StatementSequence", + }, + ], +} +`; + exports[`Breakpoint steps match 1`] = ` Array [ 7, diff --git a/src/cse-machine/__tests__/cse-machine-runtime-context.ts b/src/cse-machine/__tests__/cse-machine-runtime-context.ts index 0fe044110..9286e6077 100644 --- a/src/cse-machine/__tests__/cse-machine-runtime-context.ts +++ b/src/cse-machine/__tests__/cse-machine-runtime-context.ts @@ -6,9 +6,9 @@ import { stripIndent } from '../../utils/formatters' const getContextFrom = async (code: string, steps?: number) => { const context = mockContext(Chapter.SOURCE_4) - const options: RecursivePartial = { executionMethod: 'cse-machine' }; + const options: RecursivePartial = { executionMethod: 'cse-machine' } if (steps !== undefined) { - options.steps = steps; + options.envSteps = steps } await runCodeInSource(code, context, options) return context @@ -73,8 +73,9 @@ for (const context of contexts) { }) } test('Avoid unnescessary environment instruction 1', async () => { - const context = getContextFrom(stripIndent( - ` + const context = getContextFrom( + stripIndent( + ` function f(n) { return n === 0 ? 1 @@ -82,13 +83,16 @@ test('Avoid unnescessary environment instruction 1', async () => { } f(3); ` - ), 61) + ), + 61 + ) expect((await context).runtime.control).toMatchSnapshot() }) test('Avoid unnescessary environment instruction 2', async () => { - const context = getContextFrom(stripIndent( - ` + const context = getContextFrom( + stripIndent( + ` function f(n) { return n === 0 ? 1 @@ -96,13 +100,16 @@ test('Avoid unnescessary environment instruction 2', async () => { } f(3); ` - ), 63) + ), + 63 + ) expect((await context).runtime.control).toMatchSnapshot() }) test('Avoid unnescessary environment instruction 3', async () => { - const context = getContextFrom(stripIndent( - ` + const context = getContextFrom( + stripIndent( + ` let a = 1; function f(n) { return n === 0 @@ -112,13 +119,16 @@ test('Avoid unnescessary environment instruction 3', async () => { f(3); a = 2; ` - ), 66) + ), + 66 + ) expect((await context).runtime.control).toMatchSnapshot() }) test('Avoid unnescessary environment instruction 4', async () => { - const context = getContextFrom(stripIndent( - ` + const context = getContextFrom( + stripIndent( + ` { let a = 1; let b = 2; @@ -129,6 +139,8 @@ test('Avoid unnescessary environment instruction 4', async () => { 3; } ` - ), 3) + ), + 3 + ) expect((await context).runtime.control).toMatchSnapshot() -}) \ No newline at end of file +}) From 4d2688090eb063e3852f3316029800fd1bd8fb46 Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Mon, 22 Apr 2024 22:18:57 +0800 Subject: [PATCH 03/19] Implement helper functions --- src/cse-machine/utils.ts | 60 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/src/cse-machine/utils.ts b/src/cse-machine/utils.ts index e8641d00c..94679e424 100644 --- a/src/cse-machine/utils.ts +++ b/src/cse-machine/utils.ts @@ -663,3 +663,63 @@ export const hasContinueStatement = (block: es.BlockStatement | StatementSequenc } return hasContinue } + +/** + * Checks whether the evaluation of the given command depends on the current environment. + * @param command The command to be checked + * @return `true` if the command is environment depedent, else `false`. + * NOTE: this check is meant to detect and avoid pushing environment instruction onto the + * control in SIMPLE CASES, so it might not be exhaustive + */ +export const isEnvDependent = (command: ControlItem): boolean => { + if (isInstr(command)) { + const type = command.instrType + return !( + type === InstrType.UNARY_OP || + type === InstrType.BINARY_OP || + type === InstrType.POP || + type === InstrType.ARRAY_ACCESS || + type === InstrType.ARRAY_ASSIGNMENT || + type === InstrType.RESET || + type === InstrType.CONTINUE_MARKER || + type === InstrType.BREAK_MARKER + ) + } else { + const type = command.type + switch (type) { + case 'StatementSequence': + let isDependent = false + command.body.forEach(function (statement: es.Statement) { + isDependent = isEnvDependent(statement) || isDependent + }) + return isDependent + case 'Literal': + return false + case 'BinaryExpression': + return isEnvDependent(command.left) || isEnvDependent(command.right) + case 'LogicalExpression': + return isEnvDependent(command.left) || isEnvDependent(command.right) + case 'UnaryExpression': + return isEnvDependent(command.argument) + case 'ExpressionStatement': + return isEnvDependent(command.expression) + default: + return true + } + } +} + +/** + * Checks whether an environment instruction needs to be pushed onto the control. + * @param control The current control to be checked + * @return `true` if the environment instruction can be avoided, else `false`. + * NOTE: this check is meant to detect and avoid pushing environment instruction onto the + * control in SIMPLE CASES, so it might not be exhaustive + */ +export const canAvoidEnvInstr = (control: Control): boolean => { + let canAvoid = true + control.getStack().forEach(function (command: ControlItem) { + canAvoid = canAvoid && !isEnvDependent(command) + }) + return canAvoid +} From 067bc95e499ef2f1fe26d79739e9936726294a3f Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Mon, 22 Apr 2024 22:46:14 +0800 Subject: [PATCH 04/19] Fix format --- src/cse-machine/interpreter.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/cse-machine/interpreter.ts b/src/cse-machine/interpreter.ts index f6ef54520..57ab05b21 100644 --- a/src/cse-machine/interpreter.ts +++ b/src/cse-machine/interpreter.ts @@ -442,9 +442,11 @@ const cmdEvaluators: { [type: string]: CmdEvaluator } = { // Push ENVIRONMENT instruction if needed - if next control stack item // exists and is not an environment instruction, OR the control only contains // environment indepedent item - if (next - && !(isInstr(next) && next.instrType === InstrType.ENVIRONMENT) - && !canAvoidEnvInstr(control)) { + if ( + next && + !(isInstr(next) && next.instrType === InstrType.ENVIRONMENT) && + !canAvoidEnvInstr(control) + ) { control.push(instr.envInstr(currentEnvironment(context), command)) } @@ -955,10 +957,12 @@ const cmdEvaluators: { [type: string]: CmdEvaluator } = { // Push ENVIRONMENT instruction if needed - if next control stack item // exists and is not an environment instruction, OR the control only contains - // environment indepedent item - if (next - && !(isInstr(next) && next.instrType === InstrType.ENVIRONMENT) - && !canAvoidEnvInstr(control)) { + // environment indepedent item + if ( + next && + !(isInstr(next) && next.instrType === InstrType.ENVIRONMENT) && + !canAvoidEnvInstr(control) + ) { control.push(instr.envInstr(currentEnvironment(context), command.srcNode)) } From 95c5e7d41cf5451593c73c230db1cfa4fce51a20 Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Sat, 27 Apr 2024 22:28:59 +0800 Subject: [PATCH 05/19] Cache isEnvDependent results --- .../__snapshots__/cse-machine-heap.ts.snap | 6 +++ .../cse-machine-runtime-context.ts.snap | 22 ++++++++++ src/cse-machine/types.ts | 8 +++- src/cse-machine/utils.ts | 40 +++++++++++-------- 4 files changed, 58 insertions(+), 18 deletions(-) diff --git a/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap b/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap index d571e7912..047ba2112 100644 --- a/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap +++ b/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap @@ -177,6 +177,7 @@ EnvTree { "type": "Identifier", }, "end": 101, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 12, @@ -798,6 +799,7 @@ EnvTree { "type": "Identifier", }, "end": 101, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 12, @@ -1443,6 +1445,7 @@ EnvTree { "type": "Identifier", }, "end": 101, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 12, @@ -2109,6 +2112,7 @@ EnvTree { "type": "Identifier", }, "end": 101, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 12, @@ -2500,6 +2504,7 @@ EnvTree { "type": "Identifier", }, "end": 101, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 12, @@ -2678,6 +2683,7 @@ EnvTree { "type": "Identifier", }, "end": 101, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 12, diff --git a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap index c66e99a3a..f688b50b6 100644 --- a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap +++ b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap @@ -5,6 +5,7 @@ Control { "storage": Array [ Object { "instrType": "BinaryOperation", + "isEnvDependent": false, "srcNode": Node { "end": 53, "left": Node { @@ -102,6 +103,7 @@ Control { "operator": "*", "right": Node { "end": 53, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 14, @@ -124,6 +126,7 @@ Control { }, Node { "end": 53, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 14, @@ -141,6 +144,7 @@ Control { }, Object { "instrType": "BinaryOperation", + "isEnvDependent": false, "srcNode": Node { "end": 53, "left": Node { @@ -238,6 +242,7 @@ Control { "operator": "*", "right": Node { "end": 53, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 14, @@ -260,6 +265,7 @@ Control { }, Node { "end": 53, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 14, @@ -277,6 +283,7 @@ Control { }, Object { "instrType": "BinaryOperation", + "isEnvDependent": false, "srcNode": Node { "end": 53, "left": Node { @@ -374,6 +381,7 @@ Control { "operator": "*", "right": Node { "end": 53, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 14, @@ -403,6 +411,7 @@ Control { "storage": Array [ Object { "instrType": "BinaryOperation", + "isEnvDependent": false, "srcNode": Node { "end": 53, "left": Node { @@ -521,6 +530,7 @@ Control { }, Object { "instrType": "BinaryOperation", + "isEnvDependent": false, "srcNode": Node { "end": 53, "left": Node { @@ -639,6 +649,7 @@ Control { }, Object { "instrType": "BinaryOperation", + "isEnvDependent": false, "srcNode": Node { "end": 53, "left": Node { @@ -766,6 +777,7 @@ Control { "end": 86, "expression": Node { "end": 85, + "isEnvDependent": true, "left": Node { "end": 81, "loc": SourceLocation { @@ -813,6 +825,7 @@ Control { "start": 80, "type": "AssignmentExpression", }, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 6, @@ -832,6 +845,7 @@ Control { "end": 86, "expression": Node { "end": 85, + "isEnvDependent": true, "left": Node { "end": 81, "loc": SourceLocation { @@ -879,6 +893,7 @@ Control { "start": 80, "type": "AssignmentExpression", }, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 6, @@ -2541,8 +2556,10 @@ Control { "end": 43, "expression": Node { "end": 42, + "isEnvDependent": false, "left": Node { "end": 38, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 5, @@ -2571,6 +2588,7 @@ Control { "operator": "+", "right": Node { "end": 42, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 9, @@ -2589,6 +2607,7 @@ Control { "start": 37, "type": "BinaryExpression", }, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 10, @@ -2606,6 +2625,7 @@ Control { "end": 50, "expression": Node { "end": 49, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 5, @@ -2621,6 +2641,7 @@ Control { "type": "Literal", "value": 3, }, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 6, @@ -2635,6 +2656,7 @@ Control { "type": "ExpressionStatement", }, ], + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 1, diff --git a/src/cse-machine/types.ts b/src/cse-machine/types.ts index e613cdd26..091bd5e80 100644 --- a/src/cse-machine/types.ts +++ b/src/cse-machine/types.ts @@ -93,7 +93,13 @@ export type Instr = | GenContInstr | ResumeContInstr -export type ControlItem = Node | Instr +export type ControlItem = (Node | Instr) & { + isEnvDependent?: boolean +} +// { +// body: Node | Instr +// isEnvDependent: boolean +// } // Every array also has the properties `id` and `environment` for use in the frontend CSE Machine export type EnvArray = any[] & { diff --git a/src/cse-machine/utils.ts b/src/cse-machine/utils.ts index 94679e424..a24610907 100644 --- a/src/cse-machine/utils.ts +++ b/src/cse-machine/utils.ts @@ -672,9 +672,16 @@ export const hasContinueStatement = (block: es.BlockStatement | StatementSequenc * control in SIMPLE CASES, so it might not be exhaustive */ export const isEnvDependent = (command: ControlItem): boolean => { + // If the result is already calculated, return it + if (command.isEnvDependent != undefined) { + return command.isEnvDependent + } + + // Otherwise, calculate and store the result + let isDependent = true if (isInstr(command)) { const type = command.instrType - return !( + isDependent = !( type === InstrType.UNARY_OP || type === InstrType.BINARY_OP || type === InstrType.POP || @@ -688,25 +695,28 @@ export const isEnvDependent = (command: ControlItem): boolean => { const type = command.type switch (type) { case 'StatementSequence': - let isDependent = false - command.body.forEach(function (statement: es.Statement) { - isDependent = isEnvDependent(statement) || isDependent - }) - return isDependent + isDependent = command.body.some((statement: es.Statement) => isEnvDependent(statement)) case 'Literal': - return false + isDependent = false + break case 'BinaryExpression': - return isEnvDependent(command.left) || isEnvDependent(command.right) + isDependent = isEnvDependent(command.left) || isEnvDependent(command.right) + break case 'LogicalExpression': - return isEnvDependent(command.left) || isEnvDependent(command.right) + isDependent = isEnvDependent(command.left) || isEnvDependent(command.right) + break case 'UnaryExpression': - return isEnvDependent(command.argument) + isDependent = isEnvDependent(command.argument) + break case 'ExpressionStatement': - return isEnvDependent(command.expression) + isDependent = isEnvDependent(command.expression) + break default: - return true + break } } + command.isEnvDependent = isDependent + return isDependent } /** @@ -717,9 +727,5 @@ export const isEnvDependent = (command: ControlItem): boolean => { * control in SIMPLE CASES, so it might not be exhaustive */ export const canAvoidEnvInstr = (control: Control): boolean => { - let canAvoid = true - control.getStack().forEach(function (command: ControlItem) { - canAvoid = canAvoid && !isEnvDependent(command) - }) - return canAvoid + return !control.getStack().some((command: ControlItem) => isEnvDependent(command)) } From 432b1a8ab8e7c527aedfe25564b89c68582209af Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Sat, 27 Apr 2024 22:34:42 +0800 Subject: [PATCH 06/19] Delete unnecessary comments --- src/cse-machine/types.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/cse-machine/types.ts b/src/cse-machine/types.ts index 091bd5e80..2726ef6e7 100644 --- a/src/cse-machine/types.ts +++ b/src/cse-machine/types.ts @@ -96,10 +96,6 @@ export type Instr = export type ControlItem = (Node | Instr) & { isEnvDependent?: boolean } -// { -// body: Node | Instr -// isEnvDependent: boolean -// } // Every array also has the properties `id` and `environment` for use in the frontend CSE Machine export type EnvArray = any[] & { From 5e2f015eb6d8f1aca4a26def47ebf4395b85d771 Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Sun, 28 Apr 2024 00:46:25 +0800 Subject: [PATCH 07/19] Speed up env dependent checking, approach 2 --- .../__snapshots__/cse-machine-heap.ts.snap | 28 ++++++ .../cse-machine-runtime-context.ts.snap | 99 +++++++++++++++++++ .../cse-machine-unique-id.ts.snap | 14 +++ src/cse-machine/interpreter.ts | 29 +++++- 4 files changed, 165 insertions(+), 5 deletions(-) diff --git a/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap b/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap index 047ba2112..6b2085f71 100644 --- a/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap +++ b/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap @@ -162,6 +162,7 @@ EnvTree { ], "callee": Node { "end": 90, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -784,6 +785,7 @@ EnvTree { ], "callee": Node { "end": 90, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -1430,6 +1432,7 @@ EnvTree { ], "callee": Node { "end": 90, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -2097,6 +2100,7 @@ EnvTree { ], "callee": Node { "end": 90, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -2489,6 +2493,7 @@ EnvTree { ], "callee": Node { "end": 90, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -2668,6 +2673,7 @@ EnvTree { ], "callee": Node { "end": 90, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -5606,6 +5612,7 @@ EnvTree { ], "callee": Node { "end": 24, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -5621,6 +5628,7 @@ EnvTree { "type": "Identifier", }, "end": 33, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 10, @@ -6064,6 +6072,7 @@ EnvTree { ], "callee": Node { "end": 24, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -6079,6 +6088,7 @@ EnvTree { "type": "Identifier", }, "end": 33, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 10, @@ -6531,6 +6541,7 @@ EnvTree { ], "callee": Node { "end": 24, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -6546,6 +6557,7 @@ EnvTree { "type": "Identifier", }, "end": 33, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 10, @@ -6897,6 +6909,7 @@ EnvTree { ], "callee": Node { "end": 24, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -6912,6 +6925,7 @@ EnvTree { "type": "Identifier", }, "end": 33, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 10, @@ -7066,6 +7080,7 @@ EnvTree { ], "callee": Node { "end": 24, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -7081,6 +7096,7 @@ EnvTree { "type": "Identifier", }, "end": 33, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 10, @@ -7437,6 +7453,7 @@ EnvTree { }, ], "callee": Object { + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 1, @@ -7450,6 +7467,7 @@ EnvTree { "type": "Literal", "value": [Function], }, + "isEnvDependent": true, "loc": undefined, "optional": false, "type": "CallExpression", @@ -8281,6 +8299,7 @@ EnvTree { }, ], "callee": Object { + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 1, @@ -8294,6 +8313,7 @@ EnvTree { "type": "Literal", "value": [Function], }, + "isEnvDependent": true, "loc": undefined, "optional": false, "type": "CallExpression", @@ -9224,6 +9244,7 @@ EnvTree { }, ], "callee": Object { + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 1, @@ -9237,6 +9258,7 @@ EnvTree { "type": "Literal", "value": [Function], }, + "isEnvDependent": true, "loc": undefined, "optional": false, "type": "CallExpression", @@ -10186,6 +10208,7 @@ EnvTree { }, ], "callee": Object { + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 1, @@ -10199,6 +10222,7 @@ EnvTree { "type": "Literal", "value": [Function], }, + "isEnvDependent": true, "loc": undefined, "optional": false, "type": "CallExpression", @@ -10938,6 +10962,7 @@ EnvTree { }, ], "callee": Object { + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 1, @@ -10951,6 +10976,7 @@ EnvTree { "type": "Literal", "value": [Function], }, + "isEnvDependent": true, "loc": undefined, "optional": false, "type": "CallExpression", @@ -11189,6 +11215,7 @@ EnvTree { }, ], "callee": Object { + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 1, @@ -11202,6 +11229,7 @@ EnvTree { "type": "Literal", "value": [Function], }, + "isEnvDependent": true, "loc": undefined, "optional": false, "type": "CallExpression", diff --git a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap index f688b50b6..f6c07808f 100644 --- a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap +++ b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap @@ -2,18 +2,22 @@ exports[`Avoid unnescessary environment instruction 1 1`] = ` Control { + "numEnvDependentItems": 0, "storage": Array [ Object { "instrType": "BinaryOperation", "isEnvDependent": false, "srcNode": Node { "end": 53, + "isEnvDependent": true, "left": Node { "arguments": Array [ Node { "end": 48, + "isEnvDependent": true, "left": Node { "end": 46, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 7, @@ -41,6 +45,7 @@ Control { "operator": "-", "right": Node { "end": 48, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 9, @@ -62,6 +67,7 @@ Control { ], "callee": Node { "end": 44, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 5, @@ -77,6 +83,7 @@ Control { "type": "Identifier", }, "end": 49, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 10, @@ -147,12 +154,15 @@ Control { "isEnvDependent": false, "srcNode": Node { "end": 53, + "isEnvDependent": true, "left": Node { "arguments": Array [ Node { "end": 48, + "isEnvDependent": true, "left": Node { "end": 46, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 7, @@ -180,6 +190,7 @@ Control { "operator": "-", "right": Node { "end": 48, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 9, @@ -201,6 +212,7 @@ Control { ], "callee": Node { "end": 44, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 5, @@ -216,6 +228,7 @@ Control { "type": "Identifier", }, "end": 49, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 10, @@ -286,12 +299,15 @@ Control { "isEnvDependent": false, "srcNode": Node { "end": 53, + "isEnvDependent": true, "left": Node { "arguments": Array [ Node { "end": 48, + "isEnvDependent": true, "left": Node { "end": 46, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 7, @@ -319,6 +335,7 @@ Control { "operator": "-", "right": Node { "end": 48, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 9, @@ -340,6 +357,7 @@ Control { ], "callee": Node { "end": 44, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 5, @@ -355,6 +373,7 @@ Control { "type": "Identifier", }, "end": 49, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 10, @@ -408,14 +427,17 @@ Control { exports[`Avoid unnescessary environment instruction 2 1`] = ` Control { + "numEnvDependentItems": 0, "storage": Array [ Object { "instrType": "BinaryOperation", "isEnvDependent": false, "srcNode": Node { "end": 53, + "isEnvDependent": true, "left": Node { "end": 44, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 5, @@ -445,8 +467,10 @@ Control { "arguments": Array [ Node { "end": 52, + "isEnvDependent": true, "left": Node { "end": 50, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 11, @@ -474,6 +498,7 @@ Control { "operator": "-", "right": Node { "end": 52, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 13, @@ -495,6 +520,7 @@ Control { ], "callee": Node { "end": 48, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 9, @@ -510,6 +536,7 @@ Control { "type": "Identifier", }, "end": 53, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 14, @@ -533,8 +560,10 @@ Control { "isEnvDependent": false, "srcNode": Node { "end": 53, + "isEnvDependent": true, "left": Node { "end": 44, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 5, @@ -564,8 +593,10 @@ Control { "arguments": Array [ Node { "end": 52, + "isEnvDependent": true, "left": Node { "end": 50, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 11, @@ -593,6 +624,7 @@ Control { "operator": "-", "right": Node { "end": 52, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 13, @@ -614,6 +646,7 @@ Control { ], "callee": Node { "end": 48, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 9, @@ -629,6 +662,7 @@ Control { "type": "Identifier", }, "end": 53, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 14, @@ -652,8 +686,10 @@ Control { "isEnvDependent": false, "srcNode": Node { "end": 53, + "isEnvDependent": true, "left": Node { "end": 44, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 5, @@ -683,8 +719,10 @@ Control { "arguments": Array [ Node { "end": 52, + "isEnvDependent": true, "left": Node { "end": 50, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 11, @@ -712,6 +750,7 @@ Control { "operator": "-", "right": Node { "end": 52, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 13, @@ -733,6 +772,7 @@ Control { ], "callee": Node { "end": 48, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 9, @@ -748,6 +788,7 @@ Control { "type": "Identifier", }, "end": 53, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 14, @@ -772,6 +813,7 @@ Control { exports[`Avoid unnescessary environment instruction 3 1`] = ` Control { + "numEnvDependentItems": 5, "storage": Array [ Node { "end": 86, @@ -841,6 +883,7 @@ Control { }, Object { "instrType": "Pop", + "isEnvDependent": false, "srcNode": Node { "end": 86, "expression": Node { @@ -1113,10 +1156,12 @@ Control { }, }, "instrType": "Environment", + "isEnvDependent": true, "srcNode": Node { "arguments": Array [ Node { "end": 77, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 3, @@ -1135,6 +1180,7 @@ Control { ], "callee": Node { "end": 75, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -1150,6 +1196,7 @@ Control { "type": "Identifier", }, "end": 78, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 4, @@ -1166,10 +1213,13 @@ Control { }, Object { "instrType": "BinaryOperation", + "isEnvDependent": false, "srcNode": Node { "end": 70, + "isEnvDependent": true, "left": Node { "end": 61, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 7, @@ -1199,8 +1249,10 @@ Control { "arguments": Array [ Node { "end": 69, + "isEnvDependent": true, "left": Node { "end": 67, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 13, @@ -1228,6 +1280,7 @@ Control { "operator": "-", "right": Node { "end": 69, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 15, @@ -1249,6 +1302,7 @@ Control { ], "callee": Node { "end": 65, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 11, @@ -1264,6 +1318,7 @@ Control { "type": "Identifier", }, "end": 70, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -1294,6 +1349,7 @@ Control { ], "callee": Node { "end": 75, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -1309,6 +1365,7 @@ Control { "type": "Identifier", }, "end": 78, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 4, @@ -1535,12 +1592,15 @@ Control { }, }, "instrType": "Environment", + "isEnvDependent": true, "srcNode": Node { "arguments": Array [ Node { "end": 69, + "isEnvDependent": true, "left": Node { "end": 67, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 13, @@ -1568,6 +1628,7 @@ Control { "operator": "-", "right": Node { "end": 69, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 15, @@ -1589,6 +1650,7 @@ Control { ], "callee": Node { "end": 65, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 11, @@ -1604,6 +1666,7 @@ Control { "type": "Identifier", }, "end": 70, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -1620,10 +1683,13 @@ Control { }, Object { "instrType": "BinaryOperation", + "isEnvDependent": false, "srcNode": Node { "end": 70, + "isEnvDependent": true, "left": Node { "end": 61, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 7, @@ -1653,8 +1719,10 @@ Control { "arguments": Array [ Node { "end": 69, + "isEnvDependent": true, "left": Node { "end": 67, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 13, @@ -1682,6 +1750,7 @@ Control { "operator": "-", "right": Node { "end": 69, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 15, @@ -1703,6 +1772,7 @@ Control { ], "callee": Node { "end": 65, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 11, @@ -1718,6 +1788,7 @@ Control { "type": "Identifier", }, "end": 70, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -1748,6 +1819,7 @@ Control { ], "callee": Node { "end": 65, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 11, @@ -1763,6 +1835,7 @@ Control { "type": "Identifier", }, "end": 70, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -1989,12 +2062,15 @@ Control { }, }, "instrType": "Environment", + "isEnvDependent": true, "srcNode": Node { "arguments": Array [ Node { "end": 69, + "isEnvDependent": true, "left": Node { "end": 67, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 13, @@ -2022,6 +2098,7 @@ Control { "operator": "-", "right": Node { "end": 69, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 15, @@ -2043,6 +2120,7 @@ Control { ], "callee": Node { "end": 65, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 11, @@ -2058,6 +2136,7 @@ Control { "type": "Identifier", }, "end": 70, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -2074,10 +2153,13 @@ Control { }, Object { "instrType": "BinaryOperation", + "isEnvDependent": false, "srcNode": Node { "end": 70, + "isEnvDependent": true, "left": Node { "end": 61, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 7, @@ -2107,8 +2189,10 @@ Control { "arguments": Array [ Node { "end": 69, + "isEnvDependent": true, "left": Node { "end": 67, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 13, @@ -2136,6 +2220,7 @@ Control { "operator": "-", "right": Node { "end": 69, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 15, @@ -2157,6 +2242,7 @@ Control { ], "callee": Node { "end": 65, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 11, @@ -2172,6 +2258,7 @@ Control { "type": "Identifier", }, "end": 70, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -2202,6 +2289,7 @@ Control { ], "callee": Node { "end": 65, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 11, @@ -2217,6 +2305,7 @@ Control { "type": "Identifier", }, "end": 70, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -2443,12 +2532,15 @@ Control { }, }, "instrType": "Environment", + "isEnvDependent": true, "srcNode": Node { "arguments": Array [ Node { "end": 69, + "isEnvDependent": true, "left": Node { "end": 67, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 13, @@ -2476,6 +2568,7 @@ Control { "operator": "-", "right": Node { "end": 69, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 15, @@ -2497,6 +2590,7 @@ Control { ], "callee": Node { "end": 65, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 11, @@ -2512,6 +2606,7 @@ Control { "type": "Identifier", }, "end": 70, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -2528,6 +2623,7 @@ Control { }, Node { "end": 53, + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 7, @@ -2549,6 +2645,7 @@ Control { exports[`Avoid unnescessary environment instruction 4 1`] = ` Control { + "numEnvDependentItems": 0, "storage": Array [ Object { "body": Array [ @@ -2723,6 +2820,7 @@ Control { }, ], "end": 14, + "isEnvDependent": true, "kind": "let", "loc": SourceLocation { "end": Position { @@ -2806,6 +2904,7 @@ Control { "type": "VariableDeclaration", }, ], + "isEnvDependent": false, "loc": SourceLocation { "end": Position { "column": 1, diff --git a/src/cse-machine/__tests__/__snapshots__/cse-machine-unique-id.ts.snap b/src/cse-machine/__tests__/__snapshots__/cse-machine-unique-id.ts.snap index 10fff7ec6..8ccb1ec40 100644 --- a/src/cse-machine/__tests__/__snapshots__/cse-machine-unique-id.ts.snap +++ b/src/cse-machine/__tests__/__snapshots__/cse-machine-unique-id.ts.snap @@ -30,6 +30,7 @@ EnvTree { ], "callee": Node { "end": 63, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -45,6 +46,7 @@ EnvTree { "type": "Identifier", }, "end": 78, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -1225,6 +1227,7 @@ EnvTree { ], "callee": Node { "end": 63, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -1240,6 +1243,7 @@ EnvTree { "type": "Identifier", }, "end": 78, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -2519,6 +2523,7 @@ EnvTree { ], "callee": Node { "end": 63, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -2534,6 +2539,7 @@ EnvTree { "type": "Identifier", }, "end": 78, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -3863,6 +3869,7 @@ EnvTree { ], "callee": Node { "end": 63, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -3878,6 +3885,7 @@ EnvTree { "type": "Identifier", }, "end": 78, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -4966,6 +4974,7 @@ EnvTree { ], "callee": Node { "end": 63, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -4981,6 +4990,7 @@ EnvTree { "type": "Identifier", }, "end": 78, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -5273,6 +5283,7 @@ EnvTree { ], "callee": Node { "end": 63, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -5288,6 +5299,7 @@ EnvTree { "type": "Identifier", }, "end": 78, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, @@ -6903,6 +6915,7 @@ EnvTree { ], "callee": Node { "end": 63, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -6918,6 +6931,7 @@ EnvTree { "type": "Identifier", }, "end": 78, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 16, diff --git a/src/cse-machine/interpreter.ts b/src/cse-machine/interpreter.ts index 57ab05b21..dbcdd6606 100644 --- a/src/cse-machine/interpreter.ts +++ b/src/cse-machine/interpreter.ts @@ -75,13 +75,13 @@ import { isInstr, isNode, isSimpleFunction, - canAvoidEnvInstr, isStreamFn, popEnvironment, pushEnvironment, reduceConditional, setVariable, - valueProducing + valueProducing, + isEnvDependent } from './utils' import Closure from './closure' @@ -98,15 +98,34 @@ type CmdEvaluator = ( * It contains syntax tree nodes or instructions. */ export class Control extends Stack { + private numEnvDependentItems: number public constructor(program?: es.Program | StatementSequence) { super() - + this.numEnvDependentItems = 0 // Load program into control stack program ? this.push(program) : null } + public canAvoidEnvInstr(): boolean { + return this.numEnvDependentItems == 0 + } + + public pop(): ControlItem | undefined { + const item = super.pop() + if (item != undefined && isEnvDependent(item)) { + this.numEnvDependentItems --; + } + return item + } + public push(...items: ControlItem[]): void { const itemsNew: ControlItem[] = Control.simplifyBlocksWithoutDeclarations(...items) + // testing + itemsNew.forEach((item: ControlItem) => { + if (isEnvDependent(item)) { + this.numEnvDependentItems++; + } + }) super.push(...itemsNew) } @@ -445,7 +464,7 @@ const cmdEvaluators: { [type: string]: CmdEvaluator } = { if ( next && !(isInstr(next) && next.instrType === InstrType.ENVIRONMENT) && - !canAvoidEnvInstr(control) + !control.canAvoidEnvInstr() ) { control.push(instr.envInstr(currentEnvironment(context), command)) } @@ -961,7 +980,7 @@ const cmdEvaluators: { [type: string]: CmdEvaluator } = { if ( next && !(isInstr(next) && next.instrType === InstrType.ENVIRONMENT) && - !canAvoidEnvInstr(control) + !control.canAvoidEnvInstr() ) { control.push(instr.envInstr(currentEnvironment(context), command.srcNode)) } From b88ad72d1c3a588d8909e2826dd2fd602e98f49e Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Sun, 28 Apr 2024 01:38:24 +0800 Subject: [PATCH 08/19] merge --- src/cse-machine/interpreter.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cse-machine/interpreter.ts b/src/cse-machine/interpreter.ts index dbcdd6606..397e96f35 100644 --- a/src/cse-machine/interpreter.ts +++ b/src/cse-machine/interpreter.ts @@ -113,7 +113,7 @@ export class Control extends Stack { public pop(): ControlItem | undefined { const item = super.pop() if (item != undefined && isEnvDependent(item)) { - this.numEnvDependentItems --; + this.numEnvDependentItems-- } return item } @@ -123,7 +123,7 @@ export class Control extends Stack { // testing itemsNew.forEach((item: ControlItem) => { if (isEnvDependent(item)) { - this.numEnvDependentItems++; + this.numEnvDependentItems++ } }) super.push(...itemsNew) From 1dccbcc7bc1a64ef57e90ea0ea541332118d398a Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Wed, 15 May 2024 00:22:19 +0800 Subject: [PATCH 09/19] Implement exhaustive environment depedent logic 1 --- .../__snapshots__/tailcall-return.ts.snap | 29 + src/alt-langs/scheme/scm-slang | 2 +- .../__snapshots__/cse-machine-heap.ts.snap | 12 +- .../cse-machine-runtime-context.ts.snap | 16 +- src/cse-machine/interpreter.ts | 7 +- src/cse-machine/types.ts | 5 +- src/cse-machine/utils.ts | 538 ++++++++++++++++-- src/types.ts | 3 +- 8 files changed, 543 insertions(+), 69 deletions(-) diff --git a/src/__tests__/__snapshots__/tailcall-return.ts.snap b/src/__tests__/__snapshots__/tailcall-return.ts.snap index 2ebb65935..3d6f8eeb7 100644 --- a/src/__tests__/__snapshots__/tailcall-return.ts.snap +++ b/src/__tests__/__snapshots__/tailcall-return.ts.snap @@ -106,6 +106,20 @@ f(5000, 5000);", } `; +exports[`Tail calls in arrow functions work: expectResult 2`] = ` +Object { + "alertResult": Array [], + "code": "const f = (x, y) => x <= 0 ? y : f(x-1, y+1); +f(5000, 5000);", + "displayResult": Array [], + "numErrors": 0, + "parsedErrors": "", + "result": 10000, + "resultStatus": "finished", + "visualiseListResult": Array [], +} +`; + exports[`Tail calls in mixed tail-call/non-tail-call recursion work: expectResult 1`] = ` Object { "alertResult": Array [], @@ -141,6 +155,21 @@ f(5000, 5000);", } `; +exports[`Tail calls in mutual recursion with arrow functions work: expectResult 2`] = ` +Object { + "alertResult": Array [], + "code": "const f = (x, y) => x <= 0 ? y : g(x-1, y+1); +const g = (x, y) => x <= 0 ? y : f(x-1, y+1); +f(5000, 5000);", + "displayResult": Array [], + "numErrors": 0, + "parsedErrors": "", + "result": 10000, + "resultStatus": "finished", + "visualiseListResult": Array [], +} +`; + exports[`Tail calls in mutual recursion work: expectResult 1`] = ` Object { "alertResult": Array [], diff --git a/src/alt-langs/scheme/scm-slang b/src/alt-langs/scheme/scm-slang index d01ff992e..7d5508176 160000 --- a/src/alt-langs/scheme/scm-slang +++ b/src/alt-langs/scheme/scm-slang @@ -1 +1 @@ -Subproject commit d01ff992e9eb5ee01a6cd9439b5ea1ae40a412b7 +Subproject commit 7d5508176694f63ae92debe43d58091cf92b7505 diff --git a/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap b/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap index 6b2085f71..0e821542d 100644 --- a/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap +++ b/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap @@ -7467,7 +7467,7 @@ EnvTree { "type": "Literal", "value": [Function], }, - "isEnvDependent": true, + "isEnvDependent": false, "loc": undefined, "optional": false, "type": "CallExpression", @@ -8313,7 +8313,7 @@ EnvTree { "type": "Literal", "value": [Function], }, - "isEnvDependent": true, + "isEnvDependent": false, "loc": undefined, "optional": false, "type": "CallExpression", @@ -9258,7 +9258,7 @@ EnvTree { "type": "Literal", "value": [Function], }, - "isEnvDependent": true, + "isEnvDependent": false, "loc": undefined, "optional": false, "type": "CallExpression", @@ -10222,7 +10222,7 @@ EnvTree { "type": "Literal", "value": [Function], }, - "isEnvDependent": true, + "isEnvDependent": false, "loc": undefined, "optional": false, "type": "CallExpression", @@ -10976,7 +10976,7 @@ EnvTree { "type": "Literal", "value": [Function], }, - "isEnvDependent": true, + "isEnvDependent": false, "loc": undefined, "optional": false, "type": "CallExpression", @@ -11229,7 +11229,7 @@ EnvTree { "type": "Literal", "value": [Function], }, - "isEnvDependent": true, + "isEnvDependent": false, "loc": undefined, "optional": false, "type": "CallExpression", diff --git a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap index f6c07808f..064fe137d 100644 --- a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap +++ b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap @@ -813,7 +813,7 @@ Control { exports[`Avoid unnescessary environment instruction 3 1`] = ` Control { - "numEnvDependentItems": 5, + "numEnvDependentItems": 1, "storage": Array [ Node { "end": 86, @@ -822,6 +822,7 @@ Control { "isEnvDependent": true, "left": Node { "end": 81, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -891,6 +892,7 @@ Control { "isEnvDependent": true, "left": Node { "end": 81, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -1156,7 +1158,7 @@ Control { }, }, "instrType": "Environment", - "isEnvDependent": true, + "isEnvDependent": false, "srcNode": Node { "arguments": Array [ Node { @@ -1592,7 +1594,7 @@ Control { }, }, "instrType": "Environment", - "isEnvDependent": true, + "isEnvDependent": false, "srcNode": Node { "arguments": Array [ Node { @@ -2062,7 +2064,7 @@ Control { }, }, "instrType": "Environment", - "isEnvDependent": true, + "isEnvDependent": false, "srcNode": Node { "arguments": Array [ Node { @@ -2532,7 +2534,7 @@ Control { }, }, "instrType": "Environment", - "isEnvDependent": true, + "isEnvDependent": false, "srcNode": Node { "arguments": Array [ Node { @@ -2645,7 +2647,7 @@ Control { exports[`Avoid unnescessary environment instruction 4 1`] = ` Control { - "numEnvDependentItems": 0, + "numEnvDependentItems": 1, "storage": Array [ Object { "body": Array [ @@ -2904,7 +2906,7 @@ Control { "type": "VariableDeclaration", }, ], - "isEnvDependent": false, + "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, diff --git a/src/cse-machine/interpreter.ts b/src/cse-machine/interpreter.ts index 397e96f35..b555cf21b 100644 --- a/src/cse-machine/interpreter.ts +++ b/src/cse-machine/interpreter.ts @@ -72,6 +72,7 @@ import { hasImportDeclarations, isBlockStatement, isEnvArray, + isEnvDependent, isInstr, isNode, isSimpleFunction, @@ -81,7 +82,6 @@ import { reduceConditional, setVariable, valueProducing, - isEnvDependent } from './utils' import Closure from './closure' @@ -120,7 +120,6 @@ export class Control extends Stack { public push(...items: ControlItem[]): void { const itemsNew: ControlItem[] = Control.simplifyBlocksWithoutDeclarations(...items) - // testing itemsNew.forEach((item: ControlItem) => { if (isEnvDependent(item)) { this.numEnvDependentItems++ @@ -460,7 +459,7 @@ const cmdEvaluators: { [type: string]: CmdEvaluator } = { // Push ENVIRONMENT instruction if needed - if next control stack item // exists and is not an environment instruction, OR the control only contains - // environment indepedent item + // environment indepedent items if ( next && !(isInstr(next) && next.instrType === InstrType.ENVIRONMENT) && @@ -976,7 +975,7 @@ const cmdEvaluators: { [type: string]: CmdEvaluator } = { // Push ENVIRONMENT instruction if needed - if next control stack item // exists and is not an environment instruction, OR the control only contains - // environment indepedent item + // environment indepedent items if ( next && !(isInstr(next) && next.instrType === InstrType.ENVIRONMENT) && diff --git a/src/cse-machine/types.ts b/src/cse-machine/types.ts index 2726ef6e7..8575810fa 100644 --- a/src/cse-machine/types.ts +++ b/src/cse-machine/types.ts @@ -30,6 +30,7 @@ export enum InstrType { interface BaseInstr { instrType: InstrType srcNode: Node + isEnvDependent?: boolean } export interface WhileInstr extends BaseInstr { @@ -93,9 +94,7 @@ export type Instr = | GenContInstr | ResumeContInstr -export type ControlItem = (Node | Instr) & { - isEnvDependent?: boolean -} +export type ControlItem = (Node | Instr) // Every array also has the properties `id` and `environment` for use in the frontend CSE Machine export type EnvArray = any[] & { diff --git a/src/cse-machine/utils.ts b/src/cse-machine/utils.ts index a24610907..15d47c54f 100644 --- a/src/cse-machine/utils.ts +++ b/src/cse-machine/utils.ts @@ -10,7 +10,7 @@ import { isContinuation } from './continuations' import Heap from './heap' import * as instr from './instrCreator' import { Control } from './interpreter' -import { AppInstr, EnvArray, ControlItem, Instr, InstrType } from './types' +import { AppInstr, EnvArray, ControlItem, Instr, InstrType, BranchInstr, WhileInstr, ForInstr } from './types' import Closure from './closure' /** @@ -671,53 +671,53 @@ export const hasContinueStatement = (block: es.BlockStatement | StatementSequenc * NOTE: this check is meant to detect and avoid pushing environment instruction onto the * control in SIMPLE CASES, so it might not be exhaustive */ -export const isEnvDependent = (command: ControlItem): boolean => { - // If the result is already calculated, return it - if (command.isEnvDependent != undefined) { - return command.isEnvDependent - } +// export const isEnvDependent = (command: ControlItem): boolean => { +// // If the result is already calculated, return it +// if (command.isEnvDependent != undefined) { +// return command.isEnvDependent +// } - // Otherwise, calculate and store the result - let isDependent = true - if (isInstr(command)) { - const type = command.instrType - isDependent = !( - type === InstrType.UNARY_OP || - type === InstrType.BINARY_OP || - type === InstrType.POP || - type === InstrType.ARRAY_ACCESS || - type === InstrType.ARRAY_ASSIGNMENT || - type === InstrType.RESET || - type === InstrType.CONTINUE_MARKER || - type === InstrType.BREAK_MARKER - ) - } else { - const type = command.type - switch (type) { - case 'StatementSequence': - isDependent = command.body.some((statement: es.Statement) => isEnvDependent(statement)) - case 'Literal': - isDependent = false - break - case 'BinaryExpression': - isDependent = isEnvDependent(command.left) || isEnvDependent(command.right) - break - case 'LogicalExpression': - isDependent = isEnvDependent(command.left) || isEnvDependent(command.right) - break - case 'UnaryExpression': - isDependent = isEnvDependent(command.argument) - break - case 'ExpressionStatement': - isDependent = isEnvDependent(command.expression) - break - default: - break - } - } - command.isEnvDependent = isDependent - return isDependent -} +// // Otherwise, calculate and store the result +// let isDependent = true +// if (isInstr(command)) { +// const type = command.instrType +// isDependent = !( +// type === InstrType.UNARY_OP || +// type === InstrType.BINARY_OP || +// type === InstrType.POP || +// type === InstrType.ARRAY_ACCESS || +// type === InstrType.ARRAY_ASSIGNMENT || +// type === InstrType.RESET || +// type === InstrType.CONTINUE_MARKER || +// type === InstrType.BREAK_MARKER +// ) +// } else { +// const type = command.type +// switch (type) { +// case 'StatementSequence': +// isDependent = command.body.some((statement: es.Statement) => isEnvDependent(statement)) +// case 'Literal': +// isDependent = false +// break +// case 'BinaryExpression': +// isDependent = isEnvDependent(command.left) || isEnvDependent(command.right) +// break +// case 'LogicalExpression': +// isDependent = isEnvDependent(command.left) || isEnvDependent(command.right) +// break +// case 'UnaryExpression': +// isDependent = isEnvDependent(command.argument) +// break +// case 'ExpressionStatement': +// isDependent = isEnvDependent(command.expression) +// break +// default: +// break +// } +// } +// command.isEnvDependent = isDependent +// return isDependent +// } /** * Checks whether an environment instruction needs to be pushed onto the control. @@ -729,3 +729,447 @@ export const isEnvDependent = (command: ControlItem): boolean => { export const canAvoidEnvInstr = (control: Control): boolean => { return !control.getStack().some((command: ControlItem) => isEnvDependent(command)) } + +type ASTPropertySetter = Map +// type NodeTransformer = (node: Node) => Node +// type InstrTransformer = (instr: Instr) => Instr +type Transformer = (item: ControlItem) => ControlItem + + +export const setToTrue = (item: ControlItem): ControlItem => { + item.isEnvDependent = true + return item +} + +export const setToFalse = (item: ControlItem): ControlItem => { + item.isEnvDependent = false + return item +} + +const propertySetter: ASTPropertySetter = new Map([ + [ + 'Program', + (node: Node) => { + node = node as es.Program + node.isEnvDependent = node.body.some(elem => isEnvDependent(elem)) + return node + } + ], + [ + 'Literal', + setToFalse + ], + [ + 'ImportDeclaration', + setToFalse + ], + [ + 'BreakStatement', + setToFalse + ], + [ + 'ContinueStatement', + setToFalse + ], + [ + 'DebuggerStatement', + setToFalse + ], + [ + 'VariableDeclaration', + setToTrue + ], + [ + 'FunctionDeclaration', + setToTrue + ], + [ + 'ArrowFunctionExpression', + setToTrue + ], + [ + 'Identifier', + setToTrue + ], + [ + 'LogicalExpression', + (node: Node) => { + node = node as es.LogicalExpression + node.isEnvDependent = isEnvDependent(node.left) || isEnvDependent(node.right) + return node + } + ], + [ + 'BinaryExpression', + (node: Node) => { + node = node as es.BinaryExpression + node.isEnvDependent = isEnvDependent(node.left) || isEnvDependent(node.right) + return node + } + ], + [ + 'UnaryExpression', + (node: Node) => { + node = node as es.UnaryExpression + node.isEnvDependent = isEnvDependent(node.argument) + return node + } + ], + [ + 'ConditionalExpression', + (node: Node) => { + node = node as es.ConditionalExpression + node.isEnvDependent = isEnvDependent(node.consequent) + || isEnvDependent(node.alternate) + || isEnvDependent(node.test) + return node + } + ], + [ + 'MemberExpression', + (node: Node) => { + node = node as es.MemberExpression + node.isEnvDependent = isEnvDependent(node.property) || isEnvDependent(node.object) + return node + } + ], + [ + 'ArrayExpression', + (node: Node) => { + node = node as es.ArrayExpression + node.isEnvDependent = node.elements.some(elem => isEnvDependent(elem)) + return node + } + ], + [ + 'AssignmentExpression', + (node: Node) => { + node = node as es.AssignmentExpression + node.isEnvDependent = isEnvDependent(node.left) || isEnvDependent(node.right) + return node + } + ], + [ + 'ReturnStatement', + (node: Node) => { + node = node as es.ReturnStatement + node.isEnvDependent = isEnvDependent(node.argument) + return node + } + ], + [ + 'CallExpression', + (node: Node) => { + node = node as es.CallExpression + node.isEnvDependent = isEnvDependent(node.callee) || node.arguments.some(arg => isEnvDependent(arg)) + return node + } + ], + [ + 'ExpressionStatement', + (node: Node) => { + node = node as es.ExpressionStatement + node.isEnvDependent = isEnvDependent(node.expression) + return node + } + ], + [ + 'IfStatement', + (node: Node) => { + node = node as es.IfStatement + node.isEnvDependent = isEnvDependent(node.test) + || isEnvDependent(node.consequent) + || isEnvDependent(node.alternate) + return node + } + ], + [ + 'ForStatement', + (node: Node) => { + node = node as es.ForStatement + node.isEnvDependent = isEnvDependent(node.body) + || isEnvDependent(node.init) + || isEnvDependent(node.test) + || isEnvDependent(node.update) + return node + } + ], + [ + 'WhileStatement', + (node: Node) => { + node = node as es.WhileStatement + node.isEnvDependent = isEnvDependent(node.body) || isEnvDependent(node.test) + return node + } + ], + [ + 'BlockStatement', + (node: Node) => { + node = node as es.BlockStatement + node.isEnvDependent = node.body.some(stm => isEnvDependent(stm)) + return node + } + ], + [ + 'StatementSequence', + (node: Node) => { + node = node as StatementSequence + node.isEnvDependent = node.body.some(stm => isEnvDependent(stm)) + return node + } + ], + [ + 'Property', + (node: Node) => { + node = node as es.Property + node.isEnvDependent = isEnvDependent(node.key) || isEnvDependent(node.value) + return node + } + ], + + [ + 'ImportDeclaration', + (node: Node) => { + node = node as es.ImportDeclaration + node.isEnvDependent = node.specifiers.some(x => isEnvDependent(x)) + return node + } + ], + + [ + 'ImportSpecifier', + setToTrue + ], + + [ + 'ImportDefaultSpecifier', + setToTrue + ], + + [ + 'ExportNamedDeclaration', + (node: Node) => { + node = node as es.ExportNamedDeclaration + node.isEnvDependent = isEnvDependent(node.declaration) || node.specifiers.some(x => isEnvDependent(x)) + return node + } + ], + + [ + 'ExportDefaultDeclaration', + (node: Node) => { + node = node as es.ExportDefaultDeclaration + node.isEnvDependent = isEnvDependent(node.declaration) + return node + } + ], + + [ + 'ExportSpecifier', + setToTrue + ], + + [ + 'ClassDeclaration', + (node: Node) => { + node = node as es.ClassDeclaration + node.isEnvDependent = isEnvDependent(node.body) + || (node.id !== null && isEnvDependent(node.id)) + || isEnvDependent(node.superClass) + return node + } + ], + + [ + 'NewExpression', + (node: Node) => { + node = node as es.NewExpression + node.isEnvDependent = node.arguments.some(x => isEnvDependent(x)) + return node + } + ], + + [ + 'MethodDefinition', + (node: Node) => { + node = node as es.MethodDefinition + node.isEnvDependent = isEnvDependent(node.key) || isEnvDependent(node.value) + return node + } + ], + + [ + 'FunctionExpression', + (node: Node) => { + node = node as es.FunctionExpression + node.isEnvDependent = isEnvDependent(node.id) + || node.params.some(x => isEnvDependent(x)) + || isEnvDependent(node.body) + return node + } + ], + + [ + 'ThisExpression', + (_node: es.ThisExpression) => { + return _node + } + ], + + [ + 'Super', + (_node: es.Super) => { + return _node + } + ], + + [ + 'TryStatement', + (node: Node) => { + node = node as es.TryStatement + node.isEnvDependent = isEnvDependent(node.block) + || isEnvDependent(node.handler) + || isEnvDependent(node.finalizer) + return node + } + ], + [ + 'ThrowStatement', + (node: Node) => { + node = node as es.ThrowStatement + node.isEnvDependent = isEnvDependent(node.argument) + return node + } + ], + [ + 'SpreadElement', + (node: Node) => { + node = node as es.SpreadElement + node.isEnvDependent = isEnvDependent(node.argument) + return node + } + ], + [ + 'RestElement', + (node: Node) => { + node = node as es.RestElement + node.isEnvDependent = isEnvDependent(node.argument) + return node + } + ], + + //Instruction + [ + InstrType.RESET, + setToFalse + ], + [ + InstrType.UNARY_OP, + setToFalse + ], + [ + InstrType.BINARY_OP, + setToFalse + ], + [ + InstrType.POP, + setToFalse + ], + [ + InstrType.ARRAY_ACCESS, + setToFalse + ], + [ + InstrType.ARRAY_ASSIGNMENT, + setToFalse + ], + [ + InstrType.CONTINUE, + setToFalse + ], + [ + InstrType.CONTINUE_MARKER, + setToFalse + ], + [ + InstrType.BREAK_MARKER, + setToFalse + ], + [ + InstrType.MARKER, + setToFalse + ], + [ + InstrType.RESUME_CONT, + setToFalse + ], + [ + InstrType.ENVIRONMENT, + // Need further testing + setToFalse + ], + [ + InstrType.APPLICATION, + // Need further testing: need to differentiate between application to call_cc and normal function + setToTrue + ], + [ + InstrType.ASSIGNMENT, + setToTrue + ], + [ + InstrType.ARRAY_LITERAL, + setToTrue + ], + [ + InstrType.GENERATE_CONT, + setToTrue + ], + [ + InstrType.WHILE, + (instr: WhileInstr) => { + instr.isEnvDependent = isEnvDependent(instr.test) || isEnvDependent(instr.body) + return instr + } + ], + [ + InstrType.FOR, + (instr: ForInstr) => { + instr.isEnvDependent = isEnvDependent(instr.init) + || isEnvDependent(instr.test) + || isEnvDependent(instr.update) + || isEnvDependent(instr.body) + return instr + } + ], + [ + InstrType.BRANCH, + (instr: BranchInstr) => { + instr.isEnvDependent = isEnvDependent(instr.consequent) || isEnvDependent(instr.alternate) + return instr + } + ] +]) + + +export function isEnvDependent(item: ControlItem | null | undefined): boolean { + if (item === null || item === undefined) { + return false + } + // If result is already calculated, return it + if (item.isEnvDependent !== undefined) { + return item.isEnvDependent + } + if (isNode(item)) { + const setter = propertySetter.get(item.type) + if (setter) { + return setter(item)?.isEnvDependent ?? false + } + } else if (isInstr(item)) { + const setter = propertySetter.get(item.instrType) + if (setter) { + return setter(item)?.isEnvDependent ?? false + } + } + return false +} \ No newline at end of file diff --git a/src/types.ts b/src/types.ts index e4911a649..a95ec7e98 100644 --- a/src/types.ts +++ b/src/types.ts @@ -320,11 +320,12 @@ export interface StatementSequence extends es.BaseStatement { /** * js-slang's custom Node type - this should be used wherever es.Node is used. */ -export type Node = +export type Node = {isEnvDependent?: boolean} & ( | es.Node | StatementSequence | es.MaybeNamedClassDeclaration | es.MaybeNamedFunctionDeclaration +) /* Although the ESTree specifications supposedly provide a Directive interface, the index file does not seem to export it. As such this interface was created here to fulfil the same purpose. From 5e53954818f4717268a5ca5e7038d912ef359a7c Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Wed, 15 May 2024 12:34:15 +0800 Subject: [PATCH 10/19] Modify test cases --- .../cse-machine-runtime-context.ts.snap | 3373 +++-------------- .../__tests__/cse-machine-runtime-context.ts | 134 +- src/cse-machine/interpreter.ts | 7 +- src/cse-machine/types.ts | 2 +- src/cse-machine/utils.ts | 224 +- src/types.ts | 2 +- 6 files changed, 627 insertions(+), 3115 deletions(-) diff --git a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap index 064fe137d..532378f46 100644 --- a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap +++ b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap @@ -1,2927 +1,462 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Avoid unnescessary environment instruction 1 1`] = ` -Control { - "numEnvDependentItems": 0, - "storage": Array [ - Object { - "instrType": "BinaryOperation", - "isEnvDependent": false, - "srcNode": Node { - "end": 53, - "isEnvDependent": true, - "left": Node { - "arguments": Array [ - Node { - "end": 48, - "isEnvDependent": true, - "left": Node { - "end": 46, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 7, - "line": 4, - }, - "start": Position { - "column": 6, - "line": 4, - }, - }, - "name": "n", - "start": 45, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 9, - "line": 4, - }, - "start": Position { - "column": 6, - "line": 4, - }, - }, - "operator": "-", - "right": Node { - "end": 48, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 9, - "line": 4, - }, - "start": Position { - "column": 8, - "line": 4, - }, - }, - "raw": "1", - "start": 47, - "type": "Literal", - "value": 1, - }, - "start": 45, - "type": "BinaryExpression", - }, - ], - "callee": Node { - "end": 44, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 5, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "name": "f", - "start": 43, - "type": "Identifier", - }, - "end": 49, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 10, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "start": 43, - "type": "CallExpression", - }, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "operator": "*", - "right": Node { - "end": 53, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 13, - "line": 4, - }, - }, - "raw": "2", - "start": 52, - "type": "Literal", - "value": 2, - }, - "start": 43, - "type": "BinaryExpression", - }, - "symbol": "*", - }, - Node { - "end": 53, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 13, - "line": 4, - }, - }, - "raw": "2", - "start": 52, - "type": "Literal", - "value": 2, - }, - Object { - "instrType": "BinaryOperation", - "isEnvDependent": false, - "srcNode": Node { - "end": 53, - "isEnvDependent": true, - "left": Node { - "arguments": Array [ - Node { - "end": 48, - "isEnvDependent": true, - "left": Node { - "end": 46, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 7, - "line": 4, - }, - "start": Position { - "column": 6, - "line": 4, - }, - }, - "name": "n", - "start": 45, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 9, - "line": 4, - }, - "start": Position { - "column": 6, - "line": 4, - }, - }, - "operator": "-", - "right": Node { - "end": 48, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 9, - "line": 4, - }, - "start": Position { - "column": 8, - "line": 4, - }, - }, - "raw": "1", - "start": 47, - "type": "Literal", - "value": 1, - }, - "start": 45, - "type": "BinaryExpression", - }, - ], - "callee": Node { - "end": 44, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 5, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "name": "f", - "start": 43, - "type": "Identifier", - }, - "end": 49, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 10, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "start": 43, - "type": "CallExpression", - }, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "operator": "*", - "right": Node { - "end": 53, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 13, - "line": 4, - }, - }, - "raw": "2", - "start": 52, - "type": "Literal", - "value": 2, - }, - "start": 43, - "type": "BinaryExpression", - }, - "symbol": "*", - }, - Node { - "end": 53, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 13, - "line": 4, - }, - }, - "raw": "2", - "start": 52, - "type": "Literal", - "value": 2, - }, - Object { - "instrType": "BinaryOperation", - "isEnvDependent": false, - "srcNode": Node { - "end": 53, - "isEnvDependent": true, - "left": Node { - "arguments": Array [ - Node { - "end": 48, - "isEnvDependent": true, - "left": Node { - "end": 46, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 7, - "line": 4, - }, - "start": Position { - "column": 6, - "line": 4, - }, - }, - "name": "n", - "start": 45, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 9, - "line": 4, - }, - "start": Position { - "column": 6, - "line": 4, - }, - }, - "operator": "-", - "right": Node { - "end": 48, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 9, - "line": 4, - }, - "start": Position { - "column": 8, - "line": 4, - }, - }, - "raw": "1", - "start": 47, - "type": "Literal", - "value": 1, - }, - "start": 45, - "type": "BinaryExpression", - }, - ], - "callee": Node { - "end": 44, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 5, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "name": "f", - "start": 43, - "type": "Identifier", - }, - "end": 49, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 10, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "start": 43, - "type": "CallExpression", - }, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "operator": "*", - "right": Node { - "end": 53, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 13, - "line": 4, - }, - }, - "raw": "2", - "start": 52, - "type": "Literal", - "value": 2, - }, - "start": 43, - "type": "BinaryExpression", - }, - "symbol": "*", - }, - ], -} -`; +exports[`Avoid unnescessary environment instruction 1 1`] = `1`; -exports[`Avoid unnescessary environment instruction 2 1`] = ` -Control { - "numEnvDependentItems": 0, - "storage": Array [ - Object { - "instrType": "BinaryOperation", - "isEnvDependent": false, - "srcNode": Node { - "end": 53, - "isEnvDependent": true, - "left": Node { - "end": 44, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 5, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "name": "n", - "start": 43, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "operator": "*", - "right": Node { - "arguments": Array [ - Node { - "end": 52, - "isEnvDependent": true, - "left": Node { - "end": 50, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 4, - }, - "start": Position { - "column": 10, - "line": 4, - }, - }, - "name": "n", - "start": 49, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 13, - "line": 4, - }, - "start": Position { - "column": 10, - "line": 4, - }, - }, - "operator": "-", - "right": Node { - "end": 52, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 13, - "line": 4, - }, - "start": Position { - "column": 12, - "line": 4, - }, - }, - "raw": "1", - "start": 51, - "type": "Literal", - "value": 1, - }, - "start": 49, - "type": "BinaryExpression", - }, - ], - "callee": Node { - "end": 48, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 9, - "line": 4, - }, - "start": Position { - "column": 8, - "line": 4, - }, - }, - "name": "f", - "start": 47, - "type": "Identifier", - }, - "end": 53, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 8, - "line": 4, - }, - }, - "start": 47, - "type": "CallExpression", - }, - "start": 43, - "type": "BinaryExpression", - }, - "symbol": "*", - }, - Object { - "instrType": "BinaryOperation", - "isEnvDependent": false, - "srcNode": Node { - "end": 53, - "isEnvDependent": true, - "left": Node { - "end": 44, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 5, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "name": "n", - "start": 43, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "operator": "*", - "right": Node { - "arguments": Array [ - Node { - "end": 52, - "isEnvDependent": true, - "left": Node { - "end": 50, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 4, - }, - "start": Position { - "column": 10, - "line": 4, - }, - }, - "name": "n", - "start": 49, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 13, - "line": 4, - }, - "start": Position { - "column": 10, - "line": 4, - }, - }, - "operator": "-", - "right": Node { - "end": 52, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 13, - "line": 4, - }, - "start": Position { - "column": 12, - "line": 4, - }, - }, - "raw": "1", - "start": 51, - "type": "Literal", - "value": 1, - }, - "start": 49, - "type": "BinaryExpression", - }, - ], - "callee": Node { - "end": 48, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 9, - "line": 4, - }, - "start": Position { - "column": 8, - "line": 4, - }, - }, - "name": "f", - "start": 47, - "type": "Identifier", - }, - "end": 53, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 8, - "line": 4, - }, - }, - "start": 47, - "type": "CallExpression", - }, - "start": 43, - "type": "BinaryExpression", - }, - "symbol": "*", - }, - Object { - "instrType": "BinaryOperation", - "isEnvDependent": false, - "srcNode": Node { - "end": 53, - "isEnvDependent": true, - "left": Node { - "end": 44, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 5, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "name": "n", - "start": 43, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 4, - "line": 4, - }, - }, - "operator": "*", - "right": Node { - "arguments": Array [ - Node { - "end": 52, - "isEnvDependent": true, - "left": Node { - "end": 50, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 4, - }, - "start": Position { - "column": 10, - "line": 4, - }, - }, - "name": "n", - "start": 49, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 13, - "line": 4, - }, - "start": Position { - "column": 10, - "line": 4, - }, - }, - "operator": "-", - "right": Node { - "end": 52, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 13, - "line": 4, - }, - "start": Position { - "column": 12, - "line": 4, - }, - }, - "raw": "1", - "start": 51, - "type": "Literal", - "value": 1, - }, - "start": 49, - "type": "BinaryExpression", - }, - ], - "callee": Node { - "end": 48, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 9, - "line": 4, - }, - "start": Position { - "column": 8, - "line": 4, - }, - }, - "name": "f", - "start": 47, - "type": "Identifier", - }, - "end": 53, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 14, - "line": 4, - }, - "start": Position { - "column": 8, - "line": 4, - }, - }, - "start": 47, - "type": "CallExpression", - }, - "start": 43, - "type": "BinaryExpression", - }, - "symbol": "*", - }, - ], -} -`; +exports[`Avoid unnescessary environment instruction 1 2`] = `2`; -exports[`Avoid unnescessary environment instruction 3 1`] = ` -Control { - "numEnvDependentItems": 1, - "storage": Array [ - Node { - "end": 86, - "expression": Node { - "end": 85, - "isEnvDependent": true, - "left": Node { - "end": 81, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 1, - "line": 8, - }, - "start": Position { - "column": 0, - "line": 8, - }, - }, - "name": "a", - "start": 80, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 5, - "line": 8, - }, - "start": Position { - "column": 0, - "line": 8, - }, - }, - "operator": "=", - "right": Node { - "end": 85, - "loc": SourceLocation { - "end": Position { - "column": 5, - "line": 8, - }, - "start": Position { - "column": 4, - "line": 8, - }, - }, - "raw": "2", - "start": 84, - "type": "Literal", - "value": 2, - }, - "start": 80, - "type": "AssignmentExpression", - }, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 6, - "line": 8, - }, - "start": Position { - "column": 0, - "line": 8, - }, - }, - "start": 80, - "type": "ExpressionStatement", - }, - Object { - "instrType": "Pop", - "isEnvDependent": false, - "srcNode": Node { - "end": 86, - "expression": Node { - "end": 85, - "isEnvDependent": true, - "left": Node { - "end": 81, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 1, - "line": 8, - }, - "start": Position { - "column": 0, - "line": 8, - }, - }, - "name": "a", - "start": 80, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 5, - "line": 8, - }, - "start": Position { - "column": 0, - "line": 8, - }, - }, - "operator": "=", - "right": Node { - "end": 85, - "loc": SourceLocation { - "end": Position { - "column": 5, - "line": 8, - }, - "start": Position { - "column": 4, - "line": 8, - }, - }, - "raw": "2", - "start": 84, - "type": "Literal", - "value": 2, - }, - "start": 80, - "type": "AssignmentExpression", - }, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 6, - "line": 8, - }, - "start": Position { - "column": 0, - "line": 8, - }, - }, - "start": 80, - "type": "ExpressionStatement", - }, - }, - Object { - "env": Object { - "head": Object { - "a": 1, - "f": [Function], - }, - "heap": Heap { - "storage": Set { - [Function], - }, - }, - "id": "47", - "name": "programEnvironment", - "tail": Object { - "head": Object { - "$accumulate": [Function], - "$append": [Function], - "$build_list": [Function], - "$enum_list": [Function], - "$filter": [Function], - "$length": [Function], - "$list_to_string": [Function], - "$map": [Function], - "$remove": [Function], - "$remove_all": [Function], - "$reverse": [Function], - "__access_export__": [Function], - "__access_named_export__": [Function], - "accumulate": [Function], - "append": [Function], - "build_list": [Function], - "build_stream": [Function], - "enum_list": [Function], - "enum_stream": [Function], - "equal": [Function], - "eval_stream": [Function], - "filter": [Function], - "for_each": [Function], - "integers_from": [Function], - "is_stream": [Function], - "length": [Function], - "list_ref": [Function], - "list_to_stream": [Function], - "list_to_string": [Function], - "map": [Function], - "member": [Function], - "remove": [Function], - "remove_all": [Function], - "reverse": [Function], - "stream_append": [Function], - "stream_filter": [Function], - "stream_for_each": [Function], - "stream_length": [Function], - "stream_map": [Function], - "stream_member": [Function], - "stream_ref": [Function], - "stream_remove": [Function], - "stream_remove_all": [Function], - "stream_reverse": [Function], - "stream_tail": [Function], - "stream_to_list": [Function], - }, - "heap": Heap { - "storage": Set { - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - }, - }, - "id": "0", - "name": "prelude", - "tail": Object { - "head": Object { - "Infinity": Infinity, - "NaN": NaN, - "apply_in_underlying_javascript": [Function], - "arity": [Function], - "array_length": [Function], - "call_cc": [Function], - "char_at": [Function], - "display": [Function], - "display_list": [Function], - "draw_data": [Function], - "error": [Function], - "get_time": [Function], - "head": [Function], - "is_array": [Function], - "is_boolean": [Function], - "is_function": [Function], - "is_list": [Function], - "is_null": [Function], - "is_number": [Function], - "is_pair": [Function], - "is_string": [Function], - "is_undefined": [Function], - "list": [Function], - "math_E": 2.718281828459045, - "math_LN10": 2.302585092994046, - "math_LN2": 0.6931471805599453, - "math_LOG10E": 0.4342944819032518, - "math_LOG2E": 1.4426950408889634, - "math_PI": 3.141592653589793, - "math_SQRT1_2": 0.7071067811865476, - "math_SQRT2": 1.4142135623730951, - "math_abs": [Function], - "math_acos": [Function], - "math_acosh": [Function], - "math_asin": [Function], - "math_asinh": [Function], - "math_atan": [Function], - "math_atan2": [Function], - "math_atanh": [Function], - "math_cbrt": [Function], - "math_ceil": [Function], - "math_clz32": [Function], - "math_cos": [Function], - "math_cosh": [Function], - "math_exp": [Function], - "math_expm1": [Function], - "math_floor": [Function], - "math_fround": [Function], - "math_hypot": [Function], - "math_imul": [Function], - "math_log": [Function], - "math_log10": [Function], - "math_log1p": [Function], - "math_log2": [Function], - "math_max": [Function], - "math_min": [Function], - "math_pow": [Function], - "math_random": [Function], - "math_round": [Function], - "math_sign": [Function], - "math_sin": [Function], - "math_sinh": [Function], - "math_sqrt": [Function], - "math_tan": [Function], - "math_tanh": [Function], - "math_trunc": [Function], - "pair": [Function], - "parse": [Function], - "parse_int": [Function], - "prompt": [Function], - "raw_display": [Function], - "set_head": [Function], - "set_tail": [Function], - "stream": [Function], - "stringify": [Function], - "tail": [Function], - "tokenize": [Function], - "undefined": undefined, - }, - "heap": Heap { - "storage": null, - }, - "id": "-1", - "name": "global", - "tail": null, - }, - }, - }, - "instrType": "Environment", - "isEnvDependent": false, - "srcNode": Node { - "arguments": Array [ - Node { - "end": 77, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 3, - "line": 7, - }, - "start": Position { - "column": 2, - "line": 7, - }, - }, - "raw": "3", - "start": 76, - "type": "Literal", - "value": 3, - }, - ], - "callee": Node { - "end": 75, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 1, - "line": 7, - }, - "start": Position { - "column": 0, - "line": 7, - }, - }, - "name": "f", - "start": 74, - "type": "Identifier", - }, - "end": 78, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 4, - "line": 7, - }, - "start": Position { - "column": 0, - "line": 7, - }, - }, - "start": 74, - "type": "CallExpression", - }, - }, - Object { - "instrType": "BinaryOperation", - "isEnvDependent": false, - "srcNode": Node { - "end": 70, - "isEnvDependent": true, - "left": Node { - "end": 61, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 7, - "line": 5, - }, - "start": Position { - "column": 6, - "line": 5, - }, - }, - "name": "n", - "start": 60, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 16, - "line": 5, - }, - "start": Position { - "column": 6, - "line": 5, - }, - }, - "operator": "*", - "right": Node { - "arguments": Array [ - Node { - "end": 69, - "isEnvDependent": true, - "left": Node { - "end": 67, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 13, - "line": 5, - }, - "start": Position { - "column": 12, - "line": 5, - }, - }, - "name": "n", - "start": 66, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 15, - "line": 5, - }, - "start": Position { - "column": 12, - "line": 5, - }, - }, - "operator": "-", - "right": Node { - "end": 69, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 15, - "line": 5, - }, - "start": Position { - "column": 14, - "line": 5, - }, - }, - "raw": "1", - "start": 68, - "type": "Literal", - "value": 1, - }, - "start": 66, - "type": "BinaryExpression", - }, - ], - "callee": Node { - "end": 65, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "name": "f", - "start": 64, - "type": "Identifier", - }, - "end": 70, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 16, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "start": 64, - "type": "CallExpression", - }, - "start": 60, - "type": "BinaryExpression", - }, - "symbol": "*", - }, - Object { - "env": Object { - "callExpression": Object { - "arguments": Array [ - Object { - "loc": undefined, - "type": "Literal", - "value": 3, - }, - ], - "callee": Node { - "end": 75, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 1, - "line": 7, - }, - "start": Position { - "column": 0, - "line": 7, - }, - }, - "name": "f", - "start": 74, - "type": "Identifier", - }, - "end": 78, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 4, - "line": 7, - }, - "start": Position { - "column": 0, - "line": 7, - }, - }, - "start": 74, - "type": "CallExpression", - }, - "head": Object { - "n": 3, - }, - "heap": Heap { - "storage": null, - }, - "id": "49", - "name": "f", - "tail": Object { - "head": Object { - "a": 1, - "f": [Function], - }, - "heap": Heap { - "storage": Set { - [Function], - }, - }, - "id": "47", - "name": "programEnvironment", - "tail": Object { - "head": Object { - "$accumulate": [Function], - "$append": [Function], - "$build_list": [Function], - "$enum_list": [Function], - "$filter": [Function], - "$length": [Function], - "$list_to_string": [Function], - "$map": [Function], - "$remove": [Function], - "$remove_all": [Function], - "$reverse": [Function], - "__access_export__": [Function], - "__access_named_export__": [Function], - "accumulate": [Function], - "append": [Function], - "build_list": [Function], - "build_stream": [Function], - "enum_list": [Function], - "enum_stream": [Function], - "equal": [Function], - "eval_stream": [Function], - "filter": [Function], - "for_each": [Function], - "integers_from": [Function], - "is_stream": [Function], - "length": [Function], - "list_ref": [Function], - "list_to_stream": [Function], - "list_to_string": [Function], - "map": [Function], - "member": [Function], - "remove": [Function], - "remove_all": [Function], - "reverse": [Function], - "stream_append": [Function], - "stream_filter": [Function], - "stream_for_each": [Function], - "stream_length": [Function], - "stream_map": [Function], - "stream_member": [Function], - "stream_ref": [Function], - "stream_remove": [Function], - "stream_remove_all": [Function], - "stream_reverse": [Function], - "stream_tail": [Function], - "stream_to_list": [Function], - }, - "heap": Heap { - "storage": Set { - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - }, - }, - "id": "0", - "name": "prelude", - "tail": Object { - "head": Object { - "Infinity": Infinity, - "NaN": NaN, - "apply_in_underlying_javascript": [Function], - "arity": [Function], - "array_length": [Function], - "call_cc": [Function], - "char_at": [Function], - "display": [Function], - "display_list": [Function], - "draw_data": [Function], - "error": [Function], - "get_time": [Function], - "head": [Function], - "is_array": [Function], - "is_boolean": [Function], - "is_function": [Function], - "is_list": [Function], - "is_null": [Function], - "is_number": [Function], - "is_pair": [Function], - "is_string": [Function], - "is_undefined": [Function], - "list": [Function], - "math_E": 2.718281828459045, - "math_LN10": 2.302585092994046, - "math_LN2": 0.6931471805599453, - "math_LOG10E": 0.4342944819032518, - "math_LOG2E": 1.4426950408889634, - "math_PI": 3.141592653589793, - "math_SQRT1_2": 0.7071067811865476, - "math_SQRT2": 1.4142135623730951, - "math_abs": [Function], - "math_acos": [Function], - "math_acosh": [Function], - "math_asin": [Function], - "math_asinh": [Function], - "math_atan": [Function], - "math_atan2": [Function], - "math_atanh": [Function], - "math_cbrt": [Function], - "math_ceil": [Function], - "math_clz32": [Function], - "math_cos": [Function], - "math_cosh": [Function], - "math_exp": [Function], - "math_expm1": [Function], - "math_floor": [Function], - "math_fround": [Function], - "math_hypot": [Function], - "math_imul": [Function], - "math_log": [Function], - "math_log10": [Function], - "math_log1p": [Function], - "math_log2": [Function], - "math_max": [Function], - "math_min": [Function], - "math_pow": [Function], - "math_random": [Function], - "math_round": [Function], - "math_sign": [Function], - "math_sin": [Function], - "math_sinh": [Function], - "math_sqrt": [Function], - "math_tan": [Function], - "math_tanh": [Function], - "math_trunc": [Function], - "pair": [Function], - "parse": [Function], - "parse_int": [Function], - "prompt": [Function], - "raw_display": [Function], - "set_head": [Function], - "set_tail": [Function], - "stream": [Function], - "stringify": [Function], - "tail": [Function], - "tokenize": [Function], - "undefined": undefined, - }, - "heap": Heap { - "storage": null, - }, - "id": "-1", - "name": "global", - "tail": null, - }, - }, - }, - }, - "instrType": "Environment", - "isEnvDependent": false, - "srcNode": Node { - "arguments": Array [ - Node { - "end": 69, - "isEnvDependent": true, - "left": Node { - "end": 67, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 13, - "line": 5, - }, - "start": Position { - "column": 12, - "line": 5, - }, - }, - "name": "n", - "start": 66, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 15, - "line": 5, - }, - "start": Position { - "column": 12, - "line": 5, - }, - }, - "operator": "-", - "right": Node { - "end": 69, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 15, - "line": 5, - }, - "start": Position { - "column": 14, - "line": 5, - }, - }, - "raw": "1", - "start": 68, - "type": "Literal", - "value": 1, - }, - "start": 66, - "type": "BinaryExpression", - }, - ], - "callee": Node { - "end": 65, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "name": "f", - "start": 64, - "type": "Identifier", - }, - "end": 70, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 16, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "start": 64, - "type": "CallExpression", - }, - }, - Object { - "instrType": "BinaryOperation", - "isEnvDependent": false, - "srcNode": Node { - "end": 70, - "isEnvDependent": true, - "left": Node { - "end": 61, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 7, - "line": 5, - }, - "start": Position { - "column": 6, - "line": 5, - }, - }, - "name": "n", - "start": 60, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 16, - "line": 5, - }, - "start": Position { - "column": 6, - "line": 5, - }, - }, - "operator": "*", - "right": Node { - "arguments": Array [ - Node { - "end": 69, - "isEnvDependent": true, - "left": Node { - "end": 67, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 13, - "line": 5, - }, - "start": Position { - "column": 12, - "line": 5, - }, - }, - "name": "n", - "start": 66, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 15, - "line": 5, - }, - "start": Position { - "column": 12, - "line": 5, - }, - }, - "operator": "-", - "right": Node { - "end": 69, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 15, - "line": 5, - }, - "start": Position { - "column": 14, - "line": 5, - }, - }, - "raw": "1", - "start": 68, - "type": "Literal", - "value": 1, - }, - "start": 66, - "type": "BinaryExpression", - }, - ], - "callee": Node { - "end": 65, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "name": "f", - "start": 64, - "type": "Identifier", - }, - "end": 70, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 16, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "start": 64, - "type": "CallExpression", - }, - "start": 60, - "type": "BinaryExpression", - }, - "symbol": "*", - }, - Object { - "env": Object { - "callExpression": Object { - "arguments": Array [ - Object { - "loc": undefined, - "type": "Literal", - "value": 2, - }, - ], - "callee": Node { - "end": 65, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "name": "f", - "start": 64, - "type": "Identifier", - }, - "end": 70, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 16, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "start": 64, - "type": "CallExpression", - }, - "head": Object { - "n": 2, - }, - "heap": Heap { - "storage": null, - }, - "id": "50", - "name": "f", - "tail": Object { - "head": Object { - "a": 1, - "f": [Function], - }, - "heap": Heap { - "storage": Set { - [Function], - }, - }, - "id": "47", - "name": "programEnvironment", - "tail": Object { - "head": Object { - "$accumulate": [Function], - "$append": [Function], - "$build_list": [Function], - "$enum_list": [Function], - "$filter": [Function], - "$length": [Function], - "$list_to_string": [Function], - "$map": [Function], - "$remove": [Function], - "$remove_all": [Function], - "$reverse": [Function], - "__access_export__": [Function], - "__access_named_export__": [Function], - "accumulate": [Function], - "append": [Function], - "build_list": [Function], - "build_stream": [Function], - "enum_list": [Function], - "enum_stream": [Function], - "equal": [Function], - "eval_stream": [Function], - "filter": [Function], - "for_each": [Function], - "integers_from": [Function], - "is_stream": [Function], - "length": [Function], - "list_ref": [Function], - "list_to_stream": [Function], - "list_to_string": [Function], - "map": [Function], - "member": [Function], - "remove": [Function], - "remove_all": [Function], - "reverse": [Function], - "stream_append": [Function], - "stream_filter": [Function], - "stream_for_each": [Function], - "stream_length": [Function], - "stream_map": [Function], - "stream_member": [Function], - "stream_ref": [Function], - "stream_remove": [Function], - "stream_remove_all": [Function], - "stream_reverse": [Function], - "stream_tail": [Function], - "stream_to_list": [Function], - }, - "heap": Heap { - "storage": Set { - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - }, - }, - "id": "0", - "name": "prelude", - "tail": Object { - "head": Object { - "Infinity": Infinity, - "NaN": NaN, - "apply_in_underlying_javascript": [Function], - "arity": [Function], - "array_length": [Function], - "call_cc": [Function], - "char_at": [Function], - "display": [Function], - "display_list": [Function], - "draw_data": [Function], - "error": [Function], - "get_time": [Function], - "head": [Function], - "is_array": [Function], - "is_boolean": [Function], - "is_function": [Function], - "is_list": [Function], - "is_null": [Function], - "is_number": [Function], - "is_pair": [Function], - "is_string": [Function], - "is_undefined": [Function], - "list": [Function], - "math_E": 2.718281828459045, - "math_LN10": 2.302585092994046, - "math_LN2": 0.6931471805599453, - "math_LOG10E": 0.4342944819032518, - "math_LOG2E": 1.4426950408889634, - "math_PI": 3.141592653589793, - "math_SQRT1_2": 0.7071067811865476, - "math_SQRT2": 1.4142135623730951, - "math_abs": [Function], - "math_acos": [Function], - "math_acosh": [Function], - "math_asin": [Function], - "math_asinh": [Function], - "math_atan": [Function], - "math_atan2": [Function], - "math_atanh": [Function], - "math_cbrt": [Function], - "math_ceil": [Function], - "math_clz32": [Function], - "math_cos": [Function], - "math_cosh": [Function], - "math_exp": [Function], - "math_expm1": [Function], - "math_floor": [Function], - "math_fround": [Function], - "math_hypot": [Function], - "math_imul": [Function], - "math_log": [Function], - "math_log10": [Function], - "math_log1p": [Function], - "math_log2": [Function], - "math_max": [Function], - "math_min": [Function], - "math_pow": [Function], - "math_random": [Function], - "math_round": [Function], - "math_sign": [Function], - "math_sin": [Function], - "math_sinh": [Function], - "math_sqrt": [Function], - "math_tan": [Function], - "math_tanh": [Function], - "math_trunc": [Function], - "pair": [Function], - "parse": [Function], - "parse_int": [Function], - "prompt": [Function], - "raw_display": [Function], - "set_head": [Function], - "set_tail": [Function], - "stream": [Function], - "stringify": [Function], - "tail": [Function], - "tokenize": [Function], - "undefined": undefined, - }, - "heap": Heap { - "storage": null, - }, - "id": "-1", - "name": "global", - "tail": null, - }, - }, - }, - }, - "instrType": "Environment", - "isEnvDependent": false, - "srcNode": Node { - "arguments": Array [ - Node { - "end": 69, - "isEnvDependent": true, - "left": Node { - "end": 67, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 13, - "line": 5, - }, - "start": Position { - "column": 12, - "line": 5, - }, - }, - "name": "n", - "start": 66, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 15, - "line": 5, - }, - "start": Position { - "column": 12, - "line": 5, - }, - }, - "operator": "-", - "right": Node { - "end": 69, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 15, - "line": 5, - }, - "start": Position { - "column": 14, - "line": 5, - }, - }, - "raw": "1", - "start": 68, - "type": "Literal", - "value": 1, - }, - "start": 66, - "type": "BinaryExpression", - }, - ], - "callee": Node { - "end": 65, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "name": "f", - "start": 64, - "type": "Identifier", - }, - "end": 70, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 16, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "start": 64, - "type": "CallExpression", - }, - }, - Object { - "instrType": "BinaryOperation", - "isEnvDependent": false, - "srcNode": Node { - "end": 70, - "isEnvDependent": true, - "left": Node { - "end": 61, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 7, - "line": 5, - }, - "start": Position { - "column": 6, - "line": 5, - }, - }, - "name": "n", - "start": 60, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 16, - "line": 5, - }, - "start": Position { - "column": 6, - "line": 5, - }, - }, - "operator": "*", - "right": Node { - "arguments": Array [ - Node { - "end": 69, - "isEnvDependent": true, - "left": Node { - "end": 67, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 13, - "line": 5, - }, - "start": Position { - "column": 12, - "line": 5, - }, - }, - "name": "n", - "start": 66, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 15, - "line": 5, - }, - "start": Position { - "column": 12, - "line": 5, - }, - }, - "operator": "-", - "right": Node { - "end": 69, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 15, - "line": 5, - }, - "start": Position { - "column": 14, - "line": 5, - }, - }, - "raw": "1", - "start": 68, - "type": "Literal", - "value": 1, - }, - "start": 66, - "type": "BinaryExpression", - }, - ], - "callee": Node { - "end": 65, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "name": "f", - "start": 64, - "type": "Identifier", - }, - "end": 70, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 16, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "start": 64, - "type": "CallExpression", - }, - "start": 60, - "type": "BinaryExpression", - }, - "symbol": "*", - }, - Object { - "env": Object { - "callExpression": Object { - "arguments": Array [ - Object { - "loc": undefined, - "type": "Literal", - "value": 1, - }, - ], - "callee": Node { - "end": 65, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "name": "f", - "start": 64, - "type": "Identifier", - }, - "end": 70, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 16, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "start": 64, - "type": "CallExpression", - }, - "head": Object { - "n": 1, - }, - "heap": Heap { - "storage": null, - }, - "id": "51", - "name": "f", - "tail": Object { - "head": Object { - "a": 1, - "f": [Function], - }, - "heap": Heap { - "storage": Set { - [Function], - }, - }, - "id": "47", - "name": "programEnvironment", - "tail": Object { - "head": Object { - "$accumulate": [Function], - "$append": [Function], - "$build_list": [Function], - "$enum_list": [Function], - "$filter": [Function], - "$length": [Function], - "$list_to_string": [Function], - "$map": [Function], - "$remove": [Function], - "$remove_all": [Function], - "$reverse": [Function], - "__access_export__": [Function], - "__access_named_export__": [Function], - "accumulate": [Function], - "append": [Function], - "build_list": [Function], - "build_stream": [Function], - "enum_list": [Function], - "enum_stream": [Function], - "equal": [Function], - "eval_stream": [Function], - "filter": [Function], - "for_each": [Function], - "integers_from": [Function], - "is_stream": [Function], - "length": [Function], - "list_ref": [Function], - "list_to_stream": [Function], - "list_to_string": [Function], - "map": [Function], - "member": [Function], - "remove": [Function], - "remove_all": [Function], - "reverse": [Function], - "stream_append": [Function], - "stream_filter": [Function], - "stream_for_each": [Function], - "stream_length": [Function], - "stream_map": [Function], - "stream_member": [Function], - "stream_ref": [Function], - "stream_remove": [Function], - "stream_remove_all": [Function], - "stream_reverse": [Function], - "stream_tail": [Function], - "stream_to_list": [Function], - }, - "heap": Heap { - "storage": Set { - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - [Function], - }, - }, - "id": "0", - "name": "prelude", - "tail": Object { - "head": Object { - "Infinity": Infinity, - "NaN": NaN, - "apply_in_underlying_javascript": [Function], - "arity": [Function], - "array_length": [Function], - "call_cc": [Function], - "char_at": [Function], - "display": [Function], - "display_list": [Function], - "draw_data": [Function], - "error": [Function], - "get_time": [Function], - "head": [Function], - "is_array": [Function], - "is_boolean": [Function], - "is_function": [Function], - "is_list": [Function], - "is_null": [Function], - "is_number": [Function], - "is_pair": [Function], - "is_string": [Function], - "is_undefined": [Function], - "list": [Function], - "math_E": 2.718281828459045, - "math_LN10": 2.302585092994046, - "math_LN2": 0.6931471805599453, - "math_LOG10E": 0.4342944819032518, - "math_LOG2E": 1.4426950408889634, - "math_PI": 3.141592653589793, - "math_SQRT1_2": 0.7071067811865476, - "math_SQRT2": 1.4142135623730951, - "math_abs": [Function], - "math_acos": [Function], - "math_acosh": [Function], - "math_asin": [Function], - "math_asinh": [Function], - "math_atan": [Function], - "math_atan2": [Function], - "math_atanh": [Function], - "math_cbrt": [Function], - "math_ceil": [Function], - "math_clz32": [Function], - "math_cos": [Function], - "math_cosh": [Function], - "math_exp": [Function], - "math_expm1": [Function], - "math_floor": [Function], - "math_fround": [Function], - "math_hypot": [Function], - "math_imul": [Function], - "math_log": [Function], - "math_log10": [Function], - "math_log1p": [Function], - "math_log2": [Function], - "math_max": [Function], - "math_min": [Function], - "math_pow": [Function], - "math_random": [Function], - "math_round": [Function], - "math_sign": [Function], - "math_sin": [Function], - "math_sinh": [Function], - "math_sqrt": [Function], - "math_tan": [Function], - "math_tanh": [Function], - "math_trunc": [Function], - "pair": [Function], - "parse": [Function], - "parse_int": [Function], - "prompt": [Function], - "raw_display": [Function], - "set_head": [Function], - "set_tail": [Function], - "stream": [Function], - "stringify": [Function], - "tail": [Function], - "tokenize": [Function], - "undefined": undefined, - }, - "heap": Heap { - "storage": null, - }, - "id": "-1", - "name": "global", - "tail": null, - }, - }, - }, - }, - "instrType": "Environment", - "isEnvDependent": false, - "srcNode": Node { - "arguments": Array [ - Node { - "end": 69, - "isEnvDependent": true, - "left": Node { - "end": 67, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 13, - "line": 5, - }, - "start": Position { - "column": 12, - "line": 5, - }, - }, - "name": "n", - "start": 66, - "type": "Identifier", - }, - "loc": SourceLocation { - "end": Position { - "column": 15, - "line": 5, - }, - "start": Position { - "column": 12, - "line": 5, - }, - }, - "operator": "-", - "right": Node { - "end": 69, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 15, - "line": 5, - }, - "start": Position { - "column": 14, - "line": 5, - }, - }, - "raw": "1", - "start": 68, - "type": "Literal", - "value": 1, - }, - "start": 66, - "type": "BinaryExpression", - }, - ], - "callee": Node { - "end": 65, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "name": "f", - "start": 64, - "type": "Identifier", - }, - "end": 70, - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 16, - "line": 5, - }, - "start": Position { - "column": 10, - "line": 5, - }, - }, - "start": 64, - "type": "CallExpression", - }, - }, - Node { - "end": 53, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 7, - "line": 4, - }, - "start": Position { - "column": 6, - "line": 4, - }, - }, - "raw": "1", - "start": 52, - "type": "Literal", - "value": 1, - }, - ], -} -`; +exports[`Avoid unnescessary environment instruction 1 3`] = `2`; -exports[`Avoid unnescessary environment instruction 4 1`] = ` -Control { - "numEnvDependentItems": 1, - "storage": Array [ - Object { - "body": Array [ - Node { - "end": 43, - "expression": Node { - "end": 42, - "isEnvDependent": false, - "left": Node { - "end": 38, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 5, - "line": 7, - }, - "start": Position { - "column": 4, - "line": 7, - }, - }, - "raw": "1", - "start": 37, - "type": "Literal", - "value": 1, - }, - "loc": SourceLocation { - "end": Position { - "column": 9, - "line": 7, - }, - "start": Position { - "column": 4, - "line": 7, - }, - }, - "operator": "+", - "right": Node { - "end": 42, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 9, - "line": 7, - }, - "start": Position { - "column": 8, - "line": 7, - }, - }, - "raw": "2", - "start": 41, - "type": "Literal", - "value": 2, - }, - "start": 37, - "type": "BinaryExpression", - }, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 10, - "line": 7, - }, - "start": Position { - "column": 4, - "line": 7, - }, - }, - "start": 37, - "type": "ExpressionStatement", - }, - Node { - "end": 50, - "expression": Node { - "end": 49, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 5, - "line": 8, - }, - "start": Position { - "column": 4, - "line": 8, - }, - }, - "raw": "3", - "start": 48, - "type": "Literal", - "value": 3, - }, - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 6, - "line": 8, - }, - "start": Position { - "column": 4, - "line": 8, - }, - }, - "start": 48, - "type": "ExpressionStatement", - }, - ], - "isEnvDependent": false, - "loc": SourceLocation { - "end": Position { - "column": 1, - "line": 9, - }, - "start": Position { - "column": 0, - "line": 6, - }, - }, - "type": "StatementSequence", - }, - Object { - "body": Array [ - Node { - "declarations": Array [ - Node { - "end": 13, - "id": Node { - "end": 9, - "loc": SourceLocation { - "end": Position { - "column": 7, - "line": 2, - }, - "start": Position { - "column": 6, - "line": 2, - }, - }, - "name": "a", - "start": 8, - "type": "Identifier", - }, - "init": Node { - "end": 13, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 2, - }, - "start": Position { - "column": 10, - "line": 2, - }, - }, - "raw": "1", - "start": 12, - "type": "Literal", - "value": 1, - }, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 2, - }, - "start": Position { - "column": 6, - "line": 2, - }, - }, - "start": 8, - "type": "VariableDeclarator", - }, - ], - "end": 14, - "isEnvDependent": true, - "kind": "let", - "loc": SourceLocation { - "end": Position { - "column": 12, - "line": 2, - }, - "start": Position { - "column": 2, - "line": 2, - }, - }, - "start": 4, - "typability": "NotYetTyped", - "type": "VariableDeclaration", - }, - Node { - "declarations": Array [ - Node { - "end": 26, - "id": Node { - "end": 22, - "loc": SourceLocation { - "end": Position { - "column": 7, - "line": 3, - }, - "start": Position { - "column": 6, - "line": 3, - }, - }, - "name": "b", - "start": 21, - "type": "Identifier", - }, - "init": Node { - "end": 26, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 3, - }, - "start": Position { - "column": 10, - "line": 3, - }, - }, - "raw": "2", - "start": 25, - "type": "Literal", - "value": 2, - }, - "loc": SourceLocation { - "end": Position { - "column": 11, - "line": 3, - }, - "start": Position { - "column": 6, - "line": 3, - }, - }, - "start": 21, - "type": "VariableDeclarator", - }, - ], - "end": 27, - "kind": "let", - "loc": SourceLocation { - "end": Position { - "column": 12, - "line": 3, - }, - "start": Position { - "column": 2, - "line": 3, - }, - }, - "start": 17, - "typability": "NotYetTyped", - "type": "VariableDeclaration", - }, - ], - "isEnvDependent": true, - "loc": SourceLocation { - "end": Position { - "column": 1, - "line": 4, - }, - "start": Position { - "column": 0, - "line": 1, - }, - }, - "type": "StatementSequence", - }, - ], -} -`; +exports[`Avoid unnescessary environment instruction 1 4`] = `3`; + +exports[`Avoid unnescessary environment instruction 1 5`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 6`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 7`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 8`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 9`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 10`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 11`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 12`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 13`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 14`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 15`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 16`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 17`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 18`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 19`] = `3`; + +exports[`Avoid unnescessary environment instruction 1 20`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 21`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 22`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 23`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 24`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 25`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 26`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 27`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 28`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 29`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 30`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 31`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 32`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 33`] = `3`; + +exports[`Avoid unnescessary environment instruction 1 34`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 35`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 36`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 37`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 38`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 39`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 40`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 41`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 42`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 43`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 44`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 45`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 46`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 47`] = `3`; + +exports[`Avoid unnescessary environment instruction 1 48`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 49`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 50`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 51`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 52`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 53`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 54`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 55`] = `2`; + +exports[`Avoid unnescessary environment instruction 1 56`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 57`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 58`] = `1`; + +exports[`Avoid unnescessary environment instruction 1 59`] = `0`; + +exports[`Avoid unnescessary environment instruction 1 60`] = `0`; + +exports[`Avoid unnescessary environment instruction 1 61`] = `0`; + +exports[`Avoid unnescessary environment instruction 1 62`] = `0`; + +exports[`Avoid unnescessary environment instruction 1 63`] = `0`; + +exports[`Avoid unnescessary environment instruction 1 64`] = `0`; + +exports[`Avoid unnescessary environment instruction 1 65`] = `0`; + +exports[`Avoid unnescessary environment instruction 1 66`] = `0`; + +exports[`Avoid unnescessary environment instruction 2 1`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 2`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 3`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 4`] = `3`; + +exports[`Avoid unnescessary environment instruction 2 5`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 6`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 7`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 8`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 9`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 10`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 11`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 12`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 13`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 14`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 15`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 16`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 17`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 18`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 19`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 20`] = `3`; + +exports[`Avoid unnescessary environment instruction 2 21`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 22`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 23`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 24`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 25`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 26`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 27`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 28`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 29`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 30`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 31`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 32`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 33`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 34`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 35`] = `3`; + +exports[`Avoid unnescessary environment instruction 2 36`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 37`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 38`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 39`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 40`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 41`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 42`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 43`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 44`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 45`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 46`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 47`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 48`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 49`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 50`] = `3`; + +exports[`Avoid unnescessary environment instruction 2 51`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 52`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 53`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 54`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 55`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 56`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 57`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 58`] = `2`; + +exports[`Avoid unnescessary environment instruction 2 59`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 60`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 61`] = `1`; + +exports[`Avoid unnescessary environment instruction 2 62`] = `0`; + +exports[`Avoid unnescessary environment instruction 2 63`] = `0`; + +exports[`Avoid unnescessary environment instruction 2 64`] = `0`; + +exports[`Avoid unnescessary environment instruction 2 65`] = `0`; + +exports[`Avoid unnescessary environment instruction 2 66`] = `0`; + +exports[`Avoid unnescessary environment instruction 3 1`] = `1`; + +exports[`Avoid unnescessary environment instruction 3 2`] = `4`; + +exports[`Avoid unnescessary environment instruction 3 3`] = `4`; + +exports[`Avoid unnescessary environment instruction 3 4`] = `4`; + +exports[`Avoid unnescessary environment instruction 3 5`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 6`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 7`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 8`] = `4`; + +exports[`Avoid unnescessary environment instruction 3 9`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 10`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 11`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 12`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 13`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 14`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 15`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 16`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 17`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 18`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 19`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 20`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 21`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 22`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 23`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 24`] = `4`; + +exports[`Avoid unnescessary environment instruction 3 25`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 26`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 27`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 28`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 29`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 30`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 31`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 32`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 33`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 34`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 35`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 36`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 37`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 38`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 39`] = `4`; + +exports[`Avoid unnescessary environment instruction 3 40`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 41`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 42`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 43`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 44`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 45`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 46`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 47`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 48`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 49`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 50`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 51`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 52`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 53`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 54`] = `4`; + +exports[`Avoid unnescessary environment instruction 3 55`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 56`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 57`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 58`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 59`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 60`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 61`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 62`] = `3`; + +exports[`Avoid unnescessary environment instruction 3 63`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 64`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 65`] = `2`; + +exports[`Avoid unnescessary environment instruction 3 66`] = `1`; + +exports[`Avoid unnescessary environment instruction 3 67`] = `1`; + +exports[`Avoid unnescessary environment instruction 3 68`] = `1`; + +exports[`Avoid unnescessary environment instruction 3 69`] = `1`; + +exports[`Avoid unnescessary environment instruction 3 70`] = `1`; + +exports[`Avoid unnescessary environment instruction 3 71`] = `1`; + +exports[`Avoid unnescessary environment instruction 3 72`] = `1`; + +exports[`Avoid unnescessary environment instruction 3 73`] = `1`; + +exports[`Avoid unnescessary environment instruction 3 74`] = `1`; + +exports[`Avoid unnescessary environment instruction 3 75`] = `1`; + +exports[`Avoid unnescessary environment instruction 3 76`] = `1`; + +exports[`Avoid unnescessary environment instruction 3 77`] = `1`; + +exports[`Avoid unnescessary environment instruction 3 78`] = `0`; + +exports[`Avoid unnescessary environment instruction 4 1`] = `1`; + +exports[`Avoid unnescessary environment instruction 4 2`] = `1`; + +exports[`Avoid unnescessary environment instruction 4 3`] = `1`; + +exports[`Avoid unnescessary environment instruction 4 4`] = `2`; + +exports[`Avoid unnescessary environment instruction 4 5`] = `2`; + +exports[`Avoid unnescessary environment instruction 4 6`] = `2`; + +exports[`Avoid unnescessary environment instruction 4 7`] = `1`; + +exports[`Avoid unnescessary environment instruction 4 8`] = `1`; + +exports[`Avoid unnescessary environment instruction 4 9`] = `1`; + +exports[`Avoid unnescessary environment instruction 4 10`] = `1`; + +exports[`Avoid unnescessary environment instruction 4 11`] = `0`; + +exports[`Avoid unnescessary environment instruction 4 12`] = `0`; + +exports[`Avoid unnescessary environment instruction 4 13`] = `0`; + +exports[`Avoid unnescessary environment instruction 4 14`] = `0`; + +exports[`Avoid unnescessary environment instruction 4 15`] = `0`; + +exports[`Avoid unnescessary environment instruction 4 16`] = `0`; + +exports[`Avoid unnescessary environment instruction 4 17`] = `0`; + +exports[`Avoid unnescessary environment instruction 4 18`] = `0`; + +exports[`Avoid unnescessary environment instruction 4 19`] = `0`; exports[`Breakpoint steps match 1`] = ` Array [ diff --git a/src/cse-machine/__tests__/cse-machine-runtime-context.ts b/src/cse-machine/__tests__/cse-machine-runtime-context.ts index 9286e6077..b41aecbe7 100644 --- a/src/cse-machine/__tests__/cse-machine-runtime-context.ts +++ b/src/cse-machine/__tests__/cse-machine-runtime-context.ts @@ -1,8 +1,11 @@ +import * as es from 'estree' import { IOptions } from '../..' import { mockContext } from '../../mocks/context' +import { parse } from '../../parser/parser' import { runCodeInSource } from '../../runner' import { Chapter, RecursivePartial } from '../../types' import { stripIndent } from '../../utils/formatters' +import { Control, Stash, generateCSEMachineStateStream } from '../interpreter' const getContextFrom = async (code: string, steps?: number) => { const context = mockContext(Chapter.SOURCE_4) @@ -14,6 +17,25 @@ const getContextFrom = async (code: string, steps?: number) => { return context } +const evaluateCode = (code: string) => { + const context = mockContext(Chapter.SOURCE_4) + const options: RecursivePartial = { executionMethod: 'cse-machine' } + const program = parse(code, context) + context.runtime.isRunning = true + context.runtime.control = new Control(program as es.Program) + context.runtime.stash = new Stash() + + const CSEState = generateCSEMachineStateStream( + context, + context.runtime.control, + context.runtime.stash, + options.envSteps ?? -1, + options.stepLimit ?? -1, + options.isPrelude + ) + return CSEState +} + const codeSamples = [ ` function create(n) { @@ -72,75 +94,83 @@ for (const context of contexts) { expect((await context).runtime.changepointSteps).toMatchSnapshot() }) } -test('Avoid unnescessary environment instruction 1', async () => { - const context = getContextFrom( +test('Avoid unnescessary environment instruction 1', () => { + const CSEState = evaluateCode( stripIndent( ` - function f(n) { - return n === 0 - ? 1 - : f(n-1) * 2; - } - f(3); - ` - ), - 61 - ) - expect((await context).runtime.control).toMatchSnapshot() -}) - -test('Avoid unnescessary environment instruction 2', async () => { - const context = getContextFrom( - stripIndent( + function f(n) { + return n === 0 + ? 1 + : f(n-1) * 2; + } + f(3); ` - function f(n) { - return n === 0 - ? 1 - : n * f(n-1); - } - f(3); - ` - ), - 63 + ) ) - expect((await context).runtime.control).toMatchSnapshot() + + for (const state of CSEState) { + expect(state.control.getNumEnvDependentItems()).toMatchSnapshot() + } }) -test('Avoid unnescessary environment instruction 3', async () => { - const context = getContextFrom( +test('Avoid unnescessary environment instruction 2', () => { + const CSEState = evaluateCode( stripIndent( ` - let a = 1; - function f(n) { + function f(n) { return n === 0 ? 1 : n * f(n-1); - } - f(3); - a = 2; - ` - ), - 66 + } + f(3); + ` + ) ) - expect((await context).runtime.control).toMatchSnapshot() + + for (const state of CSEState) { + expect(state.control.getNumEnvDependentItems()).toMatchSnapshot() + } }) -test('Avoid unnescessary environment instruction 4', async () => { - const context = getContextFrom( +test('Avoid unnescessary environment instruction 3', () => { + const CSEState = evaluateCode( stripIndent( ` - { let a = 1; - let b = 2; - } - - { - 1 + 2; - 3; - } + function f(n) { + return n === 0 + ? 1 + : n * f(n-1); + } + f(3); + a = 2; + ` + ) + ) + + for (const state of CSEState) { + expect(state.control.getNumEnvDependentItems()).toMatchSnapshot() + } +}) + +test('Avoid unnescessary environment instruction 4', () => { + const CSEState = evaluateCode( + stripIndent( + ` + { + let a = 1; + let b = 2; + } + + { + 1 + 2; + 3; + } ` - ), - 3 + ) ) - expect((await context).runtime.control).toMatchSnapshot() + + for (const state of CSEState) { + expect(state.control.getNumEnvDependentItems()).toMatchSnapshot() + } }) diff --git a/src/cse-machine/interpreter.ts b/src/cse-machine/interpreter.ts index b555cf21b..1316c3b2f 100644 --- a/src/cse-machine/interpreter.ts +++ b/src/cse-machine/interpreter.ts @@ -81,7 +81,7 @@ import { pushEnvironment, reduceConditional, setVariable, - valueProducing, + valueProducing } from './utils' import Closure from './closure' @@ -110,6 +110,11 @@ export class Control extends Stack { return this.numEnvDependentItems == 0 } + // For testing purposes + public getNumEnvDependentItems(): number { + return this.numEnvDependentItems + } + public pop(): ControlItem | undefined { const item = super.pop() if (item != undefined && isEnvDependent(item)) { diff --git a/src/cse-machine/types.ts b/src/cse-machine/types.ts index 8575810fa..509577ee7 100644 --- a/src/cse-machine/types.ts +++ b/src/cse-machine/types.ts @@ -94,7 +94,7 @@ export type Instr = | GenContInstr | ResumeContInstr -export type ControlItem = (Node | Instr) +export type ControlItem = Node | Instr // Every array also has the properties `id` and `environment` for use in the frontend CSE Machine export type EnvArray = any[] & { diff --git a/src/cse-machine/utils.ts b/src/cse-machine/utils.ts index 15d47c54f..3fe7f967c 100644 --- a/src/cse-machine/utils.ts +++ b/src/cse-machine/utils.ts @@ -10,7 +10,16 @@ import { isContinuation } from './continuations' import Heap from './heap' import * as instr from './instrCreator' import { Control } from './interpreter' -import { AppInstr, EnvArray, ControlItem, Instr, InstrType, BranchInstr, WhileInstr, ForInstr } from './types' +import { + AppInstr, + EnvArray, + ControlItem, + Instr, + InstrType, + BranchInstr, + WhileInstr, + ForInstr +} from './types' import Closure from './closure' /** @@ -726,27 +735,24 @@ export const hasContinueStatement = (block: es.BlockStatement | StatementSequenc * NOTE: this check is meant to detect and avoid pushing environment instruction onto the * control in SIMPLE CASES, so it might not be exhaustive */ -export const canAvoidEnvInstr = (control: Control): boolean => { - return !control.getStack().some((command: ControlItem) => isEnvDependent(command)) -} +// export const canAvoidEnvInstr = (control: Control): boolean => { +// return !control.getStack().some((command: ControlItem) => isEnvDependent(command)) +// } -type ASTPropertySetter = Map -// type NodeTransformer = (node: Node) => Node -// type InstrTransformer = (instr: Instr) => Instr +type PropertySetter = Map type Transformer = (item: ControlItem) => ControlItem - -export const setToTrue = (item: ControlItem): ControlItem => { +const setToTrue = (item: ControlItem): ControlItem => { item.isEnvDependent = true return item } -export const setToFalse = (item: ControlItem): ControlItem => { +const setToFalse = (item: ControlItem): ControlItem => { item.isEnvDependent = false return item } -const propertySetter: ASTPropertySetter = new Map([ +const propertySetter: PropertySetter = new Map([ [ 'Program', (node: Node) => { @@ -755,42 +761,15 @@ const propertySetter: ASTPropertySetter = new Map([ return node } ], - [ - 'Literal', - setToFalse - ], - [ - 'ImportDeclaration', - setToFalse - ], - [ - 'BreakStatement', - setToFalse - ], - [ - 'ContinueStatement', - setToFalse - ], - [ - 'DebuggerStatement', - setToFalse - ], - [ - 'VariableDeclaration', - setToTrue - ], - [ - 'FunctionDeclaration', - setToTrue - ], - [ - 'ArrowFunctionExpression', - setToTrue - ], - [ - 'Identifier', - setToTrue - ], + ['Literal', setToFalse], + ['ImportDeclaration', setToFalse], + ['BreakStatement', setToFalse], + ['ContinueStatement', setToFalse], + ['DebuggerStatement', setToFalse], + ['VariableDeclaration', setToTrue], + ['FunctionDeclaration', setToTrue], + ['ArrowFunctionExpression', setToTrue], + ['Identifier', setToTrue], [ 'LogicalExpression', (node: Node) => { @@ -819,9 +798,10 @@ const propertySetter: ASTPropertySetter = new Map([ 'ConditionalExpression', (node: Node) => { node = node as es.ConditionalExpression - node.isEnvDependent = isEnvDependent(node.consequent) - || isEnvDependent(node.alternate) - || isEnvDependent(node.test) + node.isEnvDependent = + isEnvDependent(node.consequent) || + isEnvDependent(node.alternate) || + isEnvDependent(node.test) return node } ], @@ -861,7 +841,8 @@ const propertySetter: ASTPropertySetter = new Map([ 'CallExpression', (node: Node) => { node = node as es.CallExpression - node.isEnvDependent = isEnvDependent(node.callee) || node.arguments.some(arg => isEnvDependent(arg)) + node.isEnvDependent = + isEnvDependent(node.callee) || node.arguments.some(arg => isEnvDependent(arg)) return node } ], @@ -877,9 +858,10 @@ const propertySetter: ASTPropertySetter = new Map([ 'IfStatement', (node: Node) => { node = node as es.IfStatement - node.isEnvDependent = isEnvDependent(node.test) - || isEnvDependent(node.consequent) - || isEnvDependent(node.alternate) + node.isEnvDependent = + isEnvDependent(node.test) || + isEnvDependent(node.consequent) || + isEnvDependent(node.alternate) return node } ], @@ -887,10 +869,11 @@ const propertySetter: ASTPropertySetter = new Map([ 'ForStatement', (node: Node) => { node = node as es.ForStatement - node.isEnvDependent = isEnvDependent(node.body) - || isEnvDependent(node.init) - || isEnvDependent(node.test) - || isEnvDependent(node.update) + node.isEnvDependent = + isEnvDependent(node.body) || + isEnvDependent(node.init) || + isEnvDependent(node.test) || + isEnvDependent(node.update) return node } ], @@ -936,21 +919,16 @@ const propertySetter: ASTPropertySetter = new Map([ } ], - [ - 'ImportSpecifier', - setToTrue - ], + ['ImportSpecifier', setToTrue], - [ - 'ImportDefaultSpecifier', - setToTrue - ], + ['ImportDefaultSpecifier', setToTrue], [ 'ExportNamedDeclaration', (node: Node) => { node = node as es.ExportNamedDeclaration - node.isEnvDependent = isEnvDependent(node.declaration) || node.specifiers.some(x => isEnvDependent(x)) + node.isEnvDependent = + isEnvDependent(node.declaration) || node.specifiers.some(x => isEnvDependent(x)) return node } ], @@ -964,18 +942,16 @@ const propertySetter: ASTPropertySetter = new Map([ } ], - [ - 'ExportSpecifier', - setToTrue - ], + ['ExportSpecifier', setToTrue], [ 'ClassDeclaration', (node: Node) => { node = node as es.ClassDeclaration - node.isEnvDependent = isEnvDependent(node.body) - || (node.id !== null && isEnvDependent(node.id)) - || isEnvDependent(node.superClass) + node.isEnvDependent = + isEnvDependent(node.body) || + (node.id !== null && isEnvDependent(node.id)) || + isEnvDependent(node.superClass) return node } ], @@ -1002,9 +978,10 @@ const propertySetter: ASTPropertySetter = new Map([ 'FunctionExpression', (node: Node) => { node = node as es.FunctionExpression - node.isEnvDependent = isEnvDependent(node.id) - || node.params.some(x => isEnvDependent(x)) - || isEnvDependent(node.body) + node.isEnvDependent = + isEnvDependent(node.id) || + node.params.some(x => isEnvDependent(x)) || + isEnvDependent(node.body) return node } ], @@ -1027,9 +1004,8 @@ const propertySetter: ASTPropertySetter = new Map([ 'TryStatement', (node: Node) => { node = node as es.TryStatement - node.isEnvDependent = isEnvDependent(node.block) - || isEnvDependent(node.handler) - || isEnvDependent(node.finalizer) + node.isEnvDependent = + isEnvDependent(node.block) || isEnvDependent(node.handler) || isEnvDependent(node.finalizer) return node } ], @@ -1059,50 +1035,17 @@ const propertySetter: ASTPropertySetter = new Map([ ], //Instruction - [ - InstrType.RESET, - setToFalse - ], - [ - InstrType.UNARY_OP, - setToFalse - ], - [ - InstrType.BINARY_OP, - setToFalse - ], - [ - InstrType.POP, - setToFalse - ], - [ - InstrType.ARRAY_ACCESS, - setToFalse - ], - [ - InstrType.ARRAY_ASSIGNMENT, - setToFalse - ], - [ - InstrType.CONTINUE, - setToFalse - ], - [ - InstrType.CONTINUE_MARKER, - setToFalse - ], - [ - InstrType.BREAK_MARKER, - setToFalse - ], - [ - InstrType.MARKER, - setToFalse - ], - [ - InstrType.RESUME_CONT, - setToFalse - ], + [InstrType.RESET, setToFalse], + [InstrType.UNARY_OP, setToFalse], + [InstrType.BINARY_OP, setToFalse], + [InstrType.POP, setToFalse], + [InstrType.ARRAY_ACCESS, setToFalse], + [InstrType.ARRAY_ASSIGNMENT, setToFalse], + [InstrType.CONTINUE, setToFalse], + [InstrType.CONTINUE_MARKER, setToFalse], + [InstrType.BREAK_MARKER, setToFalse], + [InstrType.MARKER, setToFalse], + [InstrType.RESUME_CONT, setToFalse], [ InstrType.ENVIRONMENT, // Need further testing @@ -1113,18 +1056,9 @@ const propertySetter: ASTPropertySetter = new Map([ // Need further testing: need to differentiate between application to call_cc and normal function setToTrue ], - [ - InstrType.ASSIGNMENT, - setToTrue - ], - [ - InstrType.ARRAY_LITERAL, - setToTrue - ], - [ - InstrType.GENERATE_CONT, - setToTrue - ], + [InstrType.ASSIGNMENT, setToTrue], + [InstrType.ARRAY_LITERAL, setToTrue], + [InstrType.GENERATE_CONT, setToTrue], [ InstrType.WHILE, (instr: WhileInstr) => { @@ -1135,10 +1069,11 @@ const propertySetter: ASTPropertySetter = new Map([ [ InstrType.FOR, (instr: ForInstr) => { - instr.isEnvDependent = isEnvDependent(instr.init) - || isEnvDependent(instr.test) - || isEnvDependent(instr.update) - || isEnvDependent(instr.body) + instr.isEnvDependent = + isEnvDependent(instr.init) || + isEnvDependent(instr.test) || + isEnvDependent(instr.update) || + isEnvDependent(instr.body) return instr } ], @@ -1151,6 +1086,13 @@ const propertySetter: ASTPropertySetter = new Map([ ] ]) +/** + * Checks whether the evaluation of the given control item depends on the current environment. + * The item is also considered environment dependent if its evaluation introduces + * environment dependent items + * @param item The control item to be checked + * @return `true` if the item is environment depedent, else `false`. + */ export function isEnvDependent(item: ControlItem | null | undefined): boolean { if (item === null || item === undefined) { @@ -1172,4 +1114,4 @@ export function isEnvDependent(item: ControlItem | null | undefined): boolean { } } return false -} \ No newline at end of file +} diff --git a/src/types.ts b/src/types.ts index a95ec7e98..7dd4374ea 100644 --- a/src/types.ts +++ b/src/types.ts @@ -320,7 +320,7 @@ export interface StatementSequence extends es.BaseStatement { /** * js-slang's custom Node type - this should be used wherever es.Node is used. */ -export type Node = {isEnvDependent?: boolean} & ( +export type Node = { isEnvDependent?: boolean } & ( | es.Node | StatementSequence | es.MaybeNamedClassDeclaration From 77834d3cc39f529436b9c37e33e7f550eef132da Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Wed, 15 May 2024 13:38:33 +0800 Subject: [PATCH 11/19] resolve conflict --- .../__snapshots__/cse-machine-heap.ts.snap | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap b/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap index bbbaf9d41..0e821542d 100644 --- a/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap +++ b/src/cse-machine/__tests__/__snapshots__/cse-machine-heap.ts.snap @@ -786,7 +786,6 @@ EnvTree { "callee": Node { "end": 90, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -803,7 +802,6 @@ EnvTree { }, "end": 101, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 12, @@ -1435,7 +1433,6 @@ EnvTree { "callee": Node { "end": 90, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -1452,7 +1449,6 @@ EnvTree { }, "end": 101, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 12, @@ -2105,7 +2101,6 @@ EnvTree { "callee": Node { "end": 90, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -2122,7 +2117,6 @@ EnvTree { }, "end": 101, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 12, @@ -2500,7 +2494,6 @@ EnvTree { "callee": Node { "end": 90, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -2517,7 +2510,6 @@ EnvTree { }, "end": 101, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 12, @@ -2682,7 +2674,6 @@ EnvTree { "callee": Node { "end": 90, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -2699,7 +2690,6 @@ EnvTree { }, "end": 101, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 12, @@ -5623,7 +5613,6 @@ EnvTree { "callee": Node { "end": 24, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -5640,7 +5629,6 @@ EnvTree { }, "end": 33, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 10, @@ -6085,7 +6073,6 @@ EnvTree { "callee": Node { "end": 24, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -6102,7 +6089,6 @@ EnvTree { }, "end": 33, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 10, @@ -6556,7 +6542,6 @@ EnvTree { "callee": Node { "end": 24, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -6573,7 +6558,6 @@ EnvTree { }, "end": 33, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 10, @@ -6926,7 +6910,6 @@ EnvTree { "callee": Node { "end": 24, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -6943,7 +6926,6 @@ EnvTree { }, "end": 33, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 10, @@ -7099,7 +7081,6 @@ EnvTree { "callee": Node { "end": 24, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 1, @@ -7116,7 +7097,6 @@ EnvTree { }, "end": 33, "isEnvDependent": true, - "isEnvDependent": true, "loc": SourceLocation { "end": Position { "column": 10, @@ -7473,7 +7453,6 @@ EnvTree { }, ], "callee": Object { - "isEnvDependent": false, "isEnvDependent": false, "loc": SourceLocation { "end": Position { @@ -8320,7 +8299,6 @@ EnvTree { }, ], "callee": Object { - "isEnvDependent": false, "isEnvDependent": false, "loc": SourceLocation { "end": Position { @@ -9266,7 +9244,6 @@ EnvTree { }, ], "callee": Object { - "isEnvDependent": false, "isEnvDependent": false, "loc": SourceLocation { "end": Position { @@ -10231,7 +10208,6 @@ EnvTree { }, ], "callee": Object { - "isEnvDependent": false, "isEnvDependent": false, "loc": SourceLocation { "end": Position { @@ -10986,7 +10962,6 @@ EnvTree { }, ], "callee": Object { - "isEnvDependent": false, "isEnvDependent": false, "loc": SourceLocation { "end": Position { @@ -11240,7 +11215,6 @@ EnvTree { }, ], "callee": Object { - "isEnvDependent": false, "isEnvDependent": false, "loc": SourceLocation { "end": Position { From 0e4fb8f6d71a66f81905c65a91601ef8588f8121 Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Wed, 15 May 2024 13:46:33 +0800 Subject: [PATCH 12/19] fix format --- src/cse-machine/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cse-machine/utils.ts b/src/cse-machine/utils.ts index 3fe7f967c..89a84531b 100644 --- a/src/cse-machine/utils.ts +++ b/src/cse-machine/utils.ts @@ -1088,7 +1088,7 @@ const propertySetter: PropertySetter = new Map([ /** * Checks whether the evaluation of the given control item depends on the current environment. - * The item is also considered environment dependent if its evaluation introduces + * The item is also considered environment dependent if its evaluation introduces * environment dependent items * @param item The control item to be checked * @return `true` if the item is environment depedent, else `false`. From 89f6d8525477156ca86979831a6138364d8462c5 Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Wed, 15 May 2024 14:03:01 +0800 Subject: [PATCH 13/19] remove obsolete test cases --- .../__snapshots__/tailcall-return.ts.snap | 29 ------------------- 1 file changed, 29 deletions(-) diff --git a/src/__tests__/__snapshots__/tailcall-return.ts.snap b/src/__tests__/__snapshots__/tailcall-return.ts.snap index 3d6f8eeb7..2ebb65935 100644 --- a/src/__tests__/__snapshots__/tailcall-return.ts.snap +++ b/src/__tests__/__snapshots__/tailcall-return.ts.snap @@ -106,20 +106,6 @@ f(5000, 5000);", } `; -exports[`Tail calls in arrow functions work: expectResult 2`] = ` -Object { - "alertResult": Array [], - "code": "const f = (x, y) => x <= 0 ? y : f(x-1, y+1); -f(5000, 5000);", - "displayResult": Array [], - "numErrors": 0, - "parsedErrors": "", - "result": 10000, - "resultStatus": "finished", - "visualiseListResult": Array [], -} -`; - exports[`Tail calls in mixed tail-call/non-tail-call recursion work: expectResult 1`] = ` Object { "alertResult": Array [], @@ -155,21 +141,6 @@ f(5000, 5000);", } `; -exports[`Tail calls in mutual recursion with arrow functions work: expectResult 2`] = ` -Object { - "alertResult": Array [], - "code": "const f = (x, y) => x <= 0 ? y : g(x-1, y+1); -const g = (x, y) => x <= 0 ? y : f(x-1, y+1); -f(5000, 5000);", - "displayResult": Array [], - "numErrors": 0, - "parsedErrors": "", - "result": 10000, - "resultStatus": "finished", - "visualiseListResult": Array [], -} -`; - exports[`Tail calls in mutual recursion work: expectResult 1`] = ` Object { "alertResult": Array [], From 63e96f316dc859a851575de1c463d74a3a2325e2 Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Thu, 16 May 2024 11:46:30 +0800 Subject: [PATCH 14/19] Fix equality check --- src/cse-machine/interpreter.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cse-machine/interpreter.ts b/src/cse-machine/interpreter.ts index 17923d20a..9b76839e1 100644 --- a/src/cse-machine/interpreter.ts +++ b/src/cse-machine/interpreter.ts @@ -107,7 +107,7 @@ export class Control extends Stack { } public canAvoidEnvInstr(): boolean { - return this.numEnvDependentItems == 0 + return this.numEnvDependentItems === 0 } // For testing purposes @@ -117,7 +117,7 @@ export class Control extends Stack { public pop(): ControlItem | undefined { const item = super.pop() - if (item != undefined && isEnvDependent(item)) { + if (item !== undefined && isEnvDependent(item)) { this.numEnvDependentItems-- } return item From 74ff30581c372ef54074787261dceecc77235d5b Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Sat, 20 Jul 2024 21:45:25 +0800 Subject: [PATCH 15/19] Clean up and add a test case --- .../cse-machine-runtime-context.ts.snap | 2708 +++++++++++++++-- .../__tests__/cse-machine-runtime-context.ts | 39 +- src/cse-machine/utils.ts | 188 +- 3 files changed, 2519 insertions(+), 416 deletions(-) diff --git a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap index 532378f46..5fd1a13cc 100644 --- a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap +++ b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap @@ -1,462 +1,2712 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Avoid unnescessary environment instruction 1 1`] = `1`; +exports[`Avoid unnescessary environment instruction 1`] = `1`; -exports[`Avoid unnescessary environment instruction 1 2`] = `2`; +exports[`Avoid unnescessary environment instruction 2`] = `2`; -exports[`Avoid unnescessary environment instruction 1 3`] = `2`; +exports[`Avoid unnescessary environment instruction 3`] = `2`; -exports[`Avoid unnescessary environment instruction 1 4`] = `3`; +exports[`Avoid unnescessary environment instruction 4`] = `3`; -exports[`Avoid unnescessary environment instruction 1 5`] = `2`; +exports[`Avoid unnescessary environment instruction 5`] = `2`; -exports[`Avoid unnescessary environment instruction 1 6`] = `1`; +exports[`Avoid unnescessary environment instruction 6`] = `1`; -exports[`Avoid unnescessary environment instruction 1 7`] = `1`; +exports[`Avoid unnescessary environment instruction 7`] = `1`; -exports[`Avoid unnescessary environment instruction 1 8`] = `2`; +exports[`Avoid unnescessary environment instruction 8`] = `2`; -exports[`Avoid unnescessary environment instruction 1 9`] = `1`; +exports[`Avoid unnescessary environment instruction 9`] = `1`; -exports[`Avoid unnescessary environment instruction 1 10`] = `1`; +exports[`Avoid unnescessary environment instruction 10`] = `1`; -exports[`Avoid unnescessary environment instruction 1 11`] = `1`; +exports[`Avoid unnescessary environment instruction 11`] = `1`; -exports[`Avoid unnescessary environment instruction 1 12`] = `2`; +exports[`Avoid unnescessary environment instruction 12`] = `2`; -exports[`Avoid unnescessary environment instruction 1 13`] = `2`; +exports[`Avoid unnescessary environment instruction 13`] = `2`; -exports[`Avoid unnescessary environment instruction 1 14`] = `1`; +exports[`Avoid unnescessary environment instruction 14`] = `1`; -exports[`Avoid unnescessary environment instruction 1 15`] = `1`; +exports[`Avoid unnescessary environment instruction 15`] = `1`; -exports[`Avoid unnescessary environment instruction 1 16`] = `1`; +exports[`Avoid unnescessary environment instruction 16`] = `1`; -exports[`Avoid unnescessary environment instruction 1 17`] = `1`; +exports[`Avoid unnescessary environment instruction 17`] = `1`; -exports[`Avoid unnescessary environment instruction 1 18`] = `1`; +exports[`Avoid unnescessary environment instruction 18`] = `1`; -exports[`Avoid unnescessary environment instruction 1 19`] = `3`; +exports[`Avoid unnescessary environment instruction 19`] = `3`; -exports[`Avoid unnescessary environment instruction 1 20`] = `2`; +exports[`Avoid unnescessary environment instruction 20`] = `2`; -exports[`Avoid unnescessary environment instruction 1 21`] = `2`; +exports[`Avoid unnescessary environment instruction 21`] = `2`; -exports[`Avoid unnescessary environment instruction 1 22`] = `1`; +exports[`Avoid unnescessary environment instruction 22`] = `1`; -exports[`Avoid unnescessary environment instruction 1 23`] = `1`; +exports[`Avoid unnescessary environment instruction 23`] = `1`; -exports[`Avoid unnescessary environment instruction 1 24`] = `1`; +exports[`Avoid unnescessary environment instruction 24`] = `1`; -exports[`Avoid unnescessary environment instruction 1 25`] = `1`; +exports[`Avoid unnescessary environment instruction 25`] = `1`; -exports[`Avoid unnescessary environment instruction 1 26`] = `2`; +exports[`Avoid unnescessary environment instruction 26`] = `2`; -exports[`Avoid unnescessary environment instruction 1 27`] = `2`; +exports[`Avoid unnescessary environment instruction 27`] = `2`; -exports[`Avoid unnescessary environment instruction 1 28`] = `1`; +exports[`Avoid unnescessary environment instruction 28`] = `1`; -exports[`Avoid unnescessary environment instruction 1 29`] = `1`; +exports[`Avoid unnescessary environment instruction 29`] = `1`; -exports[`Avoid unnescessary environment instruction 1 30`] = `1`; +exports[`Avoid unnescessary environment instruction 30`] = `1`; -exports[`Avoid unnescessary environment instruction 1 31`] = `1`; +exports[`Avoid unnescessary environment instruction 31`] = `1`; -exports[`Avoid unnescessary environment instruction 1 32`] = `1`; +exports[`Avoid unnescessary environment instruction 32`] = `1`; -exports[`Avoid unnescessary environment instruction 1 33`] = `3`; +exports[`Avoid unnescessary environment instruction 33`] = `3`; -exports[`Avoid unnescessary environment instruction 1 34`] = `2`; +exports[`Avoid unnescessary environment instruction 34`] = `2`; -exports[`Avoid unnescessary environment instruction 1 35`] = `2`; +exports[`Avoid unnescessary environment instruction 35`] = `2`; -exports[`Avoid unnescessary environment instruction 1 36`] = `1`; +exports[`Avoid unnescessary environment instruction 36`] = `1`; -exports[`Avoid unnescessary environment instruction 1 37`] = `1`; +exports[`Avoid unnescessary environment instruction 37`] = `1`; -exports[`Avoid unnescessary environment instruction 1 38`] = `1`; +exports[`Avoid unnescessary environment instruction 38`] = `1`; -exports[`Avoid unnescessary environment instruction 1 39`] = `1`; +exports[`Avoid unnescessary environment instruction 39`] = `1`; -exports[`Avoid unnescessary environment instruction 1 40`] = `2`; +exports[`Avoid unnescessary environment instruction 40`] = `2`; -exports[`Avoid unnescessary environment instruction 1 41`] = `2`; +exports[`Avoid unnescessary environment instruction 41`] = `2`; -exports[`Avoid unnescessary environment instruction 1 42`] = `1`; +exports[`Avoid unnescessary environment instruction 42`] = `1`; -exports[`Avoid unnescessary environment instruction 1 43`] = `1`; +exports[`Avoid unnescessary environment instruction 43`] = `1`; -exports[`Avoid unnescessary environment instruction 1 44`] = `1`; +exports[`Avoid unnescessary environment instruction 44`] = `1`; -exports[`Avoid unnescessary environment instruction 1 45`] = `1`; +exports[`Avoid unnescessary environment instruction 45`] = `1`; -exports[`Avoid unnescessary environment instruction 1 46`] = `1`; +exports[`Avoid unnescessary environment instruction 46`] = `1`; -exports[`Avoid unnescessary environment instruction 1 47`] = `3`; +exports[`Avoid unnescessary environment instruction 47`] = `3`; -exports[`Avoid unnescessary environment instruction 1 48`] = `2`; +exports[`Avoid unnescessary environment instruction 48`] = `2`; -exports[`Avoid unnescessary environment instruction 1 49`] = `2`; +exports[`Avoid unnescessary environment instruction 49`] = `2`; -exports[`Avoid unnescessary environment instruction 1 50`] = `1`; +exports[`Avoid unnescessary environment instruction 50`] = `1`; -exports[`Avoid unnescessary environment instruction 1 51`] = `1`; +exports[`Avoid unnescessary environment instruction 51`] = `1`; -exports[`Avoid unnescessary environment instruction 1 52`] = `1`; +exports[`Avoid unnescessary environment instruction 52`] = `1`; -exports[`Avoid unnescessary environment instruction 1 53`] = `1`; +exports[`Avoid unnescessary environment instruction 53`] = `1`; -exports[`Avoid unnescessary environment instruction 1 54`] = `2`; +exports[`Avoid unnescessary environment instruction 54`] = `2`; -exports[`Avoid unnescessary environment instruction 1 55`] = `2`; +exports[`Avoid unnescessary environment instruction 55`] = `2`; -exports[`Avoid unnescessary environment instruction 1 56`] = `1`; +exports[`Avoid unnescessary environment instruction 56`] = `1`; -exports[`Avoid unnescessary environment instruction 1 57`] = `1`; +exports[`Avoid unnescessary environment instruction 57`] = `1`; -exports[`Avoid unnescessary environment instruction 1 58`] = `1`; +exports[`Avoid unnescessary environment instruction 58`] = `1`; -exports[`Avoid unnescessary environment instruction 1 59`] = `0`; +exports[`Avoid unnescessary environment instruction 59`] = `0`; -exports[`Avoid unnescessary environment instruction 1 60`] = `0`; +exports[`Avoid unnescessary environment instruction 60`] = `0`; -exports[`Avoid unnescessary environment instruction 1 61`] = `0`; +exports[`Avoid unnescessary environment instruction 61`] = `0`; -exports[`Avoid unnescessary environment instruction 1 62`] = `0`; +exports[`Avoid unnescessary environment instruction 62`] = `0`; -exports[`Avoid unnescessary environment instruction 1 63`] = `0`; +exports[`Avoid unnescessary environment instruction 63`] = `0`; -exports[`Avoid unnescessary environment instruction 1 64`] = `0`; +exports[`Avoid unnescessary environment instruction 64`] = `0`; -exports[`Avoid unnescessary environment instruction 1 65`] = `0`; +exports[`Avoid unnescessary environment instruction 65`] = `0`; -exports[`Avoid unnescessary environment instruction 1 66`] = `0`; +exports[`Avoid unnescessary environment instruction 66`] = `0`; -exports[`Avoid unnescessary environment instruction 2 1`] = `1`; +exports[`Avoid unnescessary environment instruction 67`] = `1`; -exports[`Avoid unnescessary environment instruction 2 2`] = `2`; +exports[`Avoid unnescessary environment instruction 68`] = `2`; -exports[`Avoid unnescessary environment instruction 2 3`] = `2`; +exports[`Avoid unnescessary environment instruction 69`] = `2`; -exports[`Avoid unnescessary environment instruction 2 4`] = `3`; +exports[`Avoid unnescessary environment instruction 70`] = `3`; -exports[`Avoid unnescessary environment instruction 2 5`] = `2`; +exports[`Avoid unnescessary environment instruction 71`] = `2`; -exports[`Avoid unnescessary environment instruction 2 6`] = `1`; +exports[`Avoid unnescessary environment instruction 72`] = `1`; -exports[`Avoid unnescessary environment instruction 2 7`] = `1`; +exports[`Avoid unnescessary environment instruction 73`] = `1`; -exports[`Avoid unnescessary environment instruction 2 8`] = `2`; +exports[`Avoid unnescessary environment instruction 74`] = `2`; -exports[`Avoid unnescessary environment instruction 2 9`] = `1`; +exports[`Avoid unnescessary environment instruction 75`] = `1`; -exports[`Avoid unnescessary environment instruction 2 10`] = `1`; +exports[`Avoid unnescessary environment instruction 76`] = `1`; -exports[`Avoid unnescessary environment instruction 2 11`] = `1`; +exports[`Avoid unnescessary environment instruction 77`] = `1`; -exports[`Avoid unnescessary environment instruction 2 12`] = `2`; +exports[`Avoid unnescessary environment instruction 78`] = `2`; -exports[`Avoid unnescessary environment instruction 2 13`] = `2`; +exports[`Avoid unnescessary environment instruction 79`] = `2`; -exports[`Avoid unnescessary environment instruction 2 14`] = `1`; +exports[`Avoid unnescessary environment instruction 80`] = `1`; -exports[`Avoid unnescessary environment instruction 2 15`] = `1`; +exports[`Avoid unnescessary environment instruction 81`] = `1`; -exports[`Avoid unnescessary environment instruction 2 16`] = `1`; +exports[`Avoid unnescessary environment instruction 82`] = `1`; -exports[`Avoid unnescessary environment instruction 2 17`] = `1`; +exports[`Avoid unnescessary environment instruction 83`] = `1`; -exports[`Avoid unnescessary environment instruction 2 18`] = `2`; +exports[`Avoid unnescessary environment instruction 84`] = `2`; -exports[`Avoid unnescessary environment instruction 2 19`] = `1`; +exports[`Avoid unnescessary environment instruction 85`] = `1`; -exports[`Avoid unnescessary environment instruction 2 20`] = `3`; +exports[`Avoid unnescessary environment instruction 86`] = `3`; -exports[`Avoid unnescessary environment instruction 2 21`] = `2`; +exports[`Avoid unnescessary environment instruction 87`] = `2`; -exports[`Avoid unnescessary environment instruction 2 22`] = `2`; +exports[`Avoid unnescessary environment instruction 88`] = `2`; -exports[`Avoid unnescessary environment instruction 2 23`] = `1`; +exports[`Avoid unnescessary environment instruction 89`] = `1`; -exports[`Avoid unnescessary environment instruction 2 24`] = `1`; +exports[`Avoid unnescessary environment instruction 90`] = `1`; -exports[`Avoid unnescessary environment instruction 2 25`] = `1`; +exports[`Avoid unnescessary environment instruction 91`] = `1`; -exports[`Avoid unnescessary environment instruction 2 26`] = `1`; +exports[`Avoid unnescessary environment instruction 92`] = `1`; -exports[`Avoid unnescessary environment instruction 2 27`] = `2`; +exports[`Avoid unnescessary environment instruction 93`] = `2`; -exports[`Avoid unnescessary environment instruction 2 28`] = `2`; +exports[`Avoid unnescessary environment instruction 94`] = `2`; -exports[`Avoid unnescessary environment instruction 2 29`] = `1`; +exports[`Avoid unnescessary environment instruction 95`] = `1`; -exports[`Avoid unnescessary environment instruction 2 30`] = `1`; +exports[`Avoid unnescessary environment instruction 96`] = `1`; -exports[`Avoid unnescessary environment instruction 2 31`] = `1`; +exports[`Avoid unnescessary environment instruction 97`] = `1`; -exports[`Avoid unnescessary environment instruction 2 32`] = `1`; +exports[`Avoid unnescessary environment instruction 98`] = `1`; -exports[`Avoid unnescessary environment instruction 2 33`] = `2`; +exports[`Avoid unnescessary environment instruction 99`] = `2`; -exports[`Avoid unnescessary environment instruction 2 34`] = `1`; +exports[`Avoid unnescessary environment instruction 100`] = `1`; -exports[`Avoid unnescessary environment instruction 2 35`] = `3`; +exports[`Avoid unnescessary environment instruction 101`] = `3`; -exports[`Avoid unnescessary environment instruction 2 36`] = `2`; +exports[`Avoid unnescessary environment instruction 102`] = `2`; -exports[`Avoid unnescessary environment instruction 2 37`] = `2`; +exports[`Avoid unnescessary environment instruction 103`] = `2`; -exports[`Avoid unnescessary environment instruction 2 38`] = `1`; +exports[`Avoid unnescessary environment instruction 104`] = `1`; -exports[`Avoid unnescessary environment instruction 2 39`] = `1`; +exports[`Avoid unnescessary environment instruction 105`] = `1`; -exports[`Avoid unnescessary environment instruction 2 40`] = `1`; +exports[`Avoid unnescessary environment instruction 106`] = `1`; -exports[`Avoid unnescessary environment instruction 2 41`] = `1`; +exports[`Avoid unnescessary environment instruction 107`] = `1`; -exports[`Avoid unnescessary environment instruction 2 42`] = `2`; +exports[`Avoid unnescessary environment instruction 108`] = `2`; -exports[`Avoid unnescessary environment instruction 2 43`] = `2`; +exports[`Avoid unnescessary environment instruction 109`] = `2`; -exports[`Avoid unnescessary environment instruction 2 44`] = `1`; +exports[`Avoid unnescessary environment instruction 110`] = `1`; -exports[`Avoid unnescessary environment instruction 2 45`] = `1`; +exports[`Avoid unnescessary environment instruction 111`] = `1`; -exports[`Avoid unnescessary environment instruction 2 46`] = `1`; +exports[`Avoid unnescessary environment instruction 112`] = `1`; -exports[`Avoid unnescessary environment instruction 2 47`] = `1`; +exports[`Avoid unnescessary environment instruction 113`] = `1`; -exports[`Avoid unnescessary environment instruction 2 48`] = `2`; +exports[`Avoid unnescessary environment instruction 114`] = `2`; -exports[`Avoid unnescessary environment instruction 2 49`] = `1`; +exports[`Avoid unnescessary environment instruction 115`] = `1`; -exports[`Avoid unnescessary environment instruction 2 50`] = `3`; +exports[`Avoid unnescessary environment instruction 116`] = `3`; -exports[`Avoid unnescessary environment instruction 2 51`] = `2`; +exports[`Avoid unnescessary environment instruction 117`] = `2`; -exports[`Avoid unnescessary environment instruction 2 52`] = `2`; +exports[`Avoid unnescessary environment instruction 118`] = `2`; -exports[`Avoid unnescessary environment instruction 2 53`] = `1`; +exports[`Avoid unnescessary environment instruction 119`] = `1`; -exports[`Avoid unnescessary environment instruction 2 54`] = `1`; +exports[`Avoid unnescessary environment instruction 120`] = `1`; -exports[`Avoid unnescessary environment instruction 2 55`] = `1`; +exports[`Avoid unnescessary environment instruction 121`] = `1`; -exports[`Avoid unnescessary environment instruction 2 56`] = `1`; +exports[`Avoid unnescessary environment instruction 122`] = `1`; -exports[`Avoid unnescessary environment instruction 2 57`] = `2`; +exports[`Avoid unnescessary environment instruction 123`] = `2`; -exports[`Avoid unnescessary environment instruction 2 58`] = `2`; +exports[`Avoid unnescessary environment instruction 124`] = `2`; -exports[`Avoid unnescessary environment instruction 2 59`] = `1`; +exports[`Avoid unnescessary environment instruction 125`] = `1`; -exports[`Avoid unnescessary environment instruction 2 60`] = `1`; +exports[`Avoid unnescessary environment instruction 126`] = `1`; -exports[`Avoid unnescessary environment instruction 2 61`] = `1`; +exports[`Avoid unnescessary environment instruction 127`] = `1`; -exports[`Avoid unnescessary environment instruction 2 62`] = `0`; +exports[`Avoid unnescessary environment instruction 128`] = `0`; -exports[`Avoid unnescessary environment instruction 2 63`] = `0`; +exports[`Avoid unnescessary environment instruction 129`] = `0`; -exports[`Avoid unnescessary environment instruction 2 64`] = `0`; +exports[`Avoid unnescessary environment instruction 130`] = `0`; -exports[`Avoid unnescessary environment instruction 2 65`] = `0`; +exports[`Avoid unnescessary environment instruction 131`] = `0`; -exports[`Avoid unnescessary environment instruction 2 66`] = `0`; +exports[`Avoid unnescessary environment instruction 132`] = `0`; -exports[`Avoid unnescessary environment instruction 3 1`] = `1`; +exports[`Avoid unnescessary environment instruction 133`] = `1`; -exports[`Avoid unnescessary environment instruction 3 2`] = `4`; +exports[`Avoid unnescessary environment instruction 134`] = `4`; -exports[`Avoid unnescessary environment instruction 3 3`] = `4`; +exports[`Avoid unnescessary environment instruction 135`] = `4`; -exports[`Avoid unnescessary environment instruction 3 4`] = `4`; +exports[`Avoid unnescessary environment instruction 136`] = `4`; -exports[`Avoid unnescessary environment instruction 3 5`] = `3`; +exports[`Avoid unnescessary environment instruction 137`] = `3`; -exports[`Avoid unnescessary environment instruction 3 6`] = `3`; +exports[`Avoid unnescessary environment instruction 138`] = `3`; -exports[`Avoid unnescessary environment instruction 3 7`] = `3`; +exports[`Avoid unnescessary environment instruction 139`] = `3`; -exports[`Avoid unnescessary environment instruction 3 8`] = `4`; +exports[`Avoid unnescessary environment instruction 140`] = `4`; -exports[`Avoid unnescessary environment instruction 3 9`] = `3`; +exports[`Avoid unnescessary environment instruction 141`] = `3`; -exports[`Avoid unnescessary environment instruction 3 10`] = `2`; +exports[`Avoid unnescessary environment instruction 142`] = `2`; -exports[`Avoid unnescessary environment instruction 3 11`] = `2`; +exports[`Avoid unnescessary environment instruction 143`] = `2`; -exports[`Avoid unnescessary environment instruction 3 12`] = `3`; +exports[`Avoid unnescessary environment instruction 144`] = `3`; -exports[`Avoid unnescessary environment instruction 3 13`] = `2`; +exports[`Avoid unnescessary environment instruction 145`] = `2`; -exports[`Avoid unnescessary environment instruction 3 14`] = `2`; +exports[`Avoid unnescessary environment instruction 146`] = `2`; -exports[`Avoid unnescessary environment instruction 3 15`] = `2`; +exports[`Avoid unnescessary environment instruction 147`] = `2`; -exports[`Avoid unnescessary environment instruction 3 16`] = `3`; +exports[`Avoid unnescessary environment instruction 148`] = `3`; -exports[`Avoid unnescessary environment instruction 3 17`] = `3`; +exports[`Avoid unnescessary environment instruction 149`] = `3`; -exports[`Avoid unnescessary environment instruction 3 18`] = `2`; +exports[`Avoid unnescessary environment instruction 150`] = `2`; -exports[`Avoid unnescessary environment instruction 3 19`] = `2`; +exports[`Avoid unnescessary environment instruction 151`] = `2`; -exports[`Avoid unnescessary environment instruction 3 20`] = `2`; +exports[`Avoid unnescessary environment instruction 152`] = `2`; -exports[`Avoid unnescessary environment instruction 3 21`] = `2`; +exports[`Avoid unnescessary environment instruction 153`] = `2`; -exports[`Avoid unnescessary environment instruction 3 22`] = `3`; +exports[`Avoid unnescessary environment instruction 154`] = `3`; -exports[`Avoid unnescessary environment instruction 3 23`] = `2`; +exports[`Avoid unnescessary environment instruction 155`] = `2`; -exports[`Avoid unnescessary environment instruction 3 24`] = `4`; +exports[`Avoid unnescessary environment instruction 156`] = `4`; -exports[`Avoid unnescessary environment instruction 3 25`] = `3`; +exports[`Avoid unnescessary environment instruction 157`] = `3`; -exports[`Avoid unnescessary environment instruction 3 26`] = `3`; +exports[`Avoid unnescessary environment instruction 158`] = `3`; -exports[`Avoid unnescessary environment instruction 3 27`] = `2`; +exports[`Avoid unnescessary environment instruction 159`] = `2`; -exports[`Avoid unnescessary environment instruction 3 28`] = `2`; +exports[`Avoid unnescessary environment instruction 160`] = `2`; -exports[`Avoid unnescessary environment instruction 3 29`] = `2`; +exports[`Avoid unnescessary environment instruction 161`] = `2`; -exports[`Avoid unnescessary environment instruction 3 30`] = `2`; +exports[`Avoid unnescessary environment instruction 162`] = `2`; -exports[`Avoid unnescessary environment instruction 3 31`] = `3`; +exports[`Avoid unnescessary environment instruction 163`] = `3`; -exports[`Avoid unnescessary environment instruction 3 32`] = `3`; +exports[`Avoid unnescessary environment instruction 164`] = `3`; -exports[`Avoid unnescessary environment instruction 3 33`] = `2`; +exports[`Avoid unnescessary environment instruction 165`] = `2`; -exports[`Avoid unnescessary environment instruction 3 34`] = `2`; +exports[`Avoid unnescessary environment instruction 166`] = `2`; -exports[`Avoid unnescessary environment instruction 3 35`] = `2`; +exports[`Avoid unnescessary environment instruction 167`] = `2`; -exports[`Avoid unnescessary environment instruction 3 36`] = `2`; +exports[`Avoid unnescessary environment instruction 168`] = `2`; -exports[`Avoid unnescessary environment instruction 3 37`] = `3`; +exports[`Avoid unnescessary environment instruction 169`] = `3`; -exports[`Avoid unnescessary environment instruction 3 38`] = `2`; +exports[`Avoid unnescessary environment instruction 170`] = `2`; -exports[`Avoid unnescessary environment instruction 3 39`] = `4`; +exports[`Avoid unnescessary environment instruction 171`] = `4`; -exports[`Avoid unnescessary environment instruction 3 40`] = `3`; +exports[`Avoid unnescessary environment instruction 172`] = `3`; -exports[`Avoid unnescessary environment instruction 3 41`] = `3`; +exports[`Avoid unnescessary environment instruction 173`] = `3`; -exports[`Avoid unnescessary environment instruction 3 42`] = `2`; +exports[`Avoid unnescessary environment instruction 174`] = `2`; -exports[`Avoid unnescessary environment instruction 3 43`] = `2`; +exports[`Avoid unnescessary environment instruction 175`] = `2`; -exports[`Avoid unnescessary environment instruction 3 44`] = `2`; +exports[`Avoid unnescessary environment instruction 176`] = `2`; -exports[`Avoid unnescessary environment instruction 3 45`] = `2`; +exports[`Avoid unnescessary environment instruction 177`] = `2`; -exports[`Avoid unnescessary environment instruction 3 46`] = `3`; +exports[`Avoid unnescessary environment instruction 178`] = `3`; -exports[`Avoid unnescessary environment instruction 3 47`] = `3`; +exports[`Avoid unnescessary environment instruction 179`] = `3`; -exports[`Avoid unnescessary environment instruction 3 48`] = `2`; +exports[`Avoid unnescessary environment instruction 180`] = `2`; -exports[`Avoid unnescessary environment instruction 3 49`] = `2`; +exports[`Avoid unnescessary environment instruction 181`] = `2`; -exports[`Avoid unnescessary environment instruction 3 50`] = `2`; +exports[`Avoid unnescessary environment instruction 182`] = `2`; -exports[`Avoid unnescessary environment instruction 3 51`] = `2`; +exports[`Avoid unnescessary environment instruction 183`] = `2`; -exports[`Avoid unnescessary environment instruction 3 52`] = `3`; +exports[`Avoid unnescessary environment instruction 184`] = `3`; -exports[`Avoid unnescessary environment instruction 3 53`] = `2`; +exports[`Avoid unnescessary environment instruction 185`] = `2`; -exports[`Avoid unnescessary environment instruction 3 54`] = `4`; +exports[`Avoid unnescessary environment instruction 186`] = `4`; -exports[`Avoid unnescessary environment instruction 3 55`] = `3`; +exports[`Avoid unnescessary environment instruction 187`] = `3`; -exports[`Avoid unnescessary environment instruction 3 56`] = `3`; +exports[`Avoid unnescessary environment instruction 188`] = `3`; -exports[`Avoid unnescessary environment instruction 3 57`] = `2`; +exports[`Avoid unnescessary environment instruction 189`] = `2`; -exports[`Avoid unnescessary environment instruction 3 58`] = `2`; +exports[`Avoid unnescessary environment instruction 190`] = `2`; -exports[`Avoid unnescessary environment instruction 3 59`] = `2`; +exports[`Avoid unnescessary environment instruction 191`] = `2`; -exports[`Avoid unnescessary environment instruction 3 60`] = `2`; +exports[`Avoid unnescessary environment instruction 192`] = `2`; -exports[`Avoid unnescessary environment instruction 3 61`] = `3`; +exports[`Avoid unnescessary environment instruction 193`] = `3`; -exports[`Avoid unnescessary environment instruction 3 62`] = `3`; +exports[`Avoid unnescessary environment instruction 194`] = `3`; -exports[`Avoid unnescessary environment instruction 3 63`] = `2`; +exports[`Avoid unnescessary environment instruction 195`] = `2`; -exports[`Avoid unnescessary environment instruction 3 64`] = `2`; +exports[`Avoid unnescessary environment instruction 196`] = `2`; -exports[`Avoid unnescessary environment instruction 3 65`] = `2`; +exports[`Avoid unnescessary environment instruction 197`] = `2`; -exports[`Avoid unnescessary environment instruction 3 66`] = `1`; +exports[`Avoid unnescessary environment instruction 198`] = `1`; -exports[`Avoid unnescessary environment instruction 3 67`] = `1`; +exports[`Avoid unnescessary environment instruction 199`] = `1`; -exports[`Avoid unnescessary environment instruction 3 68`] = `1`; +exports[`Avoid unnescessary environment instruction 200`] = `1`; -exports[`Avoid unnescessary environment instruction 3 69`] = `1`; +exports[`Avoid unnescessary environment instruction 201`] = `1`; -exports[`Avoid unnescessary environment instruction 3 70`] = `1`; +exports[`Avoid unnescessary environment instruction 202`] = `1`; -exports[`Avoid unnescessary environment instruction 3 71`] = `1`; +exports[`Avoid unnescessary environment instruction 203`] = `1`; -exports[`Avoid unnescessary environment instruction 3 72`] = `1`; +exports[`Avoid unnescessary environment instruction 204`] = `1`; -exports[`Avoid unnescessary environment instruction 3 73`] = `1`; +exports[`Avoid unnescessary environment instruction 205`] = `1`; -exports[`Avoid unnescessary environment instruction 3 74`] = `1`; +exports[`Avoid unnescessary environment instruction 206`] = `1`; -exports[`Avoid unnescessary environment instruction 3 75`] = `1`; +exports[`Avoid unnescessary environment instruction 207`] = `1`; -exports[`Avoid unnescessary environment instruction 3 76`] = `1`; +exports[`Avoid unnescessary environment instruction 208`] = `1`; -exports[`Avoid unnescessary environment instruction 3 77`] = `1`; +exports[`Avoid unnescessary environment instruction 209`] = `1`; -exports[`Avoid unnescessary environment instruction 3 78`] = `0`; +exports[`Avoid unnescessary environment instruction 210`] = `0`; -exports[`Avoid unnescessary environment instruction 4 1`] = `1`; +exports[`Avoid unnescessary environment instruction 211`] = `1`; -exports[`Avoid unnescessary environment instruction 4 2`] = `1`; +exports[`Avoid unnescessary environment instruction 212`] = `1`; -exports[`Avoid unnescessary environment instruction 4 3`] = `1`; +exports[`Avoid unnescessary environment instruction 213`] = `1`; -exports[`Avoid unnescessary environment instruction 4 4`] = `2`; +exports[`Avoid unnescessary environment instruction 214`] = `2`; -exports[`Avoid unnescessary environment instruction 4 5`] = `2`; +exports[`Avoid unnescessary environment instruction 215`] = `2`; -exports[`Avoid unnescessary environment instruction 4 6`] = `2`; +exports[`Avoid unnescessary environment instruction 216`] = `2`; -exports[`Avoid unnescessary environment instruction 4 7`] = `1`; +exports[`Avoid unnescessary environment instruction 217`] = `1`; -exports[`Avoid unnescessary environment instruction 4 8`] = `1`; +exports[`Avoid unnescessary environment instruction 218`] = `1`; -exports[`Avoid unnescessary environment instruction 4 9`] = `1`; +exports[`Avoid unnescessary environment instruction 219`] = `1`; -exports[`Avoid unnescessary environment instruction 4 10`] = `1`; +exports[`Avoid unnescessary environment instruction 220`] = `1`; -exports[`Avoid unnescessary environment instruction 4 11`] = `0`; +exports[`Avoid unnescessary environment instruction 221`] = `0`; -exports[`Avoid unnescessary environment instruction 4 12`] = `0`; +exports[`Avoid unnescessary environment instruction 222`] = `0`; -exports[`Avoid unnescessary environment instruction 4 13`] = `0`; +exports[`Avoid unnescessary environment instruction 223`] = `0`; -exports[`Avoid unnescessary environment instruction 4 14`] = `0`; +exports[`Avoid unnescessary environment instruction 224`] = `0`; -exports[`Avoid unnescessary environment instruction 4 15`] = `0`; +exports[`Avoid unnescessary environment instruction 225`] = `0`; -exports[`Avoid unnescessary environment instruction 4 16`] = `0`; +exports[`Avoid unnescessary environment instruction 226`] = `0`; -exports[`Avoid unnescessary environment instruction 4 17`] = `0`; +exports[`Avoid unnescessary environment instruction 227`] = `0`; -exports[`Avoid unnescessary environment instruction 4 18`] = `0`; +exports[`Avoid unnescessary environment instruction 228`] = `0`; -exports[`Avoid unnescessary environment instruction 4 19`] = `0`; +exports[`Avoid unnescessary environment instruction 229`] = `0`; + +exports[`Avoid unnescessary environment instruction 230`] = `1`; + +exports[`Avoid unnescessary environment instruction 231`] = `4`; + +exports[`Avoid unnescessary environment instruction 232`] = `4`; + +exports[`Avoid unnescessary environment instruction 233`] = `5`; + +exports[`Avoid unnescessary environment instruction 234`] = `5`; + +exports[`Avoid unnescessary environment instruction 235`] = `5`; + +exports[`Avoid unnescessary environment instruction 236`] = `5`; + +exports[`Avoid unnescessary environment instruction 237`] = `4`; + +exports[`Avoid unnescessary environment instruction 238`] = `3`; + +exports[`Avoid unnescessary environment instruction 239`] = `3`; + +exports[`Avoid unnescessary environment instruction 240`] = `3`; + +exports[`Avoid unnescessary environment instruction 241`] = `3`; + +exports[`Avoid unnescessary environment instruction 242`] = `2`; + +exports[`Avoid unnescessary environment instruction 243`] = `2`; + +exports[`Avoid unnescessary environment instruction 244`] = `2`; + +exports[`Avoid unnescessary environment instruction 245`] = `3`; + +exports[`Avoid unnescessary environment instruction 246`] = `2`; + +exports[`Avoid unnescessary environment instruction 247`] = `1`; + +exports[`Avoid unnescessary environment instruction 248`] = `1`; + +exports[`Avoid unnescessary environment instruction 249`] = `1`; + +exports[`Avoid unnescessary environment instruction 250`] = `1`; + +exports[`Avoid unnescessary environment instruction 251`] = `2`; + +exports[`Avoid unnescessary environment instruction 252`] = `2`; + +exports[`Avoid unnescessary environment instruction 253`] = `2`; + +exports[`Avoid unnescessary environment instruction 254`] = `1`; + +exports[`Avoid unnescessary environment instruction 255`] = `1`; + +exports[`Avoid unnescessary environment instruction 256`] = `4`; + +exports[`Avoid unnescessary environment instruction 257`] = `3`; + +exports[`Avoid unnescessary environment instruction 258`] = `3`; + +exports[`Avoid unnescessary environment instruction 259`] = `3`; + +exports[`Avoid unnescessary environment instruction 260`] = `2`; + +exports[`Avoid unnescessary environment instruction 261`] = `2`; + +exports[`Avoid unnescessary environment instruction 262`] = `2`; + +exports[`Avoid unnescessary environment instruction 263`] = `1`; + +exports[`Avoid unnescessary environment instruction 264`] = `1`; + +exports[`Avoid unnescessary environment instruction 265`] = `1`; + +exports[`Avoid unnescessary environment instruction 266`] = `4`; + +exports[`Avoid unnescessary environment instruction 267`] = `4`; + +exports[`Avoid unnescessary environment instruction 268`] = `4`; + +exports[`Avoid unnescessary environment instruction 269`] = `5`; + +exports[`Avoid unnescessary environment instruction 270`] = `6`; + +exports[`Avoid unnescessary environment instruction 271`] = `5`; + +exports[`Avoid unnescessary environment instruction 272`] = `4`; + +exports[`Avoid unnescessary environment instruction 273`] = `4`; + +exports[`Avoid unnescessary environment instruction 274`] = `4`; + +exports[`Avoid unnescessary environment instruction 275`] = `5`; + +exports[`Avoid unnescessary environment instruction 276`] = `6`; + +exports[`Avoid unnescessary environment instruction 277`] = `5`; + +exports[`Avoid unnescessary environment instruction 278`] = `4`; + +exports[`Avoid unnescessary environment instruction 279`] = `4`; + +exports[`Avoid unnescessary environment instruction 280`] = `4`; + +exports[`Avoid unnescessary environment instruction 281`] = `6`; + +exports[`Avoid unnescessary environment instruction 282`] = `6`; + +exports[`Avoid unnescessary environment instruction 283`] = `6`; + +exports[`Avoid unnescessary environment instruction 284`] = `5`; + +exports[`Avoid unnescessary environment instruction 285`] = `5`; + +exports[`Avoid unnescessary environment instruction 286`] = `7`; + +exports[`Avoid unnescessary environment instruction 287`] = `6`; + +exports[`Avoid unnescessary environment instruction 288`] = `7`; + +exports[`Avoid unnescessary environment instruction 289`] = `6`; + +exports[`Avoid unnescessary environment instruction 290`] = `5`; + +exports[`Avoid unnescessary environment instruction 291`] = `5`; + +exports[`Avoid unnescessary environment instruction 292`] = `7`; + +exports[`Avoid unnescessary environment instruction 293`] = `7`; + +exports[`Avoid unnescessary environment instruction 294`] = `8`; + +exports[`Avoid unnescessary environment instruction 295`] = `9`; + +exports[`Avoid unnescessary environment instruction 296`] = `12`; + +exports[`Avoid unnescessary environment instruction 297`] = `11`; + +exports[`Avoid unnescessary environment instruction 298`] = `10`; + +exports[`Avoid unnescessary environment instruction 299`] = `9`; + +exports[`Avoid unnescessary environment instruction 300`] = `9`; + +exports[`Avoid unnescessary environment instruction 301`] = `10`; + +exports[`Avoid unnescessary environment instruction 302`] = `9`; + +exports[`Avoid unnescessary environment instruction 303`] = `8`; + +exports[`Avoid unnescessary environment instruction 304`] = `8`; + +exports[`Avoid unnescessary environment instruction 305`] = `8`; + +exports[`Avoid unnescessary environment instruction 306`] = `7`; + +exports[`Avoid unnescessary environment instruction 307`] = `7`; + +exports[`Avoid unnescessary environment instruction 308`] = `8`; + +exports[`Avoid unnescessary environment instruction 309`] = `8`; + +exports[`Avoid unnescessary environment instruction 310`] = `7`; + +exports[`Avoid unnescessary environment instruction 311`] = `7`; + +exports[`Avoid unnescessary environment instruction 312`] = `7`; + +exports[`Avoid unnescessary environment instruction 313`] = `6`; + +exports[`Avoid unnescessary environment instruction 314`] = `7`; + +exports[`Avoid unnescessary environment instruction 315`] = `6`; + +exports[`Avoid unnescessary environment instruction 316`] = `5`; + +exports[`Avoid unnescessary environment instruction 317`] = `5`; + +exports[`Avoid unnescessary environment instruction 318`] = `4`; + +exports[`Avoid unnescessary environment instruction 319`] = `4`; + +exports[`Avoid unnescessary environment instruction 320`] = `5`; + +exports[`Avoid unnescessary environment instruction 321`] = `5`; + +exports[`Avoid unnescessary environment instruction 322`] = `6`; + +exports[`Avoid unnescessary environment instruction 323`] = `6`; + +exports[`Avoid unnescessary environment instruction 324`] = `5`; + +exports[`Avoid unnescessary environment instruction 325`] = `5`; + +exports[`Avoid unnescessary environment instruction 326`] = `5`; + +exports[`Avoid unnescessary environment instruction 327`] = `4`; + +exports[`Avoid unnescessary environment instruction 328`] = `4`; + +exports[`Avoid unnescessary environment instruction 329`] = `4`; + +exports[`Avoid unnescessary environment instruction 330`] = `3`; + +exports[`Avoid unnescessary environment instruction 331`] = `3`; + +exports[`Avoid unnescessary environment instruction 332`] = `4`; + +exports[`Avoid unnescessary environment instruction 333`] = `4`; + +exports[`Avoid unnescessary environment instruction 334`] = `3`; + +exports[`Avoid unnescessary environment instruction 335`] = `3`; + +exports[`Avoid unnescessary environment instruction 336`] = `3`; + +exports[`Avoid unnescessary environment instruction 337`] = `2`; + +exports[`Avoid unnescessary environment instruction 338`] = `2`; + +exports[`Avoid unnescessary environment instruction 339`] = `2`; + +exports[`Avoid unnescessary environment instruction 340`] = `1`; + +exports[`Avoid unnescessary environment instruction 341`] = `1`; + +exports[`Avoid unnescessary environment instruction 342`] = `1`; + +exports[`Avoid unnescessary environment instruction 343`] = `4`; + +exports[`Avoid unnescessary environment instruction 344`] = `4`; + +exports[`Avoid unnescessary environment instruction 345`] = `4`; + +exports[`Avoid unnescessary environment instruction 346`] = `5`; + +exports[`Avoid unnescessary environment instruction 347`] = `6`; + +exports[`Avoid unnescessary environment instruction 348`] = `5`; + +exports[`Avoid unnescessary environment instruction 349`] = `4`; + +exports[`Avoid unnescessary environment instruction 350`] = `4`; + +exports[`Avoid unnescessary environment instruction 351`] = `4`; + +exports[`Avoid unnescessary environment instruction 352`] = `5`; + +exports[`Avoid unnescessary environment instruction 353`] = `6`; + +exports[`Avoid unnescessary environment instruction 354`] = `5`; + +exports[`Avoid unnescessary environment instruction 355`] = `4`; + +exports[`Avoid unnescessary environment instruction 356`] = `4`; + +exports[`Avoid unnescessary environment instruction 357`] = `4`; + +exports[`Avoid unnescessary environment instruction 358`] = `6`; + +exports[`Avoid unnescessary environment instruction 359`] = `6`; + +exports[`Avoid unnescessary environment instruction 360`] = `6`; + +exports[`Avoid unnescessary environment instruction 361`] = `5`; + +exports[`Avoid unnescessary environment instruction 362`] = `5`; + +exports[`Avoid unnescessary environment instruction 363`] = `7`; + +exports[`Avoid unnescessary environment instruction 364`] = `6`; + +exports[`Avoid unnescessary environment instruction 365`] = `7`; + +exports[`Avoid unnescessary environment instruction 366`] = `6`; + +exports[`Avoid unnescessary environment instruction 367`] = `5`; + +exports[`Avoid unnescessary environment instruction 368`] = `5`; + +exports[`Avoid unnescessary environment instruction 369`] = `7`; + +exports[`Avoid unnescessary environment instruction 370`] = `7`; + +exports[`Avoid unnescessary environment instruction 371`] = `8`; + +exports[`Avoid unnescessary environment instruction 372`] = `9`; + +exports[`Avoid unnescessary environment instruction 373`] = `12`; + +exports[`Avoid unnescessary environment instruction 374`] = `11`; + +exports[`Avoid unnescessary environment instruction 375`] = `10`; + +exports[`Avoid unnescessary environment instruction 376`] = `9`; + +exports[`Avoid unnescessary environment instruction 377`] = `9`; + +exports[`Avoid unnescessary environment instruction 378`] = `10`; + +exports[`Avoid unnescessary environment instruction 379`] = `9`; + +exports[`Avoid unnescessary environment instruction 380`] = `8`; + +exports[`Avoid unnescessary environment instruction 381`] = `8`; + +exports[`Avoid unnescessary environment instruction 382`] = `8`; + +exports[`Avoid unnescessary environment instruction 383`] = `7`; + +exports[`Avoid unnescessary environment instruction 384`] = `7`; + +exports[`Avoid unnescessary environment instruction 385`] = `8`; + +exports[`Avoid unnescessary environment instruction 386`] = `8`; + +exports[`Avoid unnescessary environment instruction 387`] = `7`; + +exports[`Avoid unnescessary environment instruction 388`] = `7`; + +exports[`Avoid unnescessary environment instruction 389`] = `7`; + +exports[`Avoid unnescessary environment instruction 390`] = `6`; + +exports[`Avoid unnescessary environment instruction 391`] = `7`; + +exports[`Avoid unnescessary environment instruction 392`] = `6`; + +exports[`Avoid unnescessary environment instruction 393`] = `5`; + +exports[`Avoid unnescessary environment instruction 394`] = `5`; + +exports[`Avoid unnescessary environment instruction 395`] = `7`; + +exports[`Avoid unnescessary environment instruction 396`] = `7`; + +exports[`Avoid unnescessary environment instruction 397`] = `8`; + +exports[`Avoid unnescessary environment instruction 398`] = `9`; + +exports[`Avoid unnescessary environment instruction 399`] = `12`; + +exports[`Avoid unnescessary environment instruction 400`] = `11`; + +exports[`Avoid unnescessary environment instruction 401`] = `10`; + +exports[`Avoid unnescessary environment instruction 402`] = `9`; + +exports[`Avoid unnescessary environment instruction 403`] = `9`; + +exports[`Avoid unnescessary environment instruction 404`] = `10`; + +exports[`Avoid unnescessary environment instruction 405`] = `9`; + +exports[`Avoid unnescessary environment instruction 406`] = `8`; + +exports[`Avoid unnescessary environment instruction 407`] = `8`; + +exports[`Avoid unnescessary environment instruction 408`] = `8`; + +exports[`Avoid unnescessary environment instruction 409`] = `7`; + +exports[`Avoid unnescessary environment instruction 410`] = `7`; + +exports[`Avoid unnescessary environment instruction 411`] = `8`; + +exports[`Avoid unnescessary environment instruction 412`] = `8`; + +exports[`Avoid unnescessary environment instruction 413`] = `7`; + +exports[`Avoid unnescessary environment instruction 414`] = `7`; + +exports[`Avoid unnescessary environment instruction 415`] = `7`; + +exports[`Avoid unnescessary environment instruction 416`] = `6`; + +exports[`Avoid unnescessary environment instruction 417`] = `7`; + +exports[`Avoid unnescessary environment instruction 418`] = `6`; + +exports[`Avoid unnescessary environment instruction 419`] = `5`; + +exports[`Avoid unnescessary environment instruction 420`] = `5`; + +exports[`Avoid unnescessary environment instruction 421`] = `4`; + +exports[`Avoid unnescessary environment instruction 422`] = `4`; + +exports[`Avoid unnescessary environment instruction 423`] = `5`; + +exports[`Avoid unnescessary environment instruction 424`] = `5`; + +exports[`Avoid unnescessary environment instruction 425`] = `6`; + +exports[`Avoid unnescessary environment instruction 426`] = `6`; + +exports[`Avoid unnescessary environment instruction 427`] = `5`; + +exports[`Avoid unnescessary environment instruction 428`] = `5`; + +exports[`Avoid unnescessary environment instruction 429`] = `5`; + +exports[`Avoid unnescessary environment instruction 430`] = `4`; + +exports[`Avoid unnescessary environment instruction 431`] = `4`; + +exports[`Avoid unnescessary environment instruction 432`] = `4`; + +exports[`Avoid unnescessary environment instruction 433`] = `3`; + +exports[`Avoid unnescessary environment instruction 434`] = `3`; + +exports[`Avoid unnescessary environment instruction 435`] = `4`; + +exports[`Avoid unnescessary environment instruction 436`] = `4`; + +exports[`Avoid unnescessary environment instruction 437`] = `3`; + +exports[`Avoid unnescessary environment instruction 438`] = `3`; + +exports[`Avoid unnescessary environment instruction 439`] = `3`; + +exports[`Avoid unnescessary environment instruction 440`] = `2`; + +exports[`Avoid unnescessary environment instruction 441`] = `2`; + +exports[`Avoid unnescessary environment instruction 442`] = `2`; + +exports[`Avoid unnescessary environment instruction 443`] = `1`; + +exports[`Avoid unnescessary environment instruction 444`] = `1`; + +exports[`Avoid unnescessary environment instruction 445`] = `1`; + +exports[`Avoid unnescessary environment instruction 446`] = `4`; + +exports[`Avoid unnescessary environment instruction 447`] = `4`; + +exports[`Avoid unnescessary environment instruction 448`] = `4`; + +exports[`Avoid unnescessary environment instruction 449`] = `5`; + +exports[`Avoid unnescessary environment instruction 450`] = `6`; + +exports[`Avoid unnescessary environment instruction 451`] = `5`; + +exports[`Avoid unnescessary environment instruction 452`] = `4`; + +exports[`Avoid unnescessary environment instruction 453`] = `4`; + +exports[`Avoid unnescessary environment instruction 454`] = `4`; + +exports[`Avoid unnescessary environment instruction 455`] = `5`; + +exports[`Avoid unnescessary environment instruction 456`] = `6`; + +exports[`Avoid unnescessary environment instruction 457`] = `5`; + +exports[`Avoid unnescessary environment instruction 458`] = `4`; + +exports[`Avoid unnescessary environment instruction 459`] = `4`; + +exports[`Avoid unnescessary environment instruction 460`] = `4`; + +exports[`Avoid unnescessary environment instruction 461`] = `6`; + +exports[`Avoid unnescessary environment instruction 462`] = `6`; + +exports[`Avoid unnescessary environment instruction 463`] = `6`; + +exports[`Avoid unnescessary environment instruction 464`] = `5`; + +exports[`Avoid unnescessary environment instruction 465`] = `5`; + +exports[`Avoid unnescessary environment instruction 466`] = `7`; + +exports[`Avoid unnescessary environment instruction 467`] = `6`; + +exports[`Avoid unnescessary environment instruction 468`] = `7`; + +exports[`Avoid unnescessary environment instruction 469`] = `6`; + +exports[`Avoid unnescessary environment instruction 470`] = `5`; + +exports[`Avoid unnescessary environment instruction 471`] = `5`; + +exports[`Avoid unnescessary environment instruction 472`] = `7`; + +exports[`Avoid unnescessary environment instruction 473`] = `7`; + +exports[`Avoid unnescessary environment instruction 474`] = `8`; + +exports[`Avoid unnescessary environment instruction 475`] = `9`; + +exports[`Avoid unnescessary environment instruction 476`] = `12`; + +exports[`Avoid unnescessary environment instruction 477`] = `11`; + +exports[`Avoid unnescessary environment instruction 478`] = `10`; + +exports[`Avoid unnescessary environment instruction 479`] = `9`; + +exports[`Avoid unnescessary environment instruction 480`] = `9`; + +exports[`Avoid unnescessary environment instruction 481`] = `10`; + +exports[`Avoid unnescessary environment instruction 482`] = `9`; + +exports[`Avoid unnescessary environment instruction 483`] = `8`; + +exports[`Avoid unnescessary environment instruction 484`] = `8`; + +exports[`Avoid unnescessary environment instruction 485`] = `8`; + +exports[`Avoid unnescessary environment instruction 486`] = `7`; + +exports[`Avoid unnescessary environment instruction 487`] = `7`; + +exports[`Avoid unnescessary environment instruction 488`] = `8`; + +exports[`Avoid unnescessary environment instruction 489`] = `8`; + +exports[`Avoid unnescessary environment instruction 490`] = `7`; + +exports[`Avoid unnescessary environment instruction 491`] = `7`; + +exports[`Avoid unnescessary environment instruction 492`] = `7`; + +exports[`Avoid unnescessary environment instruction 493`] = `6`; + +exports[`Avoid unnescessary environment instruction 494`] = `7`; + +exports[`Avoid unnescessary environment instruction 495`] = `6`; + +exports[`Avoid unnescessary environment instruction 496`] = `5`; + +exports[`Avoid unnescessary environment instruction 497`] = `5`; + +exports[`Avoid unnescessary environment instruction 498`] = `7`; + +exports[`Avoid unnescessary environment instruction 499`] = `7`; + +exports[`Avoid unnescessary environment instruction 500`] = `8`; + +exports[`Avoid unnescessary environment instruction 501`] = `9`; + +exports[`Avoid unnescessary environment instruction 502`] = `12`; + +exports[`Avoid unnescessary environment instruction 503`] = `11`; + +exports[`Avoid unnescessary environment instruction 504`] = `10`; + +exports[`Avoid unnescessary environment instruction 505`] = `9`; + +exports[`Avoid unnescessary environment instruction 506`] = `9`; + +exports[`Avoid unnescessary environment instruction 507`] = `10`; + +exports[`Avoid unnescessary environment instruction 508`] = `9`; + +exports[`Avoid unnescessary environment instruction 509`] = `8`; + +exports[`Avoid unnescessary environment instruction 510`] = `8`; + +exports[`Avoid unnescessary environment instruction 511`] = `8`; + +exports[`Avoid unnescessary environment instruction 512`] = `7`; + +exports[`Avoid unnescessary environment instruction 513`] = `7`; + +exports[`Avoid unnescessary environment instruction 514`] = `8`; + +exports[`Avoid unnescessary environment instruction 515`] = `8`; + +exports[`Avoid unnescessary environment instruction 516`] = `7`; + +exports[`Avoid unnescessary environment instruction 517`] = `7`; + +exports[`Avoid unnescessary environment instruction 518`] = `7`; + +exports[`Avoid unnescessary environment instruction 519`] = `6`; + +exports[`Avoid unnescessary environment instruction 520`] = `7`; + +exports[`Avoid unnescessary environment instruction 521`] = `6`; + +exports[`Avoid unnescessary environment instruction 522`] = `5`; + +exports[`Avoid unnescessary environment instruction 523`] = `5`; + +exports[`Avoid unnescessary environment instruction 524`] = `7`; + +exports[`Avoid unnescessary environment instruction 525`] = `7`; + +exports[`Avoid unnescessary environment instruction 526`] = `8`; + +exports[`Avoid unnescessary environment instruction 527`] = `9`; + +exports[`Avoid unnescessary environment instruction 528`] = `12`; + +exports[`Avoid unnescessary environment instruction 529`] = `11`; + +exports[`Avoid unnescessary environment instruction 530`] = `10`; + +exports[`Avoid unnescessary environment instruction 531`] = `9`; + +exports[`Avoid unnescessary environment instruction 532`] = `9`; + +exports[`Avoid unnescessary environment instruction 533`] = `10`; + +exports[`Avoid unnescessary environment instruction 534`] = `9`; + +exports[`Avoid unnescessary environment instruction 535`] = `8`; + +exports[`Avoid unnescessary environment instruction 536`] = `8`; + +exports[`Avoid unnescessary environment instruction 537`] = `8`; + +exports[`Avoid unnescessary environment instruction 538`] = `7`; + +exports[`Avoid unnescessary environment instruction 539`] = `7`; + +exports[`Avoid unnescessary environment instruction 540`] = `8`; + +exports[`Avoid unnescessary environment instruction 541`] = `8`; + +exports[`Avoid unnescessary environment instruction 542`] = `7`; + +exports[`Avoid unnescessary environment instruction 543`] = `7`; + +exports[`Avoid unnescessary environment instruction 544`] = `7`; + +exports[`Avoid unnescessary environment instruction 545`] = `6`; + +exports[`Avoid unnescessary environment instruction 546`] = `7`; + +exports[`Avoid unnescessary environment instruction 547`] = `6`; + +exports[`Avoid unnescessary environment instruction 548`] = `5`; + +exports[`Avoid unnescessary environment instruction 549`] = `5`; + +exports[`Avoid unnescessary environment instruction 550`] = `4`; + +exports[`Avoid unnescessary environment instruction 551`] = `4`; + +exports[`Avoid unnescessary environment instruction 552`] = `5`; + +exports[`Avoid unnescessary environment instruction 553`] = `5`; + +exports[`Avoid unnescessary environment instruction 554`] = `6`; + +exports[`Avoid unnescessary environment instruction 555`] = `6`; + +exports[`Avoid unnescessary environment instruction 556`] = `5`; + +exports[`Avoid unnescessary environment instruction 557`] = `5`; + +exports[`Avoid unnescessary environment instruction 558`] = `5`; + +exports[`Avoid unnescessary environment instruction 559`] = `4`; + +exports[`Avoid unnescessary environment instruction 560`] = `4`; + +exports[`Avoid unnescessary environment instruction 561`] = `4`; + +exports[`Avoid unnescessary environment instruction 562`] = `3`; + +exports[`Avoid unnescessary environment instruction 563`] = `3`; + +exports[`Avoid unnescessary environment instruction 564`] = `4`; + +exports[`Avoid unnescessary environment instruction 565`] = `4`; + +exports[`Avoid unnescessary environment instruction 566`] = `3`; + +exports[`Avoid unnescessary environment instruction 567`] = `3`; + +exports[`Avoid unnescessary environment instruction 568`] = `3`; + +exports[`Avoid unnescessary environment instruction 569`] = `2`; + +exports[`Avoid unnescessary environment instruction 570`] = `2`; + +exports[`Avoid unnescessary environment instruction 571`] = `2`; + +exports[`Avoid unnescessary environment instruction 572`] = `1`; + +exports[`Avoid unnescessary environment instruction 573`] = `1`; + +exports[`Avoid unnescessary environment instruction 574`] = `1`; + +exports[`Avoid unnescessary environment instruction 575`] = `4`; + +exports[`Avoid unnescessary environment instruction 576`] = `4`; + +exports[`Avoid unnescessary environment instruction 577`] = `4`; + +exports[`Avoid unnescessary environment instruction 578`] = `5`; + +exports[`Avoid unnescessary environment instruction 579`] = `6`; + +exports[`Avoid unnescessary environment instruction 580`] = `5`; + +exports[`Avoid unnescessary environment instruction 581`] = `4`; + +exports[`Avoid unnescessary environment instruction 582`] = `4`; + +exports[`Avoid unnescessary environment instruction 583`] = `4`; + +exports[`Avoid unnescessary environment instruction 584`] = `5`; + +exports[`Avoid unnescessary environment instruction 585`] = `6`; + +exports[`Avoid unnescessary environment instruction 586`] = `5`; + +exports[`Avoid unnescessary environment instruction 587`] = `4`; + +exports[`Avoid unnescessary environment instruction 588`] = `4`; + +exports[`Avoid unnescessary environment instruction 589`] = `4`; + +exports[`Avoid unnescessary environment instruction 590`] = `6`; + +exports[`Avoid unnescessary environment instruction 591`] = `6`; + +exports[`Avoid unnescessary environment instruction 592`] = `6`; + +exports[`Avoid unnescessary environment instruction 593`] = `5`; + +exports[`Avoid unnescessary environment instruction 594`] = `5`; + +exports[`Avoid unnescessary environment instruction 595`] = `7`; + +exports[`Avoid unnescessary environment instruction 596`] = `6`; + +exports[`Avoid unnescessary environment instruction 597`] = `7`; + +exports[`Avoid unnescessary environment instruction 598`] = `6`; + +exports[`Avoid unnescessary environment instruction 599`] = `5`; + +exports[`Avoid unnescessary environment instruction 600`] = `5`; + +exports[`Avoid unnescessary environment instruction 601`] = `7`; + +exports[`Avoid unnescessary environment instruction 602`] = `7`; + +exports[`Avoid unnescessary environment instruction 603`] = `8`; + +exports[`Avoid unnescessary environment instruction 604`] = `9`; + +exports[`Avoid unnescessary environment instruction 605`] = `12`; + +exports[`Avoid unnescessary environment instruction 606`] = `11`; + +exports[`Avoid unnescessary environment instruction 607`] = `10`; + +exports[`Avoid unnescessary environment instruction 608`] = `9`; + +exports[`Avoid unnescessary environment instruction 609`] = `9`; + +exports[`Avoid unnescessary environment instruction 610`] = `10`; + +exports[`Avoid unnescessary environment instruction 611`] = `9`; + +exports[`Avoid unnescessary environment instruction 612`] = `8`; + +exports[`Avoid unnescessary environment instruction 613`] = `8`; + +exports[`Avoid unnescessary environment instruction 614`] = `8`; + +exports[`Avoid unnescessary environment instruction 615`] = `7`; + +exports[`Avoid unnescessary environment instruction 616`] = `7`; + +exports[`Avoid unnescessary environment instruction 617`] = `8`; + +exports[`Avoid unnescessary environment instruction 618`] = `8`; + +exports[`Avoid unnescessary environment instruction 619`] = `7`; + +exports[`Avoid unnescessary environment instruction 620`] = `7`; + +exports[`Avoid unnescessary environment instruction 621`] = `7`; + +exports[`Avoid unnescessary environment instruction 622`] = `6`; + +exports[`Avoid unnescessary environment instruction 623`] = `7`; + +exports[`Avoid unnescessary environment instruction 624`] = `6`; + +exports[`Avoid unnescessary environment instruction 625`] = `5`; + +exports[`Avoid unnescessary environment instruction 626`] = `5`; + +exports[`Avoid unnescessary environment instruction 627`] = `7`; + +exports[`Avoid unnescessary environment instruction 628`] = `7`; + +exports[`Avoid unnescessary environment instruction 629`] = `8`; + +exports[`Avoid unnescessary environment instruction 630`] = `9`; + +exports[`Avoid unnescessary environment instruction 631`] = `12`; + +exports[`Avoid unnescessary environment instruction 632`] = `11`; + +exports[`Avoid unnescessary environment instruction 633`] = `10`; + +exports[`Avoid unnescessary environment instruction 634`] = `9`; + +exports[`Avoid unnescessary environment instruction 635`] = `9`; + +exports[`Avoid unnescessary environment instruction 636`] = `10`; + +exports[`Avoid unnescessary environment instruction 637`] = `9`; + +exports[`Avoid unnescessary environment instruction 638`] = `8`; + +exports[`Avoid unnescessary environment instruction 639`] = `8`; + +exports[`Avoid unnescessary environment instruction 640`] = `8`; + +exports[`Avoid unnescessary environment instruction 641`] = `7`; + +exports[`Avoid unnescessary environment instruction 642`] = `7`; + +exports[`Avoid unnescessary environment instruction 643`] = `8`; + +exports[`Avoid unnescessary environment instruction 644`] = `8`; + +exports[`Avoid unnescessary environment instruction 645`] = `7`; + +exports[`Avoid unnescessary environment instruction 646`] = `7`; + +exports[`Avoid unnescessary environment instruction 647`] = `7`; + +exports[`Avoid unnescessary environment instruction 648`] = `6`; + +exports[`Avoid unnescessary environment instruction 649`] = `7`; + +exports[`Avoid unnescessary environment instruction 650`] = `6`; + +exports[`Avoid unnescessary environment instruction 651`] = `5`; + +exports[`Avoid unnescessary environment instruction 652`] = `5`; + +exports[`Avoid unnescessary environment instruction 653`] = `7`; + +exports[`Avoid unnescessary environment instruction 654`] = `7`; + +exports[`Avoid unnescessary environment instruction 655`] = `8`; + +exports[`Avoid unnescessary environment instruction 656`] = `9`; + +exports[`Avoid unnescessary environment instruction 657`] = `12`; + +exports[`Avoid unnescessary environment instruction 658`] = `11`; + +exports[`Avoid unnescessary environment instruction 659`] = `10`; + +exports[`Avoid unnescessary environment instruction 660`] = `9`; + +exports[`Avoid unnescessary environment instruction 661`] = `9`; + +exports[`Avoid unnescessary environment instruction 662`] = `10`; + +exports[`Avoid unnescessary environment instruction 663`] = `9`; + +exports[`Avoid unnescessary environment instruction 664`] = `8`; + +exports[`Avoid unnescessary environment instruction 665`] = `8`; + +exports[`Avoid unnescessary environment instruction 666`] = `8`; + +exports[`Avoid unnescessary environment instruction 667`] = `7`; + +exports[`Avoid unnescessary environment instruction 668`] = `7`; + +exports[`Avoid unnescessary environment instruction 669`] = `8`; + +exports[`Avoid unnescessary environment instruction 670`] = `8`; + +exports[`Avoid unnescessary environment instruction 671`] = `7`; + +exports[`Avoid unnescessary environment instruction 672`] = `7`; + +exports[`Avoid unnescessary environment instruction 673`] = `7`; + +exports[`Avoid unnescessary environment instruction 674`] = `6`; + +exports[`Avoid unnescessary environment instruction 675`] = `7`; + +exports[`Avoid unnescessary environment instruction 676`] = `6`; + +exports[`Avoid unnescessary environment instruction 677`] = `5`; + +exports[`Avoid unnescessary environment instruction 678`] = `5`; + +exports[`Avoid unnescessary environment instruction 679`] = `7`; + +exports[`Avoid unnescessary environment instruction 680`] = `7`; + +exports[`Avoid unnescessary environment instruction 681`] = `8`; + +exports[`Avoid unnescessary environment instruction 682`] = `9`; + +exports[`Avoid unnescessary environment instruction 683`] = `12`; + +exports[`Avoid unnescessary environment instruction 684`] = `11`; + +exports[`Avoid unnescessary environment instruction 685`] = `10`; + +exports[`Avoid unnescessary environment instruction 686`] = `9`; + +exports[`Avoid unnescessary environment instruction 687`] = `9`; + +exports[`Avoid unnescessary environment instruction 688`] = `10`; + +exports[`Avoid unnescessary environment instruction 689`] = `9`; + +exports[`Avoid unnescessary environment instruction 690`] = `8`; + +exports[`Avoid unnescessary environment instruction 691`] = `8`; + +exports[`Avoid unnescessary environment instruction 692`] = `8`; + +exports[`Avoid unnescessary environment instruction 693`] = `7`; + +exports[`Avoid unnescessary environment instruction 694`] = `7`; + +exports[`Avoid unnescessary environment instruction 695`] = `8`; + +exports[`Avoid unnescessary environment instruction 696`] = `8`; + +exports[`Avoid unnescessary environment instruction 697`] = `7`; + +exports[`Avoid unnescessary environment instruction 698`] = `7`; + +exports[`Avoid unnescessary environment instruction 699`] = `7`; + +exports[`Avoid unnescessary environment instruction 700`] = `6`; + +exports[`Avoid unnescessary environment instruction 701`] = `7`; + +exports[`Avoid unnescessary environment instruction 702`] = `6`; + +exports[`Avoid unnescessary environment instruction 703`] = `5`; + +exports[`Avoid unnescessary environment instruction 704`] = `5`; + +exports[`Avoid unnescessary environment instruction 705`] = `4`; + +exports[`Avoid unnescessary environment instruction 706`] = `4`; + +exports[`Avoid unnescessary environment instruction 707`] = `5`; + +exports[`Avoid unnescessary environment instruction 708`] = `5`; + +exports[`Avoid unnescessary environment instruction 709`] = `6`; + +exports[`Avoid unnescessary environment instruction 710`] = `6`; + +exports[`Avoid unnescessary environment instruction 711`] = `5`; + +exports[`Avoid unnescessary environment instruction 712`] = `5`; + +exports[`Avoid unnescessary environment instruction 713`] = `5`; + +exports[`Avoid unnescessary environment instruction 714`] = `4`; + +exports[`Avoid unnescessary environment instruction 715`] = `4`; + +exports[`Avoid unnescessary environment instruction 716`] = `4`; + +exports[`Avoid unnescessary environment instruction 717`] = `3`; + +exports[`Avoid unnescessary environment instruction 718`] = `3`; + +exports[`Avoid unnescessary environment instruction 719`] = `4`; + +exports[`Avoid unnescessary environment instruction 720`] = `4`; + +exports[`Avoid unnescessary environment instruction 721`] = `3`; + +exports[`Avoid unnescessary environment instruction 722`] = `3`; + +exports[`Avoid unnescessary environment instruction 723`] = `3`; + +exports[`Avoid unnescessary environment instruction 724`] = `2`; + +exports[`Avoid unnescessary environment instruction 725`] = `2`; + +exports[`Avoid unnescessary environment instruction 726`] = `2`; + +exports[`Avoid unnescessary environment instruction 727`] = `1`; + +exports[`Avoid unnescessary environment instruction 728`] = `1`; + +exports[`Avoid unnescessary environment instruction 729`] = `1`; + +exports[`Avoid unnescessary environment instruction 730`] = `4`; + +exports[`Avoid unnescessary environment instruction 731`] = `4`; + +exports[`Avoid unnescessary environment instruction 732`] = `4`; + +exports[`Avoid unnescessary environment instruction 733`] = `5`; + +exports[`Avoid unnescessary environment instruction 734`] = `6`; + +exports[`Avoid unnescessary environment instruction 735`] = `5`; + +exports[`Avoid unnescessary environment instruction 736`] = `4`; + +exports[`Avoid unnescessary environment instruction 737`] = `4`; + +exports[`Avoid unnescessary environment instruction 738`] = `4`; + +exports[`Avoid unnescessary environment instruction 739`] = `5`; + +exports[`Avoid unnescessary environment instruction 740`] = `6`; + +exports[`Avoid unnescessary environment instruction 741`] = `5`; + +exports[`Avoid unnescessary environment instruction 742`] = `4`; + +exports[`Avoid unnescessary environment instruction 743`] = `4`; + +exports[`Avoid unnescessary environment instruction 744`] = `4`; + +exports[`Avoid unnescessary environment instruction 745`] = `6`; + +exports[`Avoid unnescessary environment instruction 746`] = `6`; + +exports[`Avoid unnescessary environment instruction 747`] = `6`; + +exports[`Avoid unnescessary environment instruction 748`] = `5`; + +exports[`Avoid unnescessary environment instruction 749`] = `5`; + +exports[`Avoid unnescessary environment instruction 750`] = `7`; + +exports[`Avoid unnescessary environment instruction 751`] = `6`; + +exports[`Avoid unnescessary environment instruction 752`] = `7`; + +exports[`Avoid unnescessary environment instruction 753`] = `6`; + +exports[`Avoid unnescessary environment instruction 754`] = `5`; + +exports[`Avoid unnescessary environment instruction 755`] = `5`; + +exports[`Avoid unnescessary environment instruction 756`] = `7`; + +exports[`Avoid unnescessary environment instruction 757`] = `7`; + +exports[`Avoid unnescessary environment instruction 758`] = `8`; + +exports[`Avoid unnescessary environment instruction 759`] = `9`; + +exports[`Avoid unnescessary environment instruction 760`] = `12`; + +exports[`Avoid unnescessary environment instruction 761`] = `11`; + +exports[`Avoid unnescessary environment instruction 762`] = `10`; + +exports[`Avoid unnescessary environment instruction 763`] = `9`; + +exports[`Avoid unnescessary environment instruction 764`] = `9`; + +exports[`Avoid unnescessary environment instruction 765`] = `10`; + +exports[`Avoid unnescessary environment instruction 766`] = `9`; + +exports[`Avoid unnescessary environment instruction 767`] = `8`; + +exports[`Avoid unnescessary environment instruction 768`] = `8`; + +exports[`Avoid unnescessary environment instruction 769`] = `8`; + +exports[`Avoid unnescessary environment instruction 770`] = `7`; + +exports[`Avoid unnescessary environment instruction 771`] = `7`; + +exports[`Avoid unnescessary environment instruction 772`] = `8`; + +exports[`Avoid unnescessary environment instruction 773`] = `8`; + +exports[`Avoid unnescessary environment instruction 774`] = `7`; + +exports[`Avoid unnescessary environment instruction 775`] = `7`; + +exports[`Avoid unnescessary environment instruction 776`] = `7`; + +exports[`Avoid unnescessary environment instruction 777`] = `6`; + +exports[`Avoid unnescessary environment instruction 778`] = `7`; + +exports[`Avoid unnescessary environment instruction 779`] = `6`; + +exports[`Avoid unnescessary environment instruction 780`] = `5`; + +exports[`Avoid unnescessary environment instruction 781`] = `5`; + +exports[`Avoid unnescessary environment instruction 782`] = `7`; + +exports[`Avoid unnescessary environment instruction 783`] = `7`; + +exports[`Avoid unnescessary environment instruction 784`] = `8`; + +exports[`Avoid unnescessary environment instruction 785`] = `9`; + +exports[`Avoid unnescessary environment instruction 786`] = `12`; + +exports[`Avoid unnescessary environment instruction 787`] = `11`; + +exports[`Avoid unnescessary environment instruction 788`] = `10`; + +exports[`Avoid unnescessary environment instruction 789`] = `9`; + +exports[`Avoid unnescessary environment instruction 790`] = `9`; + +exports[`Avoid unnescessary environment instruction 791`] = `10`; + +exports[`Avoid unnescessary environment instruction 792`] = `9`; + +exports[`Avoid unnescessary environment instruction 793`] = `8`; + +exports[`Avoid unnescessary environment instruction 794`] = `8`; + +exports[`Avoid unnescessary environment instruction 795`] = `8`; + +exports[`Avoid unnescessary environment instruction 796`] = `7`; + +exports[`Avoid unnescessary environment instruction 797`] = `7`; + +exports[`Avoid unnescessary environment instruction 798`] = `8`; + +exports[`Avoid unnescessary environment instruction 799`] = `8`; + +exports[`Avoid unnescessary environment instruction 800`] = `7`; + +exports[`Avoid unnescessary environment instruction 801`] = `7`; + +exports[`Avoid unnescessary environment instruction 802`] = `7`; + +exports[`Avoid unnescessary environment instruction 803`] = `6`; + +exports[`Avoid unnescessary environment instruction 804`] = `7`; + +exports[`Avoid unnescessary environment instruction 805`] = `6`; + +exports[`Avoid unnescessary environment instruction 806`] = `5`; + +exports[`Avoid unnescessary environment instruction 807`] = `5`; + +exports[`Avoid unnescessary environment instruction 808`] = `7`; + +exports[`Avoid unnescessary environment instruction 809`] = `7`; + +exports[`Avoid unnescessary environment instruction 810`] = `8`; + +exports[`Avoid unnescessary environment instruction 811`] = `9`; + +exports[`Avoid unnescessary environment instruction 812`] = `12`; + +exports[`Avoid unnescessary environment instruction 813`] = `11`; + +exports[`Avoid unnescessary environment instruction 814`] = `10`; + +exports[`Avoid unnescessary environment instruction 815`] = `9`; + +exports[`Avoid unnescessary environment instruction 816`] = `9`; + +exports[`Avoid unnescessary environment instruction 817`] = `10`; + +exports[`Avoid unnescessary environment instruction 818`] = `9`; + +exports[`Avoid unnescessary environment instruction 819`] = `8`; + +exports[`Avoid unnescessary environment instruction 820`] = `8`; + +exports[`Avoid unnescessary environment instruction 821`] = `8`; + +exports[`Avoid unnescessary environment instruction 822`] = `7`; + +exports[`Avoid unnescessary environment instruction 823`] = `7`; + +exports[`Avoid unnescessary environment instruction 824`] = `8`; + +exports[`Avoid unnescessary environment instruction 825`] = `8`; + +exports[`Avoid unnescessary environment instruction 826`] = `7`; + +exports[`Avoid unnescessary environment instruction 827`] = `7`; + +exports[`Avoid unnescessary environment instruction 828`] = `7`; + +exports[`Avoid unnescessary environment instruction 829`] = `6`; + +exports[`Avoid unnescessary environment instruction 830`] = `7`; + +exports[`Avoid unnescessary environment instruction 831`] = `6`; + +exports[`Avoid unnescessary environment instruction 832`] = `5`; + +exports[`Avoid unnescessary environment instruction 833`] = `5`; + +exports[`Avoid unnescessary environment instruction 834`] = `7`; + +exports[`Avoid unnescessary environment instruction 835`] = `7`; + +exports[`Avoid unnescessary environment instruction 836`] = `8`; + +exports[`Avoid unnescessary environment instruction 837`] = `9`; + +exports[`Avoid unnescessary environment instruction 838`] = `12`; + +exports[`Avoid unnescessary environment instruction 839`] = `11`; + +exports[`Avoid unnescessary environment instruction 840`] = `10`; + +exports[`Avoid unnescessary environment instruction 841`] = `9`; + +exports[`Avoid unnescessary environment instruction 842`] = `9`; + +exports[`Avoid unnescessary environment instruction 843`] = `10`; + +exports[`Avoid unnescessary environment instruction 844`] = `9`; + +exports[`Avoid unnescessary environment instruction 845`] = `8`; + +exports[`Avoid unnescessary environment instruction 846`] = `8`; + +exports[`Avoid unnescessary environment instruction 847`] = `8`; + +exports[`Avoid unnescessary environment instruction 848`] = `7`; + +exports[`Avoid unnescessary environment instruction 849`] = `7`; + +exports[`Avoid unnescessary environment instruction 850`] = `8`; + +exports[`Avoid unnescessary environment instruction 851`] = `8`; + +exports[`Avoid unnescessary environment instruction 852`] = `7`; + +exports[`Avoid unnescessary environment instruction 853`] = `7`; + +exports[`Avoid unnescessary environment instruction 854`] = `7`; + +exports[`Avoid unnescessary environment instruction 855`] = `6`; + +exports[`Avoid unnescessary environment instruction 856`] = `7`; + +exports[`Avoid unnescessary environment instruction 857`] = `6`; + +exports[`Avoid unnescessary environment instruction 858`] = `5`; + +exports[`Avoid unnescessary environment instruction 859`] = `5`; + +exports[`Avoid unnescessary environment instruction 860`] = `7`; + +exports[`Avoid unnescessary environment instruction 861`] = `7`; + +exports[`Avoid unnescessary environment instruction 862`] = `8`; + +exports[`Avoid unnescessary environment instruction 863`] = `9`; + +exports[`Avoid unnescessary environment instruction 864`] = `12`; + +exports[`Avoid unnescessary environment instruction 865`] = `11`; + +exports[`Avoid unnescessary environment instruction 866`] = `10`; + +exports[`Avoid unnescessary environment instruction 867`] = `9`; + +exports[`Avoid unnescessary environment instruction 868`] = `9`; + +exports[`Avoid unnescessary environment instruction 869`] = `10`; + +exports[`Avoid unnescessary environment instruction 870`] = `9`; + +exports[`Avoid unnescessary environment instruction 871`] = `8`; + +exports[`Avoid unnescessary environment instruction 872`] = `8`; + +exports[`Avoid unnescessary environment instruction 873`] = `8`; + +exports[`Avoid unnescessary environment instruction 874`] = `7`; + +exports[`Avoid unnescessary environment instruction 875`] = `7`; + +exports[`Avoid unnescessary environment instruction 876`] = `8`; + +exports[`Avoid unnescessary environment instruction 877`] = `8`; + +exports[`Avoid unnescessary environment instruction 878`] = `7`; + +exports[`Avoid unnescessary environment instruction 879`] = `7`; + +exports[`Avoid unnescessary environment instruction 880`] = `7`; + +exports[`Avoid unnescessary environment instruction 881`] = `6`; + +exports[`Avoid unnescessary environment instruction 882`] = `7`; + +exports[`Avoid unnescessary environment instruction 883`] = `6`; + +exports[`Avoid unnescessary environment instruction 884`] = `5`; + +exports[`Avoid unnescessary environment instruction 885`] = `5`; + +exports[`Avoid unnescessary environment instruction 886`] = `4`; + +exports[`Avoid unnescessary environment instruction 887`] = `4`; + +exports[`Avoid unnescessary environment instruction 888`] = `5`; + +exports[`Avoid unnescessary environment instruction 889`] = `5`; + +exports[`Avoid unnescessary environment instruction 890`] = `6`; + +exports[`Avoid unnescessary environment instruction 891`] = `6`; + +exports[`Avoid unnescessary environment instruction 892`] = `5`; + +exports[`Avoid unnescessary environment instruction 893`] = `5`; + +exports[`Avoid unnescessary environment instruction 894`] = `5`; + +exports[`Avoid unnescessary environment instruction 895`] = `4`; + +exports[`Avoid unnescessary environment instruction 896`] = `4`; + +exports[`Avoid unnescessary environment instruction 897`] = `4`; + +exports[`Avoid unnescessary environment instruction 898`] = `3`; + +exports[`Avoid unnescessary environment instruction 899`] = `3`; + +exports[`Avoid unnescessary environment instruction 900`] = `4`; + +exports[`Avoid unnescessary environment instruction 901`] = `4`; + +exports[`Avoid unnescessary environment instruction 902`] = `3`; + +exports[`Avoid unnescessary environment instruction 903`] = `3`; + +exports[`Avoid unnescessary environment instruction 904`] = `3`; + +exports[`Avoid unnescessary environment instruction 905`] = `2`; + +exports[`Avoid unnescessary environment instruction 906`] = `2`; + +exports[`Avoid unnescessary environment instruction 907`] = `2`; + +exports[`Avoid unnescessary environment instruction 908`] = `1`; + +exports[`Avoid unnescessary environment instruction 909`] = `1`; + +exports[`Avoid unnescessary environment instruction 910`] = `1`; + +exports[`Avoid unnescessary environment instruction 911`] = `4`; + +exports[`Avoid unnescessary environment instruction 912`] = `4`; + +exports[`Avoid unnescessary environment instruction 913`] = `4`; + +exports[`Avoid unnescessary environment instruction 914`] = `5`; + +exports[`Avoid unnescessary environment instruction 915`] = `6`; + +exports[`Avoid unnescessary environment instruction 916`] = `5`; + +exports[`Avoid unnescessary environment instruction 917`] = `4`; + +exports[`Avoid unnescessary environment instruction 918`] = `4`; + +exports[`Avoid unnescessary environment instruction 919`] = `4`; + +exports[`Avoid unnescessary environment instruction 920`] = `5`; + +exports[`Avoid unnescessary environment instruction 921`] = `6`; + +exports[`Avoid unnescessary environment instruction 922`] = `5`; + +exports[`Avoid unnescessary environment instruction 923`] = `4`; + +exports[`Avoid unnescessary environment instruction 924`] = `4`; + +exports[`Avoid unnescessary environment instruction 925`] = `4`; + +exports[`Avoid unnescessary environment instruction 926`] = `6`; + +exports[`Avoid unnescessary environment instruction 927`] = `6`; + +exports[`Avoid unnescessary environment instruction 928`] = `6`; + +exports[`Avoid unnescessary environment instruction 929`] = `5`; + +exports[`Avoid unnescessary environment instruction 930`] = `5`; + +exports[`Avoid unnescessary environment instruction 931`] = `7`; + +exports[`Avoid unnescessary environment instruction 932`] = `6`; + +exports[`Avoid unnescessary environment instruction 933`] = `7`; + +exports[`Avoid unnescessary environment instruction 934`] = `6`; + +exports[`Avoid unnescessary environment instruction 935`] = `5`; + +exports[`Avoid unnescessary environment instruction 936`] = `5`; + +exports[`Avoid unnescessary environment instruction 937`] = `7`; + +exports[`Avoid unnescessary environment instruction 938`] = `7`; + +exports[`Avoid unnescessary environment instruction 939`] = `8`; + +exports[`Avoid unnescessary environment instruction 940`] = `9`; + +exports[`Avoid unnescessary environment instruction 941`] = `12`; + +exports[`Avoid unnescessary environment instruction 942`] = `11`; + +exports[`Avoid unnescessary environment instruction 943`] = `10`; + +exports[`Avoid unnescessary environment instruction 944`] = `9`; + +exports[`Avoid unnescessary environment instruction 945`] = `9`; + +exports[`Avoid unnescessary environment instruction 946`] = `10`; + +exports[`Avoid unnescessary environment instruction 947`] = `9`; + +exports[`Avoid unnescessary environment instruction 948`] = `8`; + +exports[`Avoid unnescessary environment instruction 949`] = `8`; + +exports[`Avoid unnescessary environment instruction 950`] = `8`; + +exports[`Avoid unnescessary environment instruction 951`] = `7`; + +exports[`Avoid unnescessary environment instruction 952`] = `7`; + +exports[`Avoid unnescessary environment instruction 953`] = `8`; + +exports[`Avoid unnescessary environment instruction 954`] = `8`; + +exports[`Avoid unnescessary environment instruction 955`] = `7`; + +exports[`Avoid unnescessary environment instruction 956`] = `7`; + +exports[`Avoid unnescessary environment instruction 957`] = `7`; + +exports[`Avoid unnescessary environment instruction 958`] = `6`; + +exports[`Avoid unnescessary environment instruction 959`] = `7`; + +exports[`Avoid unnescessary environment instruction 960`] = `6`; + +exports[`Avoid unnescessary environment instruction 961`] = `5`; + +exports[`Avoid unnescessary environment instruction 962`] = `5`; + +exports[`Avoid unnescessary environment instruction 963`] = `7`; + +exports[`Avoid unnescessary environment instruction 964`] = `7`; + +exports[`Avoid unnescessary environment instruction 965`] = `8`; + +exports[`Avoid unnescessary environment instruction 966`] = `9`; + +exports[`Avoid unnescessary environment instruction 967`] = `12`; + +exports[`Avoid unnescessary environment instruction 968`] = `11`; + +exports[`Avoid unnescessary environment instruction 969`] = `10`; + +exports[`Avoid unnescessary environment instruction 970`] = `9`; + +exports[`Avoid unnescessary environment instruction 971`] = `9`; + +exports[`Avoid unnescessary environment instruction 972`] = `10`; + +exports[`Avoid unnescessary environment instruction 973`] = `9`; + +exports[`Avoid unnescessary environment instruction 974`] = `8`; + +exports[`Avoid unnescessary environment instruction 975`] = `8`; + +exports[`Avoid unnescessary environment instruction 976`] = `8`; + +exports[`Avoid unnescessary environment instruction 977`] = `7`; + +exports[`Avoid unnescessary environment instruction 978`] = `7`; + +exports[`Avoid unnescessary environment instruction 979`] = `8`; + +exports[`Avoid unnescessary environment instruction 980`] = `8`; + +exports[`Avoid unnescessary environment instruction 981`] = `7`; + +exports[`Avoid unnescessary environment instruction 982`] = `7`; + +exports[`Avoid unnescessary environment instruction 983`] = `7`; + +exports[`Avoid unnescessary environment instruction 984`] = `6`; + +exports[`Avoid unnescessary environment instruction 985`] = `7`; + +exports[`Avoid unnescessary environment instruction 986`] = `6`; + +exports[`Avoid unnescessary environment instruction 987`] = `5`; + +exports[`Avoid unnescessary environment instruction 988`] = `5`; + +exports[`Avoid unnescessary environment instruction 989`] = `7`; + +exports[`Avoid unnescessary environment instruction 990`] = `7`; + +exports[`Avoid unnescessary environment instruction 991`] = `8`; + +exports[`Avoid unnescessary environment instruction 992`] = `9`; + +exports[`Avoid unnescessary environment instruction 993`] = `12`; + +exports[`Avoid unnescessary environment instruction 994`] = `11`; + +exports[`Avoid unnescessary environment instruction 995`] = `10`; + +exports[`Avoid unnescessary environment instruction 996`] = `9`; + +exports[`Avoid unnescessary environment instruction 997`] = `9`; + +exports[`Avoid unnescessary environment instruction 998`] = `10`; + +exports[`Avoid unnescessary environment instruction 999`] = `9`; + +exports[`Avoid unnescessary environment instruction 1000`] = `8`; + +exports[`Avoid unnescessary environment instruction 1001`] = `8`; + +exports[`Avoid unnescessary environment instruction 1002`] = `8`; + +exports[`Avoid unnescessary environment instruction 1003`] = `7`; + +exports[`Avoid unnescessary environment instruction 1004`] = `7`; + +exports[`Avoid unnescessary environment instruction 1005`] = `8`; + +exports[`Avoid unnescessary environment instruction 1006`] = `8`; + +exports[`Avoid unnescessary environment instruction 1007`] = `7`; + +exports[`Avoid unnescessary environment instruction 1008`] = `7`; + +exports[`Avoid unnescessary environment instruction 1009`] = `7`; + +exports[`Avoid unnescessary environment instruction 1010`] = `6`; + +exports[`Avoid unnescessary environment instruction 1011`] = `7`; + +exports[`Avoid unnescessary environment instruction 1012`] = `6`; + +exports[`Avoid unnescessary environment instruction 1013`] = `5`; + +exports[`Avoid unnescessary environment instruction 1014`] = `5`; + +exports[`Avoid unnescessary environment instruction 1015`] = `7`; + +exports[`Avoid unnescessary environment instruction 1016`] = `7`; + +exports[`Avoid unnescessary environment instruction 1017`] = `8`; + +exports[`Avoid unnescessary environment instruction 1018`] = `9`; + +exports[`Avoid unnescessary environment instruction 1019`] = `12`; + +exports[`Avoid unnescessary environment instruction 1020`] = `11`; + +exports[`Avoid unnescessary environment instruction 1021`] = `10`; + +exports[`Avoid unnescessary environment instruction 1022`] = `9`; + +exports[`Avoid unnescessary environment instruction 1023`] = `9`; + +exports[`Avoid unnescessary environment instruction 1024`] = `10`; + +exports[`Avoid unnescessary environment instruction 1025`] = `9`; + +exports[`Avoid unnescessary environment instruction 1026`] = `8`; + +exports[`Avoid unnescessary environment instruction 1027`] = `8`; + +exports[`Avoid unnescessary environment instruction 1028`] = `8`; + +exports[`Avoid unnescessary environment instruction 1029`] = `7`; + +exports[`Avoid unnescessary environment instruction 1030`] = `7`; + +exports[`Avoid unnescessary environment instruction 1031`] = `8`; + +exports[`Avoid unnescessary environment instruction 1032`] = `8`; + +exports[`Avoid unnescessary environment instruction 1033`] = `7`; + +exports[`Avoid unnescessary environment instruction 1034`] = `7`; + +exports[`Avoid unnescessary environment instruction 1035`] = `7`; + +exports[`Avoid unnescessary environment instruction 1036`] = `6`; + +exports[`Avoid unnescessary environment instruction 1037`] = `7`; + +exports[`Avoid unnescessary environment instruction 1038`] = `6`; + +exports[`Avoid unnescessary environment instruction 1039`] = `5`; + +exports[`Avoid unnescessary environment instruction 1040`] = `5`; + +exports[`Avoid unnescessary environment instruction 1041`] = `7`; + +exports[`Avoid unnescessary environment instruction 1042`] = `7`; + +exports[`Avoid unnescessary environment instruction 1043`] = `8`; + +exports[`Avoid unnescessary environment instruction 1044`] = `9`; + +exports[`Avoid unnescessary environment instruction 1045`] = `12`; + +exports[`Avoid unnescessary environment instruction 1046`] = `11`; + +exports[`Avoid unnescessary environment instruction 1047`] = `10`; + +exports[`Avoid unnescessary environment instruction 1048`] = `9`; + +exports[`Avoid unnescessary environment instruction 1049`] = `9`; + +exports[`Avoid unnescessary environment instruction 1050`] = `10`; + +exports[`Avoid unnescessary environment instruction 1051`] = `9`; + +exports[`Avoid unnescessary environment instruction 1052`] = `8`; + +exports[`Avoid unnescessary environment instruction 1053`] = `8`; + +exports[`Avoid unnescessary environment instruction 1054`] = `8`; + +exports[`Avoid unnescessary environment instruction 1055`] = `7`; + +exports[`Avoid unnescessary environment instruction 1056`] = `7`; + +exports[`Avoid unnescessary environment instruction 1057`] = `8`; + +exports[`Avoid unnescessary environment instruction 1058`] = `8`; + +exports[`Avoid unnescessary environment instruction 1059`] = `7`; + +exports[`Avoid unnescessary environment instruction 1060`] = `7`; + +exports[`Avoid unnescessary environment instruction 1061`] = `7`; + +exports[`Avoid unnescessary environment instruction 1062`] = `6`; + +exports[`Avoid unnescessary environment instruction 1063`] = `7`; + +exports[`Avoid unnescessary environment instruction 1064`] = `6`; + +exports[`Avoid unnescessary environment instruction 1065`] = `5`; + +exports[`Avoid unnescessary environment instruction 1066`] = `5`; + +exports[`Avoid unnescessary environment instruction 1067`] = `7`; + +exports[`Avoid unnescessary environment instruction 1068`] = `7`; + +exports[`Avoid unnescessary environment instruction 1069`] = `8`; + +exports[`Avoid unnescessary environment instruction 1070`] = `9`; + +exports[`Avoid unnescessary environment instruction 1071`] = `12`; + +exports[`Avoid unnescessary environment instruction 1072`] = `11`; + +exports[`Avoid unnescessary environment instruction 1073`] = `10`; + +exports[`Avoid unnescessary environment instruction 1074`] = `9`; + +exports[`Avoid unnescessary environment instruction 1075`] = `9`; + +exports[`Avoid unnescessary environment instruction 1076`] = `10`; + +exports[`Avoid unnescessary environment instruction 1077`] = `9`; + +exports[`Avoid unnescessary environment instruction 1078`] = `8`; + +exports[`Avoid unnescessary environment instruction 1079`] = `8`; + +exports[`Avoid unnescessary environment instruction 1080`] = `8`; + +exports[`Avoid unnescessary environment instruction 1081`] = `7`; + +exports[`Avoid unnescessary environment instruction 1082`] = `7`; + +exports[`Avoid unnescessary environment instruction 1083`] = `8`; + +exports[`Avoid unnescessary environment instruction 1084`] = `8`; + +exports[`Avoid unnescessary environment instruction 1085`] = `7`; + +exports[`Avoid unnescessary environment instruction 1086`] = `7`; + +exports[`Avoid unnescessary environment instruction 1087`] = `7`; + +exports[`Avoid unnescessary environment instruction 1088`] = `6`; + +exports[`Avoid unnescessary environment instruction 1089`] = `7`; + +exports[`Avoid unnescessary environment instruction 1090`] = `6`; + +exports[`Avoid unnescessary environment instruction 1091`] = `5`; + +exports[`Avoid unnescessary environment instruction 1092`] = `5`; + +exports[`Avoid unnescessary environment instruction 1093`] = `4`; + +exports[`Avoid unnescessary environment instruction 1094`] = `4`; + +exports[`Avoid unnescessary environment instruction 1095`] = `5`; + +exports[`Avoid unnescessary environment instruction 1096`] = `5`; + +exports[`Avoid unnescessary environment instruction 1097`] = `6`; + +exports[`Avoid unnescessary environment instruction 1098`] = `6`; + +exports[`Avoid unnescessary environment instruction 1099`] = `5`; + +exports[`Avoid unnescessary environment instruction 1100`] = `5`; + +exports[`Avoid unnescessary environment instruction 1101`] = `5`; + +exports[`Avoid unnescessary environment instruction 1102`] = `4`; + +exports[`Avoid unnescessary environment instruction 1103`] = `4`; + +exports[`Avoid unnescessary environment instruction 1104`] = `4`; + +exports[`Avoid unnescessary environment instruction 1105`] = `3`; + +exports[`Avoid unnescessary environment instruction 1106`] = `3`; + +exports[`Avoid unnescessary environment instruction 1107`] = `4`; + +exports[`Avoid unnescessary environment instruction 1108`] = `4`; + +exports[`Avoid unnescessary environment instruction 1109`] = `3`; + +exports[`Avoid unnescessary environment instruction 1110`] = `3`; + +exports[`Avoid unnescessary environment instruction 1111`] = `3`; + +exports[`Avoid unnescessary environment instruction 1112`] = `2`; + +exports[`Avoid unnescessary environment instruction 1113`] = `2`; + +exports[`Avoid unnescessary environment instruction 1114`] = `2`; + +exports[`Avoid unnescessary environment instruction 1115`] = `1`; + +exports[`Avoid unnescessary environment instruction 1116`] = `1`; + +exports[`Avoid unnescessary environment instruction 1117`] = `1`; + +exports[`Avoid unnescessary environment instruction 1118`] = `4`; + +exports[`Avoid unnescessary environment instruction 1119`] = `4`; + +exports[`Avoid unnescessary environment instruction 1120`] = `4`; + +exports[`Avoid unnescessary environment instruction 1121`] = `5`; + +exports[`Avoid unnescessary environment instruction 1122`] = `6`; + +exports[`Avoid unnescessary environment instruction 1123`] = `5`; + +exports[`Avoid unnescessary environment instruction 1124`] = `4`; + +exports[`Avoid unnescessary environment instruction 1125`] = `4`; + +exports[`Avoid unnescessary environment instruction 1126`] = `4`; + +exports[`Avoid unnescessary environment instruction 1127`] = `5`; + +exports[`Avoid unnescessary environment instruction 1128`] = `6`; + +exports[`Avoid unnescessary environment instruction 1129`] = `5`; + +exports[`Avoid unnescessary environment instruction 1130`] = `4`; + +exports[`Avoid unnescessary environment instruction 1131`] = `4`; + +exports[`Avoid unnescessary environment instruction 1132`] = `4`; + +exports[`Avoid unnescessary environment instruction 1133`] = `6`; + +exports[`Avoid unnescessary environment instruction 1134`] = `6`; + +exports[`Avoid unnescessary environment instruction 1135`] = `6`; + +exports[`Avoid unnescessary environment instruction 1136`] = `5`; + +exports[`Avoid unnescessary environment instruction 1137`] = `5`; + +exports[`Avoid unnescessary environment instruction 1138`] = `7`; + +exports[`Avoid unnescessary environment instruction 1139`] = `6`; + +exports[`Avoid unnescessary environment instruction 1140`] = `7`; + +exports[`Avoid unnescessary environment instruction 1141`] = `6`; + +exports[`Avoid unnescessary environment instruction 1142`] = `5`; + +exports[`Avoid unnescessary environment instruction 1143`] = `5`; + +exports[`Avoid unnescessary environment instruction 1144`] = `7`; + +exports[`Avoid unnescessary environment instruction 1145`] = `7`; + +exports[`Avoid unnescessary environment instruction 1146`] = `8`; + +exports[`Avoid unnescessary environment instruction 1147`] = `9`; + +exports[`Avoid unnescessary environment instruction 1148`] = `12`; + +exports[`Avoid unnescessary environment instruction 1149`] = `11`; + +exports[`Avoid unnescessary environment instruction 1150`] = `10`; + +exports[`Avoid unnescessary environment instruction 1151`] = `9`; + +exports[`Avoid unnescessary environment instruction 1152`] = `9`; + +exports[`Avoid unnescessary environment instruction 1153`] = `10`; + +exports[`Avoid unnescessary environment instruction 1154`] = `9`; + +exports[`Avoid unnescessary environment instruction 1155`] = `8`; + +exports[`Avoid unnescessary environment instruction 1156`] = `8`; + +exports[`Avoid unnescessary environment instruction 1157`] = `8`; + +exports[`Avoid unnescessary environment instruction 1158`] = `7`; + +exports[`Avoid unnescessary environment instruction 1159`] = `7`; + +exports[`Avoid unnescessary environment instruction 1160`] = `8`; + +exports[`Avoid unnescessary environment instruction 1161`] = `8`; + +exports[`Avoid unnescessary environment instruction 1162`] = `7`; + +exports[`Avoid unnescessary environment instruction 1163`] = `7`; + +exports[`Avoid unnescessary environment instruction 1164`] = `7`; + +exports[`Avoid unnescessary environment instruction 1165`] = `6`; + +exports[`Avoid unnescessary environment instruction 1166`] = `7`; + +exports[`Avoid unnescessary environment instruction 1167`] = `6`; + +exports[`Avoid unnescessary environment instruction 1168`] = `5`; + +exports[`Avoid unnescessary environment instruction 1169`] = `5`; + +exports[`Avoid unnescessary environment instruction 1170`] = `7`; + +exports[`Avoid unnescessary environment instruction 1171`] = `7`; + +exports[`Avoid unnescessary environment instruction 1172`] = `8`; + +exports[`Avoid unnescessary environment instruction 1173`] = `9`; + +exports[`Avoid unnescessary environment instruction 1174`] = `12`; + +exports[`Avoid unnescessary environment instruction 1175`] = `11`; + +exports[`Avoid unnescessary environment instruction 1176`] = `10`; + +exports[`Avoid unnescessary environment instruction 1177`] = `9`; + +exports[`Avoid unnescessary environment instruction 1178`] = `9`; + +exports[`Avoid unnescessary environment instruction 1179`] = `10`; + +exports[`Avoid unnescessary environment instruction 1180`] = `9`; + +exports[`Avoid unnescessary environment instruction 1181`] = `8`; + +exports[`Avoid unnescessary environment instruction 1182`] = `8`; + +exports[`Avoid unnescessary environment instruction 1183`] = `8`; + +exports[`Avoid unnescessary environment instruction 1184`] = `7`; + +exports[`Avoid unnescessary environment instruction 1185`] = `7`; + +exports[`Avoid unnescessary environment instruction 1186`] = `8`; + +exports[`Avoid unnescessary environment instruction 1187`] = `8`; + +exports[`Avoid unnescessary environment instruction 1188`] = `7`; + +exports[`Avoid unnescessary environment instruction 1189`] = `7`; + +exports[`Avoid unnescessary environment instruction 1190`] = `7`; + +exports[`Avoid unnescessary environment instruction 1191`] = `6`; + +exports[`Avoid unnescessary environment instruction 1192`] = `7`; + +exports[`Avoid unnescessary environment instruction 1193`] = `6`; + +exports[`Avoid unnescessary environment instruction 1194`] = `5`; + +exports[`Avoid unnescessary environment instruction 1195`] = `5`; + +exports[`Avoid unnescessary environment instruction 1196`] = `7`; + +exports[`Avoid unnescessary environment instruction 1197`] = `7`; + +exports[`Avoid unnescessary environment instruction 1198`] = `8`; + +exports[`Avoid unnescessary environment instruction 1199`] = `9`; + +exports[`Avoid unnescessary environment instruction 1200`] = `12`; + +exports[`Avoid unnescessary environment instruction 1201`] = `11`; + +exports[`Avoid unnescessary environment instruction 1202`] = `10`; + +exports[`Avoid unnescessary environment instruction 1203`] = `9`; + +exports[`Avoid unnescessary environment instruction 1204`] = `9`; + +exports[`Avoid unnescessary environment instruction 1205`] = `10`; + +exports[`Avoid unnescessary environment instruction 1206`] = `9`; + +exports[`Avoid unnescessary environment instruction 1207`] = `8`; + +exports[`Avoid unnescessary environment instruction 1208`] = `8`; + +exports[`Avoid unnescessary environment instruction 1209`] = `8`; + +exports[`Avoid unnescessary environment instruction 1210`] = `7`; + +exports[`Avoid unnescessary environment instruction 1211`] = `7`; + +exports[`Avoid unnescessary environment instruction 1212`] = `8`; + +exports[`Avoid unnescessary environment instruction 1213`] = `8`; + +exports[`Avoid unnescessary environment instruction 1214`] = `7`; + +exports[`Avoid unnescessary environment instruction 1215`] = `7`; + +exports[`Avoid unnescessary environment instruction 1216`] = `7`; + +exports[`Avoid unnescessary environment instruction 1217`] = `6`; + +exports[`Avoid unnescessary environment instruction 1218`] = `7`; + +exports[`Avoid unnescessary environment instruction 1219`] = `6`; + +exports[`Avoid unnescessary environment instruction 1220`] = `5`; + +exports[`Avoid unnescessary environment instruction 1221`] = `5`; + +exports[`Avoid unnescessary environment instruction 1222`] = `7`; + +exports[`Avoid unnescessary environment instruction 1223`] = `7`; + +exports[`Avoid unnescessary environment instruction 1224`] = `8`; + +exports[`Avoid unnescessary environment instruction 1225`] = `9`; + +exports[`Avoid unnescessary environment instruction 1226`] = `12`; + +exports[`Avoid unnescessary environment instruction 1227`] = `11`; + +exports[`Avoid unnescessary environment instruction 1228`] = `10`; + +exports[`Avoid unnescessary environment instruction 1229`] = `9`; + +exports[`Avoid unnescessary environment instruction 1230`] = `9`; + +exports[`Avoid unnescessary environment instruction 1231`] = `10`; + +exports[`Avoid unnescessary environment instruction 1232`] = `9`; + +exports[`Avoid unnescessary environment instruction 1233`] = `8`; + +exports[`Avoid unnescessary environment instruction 1234`] = `8`; + +exports[`Avoid unnescessary environment instruction 1235`] = `8`; + +exports[`Avoid unnescessary environment instruction 1236`] = `7`; + +exports[`Avoid unnescessary environment instruction 1237`] = `7`; + +exports[`Avoid unnescessary environment instruction 1238`] = `8`; + +exports[`Avoid unnescessary environment instruction 1239`] = `8`; + +exports[`Avoid unnescessary environment instruction 1240`] = `7`; + +exports[`Avoid unnescessary environment instruction 1241`] = `7`; + +exports[`Avoid unnescessary environment instruction 1242`] = `7`; + +exports[`Avoid unnescessary environment instruction 1243`] = `6`; + +exports[`Avoid unnescessary environment instruction 1244`] = `7`; + +exports[`Avoid unnescessary environment instruction 1245`] = `6`; + +exports[`Avoid unnescessary environment instruction 1246`] = `5`; + +exports[`Avoid unnescessary environment instruction 1247`] = `5`; + +exports[`Avoid unnescessary environment instruction 1248`] = `7`; + +exports[`Avoid unnescessary environment instruction 1249`] = `7`; + +exports[`Avoid unnescessary environment instruction 1250`] = `8`; + +exports[`Avoid unnescessary environment instruction 1251`] = `9`; + +exports[`Avoid unnescessary environment instruction 1252`] = `12`; + +exports[`Avoid unnescessary environment instruction 1253`] = `11`; + +exports[`Avoid unnescessary environment instruction 1254`] = `10`; + +exports[`Avoid unnescessary environment instruction 1255`] = `9`; + +exports[`Avoid unnescessary environment instruction 1256`] = `9`; + +exports[`Avoid unnescessary environment instruction 1257`] = `10`; + +exports[`Avoid unnescessary environment instruction 1258`] = `9`; + +exports[`Avoid unnescessary environment instruction 1259`] = `8`; + +exports[`Avoid unnescessary environment instruction 1260`] = `8`; + +exports[`Avoid unnescessary environment instruction 1261`] = `8`; + +exports[`Avoid unnescessary environment instruction 1262`] = `7`; + +exports[`Avoid unnescessary environment instruction 1263`] = `7`; + +exports[`Avoid unnescessary environment instruction 1264`] = `8`; + +exports[`Avoid unnescessary environment instruction 1265`] = `8`; + +exports[`Avoid unnescessary environment instruction 1266`] = `7`; + +exports[`Avoid unnescessary environment instruction 1267`] = `7`; + +exports[`Avoid unnescessary environment instruction 1268`] = `7`; + +exports[`Avoid unnescessary environment instruction 1269`] = `6`; + +exports[`Avoid unnescessary environment instruction 1270`] = `7`; + +exports[`Avoid unnescessary environment instruction 1271`] = `6`; + +exports[`Avoid unnescessary environment instruction 1272`] = `5`; + +exports[`Avoid unnescessary environment instruction 1273`] = `5`; + +exports[`Avoid unnescessary environment instruction 1274`] = `7`; + +exports[`Avoid unnescessary environment instruction 1275`] = `7`; + +exports[`Avoid unnescessary environment instruction 1276`] = `8`; + +exports[`Avoid unnescessary environment instruction 1277`] = `9`; + +exports[`Avoid unnescessary environment instruction 1278`] = `12`; + +exports[`Avoid unnescessary environment instruction 1279`] = `11`; + +exports[`Avoid unnescessary environment instruction 1280`] = `10`; + +exports[`Avoid unnescessary environment instruction 1281`] = `9`; + +exports[`Avoid unnescessary environment instruction 1282`] = `9`; + +exports[`Avoid unnescessary environment instruction 1283`] = `10`; + +exports[`Avoid unnescessary environment instruction 1284`] = `9`; + +exports[`Avoid unnescessary environment instruction 1285`] = `8`; + +exports[`Avoid unnescessary environment instruction 1286`] = `8`; + +exports[`Avoid unnescessary environment instruction 1287`] = `8`; + +exports[`Avoid unnescessary environment instruction 1288`] = `7`; + +exports[`Avoid unnescessary environment instruction 1289`] = `7`; + +exports[`Avoid unnescessary environment instruction 1290`] = `8`; + +exports[`Avoid unnescessary environment instruction 1291`] = `8`; + +exports[`Avoid unnescessary environment instruction 1292`] = `7`; + +exports[`Avoid unnescessary environment instruction 1293`] = `7`; + +exports[`Avoid unnescessary environment instruction 1294`] = `7`; + +exports[`Avoid unnescessary environment instruction 1295`] = `6`; + +exports[`Avoid unnescessary environment instruction 1296`] = `7`; + +exports[`Avoid unnescessary environment instruction 1297`] = `6`; + +exports[`Avoid unnescessary environment instruction 1298`] = `5`; + +exports[`Avoid unnescessary environment instruction 1299`] = `5`; + +exports[`Avoid unnescessary environment instruction 1300`] = `7`; + +exports[`Avoid unnescessary environment instruction 1301`] = `7`; + +exports[`Avoid unnescessary environment instruction 1302`] = `8`; + +exports[`Avoid unnescessary environment instruction 1303`] = `9`; + +exports[`Avoid unnescessary environment instruction 1304`] = `12`; + +exports[`Avoid unnescessary environment instruction 1305`] = `11`; + +exports[`Avoid unnescessary environment instruction 1306`] = `10`; + +exports[`Avoid unnescessary environment instruction 1307`] = `9`; + +exports[`Avoid unnescessary environment instruction 1308`] = `9`; + +exports[`Avoid unnescessary environment instruction 1309`] = `10`; + +exports[`Avoid unnescessary environment instruction 1310`] = `9`; + +exports[`Avoid unnescessary environment instruction 1311`] = `8`; + +exports[`Avoid unnescessary environment instruction 1312`] = `8`; + +exports[`Avoid unnescessary environment instruction 1313`] = `8`; + +exports[`Avoid unnescessary environment instruction 1314`] = `7`; + +exports[`Avoid unnescessary environment instruction 1315`] = `7`; + +exports[`Avoid unnescessary environment instruction 1316`] = `8`; + +exports[`Avoid unnescessary environment instruction 1317`] = `8`; + +exports[`Avoid unnescessary environment instruction 1318`] = `7`; + +exports[`Avoid unnescessary environment instruction 1319`] = `7`; + +exports[`Avoid unnescessary environment instruction 1320`] = `7`; + +exports[`Avoid unnescessary environment instruction 1321`] = `6`; + +exports[`Avoid unnescessary environment instruction 1322`] = `7`; + +exports[`Avoid unnescessary environment instruction 1323`] = `6`; + +exports[`Avoid unnescessary environment instruction 1324`] = `5`; + +exports[`Avoid unnescessary environment instruction 1325`] = `5`; + +exports[`Avoid unnescessary environment instruction 1326`] = `4`; + +exports[`Avoid unnescessary environment instruction 1327`] = `4`; + +exports[`Avoid unnescessary environment instruction 1328`] = `5`; + +exports[`Avoid unnescessary environment instruction 1329`] = `5`; + +exports[`Avoid unnescessary environment instruction 1330`] = `6`; + +exports[`Avoid unnescessary environment instruction 1331`] = `6`; + +exports[`Avoid unnescessary environment instruction 1332`] = `5`; + +exports[`Avoid unnescessary environment instruction 1333`] = `5`; + +exports[`Avoid unnescessary environment instruction 1334`] = `5`; + +exports[`Avoid unnescessary environment instruction 1335`] = `5`; + +exports[`Avoid unnescessary environment instruction 1336`] = `5`; + +exports[`Avoid unnescessary environment instruction 1337`] = `4`; + +exports[`Avoid unnescessary environment instruction 1338`] = `4`; + +exports[`Avoid unnescessary environment instruction 1339`] = `4`; + +exports[`Avoid unnescessary environment instruction 1340`] = `4`; + +exports[`Avoid unnescessary environment instruction 1341`] = `4`; + +exports[`Avoid unnescessary environment instruction 1342`] = `5`; + +exports[`Avoid unnescessary environment instruction 1343`] = `4`; + +exports[`Avoid unnescessary environment instruction 1344`] = `4`; + +exports[`Avoid unnescessary environment instruction 1345`] = `3`; + +exports[`Avoid unnescessary environment instruction 1346`] = `3`; + +exports[`Avoid unnescessary environment instruction 1347`] = `3`; + +exports[`Avoid unnescessary environment instruction 1348`] = `3`; + +exports[`Avoid unnescessary environment instruction 1349`] = `3`; + +exports[`Avoid unnescessary environment instruction 1350`] = `2`; + +exports[`Avoid unnescessary environment instruction 1351`] = `2`; + +exports[`Avoid unnescessary environment instruction 1352`] = `1`; + +exports[`Avoid unnescessary environment instruction 1353`] = `0`; + +exports[`Avoid unnescessary environment instruction 1354`] = `0`; exports[`Breakpoint steps match 1`] = ` Array [ diff --git a/src/cse-machine/__tests__/cse-machine-runtime-context.ts b/src/cse-machine/__tests__/cse-machine-runtime-context.ts index b41aecbe7..c9274fc78 100644 --- a/src/cse-machine/__tests__/cse-machine-runtime-context.ts +++ b/src/cse-machine/__tests__/cse-machine-runtime-context.ts @@ -94,7 +94,7 @@ for (const context of contexts) { expect((await context).runtime.changepointSteps).toMatchSnapshot() }) } -test('Avoid unnescessary environment instruction 1', () => { +test('Avoid unnescessary environment instruction', () => { const CSEState = evaluateCode( stripIndent( ` @@ -113,7 +113,7 @@ test('Avoid unnescessary environment instruction 1', () => { } }) -test('Avoid unnescessary environment instruction 2', () => { +test('Avoid unnescessary environment instruction', () => { const CSEState = evaluateCode( stripIndent( ` @@ -132,7 +132,7 @@ test('Avoid unnescessary environment instruction 2', () => { } }) -test('Avoid unnescessary environment instruction 3', () => { +test('Avoid unnescessary environment instruction', () => { const CSEState = evaluateCode( stripIndent( ` @@ -153,7 +153,7 @@ test('Avoid unnescessary environment instruction 3', () => { } }) -test('Avoid unnescessary environment instruction 4', () => { +test('Avoid unnescessary environment instruction', () => { const CSEState = evaluateCode( stripIndent( ` @@ -174,3 +174,34 @@ test('Avoid unnescessary environment instruction 4', () => { expect(state.control.getNumEnvDependentItems()).toMatchSnapshot() } }) + +test('Avoid unnescessary environment instruction', () => { + const CSEState = evaluateCode( + stripIndent( + ` + const arr = [1,2,3]; + let sum = 0; + + function add(x, y) { + return x + y; + } + + for(let i = 1; i < 10; i = i + 1) { + let j = 0; + while(j < i) { + sum = add(sum, i); + j = j + 1; + } + if (sum > 100 && sum < 200) { + arr[0] = sum; + break; + } + } + ` + ) + ) + + for (const state of CSEState) { + expect(state.control.getNumEnvDependentItems()).toMatchSnapshot() + } +}) diff --git a/src/cse-machine/utils.ts b/src/cse-machine/utils.ts index 89a84531b..b0c973e00 100644 --- a/src/cse-machine/utils.ts +++ b/src/cse-machine/utils.ts @@ -673,72 +673,6 @@ export const hasContinueStatement = (block: es.BlockStatement | StatementSequenc return hasContinue } -/** - * Checks whether the evaluation of the given command depends on the current environment. - * @param command The command to be checked - * @return `true` if the command is environment depedent, else `false`. - * NOTE: this check is meant to detect and avoid pushing environment instruction onto the - * control in SIMPLE CASES, so it might not be exhaustive - */ -// export const isEnvDependent = (command: ControlItem): boolean => { -// // If the result is already calculated, return it -// if (command.isEnvDependent != undefined) { -// return command.isEnvDependent -// } - -// // Otherwise, calculate and store the result -// let isDependent = true -// if (isInstr(command)) { -// const type = command.instrType -// isDependent = !( -// type === InstrType.UNARY_OP || -// type === InstrType.BINARY_OP || -// type === InstrType.POP || -// type === InstrType.ARRAY_ACCESS || -// type === InstrType.ARRAY_ASSIGNMENT || -// type === InstrType.RESET || -// type === InstrType.CONTINUE_MARKER || -// type === InstrType.BREAK_MARKER -// ) -// } else { -// const type = command.type -// switch (type) { -// case 'StatementSequence': -// isDependent = command.body.some((statement: es.Statement) => isEnvDependent(statement)) -// case 'Literal': -// isDependent = false -// break -// case 'BinaryExpression': -// isDependent = isEnvDependent(command.left) || isEnvDependent(command.right) -// break -// case 'LogicalExpression': -// isDependent = isEnvDependent(command.left) || isEnvDependent(command.right) -// break -// case 'UnaryExpression': -// isDependent = isEnvDependent(command.argument) -// break -// case 'ExpressionStatement': -// isDependent = isEnvDependent(command.expression) -// break -// default: -// break -// } -// } -// command.isEnvDependent = isDependent -// return isDependent -// } - -/** - * Checks whether an environment instruction needs to be pushed onto the control. - * @param control The current control to be checked - * @return `true` if the environment instruction can be avoided, else `false`. - * NOTE: this check is meant to detect and avoid pushing environment instruction onto the - * control in SIMPLE CASES, so it might not be exhaustive - */ -// export const canAvoidEnvInstr = (control: Control): boolean => { -// return !control.getStack().some((command: ControlItem) => isEnvDependent(command)) -// } - type PropertySetter = Map type Transformer = (item: ControlItem) => ControlItem @@ -901,14 +835,6 @@ const propertySetter: PropertySetter = new Map([ return node } ], - [ - 'Property', - (node: Node) => { - node = node as es.Property - node.isEnvDependent = isEnvDependent(node.key) || isEnvDependent(node.value) - return node - } - ], [ 'ImportDeclaration', @@ -923,57 +849,6 @@ const propertySetter: PropertySetter = new Map([ ['ImportDefaultSpecifier', setToTrue], - [ - 'ExportNamedDeclaration', - (node: Node) => { - node = node as es.ExportNamedDeclaration - node.isEnvDependent = - isEnvDependent(node.declaration) || node.specifiers.some(x => isEnvDependent(x)) - return node - } - ], - - [ - 'ExportDefaultDeclaration', - (node: Node) => { - node = node as es.ExportDefaultDeclaration - node.isEnvDependent = isEnvDependent(node.declaration) - return node - } - ], - - ['ExportSpecifier', setToTrue], - - [ - 'ClassDeclaration', - (node: Node) => { - node = node as es.ClassDeclaration - node.isEnvDependent = - isEnvDependent(node.body) || - (node.id !== null && isEnvDependent(node.id)) || - isEnvDependent(node.superClass) - return node - } - ], - - [ - 'NewExpression', - (node: Node) => { - node = node as es.NewExpression - node.isEnvDependent = node.arguments.some(x => isEnvDependent(x)) - return node - } - ], - - [ - 'MethodDefinition', - (node: Node) => { - node = node as es.MethodDefinition - node.isEnvDependent = isEnvDependent(node.key) || isEnvDependent(node.value) - return node - } - ], - [ 'FunctionExpression', (node: Node) => { @@ -986,54 +861,6 @@ const propertySetter: PropertySetter = new Map([ } ], - [ - 'ThisExpression', - (_node: es.ThisExpression) => { - return _node - } - ], - - [ - 'Super', - (_node: es.Super) => { - return _node - } - ], - - [ - 'TryStatement', - (node: Node) => { - node = node as es.TryStatement - node.isEnvDependent = - isEnvDependent(node.block) || isEnvDependent(node.handler) || isEnvDependent(node.finalizer) - return node - } - ], - [ - 'ThrowStatement', - (node: Node) => { - node = node as es.ThrowStatement - node.isEnvDependent = isEnvDependent(node.argument) - return node - } - ], - [ - 'SpreadElement', - (node: Node) => { - node = node as es.SpreadElement - node.isEnvDependent = isEnvDependent(node.argument) - return node - } - ], - [ - 'RestElement', - (node: Node) => { - node = node as es.RestElement - node.isEnvDependent = isEnvDependent(node.argument) - return node - } - ], - //Instruction [InstrType.RESET, setToFalse], [InstrType.UNARY_OP, setToFalse], @@ -1102,16 +929,11 @@ export function isEnvDependent(item: ControlItem | null | undefined): boolean { if (item.isEnvDependent !== undefined) { return item.isEnvDependent } - if (isNode(item)) { - const setter = propertySetter.get(item.type) - if (setter) { - return setter(item)?.isEnvDependent ?? false - } - } else if (isInstr(item)) { - const setter = propertySetter.get(item.instrType) - if (setter) { - return setter(item)?.isEnvDependent ?? false - } + const setter = isNode(item) ? propertySetter.get(item.type) : propertySetter.get(item.instrType) + + if (setter) { + return setter(item)?.isEnvDependent ?? false } + return false } From 4e945c898932668a6aaf5cbb2977ede7653112b3 Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Sat, 20 Jul 2024 22:06:00 +0800 Subject: [PATCH 16/19] remove incompatible instr checks --- src/cse-machine/utils.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/cse-machine/utils.ts b/src/cse-machine/utils.ts index b0c973e00..b02483100 100644 --- a/src/cse-machine/utils.ts +++ b/src/cse-machine/utils.ts @@ -872,7 +872,6 @@ const propertySetter: PropertySetter = new Map([ [InstrType.CONTINUE_MARKER, setToFalse], [InstrType.BREAK_MARKER, setToFalse], [InstrType.MARKER, setToFalse], - [InstrType.RESUME_CONT, setToFalse], [ InstrType.ENVIRONMENT, // Need further testing @@ -885,7 +884,6 @@ const propertySetter: PropertySetter = new Map([ ], [InstrType.ASSIGNMENT, setToTrue], [InstrType.ARRAY_LITERAL, setToTrue], - [InstrType.GENERATE_CONT, setToTrue], [ InstrType.WHILE, (instr: WhileInstr) => { From 8fb466bb6d7c28f093f4f47bec5a11925f921ea3 Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Sat, 20 Jul 2024 22:42:08 +0800 Subject: [PATCH 17/19] Double checked the logic --- src/cse-machine/utils.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/cse-machine/utils.ts b/src/cse-machine/utils.ts index d6205fc1e..d9302818f 100644 --- a/src/cse-machine/utils.ts +++ b/src/cse-machine/utils.ts @@ -883,12 +883,10 @@ const propertySetter: PropertySetter = new Map([ [InstrType.MARKER, setToFalse], [ InstrType.ENVIRONMENT, - // Need further testing setToFalse ], [ InstrType.APPLICATION, - // Need further testing: need to differentiate between application to call_cc and normal function setToTrue ], [InstrType.ASSIGNMENT, setToTrue], From f282ea9eb9d7d9a7358295e05c6b536343735678 Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Sat, 20 Jul 2024 22:43:25 +0800 Subject: [PATCH 18/19] Fix format --- src/cse-machine/utils.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/cse-machine/utils.ts b/src/cse-machine/utils.ts index d9302818f..5d052122a 100644 --- a/src/cse-machine/utils.ts +++ b/src/cse-machine/utils.ts @@ -881,14 +881,8 @@ const propertySetter: PropertySetter = new Map([ [InstrType.CONTINUE_MARKER, setToFalse], [InstrType.BREAK_MARKER, setToFalse], [InstrType.MARKER, setToFalse], - [ - InstrType.ENVIRONMENT, - setToFalse - ], - [ - InstrType.APPLICATION, - setToTrue - ], + [InstrType.ENVIRONMENT, setToFalse], + [InstrType.APPLICATION, setToTrue], [InstrType.ASSIGNMENT, setToTrue], [InstrType.ARRAY_LITERAL, setToTrue], [ From 34ab5b887655c4702bb74a27e514ad38dfa60c0a Mon Sep 17 00:00:00 2001 From: Dang Hoang Duy Date: Sun, 21 Jul 2024 22:25:58 +0800 Subject: [PATCH 19/19] Remove unused logic and update test cases --- .../cse-machine-runtime-context.ts.snap | 2148 +++++++++-------- .../__tests__/cse-machine-runtime-context.ts | 3 + src/cse-machine/utils.ts | 12 - 3 files changed, 1092 insertions(+), 1071 deletions(-) diff --git a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap index 5fd1a13cc..5ca51be75 100644 --- a/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap +++ b/src/cse-machine/__tests__/__snapshots__/cse-machine-runtime-context.ts.snap @@ -460,75 +460,75 @@ exports[`Avoid unnescessary environment instruction 229`] = `0`; exports[`Avoid unnescessary environment instruction 230`] = `1`; -exports[`Avoid unnescessary environment instruction 231`] = `4`; +exports[`Avoid unnescessary environment instruction 231`] = `6`; -exports[`Avoid unnescessary environment instruction 232`] = `4`; +exports[`Avoid unnescessary environment instruction 232`] = `6`; -exports[`Avoid unnescessary environment instruction 233`] = `5`; +exports[`Avoid unnescessary environment instruction 233`] = `7`; -exports[`Avoid unnescessary environment instruction 234`] = `5`; +exports[`Avoid unnescessary environment instruction 234`] = `7`; -exports[`Avoid unnescessary environment instruction 235`] = `5`; +exports[`Avoid unnescessary environment instruction 235`] = `7`; -exports[`Avoid unnescessary environment instruction 236`] = `5`; +exports[`Avoid unnescessary environment instruction 236`] = `7`; -exports[`Avoid unnescessary environment instruction 237`] = `4`; +exports[`Avoid unnescessary environment instruction 237`] = `6`; -exports[`Avoid unnescessary environment instruction 238`] = `3`; +exports[`Avoid unnescessary environment instruction 238`] = `5`; -exports[`Avoid unnescessary environment instruction 239`] = `3`; +exports[`Avoid unnescessary environment instruction 239`] = `5`; -exports[`Avoid unnescessary environment instruction 240`] = `3`; +exports[`Avoid unnescessary environment instruction 240`] = `6`; -exports[`Avoid unnescessary environment instruction 241`] = `3`; +exports[`Avoid unnescessary environment instruction 241`] = `7`; -exports[`Avoid unnescessary environment instruction 242`] = `2`; +exports[`Avoid unnescessary environment instruction 242`] = `6`; -exports[`Avoid unnescessary environment instruction 243`] = `2`; +exports[`Avoid unnescessary environment instruction 243`] = `6`; -exports[`Avoid unnescessary environment instruction 244`] = `2`; +exports[`Avoid unnescessary environment instruction 244`] = `6`; -exports[`Avoid unnescessary environment instruction 245`] = `3`; +exports[`Avoid unnescessary environment instruction 245`] = `5`; -exports[`Avoid unnescessary environment instruction 246`] = `2`; +exports[`Avoid unnescessary environment instruction 246`] = `5`; -exports[`Avoid unnescessary environment instruction 247`] = `1`; +exports[`Avoid unnescessary environment instruction 247`] = `4`; -exports[`Avoid unnescessary environment instruction 248`] = `1`; +exports[`Avoid unnescessary environment instruction 248`] = `4`; -exports[`Avoid unnescessary environment instruction 249`] = `1`; +exports[`Avoid unnescessary environment instruction 249`] = `4`; -exports[`Avoid unnescessary environment instruction 250`] = `1`; +exports[`Avoid unnescessary environment instruction 250`] = `4`; -exports[`Avoid unnescessary environment instruction 251`] = `2`; +exports[`Avoid unnescessary environment instruction 251`] = `3`; -exports[`Avoid unnescessary environment instruction 252`] = `2`; +exports[`Avoid unnescessary environment instruction 252`] = `3`; -exports[`Avoid unnescessary environment instruction 253`] = `2`; +exports[`Avoid unnescessary environment instruction 253`] = `3`; -exports[`Avoid unnescessary environment instruction 254`] = `1`; +exports[`Avoid unnescessary environment instruction 254`] = `4`; -exports[`Avoid unnescessary environment instruction 255`] = `1`; +exports[`Avoid unnescessary environment instruction 255`] = `3`; -exports[`Avoid unnescessary environment instruction 256`] = `4`; +exports[`Avoid unnescessary environment instruction 256`] = `2`; -exports[`Avoid unnescessary environment instruction 257`] = `3`; +exports[`Avoid unnescessary environment instruction 257`] = `2`; -exports[`Avoid unnescessary environment instruction 258`] = `3`; +exports[`Avoid unnescessary environment instruction 258`] = `2`; -exports[`Avoid unnescessary environment instruction 259`] = `3`; +exports[`Avoid unnescessary environment instruction 259`] = `2`; -exports[`Avoid unnescessary environment instruction 260`] = `2`; +exports[`Avoid unnescessary environment instruction 260`] = `3`; -exports[`Avoid unnescessary environment instruction 261`] = `2`; +exports[`Avoid unnescessary environment instruction 261`] = `3`; -exports[`Avoid unnescessary environment instruction 262`] = `2`; +exports[`Avoid unnescessary environment instruction 262`] = `3`; -exports[`Avoid unnescessary environment instruction 263`] = `1`; +exports[`Avoid unnescessary environment instruction 263`] = `2`; -exports[`Avoid unnescessary environment instruction 264`] = `1`; +exports[`Avoid unnescessary environment instruction 264`] = `2`; -exports[`Avoid unnescessary environment instruction 265`] = `1`; +exports[`Avoid unnescessary environment instruction 265`] = `5`; exports[`Avoid unnescessary environment instruction 266`] = `4`; @@ -536,153 +536,153 @@ exports[`Avoid unnescessary environment instruction 267`] = `4`; exports[`Avoid unnescessary environment instruction 268`] = `4`; -exports[`Avoid unnescessary environment instruction 269`] = `5`; +exports[`Avoid unnescessary environment instruction 269`] = `3`; -exports[`Avoid unnescessary environment instruction 270`] = `6`; +exports[`Avoid unnescessary environment instruction 270`] = `3`; -exports[`Avoid unnescessary environment instruction 271`] = `5`; +exports[`Avoid unnescessary environment instruction 271`] = `3`; -exports[`Avoid unnescessary environment instruction 272`] = `4`; +exports[`Avoid unnescessary environment instruction 272`] = `2`; -exports[`Avoid unnescessary environment instruction 273`] = `4`; +exports[`Avoid unnescessary environment instruction 273`] = `2`; -exports[`Avoid unnescessary environment instruction 274`] = `4`; +exports[`Avoid unnescessary environment instruction 274`] = `2`; exports[`Avoid unnescessary environment instruction 275`] = `5`; -exports[`Avoid unnescessary environment instruction 276`] = `6`; +exports[`Avoid unnescessary environment instruction 276`] = `5`; exports[`Avoid unnescessary environment instruction 277`] = `5`; -exports[`Avoid unnescessary environment instruction 278`] = `4`; +exports[`Avoid unnescessary environment instruction 278`] = `6`; -exports[`Avoid unnescessary environment instruction 279`] = `4`; +exports[`Avoid unnescessary environment instruction 279`] = `7`; -exports[`Avoid unnescessary environment instruction 280`] = `4`; +exports[`Avoid unnescessary environment instruction 280`] = `6`; -exports[`Avoid unnescessary environment instruction 281`] = `6`; +exports[`Avoid unnescessary environment instruction 281`] = `5`; -exports[`Avoid unnescessary environment instruction 282`] = `6`; +exports[`Avoid unnescessary environment instruction 282`] = `5`; -exports[`Avoid unnescessary environment instruction 283`] = `6`; +exports[`Avoid unnescessary environment instruction 283`] = `5`; -exports[`Avoid unnescessary environment instruction 284`] = `5`; +exports[`Avoid unnescessary environment instruction 284`] = `6`; -exports[`Avoid unnescessary environment instruction 285`] = `5`; +exports[`Avoid unnescessary environment instruction 285`] = `7`; -exports[`Avoid unnescessary environment instruction 286`] = `7`; +exports[`Avoid unnescessary environment instruction 286`] = `6`; -exports[`Avoid unnescessary environment instruction 287`] = `6`; +exports[`Avoid unnescessary environment instruction 287`] = `5`; -exports[`Avoid unnescessary environment instruction 288`] = `7`; +exports[`Avoid unnescessary environment instruction 288`] = `5`; -exports[`Avoid unnescessary environment instruction 289`] = `6`; +exports[`Avoid unnescessary environment instruction 289`] = `5`; -exports[`Avoid unnescessary environment instruction 290`] = `5`; +exports[`Avoid unnescessary environment instruction 290`] = `7`; -exports[`Avoid unnescessary environment instruction 291`] = `5`; +exports[`Avoid unnescessary environment instruction 291`] = `7`; exports[`Avoid unnescessary environment instruction 292`] = `7`; -exports[`Avoid unnescessary environment instruction 293`] = `7`; +exports[`Avoid unnescessary environment instruction 293`] = `6`; -exports[`Avoid unnescessary environment instruction 294`] = `8`; +exports[`Avoid unnescessary environment instruction 294`] = `6`; -exports[`Avoid unnescessary environment instruction 295`] = `9`; +exports[`Avoid unnescessary environment instruction 295`] = `8`; -exports[`Avoid unnescessary environment instruction 296`] = `12`; +exports[`Avoid unnescessary environment instruction 296`] = `7`; -exports[`Avoid unnescessary environment instruction 297`] = `11`; +exports[`Avoid unnescessary environment instruction 297`] = `8`; -exports[`Avoid unnescessary environment instruction 298`] = `10`; +exports[`Avoid unnescessary environment instruction 298`] = `7`; -exports[`Avoid unnescessary environment instruction 299`] = `9`; +exports[`Avoid unnescessary environment instruction 299`] = `6`; -exports[`Avoid unnescessary environment instruction 300`] = `9`; +exports[`Avoid unnescessary environment instruction 300`] = `6`; -exports[`Avoid unnescessary environment instruction 301`] = `10`; +exports[`Avoid unnescessary environment instruction 301`] = `8`; -exports[`Avoid unnescessary environment instruction 302`] = `9`; +exports[`Avoid unnescessary environment instruction 302`] = `8`; -exports[`Avoid unnescessary environment instruction 303`] = `8`; +exports[`Avoid unnescessary environment instruction 303`] = `9`; -exports[`Avoid unnescessary environment instruction 304`] = `8`; +exports[`Avoid unnescessary environment instruction 304`] = `10`; -exports[`Avoid unnescessary environment instruction 305`] = `8`; +exports[`Avoid unnescessary environment instruction 305`] = `13`; -exports[`Avoid unnescessary environment instruction 306`] = `7`; +exports[`Avoid unnescessary environment instruction 306`] = `12`; -exports[`Avoid unnescessary environment instruction 307`] = `7`; +exports[`Avoid unnescessary environment instruction 307`] = `11`; -exports[`Avoid unnescessary environment instruction 308`] = `8`; +exports[`Avoid unnescessary environment instruction 308`] = `10`; -exports[`Avoid unnescessary environment instruction 309`] = `8`; +exports[`Avoid unnescessary environment instruction 309`] = `10`; -exports[`Avoid unnescessary environment instruction 310`] = `7`; +exports[`Avoid unnescessary environment instruction 310`] = `11`; -exports[`Avoid unnescessary environment instruction 311`] = `7`; +exports[`Avoid unnescessary environment instruction 311`] = `10`; -exports[`Avoid unnescessary environment instruction 312`] = `7`; +exports[`Avoid unnescessary environment instruction 312`] = `9`; -exports[`Avoid unnescessary environment instruction 313`] = `6`; +exports[`Avoid unnescessary environment instruction 313`] = `9`; -exports[`Avoid unnescessary environment instruction 314`] = `7`; +exports[`Avoid unnescessary environment instruction 314`] = `9`; -exports[`Avoid unnescessary environment instruction 315`] = `6`; +exports[`Avoid unnescessary environment instruction 315`] = `8`; -exports[`Avoid unnescessary environment instruction 316`] = `5`; +exports[`Avoid unnescessary environment instruction 316`] = `8`; -exports[`Avoid unnescessary environment instruction 317`] = `5`; +exports[`Avoid unnescessary environment instruction 317`] = `9`; -exports[`Avoid unnescessary environment instruction 318`] = `4`; +exports[`Avoid unnescessary environment instruction 318`] = `9`; -exports[`Avoid unnescessary environment instruction 319`] = `4`; +exports[`Avoid unnescessary environment instruction 319`] = `8`; -exports[`Avoid unnescessary environment instruction 320`] = `5`; +exports[`Avoid unnescessary environment instruction 320`] = `8`; -exports[`Avoid unnescessary environment instruction 321`] = `5`; +exports[`Avoid unnescessary environment instruction 321`] = `8`; -exports[`Avoid unnescessary environment instruction 322`] = `6`; +exports[`Avoid unnescessary environment instruction 322`] = `7`; -exports[`Avoid unnescessary environment instruction 323`] = `6`; +exports[`Avoid unnescessary environment instruction 323`] = `8`; -exports[`Avoid unnescessary environment instruction 324`] = `5`; +exports[`Avoid unnescessary environment instruction 324`] = `7`; -exports[`Avoid unnescessary environment instruction 325`] = `5`; +exports[`Avoid unnescessary environment instruction 325`] = `6`; -exports[`Avoid unnescessary environment instruction 326`] = `5`; +exports[`Avoid unnescessary environment instruction 326`] = `6`; -exports[`Avoid unnescessary environment instruction 327`] = `4`; +exports[`Avoid unnescessary environment instruction 327`] = `5`; -exports[`Avoid unnescessary environment instruction 328`] = `4`; +exports[`Avoid unnescessary environment instruction 328`] = `5`; -exports[`Avoid unnescessary environment instruction 329`] = `4`; +exports[`Avoid unnescessary environment instruction 329`] = `6`; -exports[`Avoid unnescessary environment instruction 330`] = `3`; +exports[`Avoid unnescessary environment instruction 330`] = `6`; -exports[`Avoid unnescessary environment instruction 331`] = `3`; +exports[`Avoid unnescessary environment instruction 331`] = `7`; -exports[`Avoid unnescessary environment instruction 332`] = `4`; +exports[`Avoid unnescessary environment instruction 332`] = `7`; -exports[`Avoid unnescessary environment instruction 333`] = `4`; +exports[`Avoid unnescessary environment instruction 333`] = `6`; -exports[`Avoid unnescessary environment instruction 334`] = `3`; +exports[`Avoid unnescessary environment instruction 334`] = `6`; -exports[`Avoid unnescessary environment instruction 335`] = `3`; +exports[`Avoid unnescessary environment instruction 335`] = `6`; -exports[`Avoid unnescessary environment instruction 336`] = `3`; +exports[`Avoid unnescessary environment instruction 336`] = `5`; -exports[`Avoid unnescessary environment instruction 337`] = `2`; +exports[`Avoid unnescessary environment instruction 337`] = `5`; -exports[`Avoid unnescessary environment instruction 338`] = `2`; +exports[`Avoid unnescessary environment instruction 338`] = `5`; -exports[`Avoid unnescessary environment instruction 339`] = `2`; +exports[`Avoid unnescessary environment instruction 339`] = `4`; -exports[`Avoid unnescessary environment instruction 340`] = `1`; +exports[`Avoid unnescessary environment instruction 340`] = `4`; -exports[`Avoid unnescessary environment instruction 341`] = `1`; +exports[`Avoid unnescessary environment instruction 341`] = `5`; -exports[`Avoid unnescessary environment instruction 342`] = `1`; +exports[`Avoid unnescessary environment instruction 342`] = `5`; exports[`Avoid unnescessary environment instruction 343`] = `4`; @@ -690,205 +690,205 @@ exports[`Avoid unnescessary environment instruction 344`] = `4`; exports[`Avoid unnescessary environment instruction 345`] = `4`; -exports[`Avoid unnescessary environment instruction 346`] = `5`; +exports[`Avoid unnescessary environment instruction 346`] = `3`; -exports[`Avoid unnescessary environment instruction 347`] = `6`; +exports[`Avoid unnescessary environment instruction 347`] = `3`; -exports[`Avoid unnescessary environment instruction 348`] = `5`; +exports[`Avoid unnescessary environment instruction 348`] = `3`; -exports[`Avoid unnescessary environment instruction 349`] = `4`; +exports[`Avoid unnescessary environment instruction 349`] = `2`; -exports[`Avoid unnescessary environment instruction 350`] = `4`; +exports[`Avoid unnescessary environment instruction 350`] = `2`; -exports[`Avoid unnescessary environment instruction 351`] = `4`; +exports[`Avoid unnescessary environment instruction 351`] = `2`; exports[`Avoid unnescessary environment instruction 352`] = `5`; -exports[`Avoid unnescessary environment instruction 353`] = `6`; +exports[`Avoid unnescessary environment instruction 353`] = `5`; exports[`Avoid unnescessary environment instruction 354`] = `5`; -exports[`Avoid unnescessary environment instruction 355`] = `4`; +exports[`Avoid unnescessary environment instruction 355`] = `6`; -exports[`Avoid unnescessary environment instruction 356`] = `4`; +exports[`Avoid unnescessary environment instruction 356`] = `7`; -exports[`Avoid unnescessary environment instruction 357`] = `4`; +exports[`Avoid unnescessary environment instruction 357`] = `6`; -exports[`Avoid unnescessary environment instruction 358`] = `6`; +exports[`Avoid unnescessary environment instruction 358`] = `5`; -exports[`Avoid unnescessary environment instruction 359`] = `6`; +exports[`Avoid unnescessary environment instruction 359`] = `5`; -exports[`Avoid unnescessary environment instruction 360`] = `6`; +exports[`Avoid unnescessary environment instruction 360`] = `5`; -exports[`Avoid unnescessary environment instruction 361`] = `5`; +exports[`Avoid unnescessary environment instruction 361`] = `6`; -exports[`Avoid unnescessary environment instruction 362`] = `5`; +exports[`Avoid unnescessary environment instruction 362`] = `7`; -exports[`Avoid unnescessary environment instruction 363`] = `7`; +exports[`Avoid unnescessary environment instruction 363`] = `6`; -exports[`Avoid unnescessary environment instruction 364`] = `6`; +exports[`Avoid unnescessary environment instruction 364`] = `5`; -exports[`Avoid unnescessary environment instruction 365`] = `7`; +exports[`Avoid unnescessary environment instruction 365`] = `5`; -exports[`Avoid unnescessary environment instruction 366`] = `6`; +exports[`Avoid unnescessary environment instruction 366`] = `5`; -exports[`Avoid unnescessary environment instruction 367`] = `5`; +exports[`Avoid unnescessary environment instruction 367`] = `7`; -exports[`Avoid unnescessary environment instruction 368`] = `5`; +exports[`Avoid unnescessary environment instruction 368`] = `7`; exports[`Avoid unnescessary environment instruction 369`] = `7`; -exports[`Avoid unnescessary environment instruction 370`] = `7`; +exports[`Avoid unnescessary environment instruction 370`] = `6`; -exports[`Avoid unnescessary environment instruction 371`] = `8`; +exports[`Avoid unnescessary environment instruction 371`] = `6`; -exports[`Avoid unnescessary environment instruction 372`] = `9`; +exports[`Avoid unnescessary environment instruction 372`] = `8`; -exports[`Avoid unnescessary environment instruction 373`] = `12`; +exports[`Avoid unnescessary environment instruction 373`] = `7`; -exports[`Avoid unnescessary environment instruction 374`] = `11`; +exports[`Avoid unnescessary environment instruction 374`] = `8`; -exports[`Avoid unnescessary environment instruction 375`] = `10`; +exports[`Avoid unnescessary environment instruction 375`] = `7`; -exports[`Avoid unnescessary environment instruction 376`] = `9`; +exports[`Avoid unnescessary environment instruction 376`] = `6`; -exports[`Avoid unnescessary environment instruction 377`] = `9`; +exports[`Avoid unnescessary environment instruction 377`] = `6`; -exports[`Avoid unnescessary environment instruction 378`] = `10`; +exports[`Avoid unnescessary environment instruction 378`] = `8`; -exports[`Avoid unnescessary environment instruction 379`] = `9`; +exports[`Avoid unnescessary environment instruction 379`] = `8`; -exports[`Avoid unnescessary environment instruction 380`] = `8`; +exports[`Avoid unnescessary environment instruction 380`] = `9`; -exports[`Avoid unnescessary environment instruction 381`] = `8`; +exports[`Avoid unnescessary environment instruction 381`] = `10`; -exports[`Avoid unnescessary environment instruction 382`] = `8`; +exports[`Avoid unnescessary environment instruction 382`] = `13`; -exports[`Avoid unnescessary environment instruction 383`] = `7`; +exports[`Avoid unnescessary environment instruction 383`] = `12`; -exports[`Avoid unnescessary environment instruction 384`] = `7`; +exports[`Avoid unnescessary environment instruction 384`] = `11`; -exports[`Avoid unnescessary environment instruction 385`] = `8`; +exports[`Avoid unnescessary environment instruction 385`] = `10`; -exports[`Avoid unnescessary environment instruction 386`] = `8`; +exports[`Avoid unnescessary environment instruction 386`] = `10`; -exports[`Avoid unnescessary environment instruction 387`] = `7`; +exports[`Avoid unnescessary environment instruction 387`] = `11`; -exports[`Avoid unnescessary environment instruction 388`] = `7`; +exports[`Avoid unnescessary environment instruction 388`] = `10`; -exports[`Avoid unnescessary environment instruction 389`] = `7`; +exports[`Avoid unnescessary environment instruction 389`] = `9`; -exports[`Avoid unnescessary environment instruction 390`] = `6`; +exports[`Avoid unnescessary environment instruction 390`] = `9`; -exports[`Avoid unnescessary environment instruction 391`] = `7`; +exports[`Avoid unnescessary environment instruction 391`] = `9`; -exports[`Avoid unnescessary environment instruction 392`] = `6`; +exports[`Avoid unnescessary environment instruction 392`] = `8`; -exports[`Avoid unnescessary environment instruction 393`] = `5`; +exports[`Avoid unnescessary environment instruction 393`] = `8`; -exports[`Avoid unnescessary environment instruction 394`] = `5`; +exports[`Avoid unnescessary environment instruction 394`] = `9`; -exports[`Avoid unnescessary environment instruction 395`] = `7`; +exports[`Avoid unnescessary environment instruction 395`] = `9`; -exports[`Avoid unnescessary environment instruction 396`] = `7`; +exports[`Avoid unnescessary environment instruction 396`] = `8`; exports[`Avoid unnescessary environment instruction 397`] = `8`; -exports[`Avoid unnescessary environment instruction 398`] = `9`; +exports[`Avoid unnescessary environment instruction 398`] = `8`; -exports[`Avoid unnescessary environment instruction 399`] = `12`; +exports[`Avoid unnescessary environment instruction 399`] = `7`; -exports[`Avoid unnescessary environment instruction 400`] = `11`; +exports[`Avoid unnescessary environment instruction 400`] = `8`; -exports[`Avoid unnescessary environment instruction 401`] = `10`; +exports[`Avoid unnescessary environment instruction 401`] = `7`; -exports[`Avoid unnescessary environment instruction 402`] = `9`; +exports[`Avoid unnescessary environment instruction 402`] = `6`; -exports[`Avoid unnescessary environment instruction 403`] = `9`; +exports[`Avoid unnescessary environment instruction 403`] = `6`; -exports[`Avoid unnescessary environment instruction 404`] = `10`; +exports[`Avoid unnescessary environment instruction 404`] = `8`; -exports[`Avoid unnescessary environment instruction 405`] = `9`; +exports[`Avoid unnescessary environment instruction 405`] = `8`; -exports[`Avoid unnescessary environment instruction 406`] = `8`; +exports[`Avoid unnescessary environment instruction 406`] = `9`; -exports[`Avoid unnescessary environment instruction 407`] = `8`; +exports[`Avoid unnescessary environment instruction 407`] = `10`; -exports[`Avoid unnescessary environment instruction 408`] = `8`; +exports[`Avoid unnescessary environment instruction 408`] = `13`; -exports[`Avoid unnescessary environment instruction 409`] = `7`; +exports[`Avoid unnescessary environment instruction 409`] = `12`; -exports[`Avoid unnescessary environment instruction 410`] = `7`; +exports[`Avoid unnescessary environment instruction 410`] = `11`; -exports[`Avoid unnescessary environment instruction 411`] = `8`; +exports[`Avoid unnescessary environment instruction 411`] = `10`; -exports[`Avoid unnescessary environment instruction 412`] = `8`; +exports[`Avoid unnescessary environment instruction 412`] = `10`; -exports[`Avoid unnescessary environment instruction 413`] = `7`; +exports[`Avoid unnescessary environment instruction 413`] = `11`; -exports[`Avoid unnescessary environment instruction 414`] = `7`; +exports[`Avoid unnescessary environment instruction 414`] = `10`; -exports[`Avoid unnescessary environment instruction 415`] = `7`; +exports[`Avoid unnescessary environment instruction 415`] = `9`; -exports[`Avoid unnescessary environment instruction 416`] = `6`; +exports[`Avoid unnescessary environment instruction 416`] = `9`; -exports[`Avoid unnescessary environment instruction 417`] = `7`; +exports[`Avoid unnescessary environment instruction 417`] = `9`; -exports[`Avoid unnescessary environment instruction 418`] = `6`; +exports[`Avoid unnescessary environment instruction 418`] = `8`; -exports[`Avoid unnescessary environment instruction 419`] = `5`; +exports[`Avoid unnescessary environment instruction 419`] = `8`; -exports[`Avoid unnescessary environment instruction 420`] = `5`; +exports[`Avoid unnescessary environment instruction 420`] = `9`; -exports[`Avoid unnescessary environment instruction 421`] = `4`; +exports[`Avoid unnescessary environment instruction 421`] = `9`; -exports[`Avoid unnescessary environment instruction 422`] = `4`; +exports[`Avoid unnescessary environment instruction 422`] = `8`; -exports[`Avoid unnescessary environment instruction 423`] = `5`; +exports[`Avoid unnescessary environment instruction 423`] = `8`; -exports[`Avoid unnescessary environment instruction 424`] = `5`; +exports[`Avoid unnescessary environment instruction 424`] = `8`; -exports[`Avoid unnescessary environment instruction 425`] = `6`; +exports[`Avoid unnescessary environment instruction 425`] = `7`; -exports[`Avoid unnescessary environment instruction 426`] = `6`; +exports[`Avoid unnescessary environment instruction 426`] = `8`; -exports[`Avoid unnescessary environment instruction 427`] = `5`; +exports[`Avoid unnescessary environment instruction 427`] = `7`; -exports[`Avoid unnescessary environment instruction 428`] = `5`; +exports[`Avoid unnescessary environment instruction 428`] = `6`; -exports[`Avoid unnescessary environment instruction 429`] = `5`; +exports[`Avoid unnescessary environment instruction 429`] = `6`; -exports[`Avoid unnescessary environment instruction 430`] = `4`; +exports[`Avoid unnescessary environment instruction 430`] = `5`; -exports[`Avoid unnescessary environment instruction 431`] = `4`; +exports[`Avoid unnescessary environment instruction 431`] = `5`; -exports[`Avoid unnescessary environment instruction 432`] = `4`; +exports[`Avoid unnescessary environment instruction 432`] = `6`; -exports[`Avoid unnescessary environment instruction 433`] = `3`; +exports[`Avoid unnescessary environment instruction 433`] = `6`; -exports[`Avoid unnescessary environment instruction 434`] = `3`; +exports[`Avoid unnescessary environment instruction 434`] = `7`; -exports[`Avoid unnescessary environment instruction 435`] = `4`; +exports[`Avoid unnescessary environment instruction 435`] = `7`; -exports[`Avoid unnescessary environment instruction 436`] = `4`; +exports[`Avoid unnescessary environment instruction 436`] = `6`; -exports[`Avoid unnescessary environment instruction 437`] = `3`; +exports[`Avoid unnescessary environment instruction 437`] = `6`; -exports[`Avoid unnescessary environment instruction 438`] = `3`; +exports[`Avoid unnescessary environment instruction 438`] = `6`; -exports[`Avoid unnescessary environment instruction 439`] = `3`; +exports[`Avoid unnescessary environment instruction 439`] = `5`; -exports[`Avoid unnescessary environment instruction 440`] = `2`; +exports[`Avoid unnescessary environment instruction 440`] = `5`; -exports[`Avoid unnescessary environment instruction 441`] = `2`; +exports[`Avoid unnescessary environment instruction 441`] = `5`; -exports[`Avoid unnescessary environment instruction 442`] = `2`; +exports[`Avoid unnescessary environment instruction 442`] = `4`; -exports[`Avoid unnescessary environment instruction 443`] = `1`; +exports[`Avoid unnescessary environment instruction 443`] = `4`; -exports[`Avoid unnescessary environment instruction 444`] = `1`; +exports[`Avoid unnescessary environment instruction 444`] = `5`; -exports[`Avoid unnescessary environment instruction 445`] = `1`; +exports[`Avoid unnescessary environment instruction 445`] = `5`; exports[`Avoid unnescessary environment instruction 446`] = `4`; @@ -896,257 +896,257 @@ exports[`Avoid unnescessary environment instruction 447`] = `4`; exports[`Avoid unnescessary environment instruction 448`] = `4`; -exports[`Avoid unnescessary environment instruction 449`] = `5`; +exports[`Avoid unnescessary environment instruction 449`] = `3`; -exports[`Avoid unnescessary environment instruction 450`] = `6`; +exports[`Avoid unnescessary environment instruction 450`] = `3`; -exports[`Avoid unnescessary environment instruction 451`] = `5`; +exports[`Avoid unnescessary environment instruction 451`] = `3`; -exports[`Avoid unnescessary environment instruction 452`] = `4`; +exports[`Avoid unnescessary environment instruction 452`] = `2`; -exports[`Avoid unnescessary environment instruction 453`] = `4`; +exports[`Avoid unnescessary environment instruction 453`] = `2`; -exports[`Avoid unnescessary environment instruction 454`] = `4`; +exports[`Avoid unnescessary environment instruction 454`] = `2`; exports[`Avoid unnescessary environment instruction 455`] = `5`; -exports[`Avoid unnescessary environment instruction 456`] = `6`; +exports[`Avoid unnescessary environment instruction 456`] = `5`; exports[`Avoid unnescessary environment instruction 457`] = `5`; -exports[`Avoid unnescessary environment instruction 458`] = `4`; +exports[`Avoid unnescessary environment instruction 458`] = `6`; -exports[`Avoid unnescessary environment instruction 459`] = `4`; +exports[`Avoid unnescessary environment instruction 459`] = `7`; -exports[`Avoid unnescessary environment instruction 460`] = `4`; +exports[`Avoid unnescessary environment instruction 460`] = `6`; -exports[`Avoid unnescessary environment instruction 461`] = `6`; +exports[`Avoid unnescessary environment instruction 461`] = `5`; -exports[`Avoid unnescessary environment instruction 462`] = `6`; +exports[`Avoid unnescessary environment instruction 462`] = `5`; -exports[`Avoid unnescessary environment instruction 463`] = `6`; +exports[`Avoid unnescessary environment instruction 463`] = `5`; -exports[`Avoid unnescessary environment instruction 464`] = `5`; +exports[`Avoid unnescessary environment instruction 464`] = `6`; -exports[`Avoid unnescessary environment instruction 465`] = `5`; +exports[`Avoid unnescessary environment instruction 465`] = `7`; -exports[`Avoid unnescessary environment instruction 466`] = `7`; +exports[`Avoid unnescessary environment instruction 466`] = `6`; -exports[`Avoid unnescessary environment instruction 467`] = `6`; +exports[`Avoid unnescessary environment instruction 467`] = `5`; -exports[`Avoid unnescessary environment instruction 468`] = `7`; +exports[`Avoid unnescessary environment instruction 468`] = `5`; -exports[`Avoid unnescessary environment instruction 469`] = `6`; +exports[`Avoid unnescessary environment instruction 469`] = `5`; -exports[`Avoid unnescessary environment instruction 470`] = `5`; +exports[`Avoid unnescessary environment instruction 470`] = `7`; -exports[`Avoid unnescessary environment instruction 471`] = `5`; +exports[`Avoid unnescessary environment instruction 471`] = `7`; exports[`Avoid unnescessary environment instruction 472`] = `7`; -exports[`Avoid unnescessary environment instruction 473`] = `7`; +exports[`Avoid unnescessary environment instruction 473`] = `6`; -exports[`Avoid unnescessary environment instruction 474`] = `8`; +exports[`Avoid unnescessary environment instruction 474`] = `6`; -exports[`Avoid unnescessary environment instruction 475`] = `9`; +exports[`Avoid unnescessary environment instruction 475`] = `8`; -exports[`Avoid unnescessary environment instruction 476`] = `12`; +exports[`Avoid unnescessary environment instruction 476`] = `7`; -exports[`Avoid unnescessary environment instruction 477`] = `11`; +exports[`Avoid unnescessary environment instruction 477`] = `8`; -exports[`Avoid unnescessary environment instruction 478`] = `10`; +exports[`Avoid unnescessary environment instruction 478`] = `7`; -exports[`Avoid unnescessary environment instruction 479`] = `9`; +exports[`Avoid unnescessary environment instruction 479`] = `6`; -exports[`Avoid unnescessary environment instruction 480`] = `9`; +exports[`Avoid unnescessary environment instruction 480`] = `6`; -exports[`Avoid unnescessary environment instruction 481`] = `10`; +exports[`Avoid unnescessary environment instruction 481`] = `8`; -exports[`Avoid unnescessary environment instruction 482`] = `9`; +exports[`Avoid unnescessary environment instruction 482`] = `8`; -exports[`Avoid unnescessary environment instruction 483`] = `8`; +exports[`Avoid unnescessary environment instruction 483`] = `9`; -exports[`Avoid unnescessary environment instruction 484`] = `8`; +exports[`Avoid unnescessary environment instruction 484`] = `10`; -exports[`Avoid unnescessary environment instruction 485`] = `8`; +exports[`Avoid unnescessary environment instruction 485`] = `13`; -exports[`Avoid unnescessary environment instruction 486`] = `7`; +exports[`Avoid unnescessary environment instruction 486`] = `12`; -exports[`Avoid unnescessary environment instruction 487`] = `7`; +exports[`Avoid unnescessary environment instruction 487`] = `11`; -exports[`Avoid unnescessary environment instruction 488`] = `8`; +exports[`Avoid unnescessary environment instruction 488`] = `10`; -exports[`Avoid unnescessary environment instruction 489`] = `8`; +exports[`Avoid unnescessary environment instruction 489`] = `10`; -exports[`Avoid unnescessary environment instruction 490`] = `7`; +exports[`Avoid unnescessary environment instruction 490`] = `11`; -exports[`Avoid unnescessary environment instruction 491`] = `7`; +exports[`Avoid unnescessary environment instruction 491`] = `10`; -exports[`Avoid unnescessary environment instruction 492`] = `7`; +exports[`Avoid unnescessary environment instruction 492`] = `9`; -exports[`Avoid unnescessary environment instruction 493`] = `6`; +exports[`Avoid unnescessary environment instruction 493`] = `9`; -exports[`Avoid unnescessary environment instruction 494`] = `7`; +exports[`Avoid unnescessary environment instruction 494`] = `9`; -exports[`Avoid unnescessary environment instruction 495`] = `6`; +exports[`Avoid unnescessary environment instruction 495`] = `8`; -exports[`Avoid unnescessary environment instruction 496`] = `5`; +exports[`Avoid unnescessary environment instruction 496`] = `8`; -exports[`Avoid unnescessary environment instruction 497`] = `5`; +exports[`Avoid unnescessary environment instruction 497`] = `9`; -exports[`Avoid unnescessary environment instruction 498`] = `7`; +exports[`Avoid unnescessary environment instruction 498`] = `9`; -exports[`Avoid unnescessary environment instruction 499`] = `7`; +exports[`Avoid unnescessary environment instruction 499`] = `8`; exports[`Avoid unnescessary environment instruction 500`] = `8`; -exports[`Avoid unnescessary environment instruction 501`] = `9`; +exports[`Avoid unnescessary environment instruction 501`] = `8`; -exports[`Avoid unnescessary environment instruction 502`] = `12`; +exports[`Avoid unnescessary environment instruction 502`] = `7`; -exports[`Avoid unnescessary environment instruction 503`] = `11`; +exports[`Avoid unnescessary environment instruction 503`] = `8`; -exports[`Avoid unnescessary environment instruction 504`] = `10`; +exports[`Avoid unnescessary environment instruction 504`] = `7`; -exports[`Avoid unnescessary environment instruction 505`] = `9`; +exports[`Avoid unnescessary environment instruction 505`] = `6`; -exports[`Avoid unnescessary environment instruction 506`] = `9`; +exports[`Avoid unnescessary environment instruction 506`] = `6`; -exports[`Avoid unnescessary environment instruction 507`] = `10`; +exports[`Avoid unnescessary environment instruction 507`] = `8`; -exports[`Avoid unnescessary environment instruction 508`] = `9`; +exports[`Avoid unnescessary environment instruction 508`] = `8`; -exports[`Avoid unnescessary environment instruction 509`] = `8`; +exports[`Avoid unnescessary environment instruction 509`] = `9`; -exports[`Avoid unnescessary environment instruction 510`] = `8`; +exports[`Avoid unnescessary environment instruction 510`] = `10`; -exports[`Avoid unnescessary environment instruction 511`] = `8`; +exports[`Avoid unnescessary environment instruction 511`] = `13`; -exports[`Avoid unnescessary environment instruction 512`] = `7`; +exports[`Avoid unnescessary environment instruction 512`] = `12`; -exports[`Avoid unnescessary environment instruction 513`] = `7`; +exports[`Avoid unnescessary environment instruction 513`] = `11`; -exports[`Avoid unnescessary environment instruction 514`] = `8`; +exports[`Avoid unnescessary environment instruction 514`] = `10`; -exports[`Avoid unnescessary environment instruction 515`] = `8`; +exports[`Avoid unnescessary environment instruction 515`] = `10`; -exports[`Avoid unnescessary environment instruction 516`] = `7`; +exports[`Avoid unnescessary environment instruction 516`] = `11`; -exports[`Avoid unnescessary environment instruction 517`] = `7`; +exports[`Avoid unnescessary environment instruction 517`] = `10`; -exports[`Avoid unnescessary environment instruction 518`] = `7`; +exports[`Avoid unnescessary environment instruction 518`] = `9`; -exports[`Avoid unnescessary environment instruction 519`] = `6`; +exports[`Avoid unnescessary environment instruction 519`] = `9`; -exports[`Avoid unnescessary environment instruction 520`] = `7`; +exports[`Avoid unnescessary environment instruction 520`] = `9`; -exports[`Avoid unnescessary environment instruction 521`] = `6`; +exports[`Avoid unnescessary environment instruction 521`] = `8`; -exports[`Avoid unnescessary environment instruction 522`] = `5`; +exports[`Avoid unnescessary environment instruction 522`] = `8`; -exports[`Avoid unnescessary environment instruction 523`] = `5`; +exports[`Avoid unnescessary environment instruction 523`] = `9`; -exports[`Avoid unnescessary environment instruction 524`] = `7`; +exports[`Avoid unnescessary environment instruction 524`] = `9`; -exports[`Avoid unnescessary environment instruction 525`] = `7`; +exports[`Avoid unnescessary environment instruction 525`] = `8`; exports[`Avoid unnescessary environment instruction 526`] = `8`; -exports[`Avoid unnescessary environment instruction 527`] = `9`; +exports[`Avoid unnescessary environment instruction 527`] = `8`; -exports[`Avoid unnescessary environment instruction 528`] = `12`; +exports[`Avoid unnescessary environment instruction 528`] = `7`; -exports[`Avoid unnescessary environment instruction 529`] = `11`; +exports[`Avoid unnescessary environment instruction 529`] = `8`; -exports[`Avoid unnescessary environment instruction 530`] = `10`; +exports[`Avoid unnescessary environment instruction 530`] = `7`; -exports[`Avoid unnescessary environment instruction 531`] = `9`; +exports[`Avoid unnescessary environment instruction 531`] = `6`; -exports[`Avoid unnescessary environment instruction 532`] = `9`; +exports[`Avoid unnescessary environment instruction 532`] = `6`; -exports[`Avoid unnescessary environment instruction 533`] = `10`; +exports[`Avoid unnescessary environment instruction 533`] = `8`; -exports[`Avoid unnescessary environment instruction 534`] = `9`; +exports[`Avoid unnescessary environment instruction 534`] = `8`; -exports[`Avoid unnescessary environment instruction 535`] = `8`; +exports[`Avoid unnescessary environment instruction 535`] = `9`; -exports[`Avoid unnescessary environment instruction 536`] = `8`; +exports[`Avoid unnescessary environment instruction 536`] = `10`; -exports[`Avoid unnescessary environment instruction 537`] = `8`; +exports[`Avoid unnescessary environment instruction 537`] = `13`; -exports[`Avoid unnescessary environment instruction 538`] = `7`; +exports[`Avoid unnescessary environment instruction 538`] = `12`; -exports[`Avoid unnescessary environment instruction 539`] = `7`; +exports[`Avoid unnescessary environment instruction 539`] = `11`; -exports[`Avoid unnescessary environment instruction 540`] = `8`; +exports[`Avoid unnescessary environment instruction 540`] = `10`; -exports[`Avoid unnescessary environment instruction 541`] = `8`; +exports[`Avoid unnescessary environment instruction 541`] = `10`; -exports[`Avoid unnescessary environment instruction 542`] = `7`; +exports[`Avoid unnescessary environment instruction 542`] = `11`; -exports[`Avoid unnescessary environment instruction 543`] = `7`; +exports[`Avoid unnescessary environment instruction 543`] = `10`; -exports[`Avoid unnescessary environment instruction 544`] = `7`; +exports[`Avoid unnescessary environment instruction 544`] = `9`; -exports[`Avoid unnescessary environment instruction 545`] = `6`; +exports[`Avoid unnescessary environment instruction 545`] = `9`; -exports[`Avoid unnescessary environment instruction 546`] = `7`; +exports[`Avoid unnescessary environment instruction 546`] = `9`; -exports[`Avoid unnescessary environment instruction 547`] = `6`; +exports[`Avoid unnescessary environment instruction 547`] = `8`; -exports[`Avoid unnescessary environment instruction 548`] = `5`; +exports[`Avoid unnescessary environment instruction 548`] = `8`; -exports[`Avoid unnescessary environment instruction 549`] = `5`; +exports[`Avoid unnescessary environment instruction 549`] = `9`; -exports[`Avoid unnescessary environment instruction 550`] = `4`; +exports[`Avoid unnescessary environment instruction 550`] = `9`; -exports[`Avoid unnescessary environment instruction 551`] = `4`; +exports[`Avoid unnescessary environment instruction 551`] = `8`; -exports[`Avoid unnescessary environment instruction 552`] = `5`; +exports[`Avoid unnescessary environment instruction 552`] = `8`; -exports[`Avoid unnescessary environment instruction 553`] = `5`; +exports[`Avoid unnescessary environment instruction 553`] = `8`; -exports[`Avoid unnescessary environment instruction 554`] = `6`; +exports[`Avoid unnescessary environment instruction 554`] = `7`; -exports[`Avoid unnescessary environment instruction 555`] = `6`; +exports[`Avoid unnescessary environment instruction 555`] = `8`; -exports[`Avoid unnescessary environment instruction 556`] = `5`; +exports[`Avoid unnescessary environment instruction 556`] = `7`; -exports[`Avoid unnescessary environment instruction 557`] = `5`; +exports[`Avoid unnescessary environment instruction 557`] = `6`; -exports[`Avoid unnescessary environment instruction 558`] = `5`; +exports[`Avoid unnescessary environment instruction 558`] = `6`; -exports[`Avoid unnescessary environment instruction 559`] = `4`; +exports[`Avoid unnescessary environment instruction 559`] = `5`; -exports[`Avoid unnescessary environment instruction 560`] = `4`; +exports[`Avoid unnescessary environment instruction 560`] = `5`; -exports[`Avoid unnescessary environment instruction 561`] = `4`; +exports[`Avoid unnescessary environment instruction 561`] = `6`; -exports[`Avoid unnescessary environment instruction 562`] = `3`; +exports[`Avoid unnescessary environment instruction 562`] = `6`; -exports[`Avoid unnescessary environment instruction 563`] = `3`; +exports[`Avoid unnescessary environment instruction 563`] = `7`; -exports[`Avoid unnescessary environment instruction 564`] = `4`; +exports[`Avoid unnescessary environment instruction 564`] = `7`; -exports[`Avoid unnescessary environment instruction 565`] = `4`; +exports[`Avoid unnescessary environment instruction 565`] = `6`; -exports[`Avoid unnescessary environment instruction 566`] = `3`; +exports[`Avoid unnescessary environment instruction 566`] = `6`; -exports[`Avoid unnescessary environment instruction 567`] = `3`; +exports[`Avoid unnescessary environment instruction 567`] = `6`; -exports[`Avoid unnescessary environment instruction 568`] = `3`; +exports[`Avoid unnescessary environment instruction 568`] = `5`; -exports[`Avoid unnescessary environment instruction 569`] = `2`; +exports[`Avoid unnescessary environment instruction 569`] = `5`; -exports[`Avoid unnescessary environment instruction 570`] = `2`; +exports[`Avoid unnescessary environment instruction 570`] = `5`; -exports[`Avoid unnescessary environment instruction 571`] = `2`; +exports[`Avoid unnescessary environment instruction 571`] = `4`; -exports[`Avoid unnescessary environment instruction 572`] = `1`; +exports[`Avoid unnescessary environment instruction 572`] = `4`; -exports[`Avoid unnescessary environment instruction 573`] = `1`; +exports[`Avoid unnescessary environment instruction 573`] = `5`; -exports[`Avoid unnescessary environment instruction 574`] = `1`; +exports[`Avoid unnescessary environment instruction 574`] = `5`; exports[`Avoid unnescessary environment instruction 575`] = `4`; @@ -1154,309 +1154,309 @@ exports[`Avoid unnescessary environment instruction 576`] = `4`; exports[`Avoid unnescessary environment instruction 577`] = `4`; -exports[`Avoid unnescessary environment instruction 578`] = `5`; +exports[`Avoid unnescessary environment instruction 578`] = `3`; -exports[`Avoid unnescessary environment instruction 579`] = `6`; +exports[`Avoid unnescessary environment instruction 579`] = `3`; -exports[`Avoid unnescessary environment instruction 580`] = `5`; +exports[`Avoid unnescessary environment instruction 580`] = `3`; -exports[`Avoid unnescessary environment instruction 581`] = `4`; +exports[`Avoid unnescessary environment instruction 581`] = `2`; -exports[`Avoid unnescessary environment instruction 582`] = `4`; +exports[`Avoid unnescessary environment instruction 582`] = `2`; -exports[`Avoid unnescessary environment instruction 583`] = `4`; +exports[`Avoid unnescessary environment instruction 583`] = `2`; exports[`Avoid unnescessary environment instruction 584`] = `5`; -exports[`Avoid unnescessary environment instruction 585`] = `6`; +exports[`Avoid unnescessary environment instruction 585`] = `5`; exports[`Avoid unnescessary environment instruction 586`] = `5`; -exports[`Avoid unnescessary environment instruction 587`] = `4`; +exports[`Avoid unnescessary environment instruction 587`] = `6`; -exports[`Avoid unnescessary environment instruction 588`] = `4`; +exports[`Avoid unnescessary environment instruction 588`] = `7`; -exports[`Avoid unnescessary environment instruction 589`] = `4`; +exports[`Avoid unnescessary environment instruction 589`] = `6`; -exports[`Avoid unnescessary environment instruction 590`] = `6`; +exports[`Avoid unnescessary environment instruction 590`] = `5`; -exports[`Avoid unnescessary environment instruction 591`] = `6`; +exports[`Avoid unnescessary environment instruction 591`] = `5`; -exports[`Avoid unnescessary environment instruction 592`] = `6`; +exports[`Avoid unnescessary environment instruction 592`] = `5`; -exports[`Avoid unnescessary environment instruction 593`] = `5`; +exports[`Avoid unnescessary environment instruction 593`] = `6`; -exports[`Avoid unnescessary environment instruction 594`] = `5`; +exports[`Avoid unnescessary environment instruction 594`] = `7`; -exports[`Avoid unnescessary environment instruction 595`] = `7`; +exports[`Avoid unnescessary environment instruction 595`] = `6`; -exports[`Avoid unnescessary environment instruction 596`] = `6`; +exports[`Avoid unnescessary environment instruction 596`] = `5`; -exports[`Avoid unnescessary environment instruction 597`] = `7`; +exports[`Avoid unnescessary environment instruction 597`] = `5`; -exports[`Avoid unnescessary environment instruction 598`] = `6`; +exports[`Avoid unnescessary environment instruction 598`] = `5`; -exports[`Avoid unnescessary environment instruction 599`] = `5`; +exports[`Avoid unnescessary environment instruction 599`] = `7`; -exports[`Avoid unnescessary environment instruction 600`] = `5`; +exports[`Avoid unnescessary environment instruction 600`] = `7`; exports[`Avoid unnescessary environment instruction 601`] = `7`; -exports[`Avoid unnescessary environment instruction 602`] = `7`; +exports[`Avoid unnescessary environment instruction 602`] = `6`; -exports[`Avoid unnescessary environment instruction 603`] = `8`; +exports[`Avoid unnescessary environment instruction 603`] = `6`; -exports[`Avoid unnescessary environment instruction 604`] = `9`; +exports[`Avoid unnescessary environment instruction 604`] = `8`; -exports[`Avoid unnescessary environment instruction 605`] = `12`; +exports[`Avoid unnescessary environment instruction 605`] = `7`; -exports[`Avoid unnescessary environment instruction 606`] = `11`; +exports[`Avoid unnescessary environment instruction 606`] = `8`; -exports[`Avoid unnescessary environment instruction 607`] = `10`; +exports[`Avoid unnescessary environment instruction 607`] = `7`; -exports[`Avoid unnescessary environment instruction 608`] = `9`; +exports[`Avoid unnescessary environment instruction 608`] = `6`; -exports[`Avoid unnescessary environment instruction 609`] = `9`; +exports[`Avoid unnescessary environment instruction 609`] = `6`; -exports[`Avoid unnescessary environment instruction 610`] = `10`; +exports[`Avoid unnescessary environment instruction 610`] = `8`; -exports[`Avoid unnescessary environment instruction 611`] = `9`; +exports[`Avoid unnescessary environment instruction 611`] = `8`; -exports[`Avoid unnescessary environment instruction 612`] = `8`; +exports[`Avoid unnescessary environment instruction 612`] = `9`; -exports[`Avoid unnescessary environment instruction 613`] = `8`; +exports[`Avoid unnescessary environment instruction 613`] = `10`; -exports[`Avoid unnescessary environment instruction 614`] = `8`; +exports[`Avoid unnescessary environment instruction 614`] = `13`; -exports[`Avoid unnescessary environment instruction 615`] = `7`; +exports[`Avoid unnescessary environment instruction 615`] = `12`; -exports[`Avoid unnescessary environment instruction 616`] = `7`; +exports[`Avoid unnescessary environment instruction 616`] = `11`; -exports[`Avoid unnescessary environment instruction 617`] = `8`; +exports[`Avoid unnescessary environment instruction 617`] = `10`; -exports[`Avoid unnescessary environment instruction 618`] = `8`; +exports[`Avoid unnescessary environment instruction 618`] = `10`; -exports[`Avoid unnescessary environment instruction 619`] = `7`; +exports[`Avoid unnescessary environment instruction 619`] = `11`; -exports[`Avoid unnescessary environment instruction 620`] = `7`; +exports[`Avoid unnescessary environment instruction 620`] = `10`; -exports[`Avoid unnescessary environment instruction 621`] = `7`; +exports[`Avoid unnescessary environment instruction 621`] = `9`; -exports[`Avoid unnescessary environment instruction 622`] = `6`; +exports[`Avoid unnescessary environment instruction 622`] = `9`; -exports[`Avoid unnescessary environment instruction 623`] = `7`; +exports[`Avoid unnescessary environment instruction 623`] = `9`; -exports[`Avoid unnescessary environment instruction 624`] = `6`; +exports[`Avoid unnescessary environment instruction 624`] = `8`; -exports[`Avoid unnescessary environment instruction 625`] = `5`; +exports[`Avoid unnescessary environment instruction 625`] = `8`; -exports[`Avoid unnescessary environment instruction 626`] = `5`; +exports[`Avoid unnescessary environment instruction 626`] = `9`; -exports[`Avoid unnescessary environment instruction 627`] = `7`; +exports[`Avoid unnescessary environment instruction 627`] = `9`; -exports[`Avoid unnescessary environment instruction 628`] = `7`; +exports[`Avoid unnescessary environment instruction 628`] = `8`; exports[`Avoid unnescessary environment instruction 629`] = `8`; -exports[`Avoid unnescessary environment instruction 630`] = `9`; +exports[`Avoid unnescessary environment instruction 630`] = `8`; -exports[`Avoid unnescessary environment instruction 631`] = `12`; +exports[`Avoid unnescessary environment instruction 631`] = `7`; -exports[`Avoid unnescessary environment instruction 632`] = `11`; +exports[`Avoid unnescessary environment instruction 632`] = `8`; -exports[`Avoid unnescessary environment instruction 633`] = `10`; +exports[`Avoid unnescessary environment instruction 633`] = `7`; -exports[`Avoid unnescessary environment instruction 634`] = `9`; +exports[`Avoid unnescessary environment instruction 634`] = `6`; -exports[`Avoid unnescessary environment instruction 635`] = `9`; +exports[`Avoid unnescessary environment instruction 635`] = `6`; -exports[`Avoid unnescessary environment instruction 636`] = `10`; +exports[`Avoid unnescessary environment instruction 636`] = `8`; -exports[`Avoid unnescessary environment instruction 637`] = `9`; +exports[`Avoid unnescessary environment instruction 637`] = `8`; -exports[`Avoid unnescessary environment instruction 638`] = `8`; +exports[`Avoid unnescessary environment instruction 638`] = `9`; -exports[`Avoid unnescessary environment instruction 639`] = `8`; +exports[`Avoid unnescessary environment instruction 639`] = `10`; -exports[`Avoid unnescessary environment instruction 640`] = `8`; +exports[`Avoid unnescessary environment instruction 640`] = `13`; -exports[`Avoid unnescessary environment instruction 641`] = `7`; +exports[`Avoid unnescessary environment instruction 641`] = `12`; -exports[`Avoid unnescessary environment instruction 642`] = `7`; +exports[`Avoid unnescessary environment instruction 642`] = `11`; -exports[`Avoid unnescessary environment instruction 643`] = `8`; +exports[`Avoid unnescessary environment instruction 643`] = `10`; -exports[`Avoid unnescessary environment instruction 644`] = `8`; +exports[`Avoid unnescessary environment instruction 644`] = `10`; -exports[`Avoid unnescessary environment instruction 645`] = `7`; +exports[`Avoid unnescessary environment instruction 645`] = `11`; -exports[`Avoid unnescessary environment instruction 646`] = `7`; +exports[`Avoid unnescessary environment instruction 646`] = `10`; -exports[`Avoid unnescessary environment instruction 647`] = `7`; +exports[`Avoid unnescessary environment instruction 647`] = `9`; -exports[`Avoid unnescessary environment instruction 648`] = `6`; +exports[`Avoid unnescessary environment instruction 648`] = `9`; -exports[`Avoid unnescessary environment instruction 649`] = `7`; +exports[`Avoid unnescessary environment instruction 649`] = `9`; -exports[`Avoid unnescessary environment instruction 650`] = `6`; +exports[`Avoid unnescessary environment instruction 650`] = `8`; -exports[`Avoid unnescessary environment instruction 651`] = `5`; +exports[`Avoid unnescessary environment instruction 651`] = `8`; -exports[`Avoid unnescessary environment instruction 652`] = `5`; +exports[`Avoid unnescessary environment instruction 652`] = `9`; -exports[`Avoid unnescessary environment instruction 653`] = `7`; +exports[`Avoid unnescessary environment instruction 653`] = `9`; -exports[`Avoid unnescessary environment instruction 654`] = `7`; +exports[`Avoid unnescessary environment instruction 654`] = `8`; exports[`Avoid unnescessary environment instruction 655`] = `8`; -exports[`Avoid unnescessary environment instruction 656`] = `9`; +exports[`Avoid unnescessary environment instruction 656`] = `8`; -exports[`Avoid unnescessary environment instruction 657`] = `12`; +exports[`Avoid unnescessary environment instruction 657`] = `7`; -exports[`Avoid unnescessary environment instruction 658`] = `11`; +exports[`Avoid unnescessary environment instruction 658`] = `8`; -exports[`Avoid unnescessary environment instruction 659`] = `10`; +exports[`Avoid unnescessary environment instruction 659`] = `7`; -exports[`Avoid unnescessary environment instruction 660`] = `9`; +exports[`Avoid unnescessary environment instruction 660`] = `6`; -exports[`Avoid unnescessary environment instruction 661`] = `9`; +exports[`Avoid unnescessary environment instruction 661`] = `6`; -exports[`Avoid unnescessary environment instruction 662`] = `10`; +exports[`Avoid unnescessary environment instruction 662`] = `8`; -exports[`Avoid unnescessary environment instruction 663`] = `9`; +exports[`Avoid unnescessary environment instruction 663`] = `8`; -exports[`Avoid unnescessary environment instruction 664`] = `8`; +exports[`Avoid unnescessary environment instruction 664`] = `9`; -exports[`Avoid unnescessary environment instruction 665`] = `8`; +exports[`Avoid unnescessary environment instruction 665`] = `10`; -exports[`Avoid unnescessary environment instruction 666`] = `8`; +exports[`Avoid unnescessary environment instruction 666`] = `13`; -exports[`Avoid unnescessary environment instruction 667`] = `7`; +exports[`Avoid unnescessary environment instruction 667`] = `12`; -exports[`Avoid unnescessary environment instruction 668`] = `7`; +exports[`Avoid unnescessary environment instruction 668`] = `11`; -exports[`Avoid unnescessary environment instruction 669`] = `8`; +exports[`Avoid unnescessary environment instruction 669`] = `10`; -exports[`Avoid unnescessary environment instruction 670`] = `8`; +exports[`Avoid unnescessary environment instruction 670`] = `10`; -exports[`Avoid unnescessary environment instruction 671`] = `7`; +exports[`Avoid unnescessary environment instruction 671`] = `11`; -exports[`Avoid unnescessary environment instruction 672`] = `7`; +exports[`Avoid unnescessary environment instruction 672`] = `10`; -exports[`Avoid unnescessary environment instruction 673`] = `7`; +exports[`Avoid unnescessary environment instruction 673`] = `9`; -exports[`Avoid unnescessary environment instruction 674`] = `6`; +exports[`Avoid unnescessary environment instruction 674`] = `9`; -exports[`Avoid unnescessary environment instruction 675`] = `7`; +exports[`Avoid unnescessary environment instruction 675`] = `9`; -exports[`Avoid unnescessary environment instruction 676`] = `6`; +exports[`Avoid unnescessary environment instruction 676`] = `8`; -exports[`Avoid unnescessary environment instruction 677`] = `5`; +exports[`Avoid unnescessary environment instruction 677`] = `8`; -exports[`Avoid unnescessary environment instruction 678`] = `5`; +exports[`Avoid unnescessary environment instruction 678`] = `9`; -exports[`Avoid unnescessary environment instruction 679`] = `7`; +exports[`Avoid unnescessary environment instruction 679`] = `9`; -exports[`Avoid unnescessary environment instruction 680`] = `7`; +exports[`Avoid unnescessary environment instruction 680`] = `8`; exports[`Avoid unnescessary environment instruction 681`] = `8`; -exports[`Avoid unnescessary environment instruction 682`] = `9`; +exports[`Avoid unnescessary environment instruction 682`] = `8`; -exports[`Avoid unnescessary environment instruction 683`] = `12`; +exports[`Avoid unnescessary environment instruction 683`] = `7`; -exports[`Avoid unnescessary environment instruction 684`] = `11`; +exports[`Avoid unnescessary environment instruction 684`] = `8`; -exports[`Avoid unnescessary environment instruction 685`] = `10`; +exports[`Avoid unnescessary environment instruction 685`] = `7`; -exports[`Avoid unnescessary environment instruction 686`] = `9`; +exports[`Avoid unnescessary environment instruction 686`] = `6`; -exports[`Avoid unnescessary environment instruction 687`] = `9`; +exports[`Avoid unnescessary environment instruction 687`] = `6`; -exports[`Avoid unnescessary environment instruction 688`] = `10`; +exports[`Avoid unnescessary environment instruction 688`] = `8`; -exports[`Avoid unnescessary environment instruction 689`] = `9`; +exports[`Avoid unnescessary environment instruction 689`] = `8`; -exports[`Avoid unnescessary environment instruction 690`] = `8`; +exports[`Avoid unnescessary environment instruction 690`] = `9`; -exports[`Avoid unnescessary environment instruction 691`] = `8`; +exports[`Avoid unnescessary environment instruction 691`] = `10`; -exports[`Avoid unnescessary environment instruction 692`] = `8`; +exports[`Avoid unnescessary environment instruction 692`] = `13`; -exports[`Avoid unnescessary environment instruction 693`] = `7`; +exports[`Avoid unnescessary environment instruction 693`] = `12`; -exports[`Avoid unnescessary environment instruction 694`] = `7`; +exports[`Avoid unnescessary environment instruction 694`] = `11`; -exports[`Avoid unnescessary environment instruction 695`] = `8`; +exports[`Avoid unnescessary environment instruction 695`] = `10`; -exports[`Avoid unnescessary environment instruction 696`] = `8`; +exports[`Avoid unnescessary environment instruction 696`] = `10`; -exports[`Avoid unnescessary environment instruction 697`] = `7`; +exports[`Avoid unnescessary environment instruction 697`] = `11`; -exports[`Avoid unnescessary environment instruction 698`] = `7`; +exports[`Avoid unnescessary environment instruction 698`] = `10`; -exports[`Avoid unnescessary environment instruction 699`] = `7`; +exports[`Avoid unnescessary environment instruction 699`] = `9`; -exports[`Avoid unnescessary environment instruction 700`] = `6`; +exports[`Avoid unnescessary environment instruction 700`] = `9`; -exports[`Avoid unnescessary environment instruction 701`] = `7`; +exports[`Avoid unnescessary environment instruction 701`] = `9`; -exports[`Avoid unnescessary environment instruction 702`] = `6`; +exports[`Avoid unnescessary environment instruction 702`] = `8`; -exports[`Avoid unnescessary environment instruction 703`] = `5`; +exports[`Avoid unnescessary environment instruction 703`] = `8`; -exports[`Avoid unnescessary environment instruction 704`] = `5`; +exports[`Avoid unnescessary environment instruction 704`] = `9`; -exports[`Avoid unnescessary environment instruction 705`] = `4`; +exports[`Avoid unnescessary environment instruction 705`] = `9`; -exports[`Avoid unnescessary environment instruction 706`] = `4`; +exports[`Avoid unnescessary environment instruction 706`] = `8`; -exports[`Avoid unnescessary environment instruction 707`] = `5`; +exports[`Avoid unnescessary environment instruction 707`] = `8`; -exports[`Avoid unnescessary environment instruction 708`] = `5`; +exports[`Avoid unnescessary environment instruction 708`] = `8`; -exports[`Avoid unnescessary environment instruction 709`] = `6`; +exports[`Avoid unnescessary environment instruction 709`] = `7`; -exports[`Avoid unnescessary environment instruction 710`] = `6`; +exports[`Avoid unnescessary environment instruction 710`] = `8`; -exports[`Avoid unnescessary environment instruction 711`] = `5`; +exports[`Avoid unnescessary environment instruction 711`] = `7`; -exports[`Avoid unnescessary environment instruction 712`] = `5`; +exports[`Avoid unnescessary environment instruction 712`] = `6`; -exports[`Avoid unnescessary environment instruction 713`] = `5`; +exports[`Avoid unnescessary environment instruction 713`] = `6`; -exports[`Avoid unnescessary environment instruction 714`] = `4`; +exports[`Avoid unnescessary environment instruction 714`] = `5`; -exports[`Avoid unnescessary environment instruction 715`] = `4`; +exports[`Avoid unnescessary environment instruction 715`] = `5`; -exports[`Avoid unnescessary environment instruction 716`] = `4`; +exports[`Avoid unnescessary environment instruction 716`] = `6`; -exports[`Avoid unnescessary environment instruction 717`] = `3`; +exports[`Avoid unnescessary environment instruction 717`] = `6`; -exports[`Avoid unnescessary environment instruction 718`] = `3`; +exports[`Avoid unnescessary environment instruction 718`] = `7`; -exports[`Avoid unnescessary environment instruction 719`] = `4`; +exports[`Avoid unnescessary environment instruction 719`] = `7`; -exports[`Avoid unnescessary environment instruction 720`] = `4`; +exports[`Avoid unnescessary environment instruction 720`] = `6`; -exports[`Avoid unnescessary environment instruction 721`] = `3`; +exports[`Avoid unnescessary environment instruction 721`] = `6`; -exports[`Avoid unnescessary environment instruction 722`] = `3`; +exports[`Avoid unnescessary environment instruction 722`] = `6`; -exports[`Avoid unnescessary environment instruction 723`] = `3`; +exports[`Avoid unnescessary environment instruction 723`] = `5`; -exports[`Avoid unnescessary environment instruction 724`] = `2`; +exports[`Avoid unnescessary environment instruction 724`] = `5`; -exports[`Avoid unnescessary environment instruction 725`] = `2`; +exports[`Avoid unnescessary environment instruction 725`] = `5`; -exports[`Avoid unnescessary environment instruction 726`] = `2`; +exports[`Avoid unnescessary environment instruction 726`] = `4`; -exports[`Avoid unnescessary environment instruction 727`] = `1`; +exports[`Avoid unnescessary environment instruction 727`] = `4`; -exports[`Avoid unnescessary environment instruction 728`] = `1`; +exports[`Avoid unnescessary environment instruction 728`] = `5`; -exports[`Avoid unnescessary environment instruction 729`] = `1`; +exports[`Avoid unnescessary environment instruction 729`] = `5`; exports[`Avoid unnescessary environment instruction 730`] = `4`; @@ -1464,361 +1464,361 @@ exports[`Avoid unnescessary environment instruction 731`] = `4`; exports[`Avoid unnescessary environment instruction 732`] = `4`; -exports[`Avoid unnescessary environment instruction 733`] = `5`; +exports[`Avoid unnescessary environment instruction 733`] = `3`; -exports[`Avoid unnescessary environment instruction 734`] = `6`; +exports[`Avoid unnescessary environment instruction 734`] = `3`; -exports[`Avoid unnescessary environment instruction 735`] = `5`; +exports[`Avoid unnescessary environment instruction 735`] = `3`; -exports[`Avoid unnescessary environment instruction 736`] = `4`; +exports[`Avoid unnescessary environment instruction 736`] = `2`; -exports[`Avoid unnescessary environment instruction 737`] = `4`; +exports[`Avoid unnescessary environment instruction 737`] = `2`; -exports[`Avoid unnescessary environment instruction 738`] = `4`; +exports[`Avoid unnescessary environment instruction 738`] = `2`; exports[`Avoid unnescessary environment instruction 739`] = `5`; -exports[`Avoid unnescessary environment instruction 740`] = `6`; +exports[`Avoid unnescessary environment instruction 740`] = `5`; exports[`Avoid unnescessary environment instruction 741`] = `5`; -exports[`Avoid unnescessary environment instruction 742`] = `4`; +exports[`Avoid unnescessary environment instruction 742`] = `6`; -exports[`Avoid unnescessary environment instruction 743`] = `4`; +exports[`Avoid unnescessary environment instruction 743`] = `7`; -exports[`Avoid unnescessary environment instruction 744`] = `4`; +exports[`Avoid unnescessary environment instruction 744`] = `6`; -exports[`Avoid unnescessary environment instruction 745`] = `6`; +exports[`Avoid unnescessary environment instruction 745`] = `5`; -exports[`Avoid unnescessary environment instruction 746`] = `6`; +exports[`Avoid unnescessary environment instruction 746`] = `5`; -exports[`Avoid unnescessary environment instruction 747`] = `6`; +exports[`Avoid unnescessary environment instruction 747`] = `5`; -exports[`Avoid unnescessary environment instruction 748`] = `5`; +exports[`Avoid unnescessary environment instruction 748`] = `6`; -exports[`Avoid unnescessary environment instruction 749`] = `5`; +exports[`Avoid unnescessary environment instruction 749`] = `7`; -exports[`Avoid unnescessary environment instruction 750`] = `7`; +exports[`Avoid unnescessary environment instruction 750`] = `6`; -exports[`Avoid unnescessary environment instruction 751`] = `6`; +exports[`Avoid unnescessary environment instruction 751`] = `5`; -exports[`Avoid unnescessary environment instruction 752`] = `7`; +exports[`Avoid unnescessary environment instruction 752`] = `5`; -exports[`Avoid unnescessary environment instruction 753`] = `6`; +exports[`Avoid unnescessary environment instruction 753`] = `5`; -exports[`Avoid unnescessary environment instruction 754`] = `5`; +exports[`Avoid unnescessary environment instruction 754`] = `7`; -exports[`Avoid unnescessary environment instruction 755`] = `5`; +exports[`Avoid unnescessary environment instruction 755`] = `7`; exports[`Avoid unnescessary environment instruction 756`] = `7`; -exports[`Avoid unnescessary environment instruction 757`] = `7`; +exports[`Avoid unnescessary environment instruction 757`] = `6`; -exports[`Avoid unnescessary environment instruction 758`] = `8`; +exports[`Avoid unnescessary environment instruction 758`] = `6`; -exports[`Avoid unnescessary environment instruction 759`] = `9`; +exports[`Avoid unnescessary environment instruction 759`] = `8`; -exports[`Avoid unnescessary environment instruction 760`] = `12`; +exports[`Avoid unnescessary environment instruction 760`] = `7`; -exports[`Avoid unnescessary environment instruction 761`] = `11`; +exports[`Avoid unnescessary environment instruction 761`] = `8`; -exports[`Avoid unnescessary environment instruction 762`] = `10`; +exports[`Avoid unnescessary environment instruction 762`] = `7`; -exports[`Avoid unnescessary environment instruction 763`] = `9`; +exports[`Avoid unnescessary environment instruction 763`] = `6`; -exports[`Avoid unnescessary environment instruction 764`] = `9`; +exports[`Avoid unnescessary environment instruction 764`] = `6`; -exports[`Avoid unnescessary environment instruction 765`] = `10`; +exports[`Avoid unnescessary environment instruction 765`] = `8`; -exports[`Avoid unnescessary environment instruction 766`] = `9`; +exports[`Avoid unnescessary environment instruction 766`] = `8`; -exports[`Avoid unnescessary environment instruction 767`] = `8`; +exports[`Avoid unnescessary environment instruction 767`] = `9`; -exports[`Avoid unnescessary environment instruction 768`] = `8`; +exports[`Avoid unnescessary environment instruction 768`] = `10`; -exports[`Avoid unnescessary environment instruction 769`] = `8`; +exports[`Avoid unnescessary environment instruction 769`] = `13`; -exports[`Avoid unnescessary environment instruction 770`] = `7`; +exports[`Avoid unnescessary environment instruction 770`] = `12`; -exports[`Avoid unnescessary environment instruction 771`] = `7`; +exports[`Avoid unnescessary environment instruction 771`] = `11`; -exports[`Avoid unnescessary environment instruction 772`] = `8`; +exports[`Avoid unnescessary environment instruction 772`] = `10`; -exports[`Avoid unnescessary environment instruction 773`] = `8`; +exports[`Avoid unnescessary environment instruction 773`] = `10`; -exports[`Avoid unnescessary environment instruction 774`] = `7`; +exports[`Avoid unnescessary environment instruction 774`] = `11`; -exports[`Avoid unnescessary environment instruction 775`] = `7`; +exports[`Avoid unnescessary environment instruction 775`] = `10`; -exports[`Avoid unnescessary environment instruction 776`] = `7`; +exports[`Avoid unnescessary environment instruction 776`] = `9`; -exports[`Avoid unnescessary environment instruction 777`] = `6`; +exports[`Avoid unnescessary environment instruction 777`] = `9`; -exports[`Avoid unnescessary environment instruction 778`] = `7`; +exports[`Avoid unnescessary environment instruction 778`] = `9`; -exports[`Avoid unnescessary environment instruction 779`] = `6`; +exports[`Avoid unnescessary environment instruction 779`] = `8`; -exports[`Avoid unnescessary environment instruction 780`] = `5`; +exports[`Avoid unnescessary environment instruction 780`] = `8`; -exports[`Avoid unnescessary environment instruction 781`] = `5`; +exports[`Avoid unnescessary environment instruction 781`] = `9`; -exports[`Avoid unnescessary environment instruction 782`] = `7`; +exports[`Avoid unnescessary environment instruction 782`] = `9`; -exports[`Avoid unnescessary environment instruction 783`] = `7`; +exports[`Avoid unnescessary environment instruction 783`] = `8`; exports[`Avoid unnescessary environment instruction 784`] = `8`; -exports[`Avoid unnescessary environment instruction 785`] = `9`; +exports[`Avoid unnescessary environment instruction 785`] = `8`; -exports[`Avoid unnescessary environment instruction 786`] = `12`; +exports[`Avoid unnescessary environment instruction 786`] = `7`; -exports[`Avoid unnescessary environment instruction 787`] = `11`; +exports[`Avoid unnescessary environment instruction 787`] = `8`; -exports[`Avoid unnescessary environment instruction 788`] = `10`; +exports[`Avoid unnescessary environment instruction 788`] = `7`; -exports[`Avoid unnescessary environment instruction 789`] = `9`; +exports[`Avoid unnescessary environment instruction 789`] = `6`; -exports[`Avoid unnescessary environment instruction 790`] = `9`; +exports[`Avoid unnescessary environment instruction 790`] = `6`; -exports[`Avoid unnescessary environment instruction 791`] = `10`; +exports[`Avoid unnescessary environment instruction 791`] = `8`; -exports[`Avoid unnescessary environment instruction 792`] = `9`; +exports[`Avoid unnescessary environment instruction 792`] = `8`; -exports[`Avoid unnescessary environment instruction 793`] = `8`; +exports[`Avoid unnescessary environment instruction 793`] = `9`; -exports[`Avoid unnescessary environment instruction 794`] = `8`; +exports[`Avoid unnescessary environment instruction 794`] = `10`; -exports[`Avoid unnescessary environment instruction 795`] = `8`; +exports[`Avoid unnescessary environment instruction 795`] = `13`; -exports[`Avoid unnescessary environment instruction 796`] = `7`; +exports[`Avoid unnescessary environment instruction 796`] = `12`; -exports[`Avoid unnescessary environment instruction 797`] = `7`; +exports[`Avoid unnescessary environment instruction 797`] = `11`; -exports[`Avoid unnescessary environment instruction 798`] = `8`; +exports[`Avoid unnescessary environment instruction 798`] = `10`; -exports[`Avoid unnescessary environment instruction 799`] = `8`; +exports[`Avoid unnescessary environment instruction 799`] = `10`; -exports[`Avoid unnescessary environment instruction 800`] = `7`; +exports[`Avoid unnescessary environment instruction 800`] = `11`; -exports[`Avoid unnescessary environment instruction 801`] = `7`; +exports[`Avoid unnescessary environment instruction 801`] = `10`; -exports[`Avoid unnescessary environment instruction 802`] = `7`; +exports[`Avoid unnescessary environment instruction 802`] = `9`; -exports[`Avoid unnescessary environment instruction 803`] = `6`; +exports[`Avoid unnescessary environment instruction 803`] = `9`; -exports[`Avoid unnescessary environment instruction 804`] = `7`; +exports[`Avoid unnescessary environment instruction 804`] = `9`; -exports[`Avoid unnescessary environment instruction 805`] = `6`; +exports[`Avoid unnescessary environment instruction 805`] = `8`; -exports[`Avoid unnescessary environment instruction 806`] = `5`; +exports[`Avoid unnescessary environment instruction 806`] = `8`; -exports[`Avoid unnescessary environment instruction 807`] = `5`; +exports[`Avoid unnescessary environment instruction 807`] = `9`; -exports[`Avoid unnescessary environment instruction 808`] = `7`; +exports[`Avoid unnescessary environment instruction 808`] = `9`; -exports[`Avoid unnescessary environment instruction 809`] = `7`; +exports[`Avoid unnescessary environment instruction 809`] = `8`; exports[`Avoid unnescessary environment instruction 810`] = `8`; -exports[`Avoid unnescessary environment instruction 811`] = `9`; +exports[`Avoid unnescessary environment instruction 811`] = `8`; -exports[`Avoid unnescessary environment instruction 812`] = `12`; +exports[`Avoid unnescessary environment instruction 812`] = `7`; -exports[`Avoid unnescessary environment instruction 813`] = `11`; +exports[`Avoid unnescessary environment instruction 813`] = `8`; -exports[`Avoid unnescessary environment instruction 814`] = `10`; +exports[`Avoid unnescessary environment instruction 814`] = `7`; -exports[`Avoid unnescessary environment instruction 815`] = `9`; +exports[`Avoid unnescessary environment instruction 815`] = `6`; -exports[`Avoid unnescessary environment instruction 816`] = `9`; +exports[`Avoid unnescessary environment instruction 816`] = `6`; -exports[`Avoid unnescessary environment instruction 817`] = `10`; +exports[`Avoid unnescessary environment instruction 817`] = `8`; -exports[`Avoid unnescessary environment instruction 818`] = `9`; +exports[`Avoid unnescessary environment instruction 818`] = `8`; -exports[`Avoid unnescessary environment instruction 819`] = `8`; +exports[`Avoid unnescessary environment instruction 819`] = `9`; -exports[`Avoid unnescessary environment instruction 820`] = `8`; +exports[`Avoid unnescessary environment instruction 820`] = `10`; -exports[`Avoid unnescessary environment instruction 821`] = `8`; +exports[`Avoid unnescessary environment instruction 821`] = `13`; -exports[`Avoid unnescessary environment instruction 822`] = `7`; +exports[`Avoid unnescessary environment instruction 822`] = `12`; -exports[`Avoid unnescessary environment instruction 823`] = `7`; +exports[`Avoid unnescessary environment instruction 823`] = `11`; -exports[`Avoid unnescessary environment instruction 824`] = `8`; +exports[`Avoid unnescessary environment instruction 824`] = `10`; -exports[`Avoid unnescessary environment instruction 825`] = `8`; +exports[`Avoid unnescessary environment instruction 825`] = `10`; -exports[`Avoid unnescessary environment instruction 826`] = `7`; +exports[`Avoid unnescessary environment instruction 826`] = `11`; -exports[`Avoid unnescessary environment instruction 827`] = `7`; +exports[`Avoid unnescessary environment instruction 827`] = `10`; -exports[`Avoid unnescessary environment instruction 828`] = `7`; +exports[`Avoid unnescessary environment instruction 828`] = `9`; -exports[`Avoid unnescessary environment instruction 829`] = `6`; +exports[`Avoid unnescessary environment instruction 829`] = `9`; -exports[`Avoid unnescessary environment instruction 830`] = `7`; +exports[`Avoid unnescessary environment instruction 830`] = `9`; -exports[`Avoid unnescessary environment instruction 831`] = `6`; +exports[`Avoid unnescessary environment instruction 831`] = `8`; -exports[`Avoid unnescessary environment instruction 832`] = `5`; +exports[`Avoid unnescessary environment instruction 832`] = `8`; -exports[`Avoid unnescessary environment instruction 833`] = `5`; +exports[`Avoid unnescessary environment instruction 833`] = `9`; -exports[`Avoid unnescessary environment instruction 834`] = `7`; +exports[`Avoid unnescessary environment instruction 834`] = `9`; -exports[`Avoid unnescessary environment instruction 835`] = `7`; +exports[`Avoid unnescessary environment instruction 835`] = `8`; exports[`Avoid unnescessary environment instruction 836`] = `8`; -exports[`Avoid unnescessary environment instruction 837`] = `9`; +exports[`Avoid unnescessary environment instruction 837`] = `8`; -exports[`Avoid unnescessary environment instruction 838`] = `12`; +exports[`Avoid unnescessary environment instruction 838`] = `7`; -exports[`Avoid unnescessary environment instruction 839`] = `11`; +exports[`Avoid unnescessary environment instruction 839`] = `8`; -exports[`Avoid unnescessary environment instruction 840`] = `10`; +exports[`Avoid unnescessary environment instruction 840`] = `7`; -exports[`Avoid unnescessary environment instruction 841`] = `9`; +exports[`Avoid unnescessary environment instruction 841`] = `6`; -exports[`Avoid unnescessary environment instruction 842`] = `9`; +exports[`Avoid unnescessary environment instruction 842`] = `6`; -exports[`Avoid unnescessary environment instruction 843`] = `10`; +exports[`Avoid unnescessary environment instruction 843`] = `8`; -exports[`Avoid unnescessary environment instruction 844`] = `9`; +exports[`Avoid unnescessary environment instruction 844`] = `8`; -exports[`Avoid unnescessary environment instruction 845`] = `8`; +exports[`Avoid unnescessary environment instruction 845`] = `9`; -exports[`Avoid unnescessary environment instruction 846`] = `8`; +exports[`Avoid unnescessary environment instruction 846`] = `10`; -exports[`Avoid unnescessary environment instruction 847`] = `8`; +exports[`Avoid unnescessary environment instruction 847`] = `13`; -exports[`Avoid unnescessary environment instruction 848`] = `7`; +exports[`Avoid unnescessary environment instruction 848`] = `12`; -exports[`Avoid unnescessary environment instruction 849`] = `7`; +exports[`Avoid unnescessary environment instruction 849`] = `11`; -exports[`Avoid unnescessary environment instruction 850`] = `8`; +exports[`Avoid unnescessary environment instruction 850`] = `10`; -exports[`Avoid unnescessary environment instruction 851`] = `8`; +exports[`Avoid unnescessary environment instruction 851`] = `10`; -exports[`Avoid unnescessary environment instruction 852`] = `7`; +exports[`Avoid unnescessary environment instruction 852`] = `11`; -exports[`Avoid unnescessary environment instruction 853`] = `7`; +exports[`Avoid unnescessary environment instruction 853`] = `10`; -exports[`Avoid unnescessary environment instruction 854`] = `7`; +exports[`Avoid unnescessary environment instruction 854`] = `9`; -exports[`Avoid unnescessary environment instruction 855`] = `6`; +exports[`Avoid unnescessary environment instruction 855`] = `9`; -exports[`Avoid unnescessary environment instruction 856`] = `7`; +exports[`Avoid unnescessary environment instruction 856`] = `9`; -exports[`Avoid unnescessary environment instruction 857`] = `6`; +exports[`Avoid unnescessary environment instruction 857`] = `8`; -exports[`Avoid unnescessary environment instruction 858`] = `5`; +exports[`Avoid unnescessary environment instruction 858`] = `8`; -exports[`Avoid unnescessary environment instruction 859`] = `5`; +exports[`Avoid unnescessary environment instruction 859`] = `9`; -exports[`Avoid unnescessary environment instruction 860`] = `7`; +exports[`Avoid unnescessary environment instruction 860`] = `9`; -exports[`Avoid unnescessary environment instruction 861`] = `7`; +exports[`Avoid unnescessary environment instruction 861`] = `8`; exports[`Avoid unnescessary environment instruction 862`] = `8`; -exports[`Avoid unnescessary environment instruction 863`] = `9`; +exports[`Avoid unnescessary environment instruction 863`] = `8`; -exports[`Avoid unnescessary environment instruction 864`] = `12`; +exports[`Avoid unnescessary environment instruction 864`] = `7`; -exports[`Avoid unnescessary environment instruction 865`] = `11`; +exports[`Avoid unnescessary environment instruction 865`] = `8`; -exports[`Avoid unnescessary environment instruction 866`] = `10`; +exports[`Avoid unnescessary environment instruction 866`] = `7`; -exports[`Avoid unnescessary environment instruction 867`] = `9`; +exports[`Avoid unnescessary environment instruction 867`] = `6`; -exports[`Avoid unnescessary environment instruction 868`] = `9`; +exports[`Avoid unnescessary environment instruction 868`] = `6`; -exports[`Avoid unnescessary environment instruction 869`] = `10`; +exports[`Avoid unnescessary environment instruction 869`] = `8`; -exports[`Avoid unnescessary environment instruction 870`] = `9`; +exports[`Avoid unnescessary environment instruction 870`] = `8`; -exports[`Avoid unnescessary environment instruction 871`] = `8`; +exports[`Avoid unnescessary environment instruction 871`] = `9`; -exports[`Avoid unnescessary environment instruction 872`] = `8`; +exports[`Avoid unnescessary environment instruction 872`] = `10`; -exports[`Avoid unnescessary environment instruction 873`] = `8`; +exports[`Avoid unnescessary environment instruction 873`] = `13`; -exports[`Avoid unnescessary environment instruction 874`] = `7`; +exports[`Avoid unnescessary environment instruction 874`] = `12`; -exports[`Avoid unnescessary environment instruction 875`] = `7`; +exports[`Avoid unnescessary environment instruction 875`] = `11`; -exports[`Avoid unnescessary environment instruction 876`] = `8`; +exports[`Avoid unnescessary environment instruction 876`] = `10`; -exports[`Avoid unnescessary environment instruction 877`] = `8`; +exports[`Avoid unnescessary environment instruction 877`] = `10`; -exports[`Avoid unnescessary environment instruction 878`] = `7`; +exports[`Avoid unnescessary environment instruction 878`] = `11`; -exports[`Avoid unnescessary environment instruction 879`] = `7`; +exports[`Avoid unnescessary environment instruction 879`] = `10`; -exports[`Avoid unnescessary environment instruction 880`] = `7`; +exports[`Avoid unnescessary environment instruction 880`] = `9`; -exports[`Avoid unnescessary environment instruction 881`] = `6`; +exports[`Avoid unnescessary environment instruction 881`] = `9`; -exports[`Avoid unnescessary environment instruction 882`] = `7`; +exports[`Avoid unnescessary environment instruction 882`] = `9`; -exports[`Avoid unnescessary environment instruction 883`] = `6`; +exports[`Avoid unnescessary environment instruction 883`] = `8`; -exports[`Avoid unnescessary environment instruction 884`] = `5`; +exports[`Avoid unnescessary environment instruction 884`] = `8`; -exports[`Avoid unnescessary environment instruction 885`] = `5`; +exports[`Avoid unnescessary environment instruction 885`] = `9`; -exports[`Avoid unnescessary environment instruction 886`] = `4`; +exports[`Avoid unnescessary environment instruction 886`] = `9`; -exports[`Avoid unnescessary environment instruction 887`] = `4`; +exports[`Avoid unnescessary environment instruction 887`] = `8`; -exports[`Avoid unnescessary environment instruction 888`] = `5`; +exports[`Avoid unnescessary environment instruction 888`] = `8`; -exports[`Avoid unnescessary environment instruction 889`] = `5`; +exports[`Avoid unnescessary environment instruction 889`] = `8`; -exports[`Avoid unnescessary environment instruction 890`] = `6`; +exports[`Avoid unnescessary environment instruction 890`] = `7`; -exports[`Avoid unnescessary environment instruction 891`] = `6`; +exports[`Avoid unnescessary environment instruction 891`] = `8`; -exports[`Avoid unnescessary environment instruction 892`] = `5`; +exports[`Avoid unnescessary environment instruction 892`] = `7`; -exports[`Avoid unnescessary environment instruction 893`] = `5`; +exports[`Avoid unnescessary environment instruction 893`] = `6`; -exports[`Avoid unnescessary environment instruction 894`] = `5`; +exports[`Avoid unnescessary environment instruction 894`] = `6`; -exports[`Avoid unnescessary environment instruction 895`] = `4`; +exports[`Avoid unnescessary environment instruction 895`] = `5`; -exports[`Avoid unnescessary environment instruction 896`] = `4`; +exports[`Avoid unnescessary environment instruction 896`] = `5`; -exports[`Avoid unnescessary environment instruction 897`] = `4`; +exports[`Avoid unnescessary environment instruction 897`] = `6`; -exports[`Avoid unnescessary environment instruction 898`] = `3`; +exports[`Avoid unnescessary environment instruction 898`] = `6`; -exports[`Avoid unnescessary environment instruction 899`] = `3`; +exports[`Avoid unnescessary environment instruction 899`] = `7`; -exports[`Avoid unnescessary environment instruction 900`] = `4`; +exports[`Avoid unnescessary environment instruction 900`] = `7`; -exports[`Avoid unnescessary environment instruction 901`] = `4`; +exports[`Avoid unnescessary environment instruction 901`] = `6`; -exports[`Avoid unnescessary environment instruction 902`] = `3`; +exports[`Avoid unnescessary environment instruction 902`] = `6`; -exports[`Avoid unnescessary environment instruction 903`] = `3`; +exports[`Avoid unnescessary environment instruction 903`] = `6`; -exports[`Avoid unnescessary environment instruction 904`] = `3`; +exports[`Avoid unnescessary environment instruction 904`] = `5`; -exports[`Avoid unnescessary environment instruction 905`] = `2`; +exports[`Avoid unnescessary environment instruction 905`] = `5`; -exports[`Avoid unnescessary environment instruction 906`] = `2`; +exports[`Avoid unnescessary environment instruction 906`] = `5`; -exports[`Avoid unnescessary environment instruction 907`] = `2`; +exports[`Avoid unnescessary environment instruction 907`] = `4`; -exports[`Avoid unnescessary environment instruction 908`] = `1`; +exports[`Avoid unnescessary environment instruction 908`] = `4`; -exports[`Avoid unnescessary environment instruction 909`] = `1`; +exports[`Avoid unnescessary environment instruction 909`] = `5`; -exports[`Avoid unnescessary environment instruction 910`] = `1`; +exports[`Avoid unnescessary environment instruction 910`] = `5`; exports[`Avoid unnescessary environment instruction 911`] = `4`; @@ -1826,413 +1826,413 @@ exports[`Avoid unnescessary environment instruction 912`] = `4`; exports[`Avoid unnescessary environment instruction 913`] = `4`; -exports[`Avoid unnescessary environment instruction 914`] = `5`; +exports[`Avoid unnescessary environment instruction 914`] = `3`; -exports[`Avoid unnescessary environment instruction 915`] = `6`; +exports[`Avoid unnescessary environment instruction 915`] = `3`; -exports[`Avoid unnescessary environment instruction 916`] = `5`; +exports[`Avoid unnescessary environment instruction 916`] = `3`; -exports[`Avoid unnescessary environment instruction 917`] = `4`; +exports[`Avoid unnescessary environment instruction 917`] = `2`; -exports[`Avoid unnescessary environment instruction 918`] = `4`; +exports[`Avoid unnescessary environment instruction 918`] = `2`; -exports[`Avoid unnescessary environment instruction 919`] = `4`; +exports[`Avoid unnescessary environment instruction 919`] = `2`; exports[`Avoid unnescessary environment instruction 920`] = `5`; -exports[`Avoid unnescessary environment instruction 921`] = `6`; +exports[`Avoid unnescessary environment instruction 921`] = `5`; exports[`Avoid unnescessary environment instruction 922`] = `5`; -exports[`Avoid unnescessary environment instruction 923`] = `4`; +exports[`Avoid unnescessary environment instruction 923`] = `6`; -exports[`Avoid unnescessary environment instruction 924`] = `4`; +exports[`Avoid unnescessary environment instruction 924`] = `7`; -exports[`Avoid unnescessary environment instruction 925`] = `4`; +exports[`Avoid unnescessary environment instruction 925`] = `6`; -exports[`Avoid unnescessary environment instruction 926`] = `6`; +exports[`Avoid unnescessary environment instruction 926`] = `5`; -exports[`Avoid unnescessary environment instruction 927`] = `6`; +exports[`Avoid unnescessary environment instruction 927`] = `5`; -exports[`Avoid unnescessary environment instruction 928`] = `6`; +exports[`Avoid unnescessary environment instruction 928`] = `5`; -exports[`Avoid unnescessary environment instruction 929`] = `5`; +exports[`Avoid unnescessary environment instruction 929`] = `6`; -exports[`Avoid unnescessary environment instruction 930`] = `5`; +exports[`Avoid unnescessary environment instruction 930`] = `7`; -exports[`Avoid unnescessary environment instruction 931`] = `7`; +exports[`Avoid unnescessary environment instruction 931`] = `6`; -exports[`Avoid unnescessary environment instruction 932`] = `6`; +exports[`Avoid unnescessary environment instruction 932`] = `5`; -exports[`Avoid unnescessary environment instruction 933`] = `7`; +exports[`Avoid unnescessary environment instruction 933`] = `5`; -exports[`Avoid unnescessary environment instruction 934`] = `6`; +exports[`Avoid unnescessary environment instruction 934`] = `5`; -exports[`Avoid unnescessary environment instruction 935`] = `5`; +exports[`Avoid unnescessary environment instruction 935`] = `7`; -exports[`Avoid unnescessary environment instruction 936`] = `5`; +exports[`Avoid unnescessary environment instruction 936`] = `7`; exports[`Avoid unnescessary environment instruction 937`] = `7`; -exports[`Avoid unnescessary environment instruction 938`] = `7`; +exports[`Avoid unnescessary environment instruction 938`] = `6`; -exports[`Avoid unnescessary environment instruction 939`] = `8`; +exports[`Avoid unnescessary environment instruction 939`] = `6`; -exports[`Avoid unnescessary environment instruction 940`] = `9`; +exports[`Avoid unnescessary environment instruction 940`] = `8`; -exports[`Avoid unnescessary environment instruction 941`] = `12`; +exports[`Avoid unnescessary environment instruction 941`] = `7`; -exports[`Avoid unnescessary environment instruction 942`] = `11`; +exports[`Avoid unnescessary environment instruction 942`] = `8`; -exports[`Avoid unnescessary environment instruction 943`] = `10`; +exports[`Avoid unnescessary environment instruction 943`] = `7`; -exports[`Avoid unnescessary environment instruction 944`] = `9`; +exports[`Avoid unnescessary environment instruction 944`] = `6`; -exports[`Avoid unnescessary environment instruction 945`] = `9`; +exports[`Avoid unnescessary environment instruction 945`] = `6`; -exports[`Avoid unnescessary environment instruction 946`] = `10`; +exports[`Avoid unnescessary environment instruction 946`] = `8`; -exports[`Avoid unnescessary environment instruction 947`] = `9`; +exports[`Avoid unnescessary environment instruction 947`] = `8`; -exports[`Avoid unnescessary environment instruction 948`] = `8`; +exports[`Avoid unnescessary environment instruction 948`] = `9`; -exports[`Avoid unnescessary environment instruction 949`] = `8`; +exports[`Avoid unnescessary environment instruction 949`] = `10`; -exports[`Avoid unnescessary environment instruction 950`] = `8`; +exports[`Avoid unnescessary environment instruction 950`] = `13`; -exports[`Avoid unnescessary environment instruction 951`] = `7`; +exports[`Avoid unnescessary environment instruction 951`] = `12`; -exports[`Avoid unnescessary environment instruction 952`] = `7`; +exports[`Avoid unnescessary environment instruction 952`] = `11`; -exports[`Avoid unnescessary environment instruction 953`] = `8`; +exports[`Avoid unnescessary environment instruction 953`] = `10`; -exports[`Avoid unnescessary environment instruction 954`] = `8`; +exports[`Avoid unnescessary environment instruction 954`] = `10`; -exports[`Avoid unnescessary environment instruction 955`] = `7`; +exports[`Avoid unnescessary environment instruction 955`] = `11`; -exports[`Avoid unnescessary environment instruction 956`] = `7`; +exports[`Avoid unnescessary environment instruction 956`] = `10`; -exports[`Avoid unnescessary environment instruction 957`] = `7`; +exports[`Avoid unnescessary environment instruction 957`] = `9`; -exports[`Avoid unnescessary environment instruction 958`] = `6`; +exports[`Avoid unnescessary environment instruction 958`] = `9`; -exports[`Avoid unnescessary environment instruction 959`] = `7`; +exports[`Avoid unnescessary environment instruction 959`] = `9`; -exports[`Avoid unnescessary environment instruction 960`] = `6`; +exports[`Avoid unnescessary environment instruction 960`] = `8`; -exports[`Avoid unnescessary environment instruction 961`] = `5`; +exports[`Avoid unnescessary environment instruction 961`] = `8`; -exports[`Avoid unnescessary environment instruction 962`] = `5`; +exports[`Avoid unnescessary environment instruction 962`] = `9`; -exports[`Avoid unnescessary environment instruction 963`] = `7`; +exports[`Avoid unnescessary environment instruction 963`] = `9`; -exports[`Avoid unnescessary environment instruction 964`] = `7`; +exports[`Avoid unnescessary environment instruction 964`] = `8`; exports[`Avoid unnescessary environment instruction 965`] = `8`; -exports[`Avoid unnescessary environment instruction 966`] = `9`; +exports[`Avoid unnescessary environment instruction 966`] = `8`; -exports[`Avoid unnescessary environment instruction 967`] = `12`; +exports[`Avoid unnescessary environment instruction 967`] = `7`; -exports[`Avoid unnescessary environment instruction 968`] = `11`; +exports[`Avoid unnescessary environment instruction 968`] = `8`; -exports[`Avoid unnescessary environment instruction 969`] = `10`; +exports[`Avoid unnescessary environment instruction 969`] = `7`; -exports[`Avoid unnescessary environment instruction 970`] = `9`; +exports[`Avoid unnescessary environment instruction 970`] = `6`; -exports[`Avoid unnescessary environment instruction 971`] = `9`; +exports[`Avoid unnescessary environment instruction 971`] = `6`; -exports[`Avoid unnescessary environment instruction 972`] = `10`; +exports[`Avoid unnescessary environment instruction 972`] = `8`; -exports[`Avoid unnescessary environment instruction 973`] = `9`; +exports[`Avoid unnescessary environment instruction 973`] = `8`; -exports[`Avoid unnescessary environment instruction 974`] = `8`; +exports[`Avoid unnescessary environment instruction 974`] = `9`; -exports[`Avoid unnescessary environment instruction 975`] = `8`; +exports[`Avoid unnescessary environment instruction 975`] = `10`; -exports[`Avoid unnescessary environment instruction 976`] = `8`; +exports[`Avoid unnescessary environment instruction 976`] = `13`; -exports[`Avoid unnescessary environment instruction 977`] = `7`; +exports[`Avoid unnescessary environment instruction 977`] = `12`; -exports[`Avoid unnescessary environment instruction 978`] = `7`; +exports[`Avoid unnescessary environment instruction 978`] = `11`; -exports[`Avoid unnescessary environment instruction 979`] = `8`; +exports[`Avoid unnescessary environment instruction 979`] = `10`; -exports[`Avoid unnescessary environment instruction 980`] = `8`; +exports[`Avoid unnescessary environment instruction 980`] = `10`; -exports[`Avoid unnescessary environment instruction 981`] = `7`; +exports[`Avoid unnescessary environment instruction 981`] = `11`; -exports[`Avoid unnescessary environment instruction 982`] = `7`; +exports[`Avoid unnescessary environment instruction 982`] = `10`; -exports[`Avoid unnescessary environment instruction 983`] = `7`; +exports[`Avoid unnescessary environment instruction 983`] = `9`; -exports[`Avoid unnescessary environment instruction 984`] = `6`; +exports[`Avoid unnescessary environment instruction 984`] = `9`; -exports[`Avoid unnescessary environment instruction 985`] = `7`; +exports[`Avoid unnescessary environment instruction 985`] = `9`; -exports[`Avoid unnescessary environment instruction 986`] = `6`; +exports[`Avoid unnescessary environment instruction 986`] = `8`; -exports[`Avoid unnescessary environment instruction 987`] = `5`; +exports[`Avoid unnescessary environment instruction 987`] = `8`; -exports[`Avoid unnescessary environment instruction 988`] = `5`; +exports[`Avoid unnescessary environment instruction 988`] = `9`; -exports[`Avoid unnescessary environment instruction 989`] = `7`; +exports[`Avoid unnescessary environment instruction 989`] = `9`; -exports[`Avoid unnescessary environment instruction 990`] = `7`; +exports[`Avoid unnescessary environment instruction 990`] = `8`; exports[`Avoid unnescessary environment instruction 991`] = `8`; -exports[`Avoid unnescessary environment instruction 992`] = `9`; +exports[`Avoid unnescessary environment instruction 992`] = `8`; -exports[`Avoid unnescessary environment instruction 993`] = `12`; +exports[`Avoid unnescessary environment instruction 993`] = `7`; -exports[`Avoid unnescessary environment instruction 994`] = `11`; +exports[`Avoid unnescessary environment instruction 994`] = `8`; -exports[`Avoid unnescessary environment instruction 995`] = `10`; +exports[`Avoid unnescessary environment instruction 995`] = `7`; -exports[`Avoid unnescessary environment instruction 996`] = `9`; +exports[`Avoid unnescessary environment instruction 996`] = `6`; -exports[`Avoid unnescessary environment instruction 997`] = `9`; +exports[`Avoid unnescessary environment instruction 997`] = `6`; -exports[`Avoid unnescessary environment instruction 998`] = `10`; +exports[`Avoid unnescessary environment instruction 998`] = `8`; -exports[`Avoid unnescessary environment instruction 999`] = `9`; +exports[`Avoid unnescessary environment instruction 999`] = `8`; -exports[`Avoid unnescessary environment instruction 1000`] = `8`; +exports[`Avoid unnescessary environment instruction 1000`] = `9`; -exports[`Avoid unnescessary environment instruction 1001`] = `8`; +exports[`Avoid unnescessary environment instruction 1001`] = `10`; -exports[`Avoid unnescessary environment instruction 1002`] = `8`; +exports[`Avoid unnescessary environment instruction 1002`] = `13`; -exports[`Avoid unnescessary environment instruction 1003`] = `7`; +exports[`Avoid unnescessary environment instruction 1003`] = `12`; -exports[`Avoid unnescessary environment instruction 1004`] = `7`; +exports[`Avoid unnescessary environment instruction 1004`] = `11`; -exports[`Avoid unnescessary environment instruction 1005`] = `8`; +exports[`Avoid unnescessary environment instruction 1005`] = `10`; -exports[`Avoid unnescessary environment instruction 1006`] = `8`; +exports[`Avoid unnescessary environment instruction 1006`] = `10`; -exports[`Avoid unnescessary environment instruction 1007`] = `7`; +exports[`Avoid unnescessary environment instruction 1007`] = `11`; -exports[`Avoid unnescessary environment instruction 1008`] = `7`; +exports[`Avoid unnescessary environment instruction 1008`] = `10`; -exports[`Avoid unnescessary environment instruction 1009`] = `7`; +exports[`Avoid unnescessary environment instruction 1009`] = `9`; -exports[`Avoid unnescessary environment instruction 1010`] = `6`; +exports[`Avoid unnescessary environment instruction 1010`] = `9`; -exports[`Avoid unnescessary environment instruction 1011`] = `7`; +exports[`Avoid unnescessary environment instruction 1011`] = `9`; -exports[`Avoid unnescessary environment instruction 1012`] = `6`; +exports[`Avoid unnescessary environment instruction 1012`] = `8`; -exports[`Avoid unnescessary environment instruction 1013`] = `5`; +exports[`Avoid unnescessary environment instruction 1013`] = `8`; -exports[`Avoid unnescessary environment instruction 1014`] = `5`; +exports[`Avoid unnescessary environment instruction 1014`] = `9`; -exports[`Avoid unnescessary environment instruction 1015`] = `7`; +exports[`Avoid unnescessary environment instruction 1015`] = `9`; -exports[`Avoid unnescessary environment instruction 1016`] = `7`; +exports[`Avoid unnescessary environment instruction 1016`] = `8`; exports[`Avoid unnescessary environment instruction 1017`] = `8`; -exports[`Avoid unnescessary environment instruction 1018`] = `9`; +exports[`Avoid unnescessary environment instruction 1018`] = `8`; -exports[`Avoid unnescessary environment instruction 1019`] = `12`; +exports[`Avoid unnescessary environment instruction 1019`] = `7`; -exports[`Avoid unnescessary environment instruction 1020`] = `11`; +exports[`Avoid unnescessary environment instruction 1020`] = `8`; -exports[`Avoid unnescessary environment instruction 1021`] = `10`; +exports[`Avoid unnescessary environment instruction 1021`] = `7`; -exports[`Avoid unnescessary environment instruction 1022`] = `9`; +exports[`Avoid unnescessary environment instruction 1022`] = `6`; -exports[`Avoid unnescessary environment instruction 1023`] = `9`; +exports[`Avoid unnescessary environment instruction 1023`] = `6`; -exports[`Avoid unnescessary environment instruction 1024`] = `10`; +exports[`Avoid unnescessary environment instruction 1024`] = `8`; -exports[`Avoid unnescessary environment instruction 1025`] = `9`; +exports[`Avoid unnescessary environment instruction 1025`] = `8`; -exports[`Avoid unnescessary environment instruction 1026`] = `8`; +exports[`Avoid unnescessary environment instruction 1026`] = `9`; -exports[`Avoid unnescessary environment instruction 1027`] = `8`; +exports[`Avoid unnescessary environment instruction 1027`] = `10`; -exports[`Avoid unnescessary environment instruction 1028`] = `8`; +exports[`Avoid unnescessary environment instruction 1028`] = `13`; -exports[`Avoid unnescessary environment instruction 1029`] = `7`; +exports[`Avoid unnescessary environment instruction 1029`] = `12`; -exports[`Avoid unnescessary environment instruction 1030`] = `7`; +exports[`Avoid unnescessary environment instruction 1030`] = `11`; -exports[`Avoid unnescessary environment instruction 1031`] = `8`; +exports[`Avoid unnescessary environment instruction 1031`] = `10`; -exports[`Avoid unnescessary environment instruction 1032`] = `8`; +exports[`Avoid unnescessary environment instruction 1032`] = `10`; -exports[`Avoid unnescessary environment instruction 1033`] = `7`; +exports[`Avoid unnescessary environment instruction 1033`] = `11`; -exports[`Avoid unnescessary environment instruction 1034`] = `7`; +exports[`Avoid unnescessary environment instruction 1034`] = `10`; -exports[`Avoid unnescessary environment instruction 1035`] = `7`; +exports[`Avoid unnescessary environment instruction 1035`] = `9`; -exports[`Avoid unnescessary environment instruction 1036`] = `6`; +exports[`Avoid unnescessary environment instruction 1036`] = `9`; -exports[`Avoid unnescessary environment instruction 1037`] = `7`; +exports[`Avoid unnescessary environment instruction 1037`] = `9`; -exports[`Avoid unnescessary environment instruction 1038`] = `6`; +exports[`Avoid unnescessary environment instruction 1038`] = `8`; -exports[`Avoid unnescessary environment instruction 1039`] = `5`; +exports[`Avoid unnescessary environment instruction 1039`] = `8`; -exports[`Avoid unnescessary environment instruction 1040`] = `5`; +exports[`Avoid unnescessary environment instruction 1040`] = `9`; -exports[`Avoid unnescessary environment instruction 1041`] = `7`; +exports[`Avoid unnescessary environment instruction 1041`] = `9`; -exports[`Avoid unnescessary environment instruction 1042`] = `7`; +exports[`Avoid unnescessary environment instruction 1042`] = `8`; exports[`Avoid unnescessary environment instruction 1043`] = `8`; -exports[`Avoid unnescessary environment instruction 1044`] = `9`; +exports[`Avoid unnescessary environment instruction 1044`] = `8`; -exports[`Avoid unnescessary environment instruction 1045`] = `12`; +exports[`Avoid unnescessary environment instruction 1045`] = `7`; -exports[`Avoid unnescessary environment instruction 1046`] = `11`; +exports[`Avoid unnescessary environment instruction 1046`] = `8`; -exports[`Avoid unnescessary environment instruction 1047`] = `10`; +exports[`Avoid unnescessary environment instruction 1047`] = `7`; -exports[`Avoid unnescessary environment instruction 1048`] = `9`; +exports[`Avoid unnescessary environment instruction 1048`] = `6`; -exports[`Avoid unnescessary environment instruction 1049`] = `9`; +exports[`Avoid unnescessary environment instruction 1049`] = `6`; -exports[`Avoid unnescessary environment instruction 1050`] = `10`; +exports[`Avoid unnescessary environment instruction 1050`] = `8`; -exports[`Avoid unnescessary environment instruction 1051`] = `9`; +exports[`Avoid unnescessary environment instruction 1051`] = `8`; -exports[`Avoid unnescessary environment instruction 1052`] = `8`; +exports[`Avoid unnescessary environment instruction 1052`] = `9`; -exports[`Avoid unnescessary environment instruction 1053`] = `8`; +exports[`Avoid unnescessary environment instruction 1053`] = `10`; -exports[`Avoid unnescessary environment instruction 1054`] = `8`; +exports[`Avoid unnescessary environment instruction 1054`] = `13`; -exports[`Avoid unnescessary environment instruction 1055`] = `7`; +exports[`Avoid unnescessary environment instruction 1055`] = `12`; -exports[`Avoid unnescessary environment instruction 1056`] = `7`; +exports[`Avoid unnescessary environment instruction 1056`] = `11`; -exports[`Avoid unnescessary environment instruction 1057`] = `8`; +exports[`Avoid unnescessary environment instruction 1057`] = `10`; -exports[`Avoid unnescessary environment instruction 1058`] = `8`; +exports[`Avoid unnescessary environment instruction 1058`] = `10`; -exports[`Avoid unnescessary environment instruction 1059`] = `7`; +exports[`Avoid unnescessary environment instruction 1059`] = `11`; -exports[`Avoid unnescessary environment instruction 1060`] = `7`; +exports[`Avoid unnescessary environment instruction 1060`] = `10`; -exports[`Avoid unnescessary environment instruction 1061`] = `7`; +exports[`Avoid unnescessary environment instruction 1061`] = `9`; -exports[`Avoid unnescessary environment instruction 1062`] = `6`; +exports[`Avoid unnescessary environment instruction 1062`] = `9`; -exports[`Avoid unnescessary environment instruction 1063`] = `7`; +exports[`Avoid unnescessary environment instruction 1063`] = `9`; -exports[`Avoid unnescessary environment instruction 1064`] = `6`; +exports[`Avoid unnescessary environment instruction 1064`] = `8`; -exports[`Avoid unnescessary environment instruction 1065`] = `5`; +exports[`Avoid unnescessary environment instruction 1065`] = `8`; -exports[`Avoid unnescessary environment instruction 1066`] = `5`; +exports[`Avoid unnescessary environment instruction 1066`] = `9`; -exports[`Avoid unnescessary environment instruction 1067`] = `7`; +exports[`Avoid unnescessary environment instruction 1067`] = `9`; -exports[`Avoid unnescessary environment instruction 1068`] = `7`; +exports[`Avoid unnescessary environment instruction 1068`] = `8`; exports[`Avoid unnescessary environment instruction 1069`] = `8`; -exports[`Avoid unnescessary environment instruction 1070`] = `9`; +exports[`Avoid unnescessary environment instruction 1070`] = `8`; -exports[`Avoid unnescessary environment instruction 1071`] = `12`; +exports[`Avoid unnescessary environment instruction 1071`] = `7`; -exports[`Avoid unnescessary environment instruction 1072`] = `11`; +exports[`Avoid unnescessary environment instruction 1072`] = `8`; -exports[`Avoid unnescessary environment instruction 1073`] = `10`; +exports[`Avoid unnescessary environment instruction 1073`] = `7`; -exports[`Avoid unnescessary environment instruction 1074`] = `9`; +exports[`Avoid unnescessary environment instruction 1074`] = `6`; -exports[`Avoid unnescessary environment instruction 1075`] = `9`; +exports[`Avoid unnescessary environment instruction 1075`] = `6`; -exports[`Avoid unnescessary environment instruction 1076`] = `10`; +exports[`Avoid unnescessary environment instruction 1076`] = `8`; -exports[`Avoid unnescessary environment instruction 1077`] = `9`; +exports[`Avoid unnescessary environment instruction 1077`] = `8`; -exports[`Avoid unnescessary environment instruction 1078`] = `8`; +exports[`Avoid unnescessary environment instruction 1078`] = `9`; -exports[`Avoid unnescessary environment instruction 1079`] = `8`; +exports[`Avoid unnescessary environment instruction 1079`] = `10`; -exports[`Avoid unnescessary environment instruction 1080`] = `8`; +exports[`Avoid unnescessary environment instruction 1080`] = `13`; -exports[`Avoid unnescessary environment instruction 1081`] = `7`; +exports[`Avoid unnescessary environment instruction 1081`] = `12`; -exports[`Avoid unnescessary environment instruction 1082`] = `7`; +exports[`Avoid unnescessary environment instruction 1082`] = `11`; -exports[`Avoid unnescessary environment instruction 1083`] = `8`; +exports[`Avoid unnescessary environment instruction 1083`] = `10`; -exports[`Avoid unnescessary environment instruction 1084`] = `8`; +exports[`Avoid unnescessary environment instruction 1084`] = `10`; -exports[`Avoid unnescessary environment instruction 1085`] = `7`; +exports[`Avoid unnescessary environment instruction 1085`] = `11`; -exports[`Avoid unnescessary environment instruction 1086`] = `7`; +exports[`Avoid unnescessary environment instruction 1086`] = `10`; -exports[`Avoid unnescessary environment instruction 1087`] = `7`; +exports[`Avoid unnescessary environment instruction 1087`] = `9`; -exports[`Avoid unnescessary environment instruction 1088`] = `6`; +exports[`Avoid unnescessary environment instruction 1088`] = `9`; -exports[`Avoid unnescessary environment instruction 1089`] = `7`; +exports[`Avoid unnescessary environment instruction 1089`] = `9`; -exports[`Avoid unnescessary environment instruction 1090`] = `6`; +exports[`Avoid unnescessary environment instruction 1090`] = `8`; -exports[`Avoid unnescessary environment instruction 1091`] = `5`; +exports[`Avoid unnescessary environment instruction 1091`] = `8`; -exports[`Avoid unnescessary environment instruction 1092`] = `5`; +exports[`Avoid unnescessary environment instruction 1092`] = `9`; -exports[`Avoid unnescessary environment instruction 1093`] = `4`; +exports[`Avoid unnescessary environment instruction 1093`] = `9`; -exports[`Avoid unnescessary environment instruction 1094`] = `4`; +exports[`Avoid unnescessary environment instruction 1094`] = `8`; -exports[`Avoid unnescessary environment instruction 1095`] = `5`; +exports[`Avoid unnescessary environment instruction 1095`] = `8`; -exports[`Avoid unnescessary environment instruction 1096`] = `5`; +exports[`Avoid unnescessary environment instruction 1096`] = `8`; -exports[`Avoid unnescessary environment instruction 1097`] = `6`; +exports[`Avoid unnescessary environment instruction 1097`] = `7`; -exports[`Avoid unnescessary environment instruction 1098`] = `6`; +exports[`Avoid unnescessary environment instruction 1098`] = `8`; -exports[`Avoid unnescessary environment instruction 1099`] = `5`; +exports[`Avoid unnescessary environment instruction 1099`] = `7`; -exports[`Avoid unnescessary environment instruction 1100`] = `5`; +exports[`Avoid unnescessary environment instruction 1100`] = `6`; -exports[`Avoid unnescessary environment instruction 1101`] = `5`; +exports[`Avoid unnescessary environment instruction 1101`] = `6`; -exports[`Avoid unnescessary environment instruction 1102`] = `4`; +exports[`Avoid unnescessary environment instruction 1102`] = `5`; -exports[`Avoid unnescessary environment instruction 1103`] = `4`; +exports[`Avoid unnescessary environment instruction 1103`] = `5`; -exports[`Avoid unnescessary environment instruction 1104`] = `4`; +exports[`Avoid unnescessary environment instruction 1104`] = `6`; -exports[`Avoid unnescessary environment instruction 1105`] = `3`; +exports[`Avoid unnescessary environment instruction 1105`] = `6`; -exports[`Avoid unnescessary environment instruction 1106`] = `3`; +exports[`Avoid unnescessary environment instruction 1106`] = `7`; -exports[`Avoid unnescessary environment instruction 1107`] = `4`; +exports[`Avoid unnescessary environment instruction 1107`] = `7`; -exports[`Avoid unnescessary environment instruction 1108`] = `4`; +exports[`Avoid unnescessary environment instruction 1108`] = `6`; -exports[`Avoid unnescessary environment instruction 1109`] = `3`; +exports[`Avoid unnescessary environment instruction 1109`] = `6`; -exports[`Avoid unnescessary environment instruction 1110`] = `3`; +exports[`Avoid unnescessary environment instruction 1110`] = `6`; -exports[`Avoid unnescessary environment instruction 1111`] = `3`; +exports[`Avoid unnescessary environment instruction 1111`] = `5`; -exports[`Avoid unnescessary environment instruction 1112`] = `2`; +exports[`Avoid unnescessary environment instruction 1112`] = `5`; -exports[`Avoid unnescessary environment instruction 1113`] = `2`; +exports[`Avoid unnescessary environment instruction 1113`] = `5`; -exports[`Avoid unnescessary environment instruction 1114`] = `2`; +exports[`Avoid unnescessary environment instruction 1114`] = `4`; -exports[`Avoid unnescessary environment instruction 1115`] = `1`; +exports[`Avoid unnescessary environment instruction 1115`] = `4`; -exports[`Avoid unnescessary environment instruction 1116`] = `1`; +exports[`Avoid unnescessary environment instruction 1116`] = `5`; -exports[`Avoid unnescessary environment instruction 1117`] = `1`; +exports[`Avoid unnescessary environment instruction 1117`] = `5`; exports[`Avoid unnescessary environment instruction 1118`] = `4`; @@ -2240,473 +2240,503 @@ exports[`Avoid unnescessary environment instruction 1119`] = `4`; exports[`Avoid unnescessary environment instruction 1120`] = `4`; -exports[`Avoid unnescessary environment instruction 1121`] = `5`; +exports[`Avoid unnescessary environment instruction 1121`] = `3`; -exports[`Avoid unnescessary environment instruction 1122`] = `6`; +exports[`Avoid unnescessary environment instruction 1122`] = `3`; -exports[`Avoid unnescessary environment instruction 1123`] = `5`; +exports[`Avoid unnescessary environment instruction 1123`] = `3`; -exports[`Avoid unnescessary environment instruction 1124`] = `4`; +exports[`Avoid unnescessary environment instruction 1124`] = `2`; -exports[`Avoid unnescessary environment instruction 1125`] = `4`; +exports[`Avoid unnescessary environment instruction 1125`] = `2`; -exports[`Avoid unnescessary environment instruction 1126`] = `4`; +exports[`Avoid unnescessary environment instruction 1126`] = `2`; exports[`Avoid unnescessary environment instruction 1127`] = `5`; -exports[`Avoid unnescessary environment instruction 1128`] = `6`; +exports[`Avoid unnescessary environment instruction 1128`] = `5`; exports[`Avoid unnescessary environment instruction 1129`] = `5`; -exports[`Avoid unnescessary environment instruction 1130`] = `4`; +exports[`Avoid unnescessary environment instruction 1130`] = `6`; -exports[`Avoid unnescessary environment instruction 1131`] = `4`; +exports[`Avoid unnescessary environment instruction 1131`] = `7`; -exports[`Avoid unnescessary environment instruction 1132`] = `4`; +exports[`Avoid unnescessary environment instruction 1132`] = `6`; -exports[`Avoid unnescessary environment instruction 1133`] = `6`; +exports[`Avoid unnescessary environment instruction 1133`] = `5`; -exports[`Avoid unnescessary environment instruction 1134`] = `6`; +exports[`Avoid unnescessary environment instruction 1134`] = `5`; -exports[`Avoid unnescessary environment instruction 1135`] = `6`; +exports[`Avoid unnescessary environment instruction 1135`] = `5`; -exports[`Avoid unnescessary environment instruction 1136`] = `5`; +exports[`Avoid unnescessary environment instruction 1136`] = `6`; -exports[`Avoid unnescessary environment instruction 1137`] = `5`; +exports[`Avoid unnescessary environment instruction 1137`] = `7`; -exports[`Avoid unnescessary environment instruction 1138`] = `7`; +exports[`Avoid unnescessary environment instruction 1138`] = `6`; -exports[`Avoid unnescessary environment instruction 1139`] = `6`; +exports[`Avoid unnescessary environment instruction 1139`] = `5`; -exports[`Avoid unnescessary environment instruction 1140`] = `7`; +exports[`Avoid unnescessary environment instruction 1140`] = `5`; -exports[`Avoid unnescessary environment instruction 1141`] = `6`; +exports[`Avoid unnescessary environment instruction 1141`] = `5`; -exports[`Avoid unnescessary environment instruction 1142`] = `5`; +exports[`Avoid unnescessary environment instruction 1142`] = `7`; -exports[`Avoid unnescessary environment instruction 1143`] = `5`; +exports[`Avoid unnescessary environment instruction 1143`] = `7`; exports[`Avoid unnescessary environment instruction 1144`] = `7`; -exports[`Avoid unnescessary environment instruction 1145`] = `7`; +exports[`Avoid unnescessary environment instruction 1145`] = `6`; -exports[`Avoid unnescessary environment instruction 1146`] = `8`; +exports[`Avoid unnescessary environment instruction 1146`] = `6`; -exports[`Avoid unnescessary environment instruction 1147`] = `9`; +exports[`Avoid unnescessary environment instruction 1147`] = `8`; -exports[`Avoid unnescessary environment instruction 1148`] = `12`; +exports[`Avoid unnescessary environment instruction 1148`] = `7`; -exports[`Avoid unnescessary environment instruction 1149`] = `11`; +exports[`Avoid unnescessary environment instruction 1149`] = `8`; -exports[`Avoid unnescessary environment instruction 1150`] = `10`; +exports[`Avoid unnescessary environment instruction 1150`] = `7`; -exports[`Avoid unnescessary environment instruction 1151`] = `9`; +exports[`Avoid unnescessary environment instruction 1151`] = `6`; -exports[`Avoid unnescessary environment instruction 1152`] = `9`; +exports[`Avoid unnescessary environment instruction 1152`] = `6`; -exports[`Avoid unnescessary environment instruction 1153`] = `10`; +exports[`Avoid unnescessary environment instruction 1153`] = `8`; -exports[`Avoid unnescessary environment instruction 1154`] = `9`; +exports[`Avoid unnescessary environment instruction 1154`] = `8`; -exports[`Avoid unnescessary environment instruction 1155`] = `8`; +exports[`Avoid unnescessary environment instruction 1155`] = `9`; -exports[`Avoid unnescessary environment instruction 1156`] = `8`; +exports[`Avoid unnescessary environment instruction 1156`] = `10`; -exports[`Avoid unnescessary environment instruction 1157`] = `8`; +exports[`Avoid unnescessary environment instruction 1157`] = `13`; -exports[`Avoid unnescessary environment instruction 1158`] = `7`; +exports[`Avoid unnescessary environment instruction 1158`] = `12`; -exports[`Avoid unnescessary environment instruction 1159`] = `7`; +exports[`Avoid unnescessary environment instruction 1159`] = `11`; -exports[`Avoid unnescessary environment instruction 1160`] = `8`; +exports[`Avoid unnescessary environment instruction 1160`] = `10`; -exports[`Avoid unnescessary environment instruction 1161`] = `8`; +exports[`Avoid unnescessary environment instruction 1161`] = `10`; -exports[`Avoid unnescessary environment instruction 1162`] = `7`; +exports[`Avoid unnescessary environment instruction 1162`] = `11`; -exports[`Avoid unnescessary environment instruction 1163`] = `7`; +exports[`Avoid unnescessary environment instruction 1163`] = `10`; -exports[`Avoid unnescessary environment instruction 1164`] = `7`; +exports[`Avoid unnescessary environment instruction 1164`] = `9`; -exports[`Avoid unnescessary environment instruction 1165`] = `6`; +exports[`Avoid unnescessary environment instruction 1165`] = `9`; -exports[`Avoid unnescessary environment instruction 1166`] = `7`; +exports[`Avoid unnescessary environment instruction 1166`] = `9`; -exports[`Avoid unnescessary environment instruction 1167`] = `6`; +exports[`Avoid unnescessary environment instruction 1167`] = `8`; -exports[`Avoid unnescessary environment instruction 1168`] = `5`; +exports[`Avoid unnescessary environment instruction 1168`] = `8`; -exports[`Avoid unnescessary environment instruction 1169`] = `5`; +exports[`Avoid unnescessary environment instruction 1169`] = `9`; -exports[`Avoid unnescessary environment instruction 1170`] = `7`; +exports[`Avoid unnescessary environment instruction 1170`] = `9`; -exports[`Avoid unnescessary environment instruction 1171`] = `7`; +exports[`Avoid unnescessary environment instruction 1171`] = `8`; exports[`Avoid unnescessary environment instruction 1172`] = `8`; -exports[`Avoid unnescessary environment instruction 1173`] = `9`; +exports[`Avoid unnescessary environment instruction 1173`] = `8`; -exports[`Avoid unnescessary environment instruction 1174`] = `12`; +exports[`Avoid unnescessary environment instruction 1174`] = `7`; -exports[`Avoid unnescessary environment instruction 1175`] = `11`; +exports[`Avoid unnescessary environment instruction 1175`] = `8`; -exports[`Avoid unnescessary environment instruction 1176`] = `10`; +exports[`Avoid unnescessary environment instruction 1176`] = `7`; -exports[`Avoid unnescessary environment instruction 1177`] = `9`; +exports[`Avoid unnescessary environment instruction 1177`] = `6`; -exports[`Avoid unnescessary environment instruction 1178`] = `9`; +exports[`Avoid unnescessary environment instruction 1178`] = `6`; -exports[`Avoid unnescessary environment instruction 1179`] = `10`; +exports[`Avoid unnescessary environment instruction 1179`] = `8`; -exports[`Avoid unnescessary environment instruction 1180`] = `9`; +exports[`Avoid unnescessary environment instruction 1180`] = `8`; -exports[`Avoid unnescessary environment instruction 1181`] = `8`; +exports[`Avoid unnescessary environment instruction 1181`] = `9`; -exports[`Avoid unnescessary environment instruction 1182`] = `8`; +exports[`Avoid unnescessary environment instruction 1182`] = `10`; -exports[`Avoid unnescessary environment instruction 1183`] = `8`; +exports[`Avoid unnescessary environment instruction 1183`] = `13`; -exports[`Avoid unnescessary environment instruction 1184`] = `7`; +exports[`Avoid unnescessary environment instruction 1184`] = `12`; -exports[`Avoid unnescessary environment instruction 1185`] = `7`; +exports[`Avoid unnescessary environment instruction 1185`] = `11`; -exports[`Avoid unnescessary environment instruction 1186`] = `8`; +exports[`Avoid unnescessary environment instruction 1186`] = `10`; -exports[`Avoid unnescessary environment instruction 1187`] = `8`; +exports[`Avoid unnescessary environment instruction 1187`] = `10`; -exports[`Avoid unnescessary environment instruction 1188`] = `7`; +exports[`Avoid unnescessary environment instruction 1188`] = `11`; -exports[`Avoid unnescessary environment instruction 1189`] = `7`; +exports[`Avoid unnescessary environment instruction 1189`] = `10`; -exports[`Avoid unnescessary environment instruction 1190`] = `7`; +exports[`Avoid unnescessary environment instruction 1190`] = `9`; -exports[`Avoid unnescessary environment instruction 1191`] = `6`; +exports[`Avoid unnescessary environment instruction 1191`] = `9`; -exports[`Avoid unnescessary environment instruction 1192`] = `7`; +exports[`Avoid unnescessary environment instruction 1192`] = `9`; -exports[`Avoid unnescessary environment instruction 1193`] = `6`; +exports[`Avoid unnescessary environment instruction 1193`] = `8`; -exports[`Avoid unnescessary environment instruction 1194`] = `5`; +exports[`Avoid unnescessary environment instruction 1194`] = `8`; -exports[`Avoid unnescessary environment instruction 1195`] = `5`; +exports[`Avoid unnescessary environment instruction 1195`] = `9`; -exports[`Avoid unnescessary environment instruction 1196`] = `7`; +exports[`Avoid unnescessary environment instruction 1196`] = `9`; -exports[`Avoid unnescessary environment instruction 1197`] = `7`; +exports[`Avoid unnescessary environment instruction 1197`] = `8`; exports[`Avoid unnescessary environment instruction 1198`] = `8`; -exports[`Avoid unnescessary environment instruction 1199`] = `9`; +exports[`Avoid unnescessary environment instruction 1199`] = `8`; -exports[`Avoid unnescessary environment instruction 1200`] = `12`; +exports[`Avoid unnescessary environment instruction 1200`] = `7`; -exports[`Avoid unnescessary environment instruction 1201`] = `11`; +exports[`Avoid unnescessary environment instruction 1201`] = `8`; -exports[`Avoid unnescessary environment instruction 1202`] = `10`; +exports[`Avoid unnescessary environment instruction 1202`] = `7`; -exports[`Avoid unnescessary environment instruction 1203`] = `9`; +exports[`Avoid unnescessary environment instruction 1203`] = `6`; -exports[`Avoid unnescessary environment instruction 1204`] = `9`; +exports[`Avoid unnescessary environment instruction 1204`] = `6`; -exports[`Avoid unnescessary environment instruction 1205`] = `10`; +exports[`Avoid unnescessary environment instruction 1205`] = `8`; -exports[`Avoid unnescessary environment instruction 1206`] = `9`; +exports[`Avoid unnescessary environment instruction 1206`] = `8`; -exports[`Avoid unnescessary environment instruction 1207`] = `8`; +exports[`Avoid unnescessary environment instruction 1207`] = `9`; -exports[`Avoid unnescessary environment instruction 1208`] = `8`; +exports[`Avoid unnescessary environment instruction 1208`] = `10`; -exports[`Avoid unnescessary environment instruction 1209`] = `8`; +exports[`Avoid unnescessary environment instruction 1209`] = `13`; -exports[`Avoid unnescessary environment instruction 1210`] = `7`; +exports[`Avoid unnescessary environment instruction 1210`] = `12`; -exports[`Avoid unnescessary environment instruction 1211`] = `7`; +exports[`Avoid unnescessary environment instruction 1211`] = `11`; -exports[`Avoid unnescessary environment instruction 1212`] = `8`; +exports[`Avoid unnescessary environment instruction 1212`] = `10`; -exports[`Avoid unnescessary environment instruction 1213`] = `8`; +exports[`Avoid unnescessary environment instruction 1213`] = `10`; -exports[`Avoid unnescessary environment instruction 1214`] = `7`; +exports[`Avoid unnescessary environment instruction 1214`] = `11`; -exports[`Avoid unnescessary environment instruction 1215`] = `7`; +exports[`Avoid unnescessary environment instruction 1215`] = `10`; -exports[`Avoid unnescessary environment instruction 1216`] = `7`; +exports[`Avoid unnescessary environment instruction 1216`] = `9`; -exports[`Avoid unnescessary environment instruction 1217`] = `6`; +exports[`Avoid unnescessary environment instruction 1217`] = `9`; -exports[`Avoid unnescessary environment instruction 1218`] = `7`; +exports[`Avoid unnescessary environment instruction 1218`] = `9`; -exports[`Avoid unnescessary environment instruction 1219`] = `6`; +exports[`Avoid unnescessary environment instruction 1219`] = `8`; -exports[`Avoid unnescessary environment instruction 1220`] = `5`; +exports[`Avoid unnescessary environment instruction 1220`] = `8`; -exports[`Avoid unnescessary environment instruction 1221`] = `5`; +exports[`Avoid unnescessary environment instruction 1221`] = `9`; -exports[`Avoid unnescessary environment instruction 1222`] = `7`; +exports[`Avoid unnescessary environment instruction 1222`] = `9`; -exports[`Avoid unnescessary environment instruction 1223`] = `7`; +exports[`Avoid unnescessary environment instruction 1223`] = `8`; exports[`Avoid unnescessary environment instruction 1224`] = `8`; -exports[`Avoid unnescessary environment instruction 1225`] = `9`; +exports[`Avoid unnescessary environment instruction 1225`] = `8`; -exports[`Avoid unnescessary environment instruction 1226`] = `12`; +exports[`Avoid unnescessary environment instruction 1226`] = `7`; -exports[`Avoid unnescessary environment instruction 1227`] = `11`; +exports[`Avoid unnescessary environment instruction 1227`] = `8`; -exports[`Avoid unnescessary environment instruction 1228`] = `10`; +exports[`Avoid unnescessary environment instruction 1228`] = `7`; -exports[`Avoid unnescessary environment instruction 1229`] = `9`; +exports[`Avoid unnescessary environment instruction 1229`] = `6`; -exports[`Avoid unnescessary environment instruction 1230`] = `9`; +exports[`Avoid unnescessary environment instruction 1230`] = `6`; -exports[`Avoid unnescessary environment instruction 1231`] = `10`; +exports[`Avoid unnescessary environment instruction 1231`] = `8`; -exports[`Avoid unnescessary environment instruction 1232`] = `9`; +exports[`Avoid unnescessary environment instruction 1232`] = `8`; -exports[`Avoid unnescessary environment instruction 1233`] = `8`; +exports[`Avoid unnescessary environment instruction 1233`] = `9`; -exports[`Avoid unnescessary environment instruction 1234`] = `8`; +exports[`Avoid unnescessary environment instruction 1234`] = `10`; -exports[`Avoid unnescessary environment instruction 1235`] = `8`; +exports[`Avoid unnescessary environment instruction 1235`] = `13`; -exports[`Avoid unnescessary environment instruction 1236`] = `7`; +exports[`Avoid unnescessary environment instruction 1236`] = `12`; -exports[`Avoid unnescessary environment instruction 1237`] = `7`; +exports[`Avoid unnescessary environment instruction 1237`] = `11`; -exports[`Avoid unnescessary environment instruction 1238`] = `8`; +exports[`Avoid unnescessary environment instruction 1238`] = `10`; -exports[`Avoid unnescessary environment instruction 1239`] = `8`; +exports[`Avoid unnescessary environment instruction 1239`] = `10`; -exports[`Avoid unnescessary environment instruction 1240`] = `7`; +exports[`Avoid unnescessary environment instruction 1240`] = `11`; -exports[`Avoid unnescessary environment instruction 1241`] = `7`; +exports[`Avoid unnescessary environment instruction 1241`] = `10`; -exports[`Avoid unnescessary environment instruction 1242`] = `7`; +exports[`Avoid unnescessary environment instruction 1242`] = `9`; -exports[`Avoid unnescessary environment instruction 1243`] = `6`; +exports[`Avoid unnescessary environment instruction 1243`] = `9`; -exports[`Avoid unnescessary environment instruction 1244`] = `7`; +exports[`Avoid unnescessary environment instruction 1244`] = `9`; -exports[`Avoid unnescessary environment instruction 1245`] = `6`; +exports[`Avoid unnescessary environment instruction 1245`] = `8`; -exports[`Avoid unnescessary environment instruction 1246`] = `5`; +exports[`Avoid unnescessary environment instruction 1246`] = `8`; -exports[`Avoid unnescessary environment instruction 1247`] = `5`; +exports[`Avoid unnescessary environment instruction 1247`] = `9`; -exports[`Avoid unnescessary environment instruction 1248`] = `7`; +exports[`Avoid unnescessary environment instruction 1248`] = `9`; -exports[`Avoid unnescessary environment instruction 1249`] = `7`; +exports[`Avoid unnescessary environment instruction 1249`] = `8`; exports[`Avoid unnescessary environment instruction 1250`] = `8`; -exports[`Avoid unnescessary environment instruction 1251`] = `9`; +exports[`Avoid unnescessary environment instruction 1251`] = `8`; -exports[`Avoid unnescessary environment instruction 1252`] = `12`; +exports[`Avoid unnescessary environment instruction 1252`] = `7`; -exports[`Avoid unnescessary environment instruction 1253`] = `11`; +exports[`Avoid unnescessary environment instruction 1253`] = `8`; -exports[`Avoid unnescessary environment instruction 1254`] = `10`; +exports[`Avoid unnescessary environment instruction 1254`] = `7`; -exports[`Avoid unnescessary environment instruction 1255`] = `9`; +exports[`Avoid unnescessary environment instruction 1255`] = `6`; -exports[`Avoid unnescessary environment instruction 1256`] = `9`; +exports[`Avoid unnescessary environment instruction 1256`] = `6`; -exports[`Avoid unnescessary environment instruction 1257`] = `10`; +exports[`Avoid unnescessary environment instruction 1257`] = `8`; -exports[`Avoid unnescessary environment instruction 1258`] = `9`; +exports[`Avoid unnescessary environment instruction 1258`] = `8`; -exports[`Avoid unnescessary environment instruction 1259`] = `8`; +exports[`Avoid unnescessary environment instruction 1259`] = `9`; -exports[`Avoid unnescessary environment instruction 1260`] = `8`; +exports[`Avoid unnescessary environment instruction 1260`] = `10`; -exports[`Avoid unnescessary environment instruction 1261`] = `8`; +exports[`Avoid unnescessary environment instruction 1261`] = `13`; -exports[`Avoid unnescessary environment instruction 1262`] = `7`; +exports[`Avoid unnescessary environment instruction 1262`] = `12`; -exports[`Avoid unnescessary environment instruction 1263`] = `7`; +exports[`Avoid unnescessary environment instruction 1263`] = `11`; -exports[`Avoid unnescessary environment instruction 1264`] = `8`; +exports[`Avoid unnescessary environment instruction 1264`] = `10`; -exports[`Avoid unnescessary environment instruction 1265`] = `8`; +exports[`Avoid unnescessary environment instruction 1265`] = `10`; -exports[`Avoid unnescessary environment instruction 1266`] = `7`; +exports[`Avoid unnescessary environment instruction 1266`] = `11`; -exports[`Avoid unnescessary environment instruction 1267`] = `7`; +exports[`Avoid unnescessary environment instruction 1267`] = `10`; -exports[`Avoid unnescessary environment instruction 1268`] = `7`; +exports[`Avoid unnescessary environment instruction 1268`] = `9`; -exports[`Avoid unnescessary environment instruction 1269`] = `6`; +exports[`Avoid unnescessary environment instruction 1269`] = `9`; -exports[`Avoid unnescessary environment instruction 1270`] = `7`; +exports[`Avoid unnescessary environment instruction 1270`] = `9`; -exports[`Avoid unnescessary environment instruction 1271`] = `6`; +exports[`Avoid unnescessary environment instruction 1271`] = `8`; -exports[`Avoid unnescessary environment instruction 1272`] = `5`; +exports[`Avoid unnescessary environment instruction 1272`] = `8`; -exports[`Avoid unnescessary environment instruction 1273`] = `5`; +exports[`Avoid unnescessary environment instruction 1273`] = `9`; -exports[`Avoid unnescessary environment instruction 1274`] = `7`; +exports[`Avoid unnescessary environment instruction 1274`] = `9`; -exports[`Avoid unnescessary environment instruction 1275`] = `7`; +exports[`Avoid unnescessary environment instruction 1275`] = `8`; exports[`Avoid unnescessary environment instruction 1276`] = `8`; -exports[`Avoid unnescessary environment instruction 1277`] = `9`; +exports[`Avoid unnescessary environment instruction 1277`] = `8`; -exports[`Avoid unnescessary environment instruction 1278`] = `12`; +exports[`Avoid unnescessary environment instruction 1278`] = `7`; -exports[`Avoid unnescessary environment instruction 1279`] = `11`; +exports[`Avoid unnescessary environment instruction 1279`] = `8`; -exports[`Avoid unnescessary environment instruction 1280`] = `10`; +exports[`Avoid unnescessary environment instruction 1280`] = `7`; -exports[`Avoid unnescessary environment instruction 1281`] = `9`; +exports[`Avoid unnescessary environment instruction 1281`] = `6`; -exports[`Avoid unnescessary environment instruction 1282`] = `9`; +exports[`Avoid unnescessary environment instruction 1282`] = `6`; -exports[`Avoid unnescessary environment instruction 1283`] = `10`; +exports[`Avoid unnescessary environment instruction 1283`] = `8`; -exports[`Avoid unnescessary environment instruction 1284`] = `9`; +exports[`Avoid unnescessary environment instruction 1284`] = `8`; -exports[`Avoid unnescessary environment instruction 1285`] = `8`; +exports[`Avoid unnescessary environment instruction 1285`] = `9`; -exports[`Avoid unnescessary environment instruction 1286`] = `8`; +exports[`Avoid unnescessary environment instruction 1286`] = `10`; -exports[`Avoid unnescessary environment instruction 1287`] = `8`; +exports[`Avoid unnescessary environment instruction 1287`] = `13`; -exports[`Avoid unnescessary environment instruction 1288`] = `7`; +exports[`Avoid unnescessary environment instruction 1288`] = `12`; -exports[`Avoid unnescessary environment instruction 1289`] = `7`; +exports[`Avoid unnescessary environment instruction 1289`] = `11`; -exports[`Avoid unnescessary environment instruction 1290`] = `8`; +exports[`Avoid unnescessary environment instruction 1290`] = `10`; -exports[`Avoid unnescessary environment instruction 1291`] = `8`; +exports[`Avoid unnescessary environment instruction 1291`] = `10`; -exports[`Avoid unnescessary environment instruction 1292`] = `7`; +exports[`Avoid unnescessary environment instruction 1292`] = `11`; -exports[`Avoid unnescessary environment instruction 1293`] = `7`; +exports[`Avoid unnescessary environment instruction 1293`] = `10`; -exports[`Avoid unnescessary environment instruction 1294`] = `7`; +exports[`Avoid unnescessary environment instruction 1294`] = `9`; -exports[`Avoid unnescessary environment instruction 1295`] = `6`; +exports[`Avoid unnescessary environment instruction 1295`] = `9`; -exports[`Avoid unnescessary environment instruction 1296`] = `7`; +exports[`Avoid unnescessary environment instruction 1296`] = `9`; -exports[`Avoid unnescessary environment instruction 1297`] = `6`; +exports[`Avoid unnescessary environment instruction 1297`] = `8`; -exports[`Avoid unnescessary environment instruction 1298`] = `5`; +exports[`Avoid unnescessary environment instruction 1298`] = `8`; -exports[`Avoid unnescessary environment instruction 1299`] = `5`; +exports[`Avoid unnescessary environment instruction 1299`] = `9`; -exports[`Avoid unnescessary environment instruction 1300`] = `7`; +exports[`Avoid unnescessary environment instruction 1300`] = `9`; -exports[`Avoid unnescessary environment instruction 1301`] = `7`; +exports[`Avoid unnescessary environment instruction 1301`] = `8`; exports[`Avoid unnescessary environment instruction 1302`] = `8`; -exports[`Avoid unnescessary environment instruction 1303`] = `9`; +exports[`Avoid unnescessary environment instruction 1303`] = `8`; -exports[`Avoid unnescessary environment instruction 1304`] = `12`; +exports[`Avoid unnescessary environment instruction 1304`] = `7`; -exports[`Avoid unnescessary environment instruction 1305`] = `11`; +exports[`Avoid unnescessary environment instruction 1305`] = `8`; -exports[`Avoid unnescessary environment instruction 1306`] = `10`; +exports[`Avoid unnescessary environment instruction 1306`] = `7`; -exports[`Avoid unnescessary environment instruction 1307`] = `9`; +exports[`Avoid unnescessary environment instruction 1307`] = `6`; -exports[`Avoid unnescessary environment instruction 1308`] = `9`; +exports[`Avoid unnescessary environment instruction 1308`] = `6`; -exports[`Avoid unnescessary environment instruction 1309`] = `10`; +exports[`Avoid unnescessary environment instruction 1309`] = `8`; -exports[`Avoid unnescessary environment instruction 1310`] = `9`; +exports[`Avoid unnescessary environment instruction 1310`] = `8`; -exports[`Avoid unnescessary environment instruction 1311`] = `8`; +exports[`Avoid unnescessary environment instruction 1311`] = `9`; -exports[`Avoid unnescessary environment instruction 1312`] = `8`; +exports[`Avoid unnescessary environment instruction 1312`] = `10`; -exports[`Avoid unnescessary environment instruction 1313`] = `8`; +exports[`Avoid unnescessary environment instruction 1313`] = `13`; -exports[`Avoid unnescessary environment instruction 1314`] = `7`; +exports[`Avoid unnescessary environment instruction 1314`] = `12`; -exports[`Avoid unnescessary environment instruction 1315`] = `7`; +exports[`Avoid unnescessary environment instruction 1315`] = `11`; -exports[`Avoid unnescessary environment instruction 1316`] = `8`; +exports[`Avoid unnescessary environment instruction 1316`] = `10`; -exports[`Avoid unnescessary environment instruction 1317`] = `8`; +exports[`Avoid unnescessary environment instruction 1317`] = `10`; -exports[`Avoid unnescessary environment instruction 1318`] = `7`; +exports[`Avoid unnescessary environment instruction 1318`] = `11`; -exports[`Avoid unnescessary environment instruction 1319`] = `7`; +exports[`Avoid unnescessary environment instruction 1319`] = `10`; -exports[`Avoid unnescessary environment instruction 1320`] = `7`; +exports[`Avoid unnescessary environment instruction 1320`] = `9`; -exports[`Avoid unnescessary environment instruction 1321`] = `6`; +exports[`Avoid unnescessary environment instruction 1321`] = `9`; -exports[`Avoid unnescessary environment instruction 1322`] = `7`; +exports[`Avoid unnescessary environment instruction 1322`] = `9`; -exports[`Avoid unnescessary environment instruction 1323`] = `6`; +exports[`Avoid unnescessary environment instruction 1323`] = `8`; -exports[`Avoid unnescessary environment instruction 1324`] = `5`; +exports[`Avoid unnescessary environment instruction 1324`] = `8`; -exports[`Avoid unnescessary environment instruction 1325`] = `5`; +exports[`Avoid unnescessary environment instruction 1325`] = `9`; -exports[`Avoid unnescessary environment instruction 1326`] = `4`; +exports[`Avoid unnescessary environment instruction 1326`] = `9`; -exports[`Avoid unnescessary environment instruction 1327`] = `4`; +exports[`Avoid unnescessary environment instruction 1327`] = `8`; -exports[`Avoid unnescessary environment instruction 1328`] = `5`; +exports[`Avoid unnescessary environment instruction 1328`] = `8`; -exports[`Avoid unnescessary environment instruction 1329`] = `5`; +exports[`Avoid unnescessary environment instruction 1329`] = `8`; -exports[`Avoid unnescessary environment instruction 1330`] = `6`; +exports[`Avoid unnescessary environment instruction 1330`] = `7`; -exports[`Avoid unnescessary environment instruction 1331`] = `6`; +exports[`Avoid unnescessary environment instruction 1331`] = `8`; -exports[`Avoid unnescessary environment instruction 1332`] = `5`; +exports[`Avoid unnescessary environment instruction 1332`] = `7`; -exports[`Avoid unnescessary environment instruction 1333`] = `5`; +exports[`Avoid unnescessary environment instruction 1333`] = `6`; -exports[`Avoid unnescessary environment instruction 1334`] = `5`; +exports[`Avoid unnescessary environment instruction 1334`] = `6`; exports[`Avoid unnescessary environment instruction 1335`] = `5`; exports[`Avoid unnescessary environment instruction 1336`] = `5`; -exports[`Avoid unnescessary environment instruction 1337`] = `4`; +exports[`Avoid unnescessary environment instruction 1337`] = `6`; -exports[`Avoid unnescessary environment instruction 1338`] = `4`; +exports[`Avoid unnescessary environment instruction 1338`] = `6`; -exports[`Avoid unnescessary environment instruction 1339`] = `4`; +exports[`Avoid unnescessary environment instruction 1339`] = `7`; -exports[`Avoid unnescessary environment instruction 1340`] = `4`; +exports[`Avoid unnescessary environment instruction 1340`] = `7`; -exports[`Avoid unnescessary environment instruction 1341`] = `4`; +exports[`Avoid unnescessary environment instruction 1341`] = `6`; -exports[`Avoid unnescessary environment instruction 1342`] = `5`; +exports[`Avoid unnescessary environment instruction 1342`] = `6`; -exports[`Avoid unnescessary environment instruction 1343`] = `4`; +exports[`Avoid unnescessary environment instruction 1343`] = `6`; -exports[`Avoid unnescessary environment instruction 1344`] = `4`; +exports[`Avoid unnescessary environment instruction 1344`] = `6`; -exports[`Avoid unnescessary environment instruction 1345`] = `3`; +exports[`Avoid unnescessary environment instruction 1345`] = `6`; -exports[`Avoid unnescessary environment instruction 1346`] = `3`; +exports[`Avoid unnescessary environment instruction 1346`] = `5`; -exports[`Avoid unnescessary environment instruction 1347`] = `3`; +exports[`Avoid unnescessary environment instruction 1347`] = `5`; -exports[`Avoid unnescessary environment instruction 1348`] = `3`; +exports[`Avoid unnescessary environment instruction 1348`] = `5`; -exports[`Avoid unnescessary environment instruction 1349`] = `3`; +exports[`Avoid unnescessary environment instruction 1349`] = `5`; -exports[`Avoid unnescessary environment instruction 1350`] = `2`; +exports[`Avoid unnescessary environment instruction 1350`] = `5`; -exports[`Avoid unnescessary environment instruction 1351`] = `2`; +exports[`Avoid unnescessary environment instruction 1351`] = `6`; -exports[`Avoid unnescessary environment instruction 1352`] = `1`; +exports[`Avoid unnescessary environment instruction 1352`] = `5`; -exports[`Avoid unnescessary environment instruction 1353`] = `0`; +exports[`Avoid unnescessary environment instruction 1353`] = `5`; -exports[`Avoid unnescessary environment instruction 1354`] = `0`; +exports[`Avoid unnescessary environment instruction 1354`] = `4`; + +exports[`Avoid unnescessary environment instruction 1355`] = `4`; + +exports[`Avoid unnescessary environment instruction 1356`] = `4`; + +exports[`Avoid unnescessary environment instruction 1357`] = `4`; + +exports[`Avoid unnescessary environment instruction 1358`] = `4`; + +exports[`Avoid unnescessary environment instruction 1359`] = `3`; + +exports[`Avoid unnescessary environment instruction 1360`] = `3`; + +exports[`Avoid unnescessary environment instruction 1361`] = `2`; + +exports[`Avoid unnescessary environment instruction 1362`] = `1`; + +exports[`Avoid unnescessary environment instruction 1363`] = `1`; + +exports[`Avoid unnescessary environment instruction 1364`] = `1`; + +exports[`Avoid unnescessary environment instruction 1365`] = `1`; + +exports[`Avoid unnescessary environment instruction 1366`] = `3`; + +exports[`Avoid unnescessary environment instruction 1367`] = `2`; + +exports[`Avoid unnescessary environment instruction 1368`] = `1`; + +exports[`Avoid unnescessary environment instruction 1369`] = `0`; exports[`Breakpoint steps match 1`] = ` Array [ diff --git a/src/cse-machine/__tests__/cse-machine-runtime-context.ts b/src/cse-machine/__tests__/cse-machine-runtime-context.ts index c9274fc78..f5edfac8b 100644 --- a/src/cse-machine/__tests__/cse-machine-runtime-context.ts +++ b/src/cse-machine/__tests__/cse-machine-runtime-context.ts @@ -179,7 +179,9 @@ test('Avoid unnescessary environment instruction', () => { const CSEState = evaluateCode( stripIndent( ` + import "rune"; const arr = [1,2,3]; + const c = (x => x)(1); let sum = 0; function add(x, y) { @@ -197,6 +199,7 @@ test('Avoid unnescessary environment instruction', () => { break; } } + display(sum); ` ) ) diff --git a/src/cse-machine/utils.ts b/src/cse-machine/utils.ts index 5d052122a..cd10faea6 100644 --- a/src/cse-machine/utils.ts +++ b/src/cse-machine/utils.ts @@ -858,18 +858,6 @@ const propertySetter: PropertySetter = new Map([ ['ImportDefaultSpecifier', setToTrue], - [ - 'FunctionExpression', - (node: Node) => { - node = node as es.FunctionExpression - node.isEnvDependent = - isEnvDependent(node.id) || - node.params.some(x => isEnvDependent(x)) || - isEnvDependent(node.body) - return node - } - ], - //Instruction [InstrType.RESET, setToFalse], [InstrType.UNARY_OP, setToFalse],