Changeset 215476 in webkit
- Timestamp:
- Apr 18, 2017 12:35:50 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 13 added
- 49 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChangeLog
r215475 r215476 1 2017-04-18 Oleksandr Skachkov <gskachkov@gmail.com> 2 3 [ES6]. Implement Annex B.3.3 function hoisting rules for eval 4 https://bugs.webkit.org/show_bug.cgi?id=163208 5 6 Reviewed by Saam Barati. 7 8 * stress/eval-func-decl-block-scoping-reassign.js: Added. 9 (assert): 10 (throw.new.Error.f): 11 (throw.new.Error): 12 * stress/eval-func-decl-block-with-remove.js: Added. 13 (assert): 14 (foo.boo): 15 (foo): 16 * stress/eval-func-decl-block-with-var-and-remove.js: Added. 17 (assert): 18 (assertThrow): 19 (foo): 20 (boo): 21 (joo): 22 (koo): 23 * stress/eval-func-decl-block-with-var-sinthesize.js: Added. 24 (assert): 25 (assertThrow): 26 (foo): 27 (boo): 28 (hoo): 29 (joo): 30 (koo): 31 * stress/eval-func-decl-in-block-scope-and-bind-to-top-eval-scope.js: Added. 32 * stress/eval-func-decl-in-eval-within-block-with-let.js: Added. 33 (assert): 34 (assertThrow): 35 (foo): 36 (boo): 37 (goo): 38 * stress/eval-func-decl-in-eval-within-with-scope.js: Added. 39 (assert): 40 (assertThrow): 41 (foo): 42 (boo): 43 (boo.let.val2): 44 (boo.let.val3): 45 * stress/eval-func-decl-in-frozen-global.js: Added. 46 (assert): 47 (assertThrow): 48 (throw.new.Error): 49 (Object.freeze): 50 * stress/eval-func-decl-in-global-of-eval.js: Added. 51 (assert): 52 (assertThrow): 53 (bar): 54 (baz): 55 (foobar): 56 * stress/eval-func-decl-in-global.js: Added. 57 (assert): 58 (assertThrow): 59 * stress/eval-func-decl-in-if.js: Added. 60 (assert): 61 * stress/eval-func-decl-within-eval-with-reassign-to-var.js: Added. 62 (assert): 63 (assertThrow): 64 (foo): 65 (boo): 66 (foobar): 67 (hoo): 68 (joo): 69 (koo): 70 (loo): 71 * stress/eval-func-decl-within-eval-without-reassign-to-let.js: Added. 72 (assert): 73 (assertThrow): 74 (foo): 75 (boo): 76 (goo): 77 * stress/variable-under-tdz-eval-tricky.js: 78 (assert): 79 * test262.yaml: 80 1 81 2017-04-18 Filip Pizlo <fpizlo@apple.com> 2 82 -
trunk/JSTests/stress/variable-under-tdz-eval-tricky.js
r202602 r215476 44 44 let b = {a: eval("function b(){ return b; }"), b: (1, eval)("(b())")}; 45 45 } catch(e) { 46 threw = e instanceof ReferenceError;46 threw = e instanceof SyntaxError; 47 47 } 48 48 assert(threw); … … 54 54 let {b} = {a: eval("function b(){ return b; }"), b: (1, eval)("print(b())")}; 55 55 } catch(e) { 56 threw = e instanceof ReferenceError;56 threw = e instanceof SyntaxError; 57 57 } 58 58 assert(threw); -
trunk/JSTests/test262.yaml
r215405 r215476 911 911 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 912 912 - path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-exsting-block-fn-no-init.js 913 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []913 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 914 914 - path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-exsting-block-fn-update.js 915 915 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 917 917 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 918 918 - path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-exsting-fn-update.js 919 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []919 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 920 920 - path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-exsting-var-no-init.js 921 921 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 923 923 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 924 924 - path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-init.js 925 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []925 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 926 926 - path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-no-skip-param.js 927 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []927 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 928 928 - path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-no-skip-try.js 929 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []929 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 930 930 - path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-skip-early-err-block.js 931 931 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 941 941 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 942 942 - path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-skip-early-err.js 943 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []943 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 944 944 - path: test262/test/annexB/language/eval-code/direct/func-block-decl-eval-func-update.js 945 945 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 947 947 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 948 948 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-exsting-block-fn-no-init.js 949 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []949 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 950 950 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-exsting-block-fn-update.js 951 951 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 953 953 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 954 954 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-exsting-fn-update.js 955 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []955 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 956 956 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-exsting-var-no-init.js 957 957 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 959 959 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 960 960 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-init.js 961 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []961 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 962 962 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-no-skip-param.js 963 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []963 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 964 964 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-no-skip-try.js 965 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []965 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 966 966 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-skip-early-err-block.js 967 967 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 977 977 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 978 978 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-skip-early-err.js 979 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []979 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 980 980 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-update.js 981 981 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 983 983 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 984 984 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-exsting-block-fn-no-init.js 985 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []985 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 986 986 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-exsting-block-fn-update.js 987 987 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 989 989 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 990 990 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-exsting-fn-update.js 991 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []991 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 992 992 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-exsting-var-no-init.js 993 993 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 995 995 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 996 996 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-init.js 997 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []997 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 998 998 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-no-skip-param.js 999 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []999 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1000 1000 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-no-skip-try.js 1001 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1001 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1002 1002 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-skip-early-err-block.js 1003 1003 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1013 1013 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1014 1014 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-skip-early-err.js 1015 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1015 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1016 1016 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-update.js 1017 1017 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1019 1019 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1020 1020 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-exsting-block-fn-no-init.js 1021 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1021 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1022 1022 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-exsting-block-fn-update.js 1023 1023 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1025 1025 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1026 1026 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-exsting-fn-update.js 1027 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1027 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1028 1028 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-exsting-var-no-init.js 1029 1029 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1031 1031 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1032 1032 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-init.js 1033 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1033 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1034 1034 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-no-skip-param.js 1035 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1035 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1036 1036 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-no-skip-try.js 1037 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1037 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1038 1038 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-skip-early-err-block.js 1039 1039 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1049 1049 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1050 1050 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-skip-early-err.js 1051 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1051 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1052 1052 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-update.js 1053 1053 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1055 1055 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1056 1056 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-exsting-block-fn-no-init.js 1057 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1057 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1058 1058 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-exsting-block-fn-update.js 1059 1059 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1061 1061 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1062 1062 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-exsting-fn-update.js 1063 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1063 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1064 1064 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-exsting-var-no-init.js 1065 1065 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1067 1067 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1068 1068 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-init.js 1069 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1069 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1070 1070 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-no-skip-param.js 1071 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1071 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1072 1072 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-no-skip-try.js 1073 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1073 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1074 1074 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-skip-early-err-block.js 1075 1075 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1085 1085 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1086 1086 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-skip-early-err.js 1087 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1087 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1088 1088 - path: test262/test/annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-update.js 1089 1089 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1091 1091 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1092 1092 - path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-exsting-block-fn-no-init.js 1093 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1093 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1094 1094 - path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-exsting-block-fn-update.js 1095 1095 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1097 1097 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1098 1098 - path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-exsting-fn-update.js 1099 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1099 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1100 1100 - path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-exsting-var-no-init.js 1101 1101 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1103 1103 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1104 1104 - path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-init.js 1105 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1105 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1106 1106 - path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-no-skip-param.js 1107 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1107 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1108 1108 - path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-no-skip-try.js 1109 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1109 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1110 1110 - path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-skip-early-err-block.js 1111 1111 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1121 1121 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1122 1122 - path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-skip-early-err.js 1123 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1123 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1124 1124 - path: test262/test/annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-update.js 1125 1125 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1127 1127 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1128 1128 - path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-exsting-block-fn-no-init.js 1129 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1129 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1130 1130 - path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-exsting-block-fn-update.js 1131 1131 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1133 1133 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1134 1134 - path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-exsting-fn-update.js 1135 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1135 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1136 1136 - path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-exsting-var-no-init.js 1137 1137 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1139 1139 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1140 1140 - path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-init.js 1141 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1141 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1142 1142 - path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-no-skip-param.js 1143 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1143 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1144 1144 - path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-no-skip-try.js 1145 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1145 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1146 1146 - path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-skip-early-err-block.js 1147 1147 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1157 1157 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1158 1158 - path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-skip-early-err.js 1159 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1159 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1160 1160 - path: test262/test/annexB/language/eval-code/direct/func-switch-case-eval-func-update.js 1161 1161 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1163 1163 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1164 1164 - path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-exsting-block-fn-no-init.js 1165 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1165 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1166 1166 - path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-exsting-block-fn-update.js 1167 1167 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1169 1169 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1170 1170 - path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-exsting-fn-update.js 1171 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1171 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1172 1172 - path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-exsting-var-no-init.js 1173 1173 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1175 1175 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1176 1176 - path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-init.js 1177 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1177 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1178 1178 - path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-no-skip-param.js 1179 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1179 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1180 1180 - path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-no-skip-try.js 1181 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1181 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1182 1182 - path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err-block.js 1183 1183 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1193 1193 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1194 1194 - path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err.js 1195 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1195 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1196 1196 - path: test262/test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-update.js 1197 1197 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1198 1198 - path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-block-scoping.js 1199 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1199 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1200 1200 - path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-exsting-block-fn-no-init.js 1201 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1201 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1202 1202 - path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-exsting-block-fn-update.js 1203 1203 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1205 1205 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1206 1206 - path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-exsting-fn-update.js 1207 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1207 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1208 1208 - path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-exsting-global-init.js 1209 1209 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1215 1215 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1216 1216 - path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-init.js 1217 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1217 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1218 1218 - path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-no-skip-try.js 1219 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1219 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1220 1220 - path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err-block.js 1221 1221 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1231 1231 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1232 1232 - path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err.js 1233 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1233 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1234 1234 - path: test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-update.js 1235 1235 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1236 1236 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-block-scoping.js 1237 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1237 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1238 1238 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-exsting-block-fn-no-init.js 1239 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1239 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1240 1240 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-exsting-block-fn-update.js 1241 1241 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1243 1243 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1244 1244 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-exsting-fn-update.js 1245 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1245 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1246 1246 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-exsting-global-init.js 1247 1247 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1253 1253 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1254 1254 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-init.js 1255 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1255 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1256 1256 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-no-skip-try.js 1257 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1257 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1258 1258 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err-block.js 1259 1259 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1269 1269 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1270 1270 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err.js 1271 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1271 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1272 1272 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-update.js 1273 1273 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1274 1274 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-block-scoping.js 1275 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1275 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1276 1276 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-exsting-block-fn-no-init.js 1277 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1277 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1278 1278 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-exsting-block-fn-update.js 1279 1279 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1281 1281 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1282 1282 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-exsting-fn-update.js 1283 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1283 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1284 1284 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-exsting-global-init.js 1285 1285 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1291 1291 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1292 1292 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-init.js 1293 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1293 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1294 1294 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-no-skip-try.js 1295 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1295 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1296 1296 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err-block.js 1297 1297 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1307 1307 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1308 1308 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err.js 1309 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1309 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1310 1310 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-update.js 1311 1311 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1312 1312 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-block-scoping.js 1313 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1313 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1314 1314 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-exsting-block-fn-no-init.js 1315 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1315 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1316 1316 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-exsting-block-fn-update.js 1317 1317 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1319 1319 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1320 1320 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-exsting-fn-update.js 1321 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1321 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1322 1322 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-exsting-global-init.js 1323 1323 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1329 1329 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1330 1330 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-init.js 1331 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1331 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1332 1332 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-no-skip-try.js 1333 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1333 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1334 1334 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err-block.js 1335 1335 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1345 1345 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1346 1346 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err.js 1347 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1347 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1348 1348 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-update.js 1349 1349 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1350 1350 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-block-scoping.js 1351 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1351 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1352 1352 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-exsting-block-fn-no-init.js 1353 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1353 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1354 1354 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-exsting-block-fn-update.js 1355 1355 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1357 1357 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1358 1358 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-exsting-fn-update.js 1359 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1359 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1360 1360 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-exsting-global-init.js 1361 1361 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1367 1367 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1368 1368 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-init.js 1369 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1369 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1370 1370 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-no-skip-try.js 1371 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1371 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1372 1372 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err-block.js 1373 1373 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1383 1383 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1384 1384 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err.js 1385 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1385 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1386 1386 - path: test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-update.js 1387 1387 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1388 1388 - path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-block-scoping.js 1389 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1389 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1390 1390 - path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-exsting-block-fn-no-init.js 1391 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1391 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1392 1392 - path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-exsting-block-fn-update.js 1393 1393 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1395 1395 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1396 1396 - path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-exsting-fn-update.js 1397 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1397 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1398 1398 - path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-exsting-global-init.js 1399 1399 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1405 1405 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1406 1406 - path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-init.js 1407 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1407 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1408 1408 - path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-no-skip-try.js 1409 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1409 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1410 1410 - path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err-block.js 1411 1411 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1421 1421 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1422 1422 - path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err.js 1423 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1423 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1424 1424 - path: test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-update.js 1425 1425 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1426 1426 - path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-block-scoping.js 1427 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1427 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1428 1428 - path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-exsting-block-fn-no-init.js 1429 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1429 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1430 1430 - path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-exsting-block-fn-update.js 1431 1431 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1433 1433 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1434 1434 - path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-exsting-fn-update.js 1435 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1435 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1436 1436 - path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-exsting-global-init.js 1437 1437 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1443 1443 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1444 1444 - path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-init.js 1445 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1445 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1446 1446 - path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-no-skip-try.js 1447 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1447 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1448 1448 - path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err-block.js 1449 1449 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1459 1459 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1460 1460 - path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err.js 1461 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1461 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1462 1462 - path: test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-update.js 1463 1463 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1464 1464 - path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-block-scoping.js 1465 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1465 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1466 1466 - path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-exsting-block-fn-no-init.js 1467 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1467 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1468 1468 - path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-exsting-block-fn-update.js 1469 1469 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1471 1471 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1472 1472 - path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-exsting-fn-update.js 1473 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1473 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1474 1474 - path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-exsting-global-init.js 1475 1475 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1481 1481 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1482 1482 - path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-init.js 1483 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1483 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1484 1484 - path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-no-skip-try.js 1485 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1485 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1486 1486 - path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err-block.js 1487 1487 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1497 1497 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1498 1498 - path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err.js 1499 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1499 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1500 1500 - path: test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-update.js 1501 1501 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1503 1503 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1504 1504 - path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-block-scoping.js 1505 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1505 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1506 1506 - path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-exsting-block-fn-no-init.js 1507 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1507 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1508 1508 - path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-exsting-block-fn-update.js 1509 1509 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1511 1511 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1512 1512 - path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-exsting-fn-update.js 1513 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1513 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1514 1514 - path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-exsting-global-init.js 1515 1515 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1521 1521 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1522 1522 - path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-init.js 1523 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1523 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1524 1524 - path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-no-skip-try.js 1525 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1525 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1526 1526 - path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err-block.js 1527 1527 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1537 1537 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1538 1538 - path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err.js 1539 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1539 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1540 1540 - path: test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-update.js 1541 1541 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1542 1542 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-block-scoping.js 1543 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1543 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1544 1544 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-exsting-block-fn-no-init.js 1545 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1545 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1546 1546 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-exsting-block-fn-update.js 1547 1547 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1549 1549 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1550 1550 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-exsting-fn-update.js 1551 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1551 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1552 1552 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-exsting-global-init.js 1553 1553 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1559 1559 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1560 1560 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-init.js 1561 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1561 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1562 1562 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-no-skip-try.js 1563 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1563 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1564 1564 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err-block.js 1565 1565 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1575 1575 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1576 1576 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err.js 1577 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1577 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1578 1578 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-update.js 1579 1579 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1580 1580 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-block-scoping.js 1581 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1581 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1582 1582 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-exsting-block-fn-no-init.js 1583 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1583 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1584 1584 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-exsting-block-fn-update.js 1585 1585 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1587 1587 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1588 1588 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-exsting-fn-update.js 1589 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1589 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1590 1590 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-exsting-global-init.js 1591 1591 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1597 1597 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1598 1598 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-init.js 1599 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1599 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1600 1600 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-no-skip-try.js 1601 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1601 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1602 1602 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-skip-early-err-block.js 1603 1603 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1613 1613 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1614 1614 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-skip-early-err.js 1615 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1615 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1616 1616 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-update.js 1617 1617 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1618 1618 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-block-scoping.js 1619 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1619 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1620 1620 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-exsting-block-fn-no-init.js 1621 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1621 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1622 1622 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-exsting-block-fn-update.js 1623 1623 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1625 1625 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1626 1626 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-exsting-fn-update.js 1627 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1627 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1628 1628 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-exsting-global-init.js 1629 1629 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1635 1635 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1636 1636 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-init.js 1637 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1637 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1638 1638 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-no-skip-try.js 1639 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1639 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1640 1640 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err-block.js 1641 1641 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1651 1651 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1652 1652 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err.js 1653 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1653 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1654 1654 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-update.js 1655 1655 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1656 1656 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-block-scoping.js 1657 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1657 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1658 1658 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-exsting-block-fn-no-init.js 1659 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1659 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1660 1660 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-exsting-block-fn-update.js 1661 1661 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1663 1663 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1664 1664 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-exsting-fn-update.js 1665 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1665 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1666 1666 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-exsting-global-init.js 1667 1667 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1673 1673 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1674 1674 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-init.js 1675 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1675 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1676 1676 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-no-skip-try.js 1677 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1677 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1678 1678 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err-block.js 1679 1679 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1689 1689 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1690 1690 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err.js 1691 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1691 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1692 1692 - path: test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-update.js 1693 1693 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1694 1694 - path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-block-scoping.js 1695 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1695 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1696 1696 - path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-exsting-block-fn-no-init.js 1697 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1697 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1698 1698 - path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-exsting-block-fn-update.js 1699 1699 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1701 1701 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1702 1702 - path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-exsting-fn-update.js 1703 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1703 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1704 1704 - path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-exsting-global-init.js 1705 1705 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1711 1711 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1712 1712 - path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-init.js 1713 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1713 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1714 1714 - path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-no-skip-try.js 1715 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1715 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1716 1716 - path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-skip-early-err-block.js 1717 1717 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1727 1727 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1728 1728 - path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-skip-early-err.js 1729 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1729 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1730 1730 - path: test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-update.js 1731 1731 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1732 1732 - path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-block-scoping.js 1733 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1733 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1734 1734 - path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-exsting-block-fn-no-init.js 1735 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1735 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1736 1736 - path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-exsting-block-fn-update.js 1737 1737 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1739 1739 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1740 1740 - path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-exsting-fn-update.js 1741 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1741 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1742 1742 - path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-exsting-global-init.js 1743 1743 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1749 1749 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1750 1750 - path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-init.js 1751 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1751 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1752 1752 - path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-no-skip-try.js 1753 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1753 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1754 1754 - path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-skip-early-err-block.js 1755 1755 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1765 1765 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1766 1766 - path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-skip-early-err.js 1767 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1767 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1768 1768 - path: test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-update.js 1769 1769 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1770 1770 - path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-block-scoping.js 1771 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1771 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1772 1772 - path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-exsting-block-fn-no-init.js 1773 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1773 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1774 1774 - path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-exsting-block-fn-update.js 1775 1775 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1777 1777 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1778 1778 - path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-exsting-fn-update.js 1779 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1779 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1780 1780 - path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-exsting-global-init.js 1781 1781 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] … … 1787 1787 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1788 1788 - path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-init.js 1789 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], []1789 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/fnGlobalObject.js", "../../../../../harness/propertyHelper.js"], [] 1790 1790 - path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-no-skip-try.js 1791 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1791 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1792 1792 - path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-skip-early-err-block.js 1793 1793 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] … … 1803 1803 cmd: runTest262 :fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1804 1804 - path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-skip-early-err.js 1805 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], []1805 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 1806 1806 - path: test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-update.js 1807 1807 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] -
trunk/LayoutTests/ChangeLog
r215469 r215476 1 2017-04-18 Oleksandr Skachkov <gskachkov@gmail.com> 2 3 [ES6]. Implement Annex B.3.3 function hoisting rules for eval 4 https://bugs.webkit.org/show_bug.cgi?id=163208 5 6 Reviewed by Saam Barati. 7 8 * inspector/runtime/evaluate-CommandLineAPI-expected.txt: 9 * inspector/runtime/evaluate-CommandLineAPI.html: 10 * js/parser-syntax-check-expected.txt: 11 * js/script-tests/parser-syntax-check.js: 12 1 13 2017-04-18 Antti Koivisto <antti@apple.com> 2 14 -
trunk/LayoutTests/inspector/runtime/evaluate-CommandLineAPI-expected.txt
r200533 r215476 35 35 PASS: `values` should be `window.values` and not shadowed by CommandLineAPI `values` function. 36 36 37 -- Running test case: NonStrictEvalHoistEvaluations 38 PASS: Should be able to access var in global scope. 39 PASS: Should be able to hoist function to var in global scope. 40 PASS: Should be able to hoist function to var in global scope and keep it. 41 -
trunk/LayoutTests/inspector/runtime/evaluate-CommandLineAPI.html
r210062 r215476 7 7 let letGlobalVariable = 2; 8 8 const constGlobalVariable = 3; 9 var varGlobalFunctionVariable = 4; 9 10 10 11 function test() … … 166 167 resolve(); 167 168 }); 169 } 170 }); 171 172 suite.addTestCase({ 173 name: "NonStrictEvalHoistEvaluations", 174 description: "Test CommandLineAPI does not shadow global object variable that hoisted from eval.", 175 test(resolve, reject) { 176 testEvaluate("varGlobalFunctionVariable", (resultValue) => { 177 InspectorTest.expectThat(resultValue === 4, "Should be able to access var in global scope."); 178 }); 179 testEvaluate(` 180 let noError = varGlobalFunctionVariable === 4; 181 eval('eval(" { function varGlobalFunctionVariable() { }; } ")'); 182 typeof varGlobalFunctionVariable === 'function' && noError; 183 `, (resultValue) => { 184 InspectorTest.expectThat(resultValue, "Should be able to hoist function to var in global scope."); 185 }); 186 testEvaluate("varGlobalFunctionVariable", (resultValue) => { 187 InspectorTest.expectThat(typeof resultValue, "Should be able to hoist function to var in global scope and keep it."); 188 resolve(); 189 }); 168 190 } 169 191 }); -
trunk/LayoutTests/js/parser-syntax-check-expected.txt
r214038 r215476 689 689 PASS Invalid: "let f1; function f1(a) {};". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'f1' in strict mode." 690 690 PASS Invalid: "function f() { let f1; function f1(a) {}; }". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'f1' in strict mode." 691 PASS Valid: "{ function f1(a) {}; let f1; }"691 PASS Invalid: "{ function f1(a) {}; let f1; }". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'f1'." 692 692 PASS Invalid: "function f() { { function f1(a) {}; let f1; } }". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'f1'." 693 PASS Valid: "{ function f1(a) {}; const f1 = 25; }"693 PASS Invalid: "{ function f1(a) {}; const f1 = 25; }". Produced the following syntax error: "SyntaxError: Cannot declare a const variable twice: 'f1'." 694 694 PASS Invalid: "function f() { { function f1(a) {}; const f1 = 25; } }". Produced the following syntax error: "SyntaxError: Cannot declare a const variable twice: 'f1'." 695 PASS Valid: "{ function f1(a) {}; class f1{}; }"695 PASS Invalid: "{ function f1(a) {}; class f1{}; }". Produced the following syntax error: "SyntaxError: Cannot declare a class twice: 'f1'." 696 696 PASS Invalid: "function f() { { function f1(a) {}; class f1{}; } }". Produced the following syntax error: "SyntaxError: Cannot declare a class twice: 'f1'." 697 697 PASS Invalid: "function foo() { { let bar; function bar() { } } }". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'bar' in strict mode." … … 709 709 PASS Valid: "switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; }" 710 710 PASS Valid: "function f() { switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; } }" 711 PASS Valid: "switch('foo') { case 1: let foo; function foo() {}; break; case 2: function foo() {}; break; }"711 PASS Invalid: "switch('foo') { case 1: let foo; function foo() {}; break; case 2: function foo() {}; break; }". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'foo' in strict mode." 712 712 PASS Invalid: "function f() { switch('foo') { case 1: let foo; function foo() {}; break; case 2: function foo() {}; break; } }". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'foo' in strict mode." 713 PASS Valid: "switch('foo') { case 1: function foo() {}; let foo; break; case 2: function foo() {}; break; }"713 PASS Invalid: "switch('foo') { case 1: function foo() {}; let foo; break; case 2: function foo() {}; break; }". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'foo'." 714 714 PASS Invalid: "function f() { switch('foo') { case 1: function foo() {}; let foo; break; case 2: function foo() {}; break; } }". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'foo'." 715 PASS Valid: "switch('foo') { case 1: function foo() {}; const foo = 25; break; case 2: function foo() {}; break; }"715 PASS Invalid: "switch('foo') { case 1: function foo() {}; const foo = 25; break; case 2: function foo() {}; break; }". Produced the following syntax error: "SyntaxError: Cannot declare a const variable twice: 'foo'." 716 716 PASS Invalid: "function f() { switch('foo') { case 1: function foo() {}; const foo = 25; break; case 2: function foo() {}; break; } }". Produced the following syntax error: "SyntaxError: Cannot declare a const variable twice: 'foo'." 717 PASS Valid: "switch('foo') { case 1: function foo() {}; class foo {} ; break; case 2: function foo() {}; break; }"717 PASS Invalid: "switch('foo') { case 1: function foo() {}; class foo {} ; break; case 2: function foo() {}; break; }". Produced the following syntax error: "SyntaxError: Cannot declare a class twice: 'foo'." 718 718 PASS Invalid: "function f() { switch('foo') { case 1: function foo() {}; class foo {} ; break; case 2: function foo() {}; break; } }". Produced the following syntax error: "SyntaxError: Cannot declare a class twice: 'foo'." 719 PASS Valid: "switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: let foo; }"719 PASS Invalid: "switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: let foo; }". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'foo'." 720 720 PASS Invalid: "function f() { switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: let foo; } }". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'foo'." 721 721 PASS Valid: "function foo() { switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: { let foo; } } }" … … 735 735 PASS Valid: "if (true) function foo() { }; " 736 736 PASS Valid: "function f() { if (true) function foo() { }; }" 737 PASS Invalid: " let foo; if (true) function foo() { };". Produced the following syntax error: "SyntaxError: Cannot declare a function that shadows a let/const/class/function variable 'foo' in strict mode."737 PASS Valid: " let foo; if (true) function foo() { };" 738 738 PASS Valid: "function f() { let foo; if (true) function foo() { }; }" 739 739 PASS Valid: "function baz() { let foo; if (true) function foo() { }; }" 740 740 PASS Valid: "function f() { function baz() { let foo; if (true) function foo() { }; } }" 741 PASS Invalid: "if (true) function foo() { }; let foo;". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'foo'."741 PASS Valid: "if (true) function foo() { }; let foo;" 742 742 PASS Valid: "function f() { if (true) function foo() { }; let foo; }" 743 PASS Invalid: "{ if (true) function foo() { }; } let foo;". Produced the following syntax error: "SyntaxError: Cannot declare a let variable twice: 'foo'."743 PASS Valid: "{ if (true) function foo() { }; } let foo;" 744 744 PASS Valid: "function f() { { if (true) function foo() { }; } let foo; }" 745 745 PASS Invalid: "let foo; while (false) function foo() { }; ". Produced the following syntax error: "SyntaxError: Unexpected keyword 'function'. Function declarations are only allowed inside block statements or at the top level of a program." -
trunk/LayoutTests/js/script-tests/parser-syntax-check.js
r214038 r215476 447 447 invalid("function foo() { let f1; function f1(a) {}; }") 448 448 invalid("let f1; function f1(a) {};") 449 onlyValidGlobally("{ function f1(a) {}; let f1; }")450 onlyValidGlobally("{ function f1(a) {}; const f1 = 25; }")451 onlyValidGlobally("{ function f1(a) {}; class f1{}; }")449 invalid("{ function f1(a) {}; let f1; }") 450 invalid("{ function f1(a) {}; const f1 = 25; }") 451 invalid("{ function f1(a) {}; class f1{}; }") 452 452 invalid("function foo() { { let bar; function bar() { } } }") 453 453 invalid("function foo() { { function bar() { }; let bar; } }") … … 457 457 invalid("function foo() { { function bar() { }; class bar{}; } }") 458 458 valid("switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; }") 459 onlyValidGlobally("switch('foo') { case 1: let foo; function foo() {}; break; case 2: function foo() {}; break; }")460 onlyValidGlobally("switch('foo') { case 1: function foo() {}; let foo; break; case 2: function foo() {}; break; }")461 onlyValidGlobally("switch('foo') { case 1: function foo() {}; const foo = 25; break; case 2: function foo() {}; break; }")462 onlyValidGlobally("switch('foo') { case 1: function foo() {}; class foo {} ; break; case 2: function foo() {}; break; }")463 onlyValidGlobally("switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: let foo; }")459 invalid("switch('foo') { case 1: let foo; function foo() {}; break; case 2: function foo() {}; break; }") 460 invalid("switch('foo') { case 1: function foo() {}; let foo; break; case 2: function foo() {}; break; }") 461 invalid("switch('foo') { case 1: function foo() {}; const foo = 25; break; case 2: function foo() {}; break; }") 462 invalid("switch('foo') { case 1: function foo() {}; class foo {} ; break; case 2: function foo() {}; break; }") 463 invalid("switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: let foo; }") 464 464 valid("function foo() { switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; case 3: { let foo; } } }") 465 465 invalid("'use strict'; switch('foo') { case 1: function foo() {}; break; case 2: function foo() {}; break; }"); … … 470 470 invalid("'use strict'; if (true) function foo() { }; "); 471 471 valid("if (true) function foo() { }; "); 472 onlyInvalidGlobally(" let foo; if (true) function foo() { };");472 valid(" let foo; if (true) function foo() { };"); 473 473 valid("function baz() { let foo; if (true) function foo() { }; }"); 474 onlyInvalidGlobally("if (true) function foo() { }; let foo;");475 onlyInvalidGlobally("{ if (true) function foo() { }; } let foo;");474 valid("if (true) function foo() { }; let foo;"); 475 valid("{ if (true) function foo() { }; } let foo;"); 476 476 invalid("let foo; while (false) function foo() { }; "); 477 477 invalid("let foo; { while (false) function foo() { }; } "); -
trunk/Source/JavaScriptCore/ChangeLog
r215474 r215476 1 2017-04-18 Oleksandr Skachkov <gskachkov@gmail.com> 2 3 [ES6]. Implement Annex B.3.3 function hoisting rules for eval 4 https://bugs.webkit.org/show_bug.cgi?id=163208 5 6 Reviewed by Saam Barati. 7 8 Current patch implements Annex B.3.3 that is related to 9 hoisting of function declaration in eval. 10 https://tc39.github.io/ecma262/#sec-web-compat-evaldeclarationinstantiation 11 Function declaration in eval should create variable with 12 function name in function scope where eval is invoked 13 or bind to variable if it declared outside of the eval. 14 If variable is created it can be removed by 'delete a;' command. 15 If eval is invoke in block scope that contains let/const 16 variable with the same name as function declaration 17 we do not bind. This patch leads to the following behavior: 18 ''' 19 function foo() { 20 { 21 print(boo); // undefined 22 eval('{ function boo() {}}'); 23 print(boo); // function boo() {} 24 } 25 print(boo); // function boo() {} 26 } 27 28 function foobar() { 29 { 30 let boo = 10; 31 print(boo); // 10; 32 eval('{ function boo() {}}'); 33 print(boo); // 10; 34 } 35 print(boo) // 10 36 } 37 38 function bar() { 39 { 40 var boo = 10; 41 print(boo); // 10 42 eval('{ function boo() {} }'); 43 print(boo); // function boo() {} 44 } 45 print(boo); // function boo() {} 46 } 47 48 function bas() { 49 { 50 let boo = 10; 51 eval(' { function boo() {} } '); 52 print(boo); // 10 53 } 54 print(boo); //Reference Error 55 } 56 ''' 57 58 Current implementation relies on already implemented 59 'hoist function in sloppy mode' feature, with small changes. 60 In short it works in following way: during hoisting of function 61 with name S in eval, we are looking for first scope that 62 contains space for variable with name S and if this scope 63 has var type we bind function there 64 65 To implement this feature was added bytecode ops: 66 op_resolve_scope_for_hoisting_func_decl_in_eval - get variable scope 67 or return undefined if variable can't be binded there. 68 69 There is a corner case, hoist function in eval within catch block, 70 that is not covered by this patch, and will be fixed in 71 https://bugs.webkit.org/show_bug.cgi?id=168184 72 73 * bytecode/BytecodeDumper.cpp: 74 (JSC::BytecodeDumper<Block>::dumpBytecode): 75 * bytecode/BytecodeList.json: 76 * bytecode/BytecodeUseDef.h: 77 (JSC::computeUsesForBytecodeOffset): 78 (JSC::computeDefsForBytecodeOffset): 79 * bytecode/CodeBlock.cpp: 80 (JSC::CodeBlock::finalizeLLIntInlineCaches): 81 * bytecode/EvalCodeBlock.h: 82 (JSC::EvalCodeBlock::functionHoistingCandidate): 83 (JSC::EvalCodeBlock::numFunctionHoistingCandidates): 84 * bytecode/UnlinkedEvalCodeBlock.h: 85 * bytecompiler/BytecodeGenerator.cpp: 86 (JSC::BytecodeGenerator::BytecodeGenerator): 87 (JSC::BytecodeGenerator::hoistSloppyModeFunctionIfNecessary): 88 (JSC::BytecodeGenerator::emitResolveScopeForHoistingFuncDeclInEval): 89 * bytecompiler/BytecodeGenerator.h: 90 * dfg/DFGAbstractInterpreterInlines.h: 91 (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): 92 * dfg/DFGByteCodeParser.cpp: 93 (JSC::DFG::ByteCodeParser::parseBlock): 94 * dfg/DFGCapabilities.cpp: 95 (JSC::DFG::capabilityLevel): 96 * dfg/DFGClobberize.h: 97 (JSC::DFG::clobberize): 98 * dfg/DFGDoesGC.cpp: 99 (JSC::DFG::doesGC): 100 * dfg/DFGFixupPhase.cpp: 101 (JSC::DFG::FixupPhase::fixupNode): 102 * dfg/DFGNode.h: 103 (JSC::DFG::Node::hasIdentifier): 104 * dfg/DFGNodeType.h: 105 * dfg/DFGOperations.cpp: 106 * dfg/DFGOperations.h: 107 * dfg/DFGPredictionPropagationPhase.cpp: 108 * dfg/DFGSafeToExecute.h: 109 (JSC::DFG::safeToExecute): 110 * dfg/DFGSpeculativeJIT.cpp: 111 (JSC::DFG::SpeculativeJIT::compileResolveScopeForHoistingFuncDeclInEval): 112 * dfg/DFGSpeculativeJIT.h: 113 (JSC::DFG::SpeculativeJIT::callOperation): 114 * dfg/DFGSpeculativeJIT32_64.cpp: 115 (JSC::DFG::SpeculativeJIT::compile): 116 * dfg/DFGSpeculativeJIT64.cpp: 117 (JSC::DFG::SpeculativeJIT::compile): 118 * ftl/FTLCapabilities.cpp: 119 (JSC::FTL::canCompile): 120 * ftl/FTLLowerDFGToB3.cpp: 121 (JSC::FTL::DFG::LowerDFGToB3::compileNode): 122 (JSC::FTL::DFG::LowerDFGToB3::compileResolveScopeForHoistingFuncDeclInEval): 123 * interpreter/Interpreter.cpp: 124 (JSC::Interpreter::execute): 125 * jit/JIT.cpp: 126 (JSC::JIT::privateCompileMainPass): 127 * jit/JIT.h: 128 * jit/JITOperations.h: 129 * jit/JITPropertyAccess.cpp: 130 (JSC::JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval): 131 * jit/JITPropertyAccess32_64.cpp: 132 (JSC::JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval): 133 * llint/LowLevelInterpreter.asm: 134 * parser/Parser.cpp: 135 (JSC::Parser<LexerType>::parseFunctionDeclarationStatement): 136 * parser/Parser.h: 137 (JSC::Scope::getSloppyModeHoistedFunctions): 138 (JSC::Parser::declareFunction): 139 * runtime/CommonSlowPaths.cpp: 140 (JSC::SLOW_PATH_DECL): 141 * runtime/CommonSlowPaths.h: 142 * runtime/EvalExecutable.h: 143 (JSC::EvalExecutable::numFunctionHoistingCandidates): 144 (JSC::EvalExecutable::numTopLevelFunctionDecls): 145 (JSC::EvalExecutable::numberOfFunctionDecls): Deleted. 146 * runtime/JSScope.cpp: 147 (JSC::JSScope::resolve): 148 (JSC::JSScope::resolveScopeForHoistingFuncDeclInEval): 149 * runtime/JSScope.h: 150 1 151 2017-04-18 Saam Barati <sbarati@apple.com> 2 152 -
trunk/Source/JavaScriptCore/bytecode/BytecodeDumper.cpp
r213209 r215476 1570 1570 break; 1571 1571 } 1572 case op_resolve_scope_for_hoisting_func_decl_in_eval: { 1573 int r0 = (++it)->u.operand; 1574 int scope = (++it)->u.operand; 1575 int id0 = (++it)->u.operand; 1576 printLocationAndOp(out, location, it, "resolve_scope_for_hoisting_func_decl_in_eval"); 1577 out.printf("%s, %s, %s", registerName(r0).data(), registerName(scope).data(), idName(id0, identifier(id0)).data()); 1578 break; 1579 } 1572 1580 case op_resolve_scope: { 1573 1581 int r0 = (++it)->u.operand; -
trunk/Source/JavaScriptCore/bytecode/BytecodeList.json
r213107 r215476 153 153 { "name" : "op_check_traps", "length" : 1 }, 154 154 { "name" : "op_log_shadow_chicken_prologue", "length" : 2}, 155 { "name" : "op_log_shadow_chicken_tail", "length" : 3} 155 { "name" : "op_log_shadow_chicken_tail", "length" : 3}, 156 { "name" : "op_resolve_scope_for_hoisting_func_decl_in_eval", "length" : 4 } 156 157 ] 157 158 }, -
trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h
r213107 r215476 171 171 case op_create_lexical_environment: 172 172 case op_resolve_scope: 173 case op_resolve_scope_for_hoisting_func_decl_in_eval: 173 174 case op_get_from_scope: 174 175 case op_to_primitive: … … 383 384 case op_create_lexical_environment: 384 385 case op_resolve_scope: 386 case op_resolve_scope_for_hoisting_func_decl_in_eval: 385 387 case op_strcat: 386 388 case op_to_primitive: -
trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp
r214931 r215476 1316 1316 break; 1317 1317 } 1318 // FIXME: https://bugs.webkit.org/show_bug.cgi?id=166418 1319 // We need to add optimizations for op_resolve_scope_for_hoisting_func_decl_in_eval to do link time scope resolution. 1320 case op_resolve_scope_for_hoisting_func_decl_in_eval: 1321 break; 1318 1322 case op_get_array_length: 1319 1323 break; -
trunk/Source/JavaScriptCore/bytecode/EvalCodeBlock.h
r213697 r215476 64 64 const Identifier& variable(unsigned index) { return unlinkedEvalCodeBlock()->variable(index); } 65 65 unsigned numVariables() { return unlinkedEvalCodeBlock()->numVariables(); } 66 const Identifier& functionHoistingCandidate(unsigned index) { return unlinkedEvalCodeBlock()->functionHoistingCandidate(index); } 67 unsigned numFunctionHoistingCandidates() { return unlinkedEvalCodeBlock()->numFunctionHoistingCandidates(); } 66 68 67 69 private: -
trunk/Source/JavaScriptCore/bytecode/UnlinkedEvalCodeBlock.h
r208712 r215476 52 52 } 53 53 54 const Identifier& functionHoistingCandidate(unsigned index) { return m_functionHoistingCandidates[index]; } 55 unsigned numFunctionHoistingCandidates() { return m_functionHoistingCandidates.size(); } 56 void adoptFunctionHoistingCandidates(Vector<Identifier, 0, UnsafeVectorOverflow>&& functionHoistingCandidates) 57 { 58 ASSERT(m_functionHoistingCandidates.isEmpty()); 59 m_functionHoistingCandidates = WTFMove(functionHoistingCandidates); 60 } 54 61 private: 55 62 UnlinkedEvalCodeBlock(VM* vm, Structure* structure, const ExecutableInfo& info, DebuggerMode debuggerMode) … … 59 66 60 67 Vector<Identifier, 0, UnsafeVectorOverflow> m_variables; 68 Vector<Identifier, 0, UnsafeVectorOverflow> m_functionHoistingCandidates; 61 69 62 70 public: -
trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
r214931 r215476 757 757 emitCheckTraps(); 758 758 759 const DeclarationStacks::FunctionStack& functionStack = evalNode->functionStack(); 760 for (size_t i = 0; i < functionStack.size(); ++i) 761 m_codeBlock->addFunctionDecl(makeFunction(functionStack[i])); 759 for (FunctionMetadataNode* function : evalNode->functionStack()) 760 m_codeBlock->addFunctionDecl(makeFunction(function)); 762 761 763 762 const VariableEnvironment& varDeclarations = evalNode->varDeclarations(); 764 unsigned numVariables = varDeclarations.size();765 763 Vector<Identifier, 0, UnsafeVectorOverflow> variables; 766 variables.reserveCapacity(numVariables);764 Vector<Identifier, 0, UnsafeVectorOverflow> hoistedFunctions; 767 765 for (auto& entry : varDeclarations) { 768 766 ASSERT(entry.value.isVar()); 769 767 ASSERT(entry.key->isAtomic() || entry.key->isSymbol()); 770 variables.append(Identifier::fromUid(m_vm, entry.key.get())); 768 if (entry.value.isSloppyModeHoistingCandidate()) 769 hoistedFunctions.append(Identifier::fromUid(m_vm, entry.key.get())); 770 else 771 variables.append(Identifier::fromUid(m_vm, entry.key.get())); 771 772 } 772 773 codeBlock->adoptVariables(variables); 774 codeBlock->adoptFunctionHoistingCandidates(WTFMove(hoistedFunctions)); 773 775 774 776 if (evalNode->usesSuperCall() || evalNode->usesNewTarget()) … … 2176 2178 { 2177 2179 if (m_scopeNode->hasSloppyModeHoistedFunction(functionName.impl())) { 2178 Variable currentFunctionVariable = variable(functionName); 2179 RefPtr<RegisterID> currentValue; 2180 if (RegisterID* local = currentFunctionVariable.local()) 2181 currentValue = local; 2182 else { 2183 RefPtr<RegisterID> scope = emitResolveScope(nullptr, currentFunctionVariable); 2184 currentValue = emitGetFromScope(newTemporary(), scope.get(), currentFunctionVariable, DoNotThrowIfNotFound); 2185 } 2186 2187 ASSERT(m_varScopeLexicalScopeStackIndex); 2188 ASSERT(*m_varScopeLexicalScopeStackIndex < m_lexicalScopeStack.size()); 2189 LexicalScopeStackEntry varScope = m_lexicalScopeStack[*m_varScopeLexicalScopeStackIndex]; 2190 SymbolTable* varSymbolTable = varScope.m_symbolTable; 2191 ASSERT(varSymbolTable->scopeType() == SymbolTable::ScopeType::VarScope); 2192 SymbolTableEntry entry = varSymbolTable->get(NoLockingNecessary, functionName.impl()); 2193 if (functionName == propertyNames().arguments && entry.isNull()) { 2194 // "arguments" might be put in the parameter scope when we have a non-simple 2195 // parameter list since "arguments" is visible to expressions inside the 2196 // parameter evaluation list. 2197 // e.g: 2198 // function foo(x = arguments) { { function arguments() { } } } 2199 RELEASE_ASSERT(*m_varScopeLexicalScopeStackIndex > 0); 2200 varScope = m_lexicalScopeStack[*m_varScopeLexicalScopeStackIndex - 1]; 2201 SymbolTable* parameterSymbolTable = varScope.m_symbolTable; 2202 entry = parameterSymbolTable->get(NoLockingNecessary, functionName.impl()); 2203 } 2204 RELEASE_ASSERT(!entry.isNull()); 2205 bool isLexicallyScoped = false; 2206 emitPutToScope(varScope.m_scope, variableForLocalEntry(functionName, entry, varScope.m_symbolTableConstantIndex, isLexicallyScoped), currentValue.get(), DoNotThrowIfNotFound, InitializationMode::NotInitialization); 2207 } 2180 if (codeType() != EvalCode) { 2181 Variable currentFunctionVariable = variable(functionName); 2182 RefPtr<RegisterID> currentValue; 2183 if (RegisterID* local = currentFunctionVariable.local()) 2184 currentValue = local; 2185 else { 2186 RefPtr<RegisterID> scope = emitResolveScope(nullptr, currentFunctionVariable); 2187 currentValue = emitGetFromScope(newTemporary(), scope.get(), currentFunctionVariable, DoNotThrowIfNotFound); 2188 } 2189 2190 ASSERT(m_varScopeLexicalScopeStackIndex); 2191 ASSERT(*m_varScopeLexicalScopeStackIndex < m_lexicalScopeStack.size()); 2192 LexicalScopeStackEntry varScope = m_lexicalScopeStack[*m_varScopeLexicalScopeStackIndex]; 2193 SymbolTable* varSymbolTable = varScope.m_symbolTable; 2194 ASSERT(varSymbolTable->scopeType() == SymbolTable::ScopeType::VarScope); 2195 SymbolTableEntry entry = varSymbolTable->get(NoLockingNecessary, functionName.impl()); 2196 if (functionName == propertyNames().arguments && entry.isNull()) { 2197 // "arguments" might be put in the parameter scope when we have a non-simple 2198 // parameter list since "arguments" is visible to expressions inside the 2199 // parameter evaluation list. 2200 // e.g: 2201 // function foo(x = arguments) { { function arguments() { } } } 2202 RELEASE_ASSERT(*m_varScopeLexicalScopeStackIndex > 0); 2203 varScope = m_lexicalScopeStack[*m_varScopeLexicalScopeStackIndex - 1]; 2204 SymbolTable* parameterSymbolTable = varScope.m_symbolTable; 2205 entry = parameterSymbolTable->get(NoLockingNecessary, functionName.impl()); 2206 } 2207 RELEASE_ASSERT(!entry.isNull()); 2208 bool isLexicallyScoped = false; 2209 emitPutToScope(varScope.m_scope, variableForLocalEntry(functionName, entry, varScope.m_symbolTableConstantIndex, isLexicallyScoped), currentValue.get(), DoNotThrowIfNotFound, InitializationMode::NotInitialization); 2210 } else { 2211 Variable currentFunctionVariable = variable(functionName); 2212 RefPtr<RegisterID> currentValue; 2213 if (RegisterID* local = currentFunctionVariable.local()) 2214 currentValue = local; 2215 else { 2216 RefPtr<RegisterID> scope = emitResolveScope(nullptr, currentFunctionVariable); 2217 currentValue = emitGetFromScope(newTemporary(), scope.get(), currentFunctionVariable, DoNotThrowIfNotFound); 2218 } 2219 2220 RefPtr<RegisterID> scopeId = emitResolveScopeForHoistingFuncDeclInEval(nullptr, functionName); 2221 RefPtr<RegisterID> checkResult = emitIsUndefined(newTemporary(), scopeId.get()); 2222 2223 Ref<Label> isNotVarScopeLabel = newLabel(); 2224 emitJumpIfTrue(checkResult.get(), isNotVarScopeLabel.get()); 2225 2226 // Put to outer scope 2227 emitPutToScope(scopeId.get(), functionName, currentValue.get(), DoNotThrowIfNotFound, InitializationMode::NotInitialization); 2228 emitLabel(isNotVarScopeLabel.get()); 2229 2230 } 2231 } 2232 } 2233 2234 RegisterID* BytecodeGenerator::emitResolveScopeForHoistingFuncDeclInEval(RegisterID* dst, const Identifier& property) 2235 { 2236 ASSERT(m_codeType == EvalCode); 2237 2238 dst = finalDestination(dst); 2239 emitOpcode(op_resolve_scope_for_hoisting_func_decl_in_eval); 2240 instructions().append(kill(dst)); 2241 instructions().append(m_topMostScope->index()); 2242 instructions().append(addConstant(property)); 2243 return dst; 2208 2244 } 2209 2245 -
trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h
r214931 r215476 694 694 RegisterID* emitGetFromScope(RegisterID* dst, RegisterID* scope, const Variable&, ResolveMode); 695 695 RegisterID* emitPutToScope(RegisterID* scope, const Variable&, RegisterID* value, ResolveMode, InitializationMode); 696 697 RegisterID* emitResolveScopeForHoistingFuncDeclInEval(RegisterID* dst, const Identifier&); 698 696 699 RegisterID* initializeVariable(const Variable&, RegisterID* value); 697 700 -
trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
r214296 r215476 2856 2856 forNode(node).setType(m_graph, SpecObject); 2857 2857 break; 2858 2858 2859 case ResolveScopeForHoistingFuncDeclInEval: 2860 clobberWorld(node->origin.semantic, clobberLimit); 2861 forNode(node).makeBytecodeTop(); 2862 break; 2863 2859 2864 case PutGlobalVariable: 2860 2865 case NotifyWrite: 2861 2866 break; 2862 2867 2863 2868 case OverridesHasInstance: 2864 2869 forNode(node).setType(SpecBoolean); -
trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
r215466 r215476 5118 5118 } 5119 5119 NEXT_OPCODE(op_resolve_scope); 5120 } 5121 case op_resolve_scope_for_hoisting_func_decl_in_eval: { 5122 int dst = currentInstruction[1].u.operand; 5123 int scope = currentInstruction[2].u.operand; 5124 unsigned identifierNumber = m_inlineStackTop->m_identifierRemap[currentInstruction[3].u.operand]; 5125 5126 set(VirtualRegister(dst), addToGraph(ResolveScopeForHoistingFuncDeclInEval, OpInfo(identifierNumber), get(VirtualRegister(scope)))); 5127 5128 NEXT_OPCODE(op_resolve_scope_for_hoisting_func_decl_in_eval); 5120 5129 } 5121 5130 -
trunk/Source/JavaScriptCore/dfg/DFGCapabilities.cpp
r213107 r215476 248 248 case op_put_to_scope: 249 249 case op_resolve_scope: 250 case op_resolve_scope_for_hoisting_func_decl_in_eval: 250 251 case op_new_regexp: 251 252 return CanCompileAndInline; -
trunk/Source/JavaScriptCore/dfg/DFGClobberize.h
r214219 r215476 565 565 case GetDynamicVar: 566 566 case PutDynamicVar: 567 case ResolveScopeForHoistingFuncDeclInEval: 567 568 case ResolveScope: 568 569 read(World); -
trunk/Source/JavaScriptCore/dfg/DFGDoesGC.cpp
r214219 r215476 268 268 case GetDynamicVar: 269 269 case PutDynamicVar: 270 case ResolveScopeForHoistingFuncDeclInEval: 270 271 case ResolveScope: 271 272 case NukeStructureAndSetButterfly: -
trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp
r215472 r215476 1662 1662 } 1663 1663 1664 case ResolveScopeForHoistingFuncDeclInEval: { 1665 fixEdge<KnownCellUse>(node->child1()); 1666 break; 1667 } 1664 1668 case ResolveScope: 1665 1669 case GetDynamicVar: -
trunk/Source/JavaScriptCore/dfg/DFGNode.h
r214069 r215476 949 949 case GetDynamicVar: 950 950 case PutDynamicVar: 951 case ResolveScopeForHoistingFuncDeclInEval: 951 952 case ResolveScope: 952 953 return true; -
trunk/Source/JavaScriptCore/dfg/DFGNodeType.h
r214219 r215476 227 227 macro(SkipScope, NodeResultJS) \ 228 228 macro(ResolveScope, NodeResultJS | NodeMustGenerate) \ 229 macro(ResolveScopeForHoistingFuncDeclInEval, NodeResultJS | NodeMustGenerate) \ 229 230 macro(GetGlobalObject, NodeResultJS) \ 230 231 macro(GetClosureVar, NodeResultJS) \ -
trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp
r214313 r215476 2207 2207 } 2208 2208 2209 EncodedJSValue JIT_OPERATION operationResolveScopeForHoistingFuncDeclInEval(ExecState* exec, JSScope* scope, UniquedStringImpl* impl) 2210 { 2211 VM& vm = exec->vm(); 2212 NativeCallFrameTracer tracer(&vm, exec); 2213 2214 JSValue resolvedScope = JSScope::resolveScopeForHoistingFuncDeclInEval(exec, scope, Identifier::fromUid(exec, impl)); 2215 return JSValue::encode(resolvedScope); 2216 } 2217 2209 2218 JSCell* JIT_OPERATION operationResolveScope(ExecState* exec, JSScope* scope, UniquedStringImpl* impl) 2210 2219 { -
trunk/Source/JavaScriptCore/dfg/DFGOperations.h
r214219 r215476 208 208 209 209 JSCell* JIT_OPERATION operationResolveScope(ExecState*, JSScope*, UniquedStringImpl*); 210 EncodedJSValue JIT_OPERATION operationResolveScopeForHoistingFuncDeclInEval(ExecState*, JSScope*, UniquedStringImpl*); 210 211 EncodedJSValue JIT_OPERATION operationGetDynamicVar(ExecState*, JSObject* scope, UniquedStringImpl*, unsigned); 211 212 void JIT_OPERATION operationPutDynamicVar(ExecState*, JSObject* scope, EncodedJSValue, UniquedStringImpl*, unsigned); -
trunk/Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp
r215472 r215476 718 718 } 719 719 720 case ResolveScopeForHoistingFuncDeclInEval: 720 721 case GetDynamicVar: { 721 722 setPrediction(SpecBytecodeTop); -
trunk/Source/JavaScriptCore/dfg/DFGSafeToExecute.h
r214219 r215476 377 377 case GetDynamicVar: 378 378 case PutDynamicVar: 379 case ResolveScopeForHoistingFuncDeclInEval: 379 380 case ResolveScope: 380 381 case MapHash: -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
r215387 r215476 9419 9419 } 9420 9420 9421 void SpeculativeJIT::compileResolveScopeForHoistingFuncDeclInEval(Node* node) 9422 { 9423 SpeculateCellOperand scope(this, node->child1()); 9424 GPRReg scopeGPR = scope.gpr(); 9425 #if USE(JSVALUE64) 9426 GPRFlushedCallResult result(this); 9427 GPRReg resultGPR = result.gpr(); 9428 flushRegisters(); 9429 callOperation(operationResolveScopeForHoistingFuncDeclInEval, resultGPR, scopeGPR, identifierUID(node->identifierNumber())); 9430 m_jit.exceptionCheck(); 9431 jsValueResult(result.gpr(), node); 9432 #else 9433 flushRegisters(); 9434 GPRFlushedCallResult2 resultTag(this); 9435 GPRFlushedCallResult resultPayload(this); 9436 callOperation(operationResolveScopeForHoistingFuncDeclInEval, JSValueRegs(resultTag.gpr(), resultPayload.gpr()), scopeGPR, identifierUID(node->identifierNumber())); 9437 m_jit.exceptionCheck(); 9438 jsValueResult(resultTag.gpr(), resultPayload.gpr(), node); 9439 #endif 9440 } 9441 9421 9442 void SpeculativeJIT::compileGetDynamicVar(Node* node) 9422 9443 { -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h
r214531 r215476 1376 1376 } 1377 1377 1378 JITCompiler::Call callOperation(S_JITOperation_EO operation, GPRReg result, GPRReg arg1) 1379 { 1380 m_jit.setupArgumentsWithExecState(arg1); 1381 return appendCallSetResult(operation, result); 1382 } 1383 1378 1384 JITCompiler::Call callOperation(C_JITOperation_EJscI operation, GPRReg result, GPRReg arg1, UniquedStringImpl* impl) 1379 1385 { … … 1430 1436 { 1431 1437 m_jit.setupArgumentsWithExecState(arg1, arg2, TrustedImmPtr(uid)); 1438 return appendCallSetResult(operation, result); 1439 } 1440 JITCompiler::Call callOperation(J_JITOperation_EJscI operation, GPRReg result, GPRReg arg1, UniquedStringImpl* impl) 1441 { 1442 m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(impl)); 1432 1443 return appendCallSetResult(operation, result); 1433 1444 } … … 1970 1981 m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2.payloadGPR(), arg2.tagGPR(), arg3.payloadGPR(), arg3.tagGPR(), arg4.payloadGPR(), arg4.tagGPR()); 1971 1982 return appendCall(operation); 1983 } 1984 JITCompiler::Call callOperation(J_JITOperation_EJscI operation, JSValueRegs result, GPRReg arg1, UniquedStringImpl* impl) 1985 { 1986 m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(impl)); 1987 return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR()); 1972 1988 } 1973 1989 JITCompiler::Call callOperation(V_JITOperation_EOJJZ operation, GPRReg arg1, JSValueRegs arg2, JSValueRegs arg3, GPRReg arg4) … … 2855 2871 void compileCallObjectConstructor(Node*); 2856 2872 void compileResolveScope(Node*); 2873 void compileResolveScopeForHoistingFuncDeclInEval(Node*); 2857 2874 void compileGetDynamicVar(Node*); 2858 2875 void compilePutDynamicVar(Node*); -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
r215038 r215476 5611 5611 } 5612 5612 5613 case ResolveScopeForHoistingFuncDeclInEval: { 5614 compileResolveScopeForHoistingFuncDeclInEval(node); 5615 break; 5616 } 5617 5613 5618 case ResolveScope: { 5614 5619 compileResolveScope(node); -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
r214571 r215476 4635 4635 break; 4636 4636 } 4637 4638 case ResolveScopeForHoistingFuncDeclInEval: { 4639 compileResolveScopeForHoistingFuncDeclInEval(node); 4640 break; 4641 } 4637 4642 4638 4643 case ResolveScope: { -
trunk/Source/JavaScriptCore/ftl/FTLCapabilities.cpp
r214219 r215476 268 268 case LogShadowChickenTail: 269 269 case ResolveScope: 270 case ResolveScopeForHoistingFuncDeclInEval: 270 271 case GetDynamicVar: 271 272 case PutDynamicVar: -
trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
r215196 r215476 1065 1065 case RecordRegExpCachedResult: 1066 1066 compileRecordRegExpCachedResult(); 1067 break; 1068 case ResolveScopeForHoistingFuncDeclInEval: 1069 compileResolveScopeForHoistingFuncDeclInEval(); 1067 1070 break; 1068 1071 case ResolveScope: … … 10042 10045 RELEASE_ASSERT_NOT_REACHED(); 10043 10046 } 10047 } 10048 10049 void compileResolveScopeForHoistingFuncDeclInEval() 10050 { 10051 UniquedStringImpl* uid = m_graph.identifiers()[m_node->identifierNumber()]; 10052 setJSValue(vmCall(pointerType(), m_out.operation(operationResolveScopeForHoistingFuncDeclInEval), m_callFrame, lowCell(m_node->child1()), m_out.constIntPtr(uid))); 10044 10053 } 10045 10054 -
trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp
r215072 r215476 1092 1092 1093 1093 unsigned numVariables = eval->numVariables(); 1094 int numFunctions = eval->numberOfFunctionDecls(); 1094 unsigned numTopLevelFunctionDecls = eval->numTopLevelFunctionDecls(); 1095 unsigned numFunctionHoistingCandidates = eval->numFunctionHoistingCandidates(); 1095 1096 1096 1097 JSScope* variableObject; 1097 if ((numVariables || num Functions) && eval->isStrictMode()) {1098 if ((numVariables || numTopLevelFunctionDecls) && eval->isStrictMode()) { 1098 1099 scope = StrictEvalActivation::create(callFrame, scope); 1099 1100 variableObject = scope; … … 1126 1127 1127 1128 // We can't declare a "var"/"function" that overwrites a global "let"/"const"/"class" in a sloppy-mode eval. 1128 if (variableObject->isGlobalObject() && !eval->isStrictMode() && (numVariables || num Functions)) {1129 if (variableObject->isGlobalObject() && !eval->isStrictMode() && (numVariables || numTopLevelFunctionDecls)) { 1129 1130 JSGlobalLexicalEnvironment* globalLexicalEnvironment = jsCast<JSGlobalObject*>(variableObject)->globalLexicalEnvironment(); 1130 1131 for (unsigned i = 0; i < numVariables; ++i) { … … 1136 1137 } 1137 1138 1138 for ( int i = 0; i < numFunctions; ++i) {1139 for (unsigned i = 0; i < numTopLevelFunctionDecls; ++i) { 1139 1140 FunctionExecutable* function = codeBlock->functionDecl(i); 1140 1141 PropertySlot slot(globalLexicalEnvironment, PropertySlot::InternalMethodType::VMInquiry); … … 1148 1149 variableObject->flattenDictionaryObject(vm); 1149 1150 1150 if (numVariables || num Functions) {1151 if (numVariables || numTopLevelFunctionDecls || numFunctionHoistingCandidates) { 1151 1152 BatchedTransitionOptimizer optimizer(vm, variableObject); 1152 1153 if (variableObject->next() && !eval->isStrictMode()) … … 1165 1166 } 1166 1167 } 1167 1168 for (int i = 0; i < numFunctions; ++i) { 1169 FunctionExecutable* function = codeBlock->functionDecl(i); 1170 PutPropertySlot slot(variableObject); 1171 variableObject->methodTable()->put(variableObject, callFrame, function->name(), JSFunction::create(vm, function, scope), slot); 1172 RETURN_IF_EXCEPTION(throwScope, checkedReturn(throwScope.exception())); 1168 1169 if (eval->isStrictMode()) { 1170 for (unsigned i = 0; i < numTopLevelFunctionDecls; ++i) { 1171 FunctionExecutable* function = codeBlock->functionDecl(i); 1172 PutPropertySlot slot(variableObject); 1173 variableObject->methodTable()->put(variableObject, callFrame, function->name(), JSFunction::create(vm, function, scope), slot); 1174 } 1175 } else { 1176 for (unsigned i = 0; i < numTopLevelFunctionDecls; ++i) { 1177 FunctionExecutable* function = codeBlock->functionDecl(i); 1178 JSValue resolvedScope = JSScope::resolveScopeForHoistingFuncDeclInEval(callFrame, scope, function->name()); 1179 if (resolvedScope.isUndefined()) 1180 return checkedReturn(throwSyntaxError(callFrame, throwScope, makeString("Can't create duplicate variable in eval: '", String(function->name().impl()), "'"))); 1181 PutPropertySlot slot(variableObject); 1182 variableObject->methodTable()->put(variableObject, callFrame, function->name(), JSFunction::create(vm, function, scope), slot); 1183 RETURN_IF_EXCEPTION(throwScope, checkedReturn(throwScope.exception())); 1184 } 1185 1186 for (unsigned i = 0; i < numFunctionHoistingCandidates; ++i) { 1187 const Identifier& ident = codeBlock->functionHoistingCandidate(i); 1188 JSValue resolvedScope = JSScope::resolveScopeForHoistingFuncDeclInEval(callFrame, scope, ident); 1189 if (!resolvedScope.isUndefined()) { 1190 if (!variableObject->hasProperty(callFrame, ident)) { 1191 PutPropertySlot slot(variableObject); 1192 variableObject->methodTable()->put(variableObject, callFrame, ident, jsUndefined(), slot); 1193 RETURN_IF_EXCEPTION(throwScope, checkedReturn(throwScope.exception())); 1194 } 1195 } 1196 } 1173 1197 } 1174 1198 } -
trunk/Source/JavaScriptCore/jit/JIT.cpp
r214571 r215476 393 393 394 394 DEFINE_OP(op_resolve_scope) 395 DEFINE_OP(op_resolve_scope_for_hoisting_func_decl_in_eval) 395 396 DEFINE_OP(op_get_from_scope) 396 397 DEFINE_OP(op_put_to_scope) -
trunk/Source/JavaScriptCore/jit/JIT.h
r214531 r215476 666 666 667 667 void emit_op_resolve_scope(Instruction*); 668 void emit_op_resolve_scope_for_hoisting_func_decl_in_eval(Instruction*); 668 669 void emit_op_get_from_scope(Instruction*); 669 670 void emit_op_put_to_scope(Instruction*); -
trunk/Source/JavaScriptCore/jit/JITOperations.h
r214571 r215476 154 154 typedef EncodedJSValue (JIT_OPERATION *J_JITOperation_EJJMic)(ExecState*, EncodedJSValue, EncodedJSValue, void*); 155 155 typedef EncodedJSValue (JIT_OPERATION *J_JITOperation_EJMic)(ExecState*, EncodedJSValue, void*); 156 typedef EncodedJSValue (JIT_OPERATION *J_JITOperation_EJscI)(ExecState*, JSScope*, UniquedStringImpl*); 156 157 typedef EncodedJSValue (JIT_OPERATION *J_JITOperation_EJssZ)(ExecState*, JSString*, int32_t); 157 158 typedef EncodedJSValue (JIT_OPERATION *J_JITOperation_EJss)(ExecState*, JSString*); … … 233 234 typedef int32_t (JIT_OPERATION *Z_JITOperation_EOI)(ExecState*, JSObject*, UniquedStringImpl*); 234 235 typedef int32_t (JIT_OPERATION *Z_JITOperation_EOJ)(ExecState*, JSObject*, EncodedJSValue); 236 typedef size_t (JIT_OPERATION *S_JITOperation_EO)(ExecState*, JSObject*); 235 237 typedef size_t (JIT_OPERATION *S_JITOperation_ECC)(ExecState*, JSCell*, JSCell*); 236 238 typedef size_t (JIT_OPERATION *S_JITOperation_EGC)(ExecState*, JSGlobalObject*, JSCell*); -
trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp
r214571 r215476 763 763 loadPtr(Address(regT0, JSScope::offsetOfNext()), regT0); 764 764 emitPutVirtualRegister(dst); 765 } 766 767 void JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval(Instruction* currentInstruction) 768 { 769 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_resolve_scope_for_hoisting_func_decl_in_eval); 770 slowPathCall.call(); 765 771 } 766 772 -
trunk/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp
r214571 r215476 772 772 } 773 773 774 void JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval(Instruction* currentInstruction) 775 { 776 JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_resolve_scope_for_hoisting_func_decl_in_eval); 777 slowPathCall.call(); 778 } 779 774 780 void JIT::emit_op_resolve_scope(Instruction* currentInstruction) 775 781 { -
trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
r214498 r215476 1832 1832 dispatch(5) 1833 1833 1834 _llint_op_resolve_scope_for_hoisting_func_decl_in_eval: 1835 traceExecution() 1836 callOpcodeSlowPath(_slow_path_resolve_scope_for_hoisting_func_decl_in_eval) 1837 dispatch(4) 1838 1834 1839 # Lastly, make sure that we can link even though we don't support all opcodes. 1835 1840 # These opcodes should never arise when using LLInt or either JIT. We assert -
trunk/Source/JavaScriptCore/parser/Parser.cpp
r215474 r215476 1785 1785 semanticFailIfTrue(strictMode(), "Function declarations are only allowed inside blocks or switch statements in strict mode"); 1786 1786 failIfFalse(parentAllowsFunctionDeclarationAsStatement, "Function declarations are only allowed inside block statements or at the top level of a program"); 1787 if (!currentScope()->isFunction() ) {1788 // We only implement annex B.3.3 if we're in function mode . Otherwise, we fall back1787 if (!currentScope()->isFunction() && !closestParentOrdinaryFunctionNonLexicalScope()->isEvalContext()) { 1788 // We only implement annex B.3.3 if we're in function mode or eval mode. Otherwise, we fall back 1789 1789 // to hoisting behavior. 1790 1790 // FIXME: https://bugs.webkit.org/show_bug.cgi?id=155813 -
trunk/Source/JavaScriptCore/parser/Parser.h
r215474 r215476 648 648 auto addResult = m_declaredVariables.add(function); 649 649 addResult.iterator->value.setIsVar(); 650 addResult.iterator->value.setIsSloppyModeHoistingCandidate(); 650 651 sloppyModeHoistedFunctions.add(function); 651 652 } … … 1235 1236 std::pair<DeclarationResultMask, ScopeRef> declareFunction(const Identifier* ident) 1236 1237 { 1237 if ( m_statementDepth == 1 || (!strictMode() && !currentScope()->isFunction())) {1238 if ((m_statementDepth == 1) || (!strictMode() && !currentScope()->isFunction() && !closestParentOrdinaryFunctionNonLexicalScope()->isEvalContext())) { 1238 1239 // Functions declared at the top-most scope (both in sloppy and strict mode) are declared as vars 1239 1240 // for backwards compatibility. This allows us to declare functions with the same name more than once. … … 1246 1247 1247 1248 if (!strictMode()) { 1248 ASSERT(currentScope()->isFunction() );1249 ASSERT(currentScope()->isFunction() || closestParentOrdinaryFunctionNonLexicalScope()->isEvalContext()); 1249 1250 1250 1251 // Functions declared inside a function inside a nested block scope in sloppy mode are subject to this -
trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp
r214313 r215476 813 813 } 814 814 815 SLOW_PATH_DECL(slow_path_resolve_scope_for_hoisting_func_decl_in_eval) 816 { 817 BEGIN(); 818 const Identifier& ident = exec->codeBlock()->identifier(pc[3].u.operand); 819 JSScope* scope = exec->uncheckedR(pc[2].u.operand).Register::scope(); 820 JSValue resolvedScope = JSScope::resolveScopeForHoistingFuncDeclInEval(exec, scope, ident); 821 822 CHECK_EXCEPTION(); 823 824 RETURN(resolvedScope); 825 } 826 815 827 SLOW_PATH_DECL(slow_path_resolve_scope) 816 828 { -
trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h
r211908 r215476 258 258 SLOW_PATH_HIDDEN_DECL(slow_path_push_with_scope); 259 259 SLOW_PATH_HIDDEN_DECL(slow_path_resolve_scope); 260 SLOW_PATH_HIDDEN_DECL(slow_path_is_var_scope); 261 SLOW_PATH_HIDDEN_DECL(slow_path_resolve_scope_for_hoisting_func_decl_in_eval); 260 262 SLOW_PATH_HIDDEN_DECL(slow_path_create_rest); 261 263 SLOW_PATH_HIDDEN_DECL(slow_path_get_by_id_with_this); -
trunk/Source/JavaScriptCore/runtime/EvalExecutable.h
r212365 r215476 59 59 60 60 unsigned numVariables() { return m_unlinkedEvalCodeBlock->numVariables(); } 61 unsigned numberOfFunctionDecls() { return m_unlinkedEvalCodeBlock->numberOfFunctionDecls(); } 61 unsigned numFunctionHoistingCandidates() { return m_unlinkedEvalCodeBlock->numFunctionHoistingCandidates(); } 62 unsigned numTopLevelFunctionDecls() { return m_unlinkedEvalCodeBlock->numberOfFunctionDecls(); } 62 63 63 64 protected: -
trunk/Source/JavaScriptCore/runtime/JSScope.cpp
r213165 r215476 212 212 } 213 213 214 JSObject* JSScope::resolve(ExecState* exec, JSScope* scope, const Identifier& ident) 214 template<typename ReturnPredicateFunctor, typename SkipPredicateFunctor> 215 ALWAYS_INLINE JSObject* JSScope::resolve(ExecState* exec, JSScope* scope, const Identifier& ident, ReturnPredicateFunctor returnPredicate, SkipPredicateFunctor skipPredicate) 215 216 { 216 217 VM& vm = exec->vm(); … … 239 240 } 240 241 242 if (skipPredicate(scope)) 243 continue; 244 241 245 bool hasProperty = object->hasProperty(exec, ident); 242 246 RETURN_IF_EXCEPTION(throwScope, nullptr); … … 247 251 return object; 248 252 } 249 } 253 254 if (returnPredicate(scope)) 255 return object; 256 } 257 } 258 259 JSValue JSScope::resolveScopeForHoistingFuncDeclInEval(ExecState* exec, JSScope* scope, const Identifier& ident) 260 { 261 auto returnPredicate = [&] (JSScope* scope) -> bool { 262 return scope->isVarScope(); 263 }; 264 auto skipPredicate = [&] (JSScope* scope) -> bool { 265 return scope->isWithScope(); 266 }; 267 JSObject* object = resolve(exec, scope, ident, returnPredicate, skipPredicate); 268 269 bool result = false; 270 if (JSScope* scope = jsDynamicCast<JSScope*>(exec->vm(), object)) { 271 if (SymbolTable* scopeSymbolTable = scope->symbolTable(exec->vm())) { 272 result = scope->isGlobalObject() 273 ? JSObject::isExtensible(object, exec) 274 : scopeSymbolTable->scopeType() == SymbolTable::ScopeType::VarScope; 275 } 276 } 277 278 return result ? JSValue(object) : jsUndefined(); 279 } 280 281 JSObject* JSScope::resolve(ExecState* exec, JSScope* scope, const Identifier& ident) 282 { 283 auto predicate1 = [&] (JSScope*) -> bool { 284 return false; 285 }; 286 auto predicate2 = [&] (JSScope*) -> bool { 287 return false; 288 }; 289 return resolve(exec, scope, ident, predicate1, predicate2); 250 290 } 251 291 -
trunk/Source/JavaScriptCore/runtime/JSScope.h
r211247 r215476 47 47 48 48 static JSObject* resolve(ExecState*, JSScope*, const Identifier&); 49 static JSValue resolveScopeForHoistingFuncDeclInEval(ExecState*, JSScope*, const Identifier&); 49 50 static ResolveOp abstractResolve(ExecState*, size_t depthOffset, JSScope*, const Identifier&, GetOrPut, ResolveType, InitializationMode); 50 51 … … 76 77 protected: 77 78 JSScope(VM&, Structure*, JSScope* next); 79 80 template<typename ReturnPredicateFunctor, typename SkipPredicateFunctor> 81 static JSObject* resolve(ExecState*, JSScope*, const Identifier&, ReturnPredicateFunctor, SkipPredicateFunctor); 78 82 79 83 private:
Note: See TracChangeset
for help on using the changeset viewer.