| OLD | NEW |
| 1 // Copyright 2008 the V8 project authors. All rights reserved. | 1 // Copyright 2008 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 var kArgObjects = makeArguments().length; | 50 var kArgObjects = makeArguments().length; |
| 51 | 51 |
| 52 function makeFunction(name, argc) { | 52 function makeFunction(name, argc) { |
| 53 var args = []; | 53 var args = []; |
| 54 for (var i = 0; i < argc; i++) | 54 for (var i = 0; i < argc; i++) |
| 55 args.push("x" + i); | 55 args.push("x" + i); |
| 56 var argsStr = args.join(", "); | 56 var argsStr = args.join(", "); |
| 57 return new Function(args.join(", "), "return %" + name + "(" + argsStr + ");")
; | 57 return new Function(args.join(", "), "return %" + name + "(" + argsStr + ");")
; |
| 58 } | 58 } |
| 59 | 59 |
| 60 function testArgumentCount(name) { | 60 function testArgumentCount(name, argc) { |
| 61 for (var i = 0; i < 10; i++) { | 61 for (var i = 0; i < 10; i++) { |
| 62 var func = makeFunction(name, i); | 62 var func = null; |
| 63 try { |
| 64 func = makeFunction(name, i); |
| 65 } catch (e) { |
| 66 if (e != "SyntaxError: illegal access") throw e; |
| 67 } |
| 68 if (func === null && i == argc) { |
| 69 throw "unexpected exception"; |
| 70 } |
| 63 var args = [ ]; | 71 var args = [ ]; |
| 64 for (var j = 0; j < i; j++) | 72 for (var j = 0; j < i; j++) |
| 65 args.push(0); | 73 args.push(0); |
| 66 try { | 74 try { |
| 67 func.apply(void 0, args); | 75 func.apply(void 0, args); |
| 68 } catch (e) { | 76 } catch (e) { |
| 69 // we don't care what happens as long as we don't crash | 77 // we don't care what happens as long as we don't crash |
| 70 } | 78 } |
| 71 } | 79 } |
| 72 } | 80 } |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 | 177 |
| 170 function testNatives() { | 178 function testNatives() { |
| 171 var allNatives = %ListNatives(); | 179 var allNatives = %ListNatives(); |
| 172 for (var i = 0; i < allNatives.length; i++) { | 180 for (var i = 0; i < allNatives.length; i++) { |
| 173 var nativeInfo = allNatives[i]; | 181 var nativeInfo = allNatives[i]; |
| 174 var name = nativeInfo[0]; | 182 var name = nativeInfo[0]; |
| 175 if (name in knownProblems || name in currentlyUncallable) | 183 if (name in knownProblems || name in currentlyUncallable) |
| 176 continue; | 184 continue; |
| 177 print(name); | 185 print(name); |
| 178 var argc = nativeInfo[1]; | 186 var argc = nativeInfo[1]; |
| 179 testArgumentCount(name); | 187 testArgumentCount(name, argc); |
| 180 testArgumentTypes(name, argc); | 188 testArgumentTypes(name, argc); |
| 181 } | 189 } |
| 182 } | 190 } |
| 183 | 191 |
| 184 testNatives(); | 192 testNatives(); |
| OLD | NEW |