diff --git a/lib/salve/patterns.js b/lib/salve/patterns.js
index <HASH>..<HASH> 100644
--- a/lib/salve/patterns.js
+++ b/lib/salve/patterns.js
@@ -562,9 +562,16 @@ PatternTwoPatterns.prototype._elementDefinitions = function (memo) {
  * of the event parameters must be strings.
  */
 function Event() {
-    var params = (arguments[0] instanceof Array) ?
-        arguments[0] :
-        Array.prototype.slice.call(arguments);
+    var params;
+    if (arguments[0] instanceof Array)
+        params = arguments[0];
+    else {
+        // We do it this way to allow v8 to optimize the function.
+        var lim = arguments.length;
+        params = new Array(lim);
+        for (var i = 0; i < lim; ++i)
+            params[i] = arguments[i];
+    }
 
     var key = params.join();
Optimized the Event constructor.

The way arguments used to be manipulated caused v8 to bail out from
optimizing the function. The new code allows optimization to
happen. This made a <I> second difference in loading the prasaada
article on BTW (from 7s to <I>s, > <I>% difference).