<!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>[189888] 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/189888">189888</a></dd>
<dt>Author</dt> <dd>ggaren@apple.com</dd>
<dt>Date</dt> <dd>2015-09-16 17:16:35 -0700 (Wed, 16 Sep 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Remove obsolete code for deleting CodeBlocks
https://bugs.webkit.org/show_bug.cgi?id=149231

Reviewed by Mark Lam.

* heap/Heap.cpp:
(JSC::Heap::deleteAllCodeBlocks): ASSERT that we're called in a valid
state, and do the compiler waiting ourselves instead of having our
caller do it. This is more appropriate to our new limited use.

(JSC::Heap::collectImpl):
(JSC::Heap::deleteOldCode): Deleted. Don't call deleteAllCodeBlocks
periodically because it's not such a good idea to delete everything
at once, and CodeBlocks now have a more precise individual policy for
when to delete. Also, this function used to fail all or nearly all of
the time because its invariants that we were not executing or compiling
could not be met.

* heap/Heap.h:

* jsc.cpp:
(GlobalObject::finishCreation):
(functionDeleteAllCompiledCode): Deleted.
* tests/stress/deleteAllCompiledCode.js: Removed. Removed this testing
code because it did not do what it thought it did. All of this code
was guaranteed to no-op since it would run JavaScript to call a function
that would return early because JavaScript was running.

* runtime/VM.cpp:
(JSC::VM::deleteAllCode): This code is simpler now becaue 
heap.deleteAllCodeBlocks does some work for us.

* runtime/VMEntryScope.cpp:
(JSC::VMEntryScope::VMEntryScope): Don't delete code on VM entry. This
policy was old, and it dated back to a time when we 

    (a) couldn't run in the interpreter if compilation failed;

    (b) didn't reduce the rate of compilation in response to executable
    memory pressure;

    (c) didn't throw away individual CodeBlocks automatically.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapHeapcpp">trunk/Source/JavaScriptCore/heap/Heap.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapHeaph">trunk/Source/JavaScriptCore/heap/Heap.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejsccpp">trunk/Source/JavaScriptCore/jsc.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMcpp">trunk/Source/JavaScriptCore/runtime/VM.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMEntryScopecpp">trunk/Source/JavaScriptCore/runtime/VMEntryScope.cpp</a></li>
</ul>

<h3>Removed 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 (189887 => 189888)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-09-17 00:10:33 UTC (rev 189887)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-09-17 00:16:35 UTC (rev 189888)
</span><span class="lines">@@ -1,3 +1,48 @@
</span><ins>+2015-09-16  Geoffrey Garen  &lt;ggaren@apple.com&gt;
+
+        Remove obsolete code for deleting CodeBlocks
+        https://bugs.webkit.org/show_bug.cgi?id=149231
+
+        Reviewed by Mark Lam.
+
+        * heap/Heap.cpp:
+        (JSC::Heap::deleteAllCodeBlocks): ASSERT that we're called in a valid
+        state, and do the compiler waiting ourselves instead of having our
+        caller do it. This is more appropriate to our new limited use.
+
+        (JSC::Heap::collectImpl):
+        (JSC::Heap::deleteOldCode): Deleted. Don't call deleteAllCodeBlocks
+        periodically because it's not such a good idea to delete everything
+        at once, and CodeBlocks now have a more precise individual policy for
+        when to delete. Also, this function used to fail all or nearly all of
+        the time because its invariants that we were not executing or compiling
+        could not be met.
+
+        * heap/Heap.h:
+
+        * jsc.cpp:
+        (GlobalObject::finishCreation):
+        (functionDeleteAllCompiledCode): Deleted.
+        * tests/stress/deleteAllCompiledCode.js: Removed. Removed this testing
+        code because it did not do what it thought it did. All of this code
+        was guaranteed to no-op since it would run JavaScript to call a function
+        that would return early because JavaScript was running.
+
+        * runtime/VM.cpp:
+        (JSC::VM::deleteAllCode): This code is simpler now becaue 
+        heap.deleteAllCodeBlocks does some work for us.
+
+        * runtime/VMEntryScope.cpp:
+        (JSC::VMEntryScope::VMEntryScope): Don't delete code on VM entry. This
+        policy was old, and it dated back to a time when we 
+
+            (a) couldn't run in the interpreter if compilation failed;
+
+            (b) didn't reduce the rate of compilation in response to executable
+            memory pressure;
+
+            (c) didn't throw away individual CodeBlocks automatically.
+
</ins><span class="cx"> 2015-09-16  Michael Saboff  &lt;msaboff@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [ES6] Implement tail calls in the LLInt and Baseline JIT
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapHeapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/Heap.cpp (189887 => 189888)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/Heap.cpp        2015-09-17 00:10:33 UTC (rev 189887)
+++ trunk/Source/JavaScriptCore/heap/Heap.cpp        2015-09-17 00:16:35 UTC (rev 189888)
</span><span class="lines">@@ -346,7 +346,6 @@
</span><span class="cx">     // schedule the timer if we've never done a collection.
</span><span class="cx">     , m_lastFullGCLength(0.01)
</span><span class="cx">     , m_lastEdenGCLength(0.01)
</span><del>-    , m_lastCodeDiscardTime(WTF::monotonicallyIncreasingTime())
</del><span class="cx">     , m_fullActivityCallback(GCActivityCallback::createFullTimer(this))
</span><span class="cx"> #if ENABLE(GGC)
</span><span class="cx">     , m_edenActivityCallback(GCActivityCallback::createEdenTimer(this))
</span><span class="lines">@@ -892,26 +891,13 @@
</span><span class="cx"> 
</span><span class="cx"> void Heap::deleteAllCodeBlocks()
</span><span class="cx"> {
</span><del>-    // If JavaScript is running, it's not safe to delete JavaScript code, since
</del><ins>+    // If JavaScript is running, it's not safe to delete all JavaScript code, since
</ins><span class="cx">     // we'll end up returning to deleted code.
</span><del>-    if (m_vm-&gt;entryScope)
-        return;
-    
-    // If we have things on any worklist, then don't delete code. This is kind of
-    // a weird heuristic. It's definitely not safe to throw away code that is on
-    // the worklist. But this change was made in a hurry so we just avoid throwing
-    // away any code if there is any code on any worklist. I suspect that this
-    // might not actually be too dumb: if there is code on worklists then that
-    // means that we are running some hot JS code right now. Maybe causing
-    // recompilations isn't a good idea.
</del><ins>+    RELEASE_ASSERT(!m_vm-&gt;entryScope);
+
</ins><span class="cx"> #if ENABLE(DFG_JIT)
</span><del>-    for (unsigned i = DFG::numberOfWorklists(); i--;) {
-        if (DFG::Worklist* worklist = DFG::worklistForIndexOrNull(i)) {
-            if (worklist-&gt;isActiveForVM(*vm()))
-                return;
-        }
-    }
-#endif // ENABLE(DFG_JIT)
</del><ins>+    DFG::completeAllPlansForVM(*m_vm);
+#endif
</ins><span class="cx"> 
</span><span class="cx">     for (ExecutableBase* current : m_executables) {
</span><span class="cx">         if (!current-&gt;isFunctionExecutable())
</span><span class="lines">@@ -983,8 +969,6 @@
</span><span class="cx">     sweepAllLogicallyEmptyWeakBlocks();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static double minute = 60.0;
-
</del><span class="cx"> NEVER_INLINE void Heap::collect(HeapOperation collectionType)
</span><span class="cx"> {
</span><span class="cx">     void* stackTop;
</span><span class="lines">@@ -1035,7 +1019,6 @@
</span><span class="cx">         m_verifier-&gt;gatherLiveObjects(HeapVerifier::Phase::BeforeMarking);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    deleteOldCode(gcStartTime);
</del><span class="cx">     flushOldStructureIDTables();
</span><span class="cx">     stopAllocation();
</span><span class="cx">     flushWriteBarrierBuffer();
</span><span class="lines">@@ -1125,19 +1108,6 @@
</span><span class="cx">         m_edenActivityCallback-&gt;willCollect();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Heap::deleteOldCode(double gcStartTime)
-{
-    if (m_operationInProgress == EdenCollection)
-        return;
-
-    GCPHASE(DeleteOldCode);
-    if (gcStartTime - m_lastCodeDiscardTime &gt; minute) {
-        m_vm-&gt;regExpCache()-&gt;deleteAllCode();
-        deleteAllCodeBlocks();
-        m_lastCodeDiscardTime = WTF::monotonicallyIncreasingTime();
-    }
-}
-
</del><span class="cx"> void Heap::flushOldStructureIDTables()
</span><span class="cx"> {
</span><span class="cx">     GCPHASE(FlushOldStructureIDTables);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapHeaph"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/Heap.h (189887 => 189888)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/Heap.h        2015-09-17 00:10:33 UTC (rev 189887)
+++ trunk/Source/JavaScriptCore/heap/Heap.h        2015-09-17 00:16:35 UTC (rev 189888)
</span><span class="lines">@@ -280,7 +280,6 @@
</span><span class="cx"> 
</span><span class="cx">     void suspendCompilerThreads();
</span><span class="cx">     void willStartCollection(HeapOperation collectionType);
</span><del>-    void deleteOldCode(double gcStartTime);
</del><span class="cx">     void flushOldStructureIDTables();
</span><span class="cx">     void flushWriteBarrierBuffer();
</span><span class="cx">     void stopAllocation();
</span><span class="lines">@@ -387,7 +386,6 @@
</span><span class="cx">     VM* m_vm;
</span><span class="cx">     double m_lastFullGCLength;
</span><span class="cx">     double m_lastEdenGCLength;
</span><del>-    double m_lastCodeDiscardTime;
</del><span class="cx"> 
</span><span class="cx">     Vector&lt;ExecutableBase*&gt; m_executables;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejsccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jsc.cpp (189887 => 189888)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jsc.cpp        2015-09-17 00:10:33 UTC (rev 189887)
+++ trunk/Source/JavaScriptCore/jsc.cpp        2015-09-17 00:16:35 UTC (rev 189888)
</span><span class="lines">@@ -461,7 +461,6 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionFullGC(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionEdenGC(ExecState*);
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionHeapSize(ExecState*);
</span><del>-static EncodedJSValue JSC_HOST_CALL functionDeleteAllCompiledCode(ExecState*);
</del><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionAddressOf(ExecState*);
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionDumpCallFrame(ExecState*);
</span><span class="lines">@@ -621,7 +620,6 @@
</span><span class="cx">         addFunction(vm, &quot;fullGC&quot;, functionFullGC, 0);
</span><span class="cx">         addFunction(vm, &quot;edenGC&quot;, functionEdenGC, 0);
</span><span class="cx">         addFunction(vm, &quot;gcHeapSize&quot;, functionHeapSize, 0);
</span><del>-        addFunction(vm, &quot;deleteAllCompiledCode&quot;, functionDeleteAllCompiledCode, 0);
</del><span class="cx">         addFunction(vm, &quot;addressOf&quot;, functionAddressOf, 1);
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx">         addFunction(vm, &quot;dumpCallFrame&quot;, functionDumpCallFrame, 0);
</span><span class="lines">@@ -1133,13 +1131,6 @@
</span><span class="cx">     return JSValue::encode(jsNumber(exec-&gt;heap()-&gt;size()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue JSC_HOST_CALL functionDeleteAllCompiledCode(ExecState* exec)
-{
-    JSLockHolder lock(exec);
-    exec-&gt;heap()-&gt;deleteAllCodeBlocks();
-    return JSValue::encode(jsUndefined());
-}
-
</del><span class="cx"> // This function is not generally very helpful in 64-bit code as the tag and payload
</span><span class="cx"> // share a register. But in 32-bit JITed code the tag may not be checked if an
</span><span class="cx"> // optimization removes type checking requirements, such as in ===.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.cpp (189887 => 189888)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.cpp        2015-09-17 00:10:33 UTC (rev 189887)
+++ trunk/Source/JavaScriptCore/runtime/VM.cpp        2015-09-17 00:16:35 UTC (rev 189888)
</span><span class="lines">@@ -498,9 +498,6 @@
</span><span class="cx">     whenIdle([this]() {
</span><span class="cx">         m_codeCache-&gt;clear();
</span><span class="cx">         m_regExpCache-&gt;deleteAllCode();
</span><del>-#if ENABLE(DFG_JIT)
-        DFG::completeAllPlansForVM(*this);
-#endif
</del><span class="cx">         heap.deleteAllCodeBlocks();
</span><span class="cx">         heap.deleteAllUnlinkedCodeBlocks();
</span><span class="cx">         heap.reportAbandonedObjectGraph();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMEntryScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VMEntryScope.cpp (189887 => 189888)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VMEntryScope.cpp        2015-09-17 00:10:33 UTC (rev 189887)
+++ trunk/Source/JavaScriptCore/runtime/VMEntryScope.cpp        2015-09-17 00:16:35 UTC (rev 189888)
</span><span class="lines">@@ -40,10 +40,6 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(wtfThreadData().stack().isGrowingDownward());
</span><span class="cx">     if (!vm.entryScope) {
</span><del>-#if ENABLE(ASSEMBLER)
-        if (ExecutableAllocator::underMemoryPressure())
-            vm.heap.deleteAllCodeBlocks();
-#endif
</del><span class="cx">         vm.entryScope = this;
</span><span class="cx"> 
</span><span class="cx">         // Reset the date cache between JS invocations to force the VM to
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressdeleteAllCompiledCodejs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/deleteAllCompiledCode.js (189887 => 189888)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/deleteAllCompiledCode.js        2015-09-17 00:10:33 UTC (rev 189887)
+++ trunk/Source/JavaScriptCore/tests/stress/deleteAllCompiledCode.js        2015-09-17 00:16:35 UTC (rev 189888)
</span><span class="lines">@@ -1,1033 +0,0 @@
</span><del>-//@ 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;);
</del></span></pre>
</div>
</div>

</body>
</html>