16d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org// Copyright 2011 the V8 project authors. All rights reserved. 2c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// Redistribution and use in source and binary forms, with or without 3c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// modification, are permitted provided that the following conditions are 4c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// met: 5c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// 6c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// * Redistributions of source code must retain the above copyright 7c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// notice, this list of conditions and the following disclaimer. 8c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// * Redistributions in binary form must reproduce the above 9c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// copyright notice, this list of conditions and the following 10c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// disclaimer in the documentation and/or other materials provided 11c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// with the distribution. 12c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// * Neither the name of Google Inc. nor the names of its 13c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// contributors may be used to endorse or promote products derived 14c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// from this software without specific prior written permission. 15c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// 16c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 285f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org// Flags: --allow-natives-syntax 29c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 305c838251403b0be9a882540f1922577abba4c872ager@chromium.orgvar RUN_WITH_ALL_ARGUMENT_ENTRIES = false; 315c838251403b0be9a882540f1922577abba4c872ager@chromium.orgvar kOnManyArgumentsRemove = 5; 325c838251403b0be9a882540f1922577abba4c872ager@chromium.org 33c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.orgfunction makeArguments() { 34c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var result = [ ]; 35c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org result.push(17); 36c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org result.push(-31); 377be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org result.push(new Array(100)); 387be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org result.push(new Array(100003)); 39c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org result.push(Number.MIN_VALUE); 40c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org result.push("whoops"); 41c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org result.push("x"); 42c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org result.push({"x": 1, "y": 2}); 43c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var slowCaseObj = {"a": 3, "b": 4, "c": 5}; 44c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org delete slowCaseObj.c; 45c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org result.push(slowCaseObj); 46c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org result.push(function () { return 8; }); 47c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org return result; 48c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org} 49c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 50c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.orgvar kArgObjects = makeArguments().length; 51c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 52c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.orgfunction makeFunction(name, argc) { 53c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var args = []; 54c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org for (var i = 0; i < argc; i++) 55c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org args.push("x" + i); 56c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var argsStr = args.join(", "); 57c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org return new Function(args.join(", "), "return %" + name + "(" + argsStr + ");"); 58c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org} 59c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 60f837290e142d49c9e1332841ec2c49ee2f09584avegorov@chromium.orgfunction testArgumentCount(name, argc) { 61c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org for (var i = 0; i < 10; i++) { 62f837290e142d49c9e1332841ec2c49ee2f09584avegorov@chromium.org var func = null; 63f837290e142d49c9e1332841ec2c49ee2f09584avegorov@chromium.org try { 64f837290e142d49c9e1332841ec2c49ee2f09584avegorov@chromium.org func = makeFunction(name, i); 65f837290e142d49c9e1332841ec2c49ee2f09584avegorov@chromium.org } catch (e) { 664a2e25edf994c4e3ff22fea6d432839192666139erik.corry@gmail.com if (e != "SyntaxError: Illegal access") throw e; 67f837290e142d49c9e1332841ec2c49ee2f09584avegorov@chromium.org } 68f837290e142d49c9e1332841ec2c49ee2f09584avegorov@chromium.org if (func === null && i == argc) { 69f837290e142d49c9e1332841ec2c49ee2f09584avegorov@chromium.org throw "unexpected exception"; 70f837290e142d49c9e1332841ec2c49ee2f09584avegorov@chromium.org } 71c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var args = [ ]; 72c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org for (var j = 0; j < i; j++) 73c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org args.push(0); 74c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org try { 75c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org func.apply(void 0, args); 76c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org } catch (e) { 77c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org // we don't care what happens as long as we don't crash 78c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org } 79c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org } 80c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org} 81c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 82c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.orgfunction testArgumentTypes(name, argc) { 83c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var type = 0; 84c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var hasMore = true; 85c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var func = makeFunction(name, argc); 86c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org while (hasMore) { 87c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var argPool = makeArguments(); 885c838251403b0be9a882540f1922577abba4c872ager@chromium.org // When we have 5 or more arguments we lower the amount of tests cases 895c838251403b0be9a882540f1922577abba4c872ager@chromium.org // by randomly removing kOnManyArgumentsRemove entries 905c838251403b0be9a882540f1922577abba4c872ager@chromium.org var numArguments = RUN_WITH_ALL_ARGUMENT_ENTRIES ? 915c838251403b0be9a882540f1922577abba4c872ager@chromium.org kArgObjects : kArgObjects-kOnManyArgumentsRemove; 925c838251403b0be9a882540f1922577abba4c872ager@chromium.org if (argc >= 5 && !RUN_WITH_ALL_ARGUMENT_ENTRIES) { 935c838251403b0be9a882540f1922577abba4c872ager@chromium.org for (var i = 0; i < kOnManyArgumentsRemove; i++) { 945c838251403b0be9a882540f1922577abba4c872ager@chromium.org var rand = Math.floor(Math.random() * (kArgObjects - i)); 955c838251403b0be9a882540f1922577abba4c872ager@chromium.org argPool.splice(rand,1); 965c838251403b0be9a882540f1922577abba4c872ager@chromium.org } 975c838251403b0be9a882540f1922577abba4c872ager@chromium.org } 98c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var current = type; 99c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var hasMore = false; 100c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var argList = [ ]; 101c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org for (var i = 0; i < argc; i++) { 1025c838251403b0be9a882540f1922577abba4c872ager@chromium.org var index = current % numArguments; 1035c838251403b0be9a882540f1922577abba4c872ager@chromium.org current = (current / numArguments) << 0; 1045c838251403b0be9a882540f1922577abba4c872ager@chromium.org if (index != (numArguments - 1)) 105c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org hasMore = true; 106c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org argList.push(argPool[index]); 107c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org } 108c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org try { 109c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org func.apply(void 0, argList); 110c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org } catch (e) { 111c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org // we don't care what happens as long as we don't crash 112c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org } 113c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org type++; 114c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org } 115c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org} 116c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 117c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.orgvar knownProblems = { 118c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org "Abort": true, 1199af454f6b1c6a921ac79ba0b9a979c73adb2ca1emachenbach@chromium.org "ThrowMessage": true, 1200c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.org 1210c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.org // Avoid calling the concat operation, because weird lengths 12249edbdf52640c88918f8e6638ab4965819eb1dfekmillikin@chromium.org // may lead to out-of-memory. Ditto for StringBuilderJoin. 1230c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.org "StringBuilderConcat": true, 12449edbdf52640c88918f8e6638ab4965819eb1dfekmillikin@chromium.org "StringBuilderJoin": true, 1250c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.org 126c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org // These functions use pseudo-stack-pointers and are not robust 127c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org // to unexpected integer values. 128c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org "DebugEvaluate": true, 129c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 130c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org // These functions do nontrivial error checking in recursive calls, 131c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org // which means that we have to propagate errors back. 132c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org "SetFunctionBreakPoint": true, 133c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org "SetScriptBreakPoint": true, 134c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org "PrepareStep": true, 135870a0b67c822d289024711912e2512af01b66c3bager@chromium.org 136870a0b67c822d289024711912e2512af01b66c3bager@chromium.org // Too slow. 137870a0b67c822d289024711912e2512af01b66c3bager@chromium.org "DebugReferencedBy": true, 138870a0b67c822d289024711912e2512af01b66c3bager@chromium.org 139870a0b67c822d289024711912e2512af01b66c3bager@chromium.org // Calling disable/enable access checks may interfere with the 140870a0b67c822d289024711912e2512af01b66c3bager@chromium.org // the rest of the tests. 141870a0b67c822d289024711912e2512af01b66c3bager@chromium.org "DisableAccessChecks": true, 142870a0b67c822d289024711912e2512af01b66c3bager@chromium.org "EnableAccessChecks": true, 1430c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.org 144c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org // These functions should not be callable as runtime functions. 1456d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org "NewFunctionContext": true, 14641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "NewArgumentsFast": true, 1477b26015ac58e54e88f4214e248f772ad4f055477whesse@chromium.org "NewStrictArgumentsFast": true, 1486d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org "PushWithContext": true, 1496d786c9805481bd13ecb29c3155540f2f32950e1svenpanne@chromium.org "PushCatchContext": true, 1504acdc2c8d4caecf7606db8af710366c1d6e28fe5whesse@chromium.org "PushBlockContext": true, 1518e8d8825f97138de12985f8e0d3163074dff5258ulan@chromium.org "PushModuleContext": true, 152c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org "LazyCompile": true, 153a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org "LazyRecompile": true, 1549259716434187c932704601f700375e53d865de8rossberg@chromium.org "ConcurrentRecompile": true, 155a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org "NotifyDeoptimized": true, 15659297c735ad2a41156ae9c723a39ff259ad061e0jkummerow@chromium.org "NotifyStubFailure": true, 157a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org "NotifyOSR": true, 158c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org "CreateObjectLiteralBoilerplate": true, 159bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.org "CloneLiteralBoilerplate": true, 160bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.org "CloneShallowLiteralBoilerplate": true, 161bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.org "CreateArrayLiteralBoilerplate": true, 162a74f0daeb278665869b4b6a3bc2739e88fed93b1ager@chromium.org "IS_VAR": true, 16337abdec9cad6edeba05b5c7a9ff73c25f5df2b70christian.plesner.hansen@gmail.com "ResolvePossiblyDirectEval": true, 16486f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org "Log": true, 1653811b436bf328d2ace6fe79ce99aeda71f9f06d3ager@chromium.org "DeclareGlobals": true, 16693a47f4837f2137c8d8349250fd8e91da3108126jkummerow@chromium.org "ArrayConstructor": true, 16793a47f4837f2137c8d8349250fd8e91da3108126jkummerow@chromium.org "InternalArrayConstructor": true, 16886f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org 169c4c927273ae2b690c4a015b4640a2a469c9a1a69ager@chromium.org "PromoteScheduledException": true, 170ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org "DeleteHandleScopeExtensions": true, 171ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org 172c612e0211bdb8821cbd7886e15b0273ed82d2e9edanno@chromium.org // Vararg with minimum number > 0. 173c612e0211bdb8821cbd7886e15b0273ed82d2e9edanno@chromium.org "Call": true, 174c612e0211bdb8821cbd7886e15b0273ed82d2e9edanno@chromium.org 17534e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org // Requires integer arguments to be non-negative. 17634e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org "Apply": true, 17734e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org 178ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org // That can only be invoked on Array.prototype. 179ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org "FinishArrayPrototypeSetup": true, 180ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org 1814111b80e5083e1ec54273d3275875ccc24cdbbafkmillikin@chromium.org "_SwapElements": true, 1824111b80e5083e1ec54273d3275875ccc24cdbbafkmillikin@chromium.org 1834f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org // Performance critical functions which cannot afford type checks. 1844f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org "_IsNativeOrStrictMode": true, 185357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org "_CallFunction": true, 186357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org 187b6e43bb9b1cd7673592be9dfd0a036fe8dab4dcdwhesse@chromium.org // Tries to allocate based on argument, and (correctly) throws 188b6e43bb9b1cd7673592be9dfd0a036fe8dab4dcdwhesse@chromium.org // out-of-memory if the request is too large. In practice, the 189b6e43bb9b1cd7673592be9dfd0a036fe8dab4dcdwhesse@chromium.org // size will be the number of captures of a RegExp. 190b6e43bb9b1cd7673592be9dfd0a036fe8dab4dcdwhesse@chromium.org "RegExpConstructResult": true, 191b6e43bb9b1cd7673592be9dfd0a036fe8dab4dcdwhesse@chromium.org "_RegExpConstructResult": true, 192b6e43bb9b1cd7673592be9dfd0a036fe8dab4dcdwhesse@chromium.org 1934efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org // This functions perform some checks compile time (they require one of their 1944efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org // arguments to be a compile time smi). 1954efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org "_DateField": true, 196c9c80823e038328f2e1060d7feef0762a50adf06ricow@chromium.org "_GetFromCache": true, 197ea4f62e1df22417fc8dc2c2425485dca98b13d07ager@chromium.org 198ea4f62e1df22417fc8dc2c2425485dca98b13d07ager@chromium.org // This function expects its first argument to be a non-smi. 199d236f4d96b5dd21acc5ec57f4e50fa97cdd97bb6ricow@chromium.org "_IsStringWrapperSafeForDefaultValueOf" : true, 200d236f4d96b5dd21acc5ec57f4e50fa97cdd97bb6ricow@chromium.org 201d236f4d96b5dd21acc5ec57f4e50fa97cdd97bb6ricow@chromium.org // Only applicable to strings. 202d236f4d96b5dd21acc5ec57f4e50fa97cdd97bb6ricow@chromium.org "_HasCachedArrayIndex": true, 203fb37721ea34922d8758d5cb26ae465aaf241e6b6yangguo@chromium.org "_GetCachedArrayIndex": true, 20432280cf2786219b2d9a668f7f00778fb59ac40b3mstarzinger@chromium.org "_OneByteSeqStringSetChar": true, 20532280cf2786219b2d9a668f7f00778fb59ac40b3mstarzinger@chromium.org "_TwoByteSeqStringSetChar": true, 2068a00e82ec5c3dbedfd3dcb56996c7df2452da4a5verwaest@chromium.org 20737be408adf363bbe682921a4a690752fa0ec33femachenbach@chromium.org // Only applicable to TypedArrays. 20837be408adf363bbe682921a4a690752fa0ec33femachenbach@chromium.org "TypedArrayInitialize": true, 20937be408adf363bbe682921a4a690752fa0ec33femachenbach@chromium.org 2108a00e82ec5c3dbedfd3dcb56996c7df2452da4a5verwaest@chromium.org // Only applicable to generators. 2118a00e82ec5c3dbedfd3dcb56996c7df2452da4a5verwaest@chromium.org "_GeneratorNext": true, 2128a00e82ec5c3dbedfd3dcb56996c7df2452da4a5verwaest@chromium.org "_GeneratorThrow": true, 2131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2141510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org // Only applicable to DataViews. 215af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org "DataViewInitialize": true, 2161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "DataViewGetBuffer": true, 2171510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "DataViewGetByteLength": true, 2181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "DataViewGetByteOffset": true 219c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org}; 220c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 221c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.orgvar currentlyUncallable = { 222c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org // We need to find a way to test this without breaking the system. 22393a47f4837f2137c8d8349250fd8e91da3108126jkummerow@chromium.org "SystemBreak": true, 22493a47f4837f2137c8d8349250fd8e91da3108126jkummerow@chromium.org // Inserts an int3/stop instruction when run with --always-opt. 22593a47f4837f2137c8d8349250fd8e91da3108126jkummerow@chromium.org "_DebugBreakInOptimizedCode": true 226c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org}; 227c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 228c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.orgfunction testNatives() { 229c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var allNatives = %ListNatives(); 23033e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org var start = 0; 23133e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org var stop = (allNatives.length >> 2); 23233e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org for (var i = start; i < stop; i++) { 233c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var nativeInfo = allNatives[i]; 234c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var name = nativeInfo[0]; 235c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org if (name in knownProblems || name in currentlyUncallable) 236c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org continue; 237c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org print(name); 238c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org var argc = nativeInfo[1]; 239f837290e142d49c9e1332841ec2c49ee2f09584avegorov@chromium.org testArgumentCount(name, argc); 240c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org testArgumentTypes(name, argc); 241c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org } 242c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org} 243c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 244c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.orgtestNatives(); 245