{"ScriptPreparationCode":"function toStringTypeA() {\r\n return \u0027{ a : \u0027 \u002B this.a \u002B \u0027, b : \u0027 \u002B this.b \u002B \u0027, c : \u0027 \u002B this.c \u002B \u0027 }\u0027;\r\n}\r\n\r\nfunction toStringTypeB(a,b,c) {\r\n return \u0027{ a : \u0027 \u002B a \u002B \u0027 ,b : \u0027 \u002B b \u002B \u0027 ,c: \u0027 \u002B c \u002B \u0027 }\u0027;\r\n}\r\n\r\nfunction toStringTypeC({a,b,c})\r\n{\r\n return \u0027{ a : \u0027 \u002B a \u002B \u0027 ,b : \u0027 \u002B b \u002B \u0027 ,c: \u0027 \u002B c \u002B \u0027 }\u0027;\r\n}\r\n\r\nlet o1 = new Object();\r\no1,a = 1;\r\no1,b = 2;\r\no1.c = 3;\r\nlet o2 = Object.create(null);\r\no2.a = 1;\r\no2.b = 2;\r\no2.c = 3;\r\n\r\nclass Test\r\n{\r\n constructor(a,b,c)\r\n {\r\n this.a = a;\r\n this.b = b;\r\n this.c = c;\r\n }\r\n}\r\n\r\nTest.prototype.toString = toStringTypeA;\r\n\r\nlet t = new Test(1,2,3);\r\n\r\nconst N = 1000000;\r\n\r\n","TestCases":[{"Name":"Object(prototype=Object):TypeA","Code":"for(i=0; i\u003CN; i\u002B\u002B) var _ = toStringTypeA.call(o1);","IsDeferred":false},{"Name":"Object(prototype=Object):TypeB","Code":"for(i=0; i\u003CN; i\u002B\u002B) var _ = toStringTypeB(o1.a,o1.b,o1.c);","IsDeferred":false},{"Name":"Object(prototype=Object):TypeC","Code":"for(i=0; i\u003CN; i\u002B\u002B) var _ = toStringTypeB({...o1});","IsDeferred":false},{"Name":"Object(prototype=null):TypeA","Code":"for(i=0; i\u003CN; i\u002B\u002B) var _ = toStringTypeA.call(o2);","IsDeferred":false},{"Name":"Object(prototype=null):TypeB","Code":"for(i=0; i\u003CN; i\u002B\u002B) var _ = toStringTypeB(o2.a,o2.b,o2.c);","IsDeferred":false},{"Name":"Object(prototype=null):TypeC","Code":"for(i=0; i\u003CN; i\u002B\u002B) var _ = toStringTypeB({...o2});","IsDeferred":false},{"Name":"Class","Code":"for(i=0; i\u003CN; i\u002B\u002B) t.toString()","IsDeferred":false}]}