| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- function Ctor()
- {
- }
- Ctor.prototype.blah = function()
- {
- for (var i = 0; i < 10; i++)
- {
- eval("this.blahnum= 1000; ");
- }
- }
- var a = new Ctor();
- a.blah();
- WScript.Echo(a.blahnum);
- var o = {
- f: function(a,b,c) {
- WScript.Echo(a,b,c);
- },
- g: function() {
- for(var i = 0; i < 1; ++i)
- this.f.apply(this, arguments);
- }
- };
- o.g(1,2,3);
- function f() {
- for (var i = 0; i < 1; i++) {
- var g_args = g.arguments;
- WScript.Echo(g_args === f.caller.arguments);
- WScript.Echo(g_args.callee === f.caller);
- }
- }
- function g() {
- for (var i = 0; i < 1; i++) {
- f();
- }
- }
- g('hi');
- function test()
- {
- with({x:"x"})
- {
- while((function(){ return x; })())
- {
- WScript.Echo(x);
- break;
- }
- }
- }
- test();
- function retval()
- {
- for (var i = 0; i < 1; i++)
- {
- if (i > 1)
- {
- return i;
- }
- }
- return 0;
- }
- retval();
- function testForInWithPrototype()
- {
- function LoopResultsOfObject(o, methodName)
- {
- WScript.Echo(methodName);
- var method = eval("Object." + methodName);
- var r = method(o);
- WScript.Echo("Length: " + r.length);
- for (var i in r) {
- WScript.Echo(i + " => " + r[i]);
- }
- }
- var protoObject = {}
- protoObject.prop1 = "p1";
- function MyClass()
- {
- this.prop2 = "p2";
- }
- MyClass.prototype = protoObject;
- var instance = new MyClass;
- LoopResultsOfObject(instance, "getOwnPropertyNames");
- LoopResultsOfObject(instance, "keys");
- }
- testForInWithPrototype();
- // Test loop that shouldn't execute and has a side-effect in the loop body
- for (var z = 0; z < 0; ++z) {
- 1 in 2;
- }
- try {
- eval('for (var a, b in z) {}');
- }
- catch(e) {
- WScript.Echo(e.message);
- }
- try {
- Function("for (var a, b in z) {}")();
- }
- catch(e) {
- WScript.Echo(e.message);
- }
- try {
- eval('for (a, b in z) {}');
- }
- catch(e) {
- WScript.Echo(e.message);
- }
- try {
- Function("for (a, b in z) {}")();
- }
- catch(e) {
- WScript.Echo(e.message);
- }
- // Test loop that has bailout in the loop header and must have vars initialized
- // (or bailout may try to box garbage values).
- function test_bail(){
- var obj0 = {};
- var obj1 = {};
- var func0 = function(){
- }
- var func1 = function(p0,p1,p2){
- var __loopvar2 = 0;
- for(; __loopvar2 < 3 && p2 < (1); __loopvar2++, 14) {
- var __loopvar3 = 0;
- do {
- __loopvar3++;
- obj0.prop0 <<=(ary[(8)] - ((obj2.prop3 ^= (++ obj1.prop1)) ? 1701746938.1 : this.prop2));
- var obj4 = 1;
- } while((1) && __loopvar3 < 3)
- }
- var obj4 = func0(2147483647, (new RegExp("xyz")), 1.1, 1, (7 ? -970342005 : 1));
- }
- var func2 = function(){
- if(ui8[1073741824]) {
- -2;
- var __loopvar3 = 0;
- for(var strvar0 in obj0 ) {
- if(__loopvar3++ > 3) break;
- var fPolyProp = function (o) {
- if (o!==undefined) {
- WScript.Echo(o.prop0 + ' ' + o.prop1 + ' ' + o.prop2);
- }
- }
- fPolyProp(litObj0); fPolyProp(litObj1); fPolyProp(litObj2);
- obj2.prop5 = 2147483647;
- }
- }
- for(var __loopvar2 = 0; __loopvar2 < 3; __loopvar2++) {
- }
- }
- obj0.method0 = func2;
- var ui8 = new Uint8Array(256);
- var __loopvar1 = 0;
- do {
- __loopvar1++;
- (function(p0, p1, p2, p3){
- var obj5 = obj0;
- obj4 = (new obj5.method0());
- })();
- } while((1) && __loopvar1 < 3)
- if(func1(1, 1)) {
- }
- };
- // generate profile
- test_bail();
- // run JITted code
- test_bail();
- WScript.Echo('done')
|