Index: src/harmony-templates.js |
diff --git a/src/harmony-templates.js b/src/harmony-templates.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9afbe27f5207d3a35cce2747ce276958e14c6591 |
--- /dev/null |
+++ b/src/harmony-templates.js |
@@ -0,0 +1,39 @@ |
+// Copyright 2014 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+'use strict'; |
+ |
+function GetTemplateCallSite(cookedStrings, rawStrings) { |
+ // TODO(caitp): ensure same template callsite is used for subsequent tag calls |
+ var count = cookedStrings.length; |
+ var siteObj = new $Array(count); |
+ var rawObj = new $Array(count); |
+ |
+ for (var index = 0; index < count; ++index) { |
+ var prop = ToString(index); |
+ var cookedValue = cookedStrings[index]; |
+ DefineArrayProperty(siteObj, prop, ToPropertyDescriptor({ |
+ value: cookedValue, |
+ configurable: false, |
+ writable: false, |
+ enumerable: true |
+ }), false); |
+ var rawValue = rawStrings[index]; |
+ DefineArrayProperty(rawObj, prop, ToPropertyDescriptor({ |
+ value: rawValue, |
+ configurable: false, |
+ writable: false, |
+ enumerable: true |
+ }), false); |
+ } |
+ |
+ DefineObjectProperty(siteObj, "raw", ToPropertyDescriptor({ |
+ value: %ObjectFreeze(rawObj), |
+ configurable: false, |
+ writable: false, |
+ enumerable: false |
+ }), false); |
+ |
+ return %ObjectFreeze(siteObj); |
+} |