Changeset 206268 in webkit
- Timestamp:
- Sep 22, 2016 12:11:23 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChangeLog
r206171 r206268 1 2016-09-22 Joseph Pecoraro <pecoraro@apple.com> 2 3 test262: Function length should be number of parameters before parameters with default values 4 https://bugs.webkit.org/show_bug.cgi?id=162377 5 6 Reviewed by Saam Barati. 7 8 * stress/es6-default-parameters.js: 9 Add our own tests for function lengths with default parameters. 10 11 * test262.yaml: 12 We now pass all dflt-length tests. 13 1 14 2016-09-20 Benjamin Poulain <bpoulain@apple.com> 2 15 -
trunk/JSTests/stress/es6-default-parameters.js
r205969 r206268 221 221 } 222 222 })(); 223 224 // Length 225 226 function named1(a){}; 227 function named2(a=1){}; 228 function named3(a,b){}; 229 function named4(a,b=1){}; 230 function named5(a=1,b=1){}; 231 function named6(a,b,c){}; 232 function named7(a=1,b,c){}; 233 function named8(a,b=1,c){}; 234 function named9(a,b,c=1){}; 235 function named10(a,...b){}; 236 function named11(a=1,...b){}; 237 function named12(a=10,b,c=20,...r){}; 238 239 assert( named1.length === 1 ); 240 assert( named2.length === 0 ); 241 assert( named3.length === 2 ); 242 assert( named4.length === 1 ); 243 assert( named5.length === 0 ); 244 assert( named6.length === 3 ); 245 assert( named7.length === 0 ); 246 assert( named8.length === 1 ); 247 assert( named9.length === 2 ); 248 assert( named10.length === 1 ); 249 assert( named11.length === 0 ); 250 assert( named12.length === 0 ); 251 252 assert( (function(a){}).length === 1 ); 253 assert( (function(a=1){}).length === 0 ); 254 assert( (function(a,b){}).length === 2 ); 255 assert( (function(a,b=1){}).length === 1 ); 256 assert( (function(a=1,b=1){}).length === 0 ); 257 assert( (function(a,b,c){}).length === 3 ); 258 assert( (function(a=1,b,c){}).length === 0 ); 259 assert( (function(a,b=1,c){}).length === 1 ); 260 assert( (function(a,b,c=1){}).length === 2 ); 261 assert( (function(a,...b){}).length === 1 ); 262 assert( (function(a=1,...b){}).length === 0 ); 263 assert( (function(a=10,b,c=20,...r){}).length === 0 ); 264 265 assert( (function*(a){}).length === 1 ); 266 assert( (function*(a=1){}).length === 0 ); 267 assert( (function*(a,b){}).length === 2 ); 268 assert( (function*(a,b=1){}).length === 1 ); 269 assert( (function*(a=1,b=1){}).length === 0 ); 270 assert( (function*(a,b,c){}).length === 3 ); 271 assert( (function*(a=1,b,c){}).length === 0 ); 272 assert( (function*(a,b=1,c){}).length === 1 ); 273 assert( (function*(a,b,c=1){}).length === 2 ); 274 assert( (function*(a,...b){}).length === 1 ); 275 assert( (function*(a=1,...b){}).length === 0 ); 276 assert( (function*(a=10,b,c=20,...r){}).length === 0 ); 277 278 assert( ((a)=>{}).length === 1 ); 279 assert( ((a=1)=>{}).length === 0 ); 280 assert( ((a,b)=>{}).length === 2 ); 281 assert( ((a,b=1)=>{}).length === 1 ); 282 assert( ((a=1,b=1)=>{}).length === 0 ); 283 assert( ((a,b,c)=>{}).length === 3 ); 284 assert( ((a=1,b,c)=>{}).length === 0 ); 285 assert( ((a,b=1,c)=>{}).length === 1 ); 286 assert( ((a,b,c=1)=>{}).length === 2 ); 287 assert( ((a,...b)=>{}).length === 1 ); 288 assert( ((a=1,...b)=>{}).length === 0 ); 289 assert( ((a=10,b,c=20,...r)=>{}).length === 0 ); 290 291 assert( Object.getOwnPropertyDescriptor({set setter(a){}}, "setter").set.length === 1 ); 292 assert( Object.getOwnPropertyDescriptor({set setter(a=1){}}, "setter").set.length === 0 ); 293 294 assert( ({method(a){}}).method.length === 1 ); 295 assert( ({method(a=1){}}).method.length === 0 ); 296 assert( ({method(a,b){}}).method.length === 2 ); 297 assert( ({method(a,b=1){}}).method.length === 1 ); 298 assert( ({method(a=1,b=1){}}).method.length === 0 ); 299 assert( ({method(a,b,c){}}).method.length === 3 ); 300 assert( ({method(a=1,b,c){}}).method.length === 0 ); 301 assert( ({method(a,b=1,c){}}).method.length === 1 ); 302 assert( ({method(a,b,c=1){}}).method.length === 2 ); 303 assert( ({method(a,...b){}}).method.length === 1 ); 304 assert( ({method(a=1,...b){}}).method.length === 0 ); 305 assert( ({method(a=10,b,c=20,...r){}}).method.length === 0 ); 306 307 assert( ({*method(a){}}).method.length === 1 ); 308 assert( ({*method(a=1){}}).method.length === 0 ); 309 assert( ({*method(a,b){}}).method.length === 2 ); 310 assert( ({*method(a,b=1){}}).method.length === 1 ); 311 assert( ({*method(a=1,b=1){}}).method.length === 0 ); 312 assert( ({*method(a,b,c){}}).method.length === 3 ); 313 assert( ({*method(a=1,b,c){}}).method.length === 0 ); 314 assert( ({*method(a,b=1,c){}}).method.length === 1 ); 315 assert( ({*method(a,b,c=1){}}).method.length === 2 ); 316 assert( ({*method(a,...b){}}).method.length === 1 ); 317 assert( ({*method(a=1,...b){}}).method.length === 0 ); 318 assert( ({*method(a=10,b,c=20,...r){}}).method.length === 0 ); 319 320 assert( (class {static method(a){}}).method.length === 1 ); 321 assert( (class {static method(a=1){}}).method.length === 0 ); 322 assert( (class {static method(a,b){}}).method.length === 2 ); 323 assert( (class {static method(a,b=1){}}).method.length === 1 ); 324 assert( (class {static method(a=1,b=1){}}).method.length === 0 ); 325 assert( (class {static method(a,b,c){}}).method.length === 3 ); 326 assert( (class {static method(a=1,b,c){}}).method.length === 0 ); 327 assert( (class {static method(a,b=1,c){}}).method.length === 1 ); 328 assert( (class {static method(a,b,c=1){}}).method.length === 2 ); 329 assert( (class {static method(a,...b){}}).method.length === 1 ); 330 assert( (class {static method(a=1,...b){}}).method.length === 0 ); 331 assert( (class {static method(a=10,b,c=20,...r){}}).method.length === 0 ); 223 332 224 333 // TDZ errors. -
trunk/JSTests/test262.yaml
r206064 r206268 54001 54001 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 54002 54002 - path: test262/test/language/expressions/arrow-function/length-dflt.js 54003 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []54003 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 54004 54004 - path: test262/test/language/expressions/arrow-function/length-dflt.js 54005 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]54005 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 54006 54006 - path: test262/test/language/expressions/arrow-function/lexical-arguments.js 54007 54007 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [] … … 58853 58853 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 58854 58854 - path: test262/test/language/expressions/class/gen-method-length-dflt.js 58855 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []58855 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 58856 58856 - path: test262/test/language/expressions/class/gen-method-length-dflt.js 58857 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]58857 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 58858 58858 - path: test262/test/language/expressions/class/gen-method-param-dflt-yield.js 58859 58859 cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [] … … 58865 58865 cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 58866 58866 - path: test262/test/language/expressions/class/method-length-dflt.js 58867 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []58867 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 58868 58868 - path: test262/test/language/expressions/class/method-length-dflt.js 58869 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]58869 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 58870 58870 - path: test262/test/language/expressions/class/method-param-dflt-yield.js 58871 58871 cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [] … … 59101 59101 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 59102 59102 - path: test262/test/language/expressions/class/setter-length-dflt.js 59103 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []59103 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 59104 59104 - path: test262/test/language/expressions/class/setter-length-dflt.js 59105 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]59105 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 59106 59106 - path: test262/test/language/expressions/class/static-gen-method-param-dflt-yield.js 59107 59107 cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [] … … 59109 59109 cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 59110 59110 - path: test262/test/language/expressions/class/static-method-length-dflt.js 59111 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []59111 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 59112 59112 - path: test262/test/language/expressions/class/static-method-length-dflt.js 59113 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]59113 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 59114 59114 - path: test262/test/language/expressions/class/static-method-param-dflt-yield.js 59115 59115 cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [] … … 62149 62149 cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 62150 62150 - path: test262/test/language/expressions/function/length-dflt.js 62151 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []62151 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 62152 62152 - path: test262/test/language/expressions/function/length-dflt.js 62153 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]62153 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 62154 62154 - path: test262/test/language/expressions/function/name.js 62155 62155 cmd: runTest262 :fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] … … 62959 62959 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 62960 62960 - path: test262/test/language/expressions/generators/length-dflt.js 62961 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []62961 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 62962 62962 - path: test262/test/language/expressions/generators/length-dflt.js 62963 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]62963 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 62964 62964 - path: test262/test/language/expressions/generators/length-property-descriptor.js 62965 62965 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] … … 66475 66475 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 66476 66476 - path: test262/test/language/expressions/object/method-definition/generator-length-dflt.js 66477 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], []66477 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [] 66478 66478 - path: test262/test/language/expressions/object/method-definition/generator-length-dflt.js 66479 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [:strict]66479 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [:strict] 66480 66480 - path: test262/test/language/expressions/object/method-definition/generator-length.js 66481 66481 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [] … … 66563 66563 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js"], [] 66564 66564 - path: test262/test/language/expressions/object/method-definition/name-length-dflt.js 66565 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], []66565 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [] 66566 66566 - path: test262/test/language/expressions/object/method-definition/name-length-dflt.js 66567 cmd: runTest262 : fail, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [:strict]66567 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [:strict] 66568 66568 - path: test262/test/language/expressions/object/method-definition/name-length.js 66569 66569 cmd: runTest262 :normal, "NoException", ["../../../../../harness/assert.js", "../../../../../harness/sta.js", "../../../../../harness/propertyHelper.js"], [] … … 66877 66877 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 66878 66878 - path: test262/test/language/expressions/object/setter-length-dflt.js 66879 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []66879 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 66880 66880 - path: test262/test/language/expressions/object/setter-length-dflt.js 66881 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]66881 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 66882 66882 - path: test262/test/language/expressions/object/setter-prop-desc.js 66883 66883 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] … … 76123 76123 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 76124 76124 - path: test262/test/language/statements/class/gen-method-length-dflt.js 76125 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []76125 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 76126 76126 - path: test262/test/language/statements/class/gen-method-length-dflt.js 76127 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]76127 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 76128 76128 - path: test262/test/language/statements/class/gen-method-param-dflt-yield.js 76129 76129 cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [] … … 76135 76135 cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 76136 76136 - path: test262/test/language/statements/class/method-length-dflt.js 76137 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []76137 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 76138 76138 - path: test262/test/language/statements/class/method-length-dflt.js 76139 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]76139 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 76140 76140 - path: test262/test/language/statements/class/method-param-yield.js 76141 76141 cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [] … … 76395 76395 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 76396 76396 - path: test262/test/language/statements/class/setter-length-dflt.js 76397 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []76397 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 76398 76398 - path: test262/test/language/statements/class/setter-length-dflt.js 76399 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]76399 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 76400 76400 - path: test262/test/language/statements/class/static-gen-method-param-dflt-yield.js 76401 76401 cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [] … … 76407 76407 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 76408 76408 - path: test262/test/language/statements/class/static-method-length-dflt.js 76409 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []76409 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 76410 76410 - path: test262/test/language/statements/class/static-method-length-dflt.js 76411 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]76411 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 76412 76412 - path: test262/test/language/statements/class/static-method-non-configurable-err.js 76413 76413 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [] … … 83325 83325 cmd: runTest262 :normal, "SyntaxError", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 83326 83326 - path: test262/test/language/statements/function/length-dflt.js 83327 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []83327 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 83328 83328 - path: test262/test/language/statements/function/length-dflt.js 83329 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]83329 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 83330 83330 - path: test262/test/language/statements/function/name.js 83331 83331 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] … … 84127 84127 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js"], [:strict] 84128 84128 - path: test262/test/language/statements/generators/length-dflt.js 84129 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], []84129 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] 84130 84130 - path: test262/test/language/statements/generators/length-dflt.js 84131 cmd: runTest262 : fail, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict]84131 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [:strict] 84132 84132 - path: test262/test/language/statements/generators/length-property-descriptor.js 84133 84133 cmd: runTest262 :normal, "NoException", ["../../../../harness/assert.js", "../../../../harness/sta.js", "../../../../harness/propertyHelper.js"], [] -
trunk/Source/JavaScriptCore/ChangeLog
r206267 r206268 1 2016-09-22 Joseph Pecoraro <pecoraro@apple.com> 2 3 test262: Function length should be number of parameters before parameters with default values 4 https://bugs.webkit.org/show_bug.cgi?id=162377 5 6 Reviewed by Saam Barati. 7 8 https://tc39.github.io/ecma262/#sec-function-definitions-static-semantics-expectedargumentcount 9 10 > NOTE: The ExpectedArgumentCount of a FormalParameterList is the number of 11 > FormalParameters to the left of either the rest parameter or the first 12 > FormalParameter with an Initializer. A FormalParameter without an 13 > initializer is allowed after the first parameter with an initializer 14 > but such parameters are considered to be optional with undefined as 15 > their default value. 16 17 Alongside the parameterCount value, maintain a separate count, 18 functionLength, which will be the count before seeing a rest parameter 19 or parameter with a default value. This will be the function's length. 20 21 * bytecode/UnlinkedCodeBlock.h: 22 * bytecode/UnlinkedFunctionExecutable.cpp: 23 (JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable): 24 * bytecode/UnlinkedFunctionExecutable.h: 25 * parser/ASTBuilder.h: 26 (JSC::ASTBuilder::createFunctionMetadata): 27 * parser/Nodes.cpp: 28 (JSC::FunctionMetadataNode::FunctionMetadataNode): 29 * parser/Nodes.h: 30 * parser/Parser.cpp: 31 (JSC::Parser<LexerType>::isArrowFunctionParameters): 32 (JSC::Parser<LexerType>::parseGeneratorFunctionSourceElements): 33 (JSC::Parser<LexerType>::parseFormalParameters): 34 (JSC::Parser<LexerType>::parseFunctionBody): 35 (JSC::Parser<LexerType>::parseFunctionParameters): 36 (JSC::Parser<LexerType>::parseFunctionInfo): 37 * parser/Parser.h: 38 * parser/ParserFunctionInfo.h: 39 * parser/SourceProviderCacheItem.h: 40 (JSC::SourceProviderCacheItem::SourceProviderCacheItem): 41 * parser/SyntaxChecker.h: 42 (JSC::SyntaxChecker::createFunctionMetadata): 43 * runtime/Executable.h: 44 * runtime/JSFunction.cpp: 45 (JSC::JSFunction::createBuiltinFunction): 46 (JSC::JSFunction::reifyLength): 47 1 48 2016-09-22 Joseph Pecoraro <pecoraro@apple.com> 2 49 -
trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h
r206267 r206268 48 48 class BytecodeRewriter; 49 49 class Debugger; 50 class FunctionMetadataNode;51 50 class FunctionExecutable; 52 51 class ParserError; -
trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp
r204714 r206268 89 89 , m_typeProfilingEndOffset(node->startStartOffset() + node->source().length() - 1) 90 90 , m_parameterCount(node->parameterCount()) 91 , m_functionLength(node->functionLength()) 91 92 , m_features(0) 92 93 , m_isInStrictContext(node->isInStrictContext()) -
trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.h
r204714 r206268 78 78 const Identifier& inferredName() const { return m_inferredName; } 79 79 unsigned parameterCount() const { return m_parameterCount; }; 80 unsigned functionLength() const { return m_functionLength; } 80 81 SourceParseMode parseMode() const { return static_cast<SourceParseMode>(m_sourceParseMode); }; 81 82 … … 155 156 unsigned m_typeProfilingEndOffset; 156 157 unsigned m_parameterCount; 158 unsigned m_functionLength; 157 159 CodeFeatures m_features; 158 160 unsigned m_isInStrictContext : 1; -
trunk/Source/JavaScriptCore/parser/ASTBuilder.h
r204078 r206268 395 395 unsigned startColumn, unsigned endColumn, int functionKeywordStart, 396 396 int functionNameStart, int parametersStart, bool inStrictContext, 397 ConstructorKind constructorKind, SuperBinding superBinding, unsigned parameterCount, SourceParseMode mode, bool isArrowFunctionBodyExpression) 397 ConstructorKind constructorKind, SuperBinding superBinding, 398 unsigned parameterCount, unsigned functionLength, 399 SourceParseMode mode, bool isArrowFunctionBodyExpression) 398 400 { 399 401 return new (m_parserArena) FunctionMetadataNode( 400 402 m_parserArena, startLocation, endLocation, startColumn, endColumn, 401 403 functionKeywordStart, functionNameStart, parametersStart, 402 inStrictContext, constructorKind, superBinding, parameterCount, mode, isArrowFunctionBodyExpression); 404 inStrictContext, constructorKind, superBinding, 405 parameterCount, functionLength, mode, isArrowFunctionBodyExpression); 403 406 } 404 407 -
trunk/Source/JavaScriptCore/parser/Nodes.cpp
r204470 r206268 136 136 const JSTokenLocation& endLocation, unsigned startColumn, unsigned endColumn, 137 137 int functionKeywordStart, int functionNameStart, int parametersStart, bool isInStrictContext, 138 ConstructorKind constructorKind, SuperBinding superBinding, unsigned parameterCount, SourceParseMode mode, bool isArrowFunctionBodyExpression)138 ConstructorKind constructorKind, SuperBinding superBinding, unsigned parameterCount, unsigned functionLength, SourceParseMode mode, bool isArrowFunctionBodyExpression) 139 139 : Node(endLocation) 140 140 , m_startColumn(startColumn) … … 145 145 , m_startStartOffset(startLocation.startOffset) 146 146 , m_parameterCount(parameterCount) 147 , m_functionLength(functionLength) 147 148 , m_parseMode(mode) 148 149 , m_isInStrictContext(isInStrictContext) -
trunk/Source/JavaScriptCore/parser/Nodes.h
r206267 r206268 1860 1860 unsigned startColumn, unsigned endColumn, int functionKeywordStart, 1861 1861 int functionNameStart, int parametersStart, bool isInStrictContext, 1862 ConstructorKind, SuperBinding, unsigned, SourceParseMode, bool isArrowFunctionBodyExpression); 1862 ConstructorKind, SuperBinding, unsigned parameterCount, unsigned functionLength, 1863 SourceParseMode, bool isArrowFunctionBodyExpression); 1863 1864 1864 1865 void finishParsing(const SourceCode&, const Identifier&, FunctionMode); … … 1879 1880 unsigned endColumn() const { return m_endColumn; } 1880 1881 unsigned parameterCount() const { return m_parameterCount; } 1882 unsigned functionLength() const { return m_functionLength; } 1881 1883 SourceParseMode parseMode() const { return m_parseMode; } 1882 1884 … … 1915 1917 int m_startStartOffset; 1916 1918 unsigned m_parameterCount; 1919 unsigned m_functionLength; 1917 1920 int m_lastLine; 1918 1921 SourceParseMode m_parseMode; -
trunk/Source/JavaScriptCore/parser/Parser.cpp
r206267 r206268 379 379 380 380 unsigned parametersCount = 0; 381 isArrowFunction = parseFormalParameters(syntaxChecker, syntaxChecker.createFormalParameterList(), parametersCount) && consume(CLOSEPAREN) && match(ARROWFUNCTION); 381 unsigned functionLength = 0; 382 isArrowFunction = parseFormalParameters(syntaxChecker, syntaxChecker.createFormalParameterList(), parametersCount, functionLength) && consume(CLOSEPAREN) && match(ARROWFUNCTION); 382 383 383 384 popScope(fakeScope, syntaxChecker.NeedsFreeVariableInfo); … … 526 527 popScope(generatorBodyScope, TreeBuilder::NeedsFreeVariableInfo); 527 528 } 528 info.body = context.createFunctionMetadata(startLocation, tokenLocation(), startColumn, tokenColumn(), functionKeywordStart, functionNameStart, parametersStart, strictMode(), ConstructorKind::None, m_superBinding, info.parameterCount, SourceParseMode::GeneratorBodyMode, false);529 info.body = context.createFunctionMetadata(startLocation, tokenLocation(), startColumn, tokenColumn(), functionKeywordStart, functionNameStart, parametersStart, strictMode(), ConstructorKind::None, m_superBinding, info.parameterCount, info.functionLength, SourceParseMode::GeneratorBodyMode, false); 529 530 530 531 info.endLine = tokenLine(); … … 1744 1745 1745 1746 template <typename LexerType> 1746 template <class TreeBuilder> bool Parser<LexerType>::parseFormalParameters(TreeBuilder& context, TreeFormalParameterList list, unsigned& parameterCount )1747 template <class TreeBuilder> bool Parser<LexerType>::parseFormalParameters(TreeBuilder& context, TreeFormalParameterList list, unsigned& parameterCount, unsigned& functionLength) 1747 1748 { 1748 1749 #define failIfDuplicateIfViolation() \ … … 1784 1785 currentScope()->setHasNonSimpleParameterList(); 1785 1786 context.appendParameter(list, parameter, defaultValue); 1786 if (!isRestParameter) 1787 if (!isRestParameter) { 1787 1788 parameterCount++; 1789 if (!hasDefaultParameterValues) 1790 functionLength++; 1791 } 1788 1792 } while (!isRestParameter && consume(COMMA)); 1789 1793 … … 1794 1798 template <typename LexerType> 1795 1799 template <class TreeBuilder> TreeFunctionBody Parser<LexerType>::parseFunctionBody( 1796 TreeBuilder& context, SyntaxChecker& syntaxChecker, const JSTokenLocation& startLocation, int startColumn, int functionKeywordStart, int functionNameStart, int parametersStart, 1797 ConstructorKind constructorKind, SuperBinding superBinding, FunctionBodyType bodyType, unsigned parameterCount, SourceParseMode parseMode)1800 TreeBuilder& context, SyntaxChecker& syntaxChecker, const JSTokenLocation& startLocation, int startColumn, int functionKeywordStart, int functionNameStart, int parametersStart, 1801 ConstructorKind constructorKind, SuperBinding superBinding, FunctionBodyType bodyType, unsigned parameterCount, unsigned functionLength, SourceParseMode parseMode) 1798 1802 { 1799 1803 bool isArrowFunctionBodyExpression = bodyType == ArrowFunctionBodyExpression; … … 1802 1806 if (match(CLOSEBRACE)) { 1803 1807 unsigned endColumn = tokenColumn(); 1804 return context.createFunctionMetadata(startLocation, tokenLocation(), startColumn, endColumn, functionKeywordStart, functionNameStart, parametersStart, strictMode(), constructorKind, superBinding, parameterCount, parseMode, isArrowFunctionBodyExpression);1808 return context.createFunctionMetadata(startLocation, tokenLocation(), startColumn, endColumn, functionKeywordStart, functionNameStart, parametersStart, strictMode(), constructorKind, superBinding, parameterCount, functionLength, parseMode, isArrowFunctionBodyExpression); 1805 1809 } 1806 1810 } … … 1813 1817 failIfFalse(parseSourceElements(syntaxChecker, CheckForStrictMode), bodyType == StandardFunctionBodyBlock ? "Cannot parse body of this function" : "Cannot parse body of this arrow function"); 1814 1818 unsigned endColumn = tokenColumn(); 1815 return context.createFunctionMetadata(startLocation, tokenLocation(), startColumn, endColumn, functionKeywordStart, functionNameStart, parametersStart, strictMode(), constructorKind, superBinding, parameterCount, parseMode, isArrowFunctionBodyExpression);1819 return context.createFunctionMetadata(startLocation, tokenLocation(), startColumn, endColumn, functionKeywordStart, functionNameStart, parametersStart, strictMode(), constructorKind, superBinding, parameterCount, functionLength, parseMode, isArrowFunctionBodyExpression); 1816 1820 } 1817 1821 … … 1857 1861 next(); 1858 1862 1859 if (match(CLOSEPAREN)) 1863 if (match(CLOSEPAREN)) { 1860 1864 functionInfo.parameterCount = 0; 1861 else 1862 failIfFalse(parseFormalParameters(context, parameterList, functionInfo.parameterCount), "Cannot parse parameters for this ", stringForFunctionMode(mode)); 1865 functionInfo.functionLength = 0; 1866 } else 1867 failIfFalse(parseFormalParameters(context, parameterList, functionInfo.parameterCount, functionInfo.functionLength), "Cannot parse parameters for this ", stringForFunctionMode(mode)); 1863 1868 1864 1869 consumeOrFail(CLOSEPAREN, "Expected a ')' or a ',' after a parameter declaration"); 1865 1870 } else { 1866 1871 functionInfo.parameterCount = 1; 1872 functionInfo.functionLength = 1; 1867 1873 auto parameter = parseDestructuringPattern(context, DestructuringKind::DestructureToParameters, ExportType::NotExported); 1868 1874 failIfFalse(parameter, "Cannot parse parameter pattern"); … … 1882 1888 consumeOrFail(CLOSEPAREN, "getter functions must have no parameters"); 1883 1889 functionInfo.parameterCount = 0; 1890 functionInfo.functionLength = 0; 1884 1891 } else if (mode == SourceParseMode::SetterMode) { 1885 1892 failIfTrue(match(CLOSEPAREN), "setter functions must have one parameter"); … … 1892 1899 context.appendParameter(parameterList, parameter, defaultValue); 1893 1900 functionInfo.parameterCount = 1; 1901 functionInfo.functionLength = defaultValue ? 0 : 1; 1894 1902 failIfTrue(match(COMMA), "setter functions must have one parameter"); 1895 1903 consumeOrFail(CLOSEPAREN, "Expected a ')' after a parameter declaration"); 1896 1904 } else { 1897 if (match(CLOSEPAREN)) 1905 if (match(CLOSEPAREN)) { 1898 1906 functionInfo.parameterCount = 0; 1899 else 1900 failIfFalse(parseFormalParameters(context, parameterList, functionInfo.parameterCount), "Cannot parse parameters for this ", stringForFunctionMode(mode)); 1907 functionInfo.functionLength = 0; 1908 } else 1909 failIfFalse(parseFormalParameters(context, parameterList, functionInfo.parameterCount, functionInfo.functionLength), "Cannot parse parameters for this ", stringForFunctionMode(mode)); 1901 1910 consumeOrFail(CLOSEPAREN, "Expected a ')' or a ',' after a parameter declaration"); 1902 1911 } … … 1991 2000 startLocation, endLocation, startColumn, bodyEndColumn, 1992 2001 functionKeywordStart, functionNameStart, parametersStart, 1993 cachedInfo->strictMode, constructorKind, expectedSuperBinding, cachedInfo->parameterCount, mode, functionBodyType == ArrowFunctionBodyExpression); 2002 cachedInfo->strictMode, constructorKind, expectedSuperBinding, 2003 cachedInfo->parameterCount, cachedInfo->functionLength, 2004 mode, functionBodyType == ArrowFunctionBodyExpression); 1994 2005 functionInfo.endOffset = cachedInfo->endFunctionOffset; 1995 2006 functionInfo.parameterCount = cachedInfo->parameterCount; 2007 functionInfo.functionLength = cachedInfo->functionLength; 1996 2008 1997 2009 functionScope->restoreFromSourceProviderCache(cachedInfo); … … 2150 2162 2151 2163 auto performParsingFunctionBody = [&] { 2152 return parseFunctionBody(context, syntaxChecker, startLocation, startColumn, functionKeywordStart, functionNameStart, parametersStart, constructorKind, expectedSuperBinding, functionBodyType, functionInfo.parameterCount, mode);2164 return parseFunctionBody(context, syntaxChecker, startLocation, startColumn, functionKeywordStart, functionNameStart, parametersStart, constructorKind, expectedSuperBinding, functionBodyType, functionInfo.parameterCount, functionInfo.functionLength, mode); 2153 2165 }; 2154 2166 … … 2203 2215 parameters.lastTokenLineStartOffset = location.lineStartOffset; 2204 2216 parameters.parameterCount = functionInfo.parameterCount; 2217 parameters.functionLength = functionInfo.functionLength; 2205 2218 parameters.constructorKind = constructorKind; 2206 2219 parameters.expectedSuperBinding = expectedSuperBinding; -
trunk/Source/JavaScriptCore/parser/Parser.h
r206267 r206268 21 21 */ 22 22 23 #ifndef Parser_h 24 #define Parser_h 23 #pragma once 25 24 26 25 #include "ExceptionHelpers.h" … … 1398 1397 template <class TreeBuilder> TreeExpression parsePropertyMethod(TreeBuilder& context, const Identifier* methodName, bool isGenerator); 1399 1398 template <class TreeBuilder> TreeProperty parseGetterSetter(TreeBuilder&, bool strict, PropertyNode::Type, unsigned getterOrSetterStartOffset, ConstructorKind, bool isClassProperty); 1400 template <class TreeBuilder> ALWAYS_INLINE TreeFunctionBody parseFunctionBody(TreeBuilder&, SyntaxChecker&, const JSTokenLocation&, int, int functionKeywordStart, int functionNameStart, int parametersStart, ConstructorKind, SuperBinding, FunctionBodyType, unsigned, SourceParseMode);1401 template <class TreeBuilder> ALWAYS_INLINE bool parseFormalParameters(TreeBuilder&, TreeFormalParameterList, unsigned& );1399 template <class TreeBuilder> ALWAYS_INLINE TreeFunctionBody parseFunctionBody(TreeBuilder&, SyntaxChecker&, const JSTokenLocation&, int, int functionKeywordStart, int functionNameStart, int parametersStart, ConstructorKind, SuperBinding, FunctionBodyType, unsigned, unsigned, SourceParseMode); 1400 template <class TreeBuilder> ALWAYS_INLINE bool parseFormalParameters(TreeBuilder&, TreeFormalParameterList, unsigned&, unsigned&); 1402 1401 enum VarDeclarationListContext { ForLoopContext, VarDeclarationContext }; 1403 1402 template <class TreeBuilder> TreeExpression parseVariableDeclarationList(TreeBuilder&, int& declarations, TreeDestructuringPattern& lastPattern, TreeExpression& lastInitializer, JSTextPosition& identStart, JSTextPosition& initStart, JSTextPosition& initEnd, VarDeclarationListContext, DeclarationType, ExportType, bool& forLoopConstDoesNotHaveInitializer); … … 1742 1741 1743 1742 } // namespace 1744 #endif -
trunk/Source/JavaScriptCore/parser/ParserFunctionInfo.h
r200038 r206268 24 24 */ 25 25 26 #ifndef ParserFunctionInfo_h 27 #define ParserFunctionInfo_h 26 #pragma once 28 27 29 28 namespace JSC { … … 34 33 typename TreeBuilder::FunctionBody body = 0; 35 34 unsigned parameterCount = 0; 35 unsigned functionLength = 0; 36 36 unsigned startOffset = 0; 37 37 unsigned endOffset = 0; … … 51 51 52 52 } 53 54 #endif -
trunk/Source/JavaScriptCore/parser/SourceProviderCacheItem.h
r200038 r206268 42 42 unsigned endFunctionOffset; 43 43 unsigned parameterCount; 44 unsigned functionLength; 44 45 bool needsFullActivation; 45 46 bool usesEval; … … 89 90 unsigned parameterCount : 31; 90 91 unsigned expectedSuperBinding : 1; // SuperBinding 92 unsigned functionLength; 91 93 unsigned lastTokenLineStartOffset; 92 94 unsigned usedVariablesCount; … … 129 131 , parameterCount(parameters.parameterCount) 130 132 , expectedSuperBinding(static_cast<unsigned>(parameters.expectedSuperBinding)) 133 , functionLength(parameters.functionLength) 131 134 , lastTokenLineStartOffset(parameters.lastTokenLineStartOffset) 132 135 , usedVariablesCount(parameters.usedVariables.size()) -
trunk/Source/JavaScriptCore/parser/SyntaxChecker.h
r204078 r206268 185 185 ClassExpression createClassExpr(const JSTokenLocation&, const ParserClassInfo<SyntaxChecker>&, VariableEnvironment&, ExpressionType, ExpressionType, PropertyList, PropertyList) { return ClassExpr; } 186 186 ExpressionType createFunctionExpr(const JSTokenLocation&, const ParserFunctionInfo<SyntaxChecker>&) { return FunctionExpr; } 187 int createFunctionMetadata(const JSTokenLocation&, const JSTokenLocation&, int, int, bool, int, int, int, ConstructorKind, SuperBinding, unsigned, SourceParseMode, bool, InnerArrowFunctionCodeFeatures = NoInnerArrowFunctionFeatures) { return FunctionBodyResult; }187 int createFunctionMetadata(const JSTokenLocation&, const JSTokenLocation&, int, int, bool, int, int, int, ConstructorKind, SuperBinding, unsigned, int, SourceParseMode, bool, InnerArrowFunctionCodeFeatures = NoInnerArrowFunctionFeatures) { return FunctionBodyResult; } 188 188 ExpressionType createArrowFunctionExpr(const JSTokenLocation&, const ParserFunctionInfo<SyntaxChecker>&) { return FunctionExpr; } 189 189 ExpressionType createMethodDefinition(const JSTokenLocation&, const ParserFunctionInfo<SyntaxChecker>&) { return FunctionExpr; } -
trunk/Source/JavaScriptCore/runtime/Executable.h
r206267 r206268 658 658 const Identifier& ecmaName() { return m_unlinkedExecutable->ecmaName(); } 659 659 const Identifier& inferredName() { return m_unlinkedExecutable->inferredName(); } 660 size_t parameterCount() const { return m_unlinkedExecutable->parameterCount(); } // Excluding 'this'! 660 unsigned parameterCount() const { return m_unlinkedExecutable->parameterCount(); } // Excluding 'this'! 661 unsigned functionLength() const { return m_unlinkedExecutable->functionLength(); } 661 662 SourceParseMode parseMode() const { return m_unlinkedExecutable->parseMode(); } 662 663 JSParserCommentMode commentMode() const { return m_unlinkedExecutable->commentMode(); } -
trunk/Source/JavaScriptCore/runtime/JSFunction.cpp
r205856 r206268 115 115 JSFunction* function = create(vm, executable, globalObject); 116 116 function->putDirect(vm, vm.propertyNames->name, jsString(&vm, executable->name().string()), ReadOnly | DontEnum); 117 function->putDirect(vm, vm.propertyNames->length, jsNumber(executable-> parameterCount()), ReadOnly | DontEnum);117 function->putDirect(vm, vm.propertyNames->length, jsNumber(executable->functionLength()), ReadOnly | DontEnum); 118 118 return function; 119 119 } … … 123 123 JSFunction* function = create(vm, executable, globalObject); 124 124 function->putDirect(vm, vm.propertyNames->name, jsString(&vm, name), ReadOnly | DontEnum); 125 function->putDirect(vm, vm.propertyNames->length, jsNumber(executable-> parameterCount()), ReadOnly | DontEnum);125 function->putDirect(vm, vm.propertyNames->length, jsNumber(executable->functionLength()), ReadOnly | DontEnum); 126 126 return function; 127 127 } … … 628 628 ASSERT(!hasReifiedLength()); 629 629 ASSERT(!isHostFunction()); 630 JSValue initialValue = jsNumber(jsExecutable()-> parameterCount());630 JSValue initialValue = jsNumber(jsExecutable()->functionLength()); 631 631 unsigned initialAttributes = DontEnum | ReadOnly; 632 632 const Identifier& identifier = vm.propertyNames->length;
Note: See TracChangeset
for help on using the changeset viewer.