summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/ch10
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/ch10')
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-1-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-10-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-11-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-12-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-13-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-14-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-15-s.js26
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-16-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-17-s.js30
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-18-s.js31
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-19-s.js25
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-20-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-21-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-22-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-23-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-24-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-25-s.js29
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-26-s.js32
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-27-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-28-s.js27
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-29-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-3-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-30-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-31-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-32-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-4-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-6-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-7-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8gs.js17
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-9-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.1_A1_T1.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.1_A1_T2.js28
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.1_A1_T3.js16
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.1_A2_T1.js20
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.6_A1_T1.js20
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.6_A1_T2.js33
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.6_A1_T3.js20
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.7_A1_T1.js15
-rw-r--r--js/src/tests/test262/ch10/10.1/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.1/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-16-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-18-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-22-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-27-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A1.js29
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A2.js37
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A3.js21
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T1.js49
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T2.js41
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T1.js35
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T2.js35
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.2_T1.js34
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T1.js26
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T2.js25
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T3.js28
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T4.js27
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T5.js31
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T6.js30
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T7.js32
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T8.js32
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T9.js27
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T1.js26
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T2.js56
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T3.js87
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T4.js16
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T1.js30
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T2.js60
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T3.js90
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T4.js20
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T1.js30
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T2.js60
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T3.js90
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T4.js20
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T1.js21
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T2.js33
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T3.js45
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T4.js17
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T1.js25
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T2.js37
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T3.js49
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T4.js21
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T1.js24
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T2.js36
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T3.js48
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T4.js20
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T1.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T2.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.1/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.1/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-1.js26
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-2.js31
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-3.js34
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-4.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-5.js27
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-c-1.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-1-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-2-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-1gs.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-2-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-4-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2.1_A1.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T1.js28
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T10.js28
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T11.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T2.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T3.js28
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T4.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T5.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T6.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T7.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T8.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T9.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T1.js31
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T10.js32
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T11.js34
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T2.js32
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T3.js32
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T4.js33
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T5.js34
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T6.js34
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T7.js35
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T8.js34
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T9.js34
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-1-s.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-103.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-104.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-105.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-106.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12gs.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-18gs.js14
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-2-s.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-3-s.js27
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-4-s.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-5-s.js32
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57gs.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58gs.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/S10.4.3_A1.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/S10.4A1.1_T2.js33
-rw-r--r--js/src/tests/test262/ch10/10.4/S10.4_A1.1_T1.js31
-rw-r--r--js/src/tests/test262/ch10/10.4/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.5/10.5-1-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.5/10.5-1gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.5/10.5-7-b-1-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.5/10.5-7-b-2-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.5/10.5-7-b-3-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.5/10.5-7-b-4-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.5/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.5/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1.js21
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2.js22
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-11-b-1.js54
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-12-1.js21
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-12-2.js22
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-1.js21
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-a-1.js45
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-a-2.js35
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-a-3.js36
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-b-1-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-b-2-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-b-3-s.js26
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-c-1-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-c-2-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-c-3-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-14-1-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-14-b-1-s.js28
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-14-b-4-s.js27
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-14-c-1-s.js28
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-14-c-4-s.js27
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-1gs.js17
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-2gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-5-1.js16
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-6-1.js17
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-6-2.js20
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-6-3.js16
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-6-4.js16
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-7-1.js53
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A1.js35
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A2.js36
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A3_T1.js35
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A3_T2.js49
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A3_T3.js40
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A3_T4.js42
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A4.js38
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A5_T1.js35
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A5_T2.js49
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A5_T3.js39
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A5_T4.js41
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A6.js67
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A7.js20
-rw-r--r--js/src/tests/test262/ch10/10.6/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.6/shell.js0
-rw-r--r--js/src/tests/test262/ch10/browser.js0
-rw-r--r--js/src/tests/test262/ch10/shell.js0
407 files changed, 8684 insertions, 0 deletions
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-1-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-1-s.js
new file mode 100644
index 000000000..a9cf025bc
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-1-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-1-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is 'use strict'; which contains two space between 'use' and 'strict'
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var public = 1;
+ return public === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-10-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-10-s.js
new file mode 100644
index 000000000..51aa8ca73
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-10-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-10-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''USE STRICT';' in which all characters are uppercase
+ * @noStrict
+ */
+
+
+function testcase() {
+ "USE STRICT";
+ var public = 1;
+ return public === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-11-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-11-s.js
new file mode 100644
index 000000000..6d7794d97
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-11-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-11-s.js
+ * @description Strict Mode - Eval code is strict code with a Use Strict Directive at the beginning of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ try {
+ eval("'use strict'; var public = 1; var anotherVariableNotReserveWord = 2;");
+
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && typeof public === "undefined" &&
+ typeof anotherVariableNotReserveWord === "undefined";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-12-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-12-s.js
new file mode 100644
index 000000000..09fdffe84
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-12-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-12-s.js
+ * @description Strict Mode - Eval code is strict eval code with a Use Strict Directive in the middle of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ eval("var public = 1; 'use strict'; var anotherVariableNotReserveWord = 2;");
+ return public === 1 && anotherVariableNotReserveWord === 2;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-13-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-13-s.js
new file mode 100644
index 000000000..0a4ba30ff
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-13-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-13-s.js
+ * @description Strict Mode - Eval code is strict eval code with a Use Strict Directive at the end of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ eval("var public = 1; var anotherVariableNotReserveWord = 2; 'use strict';");
+ return public === 1 && anotherVariableNotReserveWord === 2;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-14-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-14-s.js
new file mode 100644
index 000000000..dff413366
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-14-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-14-s.js
+ * @description Strict Mode - The call to eval function is contained in a Strict Mode block
+ * @noStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-15-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-15-s.js
new file mode 100644
index 000000000..b7f7664f5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-15-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-15-s.js
+ * @description Strict Mode - Function code that is part of a FunctionDeclaration is strict function code if FunctionDeclaration is contained in use strict
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ function fun() {
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+
+ return fun();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-16-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-16-s.js
new file mode 100644
index 000000000..35ef8803f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-16-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-16-s.js
+ * @description Strict Mode - Function code that is part of a FunctionExpression is strict function code if FunctionExpression is contained in use strict
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ return function () {
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ } ();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-17-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-17-s.js
new file mode 100644
index 000000000..976e644fe
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-17-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-17-s.js
+ * @description Strict Mode - Function code that is part of a Accessor PropertyAssignment is in Strict Mode if Accessor PropertyAssignment is contained in use strict(getter)
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ var obj = {};
+ Object.defineProperty(obj, "accProperty", {
+ get: function () {
+ eval("public = 1;");
+ return 11;
+ }
+ });
+
+ var temp = obj.accProperty === 11;
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-18-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-18-s.js
new file mode 100644
index 000000000..b384ebfe5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-18-s.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-18-s.js
+ * @description Strict Mode - Function code that is part of a Accessor PropertyAssignment is in Strict Mode if Accessor PropertyAssignment is contained in use strict(setter)
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ var obj = {};
+ var data = "data";
+ Object.defineProperty(obj, "accProperty", {
+ set: function (value) {
+ eval("var public = 1;");
+ data = value;
+ }
+ });
+
+ obj.accProperty = "overrideData";
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && data === "data";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-19-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-19-s.js
new file mode 100644
index 000000000..6643ec7f1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-19-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-19-s.js
+ * @description Strict Mode - Function code of a FunctionDeclaration contains Use Strict Directive which appears at the start of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ function fun() {
+ "use strict";
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+ return fun();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2-s.js
new file mode 100644
index 000000000..42e6bce78
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-2-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict'' which lost the last character ';'
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict"
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-20-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-20-s.js
new file mode 100644
index 000000000..cc30e88e6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-20-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-20-s.js
+ * @description Strict Mode - Function code of a FunctionDeclaration contains Use Strict Directive which appears in the middle of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ function fun() {
+ eval("var public = 1;");
+ "use strict";
+ return public === 1;
+ }
+ return fun();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-21-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-21-s.js
new file mode 100644
index 000000000..6c0245461
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-21-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-21-s.js
+ * @description Strict Mode - Function code of a FunctionDeclaration contains Use Strict Directive which appears at the end of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ function fun() {
+ eval("var public = 1;");
+ return public === 1;
+ "use strict";
+ }
+ return fun();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-22-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-22-s.js
new file mode 100644
index 000000000..875ad9780
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-22-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-22-s.js
+ * @description Strict Mode - Function code of a FunctionExpression contains Use Strict Directive which appears at the start of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ return function () {
+ "use strict";
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ } ();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-23-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-23-s.js
new file mode 100644
index 000000000..680e928cd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-23-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-23-s.js
+ * @description Strict Mode - Function code of a FunctionExpression contains Use Strict Directive which appears in the middle of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ return function () {
+ eval("var public = 1;");
+ return public === 1;
+ "use strict";
+ } ();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-24-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-24-s.js
new file mode 100644
index 000000000..ef67dbe59
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-24-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-24-s.js
+ * @description Strict Mode - Function code of a FunctionExpression contains Use Strict Directive which appears at the end of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ return function () {
+ eval("var public = 1;");
+ "use strict";
+ return public === 1;
+ } ();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-25-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-25-s.js
new file mode 100644
index 000000000..206518f72
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-25-s.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-25-s.js
+ * @description Strict Mode - Function code of Accessor PropertyAssignment contains Use Strict Directive which appears at the start of the block(getter)
+ * @noStrict
+ */
+
+
+function testcase() {
+ try {
+ var obj = {};
+ Object.defineProperty(obj, "accProperty", {
+ get: function () {
+ "use strict";
+ eval("var public = 1;");
+ return 11;
+ }
+ });
+ var temp = obj.accProperty === 11;
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-26-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-26-s.js
new file mode 100644
index 000000000..9da18136b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-26-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-26-s.js
+ * @description Strict Mode - Function code of Accessor PropertyAssignment contains Use Strict Directive which appears at the start of the block(setter)
+ * @noStrict
+ */
+
+
+function testcase() {
+ try {
+ var obj = {};
+ var data = "data";
+ Object.defineProperty(obj, "accProperty", {
+ set: function (value) {
+ "use strict";
+ eval("var public = 1;");
+ data = value;
+ }
+ });
+
+ obj.accProperty = "overrideData";
+
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && data === "data";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-27-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-27-s.js
new file mode 100644
index 000000000..94b01f5af
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-27-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-27-s.js
+ * @description Strict Mode - Function code of Accessor PropertyAssignment contains Use Strict Directive which appears in the middle of the block(getter)
+ * @noStrict
+ */
+
+
+function testcase() {
+ var obj = {};
+ Object.defineProperty(obj, "accProperty", {
+ get: function () {
+ eval("public = 1;");
+ "use strict";
+ return 11;
+ }
+ });
+ return obj.accProperty === 11 && public === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-28-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-28-s.js
new file mode 100644
index 000000000..f3ebe7d11
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-28-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-28-s.js
+ * @description Strict Mode - Function code of Accessor PropertyAssignment contains Use Strict Directive which appears at the end of the block(setter)
+ * @noStrict
+ */
+
+
+function testcase() {
+ var obj = {};
+ var data;
+
+ Object.defineProperty(obj, "accProperty", {
+ set: function (value) {
+ var _10_1_1_28_s = {a:1, a:2};
+ data = value;
+ "use strict";
+ }
+ });
+ obj.accProperty = "overrideData";
+ return data==="overrideData";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-29-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-29-s.js
new file mode 100644
index 000000000..9745777b1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-29-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-29-s.js
+ * @description Strict Mode - The built-in Function constructor is contained in use strict code
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var funObj = new Function("a", "eval('public = 1;');");
+ funObj();
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2gs.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2gs.js
new file mode 100644
index 000000000..dd30cb215
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-2gs.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict'' which lost the last character ';'
+ * @noStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict"
+throw NotEarlyError;
+var public = 1;
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-3-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-3-s.js
new file mode 100644
index 000000000..8c4e4fb5d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-3-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-3-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is '' use strict';' which the first character is space
+ * @noStrict
+ */
+
+
+function testcase() {
+ " use strict";
+ var public = 1;
+
+ return public === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-30-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-30-s.js
new file mode 100644
index 000000000..79c68e7c2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-30-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-30-s.js
+ * @description Strict Mode - Function code of built-in Function constructor contains Use Strict Directive which appears at the start of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ try {
+ var funObj = new Function("a", "'use strict'; eval('public = 1;');");
+ funObj();
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-31-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-31-s.js
new file mode 100644
index 000000000..21c84976b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-31-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-31-s.js
+ * @description Strict Mode - Function code of built-in Function constructor contains Use Strict Directive which appears in the middle of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ var funObj = new Function("a", "eval('public = 1;'); 'use strict'; anotherVariable = 2;");
+ funObj();
+ return public === 1 && anotherVariable === 2;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-32-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-32-s.js
new file mode 100644
index 000000000..a7cbc1d8c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-32-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-32-s.js
+ * @description Strict Mode - Function code of built-in Function constructor contains Use Strict Directive which appears at the end of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ var funObj = new Function("a", "eval('public = 1;'); anotherVariable = 2; 'use strict';");
+ funObj();
+ return public === 1 && anotherVariable === 2;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-4-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-4-s.js
new file mode 100644
index 000000000..3d7db1862
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-4-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-4-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict ';' which the last character is space
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict ";
+ var public = 1;
+ return public === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5-s.js
new file mode 100644
index 000000000..6a9f07af4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-5-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict';' which appears at the beginning of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5gs.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5gs.js
new file mode 100644
index 000000000..63698e5e6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-5gs.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict';' which appears at the start of the code
+ * @noStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+throw NotEarlyError;
+var public = 1;
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-6-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-6-s.js
new file mode 100644
index 000000000..6434c2515
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-6-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-6-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict';' which appears in the middle of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ var interface = 2;
+ "use strict";
+ var public = 1;
+ return public === 1 && interface === 2;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-7-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-7-s.js
new file mode 100644
index 000000000..42b5e1ee2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-7-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-7-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict';' which appears at the end of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ var public = 1;
+ return public === 1;
+ "use strict";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8-s.js
new file mode 100644
index 000000000..3fc4df80e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-8-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict';' which appears twice in the directive prologue
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ "use strict";
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8gs.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8gs.js
new file mode 100644
index 000000000..88476ac4a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8gs.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-8gs.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict';' which appears twice in the code
+ * @noStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+"use strict";
+throw NotEarlyError;
+var public = 1;
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-9-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-9-s.js
new file mode 100644
index 000000000..b294ef146
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-9-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-9-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''Use strict';' in which the first character is uppercase
+ * @noStrict
+ */
+
+
+function testcase() {
+ "Use strict";
+ var public = 1;
+ return public === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/browser.js b/js/src/tests/test262/ch10/10.1/10.1.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/browser.js
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/shell.js b/js/src/tests/test262/ch10/10.1/10.1.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/shell.js
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T1.js b/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T1.js
new file mode 100644
index 000000000..4085aa5ac
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Program functions are defined in source text by a FunctionDeclaration or created dynamically either
+ * by using a FunctionExpression or by using the built-in Function object as a constructor
+ *
+ * @path ch10/10.1/S10.1.1_A1_T1.js
+ * @description Defining function by a FunctionDeclaration
+ */
+
+//CHECK#1
+function f1(){
+ return 1;
+}
+if(typeof(f1)!=="function")
+ $ERROR('#1: typeof(f1)!=="function"');
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T2.js b/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T2.js
new file mode 100644
index 000000000..d453d6e59
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Program functions are defined in source text by a FunctionDeclaration or created dynamically either
+ * by using a FunctionExpression or by using the built-in Function object as a constructor
+ *
+ * @path ch10/10.1/S10.1.1_A1_T2.js
+ * @description Creating function dynamically by using a FunctionExpression
+ */
+
+//CHECK#1
+var x=function f1(){return 1;}();
+if(x!==1)
+ $ERROR('#1: Create function dynamically either by using a FunctionExpression');
+
+//CHECK#2
+var y=function (){return 2;}();
+if(y!==2){
+ $ERROR('#2: Create an anonymous function dynamically either by using a FunctionExpression');
+}
+
+//CHECK#2
+var z = (function(){return 3;})();
+if(z!==3){
+ $ERROR('#3: Create an anonymous function dynamically either by using a FunctionExpression wrapped in a group operator');
+}
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T3.js b/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T3.js
new file mode 100644
index 000000000..5e49dcd59
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T3.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Program functions are defined in source text by a FunctionDeclaration or created dynamically either
+ * by using a FunctionExpression or by using the built-in Function object as a constructor
+ *
+ * @path ch10/10.1/S10.1.1_A1_T3.js
+ * @description Creating function dynamically by using the built-in Function object as a constructor
+ */
+
+//CHECK#1
+var x=new function f1(){return 1;};
+if(typeof(x.constructor)!=="function")
+ $ERROR('#1: typeof(x.constructor)!=="function"');
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.1_A2_T1.js b/js/src/tests/test262/ch10/10.1/S10.1.1_A2_T1.js
new file mode 100644
index 000000000..aa5701155
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.1_A2_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * There are two types of Function objects. Internal functions
+ * are built-in objects of the language, such as parseInt and Math.exp
+ *
+ * @path ch10/10.1/S10.1.1_A2_T1.js
+ * @description Checking types of parseInt and Math.exp
+ */
+
+//CHECK#1
+if(typeof(Math.exp)!=="function")
+ $ERROR('#1: typeof(Math.exp(10))!=="function" '+typeof(Math.exp()));
+
+//CHECK#2
+if(typeof(parseInt)!=="function")
+ $ERROR('#2: typeof(parseInt())!=="function" '+typeof(parseInt()));
+
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T1.js b/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T1.js
new file mode 100644
index 000000000..5dee9bf43
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The activation object is initialised with a property with name arguments and attributes {DontDelete}
+ *
+ * @path ch10/10.1/S10.1.6_A1_T1.js
+ * @description Checking if deleting function parameter is possible
+ * @noStrict
+ */
+
+//CHECK#1
+function f1(a){
+ delete a;
+ return a;
+}
+if (f1(1) !== 1)
+ $ERROR('#1: Function parameter was deleted');
+
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T2.js b/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T2.js
new file mode 100644
index 000000000..8747b2f11
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T2.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The activation object is initialised with a property with name arguments and attributes {DontDelete}
+ *
+ * @path ch10/10.1/S10.1.6_A1_T2.js
+ * @description Checking funtion which returns property "arguments"
+ */
+
+var ARG_STRING = "value of the argument property";
+
+function f1() {
+ this.constructor.prototype.arguments = ARG_STRING;
+ return arguments;
+}
+
+//CHECK#1
+if ((new f1(1,2,3,4,5)).length !== 5)
+ $ERROR('#1: (new f1(1,2,3,4,5)).length===5, where f1 returns "arguments" that is set to "'+ ARG_STRING + '"');
+
+//CHECK#2
+if ((new f1(1,2,3,4,5))[3] !== 4)
+ $ERROR('#2: (new f1(1,2,3,4,5))[3]===4, where f1 returns "arguments" that is set to "'+ ARG_STRING + '"');
+
+//CHECK#3
+var x = new f1(1,2,3,4,5);
+if (delete x[3] !== true)
+ $ERROR('#3.1: Function parameters have attribute {DontDelete}');
+
+if (x[3] === 4)
+ $ERROR('#3.2: Function parameters have attribute {DontDelete}');
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T3.js b/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T3.js
new file mode 100644
index 000000000..95e1bf2ef
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The activation object is initialised with a property with name arguments and attributes {DontDelete}
+ *
+ * @path ch10/10.1/S10.1.6_A1_T3.js
+ * @description Checking function which returns "this"
+ * @noStrict
+ */
+
+function f1() {
+ if (delete arguments) {
+ $ERROR("#1: Function parameters have attribute {DontDelete}" + arguments);
+ }
+ return arguments;
+}
+
+f1();
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.7_A1_T1.js b/js/src/tests/test262/ch10/10.1/S10.1.7_A1_T1.js
new file mode 100644
index 000000000..f7e7a0b0c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.7_A1_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The this value associated with an executioncontext is immutable
+ *
+ * @path ch10/10.1/S10.1.7_A1_T1.js
+ * @description Checking if deleting "this" fails
+ */
+
+//CHECK#1
+if (delete this !== true)
+ $ERROR('#1: The this value associated with an executioncontext is immutable. Actual: this was deleted');
+
+
diff --git a/js/src/tests/test262/ch10/10.1/browser.js b/js/src/tests/test262/ch10/10.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/browser.js
diff --git a/js/src/tests/test262/ch10/10.1/shell.js b/js/src/tests/test262/ch10/10.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/shell.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-16-s.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-16-s.js
new file mode 100644
index 000000000..bfc1f5ece
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-16-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-16-s.js
+ * @description Strict Mode - TypeError is thrown when changing the value of a Value Property of the Global Object under strict mode (NaN)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ NaN = 12;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-18-s.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-18-s.js
new file mode 100644
index 000000000..e60836978
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-18-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-18-s.js
+ * @description Strict Mode - TypeError is thrown when changing the value of a Value Property of the Global Object under strict mode (undefined)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ undefined = 12;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-22-s.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-22-s.js
new file mode 100644
index 000000000..9303b79b5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-22-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-22-s.js
+ * @description Strict Mode - TypeError is not thrown when changing the value of the Constructor Properties of the Global Object under strict mode (Object)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var objBak = Object;
+
+ try {
+ Object = 12;
+ return true;
+ } finally {
+ Object = objBak;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-27-s.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-27-s.js
new file mode 100644
index 000000000..9ecdf64a5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-27-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-27-s.js
+ * @description Strict Mode - TypeError is not thrown when changing the value of the Constructor Properties of the Global Object under strict mode (Number)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var numBak = Number;
+ try {
+ Number = 12;
+ return true;
+ } finally {
+ Number = numBak;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/browser.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/browser.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/shell.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/shell.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/browser.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/browser.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/shell.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/shell.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A1.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A1.js
new file mode 100644
index 000000000..6206633b2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If the caller supplies fewer parameter values than there are
+ * formal parameters, the extra formal parameters have value undefined
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A1.js
+ * @description Calling function excluding a few parameters
+ */
+
+//CHECK#1
+function f1(a, b){
+ return (b === undefined);
+}
+if(!(f1(1, 2) === false)){
+ $ERROR('#1: f1(1, 2) === false');
+} else if(!(f1(1) === true)){
+ $ERROR('#1: f1(1) === true');
+}
+
+//CHECK#2
+function f2(a, b, c){
+ return (b === undefined) && (c === undefined);
+}
+if(!(f2(1) === true)){
+ $ERROR('#2: f2(1, 2) === true');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A2.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A2.js
new file mode 100644
index 000000000..e622c5462
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If two or more formal parameters share the same name, hence
+ * the same property, the corresponding property is given the value that was
+ * supplied for the last parameter with this name
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A2.js
+ * @description Creating functions initialized with two or more formal parameters, which have the same name
+ * @noStrict
+ */
+
+//CHECK#1
+function f1(x, x) {
+ return x;
+}
+if(!(f1(1, 2) === 2)) {
+ $ERROR("#1: f1(1, 2) === 2");
+}
+
+//CHECK#2
+function f2(x, x, x){
+ return x*x*x;
+}
+if(!(f2(1, 2, 3) === 27)){
+ $ERROR("f2(1, 2, 3) === 27");
+}
+
+//CHECK#3
+function f3(x, x) {
+ return 'a' + x;
+}
+if(!(f3(1, 2) === 'a2')){
+ $ERROR("#3: f3(1, 2) === 'a2'");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A3.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A3.js
new file mode 100644
index 000000000..1c15c0621
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If the value of this last parameter (which has the same
+ * name as some previous parameters do) was not supplied by the
+ * caller, the value of the corresponding property is undefined
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A3.js
+ * @description Creating functions with two or more formal parameters,
+ * that have the same name. Calling this function excluding a few last parameters
+ */
+
+//CHECK#1
+function f1(x, a, b, x){
+ return x;
+}
+if(!(f1(1, 2) === undefined)){
+ $ERROR('#1: f1(1, 2) === undefined');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T1.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T1.js
new file mode 100644
index 000000000..a153af430
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Function declaration in function code - If the variable object
+ * already has a property with the name of Function Identifier, replace its
+ * value and attributes. Semantically, this step must follow the creation of
+ * FormalParameterList properties
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A4_T1.js
+ * @description Checking existence of a function with passed parameter
+ * @noStrict
+ */
+
+//CHECK#1
+function f1(x){
+ return x;
+
+ function x(){
+ return 7;
+ }
+}
+if(!(f1().constructor.prototype === Function.prototype)){
+ $ERROR('#1: f1() returns function');
+}
+
+//CHECK#2
+function f2(x){
+ return typeof x;
+
+ function x(){
+ return 7;
+ }
+}
+if(!(f2() === "function")){
+ $ERROR('#2: f2() === "function"');
+}
+
+//CHECK#3
+function f3() {
+ return typeof arguments;
+ function arguments() {
+ return 7;
+ }
+}
+if (!(f3() === "function")){
+ $ERROR('#3: f3() === "function"');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T2.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T2.js
new file mode 100644
index 000000000..16661df91
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T2.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Function declaration in function code - If the variable object
+ * already has a property with the name of Function Identifier, replace its
+ * value and attributes. Semantically, this step must follow the creation of
+ * FormalParameterList properties
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A4_T2.js
+ * @description Checking existence of a function with declared variable
+ */
+
+//CHECK#1
+function f1(){
+ var x;
+
+ return x;
+
+ function x(){
+ return 7;
+ }
+}
+if(!(f1().constructor.prototype === Function.prototype)){
+ $PRINT('#1: f1() returns function');
+}
+
+//CHECK#2
+function f2(){
+ var x;
+
+ return typeof x;
+
+ function x(){
+ return 7;
+ }
+}
+if(!(f2() === "function")){
+ $PRINT('#2: f2() === "function"');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T1.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T1.js
new file mode 100644
index 000000000..824aedeee
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * For each VariableDeclaration or VariableDeclarationNoIn in the
+ * code, create a property of the variable object whose name is the Identifier
+ * in the VariableDeclaration or VariableDeclarationNoIn, whose value is
+ * undefined and whose attributes are determined by the type of code
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A5.1_T1.js
+ * @description Checking variable existence only
+ */
+
+//CHECK#1
+function f1(){
+ var x;
+
+ return typeof x;
+}
+
+if(!(f1() === "undefined")){
+ $PRINT('#1: f1() === "undefined"');
+}
+
+//CHECK#2
+function f2(){
+ var x;
+
+ return x;
+}
+
+if(!(f2() === undefined)){
+ $PRINT('#1: f2() === undefined');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T2.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T2.js
new file mode 100644
index 000000000..adef8b5c5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * For each VariableDeclaration or VariableDeclarationNoIn in the
+ * code, create a property of the variable object whose name is the Identifier
+ * in the VariableDeclaration or VariableDeclarationNoIn, whose value is
+ * undefined and whose attributes are determined by the type of code
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A5.1_T2.js
+ * @description Checking existence of the variable object property with formal parameter
+ */
+
+//CHECK#1
+function f1(x){
+ var x;
+
+ return typeof x;
+}
+
+if(!(f1() === "undefined")){
+ $PRINT('#1: f1(1) === "undefined"');
+}
+
+//CHECK#2
+function f2(x){
+ var x;
+
+ return x;
+}
+
+if(!(f2() === undefined)){
+ $PRINT('#1: f2(1) === undefined');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.2_T1.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.2_T1.js
new file mode 100644
index 000000000..d5321c907
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.2_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If there is already a property of the variable object with the
+ * name of a declared variable, the value of the property and its attributes
+ * are not changed
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A5.2_T1.js
+ * @description Checking existence of the variable object property with formal parameter
+ */
+
+//CHECK#1
+function f1(x){
+ var x;
+
+ return typeof x;
+}
+
+if(!(f1(1) === "number")){
+ $PRINT('#1: f1(1) === "number"');
+}
+
+//CHECK#2
+function f2(x){
+ var x;
+
+ return x;
+}
+
+if(!(f2(1) === 1)){
+ $PRINT('#1: f2(1) === 1');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/browser.js b/js/src/tests/test262/ch10/10.2/10.2.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/browser.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/shell.js b/js/src/tests/test262/ch10/10.2/10.2.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/shell.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T1.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T1.js
new file mode 100644
index 000000000..7aba918d1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T1.js
+ * @description Checking scope chain containing function declarations
+ */
+
+var x = 0;
+
+function f1(){
+ var x = 1;
+ function f2(){
+ return x;
+ };
+ return f2();
+}
+
+if(!(f1() === 1)){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T2.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T2.js
new file mode 100644
index 000000000..33b472418
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T2.js
+ * @description Checking scope chain containing function declarations
+ */
+
+var x = 0;
+
+function f1(){
+ function f2(){
+ return x;
+ };
+ return f2();
+}
+
+if(!(f1() === 0)){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T3.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T3.js
new file mode 100644
index 000000000..a9a85deff
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T3.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T3.js
+ * @description Checking scope chain containing function declarations
+ */
+
+var x = 0;
+
+function f1(){
+ function f2(){
+ return x;
+ };
+ return f2();
+
+ var x = 1;
+}
+
+if(!(f1() === undefined)){
+ $ERROR("#1: Scope chain disturbed");
+}
+
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T4.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T4.js
new file mode 100644
index 000000000..e32ffac35
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T4.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T4.js
+ * @description Checking scope chain containing function declarations
+ */
+
+var x = 0;
+
+function f1(){
+ function f2(){
+ return x;
+ };
+
+ var x = 1;
+ return f2();
+}
+
+if(!(f1() === 1)){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T5.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T5.js
new file mode 100644
index 000000000..c71654f6f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T5.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T5.js
+ * @description Checking scope chain containing function declarations and "with"
+ * @noStrict
+ */
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ var x = 1;
+ function f2(){
+ with(myObj){
+ return x;
+ }
+ };
+ return f2();
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T6.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T6.js
new file mode 100644
index 000000000..990c27ef3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T6.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T6.js
+ * @description Checking scope chain containing function declarations and "with"
+ * @noStrict
+ */
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ function f2(){
+ with(myObj){
+ return x;
+ }
+ };
+ return f2();
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T7.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T7.js
new file mode 100644
index 000000000..cc719b504
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T7.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T7.js
+ * @description Checking scope chain containing function declarations and "with"
+ * @noStrict
+ */
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ function f2(){
+ with(myObj){
+ return x;
+ }
+ };
+ return f2();
+
+ var x = 1;
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T8.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T8.js
new file mode 100644
index 000000000..3aaefcf14
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T8.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T8.js
+ * @description Checking scope chain containing function declarations and "with"
+ * @noStrict
+ */
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ function f2(){
+ with(myObj){
+ return x;
+ }
+ };
+
+ var x = 1;
+ return f2();
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T9.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T9.js
new file mode 100644
index 000000000..c03fdd1cf
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T9.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T9.js
+ * @description Checking scope chain containing function declarations and "with"
+ * @noStrict
+ */
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ with(myObj){
+ return x;
+ }
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/browser.js b/js/src/tests/test262/ch10/10.2/10.2.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/browser.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/shell.js b/js/src/tests/test262/ch10/10.2/10.2.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/shell.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T1.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T1.js
new file mode 100644
index 000000000..6a133d788
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.1_T1.js
+ * @description Global execution context - Value Properties
+ */
+
+//CHECK#1
+if ( NaN === null ) {
+ $ERROR("#1: NaN === null");
+}
+
+//CHECK#2
+if ( Infinity === null ) {
+ $ERROR("#2: Infinity === null");
+}
+
+//CHECK#3
+if ( undefined === null ) {
+ $ERROR("#3: undefined === null");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T2.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T2.js
new file mode 100644
index 000000000..1fafadc99
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T2.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.1_T2.js
+ * @description Global execution context - Function Properties
+ */
+
+//CHECK#4
+if ( eval === null ) {
+ $ERROR("#4: eval === null");
+}
+
+//CHECK#5
+if ( parseInt === null ) {
+ $ERROR("#5: parseInt === null");
+}
+
+//CHECK#6
+if ( parseFloat === null ) {
+ $ERROR("#6: parseFloat === null");
+}
+
+//CHECK#7
+if ( isNaN === null ) {
+ $ERROR("#7: isNaN === null");
+}
+
+//CHECK#8
+if ( isFinite === null ) {
+ $ERROR("#8: isFinite === null");
+}
+
+//CHECK#9
+if ( decodeURI === null ) {
+ $ERROR("#9: decodeURI === null");
+}
+
+//CHECK#10
+if ( decodeURIComponent === null ) {
+ $ERROR("#10: decodeURIComponent === null");
+}
+
+//CHECK#11
+if ( encodeURI === null ) {
+ $ERROR("#11: encodeURI === null");
+}
+
+//CHECK#12
+if ( encodeURIComponent === null ) {
+ $ERROR("#12: encodeURIComponent === null");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T3.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T3.js
new file mode 100644
index 000000000..3407039e8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T3.js
@@ -0,0 +1,87 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.1_T3.js
+ * @description Global execution context - Constructor Properties
+ */
+
+//CHECK#13
+if ( Object === null ) {
+ $ERROR("#13: Object === null");
+}
+
+//CHECK#14
+if ( Function === null ) {
+ $ERROR("#14: Function === null");
+}
+
+//CHECK#15
+if ( String === null ) {
+ $ERROR("#15: String === null");
+}
+
+//CHECK#16
+if ( Number === null ) {
+ $ERROR("#16: Number === null");
+}
+
+//CHECK#17
+if ( Array === null ) {
+ $ERROR("#17: Array === null");
+}
+
+//CHECK#18
+if ( Boolean === null ) {
+ $ERROR("#20: Boolean === null");
+}
+
+//CHECK#18
+if ( Date === null ) {
+ $ERROR("#18: Date === null");
+}
+
+//CHECK#19
+if ( RegExp === null ) {
+ $ERROR("#19: RegExp === null");
+}
+
+//CHECK#20
+if ( Error === null ) {
+ $ERROR("#20: Error === null");
+}
+
+//CHECK#21
+if ( EvalError === null ) {
+ $ERROR("#21: EvalError === null");
+}
+
+//CHECK#22
+if ( RangeError === null ) {
+ $ERROR("#22: RangeError === null");
+}
+
+//CHECK#23
+if ( ReferenceError === null ) {
+ $ERROR("#23: ReferenceError === null");
+}
+
+//CHECK#24
+if ( SyntaxError === null ) {
+ $ERROR("#24: SyntaxError === null");
+}
+
+//CHECK#25
+if ( TypeError === null ) {
+ $ERROR("#25: TypeError === null");
+}
+
+//CHECK#26
+if ( URIError === null ) {
+ $ERROR("#26: URIError === null");
+}
+
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T4.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T4.js
new file mode 100644
index 000000000..f59cc646e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.1_T4.js
+ * @description Global execution context - Other Properties
+ */
+
+//CHECK#27
+if ( Math === null ) {
+ $ERROR("#27: Math === null");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T1.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T1.js
new file mode 100644
index 000000000..a6b6c4bbf
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T1.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.2_T1.js
+ * @description Function execution context - Value Properties
+ */
+
+function test() {
+ //CHECK#1
+ if ( NaN === null ) {
+ $ERROR("#1: NaN === null");
+ }
+
+ //CHECK#2
+ if ( Infinity === null ) {
+ $ERROR("#2: Infinity === null");
+ }
+
+ //CHECK#3
+ if ( undefined === null ) {
+ $ERROR("#3: undefined === null");
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T2.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T2.js
new file mode 100644
index 000000000..45ca89f36
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T2.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.2_T2.js
+ * @description Function execution context - Function Properties
+ */
+
+function test() {
+ //CHECK#4
+ if ( eval === null ) {
+ $ERROR("#4: eval === null");
+ }
+
+ //CHECK#5
+ if ( parseInt === null ) {
+ $ERROR("#5: parseInt === null");
+ }
+
+ //CHECK#6
+ if ( parseFloat === null ) {
+ $ERROR("#6: parseFloat === null");
+ }
+
+ //CHECK#7
+ if ( isNaN === null ) {
+ $ERROR("#7: isNaN === null");
+ }
+
+ //CHECK#8
+ if ( isFinite === null ) {
+ $ERROR("#8: isFinite === null");
+ }
+
+ //CHECK#9
+ if ( decodeURI === null ) {
+ $ERROR("#9: decodeURI === null");
+ }
+
+ //CHECK#10
+ if ( decodeURIComponent === null ) {
+ $ERROR("#10: decodeURIComponent === null");
+ }
+
+ //CHECK#11
+ if ( encodeURI === null ) {
+ $ERROR("#11: encodeURI === null");
+ }
+
+ //CHECK#12
+ if ( encodeURIComponent === null ) {
+ $ERROR("#12: encodeURIComponent === null");
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T3.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T3.js
new file mode 100644
index 000000000..295943cb7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T3.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.2_T3.js
+ * @description Function execution context - Constructor Properties
+ */
+
+function test() {
+ //CHECK#13
+ if ( Object === null ) {
+ $ERROR("#13: Object === null");
+ }
+
+ //CHECK#14
+ if ( Function === null ) {
+ $ERROR("#14: Function === null");
+ }
+
+ //CHECK#15
+ if ( String === null ) {
+ $ERROR("#15: String === null");
+ }
+
+ //CHECK#16
+ if ( Number === null ) {
+ $ERROR("#16: Function === null");
+ }
+
+ //CHECK#17
+ if ( Array === null ) {
+ $ERROR("#17: Array === null");
+ }
+
+ //CHECK#18
+ if ( Boolean === null ) {
+ $ERROR("#20: Boolean === null");
+ }
+
+ //CHECK#18
+ if ( Date === null ) {
+ $ERROR("#18: Date === null");
+ }
+
+ //CHECK#19
+ if ( RegExp === null ) {
+ $ERROR("#19: RegExp === null");
+ }
+
+ //CHECK#20
+ if ( Error === null ) {
+ $ERROR("#20: Error === null");
+ }
+
+ //CHECK#21
+ if ( EvalError === null ) {
+ $ERROR("#21: EvalError === null");
+ }
+
+ //CHECK#22
+ if ( RangeError === null ) {
+ $ERROR("#22: RangeError === null");
+ }
+
+ //CHECK#23
+ if ( ReferenceError === null ) {
+ $ERROR("#23: ReferenceError === null");
+ }
+
+ //CHECK#24
+ if ( SyntaxError === null ) {
+ $ERROR("#24: SyntaxError === null");
+ }
+
+ //CHECK#25
+ if ( TypeError === null ) {
+ $ERROR("#25: TypeError === null");
+ }
+
+ //CHECK#26
+ if ( URIError === null ) {
+ $ERROR("#26: URIError === null");
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T4.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T4.js
new file mode 100644
index 000000000..01d02fb39
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.2_T4.js
+ * @description Function execution context - Other Properties
+ */
+
+function test() {
+ //CHECK#27
+ if ( Math === null ) {
+ $ERROR("#27: Math === null");
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T1.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T1.js
new file mode 100644
index 000000000..695f0acf5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T1.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.3_T1.js
+ * @description Eval execution context - Value Properties
+ */
+
+var evalStr =
+'//CHECK#1\n'+
+'if ( NaN === null ) {\n'+
+' $ERROR("#1: NaN === null");\n'+
+'}\n'+
+
+'//CHECK#2\n'+
+'if ( Infinity === null ) {\n'+
+' $ERROR("#2: Infinity === null");\n'+
+'}\n'+
+
+'//CHECK#3\n'+
+'if ( undefined === null ) {\n'+
+' $ERROR("#3: undefined === null");\n'+
+'}\n'+
+';\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T2.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T2.js
new file mode 100644
index 000000000..5afd0ef93
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T2.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.3_T2.js
+ * @description Eval execution context - Function Properties
+ */
+
+var evalStr =
+'//CHECK#4\n'+
+'if ( eval === null ) {\n'+
+' $ERROR("#4: eval === null");\n'+
+'}\n'+
+
+'//CHECK#5\n'+
+'if ( parseInt === null ) {\n'+
+' $ERROR("#5: parseInt === null");\n'+
+'}\n'+
+
+'//CHECK#6\n'+
+'if ( parseFloat === null ) {\n'+
+' $ERROR("#6: parseFloat === null");\n'+
+'}\n'+
+
+'//CHECK#7\n'+
+'if ( isNaN === null ) {\n'+
+' $ERROR("#7: isNaN === null");\n'+
+'}\n'+
+
+'//CHECK#8\n'+
+'if ( isFinite === null ) {\n'+
+' $ERROR("#8: isFinite === null");\n'+
+'}\n'+
+
+'//CHECK#9\n'+
+'if ( decodeURI === null ) {\n'+
+' $ERROR("#9: decodeURI === null");\n'+
+'}\n'+
+
+'//CHECK#10\n'+
+'if ( decodeURIComponent === null ) {\n'+
+' $ERROR("#10: decodeURIComponent === null");\n'+
+'}\n'+
+
+'//CHECK#11\n'+
+'if ( encodeURI === null ) {\n'+
+' $ERROR("#11: encodeURI === null");\n'+
+'}\n'+
+
+'//CHECK#12\n'+
+'if ( encodeURIComponent === null ) {\n'+
+' $ERROR("#12: encodeURIComponent === null");\n'+
+'}\n'+
+';\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T3.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T3.js
new file mode 100644
index 000000000..b34b1e252
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T3.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.3_T3.js
+ * @description Eval execution context - Constructor Properties
+ */
+
+var evalStr =
+'//CHECK#13\n'+
+'if ( Object === null ) {\n'+
+' $ERROR("#13: Object === null");\n'+
+'}\n'+
+
+'//CHECK#14\n'+
+'if ( Function === null ) {\n'+
+' $ERROR("#14: Function === null");\n'+
+'}\n'+
+
+'//CHECK#15\n'+
+'if ( String === null ) {\n'+
+' $ERROR("#15: String === null");\n'+
+'}\n'+
+
+'//CHECK#16\n'+
+'if ( Number === null ) {\n'+
+' $ERROR("#16: Function === null");\n'+
+'}\n'+
+
+'//CHECK#17\n'+
+'if ( Array === null ) {\n'+
+' $ERROR("#17: Array === null");\n'+
+'}\n'+
+
+'//CHECK#18\n'+
+'if ( Boolean === null ) {\n'+
+' $ERROR("#20: Boolean === null");\n'+
+'}\n'+
+
+'//CHECK#18\n'+
+'if ( Date === null ) {\n'+
+' $ERROR("#18: Date === null");\n'+
+'}\n'+
+
+'//CHECK#19\n'+
+'if ( RegExp === null ) {\n'+
+' $ERROR("#19: RegExp === null");\n'+
+'}\n'+
+
+'//CHECK#20\n'+
+'if ( Error === null ) {\n'+
+' $ERROR("#20: Error === null");\n'+
+'}\n'+
+
+'//CHECK#21\n'+
+'if ( EvalError === null ) {\n'+
+' $ERROR("#21: EvalError === null");\n'+
+'}\n'+
+
+'//CHECK#22\n'+
+'if ( RangeError === null ) {\n'+
+' $ERROR("#22: RangeError === null");\n'+
+'}\n'+
+
+'//CHECK#23\n'+
+'if ( ReferenceError === null ) {\n'+
+' $ERROR("#23: ReferenceError === null");\n'+
+'}\n'+
+
+'//CHECK#24\n'+
+'if ( SyntaxError === null ) {\n'+
+' $ERROR("#24: SyntaxError === null");\n'+
+'}\n'+
+
+'//CHECK#25\n'+
+'if ( TypeError === null ) {\n'+
+' $ERROR("#25: TypeError === null");\n'+
+'}\n'+
+
+'//CHECK#26\n'+
+'if ( URIError === null ) {\n'+
+' $ERROR("#26: URIError === null");\n'+
+'}\n'+
+';\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T4.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T4.js
new file mode 100644
index 000000000..054969ce2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.3_T4.js
+ * @description Eval execution context - Other Properties
+ */
+
+var evalStr =
+'//CHECK#27\n'+
+'if ( Math === null ) {\n'+
+' $ERROR("#27: Math === null");\n'+
+'}\n'+
+';\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T1.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T1.js
new file mode 100644
index 000000000..db57ad5ba
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.1_T1.js
+ * @description Global execution context - Value Properties
+ */
+
+//CHECK#1
+for (var x in this) {
+ if ( x === 'NaN' ) {
+ $ERROR("#1: 'NaN' have attribute DontEnum");
+ } else if ( x === 'Infinity' ) {
+ $ERROR("#1: 'Infinity' have attribute DontEnum");
+ } else if ( x === 'undefined' ) {
+ $ERROR("#1: 'undefined' have attribute DontEnum");
+ }
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T2.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T2.js
new file mode 100644
index 000000000..6a39d43a1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T2.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.1_T2.js
+ * @description Global execution context - Function Properties
+ */
+
+//CHECK#1
+for (var x in this) {
+ if ( x === 'eval' ) {
+ $ERROR("#1: 'eval' have attribute DontEnum");
+ } else if ( x === 'parseInt' ) {
+ $ERROR("#1: 'parseInt' have attribute DontEnum");
+ } else if ( x === 'parseFloat' ) {
+ $ERROR("#1: 'parseFloat' have attribute DontEnum");
+ } else if ( x === 'isNaN' ) {
+ $ERROR("#1: 'isNaN' have attribute DontEnum");
+ } else if ( x === 'isFinite' ) {
+ $ERROR("#1: 'isFinite' have attribute DontEnum");
+ } else if ( x === 'decodeURI' ) {
+ $ERROR("#1: 'decodeURI' have attribute DontEnum");
+ } else if ( x === 'decodeURIComponent' ) {
+ $ERROR("#1: 'decodeURIComponent' have attribute DontEnum");
+ } else if ( x === 'encodeURI' ) {
+ $ERROR("#1: 'encodeURI' have attribute DontEnum");
+ } else if ( x === 'encodeURIComponent' ) {
+ $ERROR("#1: 'encodeURIComponent' have attribute DontEnum");
+ }
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T3.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T3.js
new file mode 100644
index 000000000..c684a649a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T3.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.1_T3.js
+ * @description Global execution context - Constructor Properties
+ */
+
+//CHECK#1
+for (var x in this) {
+ if ( x === 'Object' ) {
+ $ERROR("#1: 'property 'Object' have attribute DontEnum");
+ } else if ( x === 'Function') {
+ $ERROR("#1: 'Function' have attribute DontEnum");
+ } else if ( x === 'String' ) {
+ $ERROR("#1: 'String' have attribute DontEnum");
+ } else if ( x === 'Number' ) {
+ $ERROR("#1: 'Number' have attribute DontEnum");
+ } else if ( x === 'Array' ) {
+ $ERROR("#1: 'Array' have attribute DontEnum");
+ } else if ( x === 'Boolean' ) {
+ $ERROR("#1: 'Boolean' have attribute DontEnum");
+ } else if ( x === 'Date' ) {
+ $ERROR("#1: 'Date' have attribute DontEnum");
+ } else if ( x === 'RegExp' ) {
+ $ERROR("#1: 'RegExp' have attribute DontEnum");
+ } else if ( x === 'Error' ) {
+ $ERROR("#1: 'Error' have attribute DontEnum");
+ } else if ( x === 'EvalError' ) {
+ $ERROR("#1: 'EvalError' have attribute DontEnum");
+ } else if ( x === 'RangeError' ) {
+ $ERROR("#1: 'RangeError' have attribute DontEnum");
+ } else if ( x === 'ReferenceError' ) {
+ $ERROR("#1: 'ReferenceError' have attribute DontEnum");
+ } else if ( x === 'SyntaxError' ) {
+ $ERROR("#1: 'SyntaxError' have attribute DontEnum");
+ } else if ( x === 'TypeError' ) {
+ $ERROR("#1: 'TypeError' have attribute DontEnum");
+ } else if ( x === 'URIError' ) {
+ $ERROR("#1: 'URIError' have attribute DontEnum");
+ }
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T4.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T4.js
new file mode 100644
index 000000000..cb575c533
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T4.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.1_T4.js
+ * @description Global execution context - Other Properties
+ */
+
+//CHECK#1
+for (var x in this) {
+ if ( x === 'Math' ) {
+ $ERROR("#1: 'Math' have attribute DontEnum");
+ }
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T1.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T1.js
new file mode 100644
index 000000000..808cc1b60
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.2_T1.js
+ * @description Function execution context - Value Properties
+ */
+
+function test() {
+ //CHECK#1
+ for (var x in this) {
+ if ( x === 'NaN' ) {
+ $ERROR("#1: 'NaN' have attribute DontEnum");
+ } else if ( x === 'Infinity' ) {
+ $ERROR("#1: 'Infinity' have attribute DontEnum");
+ } else if ( x === 'undefined' ) {
+ $ERROR("#1: 'undefined' have attribute DontEnum");
+ }
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T2.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T2.js
new file mode 100644
index 000000000..ac87a58ef
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.2_T2.js
+ * @description Function execution context - Function Properties
+ */
+
+function test() {
+ //CHECK#1
+ for (var x in this) {
+ if ( x === 'eval' ) {
+ $ERROR("#1: 'eval' have attribute DontEnum");
+ } else if ( x === 'parseInt' ) {
+ $ERROR("#1: 'parseInt' have attribute DontEnum");
+ } else if ( x === 'parseFloat' ) {
+ $ERROR("#1: 'parseFloat' have attribute DontEnum");
+ } else if ( x === 'isNaN' ) {
+ $ERROR("#1: 'isNaN' have attribute DontEnum");
+ } else if ( x === 'isFinite' ) {
+ $ERROR("#1: 'isFinite' have attribute DontEnum");
+ } else if ( x === 'decodeURI' ) {
+ $ERROR("#1: 'decodeURI' have attribute DontEnum");
+ } else if ( x === 'decodeURIComponent' ) {
+ $ERROR("#1: 'decodeURIComponent' have attribute DontEnum");
+ } else if ( x === 'encodeURI' ) {
+ $ERROR("#1: 'encodeURI' have attribute DontEnum");
+ } else if ( x === 'encodeURIComponent' ) {
+ $ERROR("#1: 'encodeURIComponent' have attribute DontEnum");
+ }
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T3.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T3.js
new file mode 100644
index 000000000..e6f5f4ac7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T3.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.2_T3.js
+ * @description Function execution context - Constructor Properties
+ */
+
+function test() {
+ //CHECK#1
+ for (var x in this) {
+ if ( x === 'Object' ) {
+ $ERROR("#1: 'property 'Object' have attribute DontEnum");
+ } else if ( x === 'Function') {
+ $ERROR("#1: 'Function' have attribute DontEnum");
+ } else if ( x === 'String' ) {
+ $ERROR("#1: 'String' have attribute DontEnum");
+ } else if ( x === 'Number' ) {
+ $ERROR("#1: 'Number' have attribute DontEnum");
+ } else if ( x === 'Array' ) {
+ $ERROR("#1: 'Array' have attribute DontEnum");
+ } else if ( x === 'Boolean' ) {
+ $ERROR("#1: 'Boolean' have attribute DontEnum");
+ } else if ( x === 'Date' ) {
+ $ERROR("#1: 'Date' have attribute DontEnum");
+ } else if ( x === 'RegExp' ) {
+ $ERROR("#1: 'RegExp' have attribute DontEnum");
+ } else if ( x === 'Error' ) {
+ $ERROR("#1: 'Error' have attribute DontEnum");
+ } else if ( x === 'EvalError' ) {
+ $ERROR("#1: 'EvalError' have attribute DontEnum");
+ } else if ( x === 'RangeError' ) {
+ $ERROR("#1: 'RangeError' have attribute DontEnum");
+ } else if ( x === 'ReferenceError' ) {
+ $ERROR("#1: 'ReferenceError' have attribute DontEnum");
+ } else if ( x === 'SyntaxError' ) {
+ $ERROR("#1: 'SyntaxError' have attribute DontEnum");
+ } else if ( x === 'TypeError' ) {
+ $ERROR("#1: 'TypeError' have attribute DontEnum");
+ } else if ( x === 'URIError' ) {
+ $ERROR("#1: 'URIError' have attribute DontEnum");
+ }
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T4.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T4.js
new file mode 100644
index 000000000..3a6afa5cc
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.2_T4.js
+ * @description Function execution context - Other Properties
+ */
+
+function test() {
+ //CHECK#1
+ for (var x in this) {
+ if ( x === 'Math' ) {
+ $ERROR("#1: 'Math' have attribute DontEnum");
+ }
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T1.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T1.js
new file mode 100644
index 000000000..f7f32c563
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.3_T1.js
+ * @description Global execution context - Value Properties
+ */
+
+var evalStr =
+'//CHECK#1\n'+
+'for (var x in this) {\n'+
+' if ( x === \'NaN\' ) {\n'+
+' $ERROR("#1: \'NaN\' have attribute DontEnum");\n'+
+' } else if ( x === \'Infinity\' ) {\n'+
+' $ERROR("#1: \'Infinity\' have attribute DontEnum");\n'+
+' } else if ( x === \'undefined\' ) {\n'+
+' $ERROR("#1: \'undefined\' have attribute DontEnum");\n'+
+' }\n'+
+'}\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T2.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T2.js
new file mode 100644
index 000000000..8d3cfe7ee
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T2.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.3_T2.js
+ * @description Global execution context - Function Properties
+ */
+
+var evalStr =
+'//CHECK#1\n'+
+'for (var x in this) {\n'+
+' if ( x === \'eval\' ) {\n'+
+' $ERROR("#1: \'eval\' have attribute DontEnum");\n'+
+' } else if ( x === \'parseInt\' ) {\n'+
+' $ERROR("#1: \'parseInt\' have attribute DontEnum");\n'+
+' } else if ( x === \'parseFloat\' ) {\n'+
+' $ERROR("#1: \'parseFloat\' have attribute DontEnum");\n'+
+' } else if ( x === \'isNaN\' ) {\n'+
+' $ERROR("#1: \'isNaN\' have attribute DontEnum");\n'+
+' } else if ( x === \'isFinite\' ) {\n'+
+' $ERROR("#1: \'isFinite\' have attribute DontEnum");\n'+
+' } else if ( x === \'decodeURI\' ) {\n'+
+' $ERROR("#1: \'decodeURI\' have attribute DontEnum");\n'+
+' } else if ( x === \'decodeURIComponent\' ) {\n'+
+' $ERROR("#1: \'decodeURIComponent\' have attribute DontEnum");\n'+
+' } else if ( x === \'encodeURI\' ) {\n'+
+' $ERROR("#1: \'encodeURI\' have attribute DontEnum");\n'+
+' } else if ( x === \'encodeURIComponent\' ) {\n'+
+' $ERROR("#1: \'encodeURIComponent\' have attribute DontEnum");\n'+
+' }\n'+
+'}\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T3.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T3.js
new file mode 100644
index 000000000..9ae75beb9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T3.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.3_T3.js
+ * @description Global execution context - Constructor Properties
+ */
+
+var evalStr =
+'//CHECK#1\n'+
+'for (var x in this) {\n'+
+' if ( x === \'Object\' ) {\n'+
+' $ERROR("#1: \'Object\' have attribute DontEnum");\n'+
+' } else if ( x === \'Function\') {\n'+
+' $ERROR("#1: \'Function\' have attribute DontEnum");\n'+
+' } else if ( x === \'String\' ) {\n'+
+' $ERROR("#1: \'String\' have attribute DontEnum");\n'+
+' } else if ( x === \'Number\' ) {\n'+
+' $ERROR("#1: \'Number\' have attribute DontEnum");\n'+
+' } else if ( x === \'Array\' ) {\n'+
+' $ERROR("#1: \'Array\' have attribute DontEnum");\n'+
+' } else if ( x === \'Boolean\' ) {\n'+
+' $ERROR("#1: \'Boolean\' have attribute DontEnum");\n'+
+' } else if ( x === \'Date\' ) {\n'+
+' $ERROR("#1: \'Date\' have attribute DontEnum");\n'+
+' } else if ( x === \'RegExp\' ) {\n'+
+' $ERROR("#1: \'RegExp\' have attribute DontEnum");\n'+
+' } else if ( x === \'Error\' ) {\n'+
+' $ERROR("#1: \'Error\' have attribute DontEnum");\n'+
+' } else if ( x === \'EvalError\' ) {\n'+
+' $ERROR("#1: \'EvalError\' have attribute DontEnum");\n'+
+' } else if ( x === \'RangeError\' ) {\n'+
+' $ERROR("#1: \'RangeError\' have attribute DontEnum");\n'+
+' } else if ( x === \'ReferenceError\' ) {\n'+
+' $ERROR("#1: \'ReferenceError\' have attribute DontEnum");\n'+
+' } else if ( x === \'SyntaxError\' ) {\n'+
+' $ERROR("#1: \'SyntaxError\' have attribute DontEnum");\n'+
+' } else if ( x === \'TypeError\' ) {\n'+
+' $ERROR("#1: \'TypeError\' have attribute DontEnum");\n'+
+' } else if ( x === \'URIError\' ) {\n'+
+' $ERROR("#1: \'URIError\' have attribute DontEnum");\n'+
+' }\n'+
+'}\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T4.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T4.js
new file mode 100644
index 000000000..ed60835c9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.3_T4.js
+ * @description Global execution context - Other Properties
+ */
+
+var evalStr =
+'//CHECK#1\n'+
+'for (var x in this) {\n'+
+' if ( x === \'Math\' ) {\n'+
+' $ERROR("#1: \'Math\' have attribute DontEnum");\n'+
+' }\n'+
+'}\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/browser.js b/js/src/tests/test262/ch10/10.2/10.2.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/browser.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/shell.js b/js/src/tests/test262/ch10/10.2/10.2.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/shell.js
diff --git a/js/src/tests/test262/ch10/10.2/browser.js b/js/src/tests/test262/ch10/10.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/browser.js
diff --git a/js/src/tests/test262/ch10/10.2/shell.js b/js/src/tests/test262/ch10/10.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/shell.js
diff --git a/js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T1.js b/js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T1.js
new file mode 100644
index 000000000..04abf8bef
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Variable instantiation is performed using the global object as
+ * the variable object and using property attributes { DontDelete }
+ *
+ * @path ch10/10.4/10.4.1/S10.4.1_A1_T1.js
+ * @description Checking if deleting variable x, that is defined as var x = 1, fails
+ * @noStrict
+ */
+
+var x = 1;
+
+if (this.x !== 1) {
+ $ERROR("#1: variable x is a property of global object");
+}
+
+if(delete this.x !== false){
+ $ERROR("#2: variable x has property attribute DontDelete");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T2.js b/js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T2.js
new file mode 100644
index 000000000..107381f2d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Variable instantiation is performed using the global object as
+ * the variable object and using property attributes { DontDelete }
+ *
+ * @path ch10/10.4/10.4.1/S10.4.1_A1_T2.js
+ * @description Checking if deleting variable x, that is defined as x = 1, fails
+ * @noStrict
+ */
+
+x = 1;
+
+if (this.x !== 1) {
+ $ERROR("#1: variable x is a property of global object");
+}
+
+if(delete this.x !== true){
+ $ERROR("#2: variable x has property attribute DontDelete");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.1/browser.js b/js/src/tests/test262/ch10/10.4/10.4.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.1/browser.js
diff --git a/js/src/tests/test262/ch10/10.4/10.4.1/shell.js b/js/src/tests/test262/ch10/10.4/10.4.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.1/shell.js
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-1.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-1.js
new file mode 100644
index 000000000..233eac2c8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-1.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-1-1.js
+ * @description Indirect call to eval has context set to global context
+ */
+
+var __10_4_2_1_1_1 = "str";
+function testcase() {
+ try {
+
+ var _eval = eval;
+ var __10_4_2_1_1_1 = "str1";
+ if(_eval("\'str\' === __10_4_2_1_1_1") === true && // indirect eval
+ eval("\'str1\' === __10_4_2_1_1_1") === true) { // direct eval
+ return true;
+ }
+ return false;
+ } finally {
+ delete this.__10_4_2_1_1_1;
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-2.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-2.js
new file mode 100644
index 000000000..7c144f552
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-2.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-1-2.js
+ * @description Indirect call to eval has context set to global context (nested function)
+ */
+
+var __10_4_2_1_2 = "str";
+function testcase() {
+ try {
+
+ var _eval = eval;
+ var __10_4_2_1_2 = "str1";
+ function foo() {
+ var __10_4_2_1_2 = "str2";
+ if(_eval("\'str\' === __10_4_2_1_2") === true && // indirect eval
+ eval("\'str2\' === __10_4_2_1_2") === true) { // direct eval
+ return true;
+ } else {
+ return false;
+ }
+ }
+ return foo();
+ } finally {
+ delete this.__10_4_2_1_1_2;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-3.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-3.js
new file mode 100644
index 000000000..078ea21ab
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-3.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-1-3.js
+ * @description Indirect call to eval has context set to global context (catch block)
+ */
+
+var __10_4_2_1_3 = "str";
+function testcase() {
+
+ try {
+
+ var _eval = eval;
+ var __10_4_2_1_3 = "str1";
+ try {
+ throw "error";
+ }
+ catch (e) {
+ var __10_4_2_1_3 = "str2";
+ if (_eval("\'str\' === __10_4_2_1_3") === true && // indirect eval
+ eval("\'str2\' === __10_4_2_1_3") === true) { // direct eval
+ return true;
+ } else {
+ return false;
+ }
+ }
+ } finally {
+ delete this.__10_4_2_1_3;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-4.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-4.js
new file mode 100644
index 000000000..8a025f0d9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-4.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-1-4.js
+ * @description Indirect call to eval has context set to global context (with block)
+ */
+
+var __10_4_2_1_4 = "str";
+function testcase() {
+ try {
+ var o = new Object();
+ o.__10_4_2_1_4 = "str2";
+ var _eval = eval;
+ var __10_4_2_1_4 = "str1";
+ with (o) {
+ if (_eval("\'str\' === __10_4_2_1_4") === true && // indirect eval
+ eval("\'str2\' === __10_4_2_1_4") === true) { // direct eval
+ return true;
+ }
+ }
+ return false;
+ } finally {
+ delete this.__10_4_2_1_4;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-5.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-5.js
new file mode 100644
index 000000000..3808a9988
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-5.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-1-5.js
+ * @description Indirect call to eval has context set to global context (inside another eval)
+ */
+
+var __10_4_2_1_5 = "str";
+function testcase() {
+ try {
+
+ var __10_4_2_1_5 = "str1";
+ var r = eval("\
+ var _eval = eval; \
+ var __10_4_2_1_5 = \'str2\'; \
+ _eval(\"\'str\' === __10_4_2_1_5 \") && \
+ eval(\"\'str2\' === __10_4_2_1_5\")\
+ ");
+ return r;
+ } finally {
+ delete this.__10_4_2_1_5;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-c-1.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-c-1.js
new file mode 100644
index 000000000..61d85cec0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-c-1.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-2-c-1.js
+ * @description Direct val code in non-strict mode - can instantiate variable in calling context
+ */
+
+
+function testcase() {
+ var x = 0;
+ return function inner() {
+ eval("var x = 1");
+ if (x === 1)
+ return true;
+ } ();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-s.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-s.js
new file mode 100644
index 000000000..fb00b04f5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-2-s.js
+ * @description Strict Mode - Strict mode eval code cannot instantiate functions in the variable environment of the caller to eval
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ eval("(function fun(x){ return x })(10)");
+ return typeof (fun) === "undefined";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-1-s.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-1-s.js
new file mode 100644
index 000000000..57ee1912d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-1-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-3-c-1-s.js
+ * @description Direct eval code in strict mode - cannot instantiate variable in the variable environment of the calling context
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ var _10_4_2_3_c_1_s = 0;
+ function _10_4_2_3_c_1_sFunc() {
+ eval("'use strict';var _10_4_2_3_c_1_s = 1");
+ return _10_4_2_3_c_1_s===0;
+ }
+ return _10_4_2_3_c_1_sFunc();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-2-s.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-2-s.js
new file mode 100644
index 000000000..91caa626b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-2-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-3-c-2-s.js
+ * @description Calling code in strict mode - eval cannot instantiate variable in the variable environment of the calling context
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ var _10_4_2_3_c_2_s = 0;
+ function _10_4_2_3_c_2_sFunc() {
+ 'use strict';
+ eval("var _10_4_2_3_c_2_s = 1");
+ return _10_4_2_3_c_2_s===0;
+ }
+ return _10_4_2_3_c_2_sFunc();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-1gs.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-1gs.js
new file mode 100644
index 000000000..e0d77031f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-1gs.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.4/10.4.2/10.4.2.1-1gs.js
+ * @description Strict Mode - eval code cannot instantiate variable in the variable environment of the calling context that invoked the eval if the code of the calling context is strict code
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+eval("var x = 7;");
+x = 9;
+throw NotEarlyError;
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-2-s.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-2-s.js
new file mode 100644
index 000000000..5fc76cb35
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-2-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2.1-2-s.js
+ * @description Strict Mode - Strict mode eval code cannot instantiate functions in the variable environment of the caller to eval
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ eval("function _10_4_2_1_2_fun(){}");
+ return typeof _10_4_2_1_2_fun === "undefined";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-4-s.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-4-s.js
new file mode 100644
index 000000000..89ce85399
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-4-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2.1-4-s.js
+ * @description Strict Mode - Strict mode eval code cannot instantiate functions in the variable environment of the caller to eval which is contained in strict mode code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ eval("'use strict'; function _10_4_2_1_4_fun(){}");
+ return typeof _10_4_2_1_4_fun === "undefined";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2.1_A1.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2.1_A1.js
new file mode 100644
index 000000000..3a3690ce9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2.1_A1.js
@@ -0,0 +1,17 @@
+// Copyright 2011 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @path ch10/10.4/10.4.2/S10.4.2.1_A1.js
+ * @description Strict indirect eval should not leak top level
+ * declarations into the global scope
+ * @onlyStrict
+ */
+
+"use strict";
+if (!('foo' in this)) {
+ (1,eval)('"use strict"; var foo = 88;');
+ if ('foo' in this) {
+ $ERROR("Strict indirect eval leaked a top level declaration");
+ }
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T1.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T1.js
new file mode 100644
index 000000000..077ae7be1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T1.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T1.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+x = 1;
+y = 2;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T10.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T10.js
new file mode 100644
index 000000000..4903b5b3b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T10.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T10.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+var x = 1;
+var y = 2;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T11.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T11.js
new file mode 100644
index 000000000..fb7b1690e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T11.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T11.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+this.x = 1;
+this.y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T2.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T2.js
new file mode 100644
index 000000000..b7eb20df0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T2.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+var x = 1;
+var y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T3.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T3.js
new file mode 100644
index 000000000..3b32b2bc2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T3.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T3.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+this.x = 1;
+this.y = 2;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T4.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T4.js
new file mode 100644
index 000000000..c5e5d0a04
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T4.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T5.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T5.js
new file mode 100644
index 000000000..927a8007d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T5.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+var x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+var y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T6.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T6.js
new file mode 100644
index 000000000..b9fb461f6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T6.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+this.x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+this.y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T7.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T7.js
new file mode 100644
index 000000000..93160490c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T7.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+var y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T8.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T8.js
new file mode 100644
index 000000000..5376140af
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T8.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+this.x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+var y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T9.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T9.js
new file mode 100644
index 000000000..76d75b8f9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T9.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+x = 1;
+y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T1.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T1.js
new file mode 100644
index 000000000..229cfc63f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T1.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ x = 1;
+ y = 2;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+ return (str1 === str2);
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T10.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T10.js
new file mode 100644
index 000000000..1707379cf
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T10.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T10.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ var x = 1;
+ var y = 2;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T11.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T11.js
new file mode 100644
index 000000000..b94f2aa56
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T11.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T11.js
+ * @description eval within global execution context
+ * @noStrict
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ this.x = 1;
+ this.y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T2.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T2.js
new file mode 100644
index 000000000..72611dc49
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T2.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+ var x = 1;
+ var y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T3.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T3.js
new file mode 100644
index 000000000..f3cd1b0bf
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T3.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T3.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ this.x = 1;
+ this.y = 2;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T4.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T4.js
new file mode 100644
index 000000000..cebe8f3a2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T4.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T4.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T5.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T5.js
new file mode 100644
index 000000000..802434849
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T5.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T5.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ var x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ var y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T6.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T6.js
new file mode 100644
index 000000000..275f8ce98
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T6.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T6.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ this.x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ this.y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T7.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T7.js
new file mode 100644
index 000000000..1870bc1fd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T7.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T7.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ var y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T8.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T8.js
new file mode 100644
index 000000000..8f1282460
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T8.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T8.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ this.x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ var y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T9.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T9.js
new file mode 100644
index 000000000..e77ca4323
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T9.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T9.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ x = 1;
+ y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/browser.js b/js/src/tests/test262/ch10/10.4/10.4.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/browser.js
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/shell.js b/js/src/tests/test262/ch10/10.4/10.4.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/shell.js
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-1-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-1-s.js
new file mode 100644
index 000000000..9ed7152e4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-1-s.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-1-s.js
+ * @description this is not coerced to an object in strict mode (Number)
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use strict';
+ return typeof(this);
+ }
+
+ function bar()
+ {
+ return typeof(this);
+ }
+
+
+ return foo.call(1) === 'number' && bar.call(1) === 'object';
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10-s.js
new file mode 100644
index 000000000..d737cff1a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-10-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f = function () {
+ "use strict";
+ return typeof this;
+}
+return f() === "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100-s.js
new file mode 100644
index 000000000..98deb941e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-100-s.js
+ * @description Strict Mode - checking 'this' (strict function passed as arg to String.prototype.replace from non-strict context)
+ * @onlyStrict
+ */
+
+function testcase() {
+var x = 3;
+
+function f() {
+ "use strict";
+ x = this;
+ return "a";
+}
+return ("ab".replace("b", f)==="aa") && (x===undefined);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100gs.js
new file mode 100644
index 000000000..b78f81660
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-100gs.js
+ * @description Strict Mode - checking 'this' (strict function passed as arg to String.prototype.replace from non-strict context)
+ * @onlyStrict
+ */
+var x = 3;
+
+function f() {
+ "use strict";
+ x = this;
+ return "a";
+}
+if (("ab".replace("b", f)!=="aa") || (x!==undefined)) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101-s.js
new file mode 100644
index 000000000..bb7c2c7a9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-101-s.js
+ * @description Strict Mode - checking 'this' (non-strict function passed as arg to String.prototype.replace from strict context)
+ * @noStrict
+ */
+
+function testcase() {
+var x = 3;
+
+function f() {
+ x = this;
+ return "a";
+}
+
+return (function() {"use strict"; return "ab".replace("b", f)==="aa";}()) && (x===fnGlobalObject());
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101gs.js
new file mode 100644
index 000000000..bc6eba526
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-101gs.js
+ * @description Strict Mode - checking 'this' (non-strict function passed as arg to String.prototype.replace from strict context)
+ * @noStrict
+ */
+var x = 3;
+
+function f() {
+ x = this;
+ return "a";
+}
+
+if ( (!(function() {"use strict"; return "ab".replace("b", f)==="aa";}())) || (x!==fnGlobalObject())) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102-s.js
new file mode 100644
index 000000000..0a11390ef
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-102-s.js
+ * @description Strict Mode - checking 'this' (strict anonymous function passed as arg to String.prototype.replace from non-strict context)
+ * @onlyStrict
+ */
+
+function testcase() {
+var x = 3;
+
+return ("ab".replace("b", (function () {
+ "use strict";
+ return function () {
+ x = this;
+ return "a";
+ }
+ })())==="aa") && (x===undefined);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102gs.js
new file mode 100644
index 000000000..90505a2fd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-102gs.js
+ * @description Strict Mode - checking 'this' (strict anonymous function passed as arg to String.prototype.replace from non-strict context)
+ * @onlyStrict
+ */
+var x = 3;
+if ( ("ab".replace("b", (function () {
+ "use strict";
+ return function () {
+ x = this;
+ return "a";
+ }
+ })())!=="aa") || (x!==undefined)) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-103.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-103.js
new file mode 100644
index 000000000..a0bc90873
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-103.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-103.js
+ * @description Non strict mode should ToObject thisArg if not an object. Abstract equality operator should succeed.
+ */
+
+function testcase(){
+ Object.defineProperty(Object.prototype, "x", { get: function () { return this; } });
+ if((5).x == 0) return false;
+ if(!((5).x == 5)) return false;
+ return true;
+}
+
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-104.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-104.js
new file mode 100644
index 000000000..42f89deb3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-104.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ *
+ * @path ch10/10.4/10.4.3/10.4.3-1-104.js
+ * @onlyStrict
+ * @description Strict mode should not ToObject thisArg if not an object. Strict equality operator should succeed.
+ */
+
+
+function testcase(){
+ Object.defineProperty(Object.prototype, "x", { get: function () { "use strict"; return this; } });
+ if(!((5).x === 5)) return false;
+ return true;
+}
+
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-105.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-105.js
new file mode 100644
index 000000000..a66b850cf
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-105.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Created based on feedback in https://bugs.ecmascript.org/show_bug.cgi?id=333
+ *
+ * @path ch10/10.4/10.4.3/10.4.3-1-105.js
+ * @description Non strict mode should ToObject thisArg if not an object. Return type should be object and strict equality should fail.
+ */
+
+ function testcase(){
+ Object.defineProperty(Object.prototype, "x", { get: function () { return this; } });
+ if((5).x === 5) return false;
+ if(!(typeof (5).x === "object")) return false;
+ return true;
+}
+
+runTestCase(testcase);
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-106.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-106.js
new file mode 100644
index 000000000..36afbda2a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-106.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Created based on feedback in https://bugs.ecmascript.org/show_bug.cgi?id=333
+ *
+ * @path ch10/10.4/10.4.3/10.4.3-1-106.js
+ * @onlyStrict
+ * @description Strict mode should not ToObject thisArg if not an object. Return type should be 'number'.
+ */
+
+ function testcase(){
+ Object.defineProperty(Object.prototype, "x", { get: function () { "use strict"; return this; } });
+ if(!(typeof (5).x === "number")) return false;
+ return true;
+}
+
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10gs.js
new file mode 100644
index 000000000..74ee475ae
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-10gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var f = function () {
+ "use strict";
+ return typeof this;
+}
+if (f() !== "undefined") {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11-s.js
new file mode 100644
index 000000000..8f7813338
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-11-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+return (function () {
+ return typeof this;
+})() === "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11gs.js
new file mode 100644
index 000000000..3be7db62a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-11gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+if ((function () {
+ return typeof this;
+})() !== "undefined") {
+ throw "'this' had incorrect value!";
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12-s.js
new file mode 100644
index 000000000..a88b4c03f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-12-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+return (function () {
+ "use strict";
+ return typeof this;
+})() === "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12gs.js
new file mode 100644
index 000000000..0bb4a9781
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12gs.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-12gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+if ((function () {
+ "use strict";
+ return typeof this;
+})() !== "undefined") {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13-s.js
new file mode 100644
index 000000000..c4ebc9d39
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-13-s.js
+ * @description Strict Mode - checking 'this' (Function constructor defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f = Function("return typeof this;");
+return f() !== "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13gs.js
new file mode 100644
index 000000000..d6c4d550a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-13gs.js
+ * @description Strict - checking 'this' from a global scope (Function constructor defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f = Function("return typeof this;");
+if (f() === "undefined") {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14-s.js
new file mode 100644
index 000000000..fe45b6931
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-14-s.js
+ * @description Strict Mode - checking 'this' (Function constructor includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f = Function("\"use strict\";\nreturn typeof this;");
+return f() === "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14gs.js
new file mode 100644
index 000000000..cec5e66d8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-14gs.js
+ * @description Strict - checking 'this' from a global scope (Function constructor includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var f = Function("\"use strict\";\nreturn typeof this;");
+if (f() !== "undefined") {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15-s.js
new file mode 100644
index 000000000..961d55b6d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-15-s.js
+ * @description Strict Mode - checking 'this' (New'ed Function constructor defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f = new Function("return typeof this;");
+return f() !== "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15gs.js
new file mode 100644
index 000000000..26d75fa64
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-15gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed Function constructor defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f = new Function("return typeof this;");
+if (f() === "undefined") {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16-s.js
new file mode 100644
index 000000000..6167f4c4a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-16-s.js
+ * @description Strict Mode - checking 'this' (New'ed Function constructor includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f = new Function("\"use strict\";\nreturn typeof this;");
+return f() === "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16gs.js
new file mode 100644
index 000000000..b7a2287e7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-16gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed Function constructor includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var f = new Function("\"use strict\";\nreturn typeof this;");
+if (f() !== "undefined") {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17-s.js
new file mode 100644
index 000000000..4d2caf063
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-17-s.js
+ * @description Strict Mode - checking 'this' (eval used within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+return (eval("typeof this") === "undefined") && (eval("this") !== fnGlobalObject());
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17gs.js
new file mode 100644
index 000000000..f583c6e89
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-17gs.js
+ * @description Strict - checking 'this' from a global scope (eval used within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+if (eval("this") !== fnGlobalObject()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-18gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-18gs.js
new file mode 100644
index 000000000..e1d35e497
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-18gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-18gs.js
+ * @description Strict - checking 'this' from a global scope (eval includes strict directive prologue)
+ * @onlyStrict
+ */
+
+if (eval("\"use strict\";\nthis") !== fnGlobalObject()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19-s.js
new file mode 100644
index 000000000..c2d412838
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-19-s.js
+ * @description Strict Mode - checking 'this' (indirect eval used within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var my_eval = eval;
+return my_eval("this") === fnGlobalObject();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19gs.js
new file mode 100644
index 000000000..2d1c35edc
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-19gs.js
+ * @description Strict - checking 'this' from a global scope (indirect eval used within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var my_eval = eval;
+if (my_eval("this") !== fnGlobalObject()) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-2-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-2-s.js
new file mode 100644
index 000000000..0efe7fd65
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-2-s.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-2-s.js
+ * @description this is not coerced to an object in strict mode (string)
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use strict';
+ return typeof(this);
+ }
+
+ function bar()
+ {
+ return typeof(this);
+ }
+
+
+ return foo.call('1') === 'string' && bar.call('1') === 'object';
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20-s.js
new file mode 100644
index 000000000..869bc53e4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-20-s.js
+ * @description Strict Mode - checking 'this' (indirect eval includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var my_eval = eval;
+return my_eval("\"use strict\";\nthis") === fnGlobalObject();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20gs.js
new file mode 100644
index 000000000..48544cb0e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-20gs.js
+ * @description Strict - checking 'this' from a global scope (indirect eval includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var my_eval = eval;
+if (my_eval("\"use strict\";\nthis") !== fnGlobalObject() ) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21-s.js
new file mode 100644
index 000000000..915f54ce8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-21-s.js
+ * @description Strict Mode - checking 'this' (New'ed object from FunctionDeclaration defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+function f() {
+ return this;
+}
+return ( (new f())!==fnGlobalObject()) && (typeof (new f()) !== "undefined");
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21gs.js
new file mode 100644
index 000000000..b12634049
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-21gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed object from FunctionDeclaration defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+function f() {
+ return this;
+}
+if (((new f()) === fnGlobalObject()) || (typeof (new f()) === "undefined")) {
+ throw "'this' had incorrect value!";
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22-s.js
new file mode 100644
index 000000000..55d66e60c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-22-s.js
+ * @description Strict Mode - checking 'this' (New'ed object from FunctionDeclaration includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() {
+ "use strict";
+ return this;
+}
+return ( (new f())!==fnGlobalObject()) && (typeof (new f()) !== "undefined");
+
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22gs.js
new file mode 100644
index 000000000..1abde0e2f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-22gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed object from FunctionDeclaration includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function f() {
+ "use strict";
+ return this;
+}
+if (((new f()) === fnGlobalObject()) || (typeof (new f()) === "undefined")) {
+ throw "'this' had incorrect value!";
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23-s.js
new file mode 100644
index 000000000..b2c40be4f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-23-s.js
+ * @description Strict Mode - checking 'this' (New'ed object from FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f = function () {
+ return this;
+}
+return ( (new f())!==fnGlobalObject()) && (typeof (new f()) !== "undefined");
+
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23gs.js
new file mode 100644
index 000000000..4aab84291
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-23gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed object from FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f = function () {
+ return this;
+}
+if (((new f()) === fnGlobalObject()) || (typeof (new f()) === "undefined")) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24-s.js
new file mode 100644
index 000000000..3499abe4d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-24-s.js
+ * @description Strict Mode - checking 'this' (New'ed object from FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f = function () {
+ "use strict";
+ return this;
+}
+return ( (new f())!==fnGlobalObject()) && (typeof (new f()) !== "undefined");
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24gs.js
new file mode 100644
index 000000000..38d5e1490
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-24gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed object from FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var f = function () {
+ "use strict";
+ return this;
+}
+if (((new f()) === fnGlobalObject()) || (typeof (new f()) === "undefined")) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25-s.js
new file mode 100644
index 000000000..138802f64
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-25-s.js
+ * @description Strict Mode - checking 'this' (New'ed object from Anonymous FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var obj = new (function () {
+ return this;
+});
+return (obj !== fnGlobalObject()) && ((typeof obj) !== "undefined");
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25gs.js
new file mode 100644
index 000000000..30ac917cb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-25gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed object from Anonymous FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var obj = new (function () {
+ return this;
+});
+if ((obj === fnGlobalObject()) || (typeof obj === "undefined")) {
+ throw "'this' had incorrect value!";
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26-s.js
new file mode 100644
index 000000000..a015f4082
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-26-s.js
+ * @description Strict Mode - checking 'this' (New'ed object from Anonymous FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var obj = new (function () {
+ "use strict";
+ return this;
+});
+return (obj !== fnGlobalObject()) && ((typeof obj) !== "undefined");
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26gs.js
new file mode 100644
index 000000000..e19bce342
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-26gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed object from Anonymous FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var obj = new (function () {
+ "use strict";
+ return this;
+});
+if ((obj === fnGlobalObject()) || (typeof obj === "undefined")) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27-s.js
new file mode 100644
index 000000000..54eda820f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-27-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within a FunctionDeclaration inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+function f1() {
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27gs.js
new file mode 100644
index 000000000..0cb1cb4f2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-27gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within a FunctionDeclaration inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+function f1() {
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28-s.js
new file mode 100644
index 000000000..c2a5578a8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-28-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within a FunctionDeclaration inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+function f1() {
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28gs.js
new file mode 100644
index 000000000..663a18e00
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-28gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within a FunctionDeclaration inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+function f1() {
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29-s.js
new file mode 100644
index 000000000..87ea431d7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-29-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within a FunctionDeclaration inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+function f1() {
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29gs.js
new file mode 100644
index 000000000..416f1b4f3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-29gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within a FunctionDeclaration inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+function f1() {
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-3-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-3-s.js
new file mode 100644
index 000000000..19bafdcff
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-3-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-3-s.js
+ * @description this is not coerced to an object in strict mode (undefined)
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use strict';
+ return typeof(this);
+ }
+
+ function bar()
+ {
+ return typeof(this);
+ }
+ return foo.call(undefined) === 'undefined' && bar.call() === 'object';
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30-s.js
new file mode 100644
index 000000000..b4085931b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-30-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within a FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f1 = function () {
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30gs.js
new file mode 100644
index 000000000..ab3c6222d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-30gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within a FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f1 = function () {
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31-s.js
new file mode 100644
index 000000000..dc32ca19e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-31-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within a FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f1 = function () {
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31gs.js
new file mode 100644
index 000000000..1bbb2d161
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-31gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within a FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f1 = function () {
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32-s.js
new file mode 100644
index 000000000..4ba988920
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-32-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within a FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f1 = function () {
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32gs.js
new file mode 100644
index 000000000..1cd2ad05a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-32gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within a FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f1 = function () {
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33-s.js
new file mode 100644
index 000000000..6c4d66e2e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-33-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within an Anonymous FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+return (function () {
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33gs.js
new file mode 100644
index 000000000..c288566cb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-33gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within an Anonymous FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+if (! ((function () {
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})())) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34-s.js
new file mode 100644
index 000000000..9cf25b53d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-34-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within an Anonymous FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+return (function () {
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34gs.js
new file mode 100644
index 000000000..72980aa41
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-34gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within an Anonymous FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+if (! ((function () {
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35-s.js
new file mode 100644
index 000000000..8f7abb36f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-35-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within an Anonymous FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+return (function () {
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35gs.js
new file mode 100644
index 000000000..ecee18fe3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-35gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within an Anonymous FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+if (! ((function () {
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36-s.js
new file mode 100644
index 000000000..08bea7cc4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-36-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within a FunctionDeclaration with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+function f1() {
+ "use strict";
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36gs.js
new file mode 100644
index 000000000..88fab9f20
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-36gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within a FunctionDeclaration with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function f1() {
+ "use strict";
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37-s.js
new file mode 100644
index 000000000..93e7fde28
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-37-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within a FunctionDeclaration with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+function f1() {
+ "use strict";
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37gs.js
new file mode 100644
index 000000000..795b6032d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-37gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within a FunctionDeclaration with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function f1() {
+ "use strict";
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38-s.js
new file mode 100644
index 000000000..f496d4ed0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-38-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within a FunctionDeclaration with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+function f1() {
+ "use strict";
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38gs.js
new file mode 100644
index 000000000..1c00b742e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-38gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within a FunctionDeclaration with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function f1() {
+ "use strict";
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39-s.js
new file mode 100644
index 000000000..22478bc26
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-39-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within a FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f1 = function () {
+ "use strict";
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39gs.js
new file mode 100644
index 000000000..7ec3adf91
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-39gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within a FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+var f1 = function () {
+ "use strict";
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-4-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-4-s.js
new file mode 100644
index 000000000..28bd8f059
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-4-s.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-4-s.js
+ * @description this is not coerced to an object in strict mode (boolean)
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use strict';
+ return typeof(this);
+ }
+
+ function bar()
+ {
+ return typeof(this);
+ }
+
+
+ return foo.call(true) === 'boolean' && bar.call(true) === 'object';
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40-s.js
new file mode 100644
index 000000000..b90817f63
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-40-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within a FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f1 = function () {
+ "use strict";
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40gs.js
new file mode 100644
index 000000000..2d8fbf0ba
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-40gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within a FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+var f1 = function () {
+ "use strict";
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41-s.js
new file mode 100644
index 000000000..48495e392
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-41-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within a FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f1 = function () {
+ "use strict";
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41gs.js
new file mode 100644
index 000000000..43cba61c8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-41gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within a FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+var f1 = function () {
+ "use strict";
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42-s.js
new file mode 100644
index 000000000..c4f705857
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-42-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within an Anonymous FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+return (function () {
+ "use strict";
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42gs.js
new file mode 100644
index 000000000..b1802bf16
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-42gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within an Anonymous FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+if (! ((function () {
+ "use strict";
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43-s.js
new file mode 100644
index 000000000..6575e56b9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-43-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within an Anonymous FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+return (function () {
+ "use strict";
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43gs.js
new file mode 100644
index 000000000..0da4b7871
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-43gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within an Anonymous FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+if (! ((function () {
+ "use strict";
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44-s.js
new file mode 100644
index 000000000..b7ac11d8d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-44-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within an Anonymous FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+return (function () {
+ "use strict";
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44gs.js
new file mode 100644
index 000000000..2300e4acb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-44gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within an Anonymous FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+if (! ((function () {
+ "use strict";
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45-s.js
new file mode 100644
index 000000000..e23f9fef0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-45-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration with a strict directive prologue defined within a FunctionDeclaration)
+ * @noStrict
+ */
+
+function testcase() {
+function f1() {
+ function f() {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45gs.js
new file mode 100644
index 000000000..ce99d6574
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-45gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration with a strict directive prologue defined within a FunctionDeclaration)
+ * @noStrict
+ */
+
+function f1() {
+ function f() {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46-s.js
new file mode 100644
index 000000000..5945b2b21
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-46-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression with a strict directive prologue defined within a FunctionDeclaration)
+ * @noStrict
+ */
+
+function testcase() {
+function f1() {
+ var f = function () {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46gs.js
new file mode 100644
index 000000000..3d0ddd895
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-46gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression with a strict directive prologue defined within a FunctionDeclaration)
+ * @noStrict
+ */
+
+function f1() {
+ var f = function () {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47-s.js
new file mode 100644
index 000000000..6a5fe9d40
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-47-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression with a strict directive prologue defined within a FunctionDeclaration)
+ * @noStrict
+ */
+
+function testcase() {
+function f1() {
+ return ((function () {
+ "use strict";
+ return typeof this;
+ })()==="undefined") && (this===fnGlobalObject());
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47gs.js
new file mode 100644
index 000000000..78884f8c6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-47gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression with a strict directive prologue defined within a FunctionDeclaration)
+ * @noStrict
+ */
+
+function f1() {
+ return ((function () {
+ "use strict";
+ return typeof this;
+ })()==="undefined") && (this===fnGlobalObject());
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48-s.js
new file mode 100644
index 000000000..3c4d49af4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-48-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration with a strict directive prologue defined within a FunctionExpression)
+ * @noStrict
+ */
+
+function testcase() {
+var f1 = function () {
+ function f() {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48gs.js
new file mode 100644
index 000000000..b6d619176
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-48gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration with a strict directive prologue defined within a FunctionExpression)
+ * @noStrict
+ */
+
+var f1 = function () {
+ function f() {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49-s.js
new file mode 100644
index 000000000..3ae616eaa
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-49-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression with a strict directive prologue defined within a FunctionExpression)
+ * @noStrict
+ */
+
+function testcase() {
+var f1 = function () {
+ var f = function () {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49gs.js
new file mode 100644
index 000000000..d6aee3a91
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-49gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression with a strict directive prologue defined within a FunctionExpression)
+ * @noStrict
+ */
+
+var f1 = function () {
+ var f = function () {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-5-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-5-s.js
new file mode 100644
index 000000000..5d64cea6b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-5-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-5-s.js
+ * @description this is not coerced to an object in strict mode (function)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use strict';
+ return typeof(this);
+ }
+
+ function bar()
+ {
+ return typeof(this);
+ }
+
+ function foobar()
+ {
+ }
+
+ return foo.call(foobar) === 'function' && bar.call(foobar) === 'function';
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50-s.js
new file mode 100644
index 000000000..ad273ecb1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-50-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression with a strict directive prologue defined within a FunctionExpression)
+ * @noStrict
+ */
+
+function testcase() {
+var f1 = function () {
+ return ((function () {
+ "use strict";
+ return typeof this;
+ })()==="undefined") && (this===fnGlobalObject());
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50gs.js
new file mode 100644
index 000000000..21cd879ef
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-50gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression with a strict directive prologue defined within a FunctionExpression)
+ * @noStrict
+ */
+
+var f1 = function () {
+ return ((function () {
+ "use strict";
+ return typeof this;
+ })()==="undefined") && (this===fnGlobalObject());
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51-s.js
new file mode 100644
index 000000000..e8935366e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-51-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration with a strict directive prologue defined within an Anonymous FunctionExpression)
+ * @noStrict
+ */
+
+function testcase() {
+return (function () {
+ function f() {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51gs.js
new file mode 100644
index 000000000..52f8e35a6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-51gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration with a strict directive prologue defined within an Anonymous FunctionExpression)
+ * @noStrict
+ */
+
+if (! ((function () {
+ function f() {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52-s.js
new file mode 100644
index 000000000..b2c3a0082
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-52-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression with a strict directive prologue defined within an Anonymous FunctionExpression)
+ * @noStrict
+ */
+
+function testcase() {
+return (function () {
+ var f = function () {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52gs.js
new file mode 100644
index 000000000..cc617750d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-52gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression with a strict directive prologue defined within an Anonymous FunctionExpression)
+ * @noStrict
+ */
+
+if (! ((function () {
+ var f = function () {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53-s.js
new file mode 100644
index 000000000..2324bf44f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-53-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression with a strict directive prologue defined within an Anonymous FunctionExpression)
+ * @noStrict
+ */
+
+function testcase() {
+return (function () {
+ return ((function () {
+ "use strict";
+ return typeof this;
+ })()==="undefined") && (this===fnGlobalObject());
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53gs.js
new file mode 100644
index 000000000..0c6581f2e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-53gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression with a strict directive prologue defined within an Anonymous FunctionExpression)
+ * @noStrict
+ */
+
+if (! ((function () {
+ return ((function () {
+ "use strict";
+ return typeof this;
+ })()==="undefined") && (this===fnGlobalObject());
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54-s.js
new file mode 100644
index 000000000..ac481d610
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-54-s.js
+ * @description Strict Mode - checking 'this' (Literal getter defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var o = { get foo() { return this; } }
+return o.foo===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54gs.js
new file mode 100644
index 000000000..571ad634e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-54gs.js
+ * @description Strict - checking 'this' from a global scope (Literal getter defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var o = { get foo() { return this; } }
+if (o.foo!==o) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55-s.js
new file mode 100644
index 000000000..49acc2d11
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-55-s.js
+ * @description Strict Mode - checking 'this' (Literal getter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = { get foo() { "use strict"; return this; } }
+return o.foo===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55gs.js
new file mode 100644
index 000000000..ab3ccbbc5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-55gs.js
+ * @description Strict - checking 'this' from a global scope (Literal getter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var o = { get foo() { "use strict"; return this; } }
+if (o.foo!==o) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56-s.js
new file mode 100644
index 000000000..1a492c462
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-56-s.js
+ * @description Strict Mode - checking 'this' (Literal setter defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var x = 2;
+var o = { set foo(stuff) { x=this; } }
+o.foo = 3;
+return x===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56gs.js
new file mode 100644
index 000000000..7ea7c7a3f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-56gs.js
+ * @description Strict - checking 'this' from a global scope (Literal setter defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var x = 2;
+var o = { set foo(stuff) { x=this; } }
+o.foo = 3;
+if (x!==o) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57-s.js
new file mode 100644
index 000000000..bcd4ef62c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-57-s.js
+ * @description Strict Mode - checking 'this' (Literal setter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var x = 2;
+var o = { set foo(stuff) { "use strict"; x=this; } }
+o.foo = 3;
+return x===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57gs.js
new file mode 100644
index 000000000..e59df3357
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57gs.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-57gs.js
+ * @description Strict - checking 'this' from a global scope (Literal setter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var x = 2;
+var o = { set foo(stuff) { "use strict"; x=this; } }
+o.foo = 3;
+if (x!==o) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58-s.js
new file mode 100644
index 000000000..964f8d435
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-58-s.js
+ * @description Strict Mode - checking 'this' (Injected getter defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var o = {};
+Object.defineProperty(o, "foo", { get: function() { return this; } });
+return o.foo===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58gs.js
new file mode 100644
index 000000000..166e44079
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58gs.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-58gs.js
+ * @description Strict - checking 'this' from a global scope (Injected getter defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var o = {};
+Object.defineProperty(o, "foo", { get : function() { return this; } });
+if (o.foo!==o) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59-s.js
new file mode 100644
index 000000000..7d0afddf5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-59-s.js
+ * @description Strict Mode - checking 'this' (Injected getter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+Object.defineProperty(o, "foo", { get: function() { "use strict"; return this; } });
+return o.foo===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59gs.js
new file mode 100644
index 000000000..09e1d0648
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-59gs.js
+ * @description Strict - checking 'this' from a global scope (Injected getter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var o = {};
+Object.defineProperty(o, "foo", { get: function() { "use strict"; return this; } });
+if (o.foo!==o) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60-s.js
new file mode 100644
index 000000000..1bd803bee
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-60-s.js
+ * @description Strict Mode - checking 'this' (Injected setter defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var o = {};
+var x = 2;
+Object.defineProperty(o, "foo", { set: function(stuff) { x=this; } });
+o.foo = 3;
+return x===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60gs.js
new file mode 100644
index 000000000..09053dbd1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-60gs.js
+ * @description Strict - checking 'this' from a global scope (Injected setter defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var o = {};
+var x = 2;
+Object.defineProperty(o, "foo", { set: function(stuff) { x=this; } });
+o.foo = 3;
+if (x!==o) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61-s.js
new file mode 100644
index 000000000..23586b250
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-61-s.js
+ * @description Strict Mode - checking 'this' (Injected setter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+var x = 2;
+Object.defineProperty(o, "foo", { set: function(stuff) { "use strict"; x=this; } });
+o.foo = 3;
+return x===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61gs.js
new file mode 100644
index 000000000..2d31c32d8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-61gs.js
+ * @description Strict - checking 'this' from a global scope (Injected setter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var o = {};
+var x = 2;
+Object.defineProperty(o, "foo", { set: function(stuff) { "use strict"; x=this; } });
+o.foo = 3;
+if (x!==o) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62-s.js
new file mode 100644
index 000000000..a2e3c0bb8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-62-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by non-strict function declaration)
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this;};
+function foo() { return f();}
+return foo()===undefined;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62gs.js
new file mode 100644
index 000000000..9cd2ae0e7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-62gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by non-strict function declaration)
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this;};
+function foo() { return f();}
+if (foo()!==undefined){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63-s.js
new file mode 100644
index 000000000..5b93d280b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-63-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by non-strict eval)
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return eval("f();");
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63gs.js
new file mode 100644
index 000000000..07f7a9cee
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-63gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by non-strict eval)
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! eval("f();")){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64-s.js
new file mode 100644
index 000000000..ddb042449
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-64-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by non-strict Function constructor)
+ * @onlyStrict
+ */
+
+function testcase() {
+fnGlobalObject().f = function() { "use strict"; return this===undefined;};
+return Function("return f();")();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64gs.js
new file mode 100644
index 000000000..6877c8341
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-64gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by non-strict Function constructor)
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! (Function("return f();")())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65-s.js
new file mode 100644
index 000000000..5b0f20a65
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-65-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by non-strict new'ed Function constructor)
+ * @onlyStrict
+ */
+
+function testcase() {
+fnGlobalObject().f = function() { "use strict"; return this===undefined;};
+return (new Function("return f();"))();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65gs.js
new file mode 100644
index 000000000..567a12360
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-65gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by non-strict new'ed Function constructor)
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! ( (new Function("return f();")) () )){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66-s.js
new file mode 100644
index 000000000..3b4401827
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-66-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.apply())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return f.apply();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66gs.js
new file mode 100644
index 000000000..29a609b7a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-66gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.apply())
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! f.apply()){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67-s.js
new file mode 100644
index 000000000..baf57dc0c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-67-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.apply(null))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===null;};
+return f.apply(null);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67gs.js
new file mode 100644
index 000000000..9122b9fde
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-67gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.apply(null))
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===null;};
+if (! f.apply(null)){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68-s.js
new file mode 100644
index 000000000..10a5294e1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-68-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.apply(undefined))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return f.apply(undefined);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68gs.js
new file mode 100644
index 000000000..5bfeee3f0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-68gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.apply(undefined))
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! f.apply(undefined)){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69-s.js
new file mode 100644
index 000000000..8db3b94ce
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-69-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.apply(someObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+function f() { "use strict"; return this===o;};
+return f.apply(o);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69gs.js
new file mode 100644
index 000000000..f32b45575
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-69gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.apply(someObject))
+ * @onlyStrict
+ */
+
+var o = {};
+function f() { "use strict"; return this===o;};
+if (! f.apply(o)){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7-s.js
new file mode 100644
index 000000000..ae370f766
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-7-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within strict mode)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+"use strict";
+function f() {
+ return typeof this;
+}
+return f() === "undefined";
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70-s.js
new file mode 100644
index 000000000..d1bf918ee
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-70-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.apply(globalObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this;};
+return f.apply(fnGlobalObject()) === fnGlobalObject();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70gs.js
new file mode 100644
index 000000000..0044b8afd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-70gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.apply(globalObject))
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this;};
+if (f.apply(fnGlobalObject()) !== fnGlobalObject()){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71-s.js
new file mode 100644
index 000000000..5fe5dcba3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-71-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.call())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return f.call();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71gs.js
new file mode 100644
index 000000000..c978be9ad
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-71gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.call())
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! f.call()){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72-s.js
new file mode 100644
index 000000000..b9c669291
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-72-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.call(null))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===null;};
+return f.call(null);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72gs.js
new file mode 100644
index 000000000..49ca243d1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-72gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.call(null))
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===null;};
+if (! f.call(null)){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73-s.js
new file mode 100644
index 000000000..e04b5d7be
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-73-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.call(undefined))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return f.call(undefined);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73gs.js
new file mode 100644
index 000000000..10a3176db
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-73gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.call(undefined))
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! f.call(undefined)){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74-s.js
new file mode 100644
index 000000000..7e2d746e3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-74-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.call(someObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+function f() { "use strict"; return this===o;};
+return f.call(o);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74gs.js
new file mode 100644
index 000000000..27a73d67f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-74gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.call(someObject))
+ * @onlyStrict
+ */
+
+var o = {};
+function f() { "use strict"; return this===o;};
+if (! f.call(o)){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75-s.js
new file mode 100644
index 000000000..fa8f4d4b0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-75-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.call(globalObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this;};
+return f.call(fnGlobalObject()) === fnGlobalObject();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75gs.js
new file mode 100644
index 000000000..3df699177
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-75gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.call(globalObject))
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this;};
+if (f.call(fnGlobalObject()) !== fnGlobalObject()){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76-s.js
new file mode 100644
index 000000000..7918f0dfa
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-76-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.bind()())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return f.bind()();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76gs.js
new file mode 100644
index 000000000..f61d0e324
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-76gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.bind()())
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! (f.bind()())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77-s.js
new file mode 100644
index 000000000..fb5614dd9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-77-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.bind(null)())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===null;};
+return f.bind(null)();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77gs.js
new file mode 100644
index 000000000..51d38c398
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-77gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.bind(null)())
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===null;};
+if (! (f.bind(null)())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78-s.js
new file mode 100644
index 000000000..3d50f279c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-78-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.bind(undefined)())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return f.bind(undefined)();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78gs.js
new file mode 100644
index 000000000..8d67642fa
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-78gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.bind(undefined)())
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! (f.bind(undefined)())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79-s.js
new file mode 100644
index 000000000..5dace0a45
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-79-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.bind(someObject)())
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+function f() { "use strict"; return this===o;};
+return f.bind(o)();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79gs.js
new file mode 100644
index 000000000..a347c004a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-79gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.bind(someObject)())
+ * @onlyStrict
+ */
+
+var o = {};
+function f() { "use strict"; return this===o;};
+if (! (f.bind(o)())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7gs.js
new file mode 100644
index 000000000..23b1c0583
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-7gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+function f() {
+ return typeof this;
+}
+if (f() !== "undefined") {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8-s.js
new file mode 100644
index 000000000..7d6beaa1a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-8-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration includes strict directive prologue)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+function f() {
+ "use strict";
+ return typeof this;
+}
+return f() === "undefined";
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80-s.js
new file mode 100644
index 000000000..86951b61a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-80-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.bind(globalObject)())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this;};
+return f.bind(fnGlobalObject())() === fnGlobalObject();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80gs.js
new file mode 100644
index 000000000..e3ed02e6a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-80gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.bind(globalObject)())
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this;};
+if (f.bind(fnGlobalObject())() !== fnGlobalObject()){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81-s.js
new file mode 100644
index 000000000..61be6b784
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-81-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict function declaration)
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this!==undefined;};
+function foo() { "use strict"; return f();}
+return foo();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81gs.js
new file mode 100644
index 000000000..0544e0cd7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-81gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict function declaration)
+ * @noStrict
+ */
+
+function f() { return this!==undefined;};
+function foo() { "use strict"; return f();}
+if (! foo()){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82-s.js
new file mode 100644
index 000000000..0a2b16600
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-82-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict eval)
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this!==undefined;};
+return (function () {"use strict"; return eval("f();");})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82gs.js
new file mode 100644
index 000000000..305435eeb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-82gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict eval)
+ * @noStrict
+ */
+
+function f() { return this!==undefined;};
+if (! ((function () {"use strict"; return eval("f();");})()) ){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83-s.js
new file mode 100644
index 000000000..f03adeff5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-83-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function constructor)
+ * @noStrict
+ */
+
+function testcase() {
+fnGlobalObject().f = function() {return this!==undefined;};
+return (function () {return Function("\"use strict\";return f();")();})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83gs.js
new file mode 100644
index 000000000..dfe59d84e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-83gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function constructor)
+ * @noStrict
+ */
+
+function f() {return this!==undefined;};
+if (! ((function () {return Function("\"use strict\";return f();")();})()) ){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84-s.js
new file mode 100644
index 000000000..807817846
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-84-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict new'ed Function constructor)
+ * @noStrict
+ */
+
+function testcase() {
+fnGlobalObject().f = function() { return this!==undefined;};
+return (function () {return new Function("\"use strict\";return f();")();})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84gs.js
new file mode 100644
index 000000000..23a20910d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-84gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict new'ed Function constructor)
+ * @noStrict
+ */
+
+function f() { return this!==undefined;};
+if (! ((function () {return new Function("\"use strict\";return f();")();})()) ){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85-s.js
new file mode 100644
index 000000000..abdb33b92
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-85-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.apply())
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this!==undefined;};
+return (function () {"use strict"; return f.apply();})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85gs.js
new file mode 100644
index 000000000..093115f32
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-85gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.apply())
+ * @noStrict
+ */
+
+function f() { return this!==undefined;};
+if (! ((function () {"use strict"; return f.apply();})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86-s.js
new file mode 100644
index 000000000..fca8007f3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-86-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.apply(null))
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.apply(null);})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86gs.js
new file mode 100644
index 000000000..f1e23cce2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-86gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.apply(null))
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.apply(null);})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87-s.js
new file mode 100644
index 000000000..be4505ace
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-87-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.apply(undefined))
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject()};
+return (function () {"use strict"; return f.apply(undefined);})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87gs.js
new file mode 100644
index 000000000..af76c9a8b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-87gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.apply(undefined))
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.apply(undefined);})())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88-s.js
new file mode 100644
index 000000000..72c424567
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-88-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.apply(someObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+function f() { return this===o;};
+return (function () {"use strict"; return f.apply(o);})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88gs.js
new file mode 100644
index 000000000..8b85f6993
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-88gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.apply(someObject))
+ * @onlyStrict
+ */
+
+var o = {};
+function f() { return this===o;};
+if (! ((function () {"use strict"; return f.apply(o);})())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89-s.js
new file mode 100644
index 000000000..451851d5b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-89-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.apply(globalObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { return this;};
+return (function () {"use strict"; return f.apply(fnGlobalObject()); })() === fnGlobalObject();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89gs.js
new file mode 100644
index 000000000..68f415a64
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-89gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.apply(globalObject))
+ * @onlyStrict
+ */
+
+function f() { return this;};
+if ((function () {"use strict"; return f.apply(fnGlobalObject());})() !== fnGlobalObject()){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8gs.js
new file mode 100644
index 000000000..814fb7ec7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-8gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function f() {
+ "use strict";
+ return typeof this;
+}
+if (f() !== "undefined") {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9-s.js
new file mode 100644
index 000000000..38ca374e7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-9-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f = function () {
+ return typeof this;
+}
+return f() === "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90-s.js
new file mode 100644
index 000000000..0b6a4b3f1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-90-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.call())
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.call(); })();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90gs.js
new file mode 100644
index 000000000..78a91247f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-90gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.call())
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.call();})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91-s.js
new file mode 100644
index 000000000..2dc4007e9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-91-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.call(null))
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.call(null); })();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91gs.js
new file mode 100644
index 000000000..c1052a773
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-91gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.call(null))
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.call(null); })())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92-s.js
new file mode 100644
index 000000000..3a04a7b6f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-92-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.call(undefined))
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.call(undefined);})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92gs.js
new file mode 100644
index 000000000..4517302f3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-92gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.call(undefined))
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.call(undefined);})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93-s.js
new file mode 100644
index 000000000..e8da599e7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-93-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.call(someObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+function f() { return this===o;};
+return (function () {"use strict"; return f.call(o); })();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93gs.js
new file mode 100644
index 000000000..44bd495b4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-93gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.call(someObject))
+ * @onlyStrict
+ */
+
+var o = {};
+function f() { return this===o;};
+if (! ((function () {"use strict"; return f.call(o); })())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94-s.js
new file mode 100644
index 000000000..655ac9e76
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-94-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.call(globalObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.call(fnGlobalObject());})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94gs.js
new file mode 100644
index 000000000..e752c688e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-94gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.call(globalObject))
+ * @onlyStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.call(fnGlobalObject());})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95-s.js
new file mode 100644
index 000000000..db48e89d9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-95-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.bind()())
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.bind()(); })();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95gs.js
new file mode 100644
index 000000000..5d5fc09b8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-95gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.bind()())
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.bind()(); })())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96-s.js
new file mode 100644
index 000000000..3c4e652c3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-96-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.bind(null)())
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.bind(null)(); })();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96gs.js
new file mode 100644
index 000000000..cbfe417c4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-96gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.bind(null)())
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.bind(null)(); })())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97-s.js
new file mode 100644
index 000000000..feac73bd6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-97-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.bind(undefined)())
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.bind(undefined)();})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97gs.js
new file mode 100644
index 000000000..1e79dd96e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-97gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.bind(undefined)())
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.bind(undefined)(); })())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98-s.js
new file mode 100644
index 000000000..1c07cafc6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-98-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.bind(someObject)())
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+function f() { return this===o;};
+return (function () {"use strict"; return f.bind(o)();})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98gs.js
new file mode 100644
index 000000000..c72e9dcc6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-98gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.bind(someObject)())
+ * @onlyStrict
+ */
+
+var o = {};
+function f() { return this===o;};
+if (! ((function () {"use strict"; return f.bind(o)();})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99-s.js
new file mode 100644
index 000000000..47b1dac4d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-99-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.bind(globalObject)())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.bind(fnGlobalObject())();})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99gs.js
new file mode 100644
index 000000000..5e9730d9f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-99gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.bind(globalObject)())
+ * @onlyStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.bind(fnGlobalObject())();})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9gs.js
new file mode 100644
index 000000000..56c150c89
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-9gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f = function () {
+ return typeof this;
+}
+if (f() !== "undefined") {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/S10.4.3_A1.js b/js/src/tests/test262/ch10/10.4/10.4.3/S10.4.3_A1.js
new file mode 100644
index 000000000..ea2432219
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/S10.4.3_A1.js
@@ -0,0 +1,16 @@
+// Copyright 2011 Google, Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @path ch10/10.4/10.4.3/S10.4.3_A1.js
+ * @description When calling a strict anonymous function as a
+ * function, "this" should be bound to undefined.
+ * @onlyStrict
+ */
+
+"use strict";
+var that = (function() { return this; })();
+if (that !== undefined) {
+ $ERROR('#1: "this" leaked as: ' + that);
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/browser.js b/js/src/tests/test262/ch10/10.4/10.4.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/browser.js
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/shell.js b/js/src/tests/test262/ch10/10.4/10.4.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/shell.js
diff --git a/js/src/tests/test262/ch10/10.4/S10.4A1.1_T2.js b/js/src/tests/test262/ch10/10.4/S10.4A1.1_T2.js
new file mode 100644
index 000000000..080aad06a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/S10.4A1.1_T2.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Every function call enters a new execution context
+ *
+ * @path ch10/10.4/S10.4A1.1_T2.js
+ * @description Recursive function call
+ */
+
+var y;
+
+function f(a){
+ var x;
+
+ if (a === 1)
+ return x;
+ else {
+ if(x === undefined) {
+ x = 0;
+ } else {
+ x = 1;
+ }
+ return f(1);
+ }
+}
+
+y = f(0);
+
+if(!(y === undefined)){
+ $ERROR("#1: Recursive function calls shares execution context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/S10.4_A1.1_T1.js b/js/src/tests/test262/ch10/10.4/S10.4_A1.1_T1.js
new file mode 100644
index 000000000..408d50770
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/S10.4_A1.1_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Every function call enters a new execution context
+ *
+ * @path ch10/10.4/S10.4_A1.1_T1.js
+ * @description Sequence of function calls
+ */
+
+var y;
+
+function f(){
+ var x;
+
+ if(x === undefined) {
+ x = 0;
+ } else {
+ x = 1;
+ }
+
+ return x;
+}
+
+y = f();
+y = f();
+
+if(!(y === 0)){
+ $ERROR("#1: Sequenced function calls shares execution context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/browser.js b/js/src/tests/test262/ch10/10.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/browser.js
diff --git a/js/src/tests/test262/ch10/10.4/shell.js b/js/src/tests/test262/ch10/10.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/shell.js
diff --git a/js/src/tests/test262/ch10/10.5/10.5-1-s.js b/js/src/tests/test262/ch10/10.5/10.5-1-s.js
new file mode 100644
index 000000000..fc841a5e4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/10.5-1-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.5/10.5-1-s.js
+ * @description Strict Mode - arguments object is immutable
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ (function fun() {
+ eval("arguments = 10");
+ })(30);
+ return false;
+ } catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.5/10.5-1gs.js b/js/src/tests/test262/ch10/10.5/10.5-1gs.js
new file mode 100644
index 000000000..aafbeb333
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/10.5-1gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.5/10.5-1gs.js
+ * @description Strict Mode - arguments cannot be assigned to in a strict function
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+throw NotEarlyError;
+
+function f_10_5_1_gs(){
+ arguments = 7;
+}
+
diff --git a/js/src/tests/test262/ch10/10.5/10.5-7-b-1-s.js b/js/src/tests/test262/ch10/10.5/10.5-7-b-1-s.js
new file mode 100644
index 000000000..e1855c7c6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/10.5-7-b-1-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.5/10.5-7-b-1-s.js
+ * @description Strict Mode - arguments object is immutable in eval'ed functions
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("(function _10_5_7_b_1_fun() { arguments = 10;} ());");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.5/10.5-7-b-2-s.js b/js/src/tests/test262/ch10/10.5/10.5-7-b-2-s.js
new file mode 100644
index 000000000..47820009e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/10.5-7-b-2-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.5/10.5-7-b-2-s.js
+ * @description Strict Mode - arguments object index assignment is allowed
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ function _10_5_7_b_2_fun() {
+ arguments[7] = 12;
+ return arguments[7] === 12;
+ };
+
+ return _10_5_7_b_2_fun(30);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.5/10.5-7-b-3-s.js b/js/src/tests/test262/ch10/10.5/10.5-7-b-3-s.js
new file mode 100644
index 000000000..4f4a66dcd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/10.5-7-b-3-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.5/10.5-7-b-3-s.js
+ * @description Strict Mode - Adding property to the arguments object successful under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ function _10_5_7_b_3_fun() {
+ arguments[1] = 12;
+ return arguments[0] = 30 && arguments[1] === 12;
+ };
+
+ return _10_5_7_b_3_fun(30);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.5/10.5-7-b-4-s.js b/js/src/tests/test262/ch10/10.5/10.5-7-b-4-s.js
new file mode 100644
index 000000000..c695446b4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/10.5-7-b-4-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.5/10.5-7-b-4-s.js
+ * @description Strict Mode - Deleting property of the arguments object successful under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ function _10_5_7_b_4_fun() {
+ var _10_5_7_b_4_1 = arguments[0] === 30 && arguments[1] === 12;
+ delete arguments[1];
+ var _10_5_7_b_4_2 = arguments[0] === 30 && typeof arguments[1] === "undefined";
+ return _10_5_7_b_4_1 && _10_5_7_b_4_2;
+ };
+ return _10_5_7_b_4_fun(30, 12);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.5/browser.js b/js/src/tests/test262/ch10/10.5/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/browser.js
diff --git a/js/src/tests/test262/ch10/10.5/shell.js b/js/src/tests/test262/ch10/10.5/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/shell.js
diff --git a/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1-s.js b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1-s.js
new file mode 100644
index 000000000..dcc3c49f9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-10-c-ii-1-s.js
+ * @description arguments[i] remains same after changing actual parameters in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ function foo(a,b,c)
+ {
+ 'use strict';
+ a = 1; b = 'str'; c = 2.1;
+ return (arguments[0] === 10 && arguments[1] === 'sss' && arguments[2] === 1);
+ }
+ return foo(10, 'sss', 1);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1.js b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1.js
new file mode 100644
index 000000000..f0db64ee2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-10-c-ii-1.js
+ * @description arguments[i] change with actual parameters
+ */
+
+
+function testcase() {
+ function foo(a,b,c)
+ {
+ a = 1; b = 'str'; c = 2.1;
+ if(arguments[0] === 1 && arguments[1] === 'str' && arguments[2] === 2.1)
+ return true;
+ }
+ return foo(10,'sss',1);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2-s.js b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2-s.js
new file mode 100644
index 000000000..58143f841
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-10-c-ii-2-s.js
+ * @description arguments[i] doesn't map to actual parameters in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ function foo(a,b,c)
+ {
+ 'use strict';
+ arguments[0] = 1; arguments[1] = 'str'; arguments[2] = 2.1;
+ return 10 === a && 'sss' === b && 1 === c;
+ }
+ return foo(10,'sss',1);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2.js b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2.js
new file mode 100644
index 000000000..5891dfe3b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-10-c-ii-2.js
+ * @description arguments[i] map to actual parameter
+ */
+
+
+function testcase() {
+
+ function foo(a,b,c)
+ {
+ arguments[0] = 1; arguments[1] = 'str'; arguments[2] = 2.1;
+ if(1 === a && 'str' === b && 2.1 === c)
+ return true;
+ }
+ return foo(10,'sss',1);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-11-b-1.js b/js/src/tests/test262/ch10/10.6/10.6-11-b-1.js
new file mode 100644
index 000000000..bcf937d63
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-11-b-1.js
@@ -0,0 +1,54 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-11-b-1.js
+ * @description Arguments Object has index property '0' as its own property, it shoulde be writable, enumerable, configurable and does not invoke the setter defined on Object.prototype[0] (Step 11.b)
+ */
+
+
+function testcase() {
+ try {
+ var data = "data";
+ var getFunc = function () {
+ return data;
+ };
+
+ var setFunc = function (value) {
+ data = value;
+ };
+
+ Object.defineProperty(Object.prototype, "0", {
+ get: getFunc,
+ set: setFunc,
+ configurable: true
+ });
+
+ var argObj = (function () { return arguments })(1);
+
+ var verifyValue = false;
+ verifyValue = (argObj[0] === 1);
+
+ var verifyEnumerable = false;
+ for (var p in argObj) {
+ if (p === "0" && argObj.hasOwnProperty("0")) {
+ verifyEnumerable = true;
+ }
+ }
+
+ var verifyWritable = false;
+ argObj[0] = 1001;
+ verifyWritable = (argObj[0] === 1001);
+
+ var verifyConfigurable = false;
+ delete argObj[0];
+ verifyConfigurable = argObj.hasOwnProperty("0");
+
+ return verifyValue && verifyWritable && verifyEnumerable && !verifyConfigurable && data === "data";
+ } finally {
+ delete Object.prototype[0];
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-12-1.js b/js/src/tests/test262/ch10/10.6/10.6-12-1.js
new file mode 100644
index 000000000..12746eb1e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-12-1.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-12-1.js
+ * @description Accessing callee property of Arguments object is allowed
+ */
+
+
+function testcase() {
+ try
+ {
+ arguments.callee;
+ return true;
+ }
+ catch (e) {
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-12-2.js b/js/src/tests/test262/ch10/10.6/10.6-12-2.js
new file mode 100644
index 000000000..11a1793f4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-12-2.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-12-2.js
+ * @description arguments.callee has correct attributes
+ */
+
+
+function testcase() {
+
+ var desc = Object.getOwnPropertyDescriptor(arguments,"callee");
+ if(desc.configurable === true &&
+ desc.enumerable === false &&
+ desc.writable === true &&
+ desc.hasOwnProperty('get') == false &&
+ desc.hasOwnProperty('put') == false)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-1.js b/js/src/tests/test262/ch10/10.6/10.6-13-1.js
new file mode 100644
index 000000000..d871a9ccb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-1.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-1.js
+ * @description Accessing caller property of Arguments object is allowed
+ */
+
+
+function testcase() {
+ try
+ {
+ arguments.caller;
+ return true;
+ }
+ catch (e) {
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-a-1.js b/js/src/tests/test262/ch10/10.6/10.6-13-a-1.js
new file mode 100644
index 000000000..a7b3f2ee6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-a-1.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-a-1.js
+ * @description In non-strict mode, arguments object should have its own 'callee' property defined (Step 13.a)
+ */
+
+
+function testcase() {
+ try {
+ Object.defineProperty(Object.prototype, "callee", {
+ value: 1,
+ writable: false,
+ configurable: true
+ });
+
+ var argObj = (function () { return arguments })();
+
+ var verifyValue = false;
+ verifyValue = typeof argObj.callee === "function";
+
+ var verifyWritable = false;
+ argObj.callee = 1001;
+ verifyWritable = (argObj.callee === 1001);
+
+ var verifyEnumerable = false;
+ for (var p in argObj) {
+ if (p === "callee" && argObj.hasOwnProperty("callee")) {
+ verifyEnumerable = true;
+ }
+ }
+
+ var verifyConfigurable = false;
+ delete argObj.callee;
+ verifyConfigurable = argObj.hasOwnProperty("callee");
+
+ return verifyValue && verifyWritable && !verifyEnumerable && !verifyConfigurable;
+ } finally {
+ delete Object.prototype.callee;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-a-2.js b/js/src/tests/test262/ch10/10.6/10.6-13-a-2.js
new file mode 100644
index 000000000..b68171258
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-a-2.js
@@ -0,0 +1,35 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-a-2.js
+ * @description A direct call to arguments.callee.caller should work
+ */
+
+
+function testcase() {
+ var called = false;
+
+ function test1(flag) {
+ if (flag!==true) {
+ test2();
+ } else {
+ called = true;
+ }
+ }
+
+ function test2() {
+ if(arguments.callee.caller===undefined) {
+ called=true; // Extension not supported - fake it
+ } else {
+ arguments.callee.caller(true);
+ }
+ }
+
+ test1();
+ return called;
+}
+
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-a-3.js b/js/src/tests/test262/ch10/10.6/10.6-13-a-3.js
new file mode 100644
index 000000000..ddd03a68c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-a-3.js
@@ -0,0 +1,36 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-a-3.js
+ * @description An indirect call to arguments.callee.caller should work
+ */
+
+
+function testcase() {
+ var called = false;
+
+ function test1(flag) {
+ if (flag!==true) {
+ test2();
+ } else {
+ called = true;
+ }
+ }
+
+ function test2() {
+ if (arguments.callee.caller===undefined) {
+ called = true; //Extension not supported - fake it
+ } else {
+ var explicit = arguments.callee.caller;
+ explicit(true);
+ }
+ }
+
+ test1();
+ return called;
+}
+
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-b-1-s.js b/js/src/tests/test262/ch10/10.6/10.6-13-b-1-s.js
new file mode 100644
index 000000000..d44b475af
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-b-1-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-b-1-s.js
+ * @description Accessing caller property of Arguments object throws TypeError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+ try
+ {
+ arguments.caller;
+ }
+ catch (e) {
+ if(e instanceof TypeError)
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-b-2-s.js b/js/src/tests/test262/ch10/10.6/10.6-13-b-2-s.js
new file mode 100644
index 000000000..0f1b2b764
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-b-2-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-b-2-s.js
+ * @description arguments.caller exists in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ 'use strict';
+ var desc = Object.getOwnPropertyDescriptor(arguments,"caller");
+ return desc!== undefined;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-b-3-s.js b/js/src/tests/test262/ch10/10.6/10.6-13-b-3-s.js
new file mode 100644
index 000000000..d85e084f1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-b-3-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-b-3-s.js
+ * @description arguments.caller is non-configurable in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ 'use strict';
+ var desc = Object.getOwnPropertyDescriptor(arguments,"caller");
+
+ return (desc.configurable === false &&
+ desc.enumerable === false &&
+ desc.hasOwnProperty('value') == false &&
+ desc.hasOwnProperty('writable') == false &&
+ desc.hasOwnProperty('get') == true &&
+ desc.hasOwnProperty('set') == true);
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-c-1-s.js b/js/src/tests/test262/ch10/10.6/10.6-13-c-1-s.js
new file mode 100644
index 000000000..f17a9b37b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-c-1-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-c-1-s.js
+ * @description Accessing callee property of Arguments object throws TypeError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+ try
+ {
+ arguments.callee;
+ return false;
+ }
+ catch (e) {
+ return (e instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-c-2-s.js b/js/src/tests/test262/ch10/10.6/10.6-13-c-2-s.js
new file mode 100644
index 000000000..e08e77003
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-c-2-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-c-2-s.js
+ * @description arguments.callee is exists in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ 'use strict';
+ var desc = Object.getOwnPropertyDescriptor(arguments,"callee");
+ return desc !== undefined;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-c-3-s.js b/js/src/tests/test262/ch10/10.6/10.6-13-c-3-s.js
new file mode 100644
index 000000000..8122932bd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-c-3-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-c-3-s.js
+ * @description arguments.callee is non-configurable in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ 'use strict';
+ var desc = Object.getOwnPropertyDescriptor(arguments,"callee");
+ return (desc.configurable === false &&
+ desc.enumerable === false &&
+ desc.hasOwnProperty('value') == false &&
+ desc.hasOwnProperty('writable') == false &&
+ desc.hasOwnProperty('get') == true &&
+ desc.hasOwnProperty('set') == true);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-14-1-s.js b/js/src/tests/test262/ch10/10.6/10.6-14-1-s.js
new file mode 100644
index 000000000..aebc6fa1c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-14-1-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-14-1-s.js
+ * @description Strict Mode - 'callee' exists and 'caller' exists under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var argObj = function () {
+ return arguments;
+ } ();
+ return argObj.hasOwnProperty("callee") && argObj.hasOwnProperty("caller");
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-14-b-1-s.js b/js/src/tests/test262/ch10/10.6/10.6-14-b-1-s.js
new file mode 100644
index 000000000..51cbfff4d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-14-b-1-s.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-14-b-1-s.js
+ * @description Strict Mode - [[Enumerable]] attribute value in 'caller' is false under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var argObj = function () {
+ return arguments;
+ } ();
+
+ var verifyEnumerable = false;
+ for (var _10_6_14_b_1 in argObj) {
+ if (argObj.hasOwnProperty(_10_6_14_b_1) && _10_6_14_b_1 === "caller") {
+ verifyEnumerable = true;
+ }
+ }
+ return !verifyEnumerable && argObj.hasOwnProperty("caller");
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-14-b-4-s.js b/js/src/tests/test262/ch10/10.6/10.6-14-b-4-s.js
new file mode 100644
index 000000000..748c630a9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-14-b-4-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-14-b-4-s.js
+ * @description Strict Mode - TypeError is thrown when accessing the [[Set]] attribute in 'caller' under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var argObj = function () {
+ return arguments;
+ } ();
+
+ try {
+ argObj.caller = {};
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-14-c-1-s.js b/js/src/tests/test262/ch10/10.6/10.6-14-c-1-s.js
new file mode 100644
index 000000000..cade0a537
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-14-c-1-s.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-14-c-1-s.js
+ * @description Strict Mode - [[Enumerable]] attribute value in 'callee' is false under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var argObj = function () {
+ return arguments;
+ } ();
+
+ var verifyEnumerable = false;
+ for (var _10_6_14_c_1 in argObj) {
+ if (argObj.hasOwnProperty(_10_6_14_c_1) && _10_6_14_c_1 === "callee") {
+ verifyEnumerable = true;
+ }
+ }
+ return !verifyEnumerable && argObj.hasOwnProperty("callee");
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-14-c-4-s.js b/js/src/tests/test262/ch10/10.6/10.6-14-c-4-s.js
new file mode 100644
index 000000000..1238570c4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-14-c-4-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-14-c-4-s.js
+ * @description Strict Mode - TypeError is thrown when accessing the [[Set]] attribute in 'callee' under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var argObj = function () {
+ return arguments;
+ } ();
+
+ try {
+ argObj.callee = {};
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-1gs.js b/js/src/tests/test262/ch10/10.6/10.6-1gs.js
new file mode 100644
index 000000000..f77fd3c57
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-1gs.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.6/10.6-1gs.js
+ * @description Strict Mode - arguments.callee cannot be accessed in a strict function, but does not throw an early error
+ * @onlyStrict
+ */
+
+"use strict";
+function f_10_6_1_gs(){
+ return arguments.callee;
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/10.6-2gs.js b/js/src/tests/test262/ch10/10.6/10.6-2gs.js
new file mode 100644
index 000000000..e13cc02f5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-2gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.6/10.6-2gs.js
+ * @description Strict Mode - arguments.callee cannot be accessed in a strict function
+ * @onlyStrict
+ * @negative .
+ */
+
+"use strict";
+function f_10_6_1_gs(){
+ return arguments.callee;
+}
+f_10_6_1_gs();
+
diff --git a/js/src/tests/test262/ch10/10.6/10.6-5-1.js b/js/src/tests/test262/ch10/10.6/10.6-5-1.js
new file mode 100644
index 000000000..f058239fe
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-5-1.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-5-1.js
+ * @description [[Prototype]] property of Arguments is set to Object prototype object
+ */
+
+
+function testcase() {
+ if(Object.getPrototypeOf(arguments) === Object.getPrototypeOf({}))
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-6-1.js b/js/src/tests/test262/ch10/10.6/10.6-6-1.js
new file mode 100644
index 000000000..d0ec15e27
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-6-1.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-6-1.js
+ * @description 'length property of arguments object exists
+ */
+
+
+function testcase() {
+
+ var desc = Object.getOwnPropertyDescriptor(arguments,"length");
+ return desc !== undefined
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-6-2.js b/js/src/tests/test262/ch10/10.6/10.6-6-2.js
new file mode 100644
index 000000000..afad35fd0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-6-2.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-6-2.js
+ * @description 'length' property of arguments object has correct attributes
+ */
+
+
+function testcase() {
+
+ var desc = Object.getOwnPropertyDescriptor(arguments,"length");
+ if(desc.configurable === true &&
+ desc.enumerable === false &&
+ desc.writable === true )
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-6-3.js b/js/src/tests/test262/ch10/10.6/10.6-6-3.js
new file mode 100644
index 000000000..e7838e8a4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-6-3.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-6-3.js
+ * @description 'length' property of arguments object for 0 argument function exists
+ */
+
+
+function testcase() {
+ var arguments= undefined;
+ return (function () {return arguments.length !== undefined})();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-6-4.js b/js/src/tests/test262/ch10/10.6/10.6-6-4.js
new file mode 100644
index 000000000..6a3a77b23
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-6-4.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-6-4.js
+ * @description 'length' property of arguments object for 0 argument function call is 0 even with formal parameters
+ */
+
+
+function testcase() {
+ var arguments= undefined;
+ return (function (a,b,c) {return arguments.length === 0})();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-7-1.js b/js/src/tests/test262/ch10/10.6/10.6-7-1.js
new file mode 100644
index 000000000..30fd4f373
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-7-1.js
@@ -0,0 +1,53 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-7-1.js
+ * @description Arguments Object has length as its own property and does not invoke the setter defined on Object.prototype.length (Step 7)
+ */
+
+
+function testcase() {
+ try {
+ var data = "data";
+ var getFunc = function () {
+ return 12;
+ };
+
+ var setFunc = function (value) {
+ data = value;
+ };
+
+ Object.defineProperty(Object.prototype, "length", {
+ get: getFunc,
+ set: setFunc,
+ configurable: true
+ });
+
+ var verifyValue = false;
+ var argObj = (function () { return arguments })();
+ verifyValue = (argObj.length === 0);
+
+ var verifyWritable = false;
+ argObj.length = 1001;
+ verifyWritable = (argObj.length === 1001);
+
+ var verifyEnumerable = false;
+ for (var p in argObj) {
+ if (p === "length") {
+ verifyEnumerable = true;
+ }
+ }
+
+ var verifyConfigurable = false;
+ delete argObj.length;
+ verifyConfigurable = argObj.hasOwnProperty("length");
+
+ return verifyValue && verifyWritable && !verifyEnumerable && !verifyConfigurable && data === "data";
+ } finally {
+ delete Object.prototype.length;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A1.js b/js/src/tests/test262/ch10/10.6/S10.6_A1.js
new file mode 100644
index 000000000..89df9c4dd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * When control enters an execution context for function code,
+ * an arguments object is created and initialised
+ *
+ * @path ch10/10.6/S10.6_A1.js
+ * @description Executing function which uses arguments object
+ */
+
+//CHECK#1
+function f1(){
+ return arguments;
+}
+
+try{
+ var x = f1();
+}
+catch(e){
+ $ERROR("#1: arguments doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ return arguments;
+}
+
+try{
+ var x = f2();
+}
+catch(e){
+ $ERROR("#2: arguments doesn't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A2.js b/js/src/tests/test262/ch10/10.6/S10.6_A2.js
new file mode 100644
index 000000000..18698be00
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A2.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The value of the internal [[Prototype]] property of the
+ * created arguments object is the original Object prototype object, the one
+ * that is the initial value of Object.prototype
+ *
+ * @path ch10/10.6/S10.6_A2.js
+ * @description Checking arguments.constructor.prototype===Object.prototype
+ */
+
+//CHECK#1
+function f1(){
+ return arguments.constructor.prototype;
+}
+try{
+ if(f1() !== Object.prototype){
+ $ERROR('#1: arguments.constructor.prototype === Object.prototype');
+ }
+}
+catch(e){
+ $ERROR("#1: arguments doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){return arguments.constructor.prototype;};
+try{
+ if(f2() !== Object.prototype){
+ $ERROR('#2: arguments.constructor.prototype === Object.prototype');
+ }
+}
+catch(e){
+ $ERROR("#2: arguments doesn't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A3_T1.js b/js/src/tests/test262/ch10/10.6/S10.6_A3_T1.js
new file mode 100644
index 000000000..234d6ad1a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A3_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * A property is created with name callee with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A3_T1.js
+ * @description Checking existence of arguments.callee property
+ */
+
+//CHECK#1
+function f1(){
+ return arguments.hasOwnProperty("callee");
+}
+try{
+ if(f1() !== true){
+ $ERROR("#1: arguments object doesn't contains property 'callee'");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){return arguments.hasOwnProperty("callee");};
+try{
+ if(f2() !== true){
+ $ERROR("#2: arguments object doesn't contains property 'callee'");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object doesn't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A3_T2.js b/js/src/tests/test262/ch10/10.6/S10.6_A3_T2.js
new file mode 100644
index 000000000..327e5cf36
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A3_T2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * A property is created with name callee with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A3_T2.js
+ * @description Checking if enumerating the arguments.callee property fails
+ */
+
+//CHECK#1
+function f1(){
+ for(var x in arguments){
+ if (x === "callee"){
+ return false;
+ }
+ }
+ return true;
+}
+
+try{
+ if(!f1()){
+ $ERROR("#1: A property callee don't have attribute { DontEnum }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ for(var x in arguments){
+ if (x === "callee"){
+ return false;
+ }
+ }
+ return true;
+}
+
+try{
+ if(!f2()){
+ $ERROR("#2: A property callee don't have attribute { DontEnum }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A3_T3.js b/js/src/tests/test262/ch10/10.6/S10.6_A3_T3.js
new file mode 100644
index 000000000..4b2626570
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A3_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * A property is created with name callee with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A3_T3.js
+ * @description Checking if deleting arguments.callee property fails
+ * @noStrict
+ */
+
+//CHECK#1
+function f1(){
+ return (delete arguments.callee);
+}
+
+try{
+ if(!f1()){
+ $ERROR("#1: A property callee have attribute { DontDelete }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ return (delete arguments.callee);
+}
+
+try{
+ if(!f2()){
+ $ERROR("#2: A property callee have attribute { DontDelete }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A3_T4.js b/js/src/tests/test262/ch10/10.6/S10.6_A3_T4.js
new file mode 100644
index 000000000..c83983507
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A3_T4.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * A property is created with name callee with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A3_T4.js
+ * @description Overriding arguments.callee property
+ * @noStrict
+ */
+
+var str = "something different";
+//CHECK#1
+function f1(){
+ arguments.callee = str;
+ return arguments;
+}
+
+try{
+ if(f1().callee !== str){
+ $ERROR("#1: A property callee have attribute { ReadOnly }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ arguments.callee = str;
+ return arguments;
+ }
+try{
+ if(f2().callee !== str){
+ $ERROR("#2: A property callee have attribute { ReadOnly }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A4.js b/js/src/tests/test262/ch10/10.6/S10.6_A4.js
new file mode 100644
index 000000000..b49902a45
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A4.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The initial value of the created property callee is the
+ * Function object being executed
+ *
+ * @path ch10/10.6/S10.6_A4.js
+ * @description Checking that arguments.callee === function object
+ * @noStrict
+ */
+
+//CHECK#1
+function f1(){
+ return arguments.callee;
+}
+
+try{
+ if(f1 !== f1()){
+ $ERROR('#1: arguments.callee === f1');
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){return arguments.callee;};
+
+try{
+ if(f2 !== f2()){
+ $ERROR('#2: arguments.callee === f2');
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object doesn't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A5_T1.js b/js/src/tests/test262/ch10/10.6/S10.6_A5_T1.js
new file mode 100644
index 000000000..a76e58d47
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A5_T1.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * A property is created with name length with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A5_T1.js
+ * @description Checking existence of arguments.length property
+ */
+
+//CHECK#1
+function f1(){
+ return arguments.hasOwnProperty("length");
+}
+try{
+ if(f1() !== true){
+ $ERROR("#1: arguments object doesn't contains property 'length'");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){return arguments.hasOwnProperty("length");};
+try{
+ if(f2() !== true){
+ $ERROR("#2: arguments object doesn't contains property 'length'");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object doesn't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A5_T2.js b/js/src/tests/test262/ch10/10.6/S10.6_A5_T2.js
new file mode 100644
index 000000000..a0f4df7a9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A5_T2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * A property is created with name length with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A5_T2.js
+ * @description Checking if enumerating the arguments.length property fails
+ */
+
+//CHECK#1
+function f1(){
+ for(var x in arguments){
+ if (x === "length"){
+ return false;
+ }
+ }
+ return true;
+}
+
+try{
+ if(!f1()){
+ $ERROR("#1: A property length don't have attribute { DontEnum }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ for(var x in arguments){
+ if (x === "length"){
+ return false;
+ }
+ }
+ return true;
+}
+
+try{
+ if(!f2()){
+ $ERROR("#2: A property length don't have attribute { DontEnum }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A5_T3.js b/js/src/tests/test262/ch10/10.6/S10.6_A5_T3.js
new file mode 100644
index 000000000..c8187fac8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A5_T3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * A property is created with name length with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A5_T3.js
+ * @description Checking if deleting arguments.length property fails
+ */
+
+//CHECK#1
+function f1(){
+ return (delete arguments.length);
+}
+
+try{
+ if(!f1()){
+ $ERROR("#1: A property length have attribute { DontDelete }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ return (delete arguments.length);
+}
+
+try{
+ if(!f2()){
+ $ERROR("#2: A property length have attribute { DontDelete }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A5_T4.js b/js/src/tests/test262/ch10/10.6/S10.6_A5_T4.js
new file mode 100644
index 000000000..7178bf424
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A5_T4.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * A property is created with name length with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A5_T4.js
+ * @description Overriding arguments.length property
+ */
+
+var str = "something different";
+//CHECK#1
+function f1(){
+ arguments.length = str;
+ return arguments;
+}
+
+try{
+ if(f1().length !== str){
+ $ERROR("#1: A property length have attribute { ReadOnly }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ arguments.length = str;
+ return arguments;
+ };
+try{
+ if(f2().length !== str){
+ $ERROR("#2: A property length have attribute { ReadOnly }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A6.js b/js/src/tests/test262/ch10/10.6/S10.6_A6.js
new file mode 100644
index 000000000..3f1d0d1c1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A6.js
@@ -0,0 +1,67 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The initial value of the created property length is the number
+ * of actual parameter values supplied by the caller
+ *
+ * @path ch10/10.6/S10.6_A6.js
+ * @description Create function, that returned arguments.length
+ */
+
+function f1(){
+ return arguments.length;
+}
+
+//CHECK#1
+if(!(f1() === 0)){
+ $ERROR('#1: argument.length === 0');
+}
+
+//CHECK#2
+if(!(f1(0) === 1)){
+ $ERROR('#2: argument.length === 1');
+}
+
+//CHECK#3
+if(!(f1(0, 1) === 2)){
+ $ERROR('#3: argument.length === 2');
+}
+
+//CHECK#4
+if(!(f1(0, 1, 2) === 3)){
+ $ERROR('#4: argument.length === 3');
+}
+
+//CHECK#5
+if(!(f1(0, 1, 2, 3) === 4)){
+ $ERROR('#5: argument.length === 4');
+}
+
+var f2 = function(){return arguments.length;};
+
+//CHECK#6
+if(!(f2() === 0)){
+ $ERROR('#6: argument.length === 0');
+}
+
+//CHECK#7
+if(!(f2(0) === 1)){
+ $ERROR('#7: argument.length === 1');
+}
+
+//CHECK#8
+if(!(f2(0, 1) === 2)){
+ $ERROR('#8: argument.length === 2');
+}
+
+//CHECK#9
+if(!(f2(0, 1, 2) === 3)){
+ $ERROR('#9: argument.length === 3');
+}
+
+//CHECK#10
+if(!(f2(0, 1, 2, 3) === 4)){
+ $ERROR('#10: argument.length === 4');
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A7.js b/js/src/tests/test262/ch10/10.6/S10.6_A7.js
new file mode 100644
index 000000000..f013ba013
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Get arguments of function
+ *
+ * @path ch10/10.6/S10.6_A7.js
+ * @description Use property arguments
+ */
+
+function f1() {
+ return arguments;
+}
+
+//CHECK#1-5
+for(var i = 1; i < 5; i++){
+if (f1(1,2,3,4,5)[i] !== (i+1))
+ $ERROR("#"+i+": Returning function's arguments work wrong, f1(1,2,3,4,5)["+i+"] !== "+(i+1));
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/browser.js b/js/src/tests/test262/ch10/10.6/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/browser.js
diff --git a/js/src/tests/test262/ch10/10.6/shell.js b/js/src/tests/test262/ch10/10.6/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/shell.js
diff --git a/js/src/tests/test262/ch10/browser.js b/js/src/tests/test262/ch10/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/browser.js
diff --git a/js/src/tests/test262/ch10/shell.js b/js/src/tests/test262/ch10/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/shell.js