<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[168396] trunk/Source/JavaScriptCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/168396">168396</a></dd>
<dt>Author</dt> <dd>msaboff@apple.com</dd>
<dt>Date</dt> <dd>2014-05-06 17:34:34 -0700 (Tue, 06 May 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add test for deleteAllCompiledCode
https://bugs.webkit.org/show_bug.cgi?id=132632

Reviewed by Phil Pizlo.

Added two new hooks to jsc, one to call Heap::deleteAllCompiledCode() and
the other to call CodeBlock::optimizeNextInvocation().  Used these two hooks
to write a test that will queue up loads of DFG compiles and then call
Heap::deleteAllCompiledCode() to make sure that it can handle compiled
code as well as code being compiled.

* jsc.cpp:
(GlobalObject::finishCreation):
(functionDeleteAllCompiledCode):
(functionOptimizeNextInvocation):
* runtime/TestRunnerUtils.cpp:
(JSC::optimizeNextInvocation):
* runtime/TestRunnerUtils.h:
* tests/stress/deleteAllCompiledCode.js: Added.
(functionList):
(runTest):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCorejsccpp">trunk/Source/JavaScriptCore/jsc.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeTestRunnerUtilscpp">trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeTestRunnerUtilsh">trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoretestsstressdeleteAllCompiledCodejs">trunk/Source/JavaScriptCore/tests/stress/deleteAllCompiledCode.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (168395 => 168396)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-05-07 00:29:29 UTC (rev 168395)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-05-07 00:34:34 UTC (rev 168396)
</span><span class="lines">@@ -1,3 +1,27 @@
</span><ins>+2014-05-06  Michael Saboff  &lt;msaboff@apple.com&gt;
+
+        Add test for deleteAllCompiledCode
+        https://bugs.webkit.org/show_bug.cgi?id=132632
+
+        Reviewed by Phil Pizlo.
+
+        Added two new hooks to jsc, one to call Heap::deleteAllCompiledCode() and
+        the other to call CodeBlock::optimizeNextInvocation().  Used these two hooks
+        to write a test that will queue up loads of DFG compiles and then call
+        Heap::deleteAllCompiledCode() to make sure that it can handle compiled
+        code as well as code being compiled.
+
+        * jsc.cpp:
+        (GlobalObject::finishCreation):
+        (functionDeleteAllCompiledCode):
+        (functionOptimizeNextInvocation):
+        * runtime/TestRunnerUtils.cpp:
+        (JSC::optimizeNextInvocation):
+        * runtime/TestRunnerUtils.h:
+        * tests/stress/deleteAllCompiledCode.js: Added.
+        (functionList):
+        (runTest):
+
</ins><span class="cx"> 2014-05-06  Andreas Kling  &lt;akling@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         JSString::toAtomicString() should return AtomicString.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejsccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jsc.cpp (168395 => 168396)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jsc.cpp        2014-05-07 00:29:29 UTC (rev 168395)
+++ trunk/Source/JavaScriptCore/jsc.cpp        2014-05-07 00:34:34 UTC (rev 168396)
</span><span class="lines">@@ -255,6 +255,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionGCAndSweep(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionFullGC(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionEdenGC(ExecState*);
</span><ins>+static EncodedJSValue JSC_HOST_CALL functionDeleteAllCompiledCode(ExecState*);
</ins><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionReleaseExecutableMemory(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionDumpCallFrame(ExecState*);
</span><span class="lines">@@ -267,6 +268,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionReadline(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionPreciseTime(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionNeverInlineFunction(ExecState*);
</span><ins>+static EncodedJSValue JSC_HOST_CALL functionOptimizeNextInvocation(ExecState*);
</ins><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionNumberOfDFGCompiles(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionReoptimizationRetryCount(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionTransferArrayBuffer(ExecState*);
</span><span class="lines">@@ -383,6 +385,7 @@
</span><span class="cx">         addFunction(vm, &quot;gc&quot;, functionGCAndSweep, 0);
</span><span class="cx">         addFunction(vm, &quot;fullGC&quot;, functionFullGC, 0);
</span><span class="cx">         addFunction(vm, &quot;edenGC&quot;, functionEdenGC, 0);
</span><ins>+        addFunction(vm, &quot;deleteAllCompiledCode&quot;, functionDeleteAllCompiledCode, 0);
</ins><span class="cx"> #ifndef NDEBUG
</span><span class="cx">         addFunction(vm, &quot;dumpCallFrame&quot;, functionDumpCallFrame, 0);
</span><span class="cx">         addFunction(vm, &quot;releaseExecutableMemory&quot;, functionReleaseExecutableMemory, 0);
</span><span class="lines">@@ -398,6 +401,7 @@
</span><span class="cx">         addFunction(vm, &quot;neverInlineFunction&quot;, functionNeverInlineFunction, 1);
</span><span class="cx">         addFunction(vm, &quot;noInline&quot;, functionNeverInlineFunction, 1);
</span><span class="cx">         addFunction(vm, &quot;numberOfDFGCompiles&quot;, functionNumberOfDFGCompiles, 1);
</span><ins>+        addFunction(vm, &quot;optimizeNextInvocation&quot;, functionOptimizeNextInvocation, 1);
</ins><span class="cx">         addFunction(vm, &quot;reoptimizationRetryCount&quot;, functionReoptimizationRetryCount, 1);
</span><span class="cx">         addFunction(vm, &quot;transferArrayBuffer&quot;, functionTransferArrayBuffer, 1);
</span><span class="cx"> #if ENABLE(SAMPLING_FLAGS)
</span><span class="lines">@@ -608,6 +612,13 @@
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+EncodedJSValue JSC_HOST_CALL functionDeleteAllCompiledCode(ExecState* exec)
+{
+    JSLockHolder lock(exec);
+    exec-&gt;heap()-&gt;deleteAllCompiledCode();
+    return JSValue::encode(jsUndefined());
+}
+
</ins><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL functionReleaseExecutableMemory(ExecState* exec)
</span><span class="cx"> {
</span><span class="lines">@@ -746,6 +757,11 @@
</span><span class="cx">     return JSValue::encode(setNeverInline(exec));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+EncodedJSValue JSC_HOST_CALL functionOptimizeNextInvocation(ExecState* exec)
+{
+    return JSValue::encode(optimizeNextInvocation(exec));
+}
+
</ins><span class="cx"> EncodedJSValue JSC_HOST_CALL functionNumberOfDFGCompiles(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     return JSValue::encode(numberOfDFGCompiles(exec));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeTestRunnerUtilscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.cpp (168395 => 168396)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.cpp        2014-05-07 00:29:29 UTC (rev 168395)
+++ trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.cpp        2014-05-07 00:34:34 UTC (rev 168396)
</span><span class="lines">@@ -83,6 +83,14 @@
</span><span class="cx">     return jsUndefined();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+JSValue optimizeNextInvocation(JSValue theFunctionValue)
+{
+    if (CodeBlock* baselineCodeBlock = getSomeBaselineCodeBlockForFunction(theFunctionValue))
+        baselineCodeBlock-&gt;optimizeNextInvocation();
+
+    return jsUndefined();
+}
+
</ins><span class="cx"> JSValue numberOfDFGCompiles(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -97,5 +105,12 @@
</span><span class="cx">     return setNeverInline(exec-&gt;uncheckedArgument(0));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+JSValue optimizeNextInvocation(ExecState* exec)
+{
+    if (exec-&gt;argumentCount() &lt; 1)
+        return jsUndefined();
+    return optimizeNextInvocation(exec-&gt;uncheckedArgument(0));
+}
+
</ins><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeTestRunnerUtilsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.h (168395 => 168396)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.h        2014-05-07 00:29:29 UTC (rev 168395)
+++ trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.h        2014-05-07 00:34:34 UTC (rev 168396)
</span><span class="lines">@@ -38,9 +38,11 @@
</span><span class="cx"> 
</span><span class="cx"> JS_EXPORT_PRIVATE JSValue numberOfDFGCompiles(JSValue function);
</span><span class="cx"> JS_EXPORT_PRIVATE JSValue setNeverInline(JSValue function);
</span><ins>+JS_EXPORT_PRIVATE JSValue optimizeNextInvocation(JSValue function);
</ins><span class="cx"> 
</span><span class="cx"> JS_EXPORT_PRIVATE JSValue numberOfDFGCompiles(ExecState*);
</span><span class="cx"> JS_EXPORT_PRIVATE JSValue setNeverInline(ExecState*);
</span><ins>+JS_EXPORT_PRIVATE JSValue optimizeNextInvocation(ExecState*);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressdeleteAllCompiledCodejs"></a>
<div class="addfile"><h4>Added: trunk/Source/JavaScriptCore/tests/stress/deleteAllCompiledCode.js (0 => 168396)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/deleteAllCompiledCode.js                                (rev 0)
+++ trunk/Source/JavaScriptCore/tests/stress/deleteAllCompiledCode.js        2014-05-07 00:34:34 UTC (rev 168396)
</span><span class="lines">@@ -0,0 +1,1033 @@
</span><ins>+//@ runNoLLInt
+
+var functionList = [
+    function(a) { return a + 0; },
+    function(a) { return a + 1; },
+    function(a) { return a + 2; },
+    function(a) { return a + 3; },
+    function(a) { return a + 4; },
+    function(a) { return a + 5; },
+    function(a) { return a + 6; },
+    function(a) { return a + 7; },
+    function(a) { return a + 8; },
+    function(a) { return a + 9; },
+    function(a) { return a + 10; },
+    function(a) { return a + 11; },
+    function(a) { return a + 12; },
+    function(a) { return a + 13; },
+    function(a) { return a + 14; },
+    function(a) { return a + 15; },
+    function(a) { return a + 16; },
+    function(a) { return a + 17; },
+    function(a) { return a + 18; },
+    function(a) { return a + 19; },
+    function(a) { return a + 20; },
+    function(a) { return a + 21; },
+    function(a) { return a + 22; },
+    function(a) { return a + 23; },
+    function(a) { return a + 24; },
+    function(a) { return a + 25; },
+    function(a) { return a + 26; },
+    function(a) { return a + 27; },
+    function(a) { return a + 28; },
+    function(a) { return a + 29; },
+    function(a) { return a + 30; },
+    function(a) { return a + 31; },
+    function(a) { return a + 32; },
+    function(a) { return a + 33; },
+    function(a) { return a + 34; },
+    function(a) { return a + 35; },
+    function(a) { return a + 36; },
+    function(a) { return a + 37; },
+    function(a) { return a + 38; },
+    function(a) { return a + 39; },
+    function(a) { return a + 40; },
+    function(a) { return a + 41; },
+    function(a) { return a + 42; },
+    function(a) { return a + 43; },
+    function(a) { return a + 44; },
+    function(a) { return a + 45; },
+    function(a) { return a + 46; },
+    function(a) { return a + 47; },
+    function(a) { return a + 48; },
+    function(a) { return a + 49; },
+    function(a) { return a + 50; },
+    function(a) { return a + 51; },
+    function(a) { return a + 52; },
+    function(a) { return a + 53; },
+    function(a) { return a + 54; },
+    function(a) { return a + 55; },
+    function(a) { return a + 56; },
+    function(a) { return a + 57; },
+    function(a) { return a + 58; },
+    function(a) { return a + 59; },
+    function(a) { return a + 60; },
+    function(a) { return a + 61; },
+    function(a) { return a + 62; },
+    function(a) { return a + 63; },
+    function(a) { return a + 64; },
+    function(a) { return a + 65; },
+    function(a) { return a + 66; },
+    function(a) { return a + 67; },
+    function(a) { return a + 68; },
+    function(a) { return a + 69; },
+    function(a) { return a + 70; },
+    function(a) { return a + 71; },
+    function(a) { return a + 72; },
+    function(a) { return a + 73; },
+    function(a) { return a + 74; },
+    function(a) { return a + 75; },
+    function(a) { return a + 76; },
+    function(a) { return a + 77; },
+    function(a) { return a + 78; },
+    function(a) { return a + 79; },
+    function(a) { return a + 80; },
+    function(a) { return a + 81; },
+    function(a) { return a + 82; },
+    function(a) { return a + 83; },
+    function(a) { return a + 84; },
+    function(a) { return a + 85; },
+    function(a) { return a + 86; },
+    function(a) { return a + 87; },
+    function(a) { return a + 88; },
+    function(a) { return a + 89; },
+    function(a) { return a + 90; },
+    function(a) { return a + 91; },
+    function(a) { return a + 92; },
+    function(a) { return a + 93; },
+    function(a) { return a + 94; },
+    function(a) { return a + 95; },
+    function(a) { return a + 96; },
+    function(a) { return a + 97; },
+    function(a) { return a + 98; },
+    function(a) { return a + 99; },
+    function(a) { return a + 100; },
+    function(a) { return a + 101; },
+    function(a) { return a + 102; },
+    function(a) { return a + 103; },
+    function(a) { return a + 104; },
+    function(a) { return a + 105; },
+    function(a) { return a + 106; },
+    function(a) { return a + 107; },
+    function(a) { return a + 108; },
+    function(a) { return a + 109; },
+    function(a) { return a + 110; },
+    function(a) { return a + 111; },
+    function(a) { return a + 112; },
+    function(a) { return a + 113; },
+    function(a) { return a + 114; },
+    function(a) { return a + 115; },
+    function(a) { return a + 116; },
+    function(a) { return a + 117; },
+    function(a) { return a + 118; },
+    function(a) { return a + 119; },
+    function(a) { return a + 120; },
+    function(a) { return a + 121; },
+    function(a) { return a + 122; },
+    function(a) { return a + 123; },
+    function(a) { return a + 124; },
+    function(a) { return a + 125; },
+    function(a) { return a + 126; },
+    function(a) { return a + 127; },
+    function(a) { return a + 128; },
+    function(a) { return a + 129; },
+    function(a) { return a + 130; },
+    function(a) { return a + 131; },
+    function(a) { return a + 132; },
+    function(a) { return a + 133; },
+    function(a) { return a + 134; },
+    function(a) { return a + 135; },
+    function(a) { return a + 136; },
+    function(a) { return a + 137; },
+    function(a) { return a + 138; },
+    function(a) { return a + 139; },
+    function(a) { return a + 140; },
+    function(a) { return a + 141; },
+    function(a) { return a + 142; },
+    function(a) { return a + 143; },
+    function(a) { return a + 144; },
+    function(a) { return a + 145; },
+    function(a) { return a + 146; },
+    function(a) { return a + 147; },
+    function(a) { return a + 148; },
+    function(a) { return a + 149; },
+    function(a) { return a + 150; },
+    function(a) { return a + 151; },
+    function(a) { return a + 152; },
+    function(a) { return a + 153; },
+    function(a) { return a + 154; },
+    function(a) { return a + 155; },
+    function(a) { return a + 156; },
+    function(a) { return a + 157; },
+    function(a) { return a + 158; },
+    function(a) { return a + 159; },
+    function(a) { return a + 160; },
+    function(a) { return a + 161; },
+    function(a) { return a + 162; },
+    function(a) { return a + 163; },
+    function(a) { return a + 164; },
+    function(a) { return a + 165; },
+    function(a) { return a + 166; },
+    function(a) { return a + 167; },
+    function(a) { return a + 168; },
+    function(a) { return a + 169; },
+    function(a) { return a + 170; },
+    function(a) { return a + 171; },
+    function(a) { return a + 172; },
+    function(a) { return a + 173; },
+    function(a) { return a + 174; },
+    function(a) { return a + 175; },
+    function(a) { return a + 176; },
+    function(a) { return a + 177; },
+    function(a) { return a + 178; },
+    function(a) { return a + 179; },
+    function(a) { return a + 180; },
+    function(a) { return a + 181; },
+    function(a) { return a + 182; },
+    function(a) { return a + 183; },
+    function(a) { return a + 184; },
+    function(a) { return a + 185; },
+    function(a) { return a + 186; },
+    function(a) { return a + 187; },
+    function(a) { return a + 188; },
+    function(a) { return a + 189; },
+    function(a) { return a + 190; },
+    function(a) { return a + 191; },
+    function(a) { return a + 192; },
+    function(a) { return a + 193; },
+    function(a) { return a + 194; },
+    function(a) { return a + 195; },
+    function(a) { return a + 196; },
+    function(a) { return a + 197; },
+    function(a) { return a + 198; },
+    function(a) { return a + 199; },
+    function(a) { return a + 200; },
+    function(a) { return a + 201; },
+    function(a) { return a + 202; },
+    function(a) { return a + 203; },
+    function(a) { return a + 204; },
+    function(a) { return a + 205; },
+    function(a) { return a + 206; },
+    function(a) { return a + 207; },
+    function(a) { return a + 208; },
+    function(a) { return a + 209; },
+    function(a) { return a + 210; },
+    function(a) { return a + 211; },
+    function(a) { return a + 212; },
+    function(a) { return a + 213; },
+    function(a) { return a + 214; },
+    function(a) { return a + 215; },
+    function(a) { return a + 216; },
+    function(a) { return a + 217; },
+    function(a) { return a + 218; },
+    function(a) { return a + 219; },
+    function(a) { return a + 220; },
+    function(a) { return a + 221; },
+    function(a) { return a + 222; },
+    function(a) { return a + 223; },
+    function(a) { return a + 224; },
+    function(a) { return a + 225; },
+    function(a) { return a + 226; },
+    function(a) { return a + 227; },
+    function(a) { return a + 228; },
+    function(a) { return a + 229; },
+    function(a) { return a + 230; },
+    function(a) { return a + 231; },
+    function(a) { return a + 232; },
+    function(a) { return a + 233; },
+    function(a) { return a + 234; },
+    function(a) { return a + 235; },
+    function(a) { return a + 236; },
+    function(a) { return a + 237; },
+    function(a) { return a + 238; },
+    function(a) { return a + 239; },
+    function(a) { return a + 240; },
+    function(a) { return a + 241; },
+    function(a) { return a + 242; },
+    function(a) { return a + 243; },
+    function(a) { return a + 244; },
+    function(a) { return a + 245; },
+    function(a) { return a + 246; },
+    function(a) { return a + 247; },
+    function(a) { return a + 248; },
+    function(a) { return a + 249; },
+    function(a) { return a + 250; },
+    function(a) { return a + 251; },
+    function(a) { return a + 252; },
+    function(a) { return a + 253; },
+    function(a) { return a + 254; },
+    function(a) { return a + 255; },
+    function(a) { return a + 256; },
+    function(a) { return a + 257; },
+    function(a) { return a + 258; },
+    function(a) { return a + 259; },
+    function(a) { return a + 260; },
+    function(a) { return a + 261; },
+    function(a) { return a + 262; },
+    function(a) { return a + 263; },
+    function(a) { return a + 264; },
+    function(a) { return a + 265; },
+    function(a) { return a + 266; },
+    function(a) { return a + 267; },
+    function(a) { return a + 268; },
+    function(a) { return a + 269; },
+    function(a) { return a + 270; },
+    function(a) { return a + 271; },
+    function(a) { return a + 272; },
+    function(a) { return a + 273; },
+    function(a) { return a + 274; },
+    function(a) { return a + 275; },
+    function(a) { return a + 276; },
+    function(a) { return a + 277; },
+    function(a) { return a + 278; },
+    function(a) { return a + 279; },
+    function(a) { return a + 280; },
+    function(a) { return a + 281; },
+    function(a) { return a + 282; },
+    function(a) { return a + 283; },
+    function(a) { return a + 284; },
+    function(a) { return a + 285; },
+    function(a) { return a + 286; },
+    function(a) { return a + 287; },
+    function(a) { return a + 288; },
+    function(a) { return a + 289; },
+    function(a) { return a + 290; },
+    function(a) { return a + 291; },
+    function(a) { return a + 292; },
+    function(a) { return a + 293; },
+    function(a) { return a + 294; },
+    function(a) { return a + 295; },
+    function(a) { return a + 296; },
+    function(a) { return a + 297; },
+    function(a) { return a + 298; },
+    function(a) { return a + 299; },
+    function(a) { return a + 300; },
+    function(a) { return a + 301; },
+    function(a) { return a + 302; },
+    function(a) { return a + 303; },
+    function(a) { return a + 304; },
+    function(a) { return a + 305; },
+    function(a) { return a + 306; },
+    function(a) { return a + 307; },
+    function(a) { return a + 308; },
+    function(a) { return a + 309; },
+    function(a) { return a + 310; },
+    function(a) { return a + 311; },
+    function(a) { return a + 312; },
+    function(a) { return a + 313; },
+    function(a) { return a + 314; },
+    function(a) { return a + 315; },
+    function(a) { return a + 316; },
+    function(a) { return a + 317; },
+    function(a) { return a + 318; },
+    function(a) { return a + 319; },
+    function(a) { return a + 320; },
+    function(a) { return a + 321; },
+    function(a) { return a + 322; },
+    function(a) { return a + 323; },
+    function(a) { return a + 324; },
+    function(a) { return a + 325; },
+    function(a) { return a + 326; },
+    function(a) { return a + 327; },
+    function(a) { return a + 328; },
+    function(a) { return a + 329; },
+    function(a) { return a + 330; },
+    function(a) { return a + 331; },
+    function(a) { return a + 332; },
+    function(a) { return a + 333; },
+    function(a) { return a + 334; },
+    function(a) { return a + 335; },
+    function(a) { return a + 336; },
+    function(a) { return a + 337; },
+    function(a) { return a + 338; },
+    function(a) { return a + 339; },
+    function(a) { return a + 340; },
+    function(a) { return a + 341; },
+    function(a) { return a + 342; },
+    function(a) { return a + 343; },
+    function(a) { return a + 344; },
+    function(a) { return a + 345; },
+    function(a) { return a + 346; },
+    function(a) { return a + 347; },
+    function(a) { return a + 348; },
+    function(a) { return a + 349; },
+    function(a) { return a + 350; },
+    function(a) { return a + 351; },
+    function(a) { return a + 352; },
+    function(a) { return a + 353; },
+    function(a) { return a + 354; },
+    function(a) { return a + 355; },
+    function(a) { return a + 356; },
+    function(a) { return a + 357; },
+    function(a) { return a + 358; },
+    function(a) { return a + 359; },
+    function(a) { return a + 360; },
+    function(a) { return a + 361; },
+    function(a) { return a + 362; },
+    function(a) { return a + 363; },
+    function(a) { return a + 364; },
+    function(a) { return a + 365; },
+    function(a) { return a + 366; },
+    function(a) { return a + 367; },
+    function(a) { return a + 368; },
+    function(a) { return a + 369; },
+    function(a) { return a + 370; },
+    function(a) { return a + 371; },
+    function(a) { return a + 372; },
+    function(a) { return a + 373; },
+    function(a) { return a + 374; },
+    function(a) { return a + 375; },
+    function(a) { return a + 376; },
+    function(a) { return a + 377; },
+    function(a) { return a + 378; },
+    function(a) { return a + 379; },
+    function(a) { return a + 380; },
+    function(a) { return a + 381; },
+    function(a) { return a + 382; },
+    function(a) { return a + 383; },
+    function(a) { return a + 384; },
+    function(a) { return a + 385; },
+    function(a) { return a + 386; },
+    function(a) { return a + 387; },
+    function(a) { return a + 388; },
+    function(a) { return a + 389; },
+    function(a) { return a + 390; },
+    function(a) { return a + 391; },
+    function(a) { return a + 392; },
+    function(a) { return a + 393; },
+    function(a) { return a + 394; },
+    function(a) { return a + 395; },
+    function(a) { return a + 396; },
+    function(a) { return a + 397; },
+    function(a) { return a + 398; },
+    function(a) { return a + 399; },
+    function(a) { return a + 400; },
+    function(a) { return a + 401; },
+    function(a) { return a + 402; },
+    function(a) { return a + 403; },
+    function(a) { return a + 404; },
+    function(a) { return a + 405; },
+    function(a) { return a + 406; },
+    function(a) { return a + 407; },
+    function(a) { return a + 408; },
+    function(a) { return a + 409; },
+    function(a) { return a + 410; },
+    function(a) { return a + 411; },
+    function(a) { return a + 412; },
+    function(a) { return a + 413; },
+    function(a) { return a + 414; },
+    function(a) { return a + 415; },
+    function(a) { return a + 416; },
+    function(a) { return a + 417; },
+    function(a) { return a + 418; },
+    function(a) { return a + 419; },
+    function(a) { return a + 420; },
+    function(a) { return a + 421; },
+    function(a) { return a + 422; },
+    function(a) { return a + 423; },
+    function(a) { return a + 424; },
+    function(a) { return a + 425; },
+    function(a) { return a + 426; },
+    function(a) { return a + 427; },
+    function(a) { return a + 428; },
+    function(a) { return a + 429; },
+    function(a) { return a + 430; },
+    function(a) { return a + 431; },
+    function(a) { return a + 432; },
+    function(a) { return a + 433; },
+    function(a) { return a + 434; },
+    function(a) { return a + 435; },
+    function(a) { return a + 436; },
+    function(a) { return a + 437; },
+    function(a) { return a + 438; },
+    function(a) { return a + 439; },
+    function(a) { return a + 440; },
+    function(a) { return a + 441; },
+    function(a) { return a + 442; },
+    function(a) { return a + 443; },
+    function(a) { return a + 444; },
+    function(a) { return a + 445; },
+    function(a) { return a + 446; },
+    function(a) { return a + 447; },
+    function(a) { return a + 448; },
+    function(a) { return a + 449; },
+    function(a) { return a + 450; },
+    function(a) { return a + 451; },
+    function(a) { return a + 452; },
+    function(a) { return a + 453; },
+    function(a) { return a + 454; },
+    function(a) { return a + 455; },
+    function(a) { return a + 456; },
+    function(a) { return a + 457; },
+    function(a) { return a + 458; },
+    function(a) { return a + 459; },
+    function(a) { return a + 460; },
+    function(a) { return a + 461; },
+    function(a) { return a + 462; },
+    function(a) { return a + 463; },
+    function(a) { return a + 464; },
+    function(a) { return a + 465; },
+    function(a) { return a + 466; },
+    function(a) { return a + 467; },
+    function(a) { return a + 468; },
+    function(a) { return a + 469; },
+    function(a) { return a + 470; },
+    function(a) { return a + 471; },
+    function(a) { return a + 472; },
+    function(a) { return a + 473; },
+    function(a) { return a + 474; },
+    function(a) { return a + 475; },
+    function(a) { return a + 476; },
+    function(a) { return a + 477; },
+    function(a) { return a + 478; },
+    function(a) { return a + 479; },
+    function(a) { return a + 480; },
+    function(a) { return a + 481; },
+    function(a) { return a + 482; },
+    function(a) { return a + 483; },
+    function(a) { return a + 484; },
+    function(a) { return a + 485; },
+    function(a) { return a + 486; },
+    function(a) { return a + 487; },
+    function(a) { return a + 488; },
+    function(a) { return a + 489; },
+    function(a) { return a + 490; },
+    function(a) { return a + 491; },
+    function(a) { return a + 492; },
+    function(a) { return a + 493; },
+    function(a) { return a + 494; },
+    function(a) { return a + 495; },
+    function(a) { return a + 496; },
+    function(a) { return a + 497; },
+    function(a) { return a + 498; },
+    function(a) { return a + 499; },
+    function(a) { return a + 500; },
+    function(a) { return a + 501; },
+    function(a) { return a + 502; },
+    function(a) { return a + 503; },
+    function(a) { return a + 504; },
+    function(a) { return a + 505; },
+    function(a) { return a + 506; },
+    function(a) { return a + 507; },
+    function(a) { return a + 508; },
+    function(a) { return a + 509; },
+    function(a) { return a + 510; },
+    function(a) { return a + 511; },
+    function(a) { return a + 512; },
+    function(a) { return a + 513; },
+    function(a) { return a + 514; },
+    function(a) { return a + 515; },
+    function(a) { return a + 516; },
+    function(a) { return a + 517; },
+    function(a) { return a + 518; },
+    function(a) { return a + 519; },
+    function(a) { return a + 520; },
+    function(a) { return a + 521; },
+    function(a) { return a + 522; },
+    function(a) { return a + 523; },
+    function(a) { return a + 524; },
+    function(a) { return a + 525; },
+    function(a) { return a + 526; },
+    function(a) { return a + 527; },
+    function(a) { return a + 528; },
+    function(a) { return a + 529; },
+    function(a) { return a + 530; },
+    function(a) { return a + 531; },
+    function(a) { return a + 532; },
+    function(a) { return a + 533; },
+    function(a) { return a + 534; },
+    function(a) { return a + 535; },
+    function(a) { return a + 536; },
+    function(a) { return a + 537; },
+    function(a) { return a + 538; },
+    function(a) { return a + 539; },
+    function(a) { return a + 540; },
+    function(a) { return a + 541; },
+    function(a) { return a + 542; },
+    function(a) { return a + 543; },
+    function(a) { return a + 544; },
+    function(a) { return a + 545; },
+    function(a) { return a + 546; },
+    function(a) { return a + 547; },
+    function(a) { return a + 548; },
+    function(a) { return a + 549; },
+    function(a) { return a + 550; },
+    function(a) { return a + 551; },
+    function(a) { return a + 552; },
+    function(a) { return a + 553; },
+    function(a) { return a + 554; },
+    function(a) { return a + 555; },
+    function(a) { return a + 556; },
+    function(a) { return a + 557; },
+    function(a) { return a + 558; },
+    function(a) { return a + 559; },
+    function(a) { return a + 560; },
+    function(a) { return a + 561; },
+    function(a) { return a + 562; },
+    function(a) { return a + 563; },
+    function(a) { return a + 564; },
+    function(a) { return a + 565; },
+    function(a) { return a + 566; },
+    function(a) { return a + 567; },
+    function(a) { return a + 568; },
+    function(a) { return a + 569; },
+    function(a) { return a + 570; },
+    function(a) { return a + 571; },
+    function(a) { return a + 572; },
+    function(a) { return a + 573; },
+    function(a) { return a + 574; },
+    function(a) { return a + 575; },
+    function(a) { return a + 576; },
+    function(a) { return a + 577; },
+    function(a) { return a + 578; },
+    function(a) { return a + 579; },
+    function(a) { return a + 580; },
+    function(a) { return a + 581; },
+    function(a) { return a + 582; },
+    function(a) { return a + 583; },
+    function(a) { return a + 584; },
+    function(a) { return a + 585; },
+    function(a) { return a + 586; },
+    function(a) { return a + 587; },
+    function(a) { return a + 588; },
+    function(a) { return a + 589; },
+    function(a) { return a + 590; },
+    function(a) { return a + 591; },
+    function(a) { return a + 592; },
+    function(a) { return a + 593; },
+    function(a) { return a + 594; },
+    function(a) { return a + 595; },
+    function(a) { return a + 596; },
+    function(a) { return a + 597; },
+    function(a) { return a + 598; },
+    function(a) { return a + 599; },
+    function(a) { return a + 600; },
+    function(a) { return a + 601; },
+    function(a) { return a + 602; },
+    function(a) { return a + 603; },
+    function(a) { return a + 604; },
+    function(a) { return a + 605; },
+    function(a) { return a + 606; },
+    function(a) { return a + 607; },
+    function(a) { return a + 608; },
+    function(a) { return a + 609; },
+    function(a) { return a + 610; },
+    function(a) { return a + 611; },
+    function(a) { return a + 612; },
+    function(a) { return a + 613; },
+    function(a) { return a + 614; },
+    function(a) { return a + 615; },
+    function(a) { return a + 616; },
+    function(a) { return a + 617; },
+    function(a) { return a + 618; },
+    function(a) { return a + 619; },
+    function(a) { return a + 620; },
+    function(a) { return a + 621; },
+    function(a) { return a + 622; },
+    function(a) { return a + 623; },
+    function(a) { return a + 624; },
+    function(a) { return a + 625; },
+    function(a) { return a + 626; },
+    function(a) { return a + 627; },
+    function(a) { return a + 628; },
+    function(a) { return a + 629; },
+    function(a) { return a + 630; },
+    function(a) { return a + 631; },
+    function(a) { return a + 632; },
+    function(a) { return a + 633; },
+    function(a) { return a + 634; },
+    function(a) { return a + 635; },
+    function(a) { return a + 636; },
+    function(a) { return a + 637; },
+    function(a) { return a + 638; },
+    function(a) { return a + 639; },
+    function(a) { return a + 640; },
+    function(a) { return a + 641; },
+    function(a) { return a + 642; },
+    function(a) { return a + 643; },
+    function(a) { return a + 644; },
+    function(a) { return a + 645; },
+    function(a) { return a + 646; },
+    function(a) { return a + 647; },
+    function(a) { return a + 648; },
+    function(a) { return a + 649; },
+    function(a) { return a + 650; },
+    function(a) { return a + 651; },
+    function(a) { return a + 652; },
+    function(a) { return a + 653; },
+    function(a) { return a + 654; },
+    function(a) { return a + 655; },
+    function(a) { return a + 656; },
+    function(a) { return a + 657; },
+    function(a) { return a + 658; },
+    function(a) { return a + 659; },
+    function(a) { return a + 660; },
+    function(a) { return a + 661; },
+    function(a) { return a + 662; },
+    function(a) { return a + 663; },
+    function(a) { return a + 664; },
+    function(a) { return a + 665; },
+    function(a) { return a + 666; },
+    function(a) { return a + 667; },
+    function(a) { return a + 668; },
+    function(a) { return a + 669; },
+    function(a) { return a + 670; },
+    function(a) { return a + 671; },
+    function(a) { return a + 672; },
+    function(a) { return a + 673; },
+    function(a) { return a + 674; },
+    function(a) { return a + 675; },
+    function(a) { return a + 676; },
+    function(a) { return a + 677; },
+    function(a) { return a + 678; },
+    function(a) { return a + 679; },
+    function(a) { return a + 680; },
+    function(a) { return a + 681; },
+    function(a) { return a + 682; },
+    function(a) { return a + 683; },
+    function(a) { return a + 684; },
+    function(a) { return a + 685; },
+    function(a) { return a + 686; },
+    function(a) { return a + 687; },
+    function(a) { return a + 688; },
+    function(a) { return a + 689; },
+    function(a) { return a + 690; },
+    function(a) { return a + 691; },
+    function(a) { return a + 692; },
+    function(a) { return a + 693; },
+    function(a) { return a + 694; },
+    function(a) { return a + 695; },
+    function(a) { return a + 696; },
+    function(a) { return a + 697; },
+    function(a) { return a + 698; },
+    function(a) { return a + 699; },
+    function(a) { return a + 700; },
+    function(a) { return a + 701; },
+    function(a) { return a + 702; },
+    function(a) { return a + 703; },
+    function(a) { return a + 704; },
+    function(a) { return a + 705; },
+    function(a) { return a + 706; },
+    function(a) { return a + 707; },
+    function(a) { return a + 708; },
+    function(a) { return a + 709; },
+    function(a) { return a + 710; },
+    function(a) { return a + 711; },
+    function(a) { return a + 712; },
+    function(a) { return a + 713; },
+    function(a) { return a + 714; },
+    function(a) { return a + 715; },
+    function(a) { return a + 716; },
+    function(a) { return a + 717; },
+    function(a) { return a + 718; },
+    function(a) { return a + 719; },
+    function(a) { return a + 720; },
+    function(a) { return a + 721; },
+    function(a) { return a + 722; },
+    function(a) { return a + 723; },
+    function(a) { return a + 724; },
+    function(a) { return a + 725; },
+    function(a) { return a + 726; },
+    function(a) { return a + 727; },
+    function(a) { return a + 728; },
+    function(a) { return a + 729; },
+    function(a) { return a + 730; },
+    function(a) { return a + 731; },
+    function(a) { return a + 732; },
+    function(a) { return a + 733; },
+    function(a) { return a + 734; },
+    function(a) { return a + 735; },
+    function(a) { return a + 736; },
+    function(a) { return a + 737; },
+    function(a) { return a + 738; },
+    function(a) { return a + 739; },
+    function(a) { return a + 740; },
+    function(a) { return a + 741; },
+    function(a) { return a + 742; },
+    function(a) { return a + 743; },
+    function(a) { return a + 744; },
+    function(a) { return a + 745; },
+    function(a) { return a + 746; },
+    function(a) { return a + 747; },
+    function(a) { return a + 748; },
+    function(a) { return a + 749; },
+    function(a) { return a + 750; },
+    function(a) { return a + 751; },
+    function(a) { return a + 752; },
+    function(a) { return a + 753; },
+    function(a) { return a + 754; },
+    function(a) { return a + 755; },
+    function(a) { return a + 756; },
+    function(a) { return a + 757; },
+    function(a) { return a + 758; },
+    function(a) { return a + 759; },
+    function(a) { return a + 760; },
+    function(a) { return a + 761; },
+    function(a) { return a + 762; },
+    function(a) { return a + 763; },
+    function(a) { return a + 764; },
+    function(a) { return a + 765; },
+    function(a) { return a + 766; },
+    function(a) { return a + 767; },
+    function(a) { return a + 768; },
+    function(a) { return a + 769; },
+    function(a) { return a + 770; },
+    function(a) { return a + 771; },
+    function(a) { return a + 772; },
+    function(a) { return a + 773; },
+    function(a) { return a + 774; },
+    function(a) { return a + 775; },
+    function(a) { return a + 776; },
+    function(a) { return a + 777; },
+    function(a) { return a + 778; },
+    function(a) { return a + 779; },
+    function(a) { return a + 780; },
+    function(a) { return a + 781; },
+    function(a) { return a + 782; },
+    function(a) { return a + 783; },
+    function(a) { return a + 784; },
+    function(a) { return a + 785; },
+    function(a) { return a + 786; },
+    function(a) { return a + 787; },
+    function(a) { return a + 788; },
+    function(a) { return a + 789; },
+    function(a) { return a + 790; },
+    function(a) { return a + 791; },
+    function(a) { return a + 792; },
+    function(a) { return a + 793; },
+    function(a) { return a + 794; },
+    function(a) { return a + 795; },
+    function(a) { return a + 796; },
+    function(a) { return a + 797; },
+    function(a) { return a + 798; },
+    function(a) { return a + 799; },
+    function(a) { return a + 800; },
+    function(a) { return a + 801; },
+    function(a) { return a + 802; },
+    function(a) { return a + 803; },
+    function(a) { return a + 804; },
+    function(a) { return a + 805; },
+    function(a) { return a + 806; },
+    function(a) { return a + 807; },
+    function(a) { return a + 808; },
+    function(a) { return a + 809; },
+    function(a) { return a + 810; },
+    function(a) { return a + 811; },
+    function(a) { return a + 812; },
+    function(a) { return a + 813; },
+    function(a) { return a + 814; },
+    function(a) { return a + 815; },
+    function(a) { return a + 816; },
+    function(a) { return a + 817; },
+    function(a) { return a + 818; },
+    function(a) { return a + 819; },
+    function(a) { return a + 820; },
+    function(a) { return a + 821; },
+    function(a) { return a + 822; },
+    function(a) { return a + 823; },
+    function(a) { return a + 824; },
+    function(a) { return a + 825; },
+    function(a) { return a + 826; },
+    function(a) { return a + 827; },
+    function(a) { return a + 828; },
+    function(a) { return a + 829; },
+    function(a) { return a + 830; },
+    function(a) { return a + 831; },
+    function(a) { return a + 832; },
+    function(a) { return a + 833; },
+    function(a) { return a + 834; },
+    function(a) { return a + 835; },
+    function(a) { return a + 836; },
+    function(a) { return a + 837; },
+    function(a) { return a + 838; },
+    function(a) { return a + 839; },
+    function(a) { return a + 840; },
+    function(a) { return a + 841; },
+    function(a) { return a + 842; },
+    function(a) { return a + 843; },
+    function(a) { return a + 844; },
+    function(a) { return a + 845; },
+    function(a) { return a + 846; },
+    function(a) { return a + 847; },
+    function(a) { return a + 848; },
+    function(a) { return a + 849; },
+    function(a) { return a + 850; },
+    function(a) { return a + 851; },
+    function(a) { return a + 852; },
+    function(a) { return a + 853; },
+    function(a) { return a + 854; },
+    function(a) { return a + 855; },
+    function(a) { return a + 856; },
+    function(a) { return a + 857; },
+    function(a) { return a + 858; },
+    function(a) { return a + 859; },
+    function(a) { return a + 860; },
+    function(a) { return a + 861; },
+    function(a) { return a + 862; },
+    function(a) { return a + 863; },
+    function(a) { return a + 864; },
+    function(a) { return a + 865; },
+    function(a) { return a + 866; },
+    function(a) { return a + 867; },
+    function(a) { return a + 868; },
+    function(a) { return a + 869; },
+    function(a) { return a + 870; },
+    function(a) { return a + 871; },
+    function(a) { return a + 872; },
+    function(a) { return a + 873; },
+    function(a) { return a + 874; },
+    function(a) { return a + 875; },
+    function(a) { return a + 876; },
+    function(a) { return a + 877; },
+    function(a) { return a + 878; },
+    function(a) { return a + 879; },
+    function(a) { return a + 880; },
+    function(a) { return a + 881; },
+    function(a) { return a + 882; },
+    function(a) { return a + 883; },
+    function(a) { return a + 884; },
+    function(a) { return a + 885; },
+    function(a) { return a + 886; },
+    function(a) { return a + 887; },
+    function(a) { return a + 888; },
+    function(a) { return a + 889; },
+    function(a) { return a + 890; },
+    function(a) { return a + 891; },
+    function(a) { return a + 892; },
+    function(a) { return a + 893; },
+    function(a) { return a + 894; },
+    function(a) { return a + 895; },
+    function(a) { return a + 896; },
+    function(a) { return a + 897; },
+    function(a) { return a + 898; },
+    function(a) { return a + 899; },
+    function(a) { return a + 900; },
+    function(a) { return a + 901; },
+    function(a) { return a + 902; },
+    function(a) { return a + 903; },
+    function(a) { return a + 904; },
+    function(a) { return a + 905; },
+    function(a) { return a + 906; },
+    function(a) { return a + 907; },
+    function(a) { return a + 908; },
+    function(a) { return a + 909; },
+    function(a) { return a + 910; },
+    function(a) { return a + 911; },
+    function(a) { return a + 912; },
+    function(a) { return a + 913; },
+    function(a) { return a + 914; },
+    function(a) { return a + 915; },
+    function(a) { return a + 916; },
+    function(a) { return a + 917; },
+    function(a) { return a + 918; },
+    function(a) { return a + 919; },
+    function(a) { return a + 920; },
+    function(a) { return a + 921; },
+    function(a) { return a + 922; },
+    function(a) { return a + 923; },
+    function(a) { return a + 924; },
+    function(a) { return a + 925; },
+    function(a) { return a + 926; },
+    function(a) { return a + 927; },
+    function(a) { return a + 928; },
+    function(a) { return a + 929; },
+    function(a) { return a + 930; },
+    function(a) { return a + 931; },
+    function(a) { return a + 932; },
+    function(a) { return a + 933; },
+    function(a) { return a + 934; },
+    function(a) { return a + 935; },
+    function(a) { return a + 936; },
+    function(a) { return a + 937; },
+    function(a) { return a + 938; },
+    function(a) { return a + 939; },
+    function(a) { return a + 940; },
+    function(a) { return a + 941; },
+    function(a) { return a + 942; },
+    function(a) { return a + 943; },
+    function(a) { return a + 944; },
+    function(a) { return a + 945; },
+    function(a) { return a + 946; },
+    function(a) { return a + 947; },
+    function(a) { return a + 948; },
+    function(a) { return a + 949; },
+    function(a) { return a + 950; },
+    function(a) { return a + 951; },
+    function(a) { return a + 952; },
+    function(a) { return a + 953; },
+    function(a) { return a + 954; },
+    function(a) { return a + 955; },
+    function(a) { return a + 956; },
+    function(a) { return a + 957; },
+    function(a) { return a + 958; },
+    function(a) { return a + 959; },
+    function(a) { return a + 960; },
+    function(a) { return a + 961; },
+    function(a) { return a + 962; },
+    function(a) { return a + 963; },
+    function(a) { return a + 964; },
+    function(a) { return a + 965; },
+    function(a) { return a + 966; },
+    function(a) { return a + 967; },
+    function(a) { return a + 968; },
+    function(a) { return a + 969; },
+    function(a) { return a + 970; },
+    function(a) { return a + 971; },
+    function(a) { return a + 972; },
+    function(a) { return a + 973; },
+    function(a) { return a + 974; },
+    function(a) { return a + 975; },
+    function(a) { return a + 976; },
+    function(a) { return a + 977; },
+    function(a) { return a + 978; },
+    function(a) { return a + 979; },
+    function(a) { return a + 980; },
+    function(a) { return a + 981; },
+    function(a) { return a + 982; },
+    function(a) { return a + 983; },
+    function(a) { return a + 984; },
+    function(a) { return a + 985; },
+    function(a) { return a + 986; },
+    function(a) { return a + 987; },
+    function(a) { return a + 988; },
+    function(a) { return a + 989; },
+    function(a) { return a + 990; },
+    function(a) { return a + 991; },
+    function(a) { return a + 992; },
+    function(a) { return a + 993; },
+    function(a) { return a + 994; },
+    function(a) { return a + 995; },
+    function(a) { return a + 996; },
+    function(a) { return a + 997; },
+    function(a) { return a + 998; },
+    function(a) { return a + 999; }
+];
+
+noInline(runTest);
+
+function runTest() {
+    for (var i = 0; i &lt; functionList.length; i++)
+        noInline(functionList[i]);
+
+    for (var i = 0; i &lt; functionList.length; i++) {
+        functionList[i](-i);
+        functionList[i](-i);
+        functionList[i](-i);
+        functionList[i](-i);
+    }
+
+    for (var i = 0; i &lt; functionList.length; i++)
+        optimizeNextInvocation(functionList[i]);
+
+    var result = 0;
+
+    for (var i = 0; i &lt; functionList.length; i++)
+        result += functionList[i](-i);
+
+    deleteAllCompiledCode();
+
+    return result;
+}
+
+if (runTest() != 0)
+    throw new Error(&quot;Incorrect result!&quot;);
</ins></span></pre>
</div>
</div>

</body>
</html>