// Copyright 2013 the Octane Benchmark project authors. All rights reserved.// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are// met://// * Redistributions of source code must retain the above copyright// notice, this list of conditions and the following disclaimer.// * Redistributions in binary form must reproduce the above// copyright notice, this list of conditions and the following// disclaimer in the documentation and/or other materials provided// with the distribution.// * Neither the name of Google Inc. nor the names of its// contributors may be used to endorse or promote products derived// from this software without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.function tearDownTypescript() {compiler_input = null;}var parseErrors = [];function runTypescript() {var compiler = createCompiler();compiler.addUnit(compiler_input, "compiler_input.ts");parseErrors = [];compiler.reTypeCheck();compiler.emit({createFile: function (fileName) { return outfile; },fileExists: function (path) { return false; },directoryExists: function (path) { return false; },resolvePath: function (path) { return path; }});if (parseErrors.length != 192 && parseErrors.length != 193) {throw new Error("Parse errors.");}compiler = null;}var outfile = {checksum: -412589664,cumulative_checksum: 0,Write: function (s) { this.Verify(s); },WriteLine: function (s) { this.Verify(s + "\n"); },Close: function () {if (this.checksum != this.cumulative_checksum) {throw new Error("Wrong checksum.");}this.cumulative_checksum = 0;},Verify: function (s) {for(var i = 0; i < s.length; i++) {var c = s.charCodeAt(i);this.cumulative_checksum = (this.cumulative_checksum << 1) ^ c;}}};var outerr = {checksum: 0,cumulative_checksum: 0,Write: function (s) { this.Verify(s); },WriteLine: function (s) { this.Verify(s + "\n"); },Close: function () {if (this.checksum != this.cumulative_checksum) {throw new Error("Wrong checksum.");}this.cumulative_checksum = 0;},Verify: function (s) {for(var i = 0; i < s.length; i++) {var c = s.charCodeAt(i);this.cumulative_checksum = (this.cumulative_checksum << 1) ^ c;}}};function createCompiler() {var settings = new TypeScript.CompilationSettings();settings.codeGenTarget = TypeScript.CodeGenTarget.ES5;var compiler = new TypeScript.TypeScriptCompiler(outerr, new TypeScript.NullLogger, settings);compiler.setErrorCallback(function (start, len, message) {parseErrors.push({ start: start, len: len, message: message });});compiler.parser.errorRecovery = true;compiler.typeCheck();return compiler}// The two files accompanying this benchmark contain a modified version of the// Typescript compiler. They can be generated using the following instructions// with the code available at:// http://typescript.codeplex.com/SourceControl/changeset/view/258e00903a9e//// 1) Copy the compiler from $TYPESCRIPT/bin/tsc.js to typescript-compiler.js// 2) Remove the call to the batch compiler from the last line of tsc.js// 3) Add this code after line 7963 (fix for Mozilla Firefox):// if (this.currentToken === undefined)// this.currentToken = this.scanner.scan();// 4) Add this code after line 9142 (fix for Mozilla Firefox):// if (this.currentToken === undefined) {// this.currentToken = this.scanner.scan();// continue;// }// 5) Generate the Typescript compiler input using the following command:// $ cat $TYPESCRIPT/src/compiler/*.ts | iconv -c -f utf8 -t ascii \// | dos2unix > /tmp/compiler_input// 6) Run the following Python script to generate the reformatted input:// $ python script.py > typescript-input.js//// #!/usr/bin/env python// import re;// def escape_and_format(data, varname):// data = data.replace("\\", "\\\\").replace("\"", "\\\"")// .replace("\n", "\\n");// data = "var " + varname + " = \"" + data + "\""// print data;// result = open("/tmp/compiler_input", 'r');// escape_and_format(result.read(), "compiler_input")//// The following is the original copyright notice present in the Typescript// compiler source at the time this benchmark was generated:///* *****************************************************************************Copyright (c) Microsoft Corporation. All rights reserved.Licensed under the Apache License, Version 2.0 (the "License"); you may not usethis file except in compliance with the License. You may obtain a copy of theLicense at http://www.apache.org/licenses/LICENSE-2.0THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANYKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIEDWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,MERCHANTABLITY OR NON-INFRINGEMENT.See the Apache Version 2.0 License for specific language governing permissionsand limitations under the License.***************************************************************************** */class Benchmark {runIteration() {runTypescript();}}