From 3bc01168d85bab8f2d67f5e1fb3492c7318489a7 Mon Sep 17 00:00:00 2001 From: Jun Kato Date: Wed, 9 Dec 2015 12:54:01 +0900 Subject: [PATCH 01/29] a tiny bit of acceleration. --- interpreter.js | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/interpreter.js b/interpreter.js index 1c3775a5..48a591fe 100644 --- a/interpreter.js +++ b/interpreter.js @@ -48,7 +48,8 @@ Interpreter.prototype.step = function() { return false; } var state = this.stateStack[0]; - this['step' + state.node.type](); + //this['step' + state.node.type](); + stepTable[state.node.type].call(this); return true; }; @@ -2358,6 +2359,48 @@ Interpreter.prototype['stepVariableDeclarator'] = function() { Interpreter.prototype['stepWhileStatement'] = Interpreter.prototype['stepDoWhileStatement']; +var stepTable = { + 'ArrayExpression': Interpreter.prototype.stepArrayExpression, + 'AssignmentExpression': Interpreter.prototype.stepAssignmentExpression, + 'BinaryExpression': Interpreter.prototype.stepBinaryExpression, + 'BreakStatement': Interpreter.prototype.stepBreakStatement, + 'BlockStatement': Interpreter.prototype.stepBlockStatement, + 'CallExpression': Interpreter.prototype.stepCallExpression, + 'ConditionalExpression': Interpreter.prototype.stepConditionalExpression, + 'ContinueStatement': Interpreter.prototype.stepContinueStatement, + 'DoWhileStatement': Interpreter.prototype.stepDoWhileStatement, + 'EmptyStatement': Interpreter.prototype.stepEmptyStatement, + 'Eval_': Interpreter.prototype.stepEval_, + 'ExpressionStatement': Interpreter.prototype.stepExpressionStatement, + 'ForInStatement': Interpreter.prototype.stepForInStatement, + 'ForStatement': Interpreter.prototype.stepForStatement, + 'FunctionDeclaration': Interpreter.prototype.stepFunctionDeclaration, + 'FunctionExpression': Interpreter.prototype.stepFunctionExpression, + 'Identifier': Interpreter.prototype.stepIdentifier, + 'IfStatement': Interpreter.prototype.stepIfStatement, + 'ConditionalExpression': Interpreter.prototype.stepConditionalExpression, + 'LabeledStatement': Interpreter.prototype.stepLabeledStatement, + 'Literal': Interpreter.prototype.stepLiteral, + 'LogicalExpression': Interpreter.prototype.stepLogicalExpression, + 'MemberExpression': Interpreter.prototype.stepMemberExpression, + 'NewExpression': Interpreter.prototype.stepNewExpression, + 'CallExpression': Interpreter.prototype.stepCallExpression, + 'ObjectExpression': Interpreter.prototype.stepObjectExpression, + 'Program': Interpreter.prototype.stepProgram, + 'BlockStatement': Interpreter.prototype.stepBlockStatement, + 'ReturnStatement': Interpreter.prototype.stepReturnStatement, + 'SequenceExpression': Interpreter.prototype.stepSequenceExpression, + 'SwitchStatement': Interpreter.prototype.stepSwitchStatement, + 'ThisExpression': Interpreter.prototype.stepThisExpression, + 'ThrowStatement': Interpreter.prototype.stepThrowStatement, + 'UnaryExpression': Interpreter.prototype.stepUnaryExpression, + 'UpdateExpression': Interpreter.prototype.stepUpdateExpression, + 'VariableDeclaration': Interpreter.prototype.stepVariableDeclaration, + 'VariableDeclarator': Interpreter.prototype.stepVariableDeclarator, + 'WhileStatement': Interpreter.prototype.stepWhileStatement, + 'DoWhileStatement': Interpreter.prototype.stepDoWhileStatement +}; + // Preserve top-level API functions from being pruned by JS compilers. // Add others as needed. window['Interpreter'] = Interpreter; From a1a9a8ecf97564c48702007c620d41d9c93aa851 Mon Sep 17 00:00:00 2001 From: Jun Kato Date: Sat, 12 Aug 2017 14:10:07 +0900 Subject: [PATCH 02/29] Revert "a tiny bit of acceleration." This reverts commit 3bc01168d85bab8f2d67f5e1fb3492c7318489a7. --- interpreter.js | 45 +-------------------------------------------- 1 file changed, 1 insertion(+), 44 deletions(-) diff --git a/interpreter.js b/interpreter.js index 48a591fe..1c3775a5 100644 --- a/interpreter.js +++ b/interpreter.js @@ -48,8 +48,7 @@ Interpreter.prototype.step = function() { return false; } var state = this.stateStack[0]; - //this['step' + state.node.type](); - stepTable[state.node.type].call(this); + this['step' + state.node.type](); return true; }; @@ -2359,48 +2358,6 @@ Interpreter.prototype['stepVariableDeclarator'] = function() { Interpreter.prototype['stepWhileStatement'] = Interpreter.prototype['stepDoWhileStatement']; -var stepTable = { - 'ArrayExpression': Interpreter.prototype.stepArrayExpression, - 'AssignmentExpression': Interpreter.prototype.stepAssignmentExpression, - 'BinaryExpression': Interpreter.prototype.stepBinaryExpression, - 'BreakStatement': Interpreter.prototype.stepBreakStatement, - 'BlockStatement': Interpreter.prototype.stepBlockStatement, - 'CallExpression': Interpreter.prototype.stepCallExpression, - 'ConditionalExpression': Interpreter.prototype.stepConditionalExpression, - 'ContinueStatement': Interpreter.prototype.stepContinueStatement, - 'DoWhileStatement': Interpreter.prototype.stepDoWhileStatement, - 'EmptyStatement': Interpreter.prototype.stepEmptyStatement, - 'Eval_': Interpreter.prototype.stepEval_, - 'ExpressionStatement': Interpreter.prototype.stepExpressionStatement, - 'ForInStatement': Interpreter.prototype.stepForInStatement, - 'ForStatement': Interpreter.prototype.stepForStatement, - 'FunctionDeclaration': Interpreter.prototype.stepFunctionDeclaration, - 'FunctionExpression': Interpreter.prototype.stepFunctionExpression, - 'Identifier': Interpreter.prototype.stepIdentifier, - 'IfStatement': Interpreter.prototype.stepIfStatement, - 'ConditionalExpression': Interpreter.prototype.stepConditionalExpression, - 'LabeledStatement': Interpreter.prototype.stepLabeledStatement, - 'Literal': Interpreter.prototype.stepLiteral, - 'LogicalExpression': Interpreter.prototype.stepLogicalExpression, - 'MemberExpression': Interpreter.prototype.stepMemberExpression, - 'NewExpression': Interpreter.prototype.stepNewExpression, - 'CallExpression': Interpreter.prototype.stepCallExpression, - 'ObjectExpression': Interpreter.prototype.stepObjectExpression, - 'Program': Interpreter.prototype.stepProgram, - 'BlockStatement': Interpreter.prototype.stepBlockStatement, - 'ReturnStatement': Interpreter.prototype.stepReturnStatement, - 'SequenceExpression': Interpreter.prototype.stepSequenceExpression, - 'SwitchStatement': Interpreter.prototype.stepSwitchStatement, - 'ThisExpression': Interpreter.prototype.stepThisExpression, - 'ThrowStatement': Interpreter.prototype.stepThrowStatement, - 'UnaryExpression': Interpreter.prototype.stepUnaryExpression, - 'UpdateExpression': Interpreter.prototype.stepUpdateExpression, - 'VariableDeclaration': Interpreter.prototype.stepVariableDeclaration, - 'VariableDeclarator': Interpreter.prototype.stepVariableDeclarator, - 'WhileStatement': Interpreter.prototype.stepWhileStatement, - 'DoWhileStatement': Interpreter.prototype.stepDoWhileStatement -}; - // Preserve top-level API functions from being pruned by JS compilers. // Add others as needed. window['Interpreter'] = Interpreter; From 96a60dcff6671ecbdb372593069322a21aeec50a Mon Sep 17 00:00:00 2001 From: Jun Kato Date: Sat, 12 Aug 2017 15:01:56 +0900 Subject: [PATCH 03/29] Naive rewriting of interpreter.js into TypeScript. --- .gitignore | 1 + interpreter.js => interpreter.orig.js | 0 interpreter.ts | 3534 +++++++++++++++++++++++++ package-lock.json | 13 + package.json | 20 + tsconfig.json | 7 + 6 files changed, 3575 insertions(+) rename interpreter.js => interpreter.orig.js (100%) create mode 100644 interpreter.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index aebe00aa..464c9db8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.komodoproject +node_modules/ diff --git a/interpreter.js b/interpreter.orig.js similarity index 100% rename from interpreter.js rename to interpreter.orig.js diff --git a/interpreter.ts b/interpreter.ts new file mode 100644 index 00000000..ffd442e3 --- /dev/null +++ b/interpreter.ts @@ -0,0 +1,3534 @@ +/// + +// Declare missing functions +declare function escape(s:string): string; +declare function unescape(s:string): string; +interface ArrayConstructor { + from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): Array; + from(arrayLike: ArrayLike): Array; +} +declare module acorn { + function parse(code: string, options?: any): any; +} + +/** + * @license + * JavaScript Interpreter + * + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview Interpreting JavaScript in JavaScript. + * @author fraser@google.com (Neil Fraser) + */ + +/** + * Create a new interpreter. + * @param {string|!Object} code Raw JavaScript text or AST. + * @param {Function=} opt_initFunc Optional initialization function. Used to + * define APIs. When called it is passed the interpreter object and the + * global scope object. + * @constructor + */ +class Interpreter { +[key: string]: any; + +constructor(code: string, opt_initFunc?: Function) { + if (typeof code === 'string') { + code = acorn.parse(code, Interpreter.PARSE_OPTIONS); + } + this.ast = code; + this.initFunc_ = opt_initFunc; + this.paused_ = false; + this.polyfills_ = []; + // Unique identifier for native functions. Used in serialization. + this.functionCounter_ = 0; + // Map node types to our step function names; a property lookup is faster + // than string concatenation with "step" prefix. + this.stepFunctions_ = Object.create(null); + var stepMatch = /^step([A-Z]\w*)$/; + var m; + for (var methodName in this) { + if ((typeof this[methodName] === 'function') && + (m = methodName.match(stepMatch))) { + this.stepFunctions_[m[1]] = (this[methodName]).bind(this); + } + } + // Create and initialize the global scope. + this.global = this.createScope(this.ast, null); + // Run the polyfills. + this.ast = acorn.parse(this.polyfills_.join('\n'), Interpreter.PARSE_OPTIONS); + this.polyfills_ = undefined; // Allow polyfill strings to garbage collect. + this.stripLocations_(this.ast, undefined, undefined); + var state = new Interpreter.MyState(this.ast, this.global); + state.done = false; + this.stateStack = [state]; + this.run(); + this.value = undefined; + // Point at the main program. + this.ast = code; + var state = new Interpreter.MyState(this.ast, this.global); + state.done = false; + this.stateStack.length = 0; + this.stateStack[0] = state; + // Get a handle on Acorn's node_t object. It's tricky to access. + this.nodeConstructor = state.node.constructor; + // Preserve publicly properties from being pruned/renamed by JS compilers. + // Add others as needed. + this['stateStack'] = this.stateStack; + this['OBJECT'] = this.OBJECT; this['OBJECT_PROTO'] = this.OBJECT_PROTO; + this['FUNCTION'] = this.FUNCTION; this['FUNCTION_PROTO'] = this.FUNCTION_PROTO; + this['ARRAY'] = this.ARRAY; this['ARRAY_PROTO'] = this.ARRAY_PROTO; + this['REGEXP'] = this.REGEXP; this['REGEXP_PROTO'] = this.REGEXP_PROTO; + // The following properties are obsolete. Do not use. + this['UNDEFINED'] = undefined; this['NULL'] = null; this['NAN'] = NaN; + this['TRUE'] = true; this['FALSE'] = false; this['STRING_EMPTY'] = ''; + this['NUMBER_ZERO'] = 0; this['NUMBER_ONE'] = 1; +}; + +/** + * @const {!Object} Configuration used for all Acorn parsing. + */ +static PARSE_OPTIONS = { + ecmaVersion: 5 +}; + +/** + * Property descriptor of readonly properties. + */ +static READONLY_DESCRIPTOR = { + configurable: true, + enumerable: true, + writable: false +}; + +/** + * Property descriptor of non-enumerable properties. + */ +static NONENUMERABLE_DESCRIPTOR = { + configurable: true, + enumerable: false, + writable: true +}; + +/** + * Property descriptor of readonly, non-enumerable properties. + */ +static READONLY_NONENUMERABLE_DESCRIPTOR = { + configurable: true, + enumerable: false, + writable: false +}; + +/** + * Property descriptor of variables. + */ +static VARIABLE_DESCRIPTOR = { + configurable: false, + enumerable: true, + writable: true +}; + +/** + * Unique symbol for indicating that a step has encountered an error, has + * added it to the stack, and will be thrown within the user's program. + * When STEP_ERROR is thrown in the JS-Interpreter, the error can be ignored. + */ +static STEP_ERROR = {}; + +/** + * Unique symbol for indicating that a reference is a variable on the scope, + * not an object property. + */ +static SCOPE_REFERENCE = {}; + +/** + * For cycle detection in array to string and error conversion; + * see spec bug github.com/tc39/ecma262/issues/289 + * Since this is for atomic actions only, it can be a class property. + */ +static toStringCycles_ = []; + +/** + * Add more code to the interpreter. + * @param {string|!Object} code Raw JavaScript text or AST. + */ +public appendCode(code) { + var state = this.stateStack[0]; + if (!state || state.node['type'] !== 'Program') { + throw Error('Expecting original AST to start with a Program node.'); + } + if (typeof code === 'string') { + code = acorn.parse(code, Interpreter.PARSE_OPTIONS); + } + if (!code || code['type'] !== 'Program') { + throw Error('Expecting new AST to start with a Program node.'); + } + this.populateScope_(code, state.scope); + // Append the new program to the old one. + for (var i = 0, node; (node = code['body'][i]); i++) { + state.node['body'].push(node); + } + state.done = false; +}; + +/** + * Execute one step of the interpreter. + * @return {boolean} True if a step was executed, false if no more instructions. + */ +public step() { + var stack = this.stateStack; + var state = stack[stack.length - 1]; + if (!state) { + return false; + } + var node = state.node, type = node['type']; + if (type === 'Program' && state.done) { + return false; + } else if (this.paused_) { + return true; + } + try { + var nextState = this.stepFunctions_[type](stack, state, node); + } catch (e) { + // Eat any step errors. They have been thrown on the stack. + if (e !== Interpreter.STEP_ERROR) { + // Uh oh. This is a real error in the JS-Interpreter. Rethrow. + throw e; + } + } + if (nextState) { + stack.push(nextState); + } + if (!node['end']) { + // This is polyfill code. Keep executing until we arrive at user code. + return this.step(); + } + return true; +}; + +/** + * Execute the interpreter to program completion. Vulnerable to infinite loops. + * @return {boolean} True if a execution is asynchronously blocked, + * false if no more instructions. + */ +public run() { + while (!this.paused_ && this.step()) {} + return this.paused_; +}; + +/** + * Initialize the global scope with buitin properties and functions. + * @param {!Interpreter.MyObject} scope Global scope. + */ +public initGlobalScope(scope) { + // Initialize uneditable global properties. + this.setProperty(scope, 'NaN', NaN, + Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'Infinity', Infinity, + Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'undefined', undefined, + Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'window', scope, + Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'this', scope, + Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'self', scope); // Editable. + + // Create the objects which will become Object.prototype and + // Function.prototype, which are needed to bootstrap everything else. + this.OBJECT_PROTO = new Interpreter.MyObject(null); + this.FUNCTION_PROTO = new Interpreter.MyObject(this.OBJECT_PROTO); + // Initialize global objects. + this.initFunction(scope); + this.initObject(scope); + // Unable to set scope's parent prior (OBJECT did not exist). + // Note that in a browser this would be 'Window', whereas in Node.js it would + // be 'Object'. This interpreter is closer to Node in that it has no DOM. + scope.proto = this.OBJECT_PROTO; + this.setProperty(scope, 'constructor', this.OBJECT); + this.initArray(scope); + this.initString(scope); + this.initBoolean(scope); + this.initNumber(scope); + this.initDate(scope); + this.initRegExp(scope); + this.initError(scope); + this.initMath(scope); + this.initJSON(scope); + + // Initialize global functions. + var thisInterpreter = this; + var func = this.createNativeFunction( + function(x) {throw EvalError("Can't happen");}, false); + func.eval = true; + this.setProperty(scope, 'eval', func); + + this.setProperty(scope, 'parseInt', + this.createNativeFunction(parseInt, false)); + this.setProperty(scope, 'parseFloat', + this.createNativeFunction(parseFloat, false)); + + this.setProperty(scope, 'isNaN', + this.createNativeFunction(isNaN, false)); + + this.setProperty(scope, 'isFinite', + this.createNativeFunction(isFinite, false)); + + var strFunctions: any[] = [ + [escape, 'escape'], [unescape, 'unescape'], + [decodeURI, 'decodeURI'], [decodeURIComponent, 'decodeURIComponent'], + [encodeURI, 'encodeURI'], [encodeURIComponent, 'encodeURIComponent'] + ]; + for (var i = 0; i < strFunctions.length; i++) { + var wrapper = (function(nativeFunc: (s: string) => string) { + return function(str) { + try { + return nativeFunc(str); + } catch (e) { + // decodeURI('%xy') will throw an error. Catch and rethrow. + thisInterpreter.throwException(thisInterpreter.URI_ERROR, e.message); + } + }; + })(strFunctions[i][0]); + this.setProperty(scope, strFunctions[i][1], + this.createNativeFunction(wrapper, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + } + + // Run any user-provided initialization. + if (this.initFunc_) { + this.initFunc_(this, scope); + } +}; + +/** + * Initialize the Function class. + * @param {!Interpreter.MyObject} scope Global scope. + */ +public initFunction(scope) { + var thisInterpreter = this; + var wrapper; + var identifierRegexp = /^[A-Za-z_$][\w$]*$/; + // Function constructor. + wrapper = function(var_args) { + if (thisInterpreter.calledWithNew()) { + // Called as new Function(). + var newFunc = this; + } else { + // Called as Function(). + var newFunc = + thisInterpreter.createObjectProto(thisInterpreter.FUNCTION_PROTO); + } + if (arguments.length) { + var code = String(arguments[arguments.length - 1]); + } else { + var code = ''; + } + var args: string[] | string = []; + for (var i = 0; i < arguments.length - 1; i++) { + var name = String(arguments[i]); + if (!name.match(identifierRegexp)) { + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, + 'Invalid function argument: ' + name); + } + args.push(name); + } + args = args.join(', '); + // Interestingly, the scope for constructed functions is the global scope, + // even if they were constructed in some other scope. + newFunc.parentScope = thisInterpreter.global; + // Acorn needs to parse code in the context of a function or else 'return' + // statements will be syntax errors. + try { + var ast = acorn.parse('$ = function(' + args + ') {' + code + '};', + Interpreter.PARSE_OPTIONS); + } catch (e) { + // Acorn threw a SyntaxError. Rethrow as a trappable error. + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, + 'Invalid code: ' + e.message); + } + if (ast['body'].length !== 1) { + // Function('a', 'return a + 6;}; {alert(1);'); + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, + 'Invalid code in function body.'); + } + newFunc.node = ast['body'][0]['expression']['right']; + thisInterpreter.setProperty(newFunc, 'length', newFunc.node['length'], + Interpreter.READONLY_DESCRIPTOR); + return newFunc; + }; + wrapper.id = this.functionCounter_++; + this.FUNCTION = this.createObjectProto(this.FUNCTION_PROTO); + + this.setProperty(scope, 'Function', this.FUNCTION); + // Manually setup type and prototype because createObj doesn't recognize + // this object as a function (this.FUNCTION did not exist). + this.setProperty(this.FUNCTION, 'prototype', this.FUNCTION_PROTO); + this.FUNCTION.nativeFunc = wrapper; + + // Configure Function.prototype. + this.setProperty(this.FUNCTION_PROTO, 'constructor', this.FUNCTION, + Interpreter.NONENUMERABLE_DESCRIPTOR); + this.FUNCTION_PROTO.nativeFunc = function() {}; + this.FUNCTION_PROTO.nativeFunc.id = this.functionCounter_++; + this.setProperty(this.FUNCTION_PROTO, 'length', 0, + Interpreter.READONLY_DESCRIPTOR); + + var boxThis = function(value) { + // In non-strict mode 'this' must be an object. + if ((!value || !value.isObject) && !thisInterpreter.getScope().strict) { + if (value === undefined || value === null) { + // 'Undefined' and 'null' are changed to global object. + value = thisInterpreter.global; + } else { + // Primitives must be boxed in non-strict mode. + var box = thisInterpreter.createObjectProto( + thisInterpreter.getPrototype(value)); + box.data = value; + value = box; + } + } + return value; + }; + + wrapper = function(thisArg, args) { + var state = + thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1]; + // Rewrite the current 'CallExpression' to apply a different function. + state.func_ = this; + // Assign the 'this' object. + state.funcThis_ = boxThis(thisArg); + // Bind any provided arguments. + state.arguments_ = []; + if (args !== null && args !== undefined) { + if (args.isObject) { + state.arguments_ = thisInterpreter.pseudoToNative(args); + } else { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, + 'CreateListFromArrayLike called on non-object'); + } + } + state.doneExec_ = false; + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'apply', wrapper); + + wrapper = function(thisArg, var_args) { + var state = + thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1]; + // Rewrite the current 'CallExpression' to call a different function. + state.func_ = this; + // Assign the 'this' object. + state.funcThis_ = boxThis(thisArg); + // Bind any provided arguments. + state.arguments_ = []; + for (var i = 1; i < arguments.length; i++) { + state.arguments_.push(arguments[i]); + } + state.doneExec_ = false; + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'call', wrapper); + + this.polyfills_.push( +// Polyfill copied from: +// developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind +"Object.defineProperty(Function.prototype, 'bind',", + "{configurable: true, writable: true, value:", + "function(oThis) {", + "if (typeof this !== 'function') {", + "throw TypeError('What is trying to be bound is not callable');", + "}", + "var aArgs = Array.prototype.slice.call(arguments, 1),", + "fToBind = this,", + "fNOP = function() {},", + "fBound = function() {", + "return fToBind.apply(this instanceof fNOP", + "? this", + ": oThis,", + "aArgs.concat(Array.prototype.slice.call(arguments)));", + "};", + "if (this.prototype) {", + "fNOP.prototype = this.prototype;", + "}", + "fBound.prototype = new fNOP();", + "return fBound;", + "}", +"});", +""); + + // Function has no parent to inherit from, so it needs its own mandatory + // toString and valueOf functions. + wrapper = function() { + return this.toString(); + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'toString', wrapper); + this.setProperty(this.FUNCTION, 'toString', + this.createNativeFunction(wrapper, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function() { + return this.valueOf(); + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'valueOf', wrapper); + this.setProperty(this.FUNCTION, 'valueOf', + this.createNativeFunction(wrapper, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); +}; + +/** + * Initialize the Object class. + * @param {!Interpreter.MyObject} scope Global scope. + */ +public initObject(scope) { + var thisInterpreter = this; + var wrapper; + // Object constructor. + wrapper = function(value) { + if (value === undefined || value === null) { + // Create a new object. + if (thisInterpreter.calledWithNew()) { + // Called as new Object(). + return this; + } else { + // Called as Object(). + return thisInterpreter.createObjectProto(thisInterpreter.OBJECT_PROTO); + } + } + if (!value.isObject) { + // Wrap the value as an object. + var box = thisInterpreter.createObjectProto( + thisInterpreter.getPrototype(value)); + box.data = value; + return box; + } + // Return the provided object. + return value; + }; + this.OBJECT = this.createNativeFunction(wrapper, true); + // Throw away the created prototype and use the root prototype. + this.setProperty(this.OBJECT, 'prototype', this.OBJECT_PROTO); + this.setProperty(this.OBJECT_PROTO, 'constructor', this.OBJECT); + this.setProperty(scope, 'Object', this.OBJECT); + + /** + * Checks if the provided value is null or undefined. + * If so, then throw an error in the call stack. + * @param {Interpreter.Value} value Value to check. + */ + var throwIfNullUndefined = function(value) { + if (value === undefined || value === null) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, + "Cannot convert '" + value + "' to object"); + } + }; + + // Static methods on Object. + wrapper = function(obj) { + throwIfNullUndefined(obj); + var props = obj.isObject ? obj.properties : obj; + return thisInterpreter.nativeToPseudo(Object.getOwnPropertyNames(props)); + }; + this.setProperty(this.OBJECT, 'getOwnPropertyNames', + this.createNativeFunction(wrapper, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + + wrapper = function(obj) { + throwIfNullUndefined(obj); + if (!obj.isObject) { + return thisInterpreter.nativeToPseudo(Object.keys(obj)); + } + return thisInterpreter.nativeToPseudo(Object.keys(obj.properties)); + }; + this.setProperty(this.OBJECT, 'keys', + this.createNativeFunction(wrapper, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + + wrapper = function(proto) { + // Support for the second argument is the responsibility of a polyfill. + if (proto === null) { + return thisInterpreter.createObjectProto(null); + } + if (proto === undefined || !proto.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, + 'Object prototype may only be an Object or null'); + } + return thisInterpreter.createObjectProto(proto); + }; + this.setProperty(this.OBJECT, 'create', + this.createNativeFunction(wrapper, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + + // Add a polyfill to handle create's second argument. + this.polyfills_.push( +"(function() {", + "var create_ = Object.create;", + "Object.create = function(proto, props) {", + "var obj = create_(proto);", + "props && Object.defineProperties(obj, props);", + "return obj;", + "};", +"})();", +""); + + wrapper = function(obj, prop, descriptor) { + prop = String(prop); + if (!obj || !obj.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, + 'Object.defineProperty called on non-object'); + } + if (!descriptor || !descriptor.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, + 'Property description must be an object'); + } + if (!obj.properties[prop] && obj.preventExtensions) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, + "Can't define property '" + prop + "', object is not extensible"); + } + // The polyfill guarantees no inheritance and no getter functions. + // Therefore the descriptor properties map is the native object needed. + thisInterpreter.setProperty(obj, prop, ReferenceError, + descriptor.properties); + return obj; + }; + this.setProperty(this.OBJECT, 'defineProperty', + this.createNativeFunction(wrapper, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + + this.polyfills_.push( +// Flatten the descriptor to remove any inheritance or getter functions. +"(function() {", + "var defineProperty_ = Object.defineProperty;", + "Object.defineProperty = function(obj, prop, d1) {", + "var d2 = {};", + "if ('configurable' in d1) d2.configurable = d1.configurable;", + "if ('enumerable' in d1) d2.enumerable = d1.enumerable;", + "if ('writable' in d1) d2.writable = d1.writable;", + "if ('value' in d1) d2.value = d1.value;", + "if ('get' in d1) d2.get = d1.get;", + "if ('set' in d1) d2.set = d1.set;", + "return defineProperty_(obj, prop, d2);", + "};", +"})();", + +"Object.defineProperty(Object, 'defineProperties',", + "{configurable: true, writable: true, value:", + "function(obj, props) {", + "var keys = Object.keys(props);", + "for (var i = 0; i < keys.length; i++) {", + "Object.defineProperty(obj, keys[i], props[keys[i]]);", + "}", + "return obj;", + "}", +"});", +""); + + wrapper = function(obj, prop) { + if (!obj || !obj.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, + 'Object.getOwnPropertyDescriptor called on non-object'); + } + prop = String(prop); + if (!(prop in obj.properties)) { + return undefined; + } + var descriptor = Object.getOwnPropertyDescriptor(obj.properties, prop); + var getter = obj.getter[prop]; + var setter = obj.setter[prop]; + + if (getter || setter) { + descriptor.get = getter; + descriptor.set = setter; + delete descriptor.value; + delete descriptor.writable; + } + var pseudoDescriptor = thisInterpreter.nativeToPseudo(descriptor); + if ('value' in descriptor) { + thisInterpreter.setProperty(pseudoDescriptor, 'value', descriptor.value); + } + return pseudoDescriptor; + }; + this.setProperty(this.OBJECT, 'getOwnPropertyDescriptor', + this.createNativeFunction(wrapper, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + + wrapper = function(obj) { + throwIfNullUndefined(obj); + return thisInterpreter.getPrototype(obj); + }; + this.setProperty(this.OBJECT, 'getPrototypeOf', + this.createNativeFunction(wrapper, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + + wrapper = function(obj) { + return Boolean(obj) && !obj.preventExtensions; + }; + this.setProperty(this.OBJECT, 'isExtensible', + this.createNativeFunction(wrapper, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + + wrapper = function(obj) { + if (obj && obj.isObject) { + obj.preventExtensions = true; + } + return obj; + }; + this.setProperty(this.OBJECT, 'preventExtensions', + this.createNativeFunction(wrapper, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + + // Instance methods on Object. + this.setNativeFunctionPrototype(this.OBJECT, 'toString', + Interpreter.MyObject.prototype.toString); + this.setNativeFunctionPrototype(this.OBJECT, 'toLocaleString', + Interpreter.MyObject.prototype.toString); + this.setNativeFunctionPrototype(this.OBJECT, 'valueOf', + Interpreter.MyObject.prototype.valueOf); + + wrapper = function(prop) { + throwIfNullUndefined(this); + if (!this.isObject) { + return this.hasOwnProperty(prop); + } + return String(prop) in this.properties; + }; + this.setNativeFunctionPrototype(this.OBJECT, 'hasOwnProperty', wrapper); + + wrapper = function(prop) { + throwIfNullUndefined(this); + return Object.prototype.propertyIsEnumerable.call(this.properties, prop); + }; + this.setNativeFunctionPrototype(this.OBJECT, 'propertyIsEnumerable', wrapper); + + wrapper = function(obj) { + while (true) { + // Note, circular loops shouldn't be possible. + obj = thisInterpreter.getPrototype(obj); + if (!obj) { + // No parent; reached the top. + return false; + } + if (obj === this) { + return true; + } + } + }; + this.setNativeFunctionPrototype(this.OBJECT, 'isPrototypeOf', wrapper); +}; + +/** + * Initialize the Array class. + * @param {!Interpreter.MyObject} scope Global scope. + */ +public initArray(scope) { + var thisInterpreter = this; + var getInt = function(obj, def) { + // Return an integer, or the default. + var n = obj ? Math.floor(obj) : def; + if (isNaN(n)) { + n = def; + } + return n; + }; + var wrapper; + // Array constructor. + wrapper = function(var_args) { + if (thisInterpreter.calledWithNew()) { + // Called as new Array(). + var newArray = this; + } else { + // Called as Array(). + var newArray = + thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO); + } + var first = arguments[0]; + if (arguments.length === 1 && typeof first === 'number') { + if (isNaN(Interpreter.legalArrayLength(first))) { + thisInterpreter.throwException(thisInterpreter.RANGE_ERROR, + 'Invalid array length'); + } + newArray.properties.length = first; + } else { + for (var i = 0; i < arguments.length; i++) { + newArray.properties[i] = arguments[i]; + } + newArray.properties.length = i; + } + return newArray; + }; + this.ARRAY = this.createNativeFunction(wrapper, true); + this.ARRAY_PROTO = this.ARRAY.properties['prototype']; + this.setProperty(scope, 'Array', this.ARRAY); + + // Static methods on Array. + wrapper = function(obj) { + return obj && obj.class === 'Array'; + }; + this.setProperty(this.ARRAY, 'isArray', + this.createNativeFunction(wrapper, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + + // Instance methods on Array. + wrapper = function() { + return Array.prototype.pop.call(this.properties); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'pop', wrapper); + + wrapper = function(var_args) { + return Array.prototype.push.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'push', wrapper); + + wrapper = function() { + return Array.prototype.shift.call(this.properties); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'shift', wrapper); + + wrapper = function(var_args) { + return Array.prototype.unshift.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'unshift', wrapper); + + wrapper = function() { + Array.prototype.reverse.call(this.properties); + return this; + }; + this.setNativeFunctionPrototype(this.ARRAY, 'reverse', wrapper); + + wrapper = function(index, howmany /*, var_args*/) { + var list = Array.prototype.splice.apply(this.properties, arguments); + return thisInterpreter.nativeToPseudo(list); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'splice', wrapper); + + wrapper = function(opt_begin, opt_end) { + var list = Array.prototype.slice.call(this.properties, opt_begin, opt_end); + return thisInterpreter.nativeToPseudo(list); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'slice', wrapper); + + wrapper = function(opt_separator) { + return Array.prototype.join.call(this.properties, opt_separator); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'join', wrapper); + + wrapper = function(var_args) { + var list = []; + var length = 0; + // Start by copying the current array. + var iLength = thisInterpreter.getProperty(this, 'length'); + for (var i = 0; i < iLength; i++) { + if (thisInterpreter.hasProperty(this, i)) { + var element = thisInterpreter.getProperty(this, i); + list[length] = element; + } + length++; + } + // Loop through all arguments and copy them in. + for (var i = 0; i < arguments.length; i++) { + var value = arguments[i]; + if (thisInterpreter.isa(value, thisInterpreter.ARRAY)) { + var jLength = thisInterpreter.getProperty(value, 'length'); + for (var j = 0; j < jLength; j++) { + if (thisInterpreter.hasProperty(value, j)) { + list[length] = thisInterpreter.getProperty(value, j); + } + length++; + } + } else { + list[length] = value; + } + } + return thisInterpreter.nativeToPseudo(list); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'concat', wrapper); + + wrapper = function(searchElement, opt_fromIndex) { + return Array.prototype.indexOf.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'indexOf', wrapper); + + wrapper = function(searchElement, opt_fromIndex) { + return Array.prototype.lastIndexOf.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'lastIndexOf', wrapper); + + wrapper = function() { + Array.prototype.sort.call(this.properties); + return this; + }; + this.setNativeFunctionPrototype(this.ARRAY, 'sort', wrapper); + + this.polyfills_.push( +// Polyfill copied from: +// developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/every +"Object.defineProperty(Array.prototype, 'every',", + "{configurable: true, writable: true, value:", + "function(callbackfn, thisArg) {", + "if (!this || typeof callbackfn !== 'function') throw TypeError();", + "var T, k;", + "var O = Object(this);", + "var len = O.length >>> 0;", + "if (arguments.length > 1) T = thisArg;", + "k = 0;", + "while (k < len) {", + "if (k in O && !callbackfn.call(T, O[k], k, O)) return false;", + "k++;", + "}", + "return true;", + "}", +"});", + +// Polyfill copied from: +// developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/filter +"Object.defineProperty(Array.prototype, 'filter',", + "{configurable: true, writable: true, value:", + "function(fun/*, thisArg*/) {", + "if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();", + "var t = Object(this);", + "var len = t.length >>> 0;", + "var res = [];", + "var thisArg = arguments.length >= 2 ? arguments[1] : void 0;", + "for (var i = 0; i < len; i++) {", + "if (i in t) {", + "var val = t[i];", + "if (fun.call(thisArg, val, i, t)) res.push(val);", + "}", + "}", + "return res;", + "}", +"});", + +// Polyfill copied from: +// developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach +"Object.defineProperty(Array.prototype, 'forEach',", + "{configurable: true, writable: true, value:", + "function(callback, thisArg) {", + "if (!this || typeof callback !== 'function') throw TypeError();", + "var T, k;", + "var O = Object(this);", + "var len = O.length >>> 0;", + "if (arguments.length > 1) T = thisArg;", + "k = 0;", + "while (k < len) {", + "if (k in O) callback.call(T, O[k], k, O);", + "k++;", + "}", + "}", +"});", + +// Polyfill copied from: +// developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map +"Object.defineProperty(Array.prototype, 'map',", + "{configurable: true, writable: true, value:", + "function(callback, thisArg) {", + "if (!this || typeof callback !== 'function') new TypeError;", + "var T, A, k;", + "var O = Object(this);", + "var len = O.length >>> 0;", + "if (arguments.length > 1) T = thisArg;", + "A = new Array(len);", + "k = 0;", + "while (k < len) {", + "if (k in O) A[k] = callback.call(T, O[k], k, O);", + "k++;", + "}", + "return A;", + "}", +"});", + +// Polyfill copied from: +// developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce +"Object.defineProperty(Array.prototype, 'reduce',", + "{configurable: true, writable: true, value:", + "function(callback /*, initialValue*/) {", + "if (!this || typeof callback !== 'function') throw TypeError();", + "var t = Object(this), len = t.length >>> 0, k = 0, value;", + "if (arguments.length === 2) {", + "value = arguments[1];", + "} else {", + "while (k < len && !(k in t)) k++;", + "if (k >= len) {", + "throw TypeError('Reduce of empty array with no initial value');", + "}", + "value = t[k++];", + "}", + "for (; k < len; k++) {", + "if (k in t) value = callback(value, t[k], k, t);", + "}", + "return value;", + "}", +"});", + +// Polyfill copied from: +// developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight +"Object.defineProperty(Array.prototype, 'reduceRight',", + "{configurable: true, writable: true, value:", + "function(callback /*, initialValue*/) {", + "if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();", + "var t = Object(this), len = t.length >>> 0, k = len - 1, value;", + "if (arguments.length >= 2) {", + "value = arguments[1];", + "} else {", + "while (k >= 0 && !(k in t)) k--;", + "if (k < 0) {", + "throw TypeError('Reduce of empty array with no initial value');", + "}", + "value = t[k--];", + "}", + "for (; k >= 0; k--) {", + "if (k in t) value = callback(value, t[k], k, t);", + "}", + "return value;", + "}", +"});", + +// Polyfill copied from: +// developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/some +"Object.defineProperty(Array.prototype, 'some',", + "{configurable: true, writable: true, value:", + "function(fun/*, thisArg*/) {", + "if (!this || typeof fun !== 'function') throw TypeError();", + "var t = Object(this);", + "var len = t.length >>> 0;", + "var thisArg = arguments.length >= 2 ? arguments[1] : void 0;", + "for (var i = 0; i < len; i++) {", + "if (i in t && fun.call(thisArg, t[i], i, t)) {", + "return true;", + "}", + "}", + "return false;", + "}", +"});", + + +"(function() {", + "var sort_ = Array.prototype.sort;", + "Array.prototype.sort = function(opt_comp) {", + // Fast native sort. + "if (typeof opt_comp !== 'function') {", + "return sort_.call(this);", + "}", + // Slow bubble sort. + "for (var i = 0; i < this.length; i++) {", + "var changes = 0;", + "for (var j = 0; j < this.length - i - 1; j++) {", + "if (opt_comp(this[j], this[j + 1]) > 0) {", + "var swap = this[j];", + "this[j] = this[j + 1];", + "this[j + 1] = swap;", + "changes++;", + "}", + "}", + "if (!changes) break;", + "}", + "return this;", + "};", +"})();", + +"Object.defineProperty(Array.prototype, 'toLocaleString',", + "{configurable: true, writable: true, value:", + "function() {", + "var out = [];", + "for (var i = 0; i < this.length; i++) {", + "out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();", + "}", + "return out.join(',');", + "}", +"});", +""); +}; + +/** + * Initialize the String class. + * @param {!Interpreter.MyObject} scope Global scope. + */ +public initString(scope) { + var thisInterpreter = this; + var wrapper; + // String constructor. + wrapper = function(value) { + value = String(value); + if (thisInterpreter.calledWithNew()) { + // Called as new String(). + this.data = value; + return this; + } else { + // Called as String(). + return value; + } + }; + this.STRING = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'String', this.STRING); + + // Static methods on String. + this.setProperty(this.STRING, 'fromCharCode', + this.createNativeFunction(String.fromCharCode, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + + // Instance methods on String. + // Methods with exclusively primitive arguments. + var functions = ['trim', 'toLowerCase', 'toUpperCase', + 'toLocaleLowerCase', 'toLocaleUpperCase', 'charAt', 'charCodeAt', + 'substring', 'slice', 'substr', 'indexOf', 'lastIndexOf', 'concat']; + for (var i = 0; i < functions.length; i++) { + this.setNativeFunctionPrototype(this.STRING, functions[i], + String.prototype[functions[i]]); + } + + wrapper = function(compareString, locales, options) { + locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined; + options = options ? thisInterpreter.pseudoToNative(options) : undefined; + return String(this).localeCompare(compareString, locales, options); + }; + this.setNativeFunctionPrototype(this.STRING, 'localeCompare', wrapper); + + wrapper = function(separator, limit) { + if (thisInterpreter.isa(separator, thisInterpreter.REGEXP)) { + separator = separator.data; + } + var jsList = String(this).split(separator, limit); + return thisInterpreter.nativeToPseudo(jsList); + }; + this.setNativeFunctionPrototype(this.STRING, 'split', wrapper); + + wrapper = function(regexp) { + regexp = regexp ? regexp.data : undefined; + var match = String(this).match(regexp); + if (!match) { + return null; + } + return thisInterpreter.nativeToPseudo(match); + }; + this.setNativeFunctionPrototype(this.STRING, 'match', wrapper); + + wrapper = function(regexp) { + regexp = regexp ? regexp.data : undefined; + return String(this).search(regexp); + }; + this.setNativeFunctionPrototype(this.STRING, 'search', wrapper); + + wrapper = function(substr, newSubstr) { + // Support for function replacements is the responsibility of a polyfill. + return String(this).replace(substr.data || substr, newSubstr); + }; + this.setNativeFunctionPrototype(this.STRING, 'replace', wrapper); + // Add a polyfill to handle replace's second argument being a function. + this.polyfills_.push( +"(function() {", + "var replace_ = String.prototype.replace;", + "String.prototype.replace = function(substr, newSubstr) {", + "if (typeof newSubstr !== 'function') {", + // string.replace(string|regexp, string) + "return replace_.call(this, substr, newSubstr);", + "}", + "var str = this;", + "if (substr instanceof RegExp) {", // string.replace(regexp, function) + "var subs = [];", + "var m = substr.exec(str);", + "while (m) {", + "m.push(m.index, str);", + "var inject = newSubstr.apply(null, m);", + "subs.push([m.index, m[0].length, inject]);", + "m = substr.global ? substr.exec(str) : null;", + "}", + "for (var i = subs.length - 1; i >= 0; i--) {", + "str = str.substring(0, subs[i][0]) + subs[i][2] + " + + "str.substring(subs[i][0] + subs[i][1]);", + "}", + "} else {", // string.replace(string, function) + "var i = str.indexOf(substr);", + "if (i !== -1) {", + "var inject = newSubstr(str.substr(i, substr.length), i, str);", + "str = str.substring(0, i) + inject + " + + "str.substring(i + substr.length);", + "}", + "}", + "return str;", + "};", +"})();", +""); +}; + +/** + * Initialize the Boolean class. + * @param {!Interpreter.MyObject} scope Global scope. + */ +public initBoolean(scope) { + var thisInterpreter = this; + var wrapper; + // Boolean constructor. + wrapper = function(value) { + value = Boolean(value); + if (thisInterpreter.calledWithNew()) { + // Called as new Boolean(). + this.data = value; + return this; + } else { + // Called as Boolean(). + return value; + } + }; + this.BOOLEAN = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'Boolean', this.BOOLEAN); +}; + +/** + * Initialize the Number class. + * @param {!Interpreter.MyObject} scope Global scope. + */ +public initNumber(scope) { + var thisInterpreter = this; + var wrapper; + // Number constructor. + wrapper = function(value) { + value = Number(value); + if (thisInterpreter.calledWithNew()) { + // Called as new Number(). + this.data = value; + return this; + } else { + // Called as Number(). + return value; + } + }; + this.NUMBER = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'Number', this.NUMBER); + + var numConsts = ['MAX_VALUE', 'MIN_VALUE', 'NaN', 'NEGATIVE_INFINITY', + 'POSITIVE_INFINITY']; + for (var i = 0; i < numConsts.length; i++) { + this.setProperty(this.NUMBER, numConsts[i], Number[numConsts[i]], + Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + } + + // Instance methods on Number. + wrapper = function(fractionDigits) { + try { + return Number(this).toExponential(fractionDigits); + } catch (e) { + // Throws if fractionDigits isn't within 0-20. + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + } + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toExponential', wrapper); + + wrapper = function(digits) { + try { + return Number(this).toFixed(digits); + } catch (e) { + // Throws if digits isn't within 0-20. + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + } + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toFixed', wrapper); + + wrapper = function(precision) { + try { + return Number(this).toPrecision(precision); + } catch (e) { + // Throws if precision isn't within range (depends on implementation). + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + } + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toPrecision', wrapper); + + wrapper = function(radix) { + try { + return Number(this).toString(radix); + } catch (e) { + // Throws if radix isn't within 2-36. + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + } + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toString', wrapper); + + wrapper = function(locales, options) { + locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined; + options = options ? thisInterpreter.pseudoToNative(options) : undefined; + return Number(this).toLocaleString(locales, options); + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toLocaleString', wrapper); +}; + +/** + * Initialize the Date class. + * @param {!Interpreter.MyObject} scope Global scope. + */ +public initDate(scope) { + var thisInterpreter = this; + var wrapper; + // Date constructor. + wrapper = function(value, var_args) { + if (!thisInterpreter.calledWithNew()) { + // Called as Date(). + // Calling Date() as a function returns a string, no arguments are heeded. + return Date(); + } + // Called as new Date(). + var args = [null].concat(Array.from(arguments)); + this.data = new (Function.prototype.bind.apply(Date, args)); + return this; + }; + this.DATE = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'Date', this.DATE); + + // Static methods on Date. + this.setProperty(this.DATE, 'now', this.createNativeFunction(Date.now, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + + this.setProperty(this.DATE, 'parse', + this.createNativeFunction(Date.parse, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + + this.setProperty(this.DATE, 'UTC', this.createNativeFunction(Date.UTC, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + + // Instance methods on Date. + var functions = ['getDate', 'getDay', 'getFullYear', 'getHours', + 'getMilliseconds', 'getMinutes', 'getMonth', 'getSeconds', 'getTime', + 'getTimezoneOffset', 'getUTCDate', 'getUTCDay', 'getUTCFullYear', + 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', + 'getUTCSeconds', 'getYear', + 'setDate', 'setFullYear', 'setHours', 'setMilliseconds', + 'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', + 'setUTCFullYear', 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', + 'setUTCMonth', 'setUTCSeconds', 'setYear', + 'toDateString', 'toISOString', 'toJSON', 'toGMTString', + 'toLocaleDateString', 'toLocaleString', 'toLocaleTimeString', + 'toTimeString', 'toUTCString']; + for (var i = 0; i < functions.length; i++) { + wrapper = (function(nativeFunc) { + return function(var_args) { + var args = []; + for (var i = 0; i < arguments.length; i++) { + args[i] = thisInterpreter.pseudoToNative(arguments[i]); + } + return this.data[nativeFunc].apply(this.data, args); + }; + })(functions[i]); + this.setNativeFunctionPrototype(this.DATE, functions[i], wrapper); + } +}; + +/** + * Initialize Regular Expression object. + * @param {!Interpreter.MyObject} scope Global scope. + */ +public initRegExp(scope) { + var thisInterpreter = this; + var wrapper; + // RegExp constructor. + wrapper = function(pattern, flags) { + if (thisInterpreter.calledWithNew()) { + // Called as new RegExp(). + var rgx = this; + } else { + // Called as RegExp(). + var rgx = thisInterpreter.createObjectProto(thisInterpreter.REGEXP_PROTO); + } + pattern = pattern ? pattern.toString() : ''; + flags = flags ? flags.toString() : ''; + thisInterpreter.populateRegExp(rgx, new RegExp(pattern, flags)); + return rgx; + }; + this.REGEXP = this.createNativeFunction(wrapper, true); + this.REGEXP_PROTO = this.REGEXP.properties['prototype']; + this.setProperty(scope, 'RegExp', this.REGEXP); + + this.setProperty(this.REGEXP.properties['prototype'], 'global', undefined, + Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.REGEXP.properties['prototype'], 'ignoreCase', undefined, + Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.REGEXP.properties['prototype'], 'multiline', undefined, + Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.REGEXP.properties['prototype'], 'source', '(?:)', + Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + + wrapper = function(str) { + return this.data.test(str); + }; + this.setNativeFunctionPrototype(this.REGEXP, 'test', wrapper); + + wrapper = function(str) { + str = str.toString(); + // Get lastIndex from wrapped regex, since this is settable. + this.data.lastIndex = + Number(thisInterpreter.getProperty(this, 'lastIndex')); + var match = this.data.exec(str); + thisInterpreter.setProperty(this, 'lastIndex', this.data.lastIndex); + + if (match) { + var result = + thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO); + for (var i = 0; i < match.length; i++) { + thisInterpreter.setProperty(result, i, match[i]); + } + // match has additional properties. + thisInterpreter.setProperty(result, 'index', match.index); + thisInterpreter.setProperty(result, 'input', match.input); + return result; + } + return null; + }; + this.setNativeFunctionPrototype(this.REGEXP, 'exec', wrapper); +}; + +/** + * Initialize the Error class. + * @param {!Interpreter.MyObject} scope Global scope. + */ +public initError(scope) { + var thisInterpreter = this; + // Error constructor. + this.ERROR = this.createNativeFunction(function(opt_message) { + if (thisInterpreter.calledWithNew()) { + // Called as new Error(). + var newError = this; + } else { + // Called as Error(). + var newError = thisInterpreter.createObject(thisInterpreter.ERROR); + } + if (opt_message) { + thisInterpreter.setProperty(newError, 'message', String(opt_message), + Interpreter.NONENUMERABLE_DESCRIPTOR); + } + return newError; + }, true); + this.setProperty(scope, 'Error', this.ERROR); + this.setProperty(this.ERROR.properties['prototype'], 'message', '', + Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.ERROR.properties['prototype'], 'name', 'Error', + Interpreter.NONENUMERABLE_DESCRIPTOR); + + var createErrorSubclass = function(name) { + var constructor = thisInterpreter.createNativeFunction( + function(opt_message) { + if (thisInterpreter.calledWithNew()) { + // Called as new XyzError(). + var newError = this; + } else { + // Called as XyzError(). + var newError = thisInterpreter.createObject(constructor); + } + if (opt_message) { + thisInterpreter.setProperty(newError, 'message', + String(opt_message), Interpreter.NONENUMERABLE_DESCRIPTOR); + } + return newError; + }, true); + thisInterpreter.setProperty(constructor, 'prototype', + thisInterpreter.createObject(thisInterpreter.ERROR)); + thisInterpreter.setProperty(constructor.properties['prototype'], 'name', + name, Interpreter.NONENUMERABLE_DESCRIPTOR); + thisInterpreter.setProperty(scope, name, constructor); + + return constructor; + }; + + this.EVAL_ERROR = createErrorSubclass('EvalError'); + this.RANGE_ERROR = createErrorSubclass('RangeError'); + this.REFERENCE_ERROR = createErrorSubclass('ReferenceError'); + this.SYNTAX_ERROR = createErrorSubclass('SyntaxError'); + this.TYPE_ERROR = createErrorSubclass('TypeError'); + this.URI_ERROR = createErrorSubclass('URIError'); +}; + +/** + * Initialize Math object. + * @param {!Interpreter.MyObject} scope Global scope. + */ +public initMath(scope) { + var thisInterpreter = this; + var myMath = this.createObjectProto(this.OBJECT_PROTO); + this.setProperty(scope, 'Math', myMath); + var mathConsts = ['E', 'LN2', 'LN10', 'LOG2E', 'LOG10E', 'PI', + 'SQRT1_2', 'SQRT2']; + for (var i = 0; i < mathConsts.length; i++) { + this.setProperty(myMath, mathConsts[i], Math[mathConsts[i]], + Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + } + var numFunctions = ['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', + 'exp', 'floor', 'log', 'max', 'min', 'pow', 'random', + 'round', 'sin', 'sqrt', 'tan']; + for (var i = 0; i < numFunctions.length; i++) { + this.setProperty(myMath, numFunctions[i], + this.createNativeFunction(Math[numFunctions[i]], false), + Interpreter.NONENUMERABLE_DESCRIPTOR); + } +}; + +/** + * Initialize JSON object. + * @param {!Interpreter.MyObject} scope Global scope. + */ +public initJSON(scope) { + var thisInterpreter = this; + var myJSON = thisInterpreter.createObjectProto(this.OBJECT_PROTO); + this.setProperty(scope, 'JSON', myJSON); + + var wrapper = function(text) { + try { + var nativeObj = JSON.parse(text.toString()); + } catch (e) { + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, e.message); + } + return thisInterpreter.nativeToPseudo(nativeObj); + }; + this.setProperty(myJSON, 'parse', this.createNativeFunction(wrapper, false)); + + wrapper = function(value) { + var nativeObj = thisInterpreter.pseudoToNative(value); + try { + var str = JSON.stringify(nativeObj); + } catch (e) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, e.message); + } + return str; + }; + this.setProperty(myJSON, 'stringify', + this.createNativeFunction(wrapper, false)); +}; + +/** + * Is an object of a certain class? + * @param {Interpreter.Value} child Object to check. + * @param {Interpreter.MyObject} constructor Constructor of object. + * @return {boolean} True if object is the class or inherits from it. + * False otherwise. + */ +public isa(child, constructor) { + if (child === null || child === undefined || !constructor) { + return false; + } + var proto = constructor.properties['prototype']; + if (child === proto) { + return true; + } + // The first step up the prototype chain is harder since the child might be + // a primitive value. Subsequent steps can just follow the .proto property. + child = this.getPrototype(child); + while (child) { + if (child === proto) { + return true; + } + child = child.proto; + } + return false; +}; + +/** + * Is a value a legal integer for an array length? + * @param {Interpreter.Value} x Value to check. + * @return {number} Zero, or a positive integer if the value can be + * converted to such. NaN otherwise. + */ +static legalArrayLength(x) { + var n = x >>> 0; + // Array length must be between 0 and 2^32-1 (inclusive). + return (n === Number(x)) ? n : NaN; +}; + +/** + * Is a value a legal integer for an array index? + * @param {Interpreter.Value} x Value to check. + * @return {number} Zero, or a positive integer if the value can be + * converted to such. NaN otherwise. + */ +static legalArrayIndex(x) { + var n = x >>> 0; + // Array index cannot be 2^32-1, otherwise length would be 2^32. + // 0xffffffff is 2^32-1. + return (String(n) === String(x) && n !== 0xffffffff) ? n : NaN; +}; + +/** + * Typedef for JS values. + * @typedef {!Interpreter.MyObject|boolean|number|string|undefined|null} + */ +static Value; + +/** + * Create a new data object based on a constructor's prototype. + * @param {Interpreter.MyObject} constructor Parent constructor function, + * or null if scope object. + * @return {!Interpreter.MyObject} New data object. + */ +public createObject(constructor) { + return this.createObjectProto(constructor && + constructor.properties['prototype']); +}; + +/** + * Create a new data object based on a prototype. + * @param {Interpreter.MyObject} proto Prototype object. + * @return {!Interpreter.MyObject} New data object. + */ +public createObjectProto(proto) { + var obj = new Interpreter.MyObject(proto); + // Functions have prototype objects. + if (this.isa(obj, this.FUNCTION)) { + this.setProperty(obj, 'prototype', + this.createObjectProto(this.OBJECT_PROTO || null)); + obj.class = 'Function'; + } + // Arrays have length. + if (this.isa(obj, this.ARRAY)) { + this.setProperty(obj, 'length', 0, + {configurable: false, enumerable: false, writable: true}); + obj.class = 'Array'; + } + if (this.isa(obj, this.ERROR)) { + obj.class = 'Error'; + } + return obj; +}; + +/** + * Initialize a pseudo regular expression object based on a native regular + * expression object. + * @param {!Interpreter.MyObject} pseudoRegexp The existing object to set. + * @param {!RegExp} nativeRegexp The native regular expression. + */ +public populateRegExp(pseudoRegexp, nativeRegexp) { + pseudoRegexp.data = nativeRegexp; + // lastIndex is settable, all others are read-only attributes + this.setProperty(pseudoRegexp, 'lastIndex', nativeRegexp.lastIndex, + Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'source', nativeRegexp.source, + Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'global', nativeRegexp.global, + Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'ignoreCase', nativeRegexp.ignoreCase, + Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'multiline', nativeRegexp.multiline, + Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); +}; + +/** + * Create a new function. + * @param {!Object} node AST node defining the function. + * @param {!Object} scope Parent scope. + * @return {!Interpreter.MyObject} New function. + */ +public createFunction(node, scope) { + var func = this.createObjectProto(this.FUNCTION_PROTO); + func.parentScope = scope; + func.node = node; + this.setProperty(func, 'length', func.node['params'].length, + Interpreter.READONLY_DESCRIPTOR); + return func; +}; + +/** + * Create a new native function. + * @param {!Function} nativeFunc JavaScript function. + * @param {boolean=} opt_constructor If true, the function's + * prototype will have its constructor property set to the function. + * If false, the function cannot be called as a constructor (e.g. escape). + * Defaults to undefined. + * @return {!Interpreter.MyObject} New function. + */ +public createNativeFunction(nativeFunc, opt_constructor?) { + var func = this.createObjectProto(this.FUNCTION_PROTO); + func.nativeFunc = nativeFunc; + nativeFunc.id = this.functionCounter_++; + this.setProperty(func, 'length', nativeFunc.length, + Interpreter.READONLY_DESCRIPTOR); + if (opt_constructor) { + this.setProperty(func.properties['prototype'], 'constructor', + func, Interpreter.NONENUMERABLE_DESCRIPTOR); + } else if (opt_constructor === false) { + func.illegalConstructor = true; + this.setProperty(func, 'prototype', undefined); + } + return func; +}; + +/** + * Create a new native asynchronous function. + * @param {!Function} asyncFunc JavaScript function. + * @return {!Interpreter.MyObject} New function. + */ +public createAsyncFunction(asyncFunc) { + var func = this.createObjectProto(this.FUNCTION_PROTO); + func.asyncFunc = asyncFunc; + asyncFunc.id = this.functionCounter_++; + this.setProperty(func, 'length', asyncFunc.length, + Interpreter.READONLY_DESCRIPTOR); + return func; +}; + +/** + * Converts from a native JS object or value to a JS interpreter object. + * Can handle JSON-style values. + * @param {*} nativeObj The native JS object to be converted. + * @return {Interpreter.Value} The equivalent JS interpreter object. + */ +public nativeToPseudo(nativeObj) { + if (typeof nativeObj === 'boolean' || + typeof nativeObj === 'number' || + typeof nativeObj === 'string' || + nativeObj === null || nativeObj === undefined) { + return nativeObj; + } + + if (nativeObj instanceof RegExp) { + var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO); + this.populateRegExp(pseudoRegexp, nativeObj); + return pseudoRegexp; + } + + if (nativeObj instanceof Function) { + var interpreter = this; + var wrapper = function() { + return interpreter.nativeToPseudo( + nativeObj.apply(interpreter, + Array.prototype.slice.call(arguments) + .map(function(i) { + return interpreter.pseudoToNative(i); + }) + ) + ); + }; + return this.createNativeFunction(wrapper, undefined); + } + + var pseudoObj; + if (Array.isArray(nativeObj)) { // Array. + pseudoObj = this.createObjectProto(this.ARRAY_PROTO); + for (var i = 0; i < nativeObj.length; i++) { + if (i in nativeObj) { + this.setProperty(pseudoObj, i, this.nativeToPseudo(nativeObj[i])); + } + } + } else { // Object. + pseudoObj = this.createObjectProto(this.OBJECT_PROTO); + for (var key in nativeObj) { + this.setProperty(pseudoObj, key, this.nativeToPseudo(nativeObj[key])); + } + } + return pseudoObj; +}; + +/** + * Converts from a JS interpreter object to native JS object. + * Can handle JSON-style values, plus cycles. + * @param {Interpreter.Value} pseudoObj The JS interpreter object to be + * converted. + * @param {Object=} opt_cycles Cycle detection (used in recursive calls). + * @return {*} The equivalent native JS object or value. + */ +public pseudoToNative(pseudoObj, opt_cycles?) { + if (typeof pseudoObj === 'boolean' || + typeof pseudoObj === 'number' || + typeof pseudoObj === 'string' || + pseudoObj === null || pseudoObj === undefined) { + return pseudoObj; + } + + if (this.isa(pseudoObj, this.REGEXP)) { // Regular expression. + return pseudoObj.data; + } + + var cycles = opt_cycles || { + pseudo: [], + native: [] + }; + var i = (>cycles.pseudo).indexOf(pseudoObj); + if (i !== -1) { + return cycles.native[i]; + } + cycles.pseudo.push(pseudoObj); + var nativeObj; + if (this.isa(pseudoObj, this.ARRAY)) { // Array. + nativeObj = []; + cycles.native.push(nativeObj); + var length = this.getProperty(pseudoObj, 'length'); + for (var i = 0; i < length; i++) { + if (this.hasProperty(pseudoObj, i)) { + nativeObj[i] = + this.pseudoToNative(this.getProperty(pseudoObj, i), cycles); + } + } + } else { // Object. + nativeObj = {}; + cycles.native.push(nativeObj); + var val; + for (var key in pseudoObj.properties) { + val = pseudoObj.properties[key]; + nativeObj[key] = this.pseudoToNative(val, cycles); + } + } + cycles.pseudo.pop(); + cycles.native.pop(); + return nativeObj; +}; + +/** + * Look up the prototype for this value. + * @param {Interpreter.Value} value Data object. + * @return {Interpreter.MyObject} Prototype object, null if none. + */ +public getPrototype(value) { + switch (typeof value) { + case 'number': + return this.NUMBER.properties['prototype']; + case 'boolean': + return this.BOOLEAN.properties['prototype']; + case 'string': + return this.STRING.properties['prototype']; + } + if (value) { + return value.proto; + } + return null; +}; + +/** + * Fetch a property value from a data object. + * @param {Interpreter.Value} obj Data object. + * @param {Interpreter.Value} name Name of property. + * @return {Interpreter.Value} Property value (may be undefined). + */ +public getProperty(obj, name) { + name = String(name); + if (obj === undefined || obj === null) { + this.throwException(this.TYPE_ERROR, + "Cannot read property '" + name + "' of " + obj); + } + if (name === 'length') { + // Special cases for magic length property. + if (this.isa(obj, this.STRING)) { + return String(obj).length; + } + } else if (name.charCodeAt(0) < 0x40) { + // Might have numbers in there? + // Special cases for string array indexing + if (this.isa(obj, this.STRING)) { + var n = Interpreter.legalArrayIndex(name); + if (!isNaN(n) && n < String(obj).length) { + return String(obj)[n]; + } + } + } + do { + if (obj.properties && name in obj.properties) { + var getter = obj.getter[name]; + if (getter) { + // Flag this function as being a getter and thus needing immediate + // execution (rather than being the value of the property). + getter.isGetter = true; + return getter; + } + return obj.properties[name]; + } + } while ((obj = this.getPrototype(obj))); + return undefined; +}; + +/** + * Does the named property exist on a data object. + * @param {Interpreter.Value} obj Data object. + * @param {Interpreter.Value} name Name of property. + * @return {boolean} True if property exists. + */ +public hasProperty(obj, name) { + if (!obj.isObject) { + throw TypeError('Primitive data type has no properties'); + } + name = String(name); + if (name === 'length' && this.isa(obj, this.STRING)) { + return true; + } + if (this.isa(obj, this.STRING)) { + var n = Interpreter.legalArrayIndex(name); + if (!isNaN(n) && n < String(obj).length) { + return true; + } + } + do { + if (obj.properties && name in obj.properties) { + return true; + } + } while ((obj = this.getPrototype(obj))); + return false; +}; + +/** + * Set a property value on a data object. + * @param {!Interpreter.MyObject} obj Data object. + * @param {Interpreter.Value} name Name of property. + * @param {Interpreter.Value|ReferenceError} value New property value. + * Use ReferenceError if value is handled by descriptor instead. + * @param {Object=} opt_descriptor Optional descriptor object. + * @return {!Interpreter.MyObject|undefined} Returns a setter function if one + * needs to be called, otherwise undefined. + */ +public setProperty(obj, name, value, opt_descriptor?) { + name = String(name); + if (obj === undefined || obj === null) { + this.throwException(this.TYPE_ERROR, + "Cannot set property '" + name + "' of " + obj); + } + if (opt_descriptor && ('get' in opt_descriptor || 'set' in opt_descriptor) && + ('value' in opt_descriptor || 'writable' in opt_descriptor)) { + this.throwException(this.TYPE_ERROR, 'Invalid property descriptor. ' + + 'Cannot both specify accessors and a value or writable attribute'); + } + var strict = !this.stateStack || this.getScope().strict; + if (!obj.isObject) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Can't create property '" + name + + "' on '" + obj + "'"); + } + return; + } + if (this.isa(obj, this.STRING)) { + var n = Interpreter.legalArrayIndex(name); + if (name === 'length' || (!isNaN(n) && n < String(obj).length)) { + // Can't set length or letters on String objects. + if (strict) { + this.throwException(this.TYPE_ERROR, "Cannot assign to read only " + + "property '" + name + "' of String '" + obj.data + "'"); + } + return; + } + } + if (obj.class === 'Array') { + // Arrays have a magic length variable that is bound to the elements. + var length = obj.properties.length; + var i; + if (name === 'length') { + // Delete elements if length is smaller. + var value = Interpreter.legalArrayLength(value); + if (isNaN(value)) { + this.throwException(this.RANGE_ERROR, 'Invalid array length'); + } + if (value < length) { + for (i in obj.properties) { + i = Interpreter.legalArrayIndex(i); + if (!isNaN(i) && value <= i) { + delete obj.properties[i]; + } + } + } + } else if (!isNaN(i = Interpreter.legalArrayIndex(name))) { + // Increase length if this index is larger. + obj.properties.length = Math.max(length, i + 1); + } + } + if (obj.preventExtensions && !(name in obj.properties)) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Can't add property '" + name + + "', object is not extensible"); + } + return; + } + if (opt_descriptor) { + // Define the property. + if ('get' in opt_descriptor) { + if (opt_descriptor.get) { + obj.getter[name] = opt_descriptor.get; + } else { + delete obj.getter[name]; + } + } + if ('set' in opt_descriptor) { + if (opt_descriptor.set) { + obj.setter[name] = opt_descriptor.set; + } else { + delete obj.setter[name]; + } + } + var descriptor: { + configurable?: boolean; + enumerable?: boolean; + writable?: boolean; + value?: any; + } = {}; + if ('configurable' in opt_descriptor) { + descriptor.configurable = opt_descriptor.configurable; + } + if ('enumerable' in opt_descriptor) { + descriptor.enumerable = opt_descriptor.enumerable; + } + if ('writable' in opt_descriptor) { + descriptor.writable = opt_descriptor.writable; + delete obj.getter[name]; + delete obj.setter[name]; + } + if ('value' in opt_descriptor) { + descriptor.value = opt_descriptor.value; + delete obj.getter[name]; + delete obj.setter[name]; + } else if (value !== ReferenceError) { + descriptor.value = value; + delete obj.getter[name]; + delete obj.setter[name]; + } + try { + Object.defineProperty(obj.properties, name, descriptor); + } catch (e) { + this.throwException(this.TYPE_ERROR, 'Cannot redefine property: ' + name); + } + } else { + // Set the property. + if (value === ReferenceError) { + throw ReferenceError('Value not specified.'); + } + // Determine the parent (possibly self) where the property is defined. + var defObj = obj; + while (!(name in defObj.properties)) { + defObj = this.getPrototype(defObj); + if (!defObj) { + // This is a new property. + defObj = obj; + break; + } + } + if (defObj.setter && defObj.setter[name]) { + return defObj.setter[name]; + } + if (defObj.getter && defObj.getter[name]) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Cannot set property '" + name + + "' of object '" + obj + "' which only has a getter"); + } + } else { + // No setter, simple assignment. + try { + obj.properties[name] = value; + } catch (e) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Cannot assign to read only " + + "property '" + name + "' of object '" + obj + "'"); + } + } + } + } +}; + +/** + * Convenience method for adding a native function as a non-enumerable property + * onto an object's prototype. + * @param {!Interpreter.MyObject} obj Data object. + * @param {Interpreter.Value} name Name of property. + * @param {!Function} wrapper Function object. + */ +private setNativeFunctionPrototype(obj, name, wrapper) { + this.setProperty(obj.properties['prototype'], name, + this.createNativeFunction(wrapper, false), + Interpreter.NONENUMERABLE_DESCRIPTOR); +}; + +/** + * Returns the current scope from the stateStack. + * @return {!Interpreter.MyObject} Current scope dictionary. + */ +public getScope() { + var scope = this.stateStack[this.stateStack.length - 1].scope; + if (!scope) { + throw Error('No scope found.'); + } + return scope; +}; + +/** + * Create a new scope dictionary. + * @param {!Object} node AST node defining the scope container + * (e.g. a function). + * @param {Interpreter.MyObject} parentScope Scope to link to. + * @return {!Interpreter.MyObject} New scope. + */ +public createScope(node, parentScope) { + var scope = this.createObjectProto(null); + scope.parentScope = parentScope; + if (!parentScope) { + this.initGlobalScope(scope); + } + this.populateScope_(node, scope); + + // Determine if this scope starts with 'use strict'. + scope.strict = false; + if (parentScope && parentScope.strict) { + scope.strict = true; + } else { + var firstNode = node['body'] && node['body'][0]; + if (firstNode && firstNode.expression && + firstNode.expression['type'] === 'Literal' && + firstNode.expression.value === 'use strict') { + scope.strict = true; + } + } + return scope; +}; + +/** + * Create a new special scope dictionary. Similar to createScope(), but + * doesn't assume that the scope is for a function body. + * This is used for 'catch' clauses and 'with' statements. + * @param {!Interpreter.MyObject} parentScope Scope to link to. + * @param {Interpreter.MyObject=} opt_scope Optional object to transform into + * scope. + * @return {!Interpreter.MyObject} New scope. + */ +public createSpecialScope(parentScope, opt_scope?) { + if (!parentScope) { + throw Error('parentScope required'); + } + var scope = opt_scope || this.createObjectProto(null); + scope.parentScope = parentScope; + scope.strict = parentScope.strict; + return scope; +}; + +/** + * Retrieves a value from the scope chain. + * @param {string} name Name of variable. + * @return {Interpreter.Value} Any value. + * May be flagged as being a getter and thus needing immediate execution + * (rather than being the value of the property). + */ +public getValueFromScope(name) { + var scope = this.getScope(); + while (scope && scope !== this.global) { + if (name in scope.properties) { + return scope.properties[name]; + } + scope = scope.parentScope; + } + // The root scope is also an object which has inherited properties and + // could also have getters. + if (scope === this.global && this.hasProperty(scope, name)) { + return this.getProperty(scope, name); + } + // Typeof operator is unique: it can safely look at non-defined variables. + var prevNode = this.stateStack[this.stateStack.length - 1].node; + if (prevNode['type'] === 'UnaryExpression' && + prevNode['operator'] === 'typeof') { + return undefined; + } + this.throwException(this.REFERENCE_ERROR, name + ' is not defined'); +}; + +/** + * Sets a value to the current scope. + * @param {string} name Name of variable. + * @param {Interpreter.Value} value Value. + * @return {!Interpreter.MyObject|undefined} Returns a setter function if one + * needs to be called, otherwise undefined. + */ +public setValueToScope(name, value) { + var scope = this.getScope(); + var strict = scope.strict; + while (scope && scope !== this.global) { + if (name in scope.properties) { + scope.properties[name] = value; + return undefined; + } + scope = scope.parentScope; + } + // The root scope is also an object which has readonly properties and + // could also have setters. + if (scope === this.global && (!strict || this.hasProperty(scope, name))) { + return this.setProperty(scope, name, value); + } + this.throwException(this.REFERENCE_ERROR, name + ' is not defined'); +}; + +/** + * Create a new scope for the given node. + * @param {!Object} node AST node (program or function). + * @param {!Interpreter.MyObject} scope Scope dictionary to populate. + * @private + */ +public populateScope_(node, scope) { + if (node['type'] === 'VariableDeclaration') { + for (var i = 0; i < node['declarations'].length; i++) { + this.setProperty(scope, node['declarations'][i]['id']['name'], + undefined, Interpreter.VARIABLE_DESCRIPTOR); + } + } else if (node['type'] === 'FunctionDeclaration') { + this.setProperty(scope, node['id']['name'], + this.createFunction(node, scope), Interpreter.VARIABLE_DESCRIPTOR); + return; // Do not recurse into function. + } else if (node['type'] === 'FunctionExpression') { + return; // Do not recurse into function. + } else if (node['type'] === 'ExpressionStatement') { + return; // Expressions can't contain variable/function declarations. + } + var nodeClass = node['constructor']; + for (var name in node) { + var prop = node[name]; + if (prop && typeof prop === 'object') { + if (Array.isArray(prop)) { + for (var i = 0; i < prop.length; i++) { + if (prop[i] && prop[i].constructor === nodeClass) { + this.populateScope_(prop[i], scope); + } + } + } else { + if (prop.constructor === nodeClass) { + this.populateScope_(prop, scope); + } + } + } + } +}; + +/** + * Remove start and end values from AST, or set start and end values to a + * constant value. Used to remove highlighting from polyfills and to set + * highlighting in an eval to cover the entire eval expression. + * @param {!Object} node AST node. + * @param {number=} start Starting character of all nodes, or undefined. + * @param {number=} end Ending character of all nodes, or undefined. + * @private + */ +public stripLocations_(node, start, end) { + if (start) { + node['start'] = start; + } else { + delete node['start']; + } + if (end) { + node['end'] = end; + } else { + delete node['end']; + } + for (var name in node) { + if (node.hasOwnProperty(name)) { + var prop = node[name]; + if (prop && typeof prop === 'object') { + this.stripLocations_(prop, start, end); + } + } + } +}; + +/** + * Is the current state directly being called with as a construction with 'new'. + * @return {boolean} True if 'new foo()', false if 'foo()'. + */ +public calledWithNew() { + return this.stateStack[this.stateStack.length - 1].isConstructor; +}; + +/** + * Gets a value from the scope chain or from an object property. + * @param {!Array} ref Name of variable or object/propname tuple. + * @return {Interpreter.Value} Any value. + * May be flagged as being a getter and thus needing immediate execution + * (rather than being the value of the property). + */ +public getValue(ref) { + if (ref[0] === Interpreter.SCOPE_REFERENCE) { + // A null/varname variable lookup. + return this.getValueFromScope(ref[1]); + } else { + // An obj/prop components tuple (foo.bar). + return this.getProperty(ref[0], ref[1]); + } +}; + +/** + * Sets a value to the scope chain or to an object property. + * @param {!Array} ref Name of variable or object/propname tuple. + * @param {Interpreter.Value} value Value. + * @return {!Interpreter.MyObject|undefined} Returns a setter function if one + * needs to be called, otherwise undefined. + */ +public setValue(ref, value) { + if (ref[0] === Interpreter.SCOPE_REFERENCE) { + // A null/varname variable lookup. + return this.setValueToScope(ref[1], value); + } else { + // An obj/prop components tuple (foo.bar). + return this.setProperty(ref[0], ref[1], value); + } +}; + +/** + * Throw an exception in the interpreter that can be handled by an + * interpreter try/catch statement. If unhandled, a real exception will + * be thrown. Can be called with either an error class and a message, or + * with an actual object to be thrown. + * @param {!Interpreter.MyObject} errorClass Type of error (if message is + * provided) or the value to throw (if no message). + * @param {string=} opt_message Message being thrown. + */ +public throwException(errorClass, opt_message?) { + if (opt_message === undefined) { + var error = errorClass; // This is a value to throw, not an error class. + } else { + var error = this.createObject(errorClass); + this.setProperty(error, 'message', opt_message, + Interpreter.NONENUMERABLE_DESCRIPTOR); + } + this.executeException(error); + // Abort anything related to the current step. + throw Interpreter.STEP_ERROR; +}; + +/** + * Throw an exception in the interpreter that can be handled by a + * interpreter try/catch statement. If unhandled, a real exception will + * be thrown. + * @param {!Interpreter.MyObject} error Error object to execute. + */ +public executeException(error) { + // Search for a try statement. + do { + this.stateStack.pop(); + var state = this.stateStack[this.stateStack.length - 1]; + if (state.node['type'] === 'TryStatement') { + state.throwValue = error; + return; + } + } while (state && state.node['type'] !== 'Program'); + + // Throw a real error. + var realError; + if (this.isa(error, this.ERROR)) { + var errorTable = { + 'EvalError': EvalError, + 'RangeError': RangeError, + 'ReferenceError': ReferenceError, + 'SyntaxError': SyntaxError, + 'TypeError': TypeError, + 'URIError': URIError + }; + var name = this.getProperty(error, 'name').toString(); + var message = this.getProperty(error, 'message').valueOf(); + var type = errorTable[name] || Error; + realError = type(message); + } else { + realError = error.toString(); + } + throw realError; +}; + +/** + * Create a call to a getter function. + * @param {!Interpreter.MyObject} func Function to execute. + * @param {!Interpreter.MyObject|!Array} left + * Name of variable or object/propname tuple. + * @private + */ +public createGetter_(func, left) { + // Normally 'this' will be specified as the object component (o.x). + // Sometimes 'this' is explicitly provided (o). + var funcThis = Array.isArray(left) ? left[0] : left; + var node = new this.nodeConstructor(); + node['type'] = 'CallExpression'; + var state = new Interpreter.MyState(node, + this.stateStack[this.stateStack.length - 1].scope); + state.doneCallee_ = true; + state.funcThis_ = funcThis; + state.func_ = func; + state.doneArgs_ = true; + state.arguments_ = []; + return state; +}; + +/** + * Create a call to a setter function. + * @param {!Interpreter.MyObject} func Function to execute. + * @param {!Interpreter.MyObject|!Array} left + * Name of variable or object/propname tuple. + * @param {Interpreter.Value} value Value to set. + * @private + */ +public createSetter_(func, left, value) { + // Normally 'this' will be specified as the object component (o.x). + // Sometimes 'this' is implicitly the global object (x). + var funcThis = Array.isArray(left) ? left[0] : this.global; + var node = new this.nodeConstructor(); + node['type'] = 'CallExpression'; + var state = new Interpreter.MyState(node, + this.stateStack[this.stateStack.length - 1].scope); + state.doneCallee_ = true; + state.funcThis_ = funcThis; + state.func_ = func; + state.doneArgs_ = true; + state.arguments_ = [value]; + return state; +}; + + +/////////////////////////////////////////////////////////////////////////////// +// Functions to handle each node type. +/////////////////////////////////////////////////////////////////////////////// + +private stepArrayExpression(stack, state, node) { + var elements = node['elements']; + var n = state.n_ || 0; + if (!state.array_) { + state.array_ = this.createObjectProto(this.ARRAY_PROTO); + state.array_.properties.length = elements.length; + } else { + this.setProperty(state.array_, n, state.value); + n++; + } + while (n < elements.length) { + // Skip missing elements - they're not defined, not undefined. + if (elements[n]) { + state.n_ = n; + return new Interpreter.MyState(elements[n], state.scope); + } + n++; + } + stack.pop(); + stack[stack.length - 1].value = state.array_; +}; + +private stepAssignmentExpression(stack, state, node) { + if (!state.doneLeft_) { + state.doneLeft_ = true; + var nextState = new Interpreter.MyState(node['left'], state.scope); + nextState.components = true; + return nextState; + } + if (!state.doneRight_) { + if (!state.leftReference_) { + state.leftReference_ = state.value; + } + if (state.doneGetter_) { + state.leftValue_ = state.value; + } + if (!state.doneGetter_ && node['operator'] !== '=') { + var leftValue = this.getValue(state.leftReference_); + state.leftValue_ = leftValue; + if (leftValue && typeof leftValue === 'object' && leftValue.isGetter) { + // Clear the getter flag and call the getter function. + leftValue.isGetter = false; + state.doneGetter_ = true; + var func = /** @type {!Interpreter.Object} */ (leftValue); + return this.createGetter_(func, state.leftReference_); + } + } + state.doneRight_ = true; + return new Interpreter.MyState(node['right'], state.scope); + } + if (state.doneSetter_) { + // Return if setter function. + // Setter method on property has completed. + // Ignore its return value, and use the original set value instead. + stack.pop(); + stack[stack.length - 1].value = state.doneSetter_; + return; + } + var value = state.leftValue_; + var rightValue = state.value; + switch (node['operator']) { + case '=': value = rightValue; break; + case '+=': value += rightValue; break; + case '-=': value -= rightValue; break; + case '*=': value *= rightValue; break; + case '/=': value /= rightValue; break; + case '%=': value %= rightValue; break; + case '<<=': value <<= rightValue; break; + case '>>=': value >>= rightValue; break; + case '>>>=': value >>>= rightValue; break; + case '&=': value &= rightValue; break; + case '^=': value ^= rightValue; break; + case '|=': value |= rightValue; break; + default: + throw SyntaxError('Unknown assignment expression: ' + node['operator']); + } + var setter = this.setValue(state.leftReference_, value); + if (setter) { + state.doneSetter_ = value; + return this.createSetter_(setter, state.leftReference_, value); + } + // Return if no setter function. + stack.pop(); + stack[stack.length - 1].value = value; +}; + +private stepBinaryExpression(stack, state, node) { + if (!state.doneLeft_) { + state.doneLeft_ = true; + return new Interpreter.MyState(node['left'], state.scope); + } + if (!state.doneRight_) { + state.doneRight_ = true; + state.leftValue_ = state.value; + return new Interpreter.MyState(node['right'], state.scope); + } + stack.pop(); + var leftValue = state.leftValue_; + var rightValue = state.value; + var value; + switch (node['operator']) { + case '==': value = leftValue == rightValue; break; + case '!=': value = leftValue != rightValue; break; + case '===': value = leftValue === rightValue; break; + case '!==': value = leftValue !== rightValue; break; + case '>': value = leftValue > rightValue; break; + case '>=': value = leftValue >= rightValue; break; + case '<': value = leftValue < rightValue; break; + case '<=': value = leftValue <= rightValue; break; + case '+': value = leftValue + rightValue; break; + case '-': value = leftValue - rightValue; break; + case '*': value = leftValue * rightValue; break; + case '/': value = leftValue / rightValue; break; + case '%': value = leftValue % rightValue; break; + case '&': value = leftValue & rightValue; break; + case '|': value = leftValue | rightValue; break; + case '^': value = leftValue ^ rightValue; break; + case '<<': value = leftValue << rightValue; break; + case '>>': value = leftValue >> rightValue; break; + case '>>>': value = leftValue >>> rightValue; break; + case 'in': + if (!rightValue || !rightValue.isObject) { + this.throwException(this.TYPE_ERROR, + "'in' expects an object, not '" + rightValue + "'"); + } + value = this.hasProperty(rightValue, leftValue); + break; + case 'instanceof': + if (!this.isa(rightValue, this.FUNCTION)) { + this.throwException(this.TYPE_ERROR, + 'Right-hand side of instanceof is not an object'); + } + value = leftValue.isObject ? this.isa(leftValue, rightValue) : false; + break; + default: + throw SyntaxError('Unknown binary operator: ' + node['operator']); + } + stack[stack.length - 1].value = value; +}; + +private stepBlockStatement(stack, state, node) { + var n = state.n_ || 0; + var expression = node['body'][n]; + if (expression) { + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); + } + stack.pop(); +}; + +private stepBreakStatement(stack, state, node) { + stack.pop(); + var label = null; + if (node['label']) { + label = node['label']['name']; + } + while (state && + state.node['type'] !== 'CallExpression' && + state.node['type'] !== 'NewExpression') { + if (label) { + if (state.labels && state.labels.indexOf(label) !== -1) { + return; + } + } else if (state.isLoop || state.isSwitch) { + return; + } + state = stack.pop(); + } + // Syntax error, do not allow this error to be trapped. + throw SyntaxError('Illegal break statement'); +}; + +private stepCallExpression(stack, state, node) { + if (!state.doneCallee_) { + state.doneCallee_ = 1; + // Components needed to determine value of 'this'. + var nextState = new Interpreter.MyState(node['callee'], state.scope); + nextState.components = true; + return nextState; + } + if (state.doneCallee_ === 1) { + // Determine value of the function. + state.doneCallee_ = 2; + var func = state.value; + if (Array.isArray(func)) { + state.func_ = this.getValue(func); + if (func[0] !== Interpreter.SCOPE_REFERENCE) { + // Method function, 'this' is object (ignored if invoked as 'new'). + state.funcThis_ = func[0]; + } + func = state.func_; + if (func && typeof func === 'object' && func.isGetter) { + // Clear the getter flag and call the getter function. + func.isGetter = false; + state.doneCallee_ = 1; + return this.createGetter_(/** @type {!Interpreter.Object} */ (func), + state.value); + } + } else { + // Already evaluated function: (function(){...})(); + state.func_ = func; + } + state.arguments_ = []; + state.n_ = 0; + } + var func = state.func_; + if (!state.doneArgs_) { + if (state.n_ !== 0) { + state.arguments_.push(state.value); + } + if (node['arguments'][state.n_]) { + return new Interpreter.MyState(node['arguments'][state.n_++], state.scope); + } + // Determine value of 'this' in function. + if (node['type'] === 'NewExpression') { + if (func.illegalConstructor) { + // Illegal: new escape(); + this.throwException(this.TYPE_ERROR, func + ' is not a constructor'); + } + // Constructor, 'this' is new object. + state.funcThis_ = this.createObject(func); + state.isConstructor = true; + } else if (state.funcThis_ === undefined) { + // Global function, 'this' is global object (or 'undefined' if strict). + state.funcThis_ = state.scope.strict ? undefined : this.global; + } + state.doneArgs_ = true; + } + if (!state.doneExec_) { + state.doneExec_ = true; + if (!func || !func.isObject) { + this.throwException(this.TYPE_ERROR, func + ' is not a function'); + } + var funcNode = func.node; + if (funcNode) { + var scope = this.createScope(funcNode['body'], func.parentScope); + // Add all arguments. + for (var i = 0; i < funcNode['params'].length; i++) { + var paramName = funcNode['params'][i]['name']; + var paramValue = state.arguments_.length > i ? state.arguments_[i] : + undefined; + this.setProperty(scope, paramName, paramValue); + } + // Build arguments variable. + var argsList = this.createObjectProto(this.ARRAY_PROTO); + for (var i = 0; i < state.arguments_.length; i++) { + this.setProperty(argsList, i, state.arguments_[i]); + } + this.setProperty(scope, 'arguments', argsList); + // Add the function's name (var x = function foo(){};) + var name = funcNode['id'] && funcNode['id']['name']; + if (name) { + this.setProperty(scope, name, func); + } + this.setProperty(scope, 'this', state.funcThis_, + Interpreter.READONLY_DESCRIPTOR); + state.value = undefined; // Default value if no explicit return. + return new Interpreter.MyState(funcNode['body'], scope); + } else if (func.eval) { + var code = state.arguments_[0]; + if (typeof code !== 'string') { + // JS does not parse String objects: + // eval(new String('1 + 1')) -> '1 + 1' + state.value = code; + } else { + try { + var ast = acorn.parse(code.toString(), Interpreter.PARSE_OPTIONS); + } catch (e) { + // Acorn threw a SyntaxError. Rethrow as a trappable error. + this.throwException(this.SYNTAX_ERROR, 'Invalid code: ' + e.message); + } + var evalNode = new this.nodeConstructor(); + evalNode['type'] = 'EvalProgram_'; + evalNode['body'] = ast['body']; + this.stripLocations_(evalNode, node['start'], node['end']); + // Update current scope with definitions in eval(). + var scope = state.scope; + if (scope.strict) { + // Strict mode get its own scope in eval. + scope = this.createScope(ast, scope); + } else { + // Non-strict mode pollutes the current scope. + this.populateScope_(ast, scope); + } + this.value = undefined; // Default value if no code. + return new Interpreter.MyState(evalNode, scope); + } + } else if (func.nativeFunc) { + state.value = func.nativeFunc.apply(state.funcThis_, state.arguments_); + } else if (func.asyncFunc) { + var thisInterpreter = this; + var callback = function(value) { + state.value = value; + thisInterpreter.paused_ = false; + }; + var argsWithCallback = state.arguments_.concat(callback); + this.paused_ = true; + func.asyncFunc.apply(state.funcThis_, argsWithCallback); + return; + } else { + /* A child of a function is a function but is not callable. For example: + var F = function() {}; + F.prototype = escape; + var f = new F(); + f(); + */ + this.throwException(this.TYPE_ERROR, func.class + ' is not a function'); + } + } else { + // Execution complete. Put the return value on the stack. + stack.pop(); + if (state.isConstructor && typeof state.value !== 'object') { + stack[stack.length - 1].value = state.funcThis_; + } else { + stack[stack.length - 1].value = state.value; + } + } +}; + +private stepCatchClause(stack, state, node) { + if (!state.done_) { + state.done_ = true; + // Create an empty scope. + var scope = this.createSpecialScope(state.scope); + // Add the argument. + this.setProperty(scope, node['param']['name'], state.throwValue); + // Execute catch clause. + return new Interpreter.MyState(node['body'], scope); + } else { + stack.pop(); + } +}; + +private stepConditionalExpression(stack, state, node) { + var mode = state.mode_ || 0; + if (mode === 0) { + state.mode_ = 1; + return new Interpreter.MyState(node['test'], state.scope); + } + if (mode === 1) { + state.mode_ = 2; + var value = Boolean(state.value); + if (value && node['consequent']) { + // Execute 'if' block. + return new Interpreter.MyState(node['consequent'], state.scope); + } else if (!value && node['alternate']) { + // Execute 'else' block. + return new Interpreter.MyState(node['alternate'], state.scope); + } + // eval('1;if(false){2}') -> undefined + this.value = undefined; + } + stack.pop(); + if (node['type'] === 'ConditionalExpression') { + stack[stack.length - 1].value = state.value; + } +}; + +private stepContinueStatement(stack, state, node) { + stack.pop(); + var label = null; + if (node['label']) { + label = node['label']['name']; + } + state = stack[stack.length - 1]; + while (state && + state.node['type'] !== 'CallExpression' && + state.node['type'] !== 'NewExpression') { + if (state.isLoop) { + if (!label || (state.labels && state.labels.indexOf(label) !== -1)) { + return; + } + } + stack.pop(); + state = stack[stack.length - 1]; + } + // Syntax error, do not allow this error to be trapped. + throw SyntaxError('Illegal continue statement'); +}; + +private stepDebuggerStatement(stack, state, node) { + // Do nothing. May be overridden by developers. + stack.pop(); +}; + +private stepDoWhileStatement(stack, state, node) { + if (node['type'] === 'DoWhileStatement' && state.test_ === undefined) { + // First iteration of do/while executes without checking test. + state.value = true; + state.test_ = true; + } + if (!state.test_) { + state.test_ = true; + return new Interpreter.MyState(node['test'], state.scope); + } + if (!state.value) { // Done, exit loop. + stack.pop(); + } else if (node['body']) { // Execute the body. + state.test_ = false; + state.isLoop = true; + return new Interpreter.MyState(node['body'], state.scope); + } +}; + +private stepEmptyStatement(stack, state, node) { + stack.pop(); +}; + +private stepEvalProgram_(stack, state, node) { + var n = state.n_ || 0; + var expression = node['body'][n]; + if (expression) { + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); + } + stack.pop(); + stack[stack.length - 1].value = this.value; +}; + +private stepExpressionStatement(stack, state, node) { + if (!state.done_) { + state.done_ = true; + return new Interpreter.MyState(node['expression'], state.scope); + } + stack.pop(); + // Save this value to interpreter.value for use as a return value if + // this code is inside an eval function. + this.value = state.value; +}; + +private stepForInStatement(stack, state, node) { + // First, initialize a variable if exists. Only do so once, ever. + if (!state.doneInit_) { + state.doneInit_ = true; + if (node['left']['declarations'] && + node['left']['declarations'][0]['init']) { + if (state.scope.strict) { + this.throwException(this.SYNTAX_ERROR, + 'for-in loop variable declaration may not have an initializer.'); + } + // Variable initialization: for (var x = 4 in y) + return new Interpreter.MyState(node['left'], state.scope); + } + } + // Second, look up the object. Only do so once, ever. + if (!state.doneObject_) { + state.doneObject_ = true; + if (!state.variable_) { + state.variable_ = state.value; + } + return new Interpreter.MyState(node['right'], state.scope); + } + if (!state.isLoop) { + // First iteration. + state.isLoop = true; + state.object_ = state.value; + state.visited_ = Object.create(null); + } + // Third, find the property name for this iteration. + if (state.name_ === undefined) { + done: do { + if (state.object_ && state.object_.isObject) { + if (!state.props_) { + state.props_ = Object.getOwnPropertyNames(state.object_.properties); + } + do { + var prop = state.props_.shift(); + } while (prop && (state.visited_[prop] || + !Object.prototype.hasOwnProperty.call(state.object_.properties, + prop))); + if (prop) { + state.visited_[prop] = true; + if (Object.prototype.propertyIsEnumerable.call( + state.object_.properties, prop)) { + state.name_ = prop; + break done; + } + } + } else if (state.object_ !== null) { + if (!state.props_) { + state.props_ = Object.getOwnPropertyNames(state.object_); + } + do { + var prop = state.props_.shift(); + } while (prop && state.visited_[prop]); + if (prop) { + state.visited_[prop] = true; + state.name_ = prop; + break done; + } + } + state.object_ = this.getPrototype(state.object_); + state.props_ = null; + } while (state.object_ !== null); + if (state.object_ === null) { + // Done, exit loop. + stack.pop(); + return; + } + } + // Fourth, find the variable + if (!state.doneVariable_) { + state.doneVariable_ = true; + var left = node['left']; + if (left['type'] === 'VariableDeclaration') { + // Inline variable declaration: for (var x in y) + state.variable_ = + [Interpreter.SCOPE_REFERENCE, left['declarations'][0]['id']['name']]; + } else { + // Arbitrary left side: for (foo().bar in y) + state.variable_ = null; + var nextState = new Interpreter.MyState(left, state.scope); + nextState.components = true; + return nextState; + } + } + if (!state.variable_) { + state.variable_ = state.value; + } + // Fifth, set the variable. + if (!state.doneSetter_) { + state.doneSetter_ = true; + var value = state.name_; + var setter = this.setValue(state.variable_, value); + if (setter) { + return this.createSetter_(setter, state.variable_, value); + } + } + // Next step will be step three. + state.name_ = undefined; + // Reevaluate the variable since it could be a setter on the global object. + state.doneVariable_ = false; + state.doneSetter_ = false; + // Sixth and finally, execute the body if there was one. this. + if (node['body']) { + return new Interpreter.MyState(node['body'], state.scope); + } +}; + +private stepForStatement(stack, state, node) { + var mode = state.mode_ || 0; + if (mode === 0) { + state.mode_ = 1; + if (node['init']) { + return new Interpreter.MyState(node['init'], state.scope); + } + } else if (mode === 1) { + state.mode_ = 2; + if (node['test']) { + return new Interpreter.MyState(node['test'], state.scope); + } + } else if (mode === 2) { + state.mode_ = 3; + if (node['test'] && !state.value) { + // Done, exit loop. + stack.pop(); + } else { // Execute the body. + state.isLoop = true; + return new Interpreter.MyState(node['body'], state.scope); + } + } else if (mode === 3) { + state.mode_ = 1; + if (node['update']) { + return new Interpreter.MyState(node['update'], state.scope); + } + } +}; + +private stepFunctionDeclaration(stack, state, node) { + // This was found and handled when the scope was populated. + stack.pop(); +}; + +private stepFunctionExpression(stack, state, node) { + stack.pop(); + stack[stack.length - 1].value = this.createFunction(node, state.scope); +}; + +private stepIdentifier(stack, state, node) { + stack.pop(); + if (state.components) { + stack[stack.length - 1].value = [Interpreter.SCOPE_REFERENCE, node['name']]; + return; + } + var value = this.getValueFromScope(node['name']); + // An identifier could be a getter if it's a property on the global object. + if (value && typeof value === 'object' && value.isGetter) { + // Clear the getter flag and call the getter function. + value.isGetter = false; + var scope = state.scope; + while (!this.hasProperty(scope, node['name'])) { + scope = scope.parentScope; + } + var func = /** @type {!Interpreter.Object} */ (value); + return this.createGetter_(func, this.global); + } + stack[stack.length - 1].value = value; +}; + +private stepIfStatement(stack, state, node) { + return this.stepConditionalExpression(stack, state, node); +} + +private stepLabeledStatement(stack, state, node) { + // No need to hit this node again on the way back up the stack. + stack.pop(); + // Note that a statement might have multiple labels. + var labels = state.labels || []; + labels.push(node['label']['name']); + var nextState = new Interpreter.MyState(node['body'], state.scope); + nextState.labels = labels; + return nextState; +}; + +private stepLiteral(stack, state, node) { + stack.pop(); + var value = node['value']; + if (value instanceof RegExp) { + var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO); + this.populateRegExp(pseudoRegexp, value); + value = pseudoRegexp; + } + stack[stack.length - 1].value = value; +}; + +private stepLogicalExpression(stack, state, node) { + if (node['operator'] !== '&&' && node['operator'] !== '||') { + throw SyntaxError('Unknown logical operator: ' + node['operator']); + } + if (!state.doneLeft_) { + state.doneLeft_ = true; + return new Interpreter.MyState(node['left'], state.scope); + } + if (!state.doneRight_) { + if ((node['operator'] === '&&' && !state.value) || + (node['operator'] === '||' && state.value)) { + // Shortcut evaluation. + stack.pop(); + stack[stack.length - 1].value = state.value; + } else { + state.doneRight_ = true; + return new Interpreter.MyState(node['right'], state.scope); + } + } else { + stack.pop(); + stack[stack.length - 1].value = state.value; + } +}; + +private stepMemberExpression(stack, state, node) { + if (!state.doneObject_) { + state.doneObject_ = true; + return new Interpreter.MyState(node['object'], state.scope); + } + var propName; + if (!node['computed']) { + state.object_ = state.value; + // obj.foo -- Just access 'foo' directly. + propName = node['property']['name']; + } else if (!state.doneProperty_) { + state.object_ = state.value; + // obj[foo] -- Compute value of 'foo'. + state.doneProperty_ = true; + return new Interpreter.MyState(node['property'], state.scope); + } else { + propName = state.value; + } + stack.pop(); + if (state.components) { + stack[stack.length - 1].value = [state.object_, propName]; + } else { + var value = this.getProperty(state.object_, propName); + if (value && typeof value === 'object' && value.isGetter) { + // Clear the getter flag and call the getter function. + value.isGetter = false; + var func = /** @type {!Interpreter.Object} */ (value); + return this.createGetter_(func, state.object_); + } + stack[stack.length - 1].value = value; + } +}; + +private stepNewExpression(stack, state, node) { + return this.stepCallExpression(stack, state, node); +} + +private stepObjectExpression(stack, state, node) { + var n = state.n_ || 0; + var property = node['properties'][n]; + if (!state.object_) { + // First execution. + state.object_ = this.createObjectProto(this.OBJECT_PROTO); + state.properties_ = Object.create(null); + } else { + // Determine property name. + var key = property['key']; + if (key['type'] === 'Identifier') { + var propName = key['name']; + } else if (key['type'] === 'Literal') { + var propName = key['value']; + } else { + throw SyntaxError('Unknown object structure: ' + key['type']); + } + // Set the property computed in the previous execution. + if (!state.properties_[propName]) { + // Create temp object to collect value, getter, and/or setter. + state.properties_[propName] = {}; + } + state.properties_[propName][property['kind']] = state.value; + state.n_ = ++n; + property = node['properties'][n]; + } + if (property) { + return new Interpreter.MyState(property['value'], state.scope); + } + for (var key in state.properties_) { + var kinds = state.properties_[key]; + if ('get' in kinds || 'set' in kinds) { + // Set a property with a getter or setter. + var descriptor = { + configurable: true, + enumerable: true, + get: kinds['get'], + set: kinds['set'] + }; + this.setProperty(state.object_, key, null, descriptor); + } else { + // Set a normal property with a value. + this.setProperty(state.object_, key, kinds['init']); + } + } + stack.pop(); + stack[stack.length - 1].value = state.object_; +}; + +private stepProgram(stack, state, node) { + var n = state.n_ || 0; + var expression = node['body'][n]; + if (expression) { + state.done = false; + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); + } + state.done = true; + // Don't pop the stateStack. + // Leave the root scope on the tree in case the program is appended to. +}; + +private stepReturnStatement(stack, state, node) { + if (node['argument'] && !state.done_) { + state.done_ = true; + return new Interpreter.MyState(node['argument'], state.scope); + } + var value = state.value; + var i = stack.length - 1; + state = stack[i]; + while (state.node['type'] !== 'CallExpression' && + state.node['type'] !== 'NewExpression') { + if (state.node['type'] !== 'TryStatement') { + stack.splice(i, 1); + } + i--; + if (i < 0) { + // Syntax error, do not allow this error to be trapped. + throw SyntaxError('Illegal return statement'); + } + state = stack[i]; + } + state.value = value; +}; + +private stepSequenceExpression(stack, state, node) { + var n = state.n_ || 0; + var expression = node['expressions'][n]; + if (expression) { + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); + } + stack.pop(); + stack[stack.length - 1].value = state.value; +}; + +private stepSwitchStatement(stack, state, node) { + if (!state.test_) { + state.test_ = 1; + return new Interpreter.MyState(node['discriminant'], state.scope); + } + if (state.test_ === 1) { + state.test_ = 2; + // Preserve switch value between case tests. + state.switchValue_ = state.value; + } + + while (true) { + var index = state.index_ || 0; + var switchCase = node['cases'][index]; + if (!state.matched_ && switchCase && !switchCase['test']) { + // Test on the default case is null. + // Bypass (but store) the default case, and get back to it later. + state.defaultCase_ = index; + state.index_ = index + 1; + continue; + } + if (!switchCase && !state.matched_ && state.defaultCase_) { + // Ran through all cases, no match. Jump to the default. + state.matched_ = true; + state.index_ = state.defaultCase_; + continue; + } + if (switchCase) { + if (!state.matched_ && !state.tested_ && switchCase['test']) { + state.tested_ = true; + return new Interpreter.MyState(switchCase['test'], state.scope); + } + if (state.matched_ || state.value === state.switchValue_) { + state.matched_ = true; + var n = state.n_ || 0; + if (switchCase['consequent'][n]) { + state.isSwitch = true; + state.n_ = n + 1; + return new Interpreter.MyState(switchCase['consequent'][n], + state.scope); + } + } + // Move on to next case. + state.tested_ = false; + state.n_ = 0; + state.index_ = index + 1; + } else { + stack.pop(); + return; + } + } +}; + +private stepThisExpression(stack, state, node) { + stack.pop(); + stack[stack.length - 1].value = this.getValueFromScope('this'); +}; + +private stepThrowStatement(stack, state, node) { + if (!state.done_) { + state.done_ = true; + return new Interpreter.MyState(node['argument'], state.scope); + } else { + this.throwException(state.value); + } +}; + +private stepTryStatement(stack, state, node) { + if (!state.doneBlock_) { + state.doneBlock_ = true; + return new Interpreter.MyState(node['block'], state.scope); + } + if (state.throwValue && !state.doneHandler_ && node['handler']) { + state.doneHandler_ = true; + var nextState = new Interpreter.MyState(node['handler'], state.scope); + nextState.throwValue = state.throwValue; + state.throwValue = null; // This error has been handled, don't rethrow. + return nextState; + } + if (!state.doneFinalizer_ && node['finalizer']) { + state.doneFinalizer_ = true; + return new Interpreter.MyState(node['finalizer'], state.scope); + } + if (state.throwValue) { + // There was no catch handler, or the catch/finally threw an error. + // Throw the error up to a higher try. + this.executeException(state.throwValue); + } else { + stack.pop(); + } +}; + +private stepUnaryExpression(stack, state, node) { + if (!state.done_) { + state.done_ = true; + var nextState = new Interpreter.MyState(node['argument'], state.scope); + nextState.components = node['operator'] === 'delete'; + return nextState; + } + stack.pop(); + var value = state.value; + if (node['operator'] === '-') { + value = -value; + } else if (node['operator'] === '+') { + value = +value; + } else if (node['operator'] === '!') { + value = !value; + } else if (node['operator'] === '~') { + value = ~value; + } else if (node['operator'] === 'delete') { + var result = true; + // If value is not an array, then it is a primitive, or some other value. + // If so, skip the delete and return true. + if (Array.isArray(value)) { + var obj = value[0]; + if (obj === Interpreter.SCOPE_REFERENCE) { + // 'delete foo;' is the same as 'delete window.foo'. + obj = state.scope; + } + var name = String(value[1]); + try { + delete obj.properties[name]; + } catch (e) { + if (state.scope.strict) { + this.throwException(this.TYPE_ERROR, "Cannot delete property '" + + name + "' of '" + obj + "'"); + } else { + result = false; + } + } + } + value = result; + } else if (node['operator'] === 'typeof') { + value = (value && value.class === 'Function') ? 'function' : typeof value; + } else if (node['operator'] === 'void') { + value = undefined; + } else { + throw SyntaxError('Unknown unary operator: ' + node['operator']); + } + stack[stack.length - 1].value = value; +}; + +private stepUpdateExpression(stack, state, node) { + if (!state.doneLeft_) { + state.doneLeft_ = true; + var nextState = new Interpreter.MyState(node['argument'], state.scope); + nextState.components = true; + return nextState; + } + if (!state.leftSide_) { + state.leftSide_ = state.value; + } + if (state.doneGetter_) { + state.leftValue_ = state.value; + } + if (!state.doneGetter_) { + var leftValue = this.getValue(state.leftSide_); + state.leftValue_ = leftValue; + if (leftValue && typeof leftValue === 'object' && leftValue.isGetter) { + // Clear the getter flag and call the getter function. + leftValue.isGetter = false; + state.doneGetter_ = true; + var func = /** @type {!Interpreter.Object} */ (leftValue); + return this.createGetter_(func, state.leftSide_); + } + } + if (state.doneSetter_) { + // Return if setter function. + // Setter method on property has completed. + // Ignore its return value, and use the original set value instead. + stack.pop(); + stack[stack.length - 1].value = state.doneSetter_; + return; + } + var leftValue = Number(state.leftValue_); + var changeValue; + if (node['operator'] === '++') { + changeValue = leftValue + 1; + } else if (node['operator'] === '--') { + changeValue = leftValue - 1; + } else { + throw SyntaxError('Unknown update expression: ' + node['operator']); + } + var returnValue = node['prefix'] ? changeValue : leftValue; + var setter = this.setValue(state.leftSide_, changeValue); + if (setter) { + state.doneSetter_ = returnValue; + return this.createSetter_(setter, state.leftSide_, changeValue); + } + // Return if no setter function. + stack.pop(); + stack[stack.length - 1].value = returnValue; +}; + +private stepVariableDeclaration(stack, state, node) { + var declarations = node['declarations']; + var n = state.n_ || 0; + var declarationNode = declarations[n]; + if (state.init_ && declarationNode) { + // This setValue call never needs to deal with calling a setter function. + // Note that this is setting the init value, not defining the variable. + // Variable definition is done when scope is populated. + this.setValueToScope(declarationNode['id']['name'], state.value); + state.init_ = false; + declarationNode = declarations[++n]; + } + while (declarationNode) { + // Skip any declarations that are not initialized. They have already + // been defined as undefined in populateScope_. + if (declarationNode['init']) { + state.n_ = n; + state.init_ = true; + return new Interpreter.MyState(declarationNode['init'], state.scope); + } + declarationNode = declarations[++n]; + } + stack.pop(); +}; + +private stepWithStatement(stack, state, node) { + if (!state.doneObject_) { + state.doneObject_ = true; + return new Interpreter.MyState(node['object'], state.scope); + } else if (!state.doneBody_) { + state.doneBody_ = true; + var scope = this.createSpecialScope(state.scope, state.value); + return new Interpreter.MyState(node['body'], scope); + } else { + stack.pop(); + } +}; + +private stepWhileStatement(stack, state, node) { + return this.stepDoWhileStatement(stack, state, node); +} +} + +// Preserve top-level API functions from being pruned/renamed by JS compilers. +// Add others as needed. +// The global object ('window' in a browser, 'global' in node.js) is 'this'. +this['Interpreter'] = Interpreter; +Interpreter.prototype['step'] = Interpreter.prototype.step; +Interpreter.prototype['run'] = Interpreter.prototype.run; +Interpreter.prototype['appendCode'] = Interpreter.prototype.appendCode; +Interpreter.prototype['createObject'] = Interpreter.prototype.createObject; +Interpreter.prototype['createObjectProto'] = + Interpreter.prototype.createObjectProto; +Interpreter.prototype['createAsyncFunction'] = + Interpreter.prototype.createAsyncFunction; +Interpreter.prototype['createNativeFunction'] = + Interpreter.prototype.createNativeFunction; +Interpreter.prototype['getProperty'] = Interpreter.prototype.getProperty; +Interpreter.prototype['setProperty'] = Interpreter.prototype.setProperty; +Interpreter.prototype['nativeToPseudo'] = Interpreter.prototype.nativeToPseudo; +Interpreter.prototype['pseudoToNative'] = Interpreter.prototype.pseudoToNative; +// Obsolete. Do not use. +// private createPrimitive(x) {return x;}; + +module Interpreter { +/** + * Class for an object. + * @param {Interpreter.MyObject} proto Prototype object or null. + * @constructor + */ +export class MyObject { +[key: string]: any; +constructor(proto) { + this.getter = Object.create(null); + this.setter = Object.create(null); + this.properties = Object.create(null); + this.proto = proto; +} + +/** @type {Interpreter.MyObject} */ +proto = null; + +/** @type {boolean} */ +isObject = true; + +/** @type {string} */ +class = 'Object'; + +/** @type {Date|RegExp|boolean|number|string|undefined|null} */ +data = null; + +/** + * Convert this object into a string. + * @return {string} String value. + * @override + */ +toString() { + if (this.class === 'Array') { + // Array + var cycles = Interpreter.toStringCycles_; + cycles.push(this); + try { + var strs = []; + for (var i = 0; i < this.properties.length; i++) { + var value = this.properties[i]; + strs[i] = (value && value.isObject && cycles.indexOf(value) !== -1) ? + '...' : value; + } + } finally { + cycles.pop(); + } + return strs.join(','); + } + if (this.class === 'Error') { + var cycles = Interpreter.toStringCycles_; + if (cycles.indexOf(this) !== -1) { + return '[object Error]'; + } + var name, message; + // Bug: Does not support getters and setters for name or message. + var obj = this; + do { + if ('name' in obj.properties) { + name = obj.properties['name']; + break; + } + } while ((obj = obj.proto)); + var obj = this; + do { + if ('message' in obj.properties) { + message = obj.properties['message']; + break; + } + } while ((obj = obj.proto)); + cycles.push(this); + try { + name = name && name.toString(); + message = message && message.toString(); + } finally { + cycles.pop(); + } + return message ? name + ': ' + message : String(name); + } + + // RegExp, Date, and boxed primitives. + if (this.data !== null) { + return String(this.data); + } + + return '[object ' + this.class + ']'; +} + +/** + * Return the object's value. + * @return {Interpreter.Value} Value. + * @override + */ +valueOf() { + if (this.data === undefined || this.data === null || + this.data instanceof RegExp) { + return this; // An Object. + } + if (this.data instanceof Date) { + return this.data.valueOf(); // Milliseconds. + } + return /** @type {(boolean|number|string)} */ (this.data); // Boxed primitive. +} +} + + +/** + * Class for a state. + * @param {!MyObject} node AST node for the state. + * @param {!Interpreter.MyObject} scope Scope object for the state. + * @constructor + */ +export class MyState { +[key: string]: any; +constructor(node, scope) { + this.node = node; + this.scope = scope; +} +} +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..2f8c97e3 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "JS-Interpreter", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/requirejs": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/@types/requirejs/-/requirejs-2.1.30.tgz", + "integrity": "sha512-qsxhA0AkYkC9AU+dQepOXzBJycmbY+XRM1DIEC3cZS/eYDz03cLHq0UAb1rkCa+s6KOSA7WxRqOuD5d4c7n+AQ==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..cfbe49a6 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "JS-Interpreter", + "version": "0.1.0", + "description": "A sandboxed JavaScript interpreter in JavaScript. Execute arbitrary JavaScript code line by line in isolation and safety.", + "main": "interpreter.js", + "repository": { + "type": "git", + "url": "git+https://github.com/arcatdmz/JS-Interpreter.git" + }, + "keywords": ["javascript", "js-interpreter", "sandbox"], + "author": "Jun Kato (https://junkato.jp)", + "license": "Apache 2.0", + "bugs": { + "url": "https://github.com/arcatdmz/JS-Interpreter/issues" + }, + "homepage": "https://github.com/arcatdmz/JS-Interpreter#readme", + "dependencies": { + "@types/requirejs": "^2.1.30" + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..74507e5d --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "module": "amd", + "sourceMap": true + }, + "files": ["interpreter.ts"] +} \ No newline at end of file From 68221ccb858037c404f3a05bb08ef1f6a2fb7962 Mon Sep 17 00:00:00 2001 From: Jun Kato Date: Sat, 12 Aug 2017 15:08:09 +0900 Subject: [PATCH 04/29] Remove dependency on requirejs; fix license name so that it matches the SPDX license expression --- interpreter.ts | 2 -- package-lock.json | 12 ++---------- package.json | 13 +++++++------ 3 files changed, 9 insertions(+), 18 deletions(-) diff --git a/interpreter.ts b/interpreter.ts index ffd442e3..4c6e4468 100644 --- a/interpreter.ts +++ b/interpreter.ts @@ -1,5 +1,3 @@ -/// - // Declare missing functions declare function escape(s:string): string; declare function unescape(s:string): string; diff --git a/package-lock.json b/package-lock.json index 2f8c97e3..c5b1abdf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13 +1,5 @@ { "name": "JS-Interpreter", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@types/requirejs": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/@types/requirejs/-/requirejs-2.1.30.tgz", - "integrity": "sha512-qsxhA0AkYkC9AU+dQepOXzBJycmbY+XRM1DIEC3cZS/eYDz03cLHq0UAb1rkCa+s6KOSA7WxRqOuD5d4c7n+AQ==" - } - } + "version": "0.1.0", + "lockfileVersion": 1 } diff --git a/package.json b/package.json index cfbe49a6..2a3f2f48 100644 --- a/package.json +++ b/package.json @@ -7,14 +7,15 @@ "type": "git", "url": "git+https://github.com/arcatdmz/JS-Interpreter.git" }, - "keywords": ["javascript", "js-interpreter", "sandbox"], + "keywords": [ + "javascript", + "js-interpreter", + "sandbox" + ], "author": "Jun Kato (https://junkato.jp)", - "license": "Apache 2.0", + "license": "Apache-2.0", "bugs": { "url": "https://github.com/arcatdmz/JS-Interpreter/issues" }, - "homepage": "https://github.com/arcatdmz/JS-Interpreter#readme", - "dependencies": { - "@types/requirejs": "^2.1.30" - } + "homepage": "https://github.com/arcatdmz/JS-Interpreter#readme" } From 02840d21dcac5fe9c345eed85d4c31d712d09de0 Mon Sep 17 00:00:00 2001 From: Jun Kato Date: Sat, 12 Aug 2017 15:08:33 +0900 Subject: [PATCH 05/29] Fix build errors; compile *.ts into *.js --- interpreter.js | 3226 ++++++++++++++++++++++++++++++++++++++++++++ interpreter.js.map | 1 + interpreter.ts | 4 +- 3 files changed, 3229 insertions(+), 2 deletions(-) create mode 100644 interpreter.js create mode 100644 interpreter.js.map diff --git a/interpreter.js b/interpreter.js new file mode 100644 index 00000000..9e94e08a --- /dev/null +++ b/interpreter.js @@ -0,0 +1,3226 @@ +/** + * @license + * JavaScript Interpreter + * + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @fileoverview Interpreting JavaScript in JavaScript. + * @author fraser@google.com (Neil Fraser) + */ +/** + * Create a new interpreter. + * @param {string|!Object} code Raw JavaScript text or AST. + * @param {Function=} opt_initFunc Optional initialization function. Used to + * define APIs. When called it is passed the interpreter object and the + * global scope object. + * @constructor + */ +var Interpreter = (function () { + function Interpreter(code, opt_initFunc) { + if (typeof code === 'string') { + code = acorn.parse(code, Interpreter.PARSE_OPTIONS); + } + this.ast = code; + this.initFunc_ = opt_initFunc; + this.paused_ = false; + this.polyfills_ = []; + // Unique identifier for native functions. Used in serialization. + this.functionCounter_ = 0; + // Map node types to our step function names; a property lookup is faster + // than string concatenation with "step" prefix. + this.stepFunctions_ = Object.create(null); + var stepMatch = /^step([A-Z]\w*)$/; + var m; + for (var methodName in this) { + if ((typeof this[methodName] === 'function') && + (m = methodName.match(stepMatch))) { + this.stepFunctions_[m[1]] = this[methodName].bind(this); + } + } + // Create and initialize the global scope. + this.global = this.createScope(this.ast, null); + // Run the polyfills. + this.ast = acorn.parse(this.polyfills_.join('\n'), Interpreter.PARSE_OPTIONS); + this.polyfills_ = undefined; // Allow polyfill strings to garbage collect. + this.stripLocations_(this.ast, undefined, undefined); + var state = new Interpreter.MyState(this.ast, this.global); + state.done = false; + this.stateStack = [state]; + this.run(); + this.value = undefined; + // Point at the main program. + this.ast = code; + var state = new Interpreter.MyState(this.ast, this.global); + state.done = false; + this.stateStack.length = 0; + this.stateStack[0] = state; + // Get a handle on Acorn's node_t object. It's tricky to access. + this.nodeConstructor = state.node.constructor; + // Preserve publicly properties from being pruned/renamed by JS compilers. + // Add others as needed. + this['stateStack'] = this.stateStack; + this['OBJECT'] = this.OBJECT; + this['OBJECT_PROTO'] = this.OBJECT_PROTO; + this['FUNCTION'] = this.FUNCTION; + this['FUNCTION_PROTO'] = this.FUNCTION_PROTO; + this['ARRAY'] = this.ARRAY; + this['ARRAY_PROTO'] = this.ARRAY_PROTO; + this['REGEXP'] = this.REGEXP; + this['REGEXP_PROTO'] = this.REGEXP_PROTO; + // The following properties are obsolete. Do not use. + this['UNDEFINED'] = undefined; + this['NULL'] = null; + this['NAN'] = NaN; + this['TRUE'] = true; + this['FALSE'] = false; + this['STRING_EMPTY'] = ''; + this['NUMBER_ZERO'] = 0; + this['NUMBER_ONE'] = 1; + } + ; + /** + * Add more code to the interpreter. + * @param {string|!Object} code Raw JavaScript text or AST. + */ + Interpreter.prototype.appendCode = function (code) { + var state = this.stateStack[0]; + if (!state || state.node['type'] !== 'Program') { + throw Error('Expecting original AST to start with a Program node.'); + } + if (typeof code === 'string') { + code = acorn.parse(code, Interpreter.PARSE_OPTIONS); + } + if (!code || code['type'] !== 'Program') { + throw Error('Expecting new AST to start with a Program node.'); + } + this.populateScope_(code, state.scope); + // Append the new program to the old one. + for (var i = 0, node; (node = code['body'][i]); i++) { + state.node['body'].push(node); + } + state.done = false; + }; + ; + /** + * Execute one step of the interpreter. + * @return {boolean} True if a step was executed, false if no more instructions. + */ + Interpreter.prototype.step = function () { + var stack = this.stateStack; + var state = stack[stack.length - 1]; + if (!state) { + return false; + } + var node = state.node, type = node['type']; + if (type === 'Program' && state.done) { + return false; + } + else if (this.paused_) { + return true; + } + try { + var nextState = this.stepFunctions_[type](stack, state, node); + } + catch (e) { + // Eat any step errors. They have been thrown on the stack. + if (e !== Interpreter.STEP_ERROR) { + // Uh oh. This is a real error in the JS-Interpreter. Rethrow. + throw e; + } + } + if (nextState) { + stack.push(nextState); + } + if (!node['end']) { + // This is polyfill code. Keep executing until we arrive at user code. + return this.step(); + } + return true; + }; + ; + /** + * Execute the interpreter to program completion. Vulnerable to infinite loops. + * @return {boolean} True if a execution is asynchronously blocked, + * false if no more instructions. + */ + Interpreter.prototype.run = function () { + while (!this.paused_ && this.step()) { } + return this.paused_; + }; + ; + /** + * Initialize the global scope with buitin properties and functions. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initGlobalScope = function (scope) { + // Initialize uneditable global properties. + this.setProperty(scope, 'NaN', NaN, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'Infinity', Infinity, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'undefined', undefined, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'window', scope, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'this', scope, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'self', scope); // Editable. + // Create the objects which will become Object.prototype and + // Function.prototype, which are needed to bootstrap everything else. + this.OBJECT_PROTO = new Interpreter.MyObject(null); + this.FUNCTION_PROTO = new Interpreter.MyObject(this.OBJECT_PROTO); + // Initialize global objects. + this.initFunction(scope); + this.initObject(scope); + // Unable to set scope's parent prior (OBJECT did not exist). + // Note that in a browser this would be 'Window', whereas in Node.js it would + // be 'Object'. This interpreter is closer to Node in that it has no DOM. + scope.proto = this.OBJECT_PROTO; + this.setProperty(scope, 'constructor', this.OBJECT); + this.initArray(scope); + this.initString(scope); + this.initBoolean(scope); + this.initNumber(scope); + this.initDate(scope); + this.initRegExp(scope); + this.initError(scope); + this.initMath(scope); + this.initJSON(scope); + // Initialize global functions. + var thisInterpreter = this; + var func = this.createNativeFunction(function (x) { throw EvalError("Can't happen"); }, false); + func.eval = true; + this.setProperty(scope, 'eval', func); + this.setProperty(scope, 'parseInt', this.createNativeFunction(parseInt, false)); + this.setProperty(scope, 'parseFloat', this.createNativeFunction(parseFloat, false)); + this.setProperty(scope, 'isNaN', this.createNativeFunction(isNaN, false)); + this.setProperty(scope, 'isFinite', this.createNativeFunction(isFinite, false)); + var strFunctions = [ + [escape, 'escape'], [unescape, 'unescape'], + [decodeURI, 'decodeURI'], [decodeURIComponent, 'decodeURIComponent'], + [encodeURI, 'encodeURI'], [encodeURIComponent, 'encodeURIComponent'] + ]; + for (var i = 0; i < strFunctions.length; i++) { + var wrapper = (function (nativeFunc) { + return function (str) { + try { + return nativeFunc(str); + } + catch (e) { + // decodeURI('%xy') will throw an error. Catch and rethrow. + thisInterpreter.throwException(thisInterpreter.URI_ERROR, e.message); + } + }; + })(strFunctions[i][0]); + this.setProperty(scope, strFunctions[i][1], this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + } + // Run any user-provided initialization. + if (this.initFunc_) { + this.initFunc_(this, scope); + } + }; + ; + /** + * Initialize the Function class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initFunction = function (scope) { + var thisInterpreter = this; + var wrapper; + var identifierRegexp = /^[A-Za-z_$][\w$]*$/; + // Function constructor. + wrapper = function (var_args) { + if (thisInterpreter.calledWithNew()) { + // Called as new Function(). + var newFunc = this; + } + else { + // Called as Function(). + var newFunc = thisInterpreter.createObjectProto(thisInterpreter.FUNCTION_PROTO); + } + if (arguments.length) { + var code = String(arguments[arguments.length - 1]); + } + else { + var code = ''; + } + var args = []; + for (var i = 0; i < arguments.length - 1; i++) { + var name = String(arguments[i]); + if (!name.match(identifierRegexp)) { + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid function argument: ' + name); + } + args.push(name); + } + args = args.join(', '); + // Interestingly, the scope for constructed functions is the global scope, + // even if they were constructed in some other scope. + newFunc.parentScope = thisInterpreter.global; + // Acorn needs to parse code in the context of a function or else 'return' + // statements will be syntax errors. + try { + var ast = acorn.parse('$ = function(' + args + ') {' + code + '};', Interpreter.PARSE_OPTIONS); + } + catch (e) { + // Acorn threw a SyntaxError. Rethrow as a trappable error. + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid code: ' + e.message); + } + if (ast['body'].length !== 1) { + // Function('a', 'return a + 6;}; {alert(1);'); + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid code in function body.'); + } + newFunc.node = ast['body'][0]['expression']['right']; + thisInterpreter.setProperty(newFunc, 'length', newFunc.node['length'], Interpreter.READONLY_DESCRIPTOR); + return newFunc; + }; + wrapper.id = this.functionCounter_++; + this.FUNCTION = this.createObjectProto(this.FUNCTION_PROTO); + this.setProperty(scope, 'Function', this.FUNCTION); + // Manually setup type and prototype because createObj doesn't recognize + // this object as a function (this.FUNCTION did not exist). + this.setProperty(this.FUNCTION, 'prototype', this.FUNCTION_PROTO); + this.FUNCTION.nativeFunc = wrapper; + // Configure Function.prototype. + this.setProperty(this.FUNCTION_PROTO, 'constructor', this.FUNCTION, Interpreter.NONENUMERABLE_DESCRIPTOR); + this.FUNCTION_PROTO.nativeFunc = function () { }; + this.FUNCTION_PROTO.nativeFunc.id = this.functionCounter_++; + this.setProperty(this.FUNCTION_PROTO, 'length', 0, Interpreter.READONLY_DESCRIPTOR); + var boxThis = function (value) { + // In non-strict mode 'this' must be an object. + if ((!value || !value.isObject) && !thisInterpreter.getScope().strict) { + if (value === undefined || value === null) { + // 'Undefined' and 'null' are changed to global object. + value = thisInterpreter.global; + } + else { + // Primitives must be boxed in non-strict mode. + var box = thisInterpreter.createObjectProto(thisInterpreter.getPrototype(value)); + box.data = value; + value = box; + } + } + return value; + }; + wrapper = function (thisArg, args) { + var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1]; + // Rewrite the current 'CallExpression' to apply a different function. + state.func_ = this; + // Assign the 'this' object. + state.funcThis_ = boxThis(thisArg); + // Bind any provided arguments. + state.arguments_ = []; + if (args !== null && args !== undefined) { + if (args.isObject) { + state.arguments_ = thisInterpreter.pseudoToNative(args); + } + else { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'CreateListFromArrayLike called on non-object'); + } + } + state.doneExec_ = false; + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'apply', wrapper); + wrapper = function (thisArg, var_args) { + var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1]; + // Rewrite the current 'CallExpression' to call a different function. + state.func_ = this; + // Assign the 'this' object. + state.funcThis_ = boxThis(thisArg); + // Bind any provided arguments. + state.arguments_ = []; + for (var i = 1; i < arguments.length; i++) { + state.arguments_.push(arguments[i]); + } + state.doneExec_ = false; + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'call', wrapper); + this.polyfills_.push( + // Polyfill copied from: + // developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind + "Object.defineProperty(Function.prototype, 'bind',", "{configurable: true, writable: true, value:", "function(oThis) {", "if (typeof this !== 'function') {", "throw TypeError('What is trying to be bound is not callable');", "}", "var aArgs = Array.prototype.slice.call(arguments, 1),", "fToBind = this,", "fNOP = function() {},", "fBound = function() {", "return fToBind.apply(this instanceof fNOP", "? this", ": oThis,", "aArgs.concat(Array.prototype.slice.call(arguments)));", "};", "if (this.prototype) {", "fNOP.prototype = this.prototype;", "}", "fBound.prototype = new fNOP();", "return fBound;", "}", "});", ""); + // Function has no parent to inherit from, so it needs its own mandatory + // toString and valueOf functions. + wrapper = function () { + return this.toString(); + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'toString', wrapper); + this.setProperty(this.FUNCTION, 'toString', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function () { + return this.valueOf(); + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'valueOf', wrapper); + this.setProperty(this.FUNCTION, 'valueOf', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + }; + ; + /** + * Initialize the Object class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initObject = function (scope) { + var thisInterpreter = this; + var wrapper; + // Object constructor. + wrapper = function (value) { + if (value === undefined || value === null) { + // Create a new object. + if (thisInterpreter.calledWithNew()) { + // Called as new Object(). + return this; + } + else { + // Called as Object(). + return thisInterpreter.createObjectProto(thisInterpreter.OBJECT_PROTO); + } + } + if (!value.isObject) { + // Wrap the value as an object. + var box = thisInterpreter.createObjectProto(thisInterpreter.getPrototype(value)); + box.data = value; + return box; + } + // Return the provided object. + return value; + }; + this.OBJECT = this.createNativeFunction(wrapper, true); + // Throw away the created prototype and use the root prototype. + this.setProperty(this.OBJECT, 'prototype', this.OBJECT_PROTO); + this.setProperty(this.OBJECT_PROTO, 'constructor', this.OBJECT); + this.setProperty(scope, 'Object', this.OBJECT); + /** + * Checks if the provided value is null or undefined. + * If so, then throw an error in the call stack. + * @param {Interpreter.Value} value Value to check. + */ + var throwIfNullUndefined = function (value) { + if (value === undefined || value === null) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, "Cannot convert '" + value + "' to object"); + } + }; + // Static methods on Object. + wrapper = function (obj) { + throwIfNullUndefined(obj); + var props = obj.isObject ? obj.properties : obj; + return thisInterpreter.nativeToPseudo(Object.getOwnPropertyNames(props)); + }; + this.setProperty(this.OBJECT, 'getOwnPropertyNames', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (obj) { + throwIfNullUndefined(obj); + if (!obj.isObject) { + return thisInterpreter.nativeToPseudo(Object.keys(obj)); + } + return thisInterpreter.nativeToPseudo(Object.keys(obj.properties)); + }; + this.setProperty(this.OBJECT, 'keys', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (proto) { + // Support for the second argument is the responsibility of a polyfill. + if (proto === null) { + return thisInterpreter.createObjectProto(null); + } + if (proto === undefined || !proto.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object prototype may only be an Object or null'); + } + return thisInterpreter.createObjectProto(proto); + }; + this.setProperty(this.OBJECT, 'create', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Add a polyfill to handle create's second argument. + this.polyfills_.push("(function() {", "var create_ = Object.create;", "Object.create = function(proto, props) {", "var obj = create_(proto);", "props && Object.defineProperties(obj, props);", "return obj;", "};", "})();", ""); + wrapper = function (obj, prop, descriptor) { + prop = String(prop); + if (!obj || !obj.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object.defineProperty called on non-object'); + } + if (!descriptor || !descriptor.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Property description must be an object'); + } + if (!obj.properties[prop] && obj.preventExtensions) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, "Can't define property '" + prop + "', object is not extensible"); + } + // The polyfill guarantees no inheritance and no getter functions. + // Therefore the descriptor properties map is the native object needed. + thisInterpreter.setProperty(obj, prop, ReferenceError, descriptor.properties); + return obj; + }; + this.setProperty(this.OBJECT, 'defineProperty', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + this.polyfills_.push( + // Flatten the descriptor to remove any inheritance or getter functions. + "(function() {", "var defineProperty_ = Object.defineProperty;", "Object.defineProperty = function(obj, prop, d1) {", "var d2 = {};", "if ('configurable' in d1) d2.configurable = d1.configurable;", "if ('enumerable' in d1) d2.enumerable = d1.enumerable;", "if ('writable' in d1) d2.writable = d1.writable;", "if ('value' in d1) d2.value = d1.value;", "if ('get' in d1) d2.get = d1.get;", "if ('set' in d1) d2.set = d1.set;", "return defineProperty_(obj, prop, d2);", "};", "})();", "Object.defineProperty(Object, 'defineProperties',", "{configurable: true, writable: true, value:", "function(obj, props) {", "var keys = Object.keys(props);", "for (var i = 0; i < keys.length; i++) {", "Object.defineProperty(obj, keys[i], props[keys[i]]);", "}", "return obj;", "}", "});", ""); + wrapper = function (obj, prop) { + if (!obj || !obj.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object.getOwnPropertyDescriptor called on non-object'); + } + prop = String(prop); + if (!(prop in obj.properties)) { + return undefined; + } + var descriptor = Object.getOwnPropertyDescriptor(obj.properties, prop); + var getter = obj.getter[prop]; + var setter = obj.setter[prop]; + if (getter || setter) { + descriptor.get = getter; + descriptor.set = setter; + delete descriptor.value; + delete descriptor.writable; + } + var pseudoDescriptor = thisInterpreter.nativeToPseudo(descriptor); + if ('value' in descriptor) { + thisInterpreter.setProperty(pseudoDescriptor, 'value', descriptor.value); + } + return pseudoDescriptor; + }; + this.setProperty(this.OBJECT, 'getOwnPropertyDescriptor', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (obj) { + throwIfNullUndefined(obj); + return thisInterpreter.getPrototype(obj); + }; + this.setProperty(this.OBJECT, 'getPrototypeOf', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (obj) { + return Boolean(obj) && !obj.preventExtensions; + }; + this.setProperty(this.OBJECT, 'isExtensible', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (obj) { + if (obj && obj.isObject) { + obj.preventExtensions = true; + } + return obj; + }; + this.setProperty(this.OBJECT, 'preventExtensions', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Instance methods on Object. + this.setNativeFunctionPrototype(this.OBJECT, 'toString', Interpreter.MyObject.prototype.toString); + this.setNativeFunctionPrototype(this.OBJECT, 'toLocaleString', Interpreter.MyObject.prototype.toString); + this.setNativeFunctionPrototype(this.OBJECT, 'valueOf', Interpreter.MyObject.prototype.valueOf); + wrapper = function (prop) { + throwIfNullUndefined(this); + if (!this.isObject) { + return this.hasOwnProperty(prop); + } + return String(prop) in this.properties; + }; + this.setNativeFunctionPrototype(this.OBJECT, 'hasOwnProperty', wrapper); + wrapper = function (prop) { + throwIfNullUndefined(this); + return Object.prototype.propertyIsEnumerable.call(this.properties, prop); + }; + this.setNativeFunctionPrototype(this.OBJECT, 'propertyIsEnumerable', wrapper); + wrapper = function (obj) { + while (true) { + // Note, circular loops shouldn't be possible. + obj = thisInterpreter.getPrototype(obj); + if (!obj) { + // No parent; reached the top. + return false; + } + if (obj === this) { + return true; + } + } + }; + this.setNativeFunctionPrototype(this.OBJECT, 'isPrototypeOf', wrapper); + }; + ; + /** + * Initialize the Array class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initArray = function (scope) { + var thisInterpreter = this; + var getInt = function (obj, def) { + // Return an integer, or the default. + var n = obj ? Math.floor(obj) : def; + if (isNaN(n)) { + n = def; + } + return n; + }; + var wrapper; + // Array constructor. + wrapper = function (var_args) { + if (thisInterpreter.calledWithNew()) { + // Called as new Array(). + var newArray = this; + } + else { + // Called as Array(). + var newArray = thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO); + } + var first = arguments[0]; + if (arguments.length === 1 && typeof first === 'number') { + if (isNaN(Interpreter.legalArrayLength(first))) { + thisInterpreter.throwException(thisInterpreter.RANGE_ERROR, 'Invalid array length'); + } + newArray.properties.length = first; + } + else { + for (var i = 0; i < arguments.length; i++) { + newArray.properties[i] = arguments[i]; + } + newArray.properties.length = i; + } + return newArray; + }; + this.ARRAY = this.createNativeFunction(wrapper, true); + this.ARRAY_PROTO = this.ARRAY.properties['prototype']; + this.setProperty(scope, 'Array', this.ARRAY); + // Static methods on Array. + wrapper = function (obj) { + return obj && obj["class"] === 'Array'; + }; + this.setProperty(this.ARRAY, 'isArray', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Instance methods on Array. + wrapper = function () { + return Array.prototype.pop.call(this.properties); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'pop', wrapper); + wrapper = function (var_args) { + return Array.prototype.push.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'push', wrapper); + wrapper = function () { + return Array.prototype.shift.call(this.properties); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'shift', wrapper); + wrapper = function (var_args) { + return Array.prototype.unshift.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'unshift', wrapper); + wrapper = function () { + Array.prototype.reverse.call(this.properties); + return this; + }; + this.setNativeFunctionPrototype(this.ARRAY, 'reverse', wrapper); + wrapper = function (index, howmany /*, var_args*/) { + var list = Array.prototype.splice.apply(this.properties, arguments); + return thisInterpreter.nativeToPseudo(list); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'splice', wrapper); + wrapper = function (opt_begin, opt_end) { + var list = Array.prototype.slice.call(this.properties, opt_begin, opt_end); + return thisInterpreter.nativeToPseudo(list); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'slice', wrapper); + wrapper = function (opt_separator) { + return Array.prototype.join.call(this.properties, opt_separator); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'join', wrapper); + wrapper = function (var_args) { + var list = []; + var length = 0; + // Start by copying the current array. + var iLength = thisInterpreter.getProperty(this, 'length'); + for (var i = 0; i < iLength; i++) { + if (thisInterpreter.hasProperty(this, i)) { + var element = thisInterpreter.getProperty(this, i); + list[length] = element; + } + length++; + } + // Loop through all arguments and copy them in. + for (var i = 0; i < arguments.length; i++) { + var value = arguments[i]; + if (thisInterpreter.isa(value, thisInterpreter.ARRAY)) { + var jLength = thisInterpreter.getProperty(value, 'length'); + for (var j = 0; j < jLength; j++) { + if (thisInterpreter.hasProperty(value, j)) { + list[length] = thisInterpreter.getProperty(value, j); + } + length++; + } + } + else { + list[length] = value; + } + } + return thisInterpreter.nativeToPseudo(list); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'concat', wrapper); + wrapper = function (searchElement, opt_fromIndex) { + return Array.prototype.indexOf.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'indexOf', wrapper); + wrapper = function (searchElement, opt_fromIndex) { + return Array.prototype.lastIndexOf.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'lastIndexOf', wrapper); + wrapper = function () { + Array.prototype.sort.call(this.properties); + return this; + }; + this.setNativeFunctionPrototype(this.ARRAY, 'sort', wrapper); + this.polyfills_.push( + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/every + "Object.defineProperty(Array.prototype, 'every',", "{configurable: true, writable: true, value:", "function(callbackfn, thisArg) {", "if (!this || typeof callbackfn !== 'function') throw TypeError();", "var T, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "k = 0;", "while (k < len) {", "if (k in O && !callbackfn.call(T, O[k], k, O)) return false;", "k++;", "}", "return true;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/filter + "Object.defineProperty(Array.prototype, 'filter',", "{configurable: true, writable: true, value:", "function(fun/*, thisArg*/) {", "if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();", "var t = Object(this);", "var len = t.length >>> 0;", "var res = [];", "var thisArg = arguments.length >= 2 ? arguments[1] : void 0;", "for (var i = 0; i < len; i++) {", "if (i in t) {", "var val = t[i];", "if (fun.call(thisArg, val, i, t)) res.push(val);", "}", "}", "return res;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach + "Object.defineProperty(Array.prototype, 'forEach',", "{configurable: true, writable: true, value:", "function(callback, thisArg) {", "if (!this || typeof callback !== 'function') throw TypeError();", "var T, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "k = 0;", "while (k < len) {", "if (k in O) callback.call(T, O[k], k, O);", "k++;", "}", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map + "Object.defineProperty(Array.prototype, 'map',", "{configurable: true, writable: true, value:", "function(callback, thisArg) {", "if (!this || typeof callback !== 'function') new TypeError;", "var T, A, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "A = new Array(len);", "k = 0;", "while (k < len) {", "if (k in O) A[k] = callback.call(T, O[k], k, O);", "k++;", "}", "return A;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce + "Object.defineProperty(Array.prototype, 'reduce',", "{configurable: true, writable: true, value:", "function(callback /*, initialValue*/) {", "if (!this || typeof callback !== 'function') throw TypeError();", "var t = Object(this), len = t.length >>> 0, k = 0, value;", "if (arguments.length === 2) {", "value = arguments[1];", "} else {", "while (k < len && !(k in t)) k++;", "if (k >= len) {", "throw TypeError('Reduce of empty array with no initial value');", "}", "value = t[k++];", "}", "for (; k < len; k++) {", "if (k in t) value = callback(value, t[k], k, t);", "}", "return value;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight + "Object.defineProperty(Array.prototype, 'reduceRight',", "{configurable: true, writable: true, value:", "function(callback /*, initialValue*/) {", "if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();", "var t = Object(this), len = t.length >>> 0, k = len - 1, value;", "if (arguments.length >= 2) {", "value = arguments[1];", "} else {", "while (k >= 0 && !(k in t)) k--;", "if (k < 0) {", "throw TypeError('Reduce of empty array with no initial value');", "}", "value = t[k--];", "}", "for (; k >= 0; k--) {", "if (k in t) value = callback(value, t[k], k, t);", "}", "return value;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/some + "Object.defineProperty(Array.prototype, 'some',", "{configurable: true, writable: true, value:", "function(fun/*, thisArg*/) {", "if (!this || typeof fun !== 'function') throw TypeError();", "var t = Object(this);", "var len = t.length >>> 0;", "var thisArg = arguments.length >= 2 ? arguments[1] : void 0;", "for (var i = 0; i < len; i++) {", "if (i in t && fun.call(thisArg, t[i], i, t)) {", "return true;", "}", "}", "return false;", "}", "});", "(function() {", "var sort_ = Array.prototype.sort;", "Array.prototype.sort = function(opt_comp) {", + // Fast native sort. + "if (typeof opt_comp !== 'function') {", "return sort_.call(this);", "}", + // Slow bubble sort. + "for (var i = 0; i < this.length; i++) {", "var changes = 0;", "for (var j = 0; j < this.length - i - 1; j++) {", "if (opt_comp(this[j], this[j + 1]) > 0) {", "var swap = this[j];", "this[j] = this[j + 1];", "this[j + 1] = swap;", "changes++;", "}", "}", "if (!changes) break;", "}", "return this;", "};", "})();", "Object.defineProperty(Array.prototype, 'toLocaleString',", "{configurable: true, writable: true, value:", "function() {", "var out = [];", "for (var i = 0; i < this.length; i++) {", "out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();", "}", "return out.join(',');", "}", "});", ""); + }; + ; + /** + * Initialize the String class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initString = function (scope) { + var thisInterpreter = this; + var wrapper; + // String constructor. + wrapper = function (value) { + value = String(value); + if (thisInterpreter.calledWithNew()) { + // Called as new String(). + this.data = value; + return this; + } + else { + // Called as String(). + return value; + } + }; + this.STRING = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'String', this.STRING); + // Static methods on String. + this.setProperty(this.STRING, 'fromCharCode', this.createNativeFunction(String.fromCharCode, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Instance methods on String. + // Methods with exclusively primitive arguments. + var functions = ['trim', 'toLowerCase', 'toUpperCase', + 'toLocaleLowerCase', 'toLocaleUpperCase', 'charAt', 'charCodeAt', + 'substring', 'slice', 'substr', 'indexOf', 'lastIndexOf', 'concat']; + for (var i = 0; i < functions.length; i++) { + this.setNativeFunctionPrototype(this.STRING, functions[i], String.prototype[functions[i]]); + } + wrapper = function (compareString, locales, options) { + locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined; + options = options ? thisInterpreter.pseudoToNative(options) : undefined; + return String(this).localeCompare(compareString, locales, options); + }; + this.setNativeFunctionPrototype(this.STRING, 'localeCompare', wrapper); + wrapper = function (separator, limit) { + if (thisInterpreter.isa(separator, thisInterpreter.REGEXP)) { + separator = separator.data; + } + var jsList = String(this).split(separator, limit); + return thisInterpreter.nativeToPseudo(jsList); + }; + this.setNativeFunctionPrototype(this.STRING, 'split', wrapper); + wrapper = function (regexp) { + regexp = regexp ? regexp.data : undefined; + var match = String(this).match(regexp); + if (!match) { + return null; + } + return thisInterpreter.nativeToPseudo(match); + }; + this.setNativeFunctionPrototype(this.STRING, 'match', wrapper); + wrapper = function (regexp) { + regexp = regexp ? regexp.data : undefined; + return String(this).search(regexp); + }; + this.setNativeFunctionPrototype(this.STRING, 'search', wrapper); + wrapper = function (substr, newSubstr) { + // Support for function replacements is the responsibility of a polyfill. + return String(this).replace(substr.data || substr, newSubstr); + }; + this.setNativeFunctionPrototype(this.STRING, 'replace', wrapper); + // Add a polyfill to handle replace's second argument being a function. + this.polyfills_.push("(function() {", "var replace_ = String.prototype.replace;", "String.prototype.replace = function(substr, newSubstr) {", "if (typeof newSubstr !== 'function') {", + // string.replace(string|regexp, string) + "return replace_.call(this, substr, newSubstr);", "}", "var str = this;", "if (substr instanceof RegExp) {", // string.replace(regexp, function) + "var subs = [];", "var m = substr.exec(str);", "while (m) {", "m.push(m.index, str);", "var inject = newSubstr.apply(null, m);", "subs.push([m.index, m[0].length, inject]);", "m = substr.global ? substr.exec(str) : null;", "}", "for (var i = subs.length - 1; i >= 0; i--) {", "str = str.substring(0, subs[i][0]) + subs[i][2] + " + + "str.substring(subs[i][0] + subs[i][1]);", "}", "} else {", // string.replace(string, function) + "var i = str.indexOf(substr);", "if (i !== -1) {", "var inject = newSubstr(str.substr(i, substr.length), i, str);", "str = str.substring(0, i) + inject + " + + "str.substring(i + substr.length);", "}", "}", "return str;", "};", "})();", ""); + }; + ; + /** + * Initialize the Boolean class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initBoolean = function (scope) { + var thisInterpreter = this; + var wrapper; + // Boolean constructor. + wrapper = function (value) { + value = Boolean(value); + if (thisInterpreter.calledWithNew()) { + // Called as new Boolean(). + this.data = value; + return this; + } + else { + // Called as Boolean(). + return value; + } + }; + this.BOOLEAN = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'Boolean', this.BOOLEAN); + }; + ; + /** + * Initialize the Number class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initNumber = function (scope) { + var thisInterpreter = this; + var wrapper; + // Number constructor. + wrapper = function (value) { + value = Number(value); + if (thisInterpreter.calledWithNew()) { + // Called as new Number(). + this.data = value; + return this; + } + else { + // Called as Number(). + return value; + } + }; + this.NUMBER = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'Number', this.NUMBER); + var numConsts = ['MAX_VALUE', 'MIN_VALUE', 'NaN', 'NEGATIVE_INFINITY', + 'POSITIVE_INFINITY']; + for (var i = 0; i < numConsts.length; i++) { + this.setProperty(this.NUMBER, numConsts[i], Number[numConsts[i]], Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + } + // Instance methods on Number. + wrapper = function (fractionDigits) { + try { + return Number(this).toExponential(fractionDigits); + } + catch (e) { + // Throws if fractionDigits isn't within 0-20. + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + } + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toExponential', wrapper); + wrapper = function (digits) { + try { + return Number(this).toFixed(digits); + } + catch (e) { + // Throws if digits isn't within 0-20. + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + } + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toFixed', wrapper); + wrapper = function (precision) { + try { + return Number(this).toPrecision(precision); + } + catch (e) { + // Throws if precision isn't within range (depends on implementation). + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + } + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toPrecision', wrapper); + wrapper = function (radix) { + try { + return Number(this).toString(radix); + } + catch (e) { + // Throws if radix isn't within 2-36. + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + } + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toString', wrapper); + wrapper = function (locales, options) { + locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined; + options = options ? thisInterpreter.pseudoToNative(options) : undefined; + return Number(this).toLocaleString(locales, options); + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toLocaleString', wrapper); + }; + ; + /** + * Initialize the Date class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initDate = function (scope) { + var thisInterpreter = this; + var wrapper; + // Date constructor. + wrapper = function (value, var_args) { + if (!thisInterpreter.calledWithNew()) { + // Called as Date(). + // Calling Date() as a function returns a string, no arguments are heeded. + return Date(); + } + // Called as new Date(). + var args = [null].concat(Array.from(arguments)); + this.data = new (Function.prototype.bind.apply(Date, args)); + return this; + }; + this.DATE = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'Date', this.DATE); + // Static methods on Date. + this.setProperty(this.DATE, 'now', this.createNativeFunction(Date.now, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.DATE, 'parse', this.createNativeFunction(Date.parse, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.DATE, 'UTC', this.createNativeFunction(Date.UTC, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Instance methods on Date. + var functions = ['getDate', 'getDay', 'getFullYear', 'getHours', + 'getMilliseconds', 'getMinutes', 'getMonth', 'getSeconds', 'getTime', + 'getTimezoneOffset', 'getUTCDate', 'getUTCDay', 'getUTCFullYear', + 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', + 'getUTCSeconds', 'getYear', + 'setDate', 'setFullYear', 'setHours', 'setMilliseconds', + 'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', + 'setUTCFullYear', 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', + 'setUTCMonth', 'setUTCSeconds', 'setYear', + 'toDateString', 'toISOString', 'toJSON', 'toGMTString', + 'toLocaleDateString', 'toLocaleString', 'toLocaleTimeString', + 'toTimeString', 'toUTCString']; + for (var i = 0; i < functions.length; i++) { + wrapper = (function (nativeFunc) { + return function (var_args) { + var args = []; + for (var i = 0; i < arguments.length; i++) { + args[i] = thisInterpreter.pseudoToNative(arguments[i]); + } + return this.data[nativeFunc].apply(this.data, args); + }; + })(functions[i]); + this.setNativeFunctionPrototype(this.DATE, functions[i], wrapper); + } + }; + ; + /** + * Initialize Regular Expression object. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initRegExp = function (scope) { + var thisInterpreter = this; + var wrapper; + // RegExp constructor. + wrapper = function (pattern, flags) { + if (thisInterpreter.calledWithNew()) { + // Called as new RegExp(). + var rgx = this; + } + else { + // Called as RegExp(). + var rgx = thisInterpreter.createObjectProto(thisInterpreter.REGEXP_PROTO); + } + pattern = pattern ? pattern.toString() : ''; + flags = flags ? flags.toString() : ''; + thisInterpreter.populateRegExp(rgx, new RegExp(pattern, flags)); + return rgx; + }; + this.REGEXP = this.createNativeFunction(wrapper, true); + this.REGEXP_PROTO = this.REGEXP.properties['prototype']; + this.setProperty(scope, 'RegExp', this.REGEXP); + this.setProperty(this.REGEXP.properties['prototype'], 'global', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.REGEXP.properties['prototype'], 'ignoreCase', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.REGEXP.properties['prototype'], 'multiline', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.REGEXP.properties['prototype'], 'source', '(?:)', Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + wrapper = function (str) { + return this.data.test(str); + }; + this.setNativeFunctionPrototype(this.REGEXP, 'test', wrapper); + wrapper = function (str) { + str = str.toString(); + // Get lastIndex from wrapped regex, since this is settable. + this.data.lastIndex = + Number(thisInterpreter.getProperty(this, 'lastIndex')); + var match = this.data.exec(str); + thisInterpreter.setProperty(this, 'lastIndex', this.data.lastIndex); + if (match) { + var result = thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO); + for (var i = 0; i < match.length; i++) { + thisInterpreter.setProperty(result, i, match[i]); + } + // match has additional properties. + thisInterpreter.setProperty(result, 'index', match.index); + thisInterpreter.setProperty(result, 'input', match.input); + return result; + } + return null; + }; + this.setNativeFunctionPrototype(this.REGEXP, 'exec', wrapper); + }; + ; + /** + * Initialize the Error class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initError = function (scope) { + var thisInterpreter = this; + // Error constructor. + this.ERROR = this.createNativeFunction(function (opt_message) { + if (thisInterpreter.calledWithNew()) { + // Called as new Error(). + var newError = this; + } + else { + // Called as Error(). + var newError = thisInterpreter.createObject(thisInterpreter.ERROR); + } + if (opt_message) { + thisInterpreter.setProperty(newError, 'message', String(opt_message), Interpreter.NONENUMERABLE_DESCRIPTOR); + } + return newError; + }, true); + this.setProperty(scope, 'Error', this.ERROR); + this.setProperty(this.ERROR.properties['prototype'], 'message', '', Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.ERROR.properties['prototype'], 'name', 'Error', Interpreter.NONENUMERABLE_DESCRIPTOR); + var createErrorSubclass = function (name) { + var constructor = thisInterpreter.createNativeFunction(function (opt_message) { + if (thisInterpreter.calledWithNew()) { + // Called as new XyzError(). + var newError = this; + } + else { + // Called as XyzError(). + var newError = thisInterpreter.createObject(constructor); + } + if (opt_message) { + thisInterpreter.setProperty(newError, 'message', String(opt_message), Interpreter.NONENUMERABLE_DESCRIPTOR); + } + return newError; + }, true); + thisInterpreter.setProperty(constructor, 'prototype', thisInterpreter.createObject(thisInterpreter.ERROR)); + thisInterpreter.setProperty(constructor.properties['prototype'], 'name', name, Interpreter.NONENUMERABLE_DESCRIPTOR); + thisInterpreter.setProperty(scope, name, constructor); + return constructor; + }; + this.EVAL_ERROR = createErrorSubclass('EvalError'); + this.RANGE_ERROR = createErrorSubclass('RangeError'); + this.REFERENCE_ERROR = createErrorSubclass('ReferenceError'); + this.SYNTAX_ERROR = createErrorSubclass('SyntaxError'); + this.TYPE_ERROR = createErrorSubclass('TypeError'); + this.URI_ERROR = createErrorSubclass('URIError'); + }; + ; + /** + * Initialize Math object. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initMath = function (scope) { + var thisInterpreter = this; + var myMath = this.createObjectProto(this.OBJECT_PROTO); + this.setProperty(scope, 'Math', myMath); + var mathConsts = ['E', 'LN2', 'LN10', 'LOG2E', 'LOG10E', 'PI', + 'SQRT1_2', 'SQRT2']; + for (var i = 0; i < mathConsts.length; i++) { + this.setProperty(myMath, mathConsts[i], Math[mathConsts[i]], Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + } + var numFunctions = ['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', + 'exp', 'floor', 'log', 'max', 'min', 'pow', 'random', + 'round', 'sin', 'sqrt', 'tan']; + for (var i = 0; i < numFunctions.length; i++) { + this.setProperty(myMath, numFunctions[i], this.createNativeFunction(Math[numFunctions[i]], false), Interpreter.NONENUMERABLE_DESCRIPTOR); + } + }; + ; + /** + * Initialize JSON object. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initJSON = function (scope) { + var thisInterpreter = this; + var myJSON = thisInterpreter.createObjectProto(this.OBJECT_PROTO); + this.setProperty(scope, 'JSON', myJSON); + var wrapper = function (text) { + try { + var nativeObj = JSON.parse(text.toString()); + } + catch (e) { + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, e.message); + } + return thisInterpreter.nativeToPseudo(nativeObj); + }; + this.setProperty(myJSON, 'parse', this.createNativeFunction(wrapper, false)); + wrapper = function (value) { + var nativeObj = thisInterpreter.pseudoToNative(value); + try { + var str = JSON.stringify(nativeObj); + } + catch (e) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, e.message); + } + return str; + }; + this.setProperty(myJSON, 'stringify', this.createNativeFunction(wrapper, false)); + }; + ; + /** + * Is an object of a certain class? + * @param {Interpreter.Value} child Object to check. + * @param {Interpreter.MyObject} constructor Constructor of object. + * @return {boolean} True if object is the class or inherits from it. + * False otherwise. + */ + Interpreter.prototype.isa = function (child, constructor) { + if (child === null || child === undefined || !constructor) { + return false; + } + var proto = constructor.properties['prototype']; + if (child === proto) { + return true; + } + // The first step up the prototype chain is harder since the child might be + // a primitive value. Subsequent steps can just follow the .proto property. + child = this.getPrototype(child); + while (child) { + if (child === proto) { + return true; + } + child = child.proto; + } + return false; + }; + ; + /** + * Is a value a legal integer for an array length? + * @param {Interpreter.Value} x Value to check. + * @return {number} Zero, or a positive integer if the value can be + * converted to such. NaN otherwise. + */ + Interpreter.legalArrayLength = function (x) { + var n = x >>> 0; + // Array length must be between 0 and 2^32-1 (inclusive). + return (n === Number(x)) ? n : NaN; + }; + ; + /** + * Is a value a legal integer for an array index? + * @param {Interpreter.Value} x Value to check. + * @return {number} Zero, or a positive integer if the value can be + * converted to such. NaN otherwise. + */ + Interpreter.legalArrayIndex = function (x) { + var n = x >>> 0; + // Array index cannot be 2^32-1, otherwise length would be 2^32. + // 0xffffffff is 2^32-1. + return (String(n) === String(x) && n !== 0xffffffff) ? n : NaN; + }; + ; + /** + * Create a new data object based on a constructor's prototype. + * @param {Interpreter.MyObject} constructor Parent constructor function, + * or null if scope object. + * @return {!Interpreter.MyObject} New data object. + */ + Interpreter.prototype.createObject = function (constructor) { + return this.createObjectProto(constructor && + constructor.properties['prototype']); + }; + ; + /** + * Create a new data object based on a prototype. + * @param {Interpreter.MyObject} proto Prototype object. + * @return {!Interpreter.MyObject} New data object. + */ + Interpreter.prototype.createObjectProto = function (proto) { + var obj = new Interpreter.MyObject(proto); + // Functions have prototype objects. + if (this.isa(obj, this.FUNCTION)) { + this.setProperty(obj, 'prototype', this.createObjectProto(this.OBJECT_PROTO || null)); + obj["class"] = 'Function'; + } + // Arrays have length. + if (this.isa(obj, this.ARRAY)) { + this.setProperty(obj, 'length', 0, { configurable: false, enumerable: false, writable: true }); + obj["class"] = 'Array'; + } + if (this.isa(obj, this.ERROR)) { + obj["class"] = 'Error'; + } + return obj; + }; + ; + /** + * Initialize a pseudo regular expression object based on a native regular + * expression object. + * @param {!Interpreter.MyObject} pseudoRegexp The existing object to set. + * @param {!RegExp} nativeRegexp The native regular expression. + */ + Interpreter.prototype.populateRegExp = function (pseudoRegexp, nativeRegexp) { + pseudoRegexp.data = nativeRegexp; + // lastIndex is settable, all others are read-only attributes + this.setProperty(pseudoRegexp, 'lastIndex', nativeRegexp.lastIndex, Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'source', nativeRegexp.source, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'global', nativeRegexp.global, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'ignoreCase', nativeRegexp.ignoreCase, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'multiline', nativeRegexp.multiline, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + }; + ; + /** + * Create a new function. + * @param {!Object} node AST node defining the function. + * @param {!Object} scope Parent scope. + * @return {!Interpreter.MyObject} New function. + */ + Interpreter.prototype.createFunction = function (node, scope) { + var func = this.createObjectProto(this.FUNCTION_PROTO); + func.parentScope = scope; + func.node = node; + this.setProperty(func, 'length', func.node['params'].length, Interpreter.READONLY_DESCRIPTOR); + return func; + }; + ; + /** + * Create a new native function. + * @param {!Function} nativeFunc JavaScript function. + * @param {boolean=} opt_constructor If true, the function's + * prototype will have its constructor property set to the function. + * If false, the function cannot be called as a constructor (e.g. escape). + * Defaults to undefined. + * @return {!Interpreter.MyObject} New function. + */ + Interpreter.prototype.createNativeFunction = function (nativeFunc, opt_constructor) { + var func = this.createObjectProto(this.FUNCTION_PROTO); + func.nativeFunc = nativeFunc; + nativeFunc.id = this.functionCounter_++; + this.setProperty(func, 'length', nativeFunc.length, Interpreter.READONLY_DESCRIPTOR); + if (opt_constructor) { + this.setProperty(func.properties['prototype'], 'constructor', func, Interpreter.NONENUMERABLE_DESCRIPTOR); + } + else if (opt_constructor === false) { + func.illegalConstructor = true; + this.setProperty(func, 'prototype', undefined); + } + return func; + }; + ; + /** + * Create a new native asynchronous function. + * @param {!Function} asyncFunc JavaScript function. + * @return {!Interpreter.MyObject} New function. + */ + Interpreter.prototype.createAsyncFunction = function (asyncFunc) { + var func = this.createObjectProto(this.FUNCTION_PROTO); + func.asyncFunc = asyncFunc; + asyncFunc.id = this.functionCounter_++; + this.setProperty(func, 'length', asyncFunc.length, Interpreter.READONLY_DESCRIPTOR); + return func; + }; + ; + /** + * Converts from a native JS object or value to a JS interpreter object. + * Can handle JSON-style values. + * @param {*} nativeObj The native JS object to be converted. + * @return {Interpreter.Value} The equivalent JS interpreter object. + */ + Interpreter.prototype.nativeToPseudo = function (nativeObj) { + if (typeof nativeObj === 'boolean' || + typeof nativeObj === 'number' || + typeof nativeObj === 'string' || + nativeObj === null || nativeObj === undefined) { + return nativeObj; + } + if (nativeObj instanceof RegExp) { + var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO); + this.populateRegExp(pseudoRegexp, nativeObj); + return pseudoRegexp; + } + if (nativeObj instanceof Function) { + var interpreter = this; + var wrapper = function () { + return interpreter.nativeToPseudo(nativeObj.apply(interpreter, Array.prototype.slice.call(arguments) + .map(function (i) { + return interpreter.pseudoToNative(i); + }))); + }; + return this.createNativeFunction(wrapper, undefined); + } + var pseudoObj; + if (Array.isArray(nativeObj)) { + pseudoObj = this.createObjectProto(this.ARRAY_PROTO); + for (var i = 0; i < nativeObj.length; i++) { + if (i in nativeObj) { + this.setProperty(pseudoObj, i, this.nativeToPseudo(nativeObj[i])); + } + } + } + else { + pseudoObj = this.createObjectProto(this.OBJECT_PROTO); + for (var key in nativeObj) { + this.setProperty(pseudoObj, key, this.nativeToPseudo(nativeObj[key])); + } + } + return pseudoObj; + }; + ; + /** + * Converts from a JS interpreter object to native JS object. + * Can handle JSON-style values, plus cycles. + * @param {Interpreter.Value} pseudoObj The JS interpreter object to be + * converted. + * @param {Object=} opt_cycles Cycle detection (used in recursive calls). + * @return {*} The equivalent native JS object or value. + */ + Interpreter.prototype.pseudoToNative = function (pseudoObj, opt_cycles) { + if (typeof pseudoObj === 'boolean' || + typeof pseudoObj === 'number' || + typeof pseudoObj === 'string' || + pseudoObj === null || pseudoObj === undefined) { + return pseudoObj; + } + if (this.isa(pseudoObj, this.REGEXP)) { + return pseudoObj.data; + } + var cycles = opt_cycles || { + pseudo: [], + native: [] + }; + var i = cycles.pseudo.indexOf(pseudoObj); + if (i !== -1) { + return cycles.native[i]; + } + cycles.pseudo.push(pseudoObj); + var nativeObj; + if (this.isa(pseudoObj, this.ARRAY)) { + nativeObj = []; + cycles.native.push(nativeObj); + var length = this.getProperty(pseudoObj, 'length'); + for (var i = 0; i < length; i++) { + if (this.hasProperty(pseudoObj, i)) { + nativeObj[i] = + this.pseudoToNative(this.getProperty(pseudoObj, i), cycles); + } + } + } + else { + nativeObj = {}; + cycles.native.push(nativeObj); + var val; + for (var key in pseudoObj.properties) { + val = pseudoObj.properties[key]; + nativeObj[key] = this.pseudoToNative(val, cycles); + } + } + cycles.pseudo.pop(); + cycles.native.pop(); + return nativeObj; + }; + ; + /** + * Look up the prototype for this value. + * @param {Interpreter.Value} value Data object. + * @return {Interpreter.MyObject} Prototype object, null if none. + */ + Interpreter.prototype.getPrototype = function (value) { + switch (typeof value) { + case 'number': + return this.NUMBER.properties['prototype']; + case 'boolean': + return this.BOOLEAN.properties['prototype']; + case 'string': + return this.STRING.properties['prototype']; + } + if (value) { + return value.proto; + } + return null; + }; + ; + /** + * Fetch a property value from a data object. + * @param {Interpreter.Value} obj Data object. + * @param {Interpreter.Value} name Name of property. + * @return {Interpreter.Value} Property value (may be undefined). + */ + Interpreter.prototype.getProperty = function (obj, name) { + name = String(name); + if (obj === undefined || obj === null) { + this.throwException(this.TYPE_ERROR, "Cannot read property '" + name + "' of " + obj); + } + if (name === 'length') { + // Special cases for magic length property. + if (this.isa(obj, this.STRING)) { + return String(obj).length; + } + } + else if (name.charCodeAt(0) < 0x40) { + // Might have numbers in there? + // Special cases for string array indexing + if (this.isa(obj, this.STRING)) { + var n = Interpreter.legalArrayIndex(name); + if (!isNaN(n) && n < String(obj).length) { + return String(obj)[n]; + } + } + } + do { + if (obj.properties && name in obj.properties) { + var getter = obj.getter[name]; + if (getter) { + // Flag this function as being a getter and thus needing immediate + // execution (rather than being the value of the property). + getter.isGetter = true; + return getter; + } + return obj.properties[name]; + } + } while ((obj = this.getPrototype(obj))); + return undefined; + }; + ; + /** + * Does the named property exist on a data object. + * @param {Interpreter.Value} obj Data object. + * @param {Interpreter.Value} name Name of property. + * @return {boolean} True if property exists. + */ + Interpreter.prototype.hasProperty = function (obj, name) { + if (!obj.isObject) { + throw TypeError('Primitive data type has no properties'); + } + name = String(name); + if (name === 'length' && this.isa(obj, this.STRING)) { + return true; + } + if (this.isa(obj, this.STRING)) { + var n = Interpreter.legalArrayIndex(name); + if (!isNaN(n) && n < String(obj).length) { + return true; + } + } + do { + if (obj.properties && name in obj.properties) { + return true; + } + } while ((obj = this.getPrototype(obj))); + return false; + }; + ; + /** + * Set a property value on a data object. + * @param {!Interpreter.MyObject} obj Data object. + * @param {Interpreter.Value} name Name of property. + * @param {Interpreter.Value|ReferenceError} value New property value. + * Use ReferenceError if value is handled by descriptor instead. + * @param {Object=} opt_descriptor Optional descriptor object. + * @return {!Interpreter.MyObject|undefined} Returns a setter function if one + * needs to be called, otherwise undefined. + */ + Interpreter.prototype.setProperty = function (obj, name, value, opt_descriptor) { + name = String(name); + if (obj === undefined || obj === null) { + this.throwException(this.TYPE_ERROR, "Cannot set property '" + name + "' of " + obj); + } + if (opt_descriptor && ('get' in opt_descriptor || 'set' in opt_descriptor) && + ('value' in opt_descriptor || 'writable' in opt_descriptor)) { + this.throwException(this.TYPE_ERROR, 'Invalid property descriptor. ' + + 'Cannot both specify accessors and a value or writable attribute'); + } + var strict = !this.stateStack || this.getScope().strict; + if (!obj.isObject) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Can't create property '" + name + + "' on '" + obj + "'"); + } + return; + } + if (this.isa(obj, this.STRING)) { + var n = Interpreter.legalArrayIndex(name); + if (name === 'length' || (!isNaN(n) && n < String(obj).length)) { + // Can't set length or letters on String objects. + if (strict) { + this.throwException(this.TYPE_ERROR, "Cannot assign to read only " + + "property '" + name + "' of String '" + obj.data + "'"); + } + return; + } + } + if (obj["class"] === 'Array') { + // Arrays have a magic length variable that is bound to the elements. + var length = obj.properties.length; + var i; + if (name === 'length') { + // Delete elements if length is smaller. + value = Interpreter.legalArrayLength(value); + if (isNaN(value)) { + this.throwException(this.RANGE_ERROR, 'Invalid array length'); + } + if (value < length) { + for (i in obj.properties) { + i = Interpreter.legalArrayIndex(i); + if (!isNaN(i) && value <= i) { + delete obj.properties[i]; + } + } + } + } + else if (!isNaN(i = Interpreter.legalArrayIndex(name))) { + // Increase length if this index is larger. + obj.properties.length = Math.max(length, i + 1); + } + } + if (obj.preventExtensions && !(name in obj.properties)) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Can't add property '" + name + + "', object is not extensible"); + } + return; + } + if (opt_descriptor) { + // Define the property. + if ('get' in opt_descriptor) { + if (opt_descriptor.get) { + obj.getter[name] = opt_descriptor.get; + } + else { + delete obj.getter[name]; + } + } + if ('set' in opt_descriptor) { + if (opt_descriptor.set) { + obj.setter[name] = opt_descriptor.set; + } + else { + delete obj.setter[name]; + } + } + var descriptor = {}; + if ('configurable' in opt_descriptor) { + descriptor.configurable = opt_descriptor.configurable; + } + if ('enumerable' in opt_descriptor) { + descriptor.enumerable = opt_descriptor.enumerable; + } + if ('writable' in opt_descriptor) { + descriptor.writable = opt_descriptor.writable; + delete obj.getter[name]; + delete obj.setter[name]; + } + if ('value' in opt_descriptor) { + descriptor.value = opt_descriptor.value; + delete obj.getter[name]; + delete obj.setter[name]; + } + else if (value !== ReferenceError) { + descriptor.value = value; + delete obj.getter[name]; + delete obj.setter[name]; + } + try { + Object.defineProperty(obj.properties, name, descriptor); + } + catch (e) { + this.throwException(this.TYPE_ERROR, 'Cannot redefine property: ' + name); + } + } + else { + // Set the property. + if (value === ReferenceError) { + throw ReferenceError('Value not specified.'); + } + // Determine the parent (possibly self) where the property is defined. + var defObj = obj; + while (!(name in defObj.properties)) { + defObj = this.getPrototype(defObj); + if (!defObj) { + // This is a new property. + defObj = obj; + break; + } + } + if (defObj.setter && defObj.setter[name]) { + return defObj.setter[name]; + } + if (defObj.getter && defObj.getter[name]) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Cannot set property '" + name + + "' of object '" + obj + "' which only has a getter"); + } + } + else { + // No setter, simple assignment. + try { + obj.properties[name] = value; + } + catch (e) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Cannot assign to read only " + + "property '" + name + "' of object '" + obj + "'"); + } + } + } + } + }; + ; + /** + * Convenience method for adding a native function as a non-enumerable property + * onto an object's prototype. + * @param {!Interpreter.MyObject} obj Data object. + * @param {Interpreter.Value} name Name of property. + * @param {!Function} wrapper Function object. + */ + Interpreter.prototype.setNativeFunctionPrototype = function (obj, name, wrapper) { + this.setProperty(obj.properties['prototype'], name, this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + }; + ; + /** + * Returns the current scope from the stateStack. + * @return {!Interpreter.MyObject} Current scope dictionary. + */ + Interpreter.prototype.getScope = function () { + var scope = this.stateStack[this.stateStack.length - 1].scope; + if (!scope) { + throw Error('No scope found.'); + } + return scope; + }; + ; + /** + * Create a new scope dictionary. + * @param {!Object} node AST node defining the scope container + * (e.g. a function). + * @param {Interpreter.MyObject} parentScope Scope to link to. + * @return {!Interpreter.MyObject} New scope. + */ + Interpreter.prototype.createScope = function (node, parentScope) { + var scope = this.createObjectProto(null); + scope.parentScope = parentScope; + if (!parentScope) { + this.initGlobalScope(scope); + } + this.populateScope_(node, scope); + // Determine if this scope starts with 'use strict'. + scope.strict = false; + if (parentScope && parentScope.strict) { + scope.strict = true; + } + else { + var firstNode = node['body'] && node['body'][0]; + if (firstNode && firstNode.expression && + firstNode.expression['type'] === 'Literal' && + firstNode.expression.value === 'use strict') { + scope.strict = true; + } + } + return scope; + }; + ; + /** + * Create a new special scope dictionary. Similar to createScope(), but + * doesn't assume that the scope is for a function body. + * This is used for 'catch' clauses and 'with' statements. + * @param {!Interpreter.MyObject} parentScope Scope to link to. + * @param {Interpreter.MyObject=} opt_scope Optional object to transform into + * scope. + * @return {!Interpreter.MyObject} New scope. + */ + Interpreter.prototype.createSpecialScope = function (parentScope, opt_scope) { + if (!parentScope) { + throw Error('parentScope required'); + } + var scope = opt_scope || this.createObjectProto(null); + scope.parentScope = parentScope; + scope.strict = parentScope.strict; + return scope; + }; + ; + /** + * Retrieves a value from the scope chain. + * @param {string} name Name of variable. + * @return {Interpreter.Value} Any value. + * May be flagged as being a getter and thus needing immediate execution + * (rather than being the value of the property). + */ + Interpreter.prototype.getValueFromScope = function (name) { + var scope = this.getScope(); + while (scope && scope !== this.global) { + if (name in scope.properties) { + return scope.properties[name]; + } + scope = scope.parentScope; + } + // The root scope is also an object which has inherited properties and + // could also have getters. + if (scope === this.global && this.hasProperty(scope, name)) { + return this.getProperty(scope, name); + } + // Typeof operator is unique: it can safely look at non-defined variables. + var prevNode = this.stateStack[this.stateStack.length - 1].node; + if (prevNode['type'] === 'UnaryExpression' && + prevNode['operator'] === 'typeof') { + return undefined; + } + this.throwException(this.REFERENCE_ERROR, name + ' is not defined'); + }; + ; + /** + * Sets a value to the current scope. + * @param {string} name Name of variable. + * @param {Interpreter.Value} value Value. + * @return {!Interpreter.MyObject|undefined} Returns a setter function if one + * needs to be called, otherwise undefined. + */ + Interpreter.prototype.setValueToScope = function (name, value) { + var scope = this.getScope(); + var strict = scope.strict; + while (scope && scope !== this.global) { + if (name in scope.properties) { + scope.properties[name] = value; + return undefined; + } + scope = scope.parentScope; + } + // The root scope is also an object which has readonly properties and + // could also have setters. + if (scope === this.global && (!strict || this.hasProperty(scope, name))) { + return this.setProperty(scope, name, value); + } + this.throwException(this.REFERENCE_ERROR, name + ' is not defined'); + }; + ; + /** + * Create a new scope for the given node. + * @param {!Object} node AST node (program or function). + * @param {!Interpreter.MyObject} scope Scope dictionary to populate. + * @private + */ + Interpreter.prototype.populateScope_ = function (node, scope) { + if (node['type'] === 'VariableDeclaration') { + for (var i = 0; i < node['declarations'].length; i++) { + this.setProperty(scope, node['declarations'][i]['id']['name'], undefined, Interpreter.VARIABLE_DESCRIPTOR); + } + } + else if (node['type'] === 'FunctionDeclaration') { + this.setProperty(scope, node['id']['name'], this.createFunction(node, scope), Interpreter.VARIABLE_DESCRIPTOR); + return; // Do not recurse into function. + } + else if (node['type'] === 'FunctionExpression') { + return; // Do not recurse into function. + } + else if (node['type'] === 'ExpressionStatement') { + return; // Expressions can't contain variable/function declarations. + } + var nodeClass = node['constructor']; + for (var name in node) { + var prop = node[name]; + if (prop && typeof prop === 'object') { + if (Array.isArray(prop)) { + for (var i = 0; i < prop.length; i++) { + if (prop[i] && prop[i].constructor === nodeClass) { + this.populateScope_(prop[i], scope); + } + } + } + else { + if (prop.constructor === nodeClass) { + this.populateScope_(prop, scope); + } + } + } + } + }; + ; + /** + * Remove start and end values from AST, or set start and end values to a + * constant value. Used to remove highlighting from polyfills and to set + * highlighting in an eval to cover the entire eval expression. + * @param {!Object} node AST node. + * @param {number=} start Starting character of all nodes, or undefined. + * @param {number=} end Ending character of all nodes, or undefined. + * @private + */ + Interpreter.prototype.stripLocations_ = function (node, start, end) { + if (start) { + node['start'] = start; + } + else { + delete node['start']; + } + if (end) { + node['end'] = end; + } + else { + delete node['end']; + } + for (var name in node) { + if (node.hasOwnProperty(name)) { + var prop = node[name]; + if (prop && typeof prop === 'object') { + this.stripLocations_(prop, start, end); + } + } + } + }; + ; + /** + * Is the current state directly being called with as a construction with 'new'. + * @return {boolean} True if 'new foo()', false if 'foo()'. + */ + Interpreter.prototype.calledWithNew = function () { + return this.stateStack[this.stateStack.length - 1].isConstructor; + }; + ; + /** + * Gets a value from the scope chain or from an object property. + * @param {!Array} ref Name of variable or object/propname tuple. + * @return {Interpreter.Value} Any value. + * May be flagged as being a getter and thus needing immediate execution + * (rather than being the value of the property). + */ + Interpreter.prototype.getValue = function (ref) { + if (ref[0] === Interpreter.SCOPE_REFERENCE) { + // A null/varname variable lookup. + return this.getValueFromScope(ref[1]); + } + else { + // An obj/prop components tuple (foo.bar). + return this.getProperty(ref[0], ref[1]); + } + }; + ; + /** + * Sets a value to the scope chain or to an object property. + * @param {!Array} ref Name of variable or object/propname tuple. + * @param {Interpreter.Value} value Value. + * @return {!Interpreter.MyObject|undefined} Returns a setter function if one + * needs to be called, otherwise undefined. + */ + Interpreter.prototype.setValue = function (ref, value) { + if (ref[0] === Interpreter.SCOPE_REFERENCE) { + // A null/varname variable lookup. + return this.setValueToScope(ref[1], value); + } + else { + // An obj/prop components tuple (foo.bar). + return this.setProperty(ref[0], ref[1], value); + } + }; + ; + /** + * Throw an exception in the interpreter that can be handled by an + * interpreter try/catch statement. If unhandled, a real exception will + * be thrown. Can be called with either an error class and a message, or + * with an actual object to be thrown. + * @param {!Interpreter.MyObject} errorClass Type of error (if message is + * provided) or the value to throw (if no message). + * @param {string=} opt_message Message being thrown. + */ + Interpreter.prototype.throwException = function (errorClass, opt_message) { + if (opt_message === undefined) { + var error = errorClass; // This is a value to throw, not an error class. + } + else { + var error = this.createObject(errorClass); + this.setProperty(error, 'message', opt_message, Interpreter.NONENUMERABLE_DESCRIPTOR); + } + this.executeException(error); + // Abort anything related to the current step. + throw Interpreter.STEP_ERROR; + }; + ; + /** + * Throw an exception in the interpreter that can be handled by a + * interpreter try/catch statement. If unhandled, a real exception will + * be thrown. + * @param {!Interpreter.MyObject} error Error object to execute. + */ + Interpreter.prototype.executeException = function (error) { + // Search for a try statement. + do { + this.stateStack.pop(); + var state = this.stateStack[this.stateStack.length - 1]; + if (state.node['type'] === 'TryStatement') { + state.throwValue = error; + return; + } + } while (state && state.node['type'] !== 'Program'); + // Throw a real error. + var realError; + if (this.isa(error, this.ERROR)) { + var errorTable = { + 'EvalError': EvalError, + 'RangeError': RangeError, + 'ReferenceError': ReferenceError, + 'SyntaxError': SyntaxError, + 'TypeError': TypeError, + 'URIError': URIError + }; + var name = this.getProperty(error, 'name').toString(); + var message = this.getProperty(error, 'message').valueOf(); + var type = errorTable[name] || Error; + realError = type(message); + } + else { + realError = error.toString(); + } + throw realError; + }; + ; + /** + * Create a call to a getter function. + * @param {!Interpreter.MyObject} func Function to execute. + * @param {!Interpreter.MyObject|!Array} left + * Name of variable or object/propname tuple. + * @private + */ + Interpreter.prototype.createGetter_ = function (func, left) { + // Normally 'this' will be specified as the object component (o.x). + // Sometimes 'this' is explicitly provided (o). + var funcThis = Array.isArray(left) ? left[0] : left; + var node = new this.nodeConstructor(); + node['type'] = 'CallExpression'; + var state = new Interpreter.MyState(node, this.stateStack[this.stateStack.length - 1].scope); + state.doneCallee_ = true; + state.funcThis_ = funcThis; + state.func_ = func; + state.doneArgs_ = true; + state.arguments_ = []; + return state; + }; + ; + /** + * Create a call to a setter function. + * @param {!Interpreter.MyObject} func Function to execute. + * @param {!Interpreter.MyObject|!Array} left + * Name of variable or object/propname tuple. + * @param {Interpreter.Value} value Value to set. + * @private + */ + Interpreter.prototype.createSetter_ = function (func, left, value) { + // Normally 'this' will be specified as the object component (o.x). + // Sometimes 'this' is implicitly the global object (x). + var funcThis = Array.isArray(left) ? left[0] : this.global; + var node = new this.nodeConstructor(); + node['type'] = 'CallExpression'; + var state = new Interpreter.MyState(node, this.stateStack[this.stateStack.length - 1].scope); + state.doneCallee_ = true; + state.funcThis_ = funcThis; + state.func_ = func; + state.doneArgs_ = true; + state.arguments_ = [value]; + return state; + }; + ; + /////////////////////////////////////////////////////////////////////////////// + // Functions to handle each node type. + /////////////////////////////////////////////////////////////////////////////// + Interpreter.prototype.stepArrayExpression = function (stack, state, node) { + var elements = node['elements']; + var n = state.n_ || 0; + if (!state.array_) { + state.array_ = this.createObjectProto(this.ARRAY_PROTO); + state.array_.properties.length = elements.length; + } + else { + this.setProperty(state.array_, n, state.value); + n++; + } + while (n < elements.length) { + // Skip missing elements - they're not defined, not undefined. + if (elements[n]) { + state.n_ = n; + return new Interpreter.MyState(elements[n], state.scope); + } + n++; + } + stack.pop(); + stack[stack.length - 1].value = state.array_; + }; + ; + Interpreter.prototype.stepAssignmentExpression = function (stack, state, node) { + if (!state.doneLeft_) { + state.doneLeft_ = true; + var nextState = new Interpreter.MyState(node['left'], state.scope); + nextState.components = true; + return nextState; + } + if (!state.doneRight_) { + if (!state.leftReference_) { + state.leftReference_ = state.value; + } + if (state.doneGetter_) { + state.leftValue_ = state.value; + } + if (!state.doneGetter_ && node['operator'] !== '=') { + var leftValue = this.getValue(state.leftReference_); + state.leftValue_ = leftValue; + if (leftValue && typeof leftValue === 'object' && leftValue.isGetter) { + // Clear the getter flag and call the getter function. + leftValue.isGetter = false; + state.doneGetter_ = true; + var func = (leftValue); + return this.createGetter_(func, state.leftReference_); + } + } + state.doneRight_ = true; + return new Interpreter.MyState(node['right'], state.scope); + } + if (state.doneSetter_) { + // Return if setter function. + // Setter method on property has completed. + // Ignore its return value, and use the original set value instead. + stack.pop(); + stack[stack.length - 1].value = state.doneSetter_; + return; + } + var value = state.leftValue_; + var rightValue = state.value; + switch (node['operator']) { + case '=': + value = rightValue; + break; + case '+=': + value += rightValue; + break; + case '-=': + value -= rightValue; + break; + case '*=': + value *= rightValue; + break; + case '/=': + value /= rightValue; + break; + case '%=': + value %= rightValue; + break; + case '<<=': + value <<= rightValue; + break; + case '>>=': + value >>= rightValue; + break; + case '>>>=': + value >>>= rightValue; + break; + case '&=': + value &= rightValue; + break; + case '^=': + value ^= rightValue; + break; + case '|=': + value |= rightValue; + break; + default: + throw SyntaxError('Unknown assignment expression: ' + node['operator']); + } + var setter = this.setValue(state.leftReference_, value); + if (setter) { + state.doneSetter_ = value; + return this.createSetter_(setter, state.leftReference_, value); + } + // Return if no setter function. + stack.pop(); + stack[stack.length - 1].value = value; + }; + ; + Interpreter.prototype.stepBinaryExpression = function (stack, state, node) { + if (!state.doneLeft_) { + state.doneLeft_ = true; + return new Interpreter.MyState(node['left'], state.scope); + } + if (!state.doneRight_) { + state.doneRight_ = true; + state.leftValue_ = state.value; + return new Interpreter.MyState(node['right'], state.scope); + } + stack.pop(); + var leftValue = state.leftValue_; + var rightValue = state.value; + var value; + switch (node['operator']) { + case '==': + value = leftValue == rightValue; + break; + case '!=': + value = leftValue != rightValue; + break; + case '===': + value = leftValue === rightValue; + break; + case '!==': + value = leftValue !== rightValue; + break; + case '>': + value = leftValue > rightValue; + break; + case '>=': + value = leftValue >= rightValue; + break; + case '<': + value = leftValue < rightValue; + break; + case '<=': + value = leftValue <= rightValue; + break; + case '+': + value = leftValue + rightValue; + break; + case '-': + value = leftValue - rightValue; + break; + case '*': + value = leftValue * rightValue; + break; + case '/': + value = leftValue / rightValue; + break; + case '%': + value = leftValue % rightValue; + break; + case '&': + value = leftValue & rightValue; + break; + case '|': + value = leftValue | rightValue; + break; + case '^': + value = leftValue ^ rightValue; + break; + case '<<': + value = leftValue << rightValue; + break; + case '>>': + value = leftValue >> rightValue; + break; + case '>>>': + value = leftValue >>> rightValue; + break; + case 'in': + if (!rightValue || !rightValue.isObject) { + this.throwException(this.TYPE_ERROR, "'in' expects an object, not '" + rightValue + "'"); + } + value = this.hasProperty(rightValue, leftValue); + break; + case 'instanceof': + if (!this.isa(rightValue, this.FUNCTION)) { + this.throwException(this.TYPE_ERROR, 'Right-hand side of instanceof is not an object'); + } + value = leftValue.isObject ? this.isa(leftValue, rightValue) : false; + break; + default: + throw SyntaxError('Unknown binary operator: ' + node['operator']); + } + stack[stack.length - 1].value = value; + }; + ; + Interpreter.prototype.stepBlockStatement = function (stack, state, node) { + var n = state.n_ || 0; + var expression = node['body'][n]; + if (expression) { + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); + } + stack.pop(); + }; + ; + Interpreter.prototype.stepBreakStatement = function (stack, state, node) { + stack.pop(); + var label = null; + if (node['label']) { + label = node['label']['name']; + } + while (state && + state.node['type'] !== 'CallExpression' && + state.node['type'] !== 'NewExpression') { + if (label) { + if (state.labels && state.labels.indexOf(label) !== -1) { + return; + } + } + else if (state.isLoop || state.isSwitch) { + return; + } + state = stack.pop(); + } + // Syntax error, do not allow this error to be trapped. + throw SyntaxError('Illegal break statement'); + }; + ; + Interpreter.prototype.stepCallExpression = function (stack, state, node) { + if (!state.doneCallee_) { + state.doneCallee_ = 1; + // Components needed to determine value of 'this'. + var nextState = new Interpreter.MyState(node['callee'], state.scope); + nextState.components = true; + return nextState; + } + if (state.doneCallee_ === 1) { + // Determine value of the function. + state.doneCallee_ = 2; + var func = state.value; + if (Array.isArray(func)) { + state.func_ = this.getValue(func); + if (func[0] !== Interpreter.SCOPE_REFERENCE) { + // Method function, 'this' is object (ignored if invoked as 'new'). + state.funcThis_ = func[0]; + } + func = state.func_; + if (func && typeof func === 'object' && func.isGetter) { + // Clear the getter flag and call the getter function. + func.isGetter = false; + state.doneCallee_ = 1; + return this.createGetter_(/** @type {!Interpreter.Object} */ (func), state.value); + } + } + else { + // Already evaluated function: (function(){...})(); + state.func_ = func; + } + state.arguments_ = []; + state.n_ = 0; + } + var func = state.func_; + if (!state.doneArgs_) { + if (state.n_ !== 0) { + state.arguments_.push(state.value); + } + if (node['arguments'][state.n_]) { + return new Interpreter.MyState(node['arguments'][state.n_++], state.scope); + } + // Determine value of 'this' in function. + if (node['type'] === 'NewExpression') { + if (func.illegalConstructor) { + // Illegal: new escape(); + this.throwException(this.TYPE_ERROR, func + ' is not a constructor'); + } + // Constructor, 'this' is new object. + state.funcThis_ = this.createObject(func); + state.isConstructor = true; + } + else if (state.funcThis_ === undefined) { + // Global function, 'this' is global object (or 'undefined' if strict). + state.funcThis_ = state.scope.strict ? undefined : this.global; + } + state.doneArgs_ = true; + } + if (!state.doneExec_) { + state.doneExec_ = true; + if (!func || !func.isObject) { + this.throwException(this.TYPE_ERROR, func + ' is not a function'); + } + var funcNode = func.node; + if (funcNode) { + var scope = this.createScope(funcNode['body'], func.parentScope); + // Add all arguments. + for (var i = 0; i < funcNode['params'].length; i++) { + var paramName = funcNode['params'][i]['name']; + var paramValue = state.arguments_.length > i ? state.arguments_[i] : + undefined; + this.setProperty(scope, paramName, paramValue); + } + // Build arguments variable. + var argsList = this.createObjectProto(this.ARRAY_PROTO); + for (var i = 0; i < state.arguments_.length; i++) { + this.setProperty(argsList, i, state.arguments_[i]); + } + this.setProperty(scope, 'arguments', argsList); + // Add the function's name (var x = function foo(){};) + var name = funcNode['id'] && funcNode['id']['name']; + if (name) { + this.setProperty(scope, name, func); + } + this.setProperty(scope, 'this', state.funcThis_, Interpreter.READONLY_DESCRIPTOR); + state.value = undefined; // Default value if no explicit return. + return new Interpreter.MyState(funcNode['body'], scope); + } + else if (func.eval) { + var code = state.arguments_[0]; + if (typeof code !== 'string') { + // JS does not parse String objects: + // eval(new String('1 + 1')) -> '1 + 1' + state.value = code; + } + else { + try { + var ast = acorn.parse(code.toString(), Interpreter.PARSE_OPTIONS); + } + catch (e) { + // Acorn threw a SyntaxError. Rethrow as a trappable error. + this.throwException(this.SYNTAX_ERROR, 'Invalid code: ' + e.message); + } + var evalNode = new this.nodeConstructor(); + evalNode['type'] = 'EvalProgram_'; + evalNode['body'] = ast['body']; + this.stripLocations_(evalNode, node['start'], node['end']); + // Update current scope with definitions in eval(). + var scope = state.scope; + if (scope.strict) { + // Strict mode get its own scope in eval. + scope = this.createScope(ast, scope); + } + else { + // Non-strict mode pollutes the current scope. + this.populateScope_(ast, scope); + } + this.value = undefined; // Default value if no code. + return new Interpreter.MyState(evalNode, scope); + } + } + else if (func.nativeFunc) { + state.value = func.nativeFunc.apply(state.funcThis_, state.arguments_); + } + else if (func.asyncFunc) { + var thisInterpreter = this; + var callback = function (value) { + state.value = value; + thisInterpreter.paused_ = false; + }; + var argsWithCallback = state.arguments_.concat(callback); + this.paused_ = true; + func.asyncFunc.apply(state.funcThis_, argsWithCallback); + return; + } + else { + /* A child of a function is a function but is not callable. For example: + var F = function() {}; + F.prototype = escape; + var f = new F(); + f(); + */ + this.throwException(this.TYPE_ERROR, func["class"] + ' is not a function'); + } + } + else { + // Execution complete. Put the return value on the stack. + stack.pop(); + if (state.isConstructor && typeof state.value !== 'object') { + stack[stack.length - 1].value = state.funcThis_; + } + else { + stack[stack.length - 1].value = state.value; + } + } + }; + ; + Interpreter.prototype.stepCatchClause = function (stack, state, node) { + if (!state.done_) { + state.done_ = true; + // Create an empty scope. + var scope = this.createSpecialScope(state.scope); + // Add the argument. + this.setProperty(scope, node['param']['name'], state.throwValue); + // Execute catch clause. + return new Interpreter.MyState(node['body'], scope); + } + else { + stack.pop(); + } + }; + ; + Interpreter.prototype.stepConditionalExpression = function (stack, state, node) { + var mode = state.mode_ || 0; + if (mode === 0) { + state.mode_ = 1; + return new Interpreter.MyState(node['test'], state.scope); + } + if (mode === 1) { + state.mode_ = 2; + var value = Boolean(state.value); + if (value && node['consequent']) { + // Execute 'if' block. + return new Interpreter.MyState(node['consequent'], state.scope); + } + else if (!value && node['alternate']) { + // Execute 'else' block. + return new Interpreter.MyState(node['alternate'], state.scope); + } + // eval('1;if(false){2}') -> undefined + this.value = undefined; + } + stack.pop(); + if (node['type'] === 'ConditionalExpression') { + stack[stack.length - 1].value = state.value; + } + }; + ; + Interpreter.prototype.stepContinueStatement = function (stack, state, node) { + stack.pop(); + var label = null; + if (node['label']) { + label = node['label']['name']; + } + state = stack[stack.length - 1]; + while (state && + state.node['type'] !== 'CallExpression' && + state.node['type'] !== 'NewExpression') { + if (state.isLoop) { + if (!label || (state.labels && state.labels.indexOf(label) !== -1)) { + return; + } + } + stack.pop(); + state = stack[stack.length - 1]; + } + // Syntax error, do not allow this error to be trapped. + throw SyntaxError('Illegal continue statement'); + }; + ; + Interpreter.prototype.stepDebuggerStatement = function (stack, state, node) { + // Do nothing. May be overridden by developers. + stack.pop(); + }; + ; + Interpreter.prototype.stepDoWhileStatement = function (stack, state, node) { + if (node['type'] === 'DoWhileStatement' && state.test_ === undefined) { + // First iteration of do/while executes without checking test. + state.value = true; + state.test_ = true; + } + if (!state.test_) { + state.test_ = true; + return new Interpreter.MyState(node['test'], state.scope); + } + if (!state.value) { + stack.pop(); + } + else if (node['body']) { + state.test_ = false; + state.isLoop = true; + return new Interpreter.MyState(node['body'], state.scope); + } + }; + ; + Interpreter.prototype.stepEmptyStatement = function (stack, state, node) { + stack.pop(); + }; + ; + Interpreter.prototype.stepEvalProgram_ = function (stack, state, node) { + var n = state.n_ || 0; + var expression = node['body'][n]; + if (expression) { + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); + } + stack.pop(); + stack[stack.length - 1].value = this.value; + }; + ; + Interpreter.prototype.stepExpressionStatement = function (stack, state, node) { + if (!state.done_) { + state.done_ = true; + return new Interpreter.MyState(node['expression'], state.scope); + } + stack.pop(); + // Save this value to interpreter.value for use as a return value if + // this code is inside an eval function. + this.value = state.value; + }; + ; + Interpreter.prototype.stepForInStatement = function (stack, state, node) { + // First, initialize a variable if exists. Only do so once, ever. + if (!state.doneInit_) { + state.doneInit_ = true; + if (node['left']['declarations'] && + node['left']['declarations'][0]['init']) { + if (state.scope.strict) { + this.throwException(this.SYNTAX_ERROR, 'for-in loop variable declaration may not have an initializer.'); + } + // Variable initialization: for (var x = 4 in y) + return new Interpreter.MyState(node['left'], state.scope); + } + } + // Second, look up the object. Only do so once, ever. + if (!state.doneObject_) { + state.doneObject_ = true; + if (!state.variable_) { + state.variable_ = state.value; + } + return new Interpreter.MyState(node['right'], state.scope); + } + if (!state.isLoop) { + // First iteration. + state.isLoop = true; + state.object_ = state.value; + state.visited_ = Object.create(null); + } + // Third, find the property name for this iteration. + if (state.name_ === undefined) { + done: do { + if (state.object_ && state.object_.isObject) { + if (!state.props_) { + state.props_ = Object.getOwnPropertyNames(state.object_.properties); + } + do { + var prop = state.props_.shift(); + } while (prop && (state.visited_[prop] || + !Object.prototype.hasOwnProperty.call(state.object_.properties, prop))); + if (prop) { + state.visited_[prop] = true; + if (Object.prototype.propertyIsEnumerable.call(state.object_.properties, prop)) { + state.name_ = prop; + break done; + } + } + } + else if (state.object_ !== null) { + if (!state.props_) { + state.props_ = Object.getOwnPropertyNames(state.object_); + } + do { + var prop = state.props_.shift(); + } while (prop && state.visited_[prop]); + if (prop) { + state.visited_[prop] = true; + state.name_ = prop; + break done; + } + } + state.object_ = this.getPrototype(state.object_); + state.props_ = null; + } while (state.object_ !== null); + if (state.object_ === null) { + // Done, exit loop. + stack.pop(); + return; + } + } + // Fourth, find the variable + if (!state.doneVariable_) { + state.doneVariable_ = true; + var left = node['left']; + if (left['type'] === 'VariableDeclaration') { + // Inline variable declaration: for (var x in y) + state.variable_ = + [Interpreter.SCOPE_REFERENCE, left['declarations'][0]['id']['name']]; + } + else { + // Arbitrary left side: for (foo().bar in y) + state.variable_ = null; + var nextState = new Interpreter.MyState(left, state.scope); + nextState.components = true; + return nextState; + } + } + if (!state.variable_) { + state.variable_ = state.value; + } + // Fifth, set the variable. + if (!state.doneSetter_) { + state.doneSetter_ = true; + var value = state.name_; + var setter = this.setValue(state.variable_, value); + if (setter) { + return this.createSetter_(setter, state.variable_, value); + } + } + // Next step will be step three. + state.name_ = undefined; + // Reevaluate the variable since it could be a setter on the global object. + state.doneVariable_ = false; + state.doneSetter_ = false; + // Sixth and finally, execute the body if there was one. this. + if (node['body']) { + return new Interpreter.MyState(node['body'], state.scope); + } + }; + ; + Interpreter.prototype.stepForStatement = function (stack, state, node) { + var mode = state.mode_ || 0; + if (mode === 0) { + state.mode_ = 1; + if (node['init']) { + return new Interpreter.MyState(node['init'], state.scope); + } + } + else if (mode === 1) { + state.mode_ = 2; + if (node['test']) { + return new Interpreter.MyState(node['test'], state.scope); + } + } + else if (mode === 2) { + state.mode_ = 3; + if (node['test'] && !state.value) { + // Done, exit loop. + stack.pop(); + } + else { + state.isLoop = true; + return new Interpreter.MyState(node['body'], state.scope); + } + } + else if (mode === 3) { + state.mode_ = 1; + if (node['update']) { + return new Interpreter.MyState(node['update'], state.scope); + } + } + }; + ; + Interpreter.prototype.stepFunctionDeclaration = function (stack, state, node) { + // This was found and handled when the scope was populated. + stack.pop(); + }; + ; + Interpreter.prototype.stepFunctionExpression = function (stack, state, node) { + stack.pop(); + stack[stack.length - 1].value = this.createFunction(node, state.scope); + }; + ; + Interpreter.prototype.stepIdentifier = function (stack, state, node) { + stack.pop(); + if (state.components) { + stack[stack.length - 1].value = [Interpreter.SCOPE_REFERENCE, node['name']]; + return; + } + var value = this.getValueFromScope(node['name']); + // An identifier could be a getter if it's a property on the global object. + if (value && typeof value === 'object' && value.isGetter) { + // Clear the getter flag and call the getter function. + value.isGetter = false; + var scope = state.scope; + while (!this.hasProperty(scope, node['name'])) { + scope = scope.parentScope; + } + var func = (value); + return this.createGetter_(func, this.global); + } + stack[stack.length - 1].value = value; + }; + ; + Interpreter.prototype.stepIfStatement = function (stack, state, node) { + return this.stepConditionalExpression(stack, state, node); + }; + Interpreter.prototype.stepLabeledStatement = function (stack, state, node) { + // No need to hit this node again on the way back up the stack. + stack.pop(); + // Note that a statement might have multiple labels. + var labels = state.labels || []; + labels.push(node['label']['name']); + var nextState = new Interpreter.MyState(node['body'], state.scope); + nextState.labels = labels; + return nextState; + }; + ; + Interpreter.prototype.stepLiteral = function (stack, state, node) { + stack.pop(); + var value = node['value']; + if (value instanceof RegExp) { + var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO); + this.populateRegExp(pseudoRegexp, value); + value = pseudoRegexp; + } + stack[stack.length - 1].value = value; + }; + ; + Interpreter.prototype.stepLogicalExpression = function (stack, state, node) { + if (node['operator'] !== '&&' && node['operator'] !== '||') { + throw SyntaxError('Unknown logical operator: ' + node['operator']); + } + if (!state.doneLeft_) { + state.doneLeft_ = true; + return new Interpreter.MyState(node['left'], state.scope); + } + if (!state.doneRight_) { + if ((node['operator'] === '&&' && !state.value) || + (node['operator'] === '||' && state.value)) { + // Shortcut evaluation. + stack.pop(); + stack[stack.length - 1].value = state.value; + } + else { + state.doneRight_ = true; + return new Interpreter.MyState(node['right'], state.scope); + } + } + else { + stack.pop(); + stack[stack.length - 1].value = state.value; + } + }; + ; + Interpreter.prototype.stepMemberExpression = function (stack, state, node) { + if (!state.doneObject_) { + state.doneObject_ = true; + return new Interpreter.MyState(node['object'], state.scope); + } + var propName; + if (!node['computed']) { + state.object_ = state.value; + // obj.foo -- Just access 'foo' directly. + propName = node['property']['name']; + } + else if (!state.doneProperty_) { + state.object_ = state.value; + // obj[foo] -- Compute value of 'foo'. + state.doneProperty_ = true; + return new Interpreter.MyState(node['property'], state.scope); + } + else { + propName = state.value; + } + stack.pop(); + if (state.components) { + stack[stack.length - 1].value = [state.object_, propName]; + } + else { + var value = this.getProperty(state.object_, propName); + if (value && typeof value === 'object' && value.isGetter) { + // Clear the getter flag and call the getter function. + value.isGetter = false; + var func = (value); + return this.createGetter_(func, state.object_); + } + stack[stack.length - 1].value = value; + } + }; + ; + Interpreter.prototype.stepNewExpression = function (stack, state, node) { + return this.stepCallExpression(stack, state, node); + }; + Interpreter.prototype.stepObjectExpression = function (stack, state, node) { + var n = state.n_ || 0; + var property = node['properties'][n]; + if (!state.object_) { + // First execution. + state.object_ = this.createObjectProto(this.OBJECT_PROTO); + state.properties_ = Object.create(null); + } + else { + // Determine property name. + var key = property['key']; + if (key['type'] === 'Identifier') { + var propName = key['name']; + } + else if (key['type'] === 'Literal') { + var propName = key['value']; + } + else { + throw SyntaxError('Unknown object structure: ' + key['type']); + } + // Set the property computed in the previous execution. + if (!state.properties_[propName]) { + // Create temp object to collect value, getter, and/or setter. + state.properties_[propName] = {}; + } + state.properties_[propName][property['kind']] = state.value; + state.n_ = ++n; + property = node['properties'][n]; + } + if (property) { + return new Interpreter.MyState(property['value'], state.scope); + } + for (var key in state.properties_) { + var kinds = state.properties_[key]; + if ('get' in kinds || 'set' in kinds) { + // Set a property with a getter or setter. + var descriptor = { + configurable: true, + enumerable: true, + get: kinds['get'], + set: kinds['set'] + }; + this.setProperty(state.object_, key, null, descriptor); + } + else { + // Set a normal property with a value. + this.setProperty(state.object_, key, kinds['init']); + } + } + stack.pop(); + stack[stack.length - 1].value = state.object_; + }; + ; + Interpreter.prototype.stepProgram = function (stack, state, node) { + var n = state.n_ || 0; + var expression = node['body'][n]; + if (expression) { + state.done = false; + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); + } + state.done = true; + // Don't pop the stateStack. + // Leave the root scope on the tree in case the program is appended to. + }; + ; + Interpreter.prototype.stepReturnStatement = function (stack, state, node) { + if (node['argument'] && !state.done_) { + state.done_ = true; + return new Interpreter.MyState(node['argument'], state.scope); + } + var value = state.value; + var i = stack.length - 1; + state = stack[i]; + while (state.node['type'] !== 'CallExpression' && + state.node['type'] !== 'NewExpression') { + if (state.node['type'] !== 'TryStatement') { + stack.splice(i, 1); + } + i--; + if (i < 0) { + // Syntax error, do not allow this error to be trapped. + throw SyntaxError('Illegal return statement'); + } + state = stack[i]; + } + state.value = value; + }; + ; + Interpreter.prototype.stepSequenceExpression = function (stack, state, node) { + var n = state.n_ || 0; + var expression = node['expressions'][n]; + if (expression) { + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); + } + stack.pop(); + stack[stack.length - 1].value = state.value; + }; + ; + Interpreter.prototype.stepSwitchStatement = function (stack, state, node) { + if (!state.test_) { + state.test_ = 1; + return new Interpreter.MyState(node['discriminant'], state.scope); + } + if (state.test_ === 1) { + state.test_ = 2; + // Preserve switch value between case tests. + state.switchValue_ = state.value; + } + while (true) { + var index = state.index_ || 0; + var switchCase = node['cases'][index]; + if (!state.matched_ && switchCase && !switchCase['test']) { + // Test on the default case is null. + // Bypass (but store) the default case, and get back to it later. + state.defaultCase_ = index; + state.index_ = index + 1; + continue; + } + if (!switchCase && !state.matched_ && state.defaultCase_) { + // Ran through all cases, no match. Jump to the default. + state.matched_ = true; + state.index_ = state.defaultCase_; + continue; + } + if (switchCase) { + if (!state.matched_ && !state.tested_ && switchCase['test']) { + state.tested_ = true; + return new Interpreter.MyState(switchCase['test'], state.scope); + } + if (state.matched_ || state.value === state.switchValue_) { + state.matched_ = true; + var n = state.n_ || 0; + if (switchCase['consequent'][n]) { + state.isSwitch = true; + state.n_ = n + 1; + return new Interpreter.MyState(switchCase['consequent'][n], state.scope); + } + } + // Move on to next case. + state.tested_ = false; + state.n_ = 0; + state.index_ = index + 1; + } + else { + stack.pop(); + return; + } + } + }; + ; + Interpreter.prototype.stepThisExpression = function (stack, state, node) { + stack.pop(); + stack[stack.length - 1].value = this.getValueFromScope('this'); + }; + ; + Interpreter.prototype.stepThrowStatement = function (stack, state, node) { + if (!state.done_) { + state.done_ = true; + return new Interpreter.MyState(node['argument'], state.scope); + } + else { + this.throwException(state.value); + } + }; + ; + Interpreter.prototype.stepTryStatement = function (stack, state, node) { + if (!state.doneBlock_) { + state.doneBlock_ = true; + return new Interpreter.MyState(node['block'], state.scope); + } + if (state.throwValue && !state.doneHandler_ && node['handler']) { + state.doneHandler_ = true; + var nextState = new Interpreter.MyState(node['handler'], state.scope); + nextState.throwValue = state.throwValue; + state.throwValue = null; // This error has been handled, don't rethrow. + return nextState; + } + if (!state.doneFinalizer_ && node['finalizer']) { + state.doneFinalizer_ = true; + return new Interpreter.MyState(node['finalizer'], state.scope); + } + if (state.throwValue) { + // There was no catch handler, or the catch/finally threw an error. + // Throw the error up to a higher try. + this.executeException(state.throwValue); + } + else { + stack.pop(); + } + }; + ; + Interpreter.prototype.stepUnaryExpression = function (stack, state, node) { + if (!state.done_) { + state.done_ = true; + var nextState = new Interpreter.MyState(node['argument'], state.scope); + nextState.components = node['operator'] === 'delete'; + return nextState; + } + stack.pop(); + var value = state.value; + if (node['operator'] === '-') { + value = -value; + } + else if (node['operator'] === '+') { + value = +value; + } + else if (node['operator'] === '!') { + value = !value; + } + else if (node['operator'] === '~') { + value = ~value; + } + else if (node['operator'] === 'delete') { + var result = true; + // If value is not an array, then it is a primitive, or some other value. + // If so, skip the delete and return true. + if (Array.isArray(value)) { + var obj = value[0]; + if (obj === Interpreter.SCOPE_REFERENCE) { + // 'delete foo;' is the same as 'delete window.foo'. + obj = state.scope; + } + var name = String(value[1]); + try { + delete obj.properties[name]; + } + catch (e) { + if (state.scope.strict) { + this.throwException(this.TYPE_ERROR, "Cannot delete property '" + + name + "' of '" + obj + "'"); + } + else { + result = false; + } + } + } + value = result; + } + else if (node['operator'] === 'typeof') { + value = (value && value["class"] === 'Function') ? 'function' : typeof value; + } + else if (node['operator'] === 'void') { + value = undefined; + } + else { + throw SyntaxError('Unknown unary operator: ' + node['operator']); + } + stack[stack.length - 1].value = value; + }; + ; + Interpreter.prototype.stepUpdateExpression = function (stack, state, node) { + if (!state.doneLeft_) { + state.doneLeft_ = true; + var nextState = new Interpreter.MyState(node['argument'], state.scope); + nextState.components = true; + return nextState; + } + if (!state.leftSide_) { + state.leftSide_ = state.value; + } + if (state.doneGetter_) { + state.leftValue_ = state.value; + } + if (!state.doneGetter_) { + var leftValue = this.getValue(state.leftSide_); + state.leftValue_ = leftValue; + if (leftValue && typeof leftValue === 'object' && leftValue.isGetter) { + // Clear the getter flag and call the getter function. + leftValue.isGetter = false; + state.doneGetter_ = true; + var func = (leftValue); + return this.createGetter_(func, state.leftSide_); + } + } + if (state.doneSetter_) { + // Return if setter function. + // Setter method on property has completed. + // Ignore its return value, and use the original set value instead. + stack.pop(); + stack[stack.length - 1].value = state.doneSetter_; + return; + } + leftValue = Number(state.leftValue_); + var changeValue; + if (node['operator'] === '++') { + changeValue = leftValue + 1; + } + else if (node['operator'] === '--') { + changeValue = leftValue - 1; + } + else { + throw SyntaxError('Unknown update expression: ' + node['operator']); + } + var returnValue = node['prefix'] ? changeValue : leftValue; + var setter = this.setValue(state.leftSide_, changeValue); + if (setter) { + state.doneSetter_ = returnValue; + return this.createSetter_(setter, state.leftSide_, changeValue); + } + // Return if no setter function. + stack.pop(); + stack[stack.length - 1].value = returnValue; + }; + ; + Interpreter.prototype.stepVariableDeclaration = function (stack, state, node) { + var declarations = node['declarations']; + var n = state.n_ || 0; + var declarationNode = declarations[n]; + if (state.init_ && declarationNode) { + // This setValue call never needs to deal with calling a setter function. + // Note that this is setting the init value, not defining the variable. + // Variable definition is done when scope is populated. + this.setValueToScope(declarationNode['id']['name'], state.value); + state.init_ = false; + declarationNode = declarations[++n]; + } + while (declarationNode) { + // Skip any declarations that are not initialized. They have already + // been defined as undefined in populateScope_. + if (declarationNode['init']) { + state.n_ = n; + state.init_ = true; + return new Interpreter.MyState(declarationNode['init'], state.scope); + } + declarationNode = declarations[++n]; + } + stack.pop(); + }; + ; + Interpreter.prototype.stepWithStatement = function (stack, state, node) { + if (!state.doneObject_) { + state.doneObject_ = true; + return new Interpreter.MyState(node['object'], state.scope); + } + else if (!state.doneBody_) { + state.doneBody_ = true; + var scope = this.createSpecialScope(state.scope, state.value); + return new Interpreter.MyState(node['body'], scope); + } + else { + stack.pop(); + } + }; + ; + Interpreter.prototype.stepWhileStatement = function (stack, state, node) { + return this.stepDoWhileStatement(stack, state, node); + }; + /** + * @const {!Object} Configuration used for all Acorn parsing. + */ + Interpreter.PARSE_OPTIONS = { + ecmaVersion: 5 + }; + /** + * Property descriptor of readonly properties. + */ + Interpreter.READONLY_DESCRIPTOR = { + configurable: true, + enumerable: true, + writable: false + }; + /** + * Property descriptor of non-enumerable properties. + */ + Interpreter.NONENUMERABLE_DESCRIPTOR = { + configurable: true, + enumerable: false, + writable: true + }; + /** + * Property descriptor of readonly, non-enumerable properties. + */ + Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR = { + configurable: true, + enumerable: false, + writable: false + }; + /** + * Property descriptor of variables. + */ + Interpreter.VARIABLE_DESCRIPTOR = { + configurable: false, + enumerable: true, + writable: true + }; + /** + * Unique symbol for indicating that a step has encountered an error, has + * added it to the stack, and will be thrown within the user's program. + * When STEP_ERROR is thrown in the JS-Interpreter, the error can be ignored. + */ + Interpreter.STEP_ERROR = {}; + /** + * Unique symbol for indicating that a reference is a variable on the scope, + * not an object property. + */ + Interpreter.SCOPE_REFERENCE = {}; + /** + * For cycle detection in array to string and error conversion; + * see spec bug github.com/tc39/ecma262/issues/289 + * Since this is for atomic actions only, it can be a class property. + */ + Interpreter.toStringCycles_ = []; + return Interpreter; +}()); +// Preserve top-level API functions from being pruned/renamed by JS compilers. +// Add others as needed. +// The global object ('window' in a browser, 'global' in node.js) is 'this'. +this['Interpreter'] = Interpreter; +Interpreter.prototype['step'] = Interpreter.prototype.step; +Interpreter.prototype['run'] = Interpreter.prototype.run; +Interpreter.prototype['appendCode'] = Interpreter.prototype.appendCode; +Interpreter.prototype['createObject'] = Interpreter.prototype.createObject; +Interpreter.prototype['createObjectProto'] = + Interpreter.prototype.createObjectProto; +Interpreter.prototype['createAsyncFunction'] = + Interpreter.prototype.createAsyncFunction; +Interpreter.prototype['createNativeFunction'] = + Interpreter.prototype.createNativeFunction; +Interpreter.prototype['getProperty'] = Interpreter.prototype.getProperty; +Interpreter.prototype['setProperty'] = Interpreter.prototype.setProperty; +Interpreter.prototype['nativeToPseudo'] = Interpreter.prototype.nativeToPseudo; +Interpreter.prototype['pseudoToNative'] = Interpreter.prototype.pseudoToNative; +// Obsolete. Do not use. +// private createPrimitive(x) {return x;}; +(function (Interpreter) { + /** + * Class for an object. + * @param {Interpreter.MyObject} proto Prototype object or null. + * @constructor + */ + var MyObject = (function () { + function MyObject(proto) { + /** @type {Interpreter.MyObject} */ + this.proto = null; + /** @type {boolean} */ + this.isObject = true; + /** @type {string} */ + this["class"] = 'Object'; + /** @type {Date|RegExp|boolean|number|string|undefined|null} */ + this.data = null; + this.getter = Object.create(null); + this.setter = Object.create(null); + this.properties = Object.create(null); + this.proto = proto; + } + /** + * Convert this object into a string. + * @return {string} String value. + * @override + */ + MyObject.prototype.toString = function () { + if (this["class"] === 'Array') { + // Array + var cycles = Interpreter.toStringCycles_; + cycles.push(this); + try { + var strs = []; + for (var i = 0; i < this.properties.length; i++) { + var value = this.properties[i]; + strs[i] = (value && value.isObject && cycles.indexOf(value) !== -1) ? + '...' : value; + } + } + finally { + cycles.pop(); + } + return strs.join(','); + } + if (this["class"] === 'Error') { + var cycles = Interpreter.toStringCycles_; + if (cycles.indexOf(this) !== -1) { + return '[object Error]'; + } + var name, message; + // Bug: Does not support getters and setters for name or message. + var obj = this; + do { + if ('name' in obj.properties) { + name = obj.properties['name']; + break; + } + } while ((obj = obj.proto)); + var obj = this; + do { + if ('message' in obj.properties) { + message = obj.properties['message']; + break; + } + } while ((obj = obj.proto)); + cycles.push(this); + try { + name = name && name.toString(); + message = message && message.toString(); + } + finally { + cycles.pop(); + } + return message ? name + ': ' + message : String(name); + } + // RegExp, Date, and boxed primitives. + if (this.data !== null) { + return String(this.data); + } + return '[object ' + this["class"] + ']'; + }; + /** + * Return the object's value. + * @return {Interpreter.Value} Value. + * @override + */ + MyObject.prototype.valueOf = function () { + if (this.data === undefined || this.data === null || + this.data instanceof RegExp) { + return this; // An Object. + } + if (this.data instanceof Date) { + return this.data.valueOf(); // Milliseconds. + } + return (this.data); // Boxed primitive. + }; + return MyObject; + }()); + Interpreter.MyObject = MyObject; + /** + * Class for a state. + * @param {!MyObject} node AST node for the state. + * @param {!Interpreter.MyObject} scope Scope object for the state. + * @constructor + */ + var MyState = (function () { + function MyState(node, scope) { + this.node = node; + this.scope = scope; + } + return MyState; + }()); + Interpreter.MyState = MyState; +})(Interpreter || (Interpreter = {})); +//# sourceMappingURL=interpreter.js.map \ No newline at end of file diff --git a/interpreter.js.map b/interpreter.js.map new file mode 100644 index 00000000..af6e9bb3 --- /dev/null +++ b/interpreter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["interpreter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/interpreter.ts b/interpreter.ts index 4c6e4468..406aa4a5 100644 --- a/interpreter.ts +++ b/interpreter.ts @@ -1910,7 +1910,7 @@ public setProperty(obj, name, value, opt_descriptor?) { var i; if (name === 'length') { // Delete elements if length is smaller. - var value = Interpreter.legalArrayLength(value); + value = Interpreter.legalArrayLength(value); if (isNaN(value)) { this.throwException(this.RANGE_ERROR, 'Invalid array length'); } @@ -3326,7 +3326,7 @@ private stepUpdateExpression(stack, state, node) { stack[stack.length - 1].value = state.doneSetter_; return; } - var leftValue = Number(state.leftValue_); + leftValue = Number(state.leftValue_); var changeValue; if (node['operator'] === '++') { changeValue = leftValue + 1; From 4dc5ef29f4184c06cf408259631e0462a2c61089 Mon Sep 17 00:00:00 2001 From: Jun Kato Date: Sat, 12 Aug 2017 18:08:10 +0900 Subject: [PATCH 06/29] Explicitly declare Interpreter fields; add @types/estree --- interpreter.ts | 103 ++++++++++++++++++++++++++++++++-------------- package-lock.json | 10 ++++- package.json | 5 ++- 3 files changed, 85 insertions(+), 33 deletions(-) diff --git a/interpreter.ts b/interpreter.ts index 406aa4a5..6a83ae48 100644 --- a/interpreter.ts +++ b/interpreter.ts @@ -1,4 +1,5 @@ // Declare missing functions +import * as ESTree from 'estree'; declare function escape(s:string): string; declare function unescape(s:string): string; interface ArrayConstructor { @@ -6,7 +7,7 @@ interface ArrayConstructor { from(arrayLike: ArrayLike): Array; } declare module acorn { - function parse(code: string, options?: any): any; + function parse(code: string, options?: any): ESTree.Program; } /** @@ -42,9 +43,50 @@ declare module acorn { * @constructor */ class Interpreter { -[key: string]: any; - -constructor(code: string, opt_initFunc?: Function) { +private nodeConstructor: FunctionConstructor; +public ast: ESTree.Program; +public global: Interpreter.MyObject; +public stateStack: Interpreter.MyState[]; +public value: Interpreter.MyValue; +private initFunc_: Function; +private paused_: boolean; +private polyfills_: string[]; +private functionCounter_: number; +private stepFunctions_: { [key: string]: Function }; + +public OBJECT: Interpreter.MyObject; +public OBJECT_PROTO: Interpreter.MyObject; +public FUNCTION: Interpreter.MyObject; +public FUNCTION_PROTO: Interpreter.MyObject; +public ARRAY: Interpreter.MyObject; +public ARRAY_PROTO: Interpreter.MyObject; +public REGEXP: Interpreter.MyObject; +public REGEXP_PROTO: Interpreter.MyObject; + +public ERROR: Interpreter.MyObject; +public EVAL_ERROR: Interpreter.MyObject; +public RANGE_ERROR: Interpreter.MyObject; +public REFERENCE_ERROR: Interpreter.MyObject; +public SYNTAX_ERROR: Interpreter.MyObject; +public TYPE_ERROR: Interpreter.MyObject; +public URI_ERROR: Interpreter.MyObject; + +public STRING: Interpreter.MyObject; +public BOOLEAN: Interpreter.MyObject; +public NUMBER: Interpreter.MyObject; +public DATE: Interpreter.MyObject; + +// The following properties are obsolete. Do not use. +public UNDEFINED: Interpreter.MyObject; +public NULL: null; +public NAN: number; +public TRUE: boolean; +public FALSE: boolean; +public STRING_EMPTY: string; +public NUMBER_ZERO: number; +public NUMBER_ONE: number; + +constructor(code: string | ESTree.Program, opt_initFunc?: Function) { if (typeof code === 'string') { code = acorn.parse(code, Interpreter.PARSE_OPTIONS); } @@ -523,7 +565,7 @@ public initObject(scope) { /** * Checks if the provided value is null or undefined. * If so, then throw an error in the call stack. - * @param {Interpreter.Value} value Value to check. + * @param {Interpreter.MyValue} value Value to check. */ var throwIfNullUndefined = function(value) { if (value === undefined || value === null) { @@ -1501,7 +1543,7 @@ public initJSON(scope) { /** * Is an object of a certain class? - * @param {Interpreter.Value} child Object to check. + * @param {Interpreter.MyValue} child Object to check. * @param {Interpreter.MyObject} constructor Constructor of object. * @return {boolean} True if object is the class or inherits from it. * False otherwise. @@ -1528,7 +1570,7 @@ public isa(child, constructor) { /** * Is a value a legal integer for an array length? - * @param {Interpreter.Value} x Value to check. + * @param {Interpreter.MyValue} x Value to check. * @return {number} Zero, or a positive integer if the value can be * converted to such. NaN otherwise. */ @@ -1540,7 +1582,7 @@ static legalArrayLength(x) { /** * Is a value a legal integer for an array index? - * @param {Interpreter.Value} x Value to check. + * @param {Interpreter.MyValue} x Value to check. * @return {number} Zero, or a positive integer if the value can be * converted to such. NaN otherwise. */ @@ -1551,12 +1593,6 @@ static legalArrayIndex(x) { return (String(n) === String(x) && n !== 0xffffffff) ? n : NaN; }; -/** - * Typedef for JS values. - * @typedef {!Interpreter.MyObject|boolean|number|string|undefined|null} - */ -static Value; - /** * Create a new data object based on a constructor's prototype. * @param {Interpreter.MyObject} constructor Parent constructor function, @@ -1672,7 +1708,7 @@ public createAsyncFunction(asyncFunc) { * Converts from a native JS object or value to a JS interpreter object. * Can handle JSON-style values. * @param {*} nativeObj The native JS object to be converted. - * @return {Interpreter.Value} The equivalent JS interpreter object. + * @return {Interpreter.MyValue} The equivalent JS interpreter object. */ public nativeToPseudo(nativeObj) { if (typeof nativeObj === 'boolean' || @@ -1723,7 +1759,7 @@ public nativeToPseudo(nativeObj) { /** * Converts from a JS interpreter object to native JS object. * Can handle JSON-style values, plus cycles. - * @param {Interpreter.Value} pseudoObj The JS interpreter object to be + * @param {Interpreter.MyValue} pseudoObj The JS interpreter object to be * converted. * @param {Object=} opt_cycles Cycle detection (used in recursive calls). * @return {*} The equivalent native JS object or value. @@ -1776,7 +1812,7 @@ public pseudoToNative(pseudoObj, opt_cycles?) { /** * Look up the prototype for this value. - * @param {Interpreter.Value} value Data object. + * @param {Interpreter.MyValue} value Data object. * @return {Interpreter.MyObject} Prototype object, null if none. */ public getPrototype(value) { @@ -1796,9 +1832,9 @@ public getPrototype(value) { /** * Fetch a property value from a data object. - * @param {Interpreter.Value} obj Data object. - * @param {Interpreter.Value} name Name of property. - * @return {Interpreter.Value} Property value (may be undefined). + * @param {Interpreter.MyValue} obj Data object. + * @param {Interpreter.MyValue} name Name of property. + * @return {Interpreter.MyValue} Property value (may be undefined). */ public getProperty(obj, name) { name = String(name); @@ -1838,8 +1874,8 @@ public getProperty(obj, name) { /** * Does the named property exist on a data object. - * @param {Interpreter.Value} obj Data object. - * @param {Interpreter.Value} name Name of property. + * @param {Interpreter.MyValue} obj Data object. + * @param {Interpreter.MyValue} name Name of property. * @return {boolean} True if property exists. */ public hasProperty(obj, name) { @@ -1867,8 +1903,8 @@ public hasProperty(obj, name) { /** * Set a property value on a data object. * @param {!Interpreter.MyObject} obj Data object. - * @param {Interpreter.Value} name Name of property. - * @param {Interpreter.Value|ReferenceError} value New property value. + * @param {Interpreter.MyValue} name Name of property. + * @param {Interpreter.MyValue|ReferenceError} value New property value. * Use ReferenceError if value is handled by descriptor instead. * @param {Object=} opt_descriptor Optional descriptor object. * @return {!Interpreter.MyObject|undefined} Returns a setter function if one @@ -2022,7 +2058,7 @@ public setProperty(obj, name, value, opt_descriptor?) { * Convenience method for adding a native function as a non-enumerable property * onto an object's prototype. * @param {!Interpreter.MyObject} obj Data object. - * @param {Interpreter.Value} name Name of property. + * @param {Interpreter.MyValue} name Name of property. * @param {!Function} wrapper Function object. */ private setNativeFunctionPrototype(obj, name, wrapper) { @@ -2095,7 +2131,7 @@ public createSpecialScope(parentScope, opt_scope?) { /** * Retrieves a value from the scope chain. * @param {string} name Name of variable. - * @return {Interpreter.Value} Any value. + * @return {Interpreter.MyValue} Any value. * May be flagged as being a getter and thus needing immediate execution * (rather than being the value of the property). */ @@ -2124,7 +2160,7 @@ public getValueFromScope(name) { /** * Sets a value to the current scope. * @param {string} name Name of variable. - * @param {Interpreter.Value} value Value. + * @param {Interpreter.MyValue} value Value. * @return {!Interpreter.MyObject|undefined} Returns a setter function if one * needs to be called, otherwise undefined. */ @@ -2227,7 +2263,7 @@ public calledWithNew() { /** * Gets a value from the scope chain or from an object property. * @param {!Array} ref Name of variable or object/propname tuple. - * @return {Interpreter.Value} Any value. + * @return {Interpreter.MyValue} Any value. * May be flagged as being a getter and thus needing immediate execution * (rather than being the value of the property). */ @@ -2244,7 +2280,7 @@ public getValue(ref) { /** * Sets a value to the scope chain or to an object property. * @param {!Array} ref Name of variable or object/propname tuple. - * @param {Interpreter.Value} value Value. + * @param {Interpreter.MyValue} value Value. * @return {!Interpreter.MyObject|undefined} Returns a setter function if one * needs to be called, otherwise undefined. */ @@ -2346,7 +2382,7 @@ public createGetter_(func, left) { * @param {!Interpreter.MyObject} func Function to execute. * @param {!Interpreter.MyObject|!Array} left * Name of variable or object/propname tuple. - * @param {Interpreter.Value} value Value to set. + * @param {Interpreter.MyValue} value Value to set. * @private */ public createSetter_(func, left, value) { @@ -3500,7 +3536,7 @@ toString() { /** * Return the object's value. - * @return {Interpreter.Value} Value. + * @return {Interpreter.MyValue} Value. * @override */ valueOf() { @@ -3515,6 +3551,11 @@ valueOf() { } } +/** + * Typedef for JS values. + * @typedef {!Interpreter.MyObject|boolean|number|string|undefined|null} + */ +export type MyValue = MyObject | boolean | number | string | undefined | null; /** * Class for a state. diff --git a/package-lock.json b/package-lock.json index c5b1abdf..ce21e3cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,13 @@ { "name": "JS-Interpreter", "version": "0.1.0", - "lockfileVersion": 1 + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/estree": { + "version": "0.0.37", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.37.tgz", + "integrity": "sha512-1IT6vNpmU9w18P3v6mN9idv18z5KPVTi4t7+rU9VLnkxo0LCam8IXy/eSVzOaQ1Wpabra2cN3A8K/SliPK/Suw==" + } + } } diff --git a/package.json b/package.json index 2a3f2f48..e266e5e9 100644 --- a/package.json +++ b/package.json @@ -17,5 +17,8 @@ "bugs": { "url": "https://github.com/arcatdmz/JS-Interpreter/issues" }, - "homepage": "https://github.com/arcatdmz/JS-Interpreter#readme" + "homepage": "https://github.com/arcatdmz/JS-Interpreter#readme", + "dependencies": { + "@types/estree": "0.0.37" + } } From 2760e1dfa25d6dde5ed7af61ae4b23e6e8640559 Mon Sep 17 00:00:00 2001 From: Jun Kato Date: Sat, 12 Aug 2017 18:08:34 +0900 Subject: [PATCH 07/29] remove dependency on the ES6 feature (Array.from) --- interpreter.js | 6018 ++++++++++++++++++++++---------------------- interpreter.js.map | 2 +- interpreter.ts | 6 +- 3 files changed, 3013 insertions(+), 3013 deletions(-) diff --git a/interpreter.js b/interpreter.js index 9e94e08a..34b87378 100644 --- a/interpreter.js +++ b/interpreter.js @@ -1,3226 +1,3230 @@ -/** - * @license - * JavaScript Interpreter - * - * Copyright 2013 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @fileoverview Interpreting JavaScript in JavaScript. - * @author fraser@google.com (Neil Fraser) - */ -/** - * Create a new interpreter. - * @param {string|!Object} code Raw JavaScript text or AST. - * @param {Function=} opt_initFunc Optional initialization function. Used to - * define APIs. When called it is passed the interpreter object and the - * global scope object. - * @constructor - */ -var Interpreter = (function () { - function Interpreter(code, opt_initFunc) { - if (typeof code === 'string') { - code = acorn.parse(code, Interpreter.PARSE_OPTIONS); - } - this.ast = code; - this.initFunc_ = opt_initFunc; - this.paused_ = false; - this.polyfills_ = []; - // Unique identifier for native functions. Used in serialization. - this.functionCounter_ = 0; - // Map node types to our step function names; a property lookup is faster - // than string concatenation with "step" prefix. - this.stepFunctions_ = Object.create(null); - var stepMatch = /^step([A-Z]\w*)$/; - var m; - for (var methodName in this) { - if ((typeof this[methodName] === 'function') && - (m = methodName.match(stepMatch))) { - this.stepFunctions_[m[1]] = this[methodName].bind(this); - } - } - // Create and initialize the global scope. - this.global = this.createScope(this.ast, null); - // Run the polyfills. - this.ast = acorn.parse(this.polyfills_.join('\n'), Interpreter.PARSE_OPTIONS); - this.polyfills_ = undefined; // Allow polyfill strings to garbage collect. - this.stripLocations_(this.ast, undefined, undefined); - var state = new Interpreter.MyState(this.ast, this.global); - state.done = false; - this.stateStack = [state]; - this.run(); - this.value = undefined; - // Point at the main program. - this.ast = code; - var state = new Interpreter.MyState(this.ast, this.global); - state.done = false; - this.stateStack.length = 0; - this.stateStack[0] = state; - // Get a handle on Acorn's node_t object. It's tricky to access. - this.nodeConstructor = state.node.constructor; - // Preserve publicly properties from being pruned/renamed by JS compilers. - // Add others as needed. - this['stateStack'] = this.stateStack; - this['OBJECT'] = this.OBJECT; - this['OBJECT_PROTO'] = this.OBJECT_PROTO; - this['FUNCTION'] = this.FUNCTION; - this['FUNCTION_PROTO'] = this.FUNCTION_PROTO; - this['ARRAY'] = this.ARRAY; - this['ARRAY_PROTO'] = this.ARRAY_PROTO; - this['REGEXP'] = this.REGEXP; - this['REGEXP_PROTO'] = this.REGEXP_PROTO; - // The following properties are obsolete. Do not use. - this['UNDEFINED'] = undefined; - this['NULL'] = null; - this['NAN'] = NaN; - this['TRUE'] = true; - this['FALSE'] = false; - this['STRING_EMPTY'] = ''; - this['NUMBER_ZERO'] = 0; - this['NUMBER_ONE'] = 1; - } - ; +define(["require", "exports"], function (require, exports) { + "use strict"; + exports.__esModule = true; /** - * Add more code to the interpreter. - * @param {string|!Object} code Raw JavaScript text or AST. + * @license + * JavaScript Interpreter + * + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ - Interpreter.prototype.appendCode = function (code) { - var state = this.stateStack[0]; - if (!state || state.node['type'] !== 'Program') { - throw Error('Expecting original AST to start with a Program node.'); - } - if (typeof code === 'string') { - code = acorn.parse(code, Interpreter.PARSE_OPTIONS); - } - if (!code || code['type'] !== 'Program') { - throw Error('Expecting new AST to start with a Program node.'); - } - this.populateScope_(code, state.scope); - // Append the new program to the old one. - for (var i = 0, node; (node = code['body'][i]); i++) { - state.node['body'].push(node); - } - state.done = false; - }; - ; /** - * Execute one step of the interpreter. - * @return {boolean} True if a step was executed, false if no more instructions. + * @fileoverview Interpreting JavaScript in JavaScript. + * @author fraser@google.com (Neil Fraser) */ - Interpreter.prototype.step = function () { - var stack = this.stateStack; - var state = stack[stack.length - 1]; - if (!state) { - return false; - } - var node = state.node, type = node['type']; - if (type === 'Program' && state.done) { - return false; - } - else if (this.paused_) { - return true; - } - try { - var nextState = this.stepFunctions_[type](stack, state, node); - } - catch (e) { - // Eat any step errors. They have been thrown on the stack. - if (e !== Interpreter.STEP_ERROR) { - // Uh oh. This is a real error in the JS-Interpreter. Rethrow. - throw e; - } - } - if (nextState) { - stack.push(nextState); - } - if (!node['end']) { - // This is polyfill code. Keep executing until we arrive at user code. - return this.step(); - } - return true; - }; - ; - /** - * Execute the interpreter to program completion. Vulnerable to infinite loops. - * @return {boolean} True if a execution is asynchronously blocked, - * false if no more instructions. - */ - Interpreter.prototype.run = function () { - while (!this.paused_ && this.step()) { } - return this.paused_; - }; - ; - /** - * Initialize the global scope with buitin properties and functions. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initGlobalScope = function (scope) { - // Initialize uneditable global properties. - this.setProperty(scope, 'NaN', NaN, Interpreter.READONLY_DESCRIPTOR); - this.setProperty(scope, 'Infinity', Infinity, Interpreter.READONLY_DESCRIPTOR); - this.setProperty(scope, 'undefined', undefined, Interpreter.READONLY_DESCRIPTOR); - this.setProperty(scope, 'window', scope, Interpreter.READONLY_DESCRIPTOR); - this.setProperty(scope, 'this', scope, Interpreter.READONLY_DESCRIPTOR); - this.setProperty(scope, 'self', scope); // Editable. - // Create the objects which will become Object.prototype and - // Function.prototype, which are needed to bootstrap everything else. - this.OBJECT_PROTO = new Interpreter.MyObject(null); - this.FUNCTION_PROTO = new Interpreter.MyObject(this.OBJECT_PROTO); - // Initialize global objects. - this.initFunction(scope); - this.initObject(scope); - // Unable to set scope's parent prior (OBJECT did not exist). - // Note that in a browser this would be 'Window', whereas in Node.js it would - // be 'Object'. This interpreter is closer to Node in that it has no DOM. - scope.proto = this.OBJECT_PROTO; - this.setProperty(scope, 'constructor', this.OBJECT); - this.initArray(scope); - this.initString(scope); - this.initBoolean(scope); - this.initNumber(scope); - this.initDate(scope); - this.initRegExp(scope); - this.initError(scope); - this.initMath(scope); - this.initJSON(scope); - // Initialize global functions. - var thisInterpreter = this; - var func = this.createNativeFunction(function (x) { throw EvalError("Can't happen"); }, false); - func.eval = true; - this.setProperty(scope, 'eval', func); - this.setProperty(scope, 'parseInt', this.createNativeFunction(parseInt, false)); - this.setProperty(scope, 'parseFloat', this.createNativeFunction(parseFloat, false)); - this.setProperty(scope, 'isNaN', this.createNativeFunction(isNaN, false)); - this.setProperty(scope, 'isFinite', this.createNativeFunction(isFinite, false)); - var strFunctions = [ - [escape, 'escape'], [unescape, 'unescape'], - [decodeURI, 'decodeURI'], [decodeURIComponent, 'decodeURIComponent'], - [encodeURI, 'encodeURI'], [encodeURIComponent, 'encodeURIComponent'] - ]; - for (var i = 0; i < strFunctions.length; i++) { - var wrapper = (function (nativeFunc) { - return function (str) { - try { - return nativeFunc(str); - } - catch (e) { - // decodeURI('%xy') will throw an error. Catch and rethrow. - thisInterpreter.throwException(thisInterpreter.URI_ERROR, e.message); - } - }; - })(strFunctions[i][0]); - this.setProperty(scope, strFunctions[i][1], this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - } - // Run any user-provided initialization. - if (this.initFunc_) { - this.initFunc_(this, scope); - } - }; - ; /** - * Initialize the Function class. - * @param {!Interpreter.MyObject} scope Global scope. + * Create a new interpreter. + * @param {string|!Object} code Raw JavaScript text or AST. + * @param {Function=} opt_initFunc Optional initialization function. Used to + * define APIs. When called it is passed the interpreter object and the + * global scope object. + * @constructor */ - Interpreter.prototype.initFunction = function (scope) { - var thisInterpreter = this; - var wrapper; - var identifierRegexp = /^[A-Za-z_$][\w$]*$/; - // Function constructor. - wrapper = function (var_args) { - if (thisInterpreter.calledWithNew()) { - // Called as new Function(). - var newFunc = this; + var Interpreter = (function () { + function Interpreter(code, opt_initFunc) { + if (typeof code === 'string') { + code = acorn.parse(code, Interpreter.PARSE_OPTIONS); + } + this.ast = code; + this.initFunc_ = opt_initFunc; + this.paused_ = false; + this.polyfills_ = []; + // Unique identifier for native functions. Used in serialization. + this.functionCounter_ = 0; + // Map node types to our step function names; a property lookup is faster + // than string concatenation with "step" prefix. + this.stepFunctions_ = Object.create(null); + var stepMatch = /^step([A-Z]\w*)$/; + var m; + for (var methodName in this) { + if ((typeof this[methodName] === 'function') && + (m = methodName.match(stepMatch))) { + this.stepFunctions_[m[1]] = this[methodName].bind(this); + } } - else { - // Called as Function(). - var newFunc = thisInterpreter.createObjectProto(thisInterpreter.FUNCTION_PROTO); + // Create and initialize the global scope. + this.global = this.createScope(this.ast, null); + // Run the polyfills. + this.ast = acorn.parse(this.polyfills_.join('\n'), Interpreter.PARSE_OPTIONS); + this.polyfills_ = undefined; // Allow polyfill strings to garbage collect. + this.stripLocations_(this.ast, undefined, undefined); + var state = new Interpreter.MyState(this.ast, this.global); + state.done = false; + this.stateStack = [state]; + this.run(); + this.value = undefined; + // Point at the main program. + this.ast = code; + var state = new Interpreter.MyState(this.ast, this.global); + state.done = false; + this.stateStack.length = 0; + this.stateStack[0] = state; + // Get a handle on Acorn's node_t object. It's tricky to access. + this.nodeConstructor = state.node.constructor; + // Preserve publicly properties from being pruned/renamed by JS compilers. + // Add others as needed. + this['stateStack'] = this.stateStack; + this['OBJECT'] = this.OBJECT; + this['OBJECT_PROTO'] = this.OBJECT_PROTO; + this['FUNCTION'] = this.FUNCTION; + this['FUNCTION_PROTO'] = this.FUNCTION_PROTO; + this['ARRAY'] = this.ARRAY; + this['ARRAY_PROTO'] = this.ARRAY_PROTO; + this['REGEXP'] = this.REGEXP; + this['REGEXP_PROTO'] = this.REGEXP_PROTO; + // The following properties are obsolete. Do not use. + this['UNDEFINED'] = undefined; + this['NULL'] = null; + this['NAN'] = NaN; + this['TRUE'] = true; + this['FALSE'] = false; + this['STRING_EMPTY'] = ''; + this['NUMBER_ZERO'] = 0; + this['NUMBER_ONE'] = 1; + } + ; + /** + * Add more code to the interpreter. + * @param {string|!Object} code Raw JavaScript text or AST. + */ + Interpreter.prototype.appendCode = function (code) { + var state = this.stateStack[0]; + if (!state || state.node['type'] !== 'Program') { + throw Error('Expecting original AST to start with a Program node.'); } - if (arguments.length) { - var code = String(arguments[arguments.length - 1]); + if (typeof code === 'string') { + code = acorn.parse(code, Interpreter.PARSE_OPTIONS); + } + if (!code || code['type'] !== 'Program') { + throw Error('Expecting new AST to start with a Program node.'); + } + this.populateScope_(code, state.scope); + // Append the new program to the old one. + for (var i = 0, node; (node = code['body'][i]); i++) { + state.node['body'].push(node); + } + state.done = false; + }; + ; + /** + * Execute one step of the interpreter. + * @return {boolean} True if a step was executed, false if no more instructions. + */ + Interpreter.prototype.step = function () { + var stack = this.stateStack; + var state = stack[stack.length - 1]; + if (!state) { + return false; + } + var node = state.node, type = node['type']; + if (type === 'Program' && state.done) { + return false; + } + else if (this.paused_) { + return true; } - else { - var code = ''; - } - var args = []; - for (var i = 0; i < arguments.length - 1; i++) { - var name = String(arguments[i]); - if (!name.match(identifierRegexp)) { - thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid function argument: ' + name); - } - args.push(name); - } - args = args.join(', '); - // Interestingly, the scope for constructed functions is the global scope, - // even if they were constructed in some other scope. - newFunc.parentScope = thisInterpreter.global; - // Acorn needs to parse code in the context of a function or else 'return' - // statements will be syntax errors. try { - var ast = acorn.parse('$ = function(' + args + ') {' + code + '};', Interpreter.PARSE_OPTIONS); + var nextState = this.stepFunctions_[type](stack, state, node); } catch (e) { - // Acorn threw a SyntaxError. Rethrow as a trappable error. - thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid code: ' + e.message); - } - if (ast['body'].length !== 1) { - // Function('a', 'return a + 6;}; {alert(1);'); - thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid code in function body.'); - } - newFunc.node = ast['body'][0]['expression']['right']; - thisInterpreter.setProperty(newFunc, 'length', newFunc.node['length'], Interpreter.READONLY_DESCRIPTOR); - return newFunc; - }; - wrapper.id = this.functionCounter_++; - this.FUNCTION = this.createObjectProto(this.FUNCTION_PROTO); - this.setProperty(scope, 'Function', this.FUNCTION); - // Manually setup type and prototype because createObj doesn't recognize - // this object as a function (this.FUNCTION did not exist). - this.setProperty(this.FUNCTION, 'prototype', this.FUNCTION_PROTO); - this.FUNCTION.nativeFunc = wrapper; - // Configure Function.prototype. - this.setProperty(this.FUNCTION_PROTO, 'constructor', this.FUNCTION, Interpreter.NONENUMERABLE_DESCRIPTOR); - this.FUNCTION_PROTO.nativeFunc = function () { }; - this.FUNCTION_PROTO.nativeFunc.id = this.functionCounter_++; - this.setProperty(this.FUNCTION_PROTO, 'length', 0, Interpreter.READONLY_DESCRIPTOR); - var boxThis = function (value) { - // In non-strict mode 'this' must be an object. - if ((!value || !value.isObject) && !thisInterpreter.getScope().strict) { - if (value === undefined || value === null) { - // 'Undefined' and 'null' are changed to global object. - value = thisInterpreter.global; + // Eat any step errors. They have been thrown on the stack. + if (e !== Interpreter.STEP_ERROR) { + // Uh oh. This is a real error in the JS-Interpreter. Rethrow. + throw e; + } + } + if (nextState) { + stack.push(nextState); + } + if (!node['end']) { + // This is polyfill code. Keep executing until we arrive at user code. + return this.step(); + } + return true; + }; + ; + /** + * Execute the interpreter to program completion. Vulnerable to infinite loops. + * @return {boolean} True if a execution is asynchronously blocked, + * false if no more instructions. + */ + Interpreter.prototype.run = function () { + while (!this.paused_ && this.step()) { } + return this.paused_; + }; + ; + /** + * Initialize the global scope with buitin properties and functions. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initGlobalScope = function (scope) { + // Initialize uneditable global properties. + this.setProperty(scope, 'NaN', NaN, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'Infinity', Infinity, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'undefined', undefined, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'window', scope, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'this', scope, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'self', scope); // Editable. + // Create the objects which will become Object.prototype and + // Function.prototype, which are needed to bootstrap everything else. + this.OBJECT_PROTO = new Interpreter.MyObject(null); + this.FUNCTION_PROTO = new Interpreter.MyObject(this.OBJECT_PROTO); + // Initialize global objects. + this.initFunction(scope); + this.initObject(scope); + // Unable to set scope's parent prior (OBJECT did not exist). + // Note that in a browser this would be 'Window', whereas in Node.js it would + // be 'Object'. This interpreter is closer to Node in that it has no DOM. + scope.proto = this.OBJECT_PROTO; + this.setProperty(scope, 'constructor', this.OBJECT); + this.initArray(scope); + this.initString(scope); + this.initBoolean(scope); + this.initNumber(scope); + this.initDate(scope); + this.initRegExp(scope); + this.initError(scope); + this.initMath(scope); + this.initJSON(scope); + // Initialize global functions. + var thisInterpreter = this; + var func = this.createNativeFunction(function (x) { throw EvalError("Can't happen"); }, false); + func.eval = true; + this.setProperty(scope, 'eval', func); + this.setProperty(scope, 'parseInt', this.createNativeFunction(parseInt, false)); + this.setProperty(scope, 'parseFloat', this.createNativeFunction(parseFloat, false)); + this.setProperty(scope, 'isNaN', this.createNativeFunction(isNaN, false)); + this.setProperty(scope, 'isFinite', this.createNativeFunction(isFinite, false)); + var strFunctions = [ + [escape, 'escape'], [unescape, 'unescape'], + [decodeURI, 'decodeURI'], [decodeURIComponent, 'decodeURIComponent'], + [encodeURI, 'encodeURI'], [encodeURIComponent, 'encodeURIComponent'] + ]; + for (var i = 0; i < strFunctions.length; i++) { + var wrapper = (function (nativeFunc) { + return function (str) { + try { + return nativeFunc(str); + } + catch (e) { + // decodeURI('%xy') will throw an error. Catch and rethrow. + thisInterpreter.throwException(thisInterpreter.URI_ERROR, e.message); + } + }; + })(strFunctions[i][0]); + this.setProperty(scope, strFunctions[i][1], this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + } + // Run any user-provided initialization. + if (this.initFunc_) { + this.initFunc_(this, scope); + } + }; + ; + /** + * Initialize the Function class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initFunction = function (scope) { + var thisInterpreter = this; + var wrapper; + var identifierRegexp = /^[A-Za-z_$][\w$]*$/; + // Function constructor. + wrapper = function (var_args) { + if (thisInterpreter.calledWithNew()) { + // Called as new Function(). + var newFunc = this; + } + else { + // Called as Function(). + var newFunc = thisInterpreter.createObjectProto(thisInterpreter.FUNCTION_PROTO); + } + if (arguments.length) { + var code = String(arguments[arguments.length - 1]); } else { - // Primitives must be boxed in non-strict mode. + var code = ''; + } + var args = []; + for (var i = 0; i < arguments.length - 1; i++) { + var name = String(arguments[i]); + if (!name.match(identifierRegexp)) { + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid function argument: ' + name); + } + args.push(name); + } + args = args.join(', '); + // Interestingly, the scope for constructed functions is the global scope, + // even if they were constructed in some other scope. + newFunc.parentScope = thisInterpreter.global; + // Acorn needs to parse code in the context of a function or else 'return' + // statements will be syntax errors. + try { + var ast = acorn.parse('$ = function(' + args + ') {' + code + '};', Interpreter.PARSE_OPTIONS); + } + catch (e) { + // Acorn threw a SyntaxError. Rethrow as a trappable error. + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid code: ' + e.message); + } + if (ast['body'].length !== 1) { + // Function('a', 'return a + 6;}; {alert(1);'); + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid code in function body.'); + } + newFunc.node = ast['body'][0]['expression']['right']; + thisInterpreter.setProperty(newFunc, 'length', newFunc.node['length'], Interpreter.READONLY_DESCRIPTOR); + return newFunc; + }; + wrapper.id = this.functionCounter_++; + this.FUNCTION = this.createObjectProto(this.FUNCTION_PROTO); + this.setProperty(scope, 'Function', this.FUNCTION); + // Manually setup type and prototype because createObj doesn't recognize + // this object as a function (this.FUNCTION did not exist). + this.setProperty(this.FUNCTION, 'prototype', this.FUNCTION_PROTO); + this.FUNCTION.nativeFunc = wrapper; + // Configure Function.prototype. + this.setProperty(this.FUNCTION_PROTO, 'constructor', this.FUNCTION, Interpreter.NONENUMERABLE_DESCRIPTOR); + this.FUNCTION_PROTO.nativeFunc = function () { }; + this.FUNCTION_PROTO.nativeFunc.id = this.functionCounter_++; + this.setProperty(this.FUNCTION_PROTO, 'length', 0, Interpreter.READONLY_DESCRIPTOR); + var boxThis = function (value) { + // In non-strict mode 'this' must be an object. + if ((!value || !value.isObject) && !thisInterpreter.getScope().strict) { + if (value === undefined || value === null) { + // 'Undefined' and 'null' are changed to global object. + value = thisInterpreter.global; + } + else { + // Primitives must be boxed in non-strict mode. + var box = thisInterpreter.createObjectProto(thisInterpreter.getPrototype(value)); + box.data = value; + value = box; + } + } + return value; + }; + wrapper = function (thisArg, args) { + var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1]; + // Rewrite the current 'CallExpression' to apply a different function. + state.func_ = this; + // Assign the 'this' object. + state.funcThis_ = boxThis(thisArg); + // Bind any provided arguments. + state.arguments_ = []; + if (args !== null && args !== undefined) { + if (args.isObject) { + state.arguments_ = thisInterpreter.pseudoToNative(args); + } + else { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'CreateListFromArrayLike called on non-object'); + } + } + state.doneExec_ = false; + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'apply', wrapper); + wrapper = function (thisArg, var_args) { + var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1]; + // Rewrite the current 'CallExpression' to call a different function. + state.func_ = this; + // Assign the 'this' object. + state.funcThis_ = boxThis(thisArg); + // Bind any provided arguments. + state.arguments_ = []; + for (var i = 1; i < arguments.length; i++) { + state.arguments_.push(arguments[i]); + } + state.doneExec_ = false; + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'call', wrapper); + this.polyfills_.push( + // Polyfill copied from: + // developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind + "Object.defineProperty(Function.prototype, 'bind',", "{configurable: true, writable: true, value:", "function(oThis) {", "if (typeof this !== 'function') {", "throw TypeError('What is trying to be bound is not callable');", "}", "var aArgs = Array.prototype.slice.call(arguments, 1),", "fToBind = this,", "fNOP = function() {},", "fBound = function() {", "return fToBind.apply(this instanceof fNOP", "? this", ": oThis,", "aArgs.concat(Array.prototype.slice.call(arguments)));", "};", "if (this.prototype) {", "fNOP.prototype = this.prototype;", "}", "fBound.prototype = new fNOP();", "return fBound;", "}", "});", ""); + // Function has no parent to inherit from, so it needs its own mandatory + // toString and valueOf functions. + wrapper = function () { + return this.toString(); + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'toString', wrapper); + this.setProperty(this.FUNCTION, 'toString', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function () { + return this.valueOf(); + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'valueOf', wrapper); + this.setProperty(this.FUNCTION, 'valueOf', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + }; + ; + /** + * Initialize the Object class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initObject = function (scope) { + var thisInterpreter = this; + var wrapper; + // Object constructor. + wrapper = function (value) { + if (value === undefined || value === null) { + // Create a new object. + if (thisInterpreter.calledWithNew()) { + // Called as new Object(). + return this; + } + else { + // Called as Object(). + return thisInterpreter.createObjectProto(thisInterpreter.OBJECT_PROTO); + } + } + if (!value.isObject) { + // Wrap the value as an object. var box = thisInterpreter.createObjectProto(thisInterpreter.getPrototype(value)); box.data = value; - value = box; + return box; } - } - return value; + // Return the provided object. + return value; + }; + this.OBJECT = this.createNativeFunction(wrapper, true); + // Throw away the created prototype and use the root prototype. + this.setProperty(this.OBJECT, 'prototype', this.OBJECT_PROTO); + this.setProperty(this.OBJECT_PROTO, 'constructor', this.OBJECT); + this.setProperty(scope, 'Object', this.OBJECT); + /** + * Checks if the provided value is null or undefined. + * If so, then throw an error in the call stack. + * @param {Interpreter.MyValue} value Value to check. + */ + var throwIfNullUndefined = function (value) { + if (value === undefined || value === null) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, "Cannot convert '" + value + "' to object"); + } + }; + // Static methods on Object. + wrapper = function (obj) { + throwIfNullUndefined(obj); + var props = obj.isObject ? obj.properties : obj; + return thisInterpreter.nativeToPseudo(Object.getOwnPropertyNames(props)); + }; + this.setProperty(this.OBJECT, 'getOwnPropertyNames', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (obj) { + throwIfNullUndefined(obj); + if (!obj.isObject) { + return thisInterpreter.nativeToPseudo(Object.keys(obj)); + } + return thisInterpreter.nativeToPseudo(Object.keys(obj.properties)); + }; + this.setProperty(this.OBJECT, 'keys', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (proto) { + // Support for the second argument is the responsibility of a polyfill. + if (proto === null) { + return thisInterpreter.createObjectProto(null); + } + if (proto === undefined || !proto.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object prototype may only be an Object or null'); + } + return thisInterpreter.createObjectProto(proto); + }; + this.setProperty(this.OBJECT, 'create', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Add a polyfill to handle create's second argument. + this.polyfills_.push("(function() {", "var create_ = Object.create;", "Object.create = function(proto, props) {", "var obj = create_(proto);", "props && Object.defineProperties(obj, props);", "return obj;", "};", "})();", ""); + wrapper = function (obj, prop, descriptor) { + prop = String(prop); + if (!obj || !obj.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object.defineProperty called on non-object'); + } + if (!descriptor || !descriptor.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Property description must be an object'); + } + if (!obj.properties[prop] && obj.preventExtensions) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, "Can't define property '" + prop + "', object is not extensible"); + } + // The polyfill guarantees no inheritance and no getter functions. + // Therefore the descriptor properties map is the native object needed. + thisInterpreter.setProperty(obj, prop, ReferenceError, descriptor.properties); + return obj; + }; + this.setProperty(this.OBJECT, 'defineProperty', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + this.polyfills_.push( + // Flatten the descriptor to remove any inheritance or getter functions. + "(function() {", "var defineProperty_ = Object.defineProperty;", "Object.defineProperty = function(obj, prop, d1) {", "var d2 = {};", "if ('configurable' in d1) d2.configurable = d1.configurable;", "if ('enumerable' in d1) d2.enumerable = d1.enumerable;", "if ('writable' in d1) d2.writable = d1.writable;", "if ('value' in d1) d2.value = d1.value;", "if ('get' in d1) d2.get = d1.get;", "if ('set' in d1) d2.set = d1.set;", "return defineProperty_(obj, prop, d2);", "};", "})();", "Object.defineProperty(Object, 'defineProperties',", "{configurable: true, writable: true, value:", "function(obj, props) {", "var keys = Object.keys(props);", "for (var i = 0; i < keys.length; i++) {", "Object.defineProperty(obj, keys[i], props[keys[i]]);", "}", "return obj;", "}", "});", ""); + wrapper = function (obj, prop) { + if (!obj || !obj.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object.getOwnPropertyDescriptor called on non-object'); + } + prop = String(prop); + if (!(prop in obj.properties)) { + return undefined; + } + var descriptor = Object.getOwnPropertyDescriptor(obj.properties, prop); + var getter = obj.getter[prop]; + var setter = obj.setter[prop]; + if (getter || setter) { + descriptor.get = getter; + descriptor.set = setter; + delete descriptor.value; + delete descriptor.writable; + } + var pseudoDescriptor = thisInterpreter.nativeToPseudo(descriptor); + if ('value' in descriptor) { + thisInterpreter.setProperty(pseudoDescriptor, 'value', descriptor.value); + } + return pseudoDescriptor; + }; + this.setProperty(this.OBJECT, 'getOwnPropertyDescriptor', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (obj) { + throwIfNullUndefined(obj); + return thisInterpreter.getPrototype(obj); + }; + this.setProperty(this.OBJECT, 'getPrototypeOf', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (obj) { + return Boolean(obj) && !obj.preventExtensions; + }; + this.setProperty(this.OBJECT, 'isExtensible', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (obj) { + if (obj && obj.isObject) { + obj.preventExtensions = true; + } + return obj; + }; + this.setProperty(this.OBJECT, 'preventExtensions', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Instance methods on Object. + this.setNativeFunctionPrototype(this.OBJECT, 'toString', Interpreter.MyObject.prototype.toString); + this.setNativeFunctionPrototype(this.OBJECT, 'toLocaleString', Interpreter.MyObject.prototype.toString); + this.setNativeFunctionPrototype(this.OBJECT, 'valueOf', Interpreter.MyObject.prototype.valueOf); + wrapper = function (prop) { + throwIfNullUndefined(this); + if (!this.isObject) { + return this.hasOwnProperty(prop); + } + return String(prop) in this.properties; + }; + this.setNativeFunctionPrototype(this.OBJECT, 'hasOwnProperty', wrapper); + wrapper = function (prop) { + throwIfNullUndefined(this); + return Object.prototype.propertyIsEnumerable.call(this.properties, prop); + }; + this.setNativeFunctionPrototype(this.OBJECT, 'propertyIsEnumerable', wrapper); + wrapper = function (obj) { + while (true) { + // Note, circular loops shouldn't be possible. + obj = thisInterpreter.getPrototype(obj); + if (!obj) { + // No parent; reached the top. + return false; + } + if (obj === this) { + return true; + } + } + }; + this.setNativeFunctionPrototype(this.OBJECT, 'isPrototypeOf', wrapper); }; - wrapper = function (thisArg, args) { - var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1]; - // Rewrite the current 'CallExpression' to apply a different function. - state.func_ = this; - // Assign the 'this' object. - state.funcThis_ = boxThis(thisArg); - // Bind any provided arguments. - state.arguments_ = []; - if (args !== null && args !== undefined) { - if (args.isObject) { - state.arguments_ = thisInterpreter.pseudoToNative(args); + ; + /** + * Initialize the Array class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initArray = function (scope) { + var thisInterpreter = this; + var getInt = function (obj, def) { + // Return an integer, or the default. + var n = obj ? Math.floor(obj) : def; + if (isNaN(n)) { + n = def; + } + return n; + }; + var wrapper; + // Array constructor. + wrapper = function (var_args) { + if (thisInterpreter.calledWithNew()) { + // Called as new Array(). + var newArray = this; } else { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'CreateListFromArrayLike called on non-object'); + // Called as Array(). + var newArray = thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO); } - } - state.doneExec_ = false; + var first = arguments[0]; + if (arguments.length === 1 && typeof first === 'number') { + if (isNaN(Interpreter.legalArrayLength(first))) { + thisInterpreter.throwException(thisInterpreter.RANGE_ERROR, 'Invalid array length'); + } + newArray.properties.length = first; + } + else { + for (var i = 0; i < arguments.length; i++) { + newArray.properties[i] = arguments[i]; + } + newArray.properties.length = i; + } + return newArray; + }; + this.ARRAY = this.createNativeFunction(wrapper, true); + this.ARRAY_PROTO = this.ARRAY.properties['prototype']; + this.setProperty(scope, 'Array', this.ARRAY); + // Static methods on Array. + wrapper = function (obj) { + return obj && obj["class"] === 'Array'; + }; + this.setProperty(this.ARRAY, 'isArray', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Instance methods on Array. + wrapper = function () { + return Array.prototype.pop.call(this.properties); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'pop', wrapper); + wrapper = function (var_args) { + return Array.prototype.push.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'push', wrapper); + wrapper = function () { + return Array.prototype.shift.call(this.properties); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'shift', wrapper); + wrapper = function (var_args) { + return Array.prototype.unshift.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'unshift', wrapper); + wrapper = function () { + Array.prototype.reverse.call(this.properties); + return this; + }; + this.setNativeFunctionPrototype(this.ARRAY, 'reverse', wrapper); + wrapper = function (index, howmany /*, var_args*/) { + var list = Array.prototype.splice.apply(this.properties, arguments); + return thisInterpreter.nativeToPseudo(list); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'splice', wrapper); + wrapper = function (opt_begin, opt_end) { + var list = Array.prototype.slice.call(this.properties, opt_begin, opt_end); + return thisInterpreter.nativeToPseudo(list); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'slice', wrapper); + wrapper = function (opt_separator) { + return Array.prototype.join.call(this.properties, opt_separator); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'join', wrapper); + wrapper = function (var_args) { + var list = []; + var length = 0; + // Start by copying the current array. + var iLength = thisInterpreter.getProperty(this, 'length'); + for (var i = 0; i < iLength; i++) { + if (thisInterpreter.hasProperty(this, i)) { + var element = thisInterpreter.getProperty(this, i); + list[length] = element; + } + length++; + } + // Loop through all arguments and copy them in. + for (var i = 0; i < arguments.length; i++) { + var value = arguments[i]; + if (thisInterpreter.isa(value, thisInterpreter.ARRAY)) { + var jLength = thisInterpreter.getProperty(value, 'length'); + for (var j = 0; j < jLength; j++) { + if (thisInterpreter.hasProperty(value, j)) { + list[length] = thisInterpreter.getProperty(value, j); + } + length++; + } + } + else { + list[length] = value; + } + } + return thisInterpreter.nativeToPseudo(list); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'concat', wrapper); + wrapper = function (searchElement, opt_fromIndex) { + return Array.prototype.indexOf.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'indexOf', wrapper); + wrapper = function (searchElement, opt_fromIndex) { + return Array.prototype.lastIndexOf.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'lastIndexOf', wrapper); + wrapper = function () { + Array.prototype.sort.call(this.properties); + return this; + }; + this.setNativeFunctionPrototype(this.ARRAY, 'sort', wrapper); + this.polyfills_.push( + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/every + "Object.defineProperty(Array.prototype, 'every',", "{configurable: true, writable: true, value:", "function(callbackfn, thisArg) {", "if (!this || typeof callbackfn !== 'function') throw TypeError();", "var T, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "k = 0;", "while (k < len) {", "if (k in O && !callbackfn.call(T, O[k], k, O)) return false;", "k++;", "}", "return true;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/filter + "Object.defineProperty(Array.prototype, 'filter',", "{configurable: true, writable: true, value:", "function(fun/*, thisArg*/) {", "if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();", "var t = Object(this);", "var len = t.length >>> 0;", "var res = [];", "var thisArg = arguments.length >= 2 ? arguments[1] : void 0;", "for (var i = 0; i < len; i++) {", "if (i in t) {", "var val = t[i];", "if (fun.call(thisArg, val, i, t)) res.push(val);", "}", "}", "return res;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach + "Object.defineProperty(Array.prototype, 'forEach',", "{configurable: true, writable: true, value:", "function(callback, thisArg) {", "if (!this || typeof callback !== 'function') throw TypeError();", "var T, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "k = 0;", "while (k < len) {", "if (k in O) callback.call(T, O[k], k, O);", "k++;", "}", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map + "Object.defineProperty(Array.prototype, 'map',", "{configurable: true, writable: true, value:", "function(callback, thisArg) {", "if (!this || typeof callback !== 'function') new TypeError;", "var T, A, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "A = new Array(len);", "k = 0;", "while (k < len) {", "if (k in O) A[k] = callback.call(T, O[k], k, O);", "k++;", "}", "return A;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce + "Object.defineProperty(Array.prototype, 'reduce',", "{configurable: true, writable: true, value:", "function(callback /*, initialValue*/) {", "if (!this || typeof callback !== 'function') throw TypeError();", "var t = Object(this), len = t.length >>> 0, k = 0, value;", "if (arguments.length === 2) {", "value = arguments[1];", "} else {", "while (k < len && !(k in t)) k++;", "if (k >= len) {", "throw TypeError('Reduce of empty array with no initial value');", "}", "value = t[k++];", "}", "for (; k < len; k++) {", "if (k in t) value = callback(value, t[k], k, t);", "}", "return value;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight + "Object.defineProperty(Array.prototype, 'reduceRight',", "{configurable: true, writable: true, value:", "function(callback /*, initialValue*/) {", "if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();", "var t = Object(this), len = t.length >>> 0, k = len - 1, value;", "if (arguments.length >= 2) {", "value = arguments[1];", "} else {", "while (k >= 0 && !(k in t)) k--;", "if (k < 0) {", "throw TypeError('Reduce of empty array with no initial value');", "}", "value = t[k--];", "}", "for (; k >= 0; k--) {", "if (k in t) value = callback(value, t[k], k, t);", "}", "return value;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/some + "Object.defineProperty(Array.prototype, 'some',", "{configurable: true, writable: true, value:", "function(fun/*, thisArg*/) {", "if (!this || typeof fun !== 'function') throw TypeError();", "var t = Object(this);", "var len = t.length >>> 0;", "var thisArg = arguments.length >= 2 ? arguments[1] : void 0;", "for (var i = 0; i < len; i++) {", "if (i in t && fun.call(thisArg, t[i], i, t)) {", "return true;", "}", "}", "return false;", "}", "});", "(function() {", "var sort_ = Array.prototype.sort;", "Array.prototype.sort = function(opt_comp) {", + // Fast native sort. + "if (typeof opt_comp !== 'function') {", "return sort_.call(this);", "}", + // Slow bubble sort. + "for (var i = 0; i < this.length; i++) {", "var changes = 0;", "for (var j = 0; j < this.length - i - 1; j++) {", "if (opt_comp(this[j], this[j + 1]) > 0) {", "var swap = this[j];", "this[j] = this[j + 1];", "this[j + 1] = swap;", "changes++;", "}", "}", "if (!changes) break;", "}", "return this;", "};", "})();", "Object.defineProperty(Array.prototype, 'toLocaleString',", "{configurable: true, writable: true, value:", "function() {", "var out = [];", "for (var i = 0; i < this.length; i++) {", "out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();", "}", "return out.join(',');", "}", "});", ""); }; - this.setNativeFunctionPrototype(this.FUNCTION, 'apply', wrapper); - wrapper = function (thisArg, var_args) { - var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1]; - // Rewrite the current 'CallExpression' to call a different function. - state.func_ = this; - // Assign the 'this' object. - state.funcThis_ = boxThis(thisArg); - // Bind any provided arguments. - state.arguments_ = []; - for (var i = 1; i < arguments.length; i++) { - state.arguments_.push(arguments[i]); - } - state.doneExec_ = false; - }; - this.setNativeFunctionPrototype(this.FUNCTION, 'call', wrapper); - this.polyfills_.push( - // Polyfill copied from: - // developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind - "Object.defineProperty(Function.prototype, 'bind',", "{configurable: true, writable: true, value:", "function(oThis) {", "if (typeof this !== 'function') {", "throw TypeError('What is trying to be bound is not callable');", "}", "var aArgs = Array.prototype.slice.call(arguments, 1),", "fToBind = this,", "fNOP = function() {},", "fBound = function() {", "return fToBind.apply(this instanceof fNOP", "? this", ": oThis,", "aArgs.concat(Array.prototype.slice.call(arguments)));", "};", "if (this.prototype) {", "fNOP.prototype = this.prototype;", "}", "fBound.prototype = new fNOP();", "return fBound;", "}", "});", ""); - // Function has no parent to inherit from, so it needs its own mandatory - // toString and valueOf functions. - wrapper = function () { - return this.toString(); - }; - this.setNativeFunctionPrototype(this.FUNCTION, 'toString', wrapper); - this.setProperty(this.FUNCTION, 'toString', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - wrapper = function () { - return this.valueOf(); - }; - this.setNativeFunctionPrototype(this.FUNCTION, 'valueOf', wrapper); - this.setProperty(this.FUNCTION, 'valueOf', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - }; - ; - /** - * Initialize the Object class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initObject = function (scope) { - var thisInterpreter = this; - var wrapper; - // Object constructor. - wrapper = function (value) { - if (value === undefined || value === null) { - // Create a new object. + ; + /** + * Initialize the String class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initString = function (scope) { + var thisInterpreter = this; + var wrapper; + // String constructor. + wrapper = function (value) { + value = String(value); if (thisInterpreter.calledWithNew()) { - // Called as new Object(). + // Called as new String(). + this.data = value; return this; } else { - // Called as Object(). - return thisInterpreter.createObjectProto(thisInterpreter.OBJECT_PROTO); + // Called as String(). + return value; + } + }; + this.STRING = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'String', this.STRING); + // Static methods on String. + this.setProperty(this.STRING, 'fromCharCode', this.createNativeFunction(String.fromCharCode, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Instance methods on String. + // Methods with exclusively primitive arguments. + var functions = ['trim', 'toLowerCase', 'toUpperCase', + 'toLocaleLowerCase', 'toLocaleUpperCase', 'charAt', 'charCodeAt', + 'substring', 'slice', 'substr', 'indexOf', 'lastIndexOf', 'concat']; + for (var i = 0; i < functions.length; i++) { + this.setNativeFunctionPrototype(this.STRING, functions[i], String.prototype[functions[i]]); + } + wrapper = function (compareString, locales, options) { + locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined; + options = options ? thisInterpreter.pseudoToNative(options) : undefined; + return String(this).localeCompare(compareString, locales, options); + }; + this.setNativeFunctionPrototype(this.STRING, 'localeCompare', wrapper); + wrapper = function (separator, limit) { + if (thisInterpreter.isa(separator, thisInterpreter.REGEXP)) { + separator = separator.data; } + var jsList = String(this).split(separator, limit); + return thisInterpreter.nativeToPseudo(jsList); + }; + this.setNativeFunctionPrototype(this.STRING, 'split', wrapper); + wrapper = function (regexp) { + regexp = regexp ? regexp.data : undefined; + var match = String(this).match(regexp); + if (!match) { + return null; + } + return thisInterpreter.nativeToPseudo(match); + }; + this.setNativeFunctionPrototype(this.STRING, 'match', wrapper); + wrapper = function (regexp) { + regexp = regexp ? regexp.data : undefined; + return String(this).search(regexp); + }; + this.setNativeFunctionPrototype(this.STRING, 'search', wrapper); + wrapper = function (substr, newSubstr) { + // Support for function replacements is the responsibility of a polyfill. + return String(this).replace(substr.data || substr, newSubstr); + }; + this.setNativeFunctionPrototype(this.STRING, 'replace', wrapper); + // Add a polyfill to handle replace's second argument being a function. + this.polyfills_.push("(function() {", "var replace_ = String.prototype.replace;", "String.prototype.replace = function(substr, newSubstr) {", "if (typeof newSubstr !== 'function') {", + // string.replace(string|regexp, string) + "return replace_.call(this, substr, newSubstr);", "}", "var str = this;", "if (substr instanceof RegExp) {", // string.replace(regexp, function) + "var subs = [];", "var m = substr.exec(str);", "while (m) {", "m.push(m.index, str);", "var inject = newSubstr.apply(null, m);", "subs.push([m.index, m[0].length, inject]);", "m = substr.global ? substr.exec(str) : null;", "}", "for (var i = subs.length - 1; i >= 0; i--) {", "str = str.substring(0, subs[i][0]) + subs[i][2] + " + + "str.substring(subs[i][0] + subs[i][1]);", "}", "} else {", // string.replace(string, function) + "var i = str.indexOf(substr);", "if (i !== -1) {", "var inject = newSubstr(str.substr(i, substr.length), i, str);", "str = str.substring(0, i) + inject + " + + "str.substring(i + substr.length);", "}", "}", "return str;", "};", "})();", ""); + }; + ; + /** + * Initialize the Boolean class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initBoolean = function (scope) { + var thisInterpreter = this; + var wrapper; + // Boolean constructor. + wrapper = function (value) { + value = Boolean(value); + if (thisInterpreter.calledWithNew()) { + // Called as new Boolean(). + this.data = value; + return this; + } + else { + // Called as Boolean(). + return value; + } + }; + this.BOOLEAN = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'Boolean', this.BOOLEAN); + }; + ; + /** + * Initialize the Number class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initNumber = function (scope) { + var thisInterpreter = this; + var wrapper; + // Number constructor. + wrapper = function (value) { + value = Number(value); + if (thisInterpreter.calledWithNew()) { + // Called as new Number(). + this.data = value; + return this; + } + else { + // Called as Number(). + return value; + } + }; + this.NUMBER = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'Number', this.NUMBER); + var numConsts = ['MAX_VALUE', 'MIN_VALUE', 'NaN', 'NEGATIVE_INFINITY', + 'POSITIVE_INFINITY']; + for (var i = 0; i < numConsts.length; i++) { + this.setProperty(this.NUMBER, numConsts[i], Number[numConsts[i]], Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + } + // Instance methods on Number. + wrapper = function (fractionDigits) { + try { + return Number(this).toExponential(fractionDigits); + } + catch (e) { + // Throws if fractionDigits isn't within 0-20. + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + } + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toExponential', wrapper); + wrapper = function (digits) { + try { + return Number(this).toFixed(digits); + } + catch (e) { + // Throws if digits isn't within 0-20. + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + } + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toFixed', wrapper); + wrapper = function (precision) { + try { + return Number(this).toPrecision(precision); + } + catch (e) { + // Throws if precision isn't within range (depends on implementation). + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + } + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toPrecision', wrapper); + wrapper = function (radix) { + try { + return Number(this).toString(radix); + } + catch (e) { + // Throws if radix isn't within 2-36. + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + } + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toString', wrapper); + wrapper = function (locales, options) { + locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined; + options = options ? thisInterpreter.pseudoToNative(options) : undefined; + return Number(this).toLocaleString(locales, options); + }; + this.setNativeFunctionPrototype(this.NUMBER, 'toLocaleString', wrapper); + }; + ; + /** + * Initialize the Date class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initDate = function (scope) { + var thisInterpreter = this; + var wrapper; + // Date constructor. + wrapper = function (value, var_args) { + if (!thisInterpreter.calledWithNew()) { + // Called as Date(). + // Calling Date() as a function returns a string, no arguments are heeded. + return Date(); + } + // Called as new Date(). + var args = [null].concat([].slice.call(arguments)); + this.data = new (Function.prototype.bind.apply(Date, args)); + return this; + }; + this.DATE = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'Date', this.DATE); + // Static methods on Date. + this.setProperty(this.DATE, 'now', this.createNativeFunction(Date.now, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.DATE, 'parse', this.createNativeFunction(Date.parse, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.DATE, 'UTC', this.createNativeFunction(Date.UTC, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Instance methods on Date. + var functions = ['getDate', 'getDay', 'getFullYear', 'getHours', + 'getMilliseconds', 'getMinutes', 'getMonth', 'getSeconds', 'getTime', + 'getTimezoneOffset', 'getUTCDate', 'getUTCDay', 'getUTCFullYear', + 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', + 'getUTCSeconds', 'getYear', + 'setDate', 'setFullYear', 'setHours', 'setMilliseconds', + 'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', + 'setUTCFullYear', 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', + 'setUTCMonth', 'setUTCSeconds', 'setYear', + 'toDateString', 'toISOString', 'toJSON', 'toGMTString', + 'toLocaleDateString', 'toLocaleString', 'toLocaleTimeString', + 'toTimeString', 'toUTCString']; + for (var i = 0; i < functions.length; i++) { + wrapper = (function (nativeFunc) { + return function (var_args) { + var args = []; + for (var i = 0; i < arguments.length; i++) { + args[i] = thisInterpreter.pseudoToNative(arguments[i]); + } + return this.data[nativeFunc].apply(this.data, args); + }; + })(functions[i]); + this.setNativeFunctionPrototype(this.DATE, functions[i], wrapper); } - if (!value.isObject) { - // Wrap the value as an object. - var box = thisInterpreter.createObjectProto(thisInterpreter.getPrototype(value)); - box.data = value; - return box; + }; + ; + /** + * Initialize Regular Expression object. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initRegExp = function (scope) { + var thisInterpreter = this; + var wrapper; + // RegExp constructor. + wrapper = function (pattern, flags) { + if (thisInterpreter.calledWithNew()) { + // Called as new RegExp(). + var rgx = this; + } + else { + // Called as RegExp(). + var rgx = thisInterpreter.createObjectProto(thisInterpreter.REGEXP_PROTO); + } + pattern = pattern ? pattern.toString() : ''; + flags = flags ? flags.toString() : ''; + thisInterpreter.populateRegExp(rgx, new RegExp(pattern, flags)); + return rgx; + }; + this.REGEXP = this.createNativeFunction(wrapper, true); + this.REGEXP_PROTO = this.REGEXP.properties['prototype']; + this.setProperty(scope, 'RegExp', this.REGEXP); + this.setProperty(this.REGEXP.properties['prototype'], 'global', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.REGEXP.properties['prototype'], 'ignoreCase', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.REGEXP.properties['prototype'], 'multiline', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.REGEXP.properties['prototype'], 'source', '(?:)', Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + wrapper = function (str) { + return this.data.test(str); + }; + this.setNativeFunctionPrototype(this.REGEXP, 'test', wrapper); + wrapper = function (str) { + str = str.toString(); + // Get lastIndex from wrapped regex, since this is settable. + this.data.lastIndex = + Number(thisInterpreter.getProperty(this, 'lastIndex')); + var match = this.data.exec(str); + thisInterpreter.setProperty(this, 'lastIndex', this.data.lastIndex); + if (match) { + var result = thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO); + for (var i = 0; i < match.length; i++) { + thisInterpreter.setProperty(result, i, match[i]); + } + // match has additional properties. + thisInterpreter.setProperty(result, 'index', match.index); + thisInterpreter.setProperty(result, 'input', match.input); + return result; + } + return null; + }; + this.setNativeFunctionPrototype(this.REGEXP, 'exec', wrapper); + }; + ; + /** + * Initialize the Error class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initError = function (scope) { + var thisInterpreter = this; + // Error constructor. + this.ERROR = this.createNativeFunction(function (opt_message) { + if (thisInterpreter.calledWithNew()) { + // Called as new Error(). + var newError = this; + } + else { + // Called as Error(). + var newError = thisInterpreter.createObject(thisInterpreter.ERROR); + } + if (opt_message) { + thisInterpreter.setProperty(newError, 'message', String(opt_message), Interpreter.NONENUMERABLE_DESCRIPTOR); + } + return newError; + }, true); + this.setProperty(scope, 'Error', this.ERROR); + this.setProperty(this.ERROR.properties['prototype'], 'message', '', Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.ERROR.properties['prototype'], 'name', 'Error', Interpreter.NONENUMERABLE_DESCRIPTOR); + var createErrorSubclass = function (name) { + var constructor = thisInterpreter.createNativeFunction(function (opt_message) { + if (thisInterpreter.calledWithNew()) { + // Called as new XyzError(). + var newError = this; + } + else { + // Called as XyzError(). + var newError = thisInterpreter.createObject(constructor); + } + if (opt_message) { + thisInterpreter.setProperty(newError, 'message', String(opt_message), Interpreter.NONENUMERABLE_DESCRIPTOR); + } + return newError; + }, true); + thisInterpreter.setProperty(constructor, 'prototype', thisInterpreter.createObject(thisInterpreter.ERROR)); + thisInterpreter.setProperty(constructor.properties['prototype'], 'name', name, Interpreter.NONENUMERABLE_DESCRIPTOR); + thisInterpreter.setProperty(scope, name, constructor); + return constructor; + }; + this.EVAL_ERROR = createErrorSubclass('EvalError'); + this.RANGE_ERROR = createErrorSubclass('RangeError'); + this.REFERENCE_ERROR = createErrorSubclass('ReferenceError'); + this.SYNTAX_ERROR = createErrorSubclass('SyntaxError'); + this.TYPE_ERROR = createErrorSubclass('TypeError'); + this.URI_ERROR = createErrorSubclass('URIError'); + }; + ; + /** + * Initialize Math object. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initMath = function (scope) { + var thisInterpreter = this; + var myMath = this.createObjectProto(this.OBJECT_PROTO); + this.setProperty(scope, 'Math', myMath); + var mathConsts = ['E', 'LN2', 'LN10', 'LOG2E', 'LOG10E', 'PI', + 'SQRT1_2', 'SQRT2']; + for (var i = 0; i < mathConsts.length; i++) { + this.setProperty(myMath, mathConsts[i], Math[mathConsts[i]], Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + } + var numFunctions = ['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', + 'exp', 'floor', 'log', 'max', 'min', 'pow', 'random', + 'round', 'sin', 'sqrt', 'tan']; + for (var i = 0; i < numFunctions.length; i++) { + this.setProperty(myMath, numFunctions[i], this.createNativeFunction(Math[numFunctions[i]], false), Interpreter.NONENUMERABLE_DESCRIPTOR); } - // Return the provided object. - return value; }; - this.OBJECT = this.createNativeFunction(wrapper, true); - // Throw away the created prototype and use the root prototype. - this.setProperty(this.OBJECT, 'prototype', this.OBJECT_PROTO); - this.setProperty(this.OBJECT_PROTO, 'constructor', this.OBJECT); - this.setProperty(scope, 'Object', this.OBJECT); + ; /** - * Checks if the provided value is null or undefined. - * If so, then throw an error in the call stack. - * @param {Interpreter.Value} value Value to check. + * Initialize JSON object. + * @param {!Interpreter.MyObject} scope Global scope. */ - var throwIfNullUndefined = function (value) { - if (value === undefined || value === null) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, "Cannot convert '" + value + "' to object"); + Interpreter.prototype.initJSON = function (scope) { + var thisInterpreter = this; + var myJSON = thisInterpreter.createObjectProto(this.OBJECT_PROTO); + this.setProperty(scope, 'JSON', myJSON); + var wrapper = function (text) { + try { + var nativeObj = JSON.parse(text.toString()); + } + catch (e) { + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, e.message); + } + return thisInterpreter.nativeToPseudo(nativeObj); + }; + this.setProperty(myJSON, 'parse', this.createNativeFunction(wrapper, false)); + wrapper = function (value) { + var nativeObj = thisInterpreter.pseudoToNative(value); + try { + var str = JSON.stringify(nativeObj); + } + catch (e) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, e.message); + } + return str; + }; + this.setProperty(myJSON, 'stringify', this.createNativeFunction(wrapper, false)); + }; + ; + /** + * Is an object of a certain class? + * @param {Interpreter.MyValue} child Object to check. + * @param {Interpreter.MyObject} constructor Constructor of object. + * @return {boolean} True if object is the class or inherits from it. + * False otherwise. + */ + Interpreter.prototype.isa = function (child, constructor) { + if (child === null || child === undefined || !constructor) { + return false; + } + var proto = constructor.properties['prototype']; + if (child === proto) { + return true; + } + // The first step up the prototype chain is harder since the child might be + // a primitive value. Subsequent steps can just follow the .proto property. + child = this.getPrototype(child); + while (child) { + if (child === proto) { + return true; + } + child = child.proto; } + return false; }; - // Static methods on Object. - wrapper = function (obj) { - throwIfNullUndefined(obj); - var props = obj.isObject ? obj.properties : obj; - return thisInterpreter.nativeToPseudo(Object.getOwnPropertyNames(props)); + ; + /** + * Is a value a legal integer for an array length? + * @param {Interpreter.MyValue} x Value to check. + * @return {number} Zero, or a positive integer if the value can be + * converted to such. NaN otherwise. + */ + Interpreter.legalArrayLength = function (x) { + var n = x >>> 0; + // Array length must be between 0 and 2^32-1 (inclusive). + return (n === Number(x)) ? n : NaN; }; - this.setProperty(this.OBJECT, 'getOwnPropertyNames', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - wrapper = function (obj) { - throwIfNullUndefined(obj); - if (!obj.isObject) { - return thisInterpreter.nativeToPseudo(Object.keys(obj)); + ; + /** + * Is a value a legal integer for an array index? + * @param {Interpreter.MyValue} x Value to check. + * @return {number} Zero, or a positive integer if the value can be + * converted to such. NaN otherwise. + */ + Interpreter.legalArrayIndex = function (x) { + var n = x >>> 0; + // Array index cannot be 2^32-1, otherwise length would be 2^32. + // 0xffffffff is 2^32-1. + return (String(n) === String(x) && n !== 0xffffffff) ? n : NaN; + }; + ; + /** + * Create a new data object based on a constructor's prototype. + * @param {Interpreter.MyObject} constructor Parent constructor function, + * or null if scope object. + * @return {!Interpreter.MyObject} New data object. + */ + Interpreter.prototype.createObject = function (constructor) { + return this.createObjectProto(constructor && + constructor.properties['prototype']); + }; + ; + /** + * Create a new data object based on a prototype. + * @param {Interpreter.MyObject} proto Prototype object. + * @return {!Interpreter.MyObject} New data object. + */ + Interpreter.prototype.createObjectProto = function (proto) { + var obj = new Interpreter.MyObject(proto); + // Functions have prototype objects. + if (this.isa(obj, this.FUNCTION)) { + this.setProperty(obj, 'prototype', this.createObjectProto(this.OBJECT_PROTO || null)); + obj["class"] = 'Function'; + } + // Arrays have length. + if (this.isa(obj, this.ARRAY)) { + this.setProperty(obj, 'length', 0, { configurable: false, enumerable: false, writable: true }); + obj["class"] = 'Array'; } - return thisInterpreter.nativeToPseudo(Object.keys(obj.properties)); + if (this.isa(obj, this.ERROR)) { + obj["class"] = 'Error'; + } + return obj; + }; + ; + /** + * Initialize a pseudo regular expression object based on a native regular + * expression object. + * @param {!Interpreter.MyObject} pseudoRegexp The existing object to set. + * @param {!RegExp} nativeRegexp The native regular expression. + */ + Interpreter.prototype.populateRegExp = function (pseudoRegexp, nativeRegexp) { + pseudoRegexp.data = nativeRegexp; + // lastIndex is settable, all others are read-only attributes + this.setProperty(pseudoRegexp, 'lastIndex', nativeRegexp.lastIndex, Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'source', nativeRegexp.source, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'global', nativeRegexp.global, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'ignoreCase', nativeRegexp.ignoreCase, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'multiline', nativeRegexp.multiline, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); }; - this.setProperty(this.OBJECT, 'keys', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - wrapper = function (proto) { - // Support for the second argument is the responsibility of a polyfill. - if (proto === null) { - return thisInterpreter.createObjectProto(null); + ; + /** + * Create a new function. + * @param {!Object} node AST node defining the function. + * @param {!Object} scope Parent scope. + * @return {!Interpreter.MyObject} New function. + */ + Interpreter.prototype.createFunction = function (node, scope) { + var func = this.createObjectProto(this.FUNCTION_PROTO); + func.parentScope = scope; + func.node = node; + this.setProperty(func, 'length', func.node['params'].length, Interpreter.READONLY_DESCRIPTOR); + return func; + }; + ; + /** + * Create a new native function. + * @param {!Function} nativeFunc JavaScript function. + * @param {boolean=} opt_constructor If true, the function's + * prototype will have its constructor property set to the function. + * If false, the function cannot be called as a constructor (e.g. escape). + * Defaults to undefined. + * @return {!Interpreter.MyObject} New function. + */ + Interpreter.prototype.createNativeFunction = function (nativeFunc, opt_constructor) { + var func = this.createObjectProto(this.FUNCTION_PROTO); + func.nativeFunc = nativeFunc; + nativeFunc.id = this.functionCounter_++; + this.setProperty(func, 'length', nativeFunc.length, Interpreter.READONLY_DESCRIPTOR); + if (opt_constructor) { + this.setProperty(func.properties['prototype'], 'constructor', func, Interpreter.NONENUMERABLE_DESCRIPTOR); + } + else if (opt_constructor === false) { + func.illegalConstructor = true; + this.setProperty(func, 'prototype', undefined); + } + return func; + }; + ; + /** + * Create a new native asynchronous function. + * @param {!Function} asyncFunc JavaScript function. + * @return {!Interpreter.MyObject} New function. + */ + Interpreter.prototype.createAsyncFunction = function (asyncFunc) { + var func = this.createObjectProto(this.FUNCTION_PROTO); + func.asyncFunc = asyncFunc; + asyncFunc.id = this.functionCounter_++; + this.setProperty(func, 'length', asyncFunc.length, Interpreter.READONLY_DESCRIPTOR); + return func; + }; + ; + /** + * Converts from a native JS object or value to a JS interpreter object. + * Can handle JSON-style values. + * @param {*} nativeObj The native JS object to be converted. + * @return {Interpreter.MyValue} The equivalent JS interpreter object. + */ + Interpreter.prototype.nativeToPseudo = function (nativeObj) { + if (typeof nativeObj === 'boolean' || + typeof nativeObj === 'number' || + typeof nativeObj === 'string' || + nativeObj === null || nativeObj === undefined) { + return nativeObj; + } + if (nativeObj instanceof RegExp) { + var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO); + this.populateRegExp(pseudoRegexp, nativeObj); + return pseudoRegexp; + } + if (nativeObj instanceof Function) { + var interpreter = this; + var wrapper = function () { + return interpreter.nativeToPseudo(nativeObj.apply(interpreter, Array.prototype.slice.call(arguments) + .map(function (i) { + return interpreter.pseudoToNative(i); + }))); + }; + return this.createNativeFunction(wrapper, undefined); + } + var pseudoObj; + if (Array.isArray(nativeObj)) { + pseudoObj = this.createObjectProto(this.ARRAY_PROTO); + for (var i = 0; i < nativeObj.length; i++) { + if (i in nativeObj) { + this.setProperty(pseudoObj, i, this.nativeToPseudo(nativeObj[i])); + } + } } - if (proto === undefined || !proto.isObject) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object prototype may only be an Object or null'); + else { + pseudoObj = this.createObjectProto(this.OBJECT_PROTO); + for (var key in nativeObj) { + this.setProperty(pseudoObj, key, this.nativeToPseudo(nativeObj[key])); + } } - return thisInterpreter.createObjectProto(proto); + return pseudoObj; }; - this.setProperty(this.OBJECT, 'create', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - // Add a polyfill to handle create's second argument. - this.polyfills_.push("(function() {", "var create_ = Object.create;", "Object.create = function(proto, props) {", "var obj = create_(proto);", "props && Object.defineProperties(obj, props);", "return obj;", "};", "})();", ""); - wrapper = function (obj, prop, descriptor) { - prop = String(prop); - if (!obj || !obj.isObject) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object.defineProperty called on non-object'); + ; + /** + * Converts from a JS interpreter object to native JS object. + * Can handle JSON-style values, plus cycles. + * @param {Interpreter.MyValue} pseudoObj The JS interpreter object to be + * converted. + * @param {Object=} opt_cycles Cycle detection (used in recursive calls). + * @return {*} The equivalent native JS object or value. + */ + Interpreter.prototype.pseudoToNative = function (pseudoObj, opt_cycles) { + if (typeof pseudoObj === 'boolean' || + typeof pseudoObj === 'number' || + typeof pseudoObj === 'string' || + pseudoObj === null || pseudoObj === undefined) { + return pseudoObj; + } + if (this.isa(pseudoObj, this.REGEXP)) { + return pseudoObj.data; + } + var cycles = opt_cycles || { + pseudo: [], + native: [] + }; + var i = cycles.pseudo.indexOf(pseudoObj); + if (i !== -1) { + return cycles.native[i]; + } + cycles.pseudo.push(pseudoObj); + var nativeObj; + if (this.isa(pseudoObj, this.ARRAY)) { + nativeObj = []; + cycles.native.push(nativeObj); + var length = this.getProperty(pseudoObj, 'length'); + for (var i = 0; i < length; i++) { + if (this.hasProperty(pseudoObj, i)) { + nativeObj[i] = + this.pseudoToNative(this.getProperty(pseudoObj, i), cycles); + } + } } - if (!descriptor || !descriptor.isObject) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Property description must be an object'); + else { + nativeObj = {}; + cycles.native.push(nativeObj); + var val; + for (var key in pseudoObj.properties) { + val = pseudoObj.properties[key]; + nativeObj[key] = this.pseudoToNative(val, cycles); + } } - if (!obj.properties[prop] && obj.preventExtensions) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, "Can't define property '" + prop + "', object is not extensible"); + cycles.pseudo.pop(); + cycles.native.pop(); + return nativeObj; + }; + ; + /** + * Look up the prototype for this value. + * @param {Interpreter.MyValue} value Data object. + * @return {Interpreter.MyObject} Prototype object, null if none. + */ + Interpreter.prototype.getPrototype = function (value) { + switch (typeof value) { + case 'number': + return this.NUMBER.properties['prototype']; + case 'boolean': + return this.BOOLEAN.properties['prototype']; + case 'string': + return this.STRING.properties['prototype']; + } + if (value) { + return value.proto; } - // The polyfill guarantees no inheritance and no getter functions. - // Therefore the descriptor properties map is the native object needed. - thisInterpreter.setProperty(obj, prop, ReferenceError, descriptor.properties); - return obj; + return null; }; - this.setProperty(this.OBJECT, 'defineProperty', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - this.polyfills_.push( - // Flatten the descriptor to remove any inheritance or getter functions. - "(function() {", "var defineProperty_ = Object.defineProperty;", "Object.defineProperty = function(obj, prop, d1) {", "var d2 = {};", "if ('configurable' in d1) d2.configurable = d1.configurable;", "if ('enumerable' in d1) d2.enumerable = d1.enumerable;", "if ('writable' in d1) d2.writable = d1.writable;", "if ('value' in d1) d2.value = d1.value;", "if ('get' in d1) d2.get = d1.get;", "if ('set' in d1) d2.set = d1.set;", "return defineProperty_(obj, prop, d2);", "};", "})();", "Object.defineProperty(Object, 'defineProperties',", "{configurable: true, writable: true, value:", "function(obj, props) {", "var keys = Object.keys(props);", "for (var i = 0; i < keys.length; i++) {", "Object.defineProperty(obj, keys[i], props[keys[i]]);", "}", "return obj;", "}", "});", ""); - wrapper = function (obj, prop) { - if (!obj || !obj.isObject) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object.getOwnPropertyDescriptor called on non-object'); + ; + /** + * Fetch a property value from a data object. + * @param {Interpreter.MyValue} obj Data object. + * @param {Interpreter.MyValue} name Name of property. + * @return {Interpreter.MyValue} Property value (may be undefined). + */ + Interpreter.prototype.getProperty = function (obj, name) { + name = String(name); + if (obj === undefined || obj === null) { + this.throwException(this.TYPE_ERROR, "Cannot read property '" + name + "' of " + obj); } - prop = String(prop); - if (!(prop in obj.properties)) { - return undefined; + if (name === 'length') { + // Special cases for magic length property. + if (this.isa(obj, this.STRING)) { + return String(obj).length; + } + } + else if (name.charCodeAt(0) < 0x40) { + // Might have numbers in there? + // Special cases for string array indexing + if (this.isa(obj, this.STRING)) { + var n = Interpreter.legalArrayIndex(name); + if (!isNaN(n) && n < String(obj).length) { + return String(obj)[n]; + } + } + } + do { + if (obj.properties && name in obj.properties) { + var getter = obj.getter[name]; + if (getter) { + // Flag this function as being a getter and thus needing immediate + // execution (rather than being the value of the property). + getter.isGetter = true; + return getter; + } + return obj.properties[name]; + } + } while ((obj = this.getPrototype(obj))); + return undefined; + }; + ; + /** + * Does the named property exist on a data object. + * @param {Interpreter.MyValue} obj Data object. + * @param {Interpreter.MyValue} name Name of property. + * @return {boolean} True if property exists. + */ + Interpreter.prototype.hasProperty = function (obj, name) { + if (!obj.isObject) { + throw TypeError('Primitive data type has no properties'); } - var descriptor = Object.getOwnPropertyDescriptor(obj.properties, prop); - var getter = obj.getter[prop]; - var setter = obj.setter[prop]; - if (getter || setter) { - descriptor.get = getter; - descriptor.set = setter; - delete descriptor.value; - delete descriptor.writable; + name = String(name); + if (name === 'length' && this.isa(obj, this.STRING)) { + return true; } - var pseudoDescriptor = thisInterpreter.nativeToPseudo(descriptor); - if ('value' in descriptor) { - thisInterpreter.setProperty(pseudoDescriptor, 'value', descriptor.value); + if (this.isa(obj, this.STRING)) { + var n = Interpreter.legalArrayIndex(name); + if (!isNaN(n) && n < String(obj).length) { + return true; + } } - return pseudoDescriptor; + do { + if (obj.properties && name in obj.properties) { + return true; + } + } while ((obj = this.getPrototype(obj))); + return false; }; - this.setProperty(this.OBJECT, 'getOwnPropertyDescriptor', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - wrapper = function (obj) { - throwIfNullUndefined(obj); - return thisInterpreter.getPrototype(obj); + ; + /** + * Set a property value on a data object. + * @param {!Interpreter.MyObject} obj Data object. + * @param {Interpreter.MyValue} name Name of property. + * @param {Interpreter.MyValue|ReferenceError} value New property value. + * Use ReferenceError if value is handled by descriptor instead. + * @param {Object=} opt_descriptor Optional descriptor object. + * @return {!Interpreter.MyObject|undefined} Returns a setter function if one + * needs to be called, otherwise undefined. + */ + Interpreter.prototype.setProperty = function (obj, name, value, opt_descriptor) { + name = String(name); + if (obj === undefined || obj === null) { + this.throwException(this.TYPE_ERROR, "Cannot set property '" + name + "' of " + obj); + } + if (opt_descriptor && ('get' in opt_descriptor || 'set' in opt_descriptor) && + ('value' in opt_descriptor || 'writable' in opt_descriptor)) { + this.throwException(this.TYPE_ERROR, 'Invalid property descriptor. ' + + 'Cannot both specify accessors and a value or writable attribute'); + } + var strict = !this.stateStack || this.getScope().strict; + if (!obj.isObject) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Can't create property '" + name + + "' on '" + obj + "'"); + } + return; + } + if (this.isa(obj, this.STRING)) { + var n = Interpreter.legalArrayIndex(name); + if (name === 'length' || (!isNaN(n) && n < String(obj).length)) { + // Can't set length or letters on String objects. + if (strict) { + this.throwException(this.TYPE_ERROR, "Cannot assign to read only " + + "property '" + name + "' of String '" + obj.data + "'"); + } + return; + } + } + if (obj["class"] === 'Array') { + // Arrays have a magic length variable that is bound to the elements. + var length = obj.properties.length; + var i; + if (name === 'length') { + // Delete elements if length is smaller. + value = Interpreter.legalArrayLength(value); + if (isNaN(value)) { + this.throwException(this.RANGE_ERROR, 'Invalid array length'); + } + if (value < length) { + for (i in obj.properties) { + i = Interpreter.legalArrayIndex(i); + if (!isNaN(i) && value <= i) { + delete obj.properties[i]; + } + } + } + } + else if (!isNaN(i = Interpreter.legalArrayIndex(name))) { + // Increase length if this index is larger. + obj.properties.length = Math.max(length, i + 1); + } + } + if (obj.preventExtensions && !(name in obj.properties)) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Can't add property '" + name + + "', object is not extensible"); + } + return; + } + if (opt_descriptor) { + // Define the property. + if ('get' in opt_descriptor) { + if (opt_descriptor.get) { + obj.getter[name] = opt_descriptor.get; + } + else { + delete obj.getter[name]; + } + } + if ('set' in opt_descriptor) { + if (opt_descriptor.set) { + obj.setter[name] = opt_descriptor.set; + } + else { + delete obj.setter[name]; + } + } + var descriptor = {}; + if ('configurable' in opt_descriptor) { + descriptor.configurable = opt_descriptor.configurable; + } + if ('enumerable' in opt_descriptor) { + descriptor.enumerable = opt_descriptor.enumerable; + } + if ('writable' in opt_descriptor) { + descriptor.writable = opt_descriptor.writable; + delete obj.getter[name]; + delete obj.setter[name]; + } + if ('value' in opt_descriptor) { + descriptor.value = opt_descriptor.value; + delete obj.getter[name]; + delete obj.setter[name]; + } + else if (value !== ReferenceError) { + descriptor.value = value; + delete obj.getter[name]; + delete obj.setter[name]; + } + try { + Object.defineProperty(obj.properties, name, descriptor); + } + catch (e) { + this.throwException(this.TYPE_ERROR, 'Cannot redefine property: ' + name); + } + } + else { + // Set the property. + if (value === ReferenceError) { + throw ReferenceError('Value not specified.'); + } + // Determine the parent (possibly self) where the property is defined. + var defObj = obj; + while (!(name in defObj.properties)) { + defObj = this.getPrototype(defObj); + if (!defObj) { + // This is a new property. + defObj = obj; + break; + } + } + if (defObj.setter && defObj.setter[name]) { + return defObj.setter[name]; + } + if (defObj.getter && defObj.getter[name]) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Cannot set property '" + name + + "' of object '" + obj + "' which only has a getter"); + } + } + else { + // No setter, simple assignment. + try { + obj.properties[name] = value; + } + catch (e) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Cannot assign to read only " + + "property '" + name + "' of object '" + obj + "'"); + } + } + } + } }; - this.setProperty(this.OBJECT, 'getPrototypeOf', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - wrapper = function (obj) { - return Boolean(obj) && !obj.preventExtensions; + ; + /** + * Convenience method for adding a native function as a non-enumerable property + * onto an object's prototype. + * @param {!Interpreter.MyObject} obj Data object. + * @param {Interpreter.MyValue} name Name of property. + * @param {!Function} wrapper Function object. + */ + Interpreter.prototype.setNativeFunctionPrototype = function (obj, name, wrapper) { + this.setProperty(obj.properties['prototype'], name, this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); }; - this.setProperty(this.OBJECT, 'isExtensible', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - wrapper = function (obj) { - if (obj && obj.isObject) { - obj.preventExtensions = true; + ; + /** + * Returns the current scope from the stateStack. + * @return {!Interpreter.MyObject} Current scope dictionary. + */ + Interpreter.prototype.getScope = function () { + var scope = this.stateStack[this.stateStack.length - 1].scope; + if (!scope) { + throw Error('No scope found.'); } - return obj; + return scope; }; - this.setProperty(this.OBJECT, 'preventExtensions', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - // Instance methods on Object. - this.setNativeFunctionPrototype(this.OBJECT, 'toString', Interpreter.MyObject.prototype.toString); - this.setNativeFunctionPrototype(this.OBJECT, 'toLocaleString', Interpreter.MyObject.prototype.toString); - this.setNativeFunctionPrototype(this.OBJECT, 'valueOf', Interpreter.MyObject.prototype.valueOf); - wrapper = function (prop) { - throwIfNullUndefined(this); - if (!this.isObject) { - return this.hasOwnProperty(prop); - } - return String(prop) in this.properties; - }; - this.setNativeFunctionPrototype(this.OBJECT, 'hasOwnProperty', wrapper); - wrapper = function (prop) { - throwIfNullUndefined(this); - return Object.prototype.propertyIsEnumerable.call(this.properties, prop); - }; - this.setNativeFunctionPrototype(this.OBJECT, 'propertyIsEnumerable', wrapper); - wrapper = function (obj) { - while (true) { - // Note, circular loops shouldn't be possible. - obj = thisInterpreter.getPrototype(obj); - if (!obj) { - // No parent; reached the top. - return false; + ; + /** + * Create a new scope dictionary. + * @param {!Object} node AST node defining the scope container + * (e.g. a function). + * @param {Interpreter.MyObject} parentScope Scope to link to. + * @return {!Interpreter.MyObject} New scope. + */ + Interpreter.prototype.createScope = function (node, parentScope) { + var scope = this.createObjectProto(null); + scope.parentScope = parentScope; + if (!parentScope) { + this.initGlobalScope(scope); + } + this.populateScope_(node, scope); + // Determine if this scope starts with 'use strict'. + scope.strict = false; + if (parentScope && parentScope.strict) { + scope.strict = true; + } + else { + var firstNode = node['body'] && node['body'][0]; + if (firstNode && firstNode.expression && + firstNode.expression['type'] === 'Literal' && + firstNode.expression.value === 'use strict') { + scope.strict = true; } - if (obj === this) { - return true; + } + return scope; + }; + ; + /** + * Create a new special scope dictionary. Similar to createScope(), but + * doesn't assume that the scope is for a function body. + * This is used for 'catch' clauses and 'with' statements. + * @param {!Interpreter.MyObject} parentScope Scope to link to. + * @param {Interpreter.MyObject=} opt_scope Optional object to transform into + * scope. + * @return {!Interpreter.MyObject} New scope. + */ + Interpreter.prototype.createSpecialScope = function (parentScope, opt_scope) { + if (!parentScope) { + throw Error('parentScope required'); + } + var scope = opt_scope || this.createObjectProto(null); + scope.parentScope = parentScope; + scope.strict = parentScope.strict; + return scope; + }; + ; + /** + * Retrieves a value from the scope chain. + * @param {string} name Name of variable. + * @return {Interpreter.MyValue} Any value. + * May be flagged as being a getter and thus needing immediate execution + * (rather than being the value of the property). + */ + Interpreter.prototype.getValueFromScope = function (name) { + var scope = this.getScope(); + while (scope && scope !== this.global) { + if (name in scope.properties) { + return scope.properties[name]; + } + scope = scope.parentScope; + } + // The root scope is also an object which has inherited properties and + // could also have getters. + if (scope === this.global && this.hasProperty(scope, name)) { + return this.getProperty(scope, name); + } + // Typeof operator is unique: it can safely look at non-defined variables. + var prevNode = this.stateStack[this.stateStack.length - 1].node; + if (prevNode['type'] === 'UnaryExpression' && + prevNode['operator'] === 'typeof') { + return undefined; + } + this.throwException(this.REFERENCE_ERROR, name + ' is not defined'); + }; + ; + /** + * Sets a value to the current scope. + * @param {string} name Name of variable. + * @param {Interpreter.MyValue} value Value. + * @return {!Interpreter.MyObject|undefined} Returns a setter function if one + * needs to be called, otherwise undefined. + */ + Interpreter.prototype.setValueToScope = function (name, value) { + var scope = this.getScope(); + var strict = scope.strict; + while (scope && scope !== this.global) { + if (name in scope.properties) { + scope.properties[name] = value; + return undefined; + } + scope = scope.parentScope; + } + // The root scope is also an object which has readonly properties and + // could also have setters. + if (scope === this.global && (!strict || this.hasProperty(scope, name))) { + return this.setProperty(scope, name, value); + } + this.throwException(this.REFERENCE_ERROR, name + ' is not defined'); + }; + ; + /** + * Create a new scope for the given node. + * @param {!Object} node AST node (program or function). + * @param {!Interpreter.MyObject} scope Scope dictionary to populate. + * @private + */ + Interpreter.prototype.populateScope_ = function (node, scope) { + if (node['type'] === 'VariableDeclaration') { + for (var i = 0; i < node['declarations'].length; i++) { + this.setProperty(scope, node['declarations'][i]['id']['name'], undefined, Interpreter.VARIABLE_DESCRIPTOR); } } - }; - this.setNativeFunctionPrototype(this.OBJECT, 'isPrototypeOf', wrapper); - }; - ; - /** - * Initialize the Array class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initArray = function (scope) { - var thisInterpreter = this; - var getInt = function (obj, def) { - // Return an integer, or the default. - var n = obj ? Math.floor(obj) : def; - if (isNaN(n)) { - n = def; - } - return n; - }; - var wrapper; - // Array constructor. - wrapper = function (var_args) { - if (thisInterpreter.calledWithNew()) { - // Called as new Array(). - var newArray = this; + else if (node['type'] === 'FunctionDeclaration') { + this.setProperty(scope, node['id']['name'], this.createFunction(node, scope), Interpreter.VARIABLE_DESCRIPTOR); + return; // Do not recurse into function. } - else { - // Called as Array(). - var newArray = thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO); + else if (node['type'] === 'FunctionExpression') { + return; // Do not recurse into function. } - var first = arguments[0]; - if (arguments.length === 1 && typeof first === 'number') { - if (isNaN(Interpreter.legalArrayLength(first))) { - thisInterpreter.throwException(thisInterpreter.RANGE_ERROR, 'Invalid array length'); - } - newArray.properties.length = first; + else if (node['type'] === 'ExpressionStatement') { + return; // Expressions can't contain variable/function declarations. } - else { - for (var i = 0; i < arguments.length; i++) { - newArray.properties[i] = arguments[i]; - } - newArray.properties.length = i; - } - return newArray; - }; - this.ARRAY = this.createNativeFunction(wrapper, true); - this.ARRAY_PROTO = this.ARRAY.properties['prototype']; - this.setProperty(scope, 'Array', this.ARRAY); - // Static methods on Array. - wrapper = function (obj) { - return obj && obj["class"] === 'Array'; - }; - this.setProperty(this.ARRAY, 'isArray', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - // Instance methods on Array. - wrapper = function () { - return Array.prototype.pop.call(this.properties); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'pop', wrapper); - wrapper = function (var_args) { - return Array.prototype.push.apply(this.properties, arguments); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'push', wrapper); - wrapper = function () { - return Array.prototype.shift.call(this.properties); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'shift', wrapper); - wrapper = function (var_args) { - return Array.prototype.unshift.apply(this.properties, arguments); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'unshift', wrapper); - wrapper = function () { - Array.prototype.reverse.call(this.properties); - return this; - }; - this.setNativeFunctionPrototype(this.ARRAY, 'reverse', wrapper); - wrapper = function (index, howmany /*, var_args*/) { - var list = Array.prototype.splice.apply(this.properties, arguments); - return thisInterpreter.nativeToPseudo(list); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'splice', wrapper); - wrapper = function (opt_begin, opt_end) { - var list = Array.prototype.slice.call(this.properties, opt_begin, opt_end); - return thisInterpreter.nativeToPseudo(list); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'slice', wrapper); - wrapper = function (opt_separator) { - return Array.prototype.join.call(this.properties, opt_separator); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'join', wrapper); - wrapper = function (var_args) { - var list = []; - var length = 0; - // Start by copying the current array. - var iLength = thisInterpreter.getProperty(this, 'length'); - for (var i = 0; i < iLength; i++) { - if (thisInterpreter.hasProperty(this, i)) { - var element = thisInterpreter.getProperty(this, i); - list[length] = element; - } - length++; - } - // Loop through all arguments and copy them in. - for (var i = 0; i < arguments.length; i++) { - var value = arguments[i]; - if (thisInterpreter.isa(value, thisInterpreter.ARRAY)) { - var jLength = thisInterpreter.getProperty(value, 'length'); - for (var j = 0; j < jLength; j++) { - if (thisInterpreter.hasProperty(value, j)) { - list[length] = thisInterpreter.getProperty(value, j); + var nodeClass = node['constructor']; + for (var name in node) { + var prop = node[name]; + if (prop && typeof prop === 'object') { + if (Array.isArray(prop)) { + for (var i = 0; i < prop.length; i++) { + if (prop[i] && prop[i].constructor === nodeClass) { + this.populateScope_(prop[i], scope); + } + } + } + else { + if (prop.constructor === nodeClass) { + this.populateScope_(prop, scope); } - length++; } } - else { - list[length] = value; - } - } - return thisInterpreter.nativeToPseudo(list); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'concat', wrapper); - wrapper = function (searchElement, opt_fromIndex) { - return Array.prototype.indexOf.apply(this.properties, arguments); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'indexOf', wrapper); - wrapper = function (searchElement, opt_fromIndex) { - return Array.prototype.lastIndexOf.apply(this.properties, arguments); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'lastIndexOf', wrapper); - wrapper = function () { - Array.prototype.sort.call(this.properties); - return this; - }; - this.setNativeFunctionPrototype(this.ARRAY, 'sort', wrapper); - this.polyfills_.push( - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/every - "Object.defineProperty(Array.prototype, 'every',", "{configurable: true, writable: true, value:", "function(callbackfn, thisArg) {", "if (!this || typeof callbackfn !== 'function') throw TypeError();", "var T, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "k = 0;", "while (k < len) {", "if (k in O && !callbackfn.call(T, O[k], k, O)) return false;", "k++;", "}", "return true;", "}", "});", - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/filter - "Object.defineProperty(Array.prototype, 'filter',", "{configurable: true, writable: true, value:", "function(fun/*, thisArg*/) {", "if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();", "var t = Object(this);", "var len = t.length >>> 0;", "var res = [];", "var thisArg = arguments.length >= 2 ? arguments[1] : void 0;", "for (var i = 0; i < len; i++) {", "if (i in t) {", "var val = t[i];", "if (fun.call(thisArg, val, i, t)) res.push(val);", "}", "}", "return res;", "}", "});", - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach - "Object.defineProperty(Array.prototype, 'forEach',", "{configurable: true, writable: true, value:", "function(callback, thisArg) {", "if (!this || typeof callback !== 'function') throw TypeError();", "var T, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "k = 0;", "while (k < len) {", "if (k in O) callback.call(T, O[k], k, O);", "k++;", "}", "}", "});", - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map - "Object.defineProperty(Array.prototype, 'map',", "{configurable: true, writable: true, value:", "function(callback, thisArg) {", "if (!this || typeof callback !== 'function') new TypeError;", "var T, A, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "A = new Array(len);", "k = 0;", "while (k < len) {", "if (k in O) A[k] = callback.call(T, O[k], k, O);", "k++;", "}", "return A;", "}", "});", - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce - "Object.defineProperty(Array.prototype, 'reduce',", "{configurable: true, writable: true, value:", "function(callback /*, initialValue*/) {", "if (!this || typeof callback !== 'function') throw TypeError();", "var t = Object(this), len = t.length >>> 0, k = 0, value;", "if (arguments.length === 2) {", "value = arguments[1];", "} else {", "while (k < len && !(k in t)) k++;", "if (k >= len) {", "throw TypeError('Reduce of empty array with no initial value');", "}", "value = t[k++];", "}", "for (; k < len; k++) {", "if (k in t) value = callback(value, t[k], k, t);", "}", "return value;", "}", "});", - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight - "Object.defineProperty(Array.prototype, 'reduceRight',", "{configurable: true, writable: true, value:", "function(callback /*, initialValue*/) {", "if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();", "var t = Object(this), len = t.length >>> 0, k = len - 1, value;", "if (arguments.length >= 2) {", "value = arguments[1];", "} else {", "while (k >= 0 && !(k in t)) k--;", "if (k < 0) {", "throw TypeError('Reduce of empty array with no initial value');", "}", "value = t[k--];", "}", "for (; k >= 0; k--) {", "if (k in t) value = callback(value, t[k], k, t);", "}", "return value;", "}", "});", - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/some - "Object.defineProperty(Array.prototype, 'some',", "{configurable: true, writable: true, value:", "function(fun/*, thisArg*/) {", "if (!this || typeof fun !== 'function') throw TypeError();", "var t = Object(this);", "var len = t.length >>> 0;", "var thisArg = arguments.length >= 2 ? arguments[1] : void 0;", "for (var i = 0; i < len; i++) {", "if (i in t && fun.call(thisArg, t[i], i, t)) {", "return true;", "}", "}", "return false;", "}", "});", "(function() {", "var sort_ = Array.prototype.sort;", "Array.prototype.sort = function(opt_comp) {", - // Fast native sort. - "if (typeof opt_comp !== 'function') {", "return sort_.call(this);", "}", - // Slow bubble sort. - "for (var i = 0; i < this.length; i++) {", "var changes = 0;", "for (var j = 0; j < this.length - i - 1; j++) {", "if (opt_comp(this[j], this[j + 1]) > 0) {", "var swap = this[j];", "this[j] = this[j + 1];", "this[j + 1] = swap;", "changes++;", "}", "}", "if (!changes) break;", "}", "return this;", "};", "})();", "Object.defineProperty(Array.prototype, 'toLocaleString',", "{configurable: true, writable: true, value:", "function() {", "var out = [];", "for (var i = 0; i < this.length; i++) {", "out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();", "}", "return out.join(',');", "}", "});", ""); - }; - ; - /** - * Initialize the String class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initString = function (scope) { - var thisInterpreter = this; - var wrapper; - // String constructor. - wrapper = function (value) { - value = String(value); - if (thisInterpreter.calledWithNew()) { - // Called as new String(). - this.data = value; - return this; - } - else { - // Called as String(). - return value; } }; - this.STRING = this.createNativeFunction(wrapper, true); - this.setProperty(scope, 'String', this.STRING); - // Static methods on String. - this.setProperty(this.STRING, 'fromCharCode', this.createNativeFunction(String.fromCharCode, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - // Instance methods on String. - // Methods with exclusively primitive arguments. - var functions = ['trim', 'toLowerCase', 'toUpperCase', - 'toLocaleLowerCase', 'toLocaleUpperCase', 'charAt', 'charCodeAt', - 'substring', 'slice', 'substr', 'indexOf', 'lastIndexOf', 'concat']; - for (var i = 0; i < functions.length; i++) { - this.setNativeFunctionPrototype(this.STRING, functions[i], String.prototype[functions[i]]); - } - wrapper = function (compareString, locales, options) { - locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined; - options = options ? thisInterpreter.pseudoToNative(options) : undefined; - return String(this).localeCompare(compareString, locales, options); - }; - this.setNativeFunctionPrototype(this.STRING, 'localeCompare', wrapper); - wrapper = function (separator, limit) { - if (thisInterpreter.isa(separator, thisInterpreter.REGEXP)) { - separator = separator.data; - } - var jsList = String(this).split(separator, limit); - return thisInterpreter.nativeToPseudo(jsList); - }; - this.setNativeFunctionPrototype(this.STRING, 'split', wrapper); - wrapper = function (regexp) { - regexp = regexp ? regexp.data : undefined; - var match = String(this).match(regexp); - if (!match) { - return null; - } - return thisInterpreter.nativeToPseudo(match); - }; - this.setNativeFunctionPrototype(this.STRING, 'match', wrapper); - wrapper = function (regexp) { - regexp = regexp ? regexp.data : undefined; - return String(this).search(regexp); - }; - this.setNativeFunctionPrototype(this.STRING, 'search', wrapper); - wrapper = function (substr, newSubstr) { - // Support for function replacements is the responsibility of a polyfill. - return String(this).replace(substr.data || substr, newSubstr); - }; - this.setNativeFunctionPrototype(this.STRING, 'replace', wrapper); - // Add a polyfill to handle replace's second argument being a function. - this.polyfills_.push("(function() {", "var replace_ = String.prototype.replace;", "String.prototype.replace = function(substr, newSubstr) {", "if (typeof newSubstr !== 'function') {", - // string.replace(string|regexp, string) - "return replace_.call(this, substr, newSubstr);", "}", "var str = this;", "if (substr instanceof RegExp) {", // string.replace(regexp, function) - "var subs = [];", "var m = substr.exec(str);", "while (m) {", "m.push(m.index, str);", "var inject = newSubstr.apply(null, m);", "subs.push([m.index, m[0].length, inject]);", "m = substr.global ? substr.exec(str) : null;", "}", "for (var i = subs.length - 1; i >= 0; i--) {", "str = str.substring(0, subs[i][0]) + subs[i][2] + " + - "str.substring(subs[i][0] + subs[i][1]);", "}", "} else {", // string.replace(string, function) - "var i = str.indexOf(substr);", "if (i !== -1) {", "var inject = newSubstr(str.substr(i, substr.length), i, str);", "str = str.substring(0, i) + inject + " + - "str.substring(i + substr.length);", "}", "}", "return str;", "};", "})();", ""); - }; - ; - /** - * Initialize the Boolean class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initBoolean = function (scope) { - var thisInterpreter = this; - var wrapper; - // Boolean constructor. - wrapper = function (value) { - value = Boolean(value); - if (thisInterpreter.calledWithNew()) { - // Called as new Boolean(). - this.data = value; - return this; + ; + /** + * Remove start and end values from AST, or set start and end values to a + * constant value. Used to remove highlighting from polyfills and to set + * highlighting in an eval to cover the entire eval expression. + * @param {!Object} node AST node. + * @param {number=} start Starting character of all nodes, or undefined. + * @param {number=} end Ending character of all nodes, or undefined. + * @private + */ + Interpreter.prototype.stripLocations_ = function (node, start, end) { + if (start) { + node['start'] = start; } else { - // Called as Boolean(). - return value; + delete node['start']; } - }; - this.BOOLEAN = this.createNativeFunction(wrapper, true); - this.setProperty(scope, 'Boolean', this.BOOLEAN); - }; - ; - /** - * Initialize the Number class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initNumber = function (scope) { - var thisInterpreter = this; - var wrapper; - // Number constructor. - wrapper = function (value) { - value = Number(value); - if (thisInterpreter.calledWithNew()) { - // Called as new Number(). - this.data = value; - return this; + if (end) { + node['end'] = end; } else { - // Called as Number(). - return value; + delete node['end']; + } + for (var name in node) { + if (node.hasOwnProperty(name)) { + var prop = node[name]; + if (prop && typeof prop === 'object') { + this.stripLocations_(prop, start, end); + } + } } }; - this.NUMBER = this.createNativeFunction(wrapper, true); - this.setProperty(scope, 'Number', this.NUMBER); - var numConsts = ['MAX_VALUE', 'MIN_VALUE', 'NaN', 'NEGATIVE_INFINITY', - 'POSITIVE_INFINITY']; - for (var i = 0; i < numConsts.length; i++) { - this.setProperty(this.NUMBER, numConsts[i], Number[numConsts[i]], Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - } - // Instance methods on Number. - wrapper = function (fractionDigits) { - try { - return Number(this).toExponential(fractionDigits); + ; + /** + * Is the current state directly being called with as a construction with 'new'. + * @return {boolean} True if 'new foo()', false if 'foo()'. + */ + Interpreter.prototype.calledWithNew = function () { + return this.stateStack[this.stateStack.length - 1].isConstructor; + }; + ; + /** + * Gets a value from the scope chain or from an object property. + * @param {!Array} ref Name of variable or object/propname tuple. + * @return {Interpreter.MyValue} Any value. + * May be flagged as being a getter and thus needing immediate execution + * (rather than being the value of the property). + */ + Interpreter.prototype.getValue = function (ref) { + if (ref[0] === Interpreter.SCOPE_REFERENCE) { + // A null/varname variable lookup. + return this.getValueFromScope(ref[1]); } - catch (e) { - // Throws if fractionDigits isn't within 0-20. - thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + else { + // An obj/prop components tuple (foo.bar). + return this.getProperty(ref[0], ref[1]); } }; - this.setNativeFunctionPrototype(this.NUMBER, 'toExponential', wrapper); - wrapper = function (digits) { - try { - return Number(this).toFixed(digits); + ; + /** + * Sets a value to the scope chain or to an object property. + * @param {!Array} ref Name of variable or object/propname tuple. + * @param {Interpreter.MyValue} value Value. + * @return {!Interpreter.MyObject|undefined} Returns a setter function if one + * needs to be called, otherwise undefined. + */ + Interpreter.prototype.setValue = function (ref, value) { + if (ref[0] === Interpreter.SCOPE_REFERENCE) { + // A null/varname variable lookup. + return this.setValueToScope(ref[1], value); } - catch (e) { - // Throws if digits isn't within 0-20. - thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + else { + // An obj/prop components tuple (foo.bar). + return this.setProperty(ref[0], ref[1], value); } }; - this.setNativeFunctionPrototype(this.NUMBER, 'toFixed', wrapper); - wrapper = function (precision) { - try { - return Number(this).toPrecision(precision); + ; + /** + * Throw an exception in the interpreter that can be handled by an + * interpreter try/catch statement. If unhandled, a real exception will + * be thrown. Can be called with either an error class and a message, or + * with an actual object to be thrown. + * @param {!Interpreter.MyObject} errorClass Type of error (if message is + * provided) or the value to throw (if no message). + * @param {string=} opt_message Message being thrown. + */ + Interpreter.prototype.throwException = function (errorClass, opt_message) { + if (opt_message === undefined) { + var error = errorClass; // This is a value to throw, not an error class. } - catch (e) { - // Throws if precision isn't within range (depends on implementation). - thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + else { + var error = this.createObject(errorClass); + this.setProperty(error, 'message', opt_message, Interpreter.NONENUMERABLE_DESCRIPTOR); } + this.executeException(error); + // Abort anything related to the current step. + throw Interpreter.STEP_ERROR; }; - this.setNativeFunctionPrototype(this.NUMBER, 'toPrecision', wrapper); - wrapper = function (radix) { - try { - return Number(this).toString(radix); + ; + /** + * Throw an exception in the interpreter that can be handled by a + * interpreter try/catch statement. If unhandled, a real exception will + * be thrown. + * @param {!Interpreter.MyObject} error Error object to execute. + */ + Interpreter.prototype.executeException = function (error) { + // Search for a try statement. + do { + this.stateStack.pop(); + var state = this.stateStack[this.stateStack.length - 1]; + if (state.node['type'] === 'TryStatement') { + state.throwValue = error; + return; + } + } while (state && state.node['type'] !== 'Program'); + // Throw a real error. + var realError; + if (this.isa(error, this.ERROR)) { + var errorTable = { + 'EvalError': EvalError, + 'RangeError': RangeError, + 'ReferenceError': ReferenceError, + 'SyntaxError': SyntaxError, + 'TypeError': TypeError, + 'URIError': URIError + }; + var name = this.getProperty(error, 'name').toString(); + var message = this.getProperty(error, 'message').valueOf(); + var type = errorTable[name] || Error; + realError = type(message); } - catch (e) { - // Throws if radix isn't within 2-36. - thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + else { + realError = error.toString(); } + throw realError; }; - this.setNativeFunctionPrototype(this.NUMBER, 'toString', wrapper); - wrapper = function (locales, options) { - locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined; - options = options ? thisInterpreter.pseudoToNative(options) : undefined; - return Number(this).toLocaleString(locales, options); + ; + /** + * Create a call to a getter function. + * @param {!Interpreter.MyObject} func Function to execute. + * @param {!Interpreter.MyObject|!Array} left + * Name of variable or object/propname tuple. + * @private + */ + Interpreter.prototype.createGetter_ = function (func, left) { + // Normally 'this' will be specified as the object component (o.x). + // Sometimes 'this' is explicitly provided (o). + var funcThis = Array.isArray(left) ? left[0] : left; + var node = new this.nodeConstructor(); + node['type'] = 'CallExpression'; + var state = new Interpreter.MyState(node, this.stateStack[this.stateStack.length - 1].scope); + state.doneCallee_ = true; + state.funcThis_ = funcThis; + state.func_ = func; + state.doneArgs_ = true; + state.arguments_ = []; + return state; }; - this.setNativeFunctionPrototype(this.NUMBER, 'toLocaleString', wrapper); - }; - ; - /** - * Initialize the Date class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initDate = function (scope) { - var thisInterpreter = this; - var wrapper; - // Date constructor. - wrapper = function (value, var_args) { - if (!thisInterpreter.calledWithNew()) { - // Called as Date(). - // Calling Date() as a function returns a string, no arguments are heeded. - return Date(); - } - // Called as new Date(). - var args = [null].concat(Array.from(arguments)); - this.data = new (Function.prototype.bind.apply(Date, args)); - return this; - }; - this.DATE = this.createNativeFunction(wrapper, true); - this.setProperty(scope, 'Date', this.DATE); - // Static methods on Date. - this.setProperty(this.DATE, 'now', this.createNativeFunction(Date.now, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - this.setProperty(this.DATE, 'parse', this.createNativeFunction(Date.parse, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - this.setProperty(this.DATE, 'UTC', this.createNativeFunction(Date.UTC, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - // Instance methods on Date. - var functions = ['getDate', 'getDay', 'getFullYear', 'getHours', - 'getMilliseconds', 'getMinutes', 'getMonth', 'getSeconds', 'getTime', - 'getTimezoneOffset', 'getUTCDate', 'getUTCDay', 'getUTCFullYear', - 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', - 'getUTCSeconds', 'getYear', - 'setDate', 'setFullYear', 'setHours', 'setMilliseconds', - 'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', - 'setUTCFullYear', 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', - 'setUTCMonth', 'setUTCSeconds', 'setYear', - 'toDateString', 'toISOString', 'toJSON', 'toGMTString', - 'toLocaleDateString', 'toLocaleString', 'toLocaleTimeString', - 'toTimeString', 'toUTCString']; - for (var i = 0; i < functions.length; i++) { - wrapper = (function (nativeFunc) { - return function (var_args) { - var args = []; - for (var i = 0; i < arguments.length; i++) { - args[i] = thisInterpreter.pseudoToNative(arguments[i]); - } - return this.data[nativeFunc].apply(this.data, args); - }; - })(functions[i]); - this.setNativeFunctionPrototype(this.DATE, functions[i], wrapper); - } - }; - ; - /** - * Initialize Regular Expression object. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initRegExp = function (scope) { - var thisInterpreter = this; - var wrapper; - // RegExp constructor. - wrapper = function (pattern, flags) { - if (thisInterpreter.calledWithNew()) { - // Called as new RegExp(). - var rgx = this; + ; + /** + * Create a call to a setter function. + * @param {!Interpreter.MyObject} func Function to execute. + * @param {!Interpreter.MyObject|!Array} left + * Name of variable or object/propname tuple. + * @param {Interpreter.MyValue} value Value to set. + * @private + */ + Interpreter.prototype.createSetter_ = function (func, left, value) { + // Normally 'this' will be specified as the object component (o.x). + // Sometimes 'this' is implicitly the global object (x). + var funcThis = Array.isArray(left) ? left[0] : this.global; + var node = new this.nodeConstructor(); + node['type'] = 'CallExpression'; + var state = new Interpreter.MyState(node, this.stateStack[this.stateStack.length - 1].scope); + state.doneCallee_ = true; + state.funcThis_ = funcThis; + state.func_ = func; + state.doneArgs_ = true; + state.arguments_ = [value]; + return state; + }; + ; + /////////////////////////////////////////////////////////////////////////////// + // Functions to handle each node type. + /////////////////////////////////////////////////////////////////////////////// + Interpreter.prototype.stepArrayExpression = function (stack, state, node) { + var elements = node['elements']; + var n = state.n_ || 0; + if (!state.array_) { + state.array_ = this.createObjectProto(this.ARRAY_PROTO); + state.array_.properties.length = elements.length; } else { - // Called as RegExp(). - var rgx = thisInterpreter.createObjectProto(thisInterpreter.REGEXP_PROTO); - } - pattern = pattern ? pattern.toString() : ''; - flags = flags ? flags.toString() : ''; - thisInterpreter.populateRegExp(rgx, new RegExp(pattern, flags)); - return rgx; - }; - this.REGEXP = this.createNativeFunction(wrapper, true); - this.REGEXP_PROTO = this.REGEXP.properties['prototype']; - this.setProperty(scope, 'RegExp', this.REGEXP); - this.setProperty(this.REGEXP.properties['prototype'], 'global', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - this.setProperty(this.REGEXP.properties['prototype'], 'ignoreCase', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - this.setProperty(this.REGEXP.properties['prototype'], 'multiline', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - this.setProperty(this.REGEXP.properties['prototype'], 'source', '(?:)', Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - wrapper = function (str) { - return this.data.test(str); - }; - this.setNativeFunctionPrototype(this.REGEXP, 'test', wrapper); - wrapper = function (str) { - str = str.toString(); - // Get lastIndex from wrapped regex, since this is settable. - this.data.lastIndex = - Number(thisInterpreter.getProperty(this, 'lastIndex')); - var match = this.data.exec(str); - thisInterpreter.setProperty(this, 'lastIndex', this.data.lastIndex); - if (match) { - var result = thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO); - for (var i = 0; i < match.length; i++) { - thisInterpreter.setProperty(result, i, match[i]); - } - // match has additional properties. - thisInterpreter.setProperty(result, 'index', match.index); - thisInterpreter.setProperty(result, 'input', match.input); - return result; + this.setProperty(state.array_, n, state.value); + n++; + } + while (n < elements.length) { + // Skip missing elements - they're not defined, not undefined. + if (elements[n]) { + state.n_ = n; + return new Interpreter.MyState(elements[n], state.scope); + } + n++; } - return null; + stack.pop(); + stack[stack.length - 1].value = state.array_; }; - this.setNativeFunctionPrototype(this.REGEXP, 'exec', wrapper); - }; - ; - /** - * Initialize the Error class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initError = function (scope) { - var thisInterpreter = this; - // Error constructor. - this.ERROR = this.createNativeFunction(function (opt_message) { - if (thisInterpreter.calledWithNew()) { - // Called as new Error(). - var newError = this; + ; + Interpreter.prototype.stepAssignmentExpression = function (stack, state, node) { + if (!state.doneLeft_) { + state.doneLeft_ = true; + var nextState = new Interpreter.MyState(node['left'], state.scope); + nextState.components = true; + return nextState; } - else { - // Called as Error(). - var newError = thisInterpreter.createObject(thisInterpreter.ERROR); - } - if (opt_message) { - thisInterpreter.setProperty(newError, 'message', String(opt_message), Interpreter.NONENUMERABLE_DESCRIPTOR); - } - return newError; - }, true); - this.setProperty(scope, 'Error', this.ERROR); - this.setProperty(this.ERROR.properties['prototype'], 'message', '', Interpreter.NONENUMERABLE_DESCRIPTOR); - this.setProperty(this.ERROR.properties['prototype'], 'name', 'Error', Interpreter.NONENUMERABLE_DESCRIPTOR); - var createErrorSubclass = function (name) { - var constructor = thisInterpreter.createNativeFunction(function (opt_message) { - if (thisInterpreter.calledWithNew()) { - // Called as new XyzError(). - var newError = this; + if (!state.doneRight_) { + if (!state.leftReference_) { + state.leftReference_ = state.value; } - else { - // Called as XyzError(). - var newError = thisInterpreter.createObject(constructor); + if (state.doneGetter_) { + state.leftValue_ = state.value; } - if (opt_message) { - thisInterpreter.setProperty(newError, 'message', String(opt_message), Interpreter.NONENUMERABLE_DESCRIPTOR); + if (!state.doneGetter_ && node['operator'] !== '=') { + var leftValue = this.getValue(state.leftReference_); + state.leftValue_ = leftValue; + if (leftValue && typeof leftValue === 'object' && leftValue.isGetter) { + // Clear the getter flag and call the getter function. + leftValue.isGetter = false; + state.doneGetter_ = true; + var func = (leftValue); + return this.createGetter_(func, state.leftReference_); + } } - return newError; - }, true); - thisInterpreter.setProperty(constructor, 'prototype', thisInterpreter.createObject(thisInterpreter.ERROR)); - thisInterpreter.setProperty(constructor.properties['prototype'], 'name', name, Interpreter.NONENUMERABLE_DESCRIPTOR); - thisInterpreter.setProperty(scope, name, constructor); - return constructor; - }; - this.EVAL_ERROR = createErrorSubclass('EvalError'); - this.RANGE_ERROR = createErrorSubclass('RangeError'); - this.REFERENCE_ERROR = createErrorSubclass('ReferenceError'); - this.SYNTAX_ERROR = createErrorSubclass('SyntaxError'); - this.TYPE_ERROR = createErrorSubclass('TypeError'); - this.URI_ERROR = createErrorSubclass('URIError'); - }; - ; - /** - * Initialize Math object. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initMath = function (scope) { - var thisInterpreter = this; - var myMath = this.createObjectProto(this.OBJECT_PROTO); - this.setProperty(scope, 'Math', myMath); - var mathConsts = ['E', 'LN2', 'LN10', 'LOG2E', 'LOG10E', 'PI', - 'SQRT1_2', 'SQRT2']; - for (var i = 0; i < mathConsts.length; i++) { - this.setProperty(myMath, mathConsts[i], Math[mathConsts[i]], Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - } - var numFunctions = ['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', - 'exp', 'floor', 'log', 'max', 'min', 'pow', 'random', - 'round', 'sin', 'sqrt', 'tan']; - for (var i = 0; i < numFunctions.length; i++) { - this.setProperty(myMath, numFunctions[i], this.createNativeFunction(Math[numFunctions[i]], false), Interpreter.NONENUMERABLE_DESCRIPTOR); - } - }; - ; - /** - * Initialize JSON object. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initJSON = function (scope) { - var thisInterpreter = this; - var myJSON = thisInterpreter.createObjectProto(this.OBJECT_PROTO); - this.setProperty(scope, 'JSON', myJSON); - var wrapper = function (text) { - try { - var nativeObj = JSON.parse(text.toString()); + state.doneRight_ = true; + return new Interpreter.MyState(node['right'], state.scope); } - catch (e) { - thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, e.message); + if (state.doneSetter_) { + // Return if setter function. + // Setter method on property has completed. + // Ignore its return value, and use the original set value instead. + stack.pop(); + stack[stack.length - 1].value = state.doneSetter_; + return; } - return thisInterpreter.nativeToPseudo(nativeObj); - }; - this.setProperty(myJSON, 'parse', this.createNativeFunction(wrapper, false)); - wrapper = function (value) { - var nativeObj = thisInterpreter.pseudoToNative(value); - try { - var str = JSON.stringify(nativeObj); + var value = state.leftValue_; + var rightValue = state.value; + switch (node['operator']) { + case '=': + value = rightValue; + break; + case '+=': + value += rightValue; + break; + case '-=': + value -= rightValue; + break; + case '*=': + value *= rightValue; + break; + case '/=': + value /= rightValue; + break; + case '%=': + value %= rightValue; + break; + case '<<=': + value <<= rightValue; + break; + case '>>=': + value >>= rightValue; + break; + case '>>>=': + value >>>= rightValue; + break; + case '&=': + value &= rightValue; + break; + case '^=': + value ^= rightValue; + break; + case '|=': + value |= rightValue; + break; + default: + throw SyntaxError('Unknown assignment expression: ' + node['operator']); } - catch (e) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, e.message); + var setter = this.setValue(state.leftReference_, value); + if (setter) { + state.doneSetter_ = value; + return this.createSetter_(setter, state.leftReference_, value); } - return str; + // Return if no setter function. + stack.pop(); + stack[stack.length - 1].value = value; }; - this.setProperty(myJSON, 'stringify', this.createNativeFunction(wrapper, false)); - }; - ; - /** - * Is an object of a certain class? - * @param {Interpreter.Value} child Object to check. - * @param {Interpreter.MyObject} constructor Constructor of object. - * @return {boolean} True if object is the class or inherits from it. - * False otherwise. - */ - Interpreter.prototype.isa = function (child, constructor) { - if (child === null || child === undefined || !constructor) { - return false; - } - var proto = constructor.properties['prototype']; - if (child === proto) { - return true; - } - // The first step up the prototype chain is harder since the child might be - // a primitive value. Subsequent steps can just follow the .proto property. - child = this.getPrototype(child); - while (child) { - if (child === proto) { - return true; + ; + Interpreter.prototype.stepBinaryExpression = function (stack, state, node) { + if (!state.doneLeft_) { + state.doneLeft_ = true; + return new Interpreter.MyState(node['left'], state.scope); } - child = child.proto; - } - return false; - }; - ; - /** - * Is a value a legal integer for an array length? - * @param {Interpreter.Value} x Value to check. - * @return {number} Zero, or a positive integer if the value can be - * converted to such. NaN otherwise. - */ - Interpreter.legalArrayLength = function (x) { - var n = x >>> 0; - // Array length must be between 0 and 2^32-1 (inclusive). - return (n === Number(x)) ? n : NaN; - }; - ; - /** - * Is a value a legal integer for an array index? - * @param {Interpreter.Value} x Value to check. - * @return {number} Zero, or a positive integer if the value can be - * converted to such. NaN otherwise. - */ - Interpreter.legalArrayIndex = function (x) { - var n = x >>> 0; - // Array index cannot be 2^32-1, otherwise length would be 2^32. - // 0xffffffff is 2^32-1. - return (String(n) === String(x) && n !== 0xffffffff) ? n : NaN; - }; - ; - /** - * Create a new data object based on a constructor's prototype. - * @param {Interpreter.MyObject} constructor Parent constructor function, - * or null if scope object. - * @return {!Interpreter.MyObject} New data object. - */ - Interpreter.prototype.createObject = function (constructor) { - return this.createObjectProto(constructor && - constructor.properties['prototype']); - }; - ; - /** - * Create a new data object based on a prototype. - * @param {Interpreter.MyObject} proto Prototype object. - * @return {!Interpreter.MyObject} New data object. - */ - Interpreter.prototype.createObjectProto = function (proto) { - var obj = new Interpreter.MyObject(proto); - // Functions have prototype objects. - if (this.isa(obj, this.FUNCTION)) { - this.setProperty(obj, 'prototype', this.createObjectProto(this.OBJECT_PROTO || null)); - obj["class"] = 'Function'; - } - // Arrays have length. - if (this.isa(obj, this.ARRAY)) { - this.setProperty(obj, 'length', 0, { configurable: false, enumerable: false, writable: true }); - obj["class"] = 'Array'; - } - if (this.isa(obj, this.ERROR)) { - obj["class"] = 'Error'; - } - return obj; - }; - ; - /** - * Initialize a pseudo regular expression object based on a native regular - * expression object. - * @param {!Interpreter.MyObject} pseudoRegexp The existing object to set. - * @param {!RegExp} nativeRegexp The native regular expression. - */ - Interpreter.prototype.populateRegExp = function (pseudoRegexp, nativeRegexp) { - pseudoRegexp.data = nativeRegexp; - // lastIndex is settable, all others are read-only attributes - this.setProperty(pseudoRegexp, 'lastIndex', nativeRegexp.lastIndex, Interpreter.NONENUMERABLE_DESCRIPTOR); - this.setProperty(pseudoRegexp, 'source', nativeRegexp.source, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - this.setProperty(pseudoRegexp, 'global', nativeRegexp.global, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - this.setProperty(pseudoRegexp, 'ignoreCase', nativeRegexp.ignoreCase, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - this.setProperty(pseudoRegexp, 'multiline', nativeRegexp.multiline, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - }; - ; - /** - * Create a new function. - * @param {!Object} node AST node defining the function. - * @param {!Object} scope Parent scope. - * @return {!Interpreter.MyObject} New function. - */ - Interpreter.prototype.createFunction = function (node, scope) { - var func = this.createObjectProto(this.FUNCTION_PROTO); - func.parentScope = scope; - func.node = node; - this.setProperty(func, 'length', func.node['params'].length, Interpreter.READONLY_DESCRIPTOR); - return func; - }; - ; - /** - * Create a new native function. - * @param {!Function} nativeFunc JavaScript function. - * @param {boolean=} opt_constructor If true, the function's - * prototype will have its constructor property set to the function. - * If false, the function cannot be called as a constructor (e.g. escape). - * Defaults to undefined. - * @return {!Interpreter.MyObject} New function. - */ - Interpreter.prototype.createNativeFunction = function (nativeFunc, opt_constructor) { - var func = this.createObjectProto(this.FUNCTION_PROTO); - func.nativeFunc = nativeFunc; - nativeFunc.id = this.functionCounter_++; - this.setProperty(func, 'length', nativeFunc.length, Interpreter.READONLY_DESCRIPTOR); - if (opt_constructor) { - this.setProperty(func.properties['prototype'], 'constructor', func, Interpreter.NONENUMERABLE_DESCRIPTOR); - } - else if (opt_constructor === false) { - func.illegalConstructor = true; - this.setProperty(func, 'prototype', undefined); - } - return func; - }; - ; - /** - * Create a new native asynchronous function. - * @param {!Function} asyncFunc JavaScript function. - * @return {!Interpreter.MyObject} New function. - */ - Interpreter.prototype.createAsyncFunction = function (asyncFunc) { - var func = this.createObjectProto(this.FUNCTION_PROTO); - func.asyncFunc = asyncFunc; - asyncFunc.id = this.functionCounter_++; - this.setProperty(func, 'length', asyncFunc.length, Interpreter.READONLY_DESCRIPTOR); - return func; - }; - ; - /** - * Converts from a native JS object or value to a JS interpreter object. - * Can handle JSON-style values. - * @param {*} nativeObj The native JS object to be converted. - * @return {Interpreter.Value} The equivalent JS interpreter object. - */ - Interpreter.prototype.nativeToPseudo = function (nativeObj) { - if (typeof nativeObj === 'boolean' || - typeof nativeObj === 'number' || - typeof nativeObj === 'string' || - nativeObj === null || nativeObj === undefined) { - return nativeObj; - } - if (nativeObj instanceof RegExp) { - var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO); - this.populateRegExp(pseudoRegexp, nativeObj); - return pseudoRegexp; - } - if (nativeObj instanceof Function) { - var interpreter = this; - var wrapper = function () { - return interpreter.nativeToPseudo(nativeObj.apply(interpreter, Array.prototype.slice.call(arguments) - .map(function (i) { - return interpreter.pseudoToNative(i); - }))); - }; - return this.createNativeFunction(wrapper, undefined); - } - var pseudoObj; - if (Array.isArray(nativeObj)) { - pseudoObj = this.createObjectProto(this.ARRAY_PROTO); - for (var i = 0; i < nativeObj.length; i++) { - if (i in nativeObj) { - this.setProperty(pseudoObj, i, this.nativeToPseudo(nativeObj[i])); - } + if (!state.doneRight_) { + state.doneRight_ = true; + state.leftValue_ = state.value; + return new Interpreter.MyState(node['right'], state.scope); } - } - else { - pseudoObj = this.createObjectProto(this.OBJECT_PROTO); - for (var key in nativeObj) { - this.setProperty(pseudoObj, key, this.nativeToPseudo(nativeObj[key])); + stack.pop(); + var leftValue = state.leftValue_; + var rightValue = state.value; + var value; + switch (node['operator']) { + case '==': + value = leftValue == rightValue; + break; + case '!=': + value = leftValue != rightValue; + break; + case '===': + value = leftValue === rightValue; + break; + case '!==': + value = leftValue !== rightValue; + break; + case '>': + value = leftValue > rightValue; + break; + case '>=': + value = leftValue >= rightValue; + break; + case '<': + value = leftValue < rightValue; + break; + case '<=': + value = leftValue <= rightValue; + break; + case '+': + value = leftValue + rightValue; + break; + case '-': + value = leftValue - rightValue; + break; + case '*': + value = leftValue * rightValue; + break; + case '/': + value = leftValue / rightValue; + break; + case '%': + value = leftValue % rightValue; + break; + case '&': + value = leftValue & rightValue; + break; + case '|': + value = leftValue | rightValue; + break; + case '^': + value = leftValue ^ rightValue; + break; + case '<<': + value = leftValue << rightValue; + break; + case '>>': + value = leftValue >> rightValue; + break; + case '>>>': + value = leftValue >>> rightValue; + break; + case 'in': + if (!rightValue || !rightValue.isObject) { + this.throwException(this.TYPE_ERROR, "'in' expects an object, not '" + rightValue + "'"); + } + value = this.hasProperty(rightValue, leftValue); + break; + case 'instanceof': + if (!this.isa(rightValue, this.FUNCTION)) { + this.throwException(this.TYPE_ERROR, 'Right-hand side of instanceof is not an object'); + } + value = leftValue.isObject ? this.isa(leftValue, rightValue) : false; + break; + default: + throw SyntaxError('Unknown binary operator: ' + node['operator']); } - } - return pseudoObj; - }; - ; - /** - * Converts from a JS interpreter object to native JS object. - * Can handle JSON-style values, plus cycles. - * @param {Interpreter.Value} pseudoObj The JS interpreter object to be - * converted. - * @param {Object=} opt_cycles Cycle detection (used in recursive calls). - * @return {*} The equivalent native JS object or value. - */ - Interpreter.prototype.pseudoToNative = function (pseudoObj, opt_cycles) { - if (typeof pseudoObj === 'boolean' || - typeof pseudoObj === 'number' || - typeof pseudoObj === 'string' || - pseudoObj === null || pseudoObj === undefined) { - return pseudoObj; - } - if (this.isa(pseudoObj, this.REGEXP)) { - return pseudoObj.data; - } - var cycles = opt_cycles || { - pseudo: [], - native: [] + stack[stack.length - 1].value = value; }; - var i = cycles.pseudo.indexOf(pseudoObj); - if (i !== -1) { - return cycles.native[i]; - } - cycles.pseudo.push(pseudoObj); - var nativeObj; - if (this.isa(pseudoObj, this.ARRAY)) { - nativeObj = []; - cycles.native.push(nativeObj); - var length = this.getProperty(pseudoObj, 'length'); - for (var i = 0; i < length; i++) { - if (this.hasProperty(pseudoObj, i)) { - nativeObj[i] = - this.pseudoToNative(this.getProperty(pseudoObj, i), cycles); - } - } - } - else { - nativeObj = {}; - cycles.native.push(nativeObj); - var val; - for (var key in pseudoObj.properties) { - val = pseudoObj.properties[key]; - nativeObj[key] = this.pseudoToNative(val, cycles); - } - } - cycles.pseudo.pop(); - cycles.native.pop(); - return nativeObj; - }; - ; - /** - * Look up the prototype for this value. - * @param {Interpreter.Value} value Data object. - * @return {Interpreter.MyObject} Prototype object, null if none. - */ - Interpreter.prototype.getPrototype = function (value) { - switch (typeof value) { - case 'number': - return this.NUMBER.properties['prototype']; - case 'boolean': - return this.BOOLEAN.properties['prototype']; - case 'string': - return this.STRING.properties['prototype']; - } - if (value) { - return value.proto; - } - return null; - }; - ; - /** - * Fetch a property value from a data object. - * @param {Interpreter.Value} obj Data object. - * @param {Interpreter.Value} name Name of property. - * @return {Interpreter.Value} Property value (may be undefined). - */ - Interpreter.prototype.getProperty = function (obj, name) { - name = String(name); - if (obj === undefined || obj === null) { - this.throwException(this.TYPE_ERROR, "Cannot read property '" + name + "' of " + obj); - } - if (name === 'length') { - // Special cases for magic length property. - if (this.isa(obj, this.STRING)) { - return String(obj).length; + ; + Interpreter.prototype.stepBlockStatement = function (stack, state, node) { + var n = state.n_ || 0; + var expression = node['body'][n]; + if (expression) { + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); } - } - else if (name.charCodeAt(0) < 0x40) { - // Might have numbers in there? - // Special cases for string array indexing - if (this.isa(obj, this.STRING)) { - var n = Interpreter.legalArrayIndex(name); - if (!isNaN(n) && n < String(obj).length) { - return String(obj)[n]; + stack.pop(); + }; + ; + Interpreter.prototype.stepBreakStatement = function (stack, state, node) { + stack.pop(); + var label = null; + if (node['label']) { + label = node['label']['name']; + } + while (state && + state.node['type'] !== 'CallExpression' && + state.node['type'] !== 'NewExpression') { + if (label) { + if (state.labels && state.labels.indexOf(label) !== -1) { + return; + } + } + else if (state.isLoop || state.isSwitch) { + return; } + state = stack.pop(); } - } - do { - if (obj.properties && name in obj.properties) { - var getter = obj.getter[name]; - if (getter) { - // Flag this function as being a getter and thus needing immediate - // execution (rather than being the value of the property). - getter.isGetter = true; - return getter; - } - return obj.properties[name]; - } - } while ((obj = this.getPrototype(obj))); - return undefined; - }; - ; - /** - * Does the named property exist on a data object. - * @param {Interpreter.Value} obj Data object. - * @param {Interpreter.Value} name Name of property. - * @return {boolean} True if property exists. - */ - Interpreter.prototype.hasProperty = function (obj, name) { - if (!obj.isObject) { - throw TypeError('Primitive data type has no properties'); - } - name = String(name); - if (name === 'length' && this.isa(obj, this.STRING)) { - return true; - } - if (this.isa(obj, this.STRING)) { - var n = Interpreter.legalArrayIndex(name); - if (!isNaN(n) && n < String(obj).length) { - return true; + // Syntax error, do not allow this error to be trapped. + throw SyntaxError('Illegal break statement'); + }; + ; + Interpreter.prototype.stepCallExpression = function (stack, state, node) { + if (!state.doneCallee_) { + state.doneCallee_ = 1; + // Components needed to determine value of 'this'. + var nextState = new Interpreter.MyState(node['callee'], state.scope); + nextState.components = true; + return nextState; } - } - do { - if (obj.properties && name in obj.properties) { - return true; + if (state.doneCallee_ === 1) { + // Determine value of the function. + state.doneCallee_ = 2; + var func = state.value; + if (Array.isArray(func)) { + state.func_ = this.getValue(func); + if (func[0] !== Interpreter.SCOPE_REFERENCE) { + // Method function, 'this' is object (ignored if invoked as 'new'). + state.funcThis_ = func[0]; + } + func = state.func_; + if (func && typeof func === 'object' && func.isGetter) { + // Clear the getter flag and call the getter function. + func.isGetter = false; + state.doneCallee_ = 1; + return this.createGetter_(/** @type {!Interpreter.Object} */ (func), state.value); + } + } + else { + // Already evaluated function: (function(){...})(); + state.func_ = func; + } + state.arguments_ = []; + state.n_ = 0; } - } while ((obj = this.getPrototype(obj))); - return false; - }; - ; - /** - * Set a property value on a data object. - * @param {!Interpreter.MyObject} obj Data object. - * @param {Interpreter.Value} name Name of property. - * @param {Interpreter.Value|ReferenceError} value New property value. - * Use ReferenceError if value is handled by descriptor instead. - * @param {Object=} opt_descriptor Optional descriptor object. - * @return {!Interpreter.MyObject|undefined} Returns a setter function if one - * needs to be called, otherwise undefined. - */ - Interpreter.prototype.setProperty = function (obj, name, value, opt_descriptor) { - name = String(name); - if (obj === undefined || obj === null) { - this.throwException(this.TYPE_ERROR, "Cannot set property '" + name + "' of " + obj); - } - if (opt_descriptor && ('get' in opt_descriptor || 'set' in opt_descriptor) && - ('value' in opt_descriptor || 'writable' in opt_descriptor)) { - this.throwException(this.TYPE_ERROR, 'Invalid property descriptor. ' + - 'Cannot both specify accessors and a value or writable attribute'); - } - var strict = !this.stateStack || this.getScope().strict; - if (!obj.isObject) { - if (strict) { - this.throwException(this.TYPE_ERROR, "Can't create property '" + name + - "' on '" + obj + "'"); + var func = state.func_; + if (!state.doneArgs_) { + if (state.n_ !== 0) { + state.arguments_.push(state.value); + } + if (node['arguments'][state.n_]) { + return new Interpreter.MyState(node['arguments'][state.n_++], state.scope); + } + // Determine value of 'this' in function. + if (node['type'] === 'NewExpression') { + if (func.illegalConstructor) { + // Illegal: new escape(); + this.throwException(this.TYPE_ERROR, func + ' is not a constructor'); + } + // Constructor, 'this' is new object. + state.funcThis_ = this.createObject(func); + state.isConstructor = true; + } + else if (state.funcThis_ === undefined) { + // Global function, 'this' is global object (or 'undefined' if strict). + state.funcThis_ = state.scope.strict ? undefined : this.global; + } + state.doneArgs_ = true; } - return; - } - if (this.isa(obj, this.STRING)) { - var n = Interpreter.legalArrayIndex(name); - if (name === 'length' || (!isNaN(n) && n < String(obj).length)) { - // Can't set length or letters on String objects. - if (strict) { - this.throwException(this.TYPE_ERROR, "Cannot assign to read only " + - "property '" + name + "' of String '" + obj.data + "'"); + if (!state.doneExec_) { + state.doneExec_ = true; + if (!func || !func.isObject) { + this.throwException(this.TYPE_ERROR, func + ' is not a function'); + } + var funcNode = func.node; + if (funcNode) { + var scope = this.createScope(funcNode['body'], func.parentScope); + // Add all arguments. + for (var i = 0; i < funcNode['params'].length; i++) { + var paramName = funcNode['params'][i]['name']; + var paramValue = state.arguments_.length > i ? state.arguments_[i] : + undefined; + this.setProperty(scope, paramName, paramValue); + } + // Build arguments variable. + var argsList = this.createObjectProto(this.ARRAY_PROTO); + for (var i = 0; i < state.arguments_.length; i++) { + this.setProperty(argsList, i, state.arguments_[i]); + } + this.setProperty(scope, 'arguments', argsList); + // Add the function's name (var x = function foo(){};) + var name = funcNode['id'] && funcNode['id']['name']; + if (name) { + this.setProperty(scope, name, func); + } + this.setProperty(scope, 'this', state.funcThis_, Interpreter.READONLY_DESCRIPTOR); + state.value = undefined; // Default value if no explicit return. + return new Interpreter.MyState(funcNode['body'], scope); } - return; - } - } - if (obj["class"] === 'Array') { - // Arrays have a magic length variable that is bound to the elements. - var length = obj.properties.length; - var i; - if (name === 'length') { - // Delete elements if length is smaller. - value = Interpreter.legalArrayLength(value); - if (isNaN(value)) { - this.throwException(this.RANGE_ERROR, 'Invalid array length'); - } - if (value < length) { - for (i in obj.properties) { - i = Interpreter.legalArrayIndex(i); - if (!isNaN(i) && value <= i) { - delete obj.properties[i]; + else if (func.eval) { + var code = state.arguments_[0]; + if (typeof code !== 'string') { + // JS does not parse String objects: + // eval(new String('1 + 1')) -> '1 + 1' + state.value = code; + } + else { + try { + var ast = acorn.parse(code.toString(), Interpreter.PARSE_OPTIONS); + } + catch (e) { + // Acorn threw a SyntaxError. Rethrow as a trappable error. + this.throwException(this.SYNTAX_ERROR, 'Invalid code: ' + e.message); } + var evalNode = new this.nodeConstructor(); + evalNode['type'] = 'EvalProgram_'; + evalNode['body'] = ast['body']; + this.stripLocations_(evalNode, node['start'], node['end']); + // Update current scope with definitions in eval(). + var scope = state.scope; + if (scope.strict) { + // Strict mode get its own scope in eval. + scope = this.createScope(ast, scope); + } + else { + // Non-strict mode pollutes the current scope. + this.populateScope_(ast, scope); + } + this.value = undefined; // Default value if no code. + return new Interpreter.MyState(evalNode, scope); } } - } - else if (!isNaN(i = Interpreter.legalArrayIndex(name))) { - // Increase length if this index is larger. - obj.properties.length = Math.max(length, i + 1); - } - } - if (obj.preventExtensions && !(name in obj.properties)) { - if (strict) { - this.throwException(this.TYPE_ERROR, "Can't add property '" + name + - "', object is not extensible"); - } - return; - } - if (opt_descriptor) { - // Define the property. - if ('get' in opt_descriptor) { - if (opt_descriptor.get) { - obj.getter[name] = opt_descriptor.get; + else if (func.nativeFunc) { + state.value = func.nativeFunc.apply(state.funcThis_, state.arguments_); + } + else if (func.asyncFunc) { + var thisInterpreter = this; + var callback = function (value) { + state.value = value; + thisInterpreter.paused_ = false; + }; + var argsWithCallback = state.arguments_.concat(callback); + this.paused_ = true; + func.asyncFunc.apply(state.funcThis_, argsWithCallback); + return; } else { - delete obj.getter[name]; + /* A child of a function is a function but is not callable. For example: + var F = function() {}; + F.prototype = escape; + var f = new F(); + f(); + */ + this.throwException(this.TYPE_ERROR, func["class"] + ' is not a function'); } } - if ('set' in opt_descriptor) { - if (opt_descriptor.set) { - obj.setter[name] = opt_descriptor.set; + else { + // Execution complete. Put the return value on the stack. + stack.pop(); + if (state.isConstructor && typeof state.value !== 'object') { + stack[stack.length - 1].value = state.funcThis_; } else { - delete obj.setter[name]; + stack[stack.length - 1].value = state.value; } } - var descriptor = {}; - if ('configurable' in opt_descriptor) { - descriptor.configurable = opt_descriptor.configurable; - } - if ('enumerable' in opt_descriptor) { - descriptor.enumerable = opt_descriptor.enumerable; + }; + ; + Interpreter.prototype.stepCatchClause = function (stack, state, node) { + if (!state.done_) { + state.done_ = true; + // Create an empty scope. + var scope = this.createSpecialScope(state.scope); + // Add the argument. + this.setProperty(scope, node['param']['name'], state.throwValue); + // Execute catch clause. + return new Interpreter.MyState(node['body'], scope); } - if ('writable' in opt_descriptor) { - descriptor.writable = opt_descriptor.writable; - delete obj.getter[name]; - delete obj.setter[name]; + else { + stack.pop(); } - if ('value' in opt_descriptor) { - descriptor.value = opt_descriptor.value; - delete obj.getter[name]; - delete obj.setter[name]; + }; + ; + Interpreter.prototype.stepConditionalExpression = function (stack, state, node) { + var mode = state.mode_ || 0; + if (mode === 0) { + state.mode_ = 1; + return new Interpreter.MyState(node['test'], state.scope); } - else if (value !== ReferenceError) { - descriptor.value = value; - delete obj.getter[name]; - delete obj.setter[name]; + if (mode === 1) { + state.mode_ = 2; + var value = Boolean(state.value); + if (value && node['consequent']) { + // Execute 'if' block. + return new Interpreter.MyState(node['consequent'], state.scope); + } + else if (!value && node['alternate']) { + // Execute 'else' block. + return new Interpreter.MyState(node['alternate'], state.scope); + } + // eval('1;if(false){2}') -> undefined + this.value = undefined; } - try { - Object.defineProperty(obj.properties, name, descriptor); + stack.pop(); + if (node['type'] === 'ConditionalExpression') { + stack[stack.length - 1].value = state.value; } - catch (e) { - this.throwException(this.TYPE_ERROR, 'Cannot redefine property: ' + name); + }; + ; + Interpreter.prototype.stepContinueStatement = function (stack, state, node) { + stack.pop(); + var label = null; + if (node['label']) { + label = node['label']['name']; } - } - else { - // Set the property. - if (value === ReferenceError) { - throw ReferenceError('Value not specified.'); - } - // Determine the parent (possibly self) where the property is defined. - var defObj = obj; - while (!(name in defObj.properties)) { - defObj = this.getPrototype(defObj); - if (!defObj) { - // This is a new property. - defObj = obj; - break; + state = stack[stack.length - 1]; + while (state && + state.node['type'] !== 'CallExpression' && + state.node['type'] !== 'NewExpression') { + if (state.isLoop) { + if (!label || (state.labels && state.labels.indexOf(label) !== -1)) { + return; + } } + stack.pop(); + state = stack[stack.length - 1]; } - if (defObj.setter && defObj.setter[name]) { - return defObj.setter[name]; + // Syntax error, do not allow this error to be trapped. + throw SyntaxError('Illegal continue statement'); + }; + ; + Interpreter.prototype.stepDebuggerStatement = function (stack, state, node) { + // Do nothing. May be overridden by developers. + stack.pop(); + }; + ; + Interpreter.prototype.stepDoWhileStatement = function (stack, state, node) { + if (node['type'] === 'DoWhileStatement' && state.test_ === undefined) { + // First iteration of do/while executes without checking test. + state.value = true; + state.test_ = true; + } + if (!state.test_) { + state.test_ = true; + return new Interpreter.MyState(node['test'], state.scope); } - if (defObj.getter && defObj.getter[name]) { - if (strict) { - this.throwException(this.TYPE_ERROR, "Cannot set property '" + name + - "' of object '" + obj + "' which only has a getter"); - } + if (!state.value) { + stack.pop(); } - else { - // No setter, simple assignment. - try { - obj.properties[name] = value; - } - catch (e) { - if (strict) { - this.throwException(this.TYPE_ERROR, "Cannot assign to read only " + - "property '" + name + "' of object '" + obj + "'"); - } - } + else if (node['body']) { + state.test_ = false; + state.isLoop = true; + return new Interpreter.MyState(node['body'], state.scope); } - } - }; - ; - /** - * Convenience method for adding a native function as a non-enumerable property - * onto an object's prototype. - * @param {!Interpreter.MyObject} obj Data object. - * @param {Interpreter.Value} name Name of property. - * @param {!Function} wrapper Function object. - */ - Interpreter.prototype.setNativeFunctionPrototype = function (obj, name, wrapper) { - this.setProperty(obj.properties['prototype'], name, this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - }; - ; - /** - * Returns the current scope from the stateStack. - * @return {!Interpreter.MyObject} Current scope dictionary. - */ - Interpreter.prototype.getScope = function () { - var scope = this.stateStack[this.stateStack.length - 1].scope; - if (!scope) { - throw Error('No scope found.'); - } - return scope; - }; - ; - /** - * Create a new scope dictionary. - * @param {!Object} node AST node defining the scope container - * (e.g. a function). - * @param {Interpreter.MyObject} parentScope Scope to link to. - * @return {!Interpreter.MyObject} New scope. - */ - Interpreter.prototype.createScope = function (node, parentScope) { - var scope = this.createObjectProto(null); - scope.parentScope = parentScope; - if (!parentScope) { - this.initGlobalScope(scope); - } - this.populateScope_(node, scope); - // Determine if this scope starts with 'use strict'. - scope.strict = false; - if (parentScope && parentScope.strict) { - scope.strict = true; - } - else { - var firstNode = node['body'] && node['body'][0]; - if (firstNode && firstNode.expression && - firstNode.expression['type'] === 'Literal' && - firstNode.expression.value === 'use strict') { - scope.strict = true; + }; + ; + Interpreter.prototype.stepEmptyStatement = function (stack, state, node) { + stack.pop(); + }; + ; + Interpreter.prototype.stepEvalProgram_ = function (stack, state, node) { + var n = state.n_ || 0; + var expression = node['body'][n]; + if (expression) { + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); } - } - return scope; - }; - ; - /** - * Create a new special scope dictionary. Similar to createScope(), but - * doesn't assume that the scope is for a function body. - * This is used for 'catch' clauses and 'with' statements. - * @param {!Interpreter.MyObject} parentScope Scope to link to. - * @param {Interpreter.MyObject=} opt_scope Optional object to transform into - * scope. - * @return {!Interpreter.MyObject} New scope. - */ - Interpreter.prototype.createSpecialScope = function (parentScope, opt_scope) { - if (!parentScope) { - throw Error('parentScope required'); - } - var scope = opt_scope || this.createObjectProto(null); - scope.parentScope = parentScope; - scope.strict = parentScope.strict; - return scope; - }; - ; - /** - * Retrieves a value from the scope chain. - * @param {string} name Name of variable. - * @return {Interpreter.Value} Any value. - * May be flagged as being a getter and thus needing immediate execution - * (rather than being the value of the property). - */ - Interpreter.prototype.getValueFromScope = function (name) { - var scope = this.getScope(); - while (scope && scope !== this.global) { - if (name in scope.properties) { - return scope.properties[name]; + stack.pop(); + stack[stack.length - 1].value = this.value; + }; + ; + Interpreter.prototype.stepExpressionStatement = function (stack, state, node) { + if (!state.done_) { + state.done_ = true; + return new Interpreter.MyState(node['expression'], state.scope); } - scope = scope.parentScope; - } - // The root scope is also an object which has inherited properties and - // could also have getters. - if (scope === this.global && this.hasProperty(scope, name)) { - return this.getProperty(scope, name); - } - // Typeof operator is unique: it can safely look at non-defined variables. - var prevNode = this.stateStack[this.stateStack.length - 1].node; - if (prevNode['type'] === 'UnaryExpression' && - prevNode['operator'] === 'typeof') { - return undefined; - } - this.throwException(this.REFERENCE_ERROR, name + ' is not defined'); - }; - ; - /** - * Sets a value to the current scope. - * @param {string} name Name of variable. - * @param {Interpreter.Value} value Value. - * @return {!Interpreter.MyObject|undefined} Returns a setter function if one - * needs to be called, otherwise undefined. - */ - Interpreter.prototype.setValueToScope = function (name, value) { - var scope = this.getScope(); - var strict = scope.strict; - while (scope && scope !== this.global) { - if (name in scope.properties) { - scope.properties[name] = value; - return undefined; + stack.pop(); + // Save this value to interpreter.value for use as a return value if + // this code is inside an eval function. + this.value = state.value; + }; + ; + Interpreter.prototype.stepForInStatement = function (stack, state, node) { + // First, initialize a variable if exists. Only do so once, ever. + if (!state.doneInit_) { + state.doneInit_ = true; + if (node['left']['declarations'] && + node['left']['declarations'][0]['init']) { + if (state.scope.strict) { + this.throwException(this.SYNTAX_ERROR, 'for-in loop variable declaration may not have an initializer.'); + } + // Variable initialization: for (var x = 4 in y) + return new Interpreter.MyState(node['left'], state.scope); + } } - scope = scope.parentScope; - } - // The root scope is also an object which has readonly properties and - // could also have setters. - if (scope === this.global && (!strict || this.hasProperty(scope, name))) { - return this.setProperty(scope, name, value); - } - this.throwException(this.REFERENCE_ERROR, name + ' is not defined'); - }; - ; - /** - * Create a new scope for the given node. - * @param {!Object} node AST node (program or function). - * @param {!Interpreter.MyObject} scope Scope dictionary to populate. - * @private - */ - Interpreter.prototype.populateScope_ = function (node, scope) { - if (node['type'] === 'VariableDeclaration') { - for (var i = 0; i < node['declarations'].length; i++) { - this.setProperty(scope, node['declarations'][i]['id']['name'], undefined, Interpreter.VARIABLE_DESCRIPTOR); + // Second, look up the object. Only do so once, ever. + if (!state.doneObject_) { + state.doneObject_ = true; + if (!state.variable_) { + state.variable_ = state.value; + } + return new Interpreter.MyState(node['right'], state.scope); } - } - else if (node['type'] === 'FunctionDeclaration') { - this.setProperty(scope, node['id']['name'], this.createFunction(node, scope), Interpreter.VARIABLE_DESCRIPTOR); - return; // Do not recurse into function. - } - else if (node['type'] === 'FunctionExpression') { - return; // Do not recurse into function. - } - else if (node['type'] === 'ExpressionStatement') { - return; // Expressions can't contain variable/function declarations. - } - var nodeClass = node['constructor']; - for (var name in node) { - var prop = node[name]; - if (prop && typeof prop === 'object') { - if (Array.isArray(prop)) { - for (var i = 0; i < prop.length; i++) { - if (prop[i] && prop[i].constructor === nodeClass) { - this.populateScope_(prop[i], scope); + if (!state.isLoop) { + // First iteration. + state.isLoop = true; + state.object_ = state.value; + state.visited_ = Object.create(null); + } + // Third, find the property name for this iteration. + if (state.name_ === undefined) { + done: do { + if (state.object_ && state.object_.isObject) { + if (!state.props_) { + state.props_ = Object.getOwnPropertyNames(state.object_.properties); + } + do { + var prop = state.props_.shift(); + } while (prop && (state.visited_[prop] || + !Object.prototype.hasOwnProperty.call(state.object_.properties, prop))); + if (prop) { + state.visited_[prop] = true; + if (Object.prototype.propertyIsEnumerable.call(state.object_.properties, prop)) { + state.name_ = prop; + break done; + } } } - } - else { - if (prop.constructor === nodeClass) { - this.populateScope_(prop, scope); + else if (state.object_ !== null) { + if (!state.props_) { + state.props_ = Object.getOwnPropertyNames(state.object_); + } + do { + var prop = state.props_.shift(); + } while (prop && state.visited_[prop]); + if (prop) { + state.visited_[prop] = true; + state.name_ = prop; + break done; + } } + state.object_ = this.getPrototype(state.object_); + state.props_ = null; + } while (state.object_ !== null); + if (state.object_ === null) { + // Done, exit loop. + stack.pop(); + return; } } - } - }; - ; - /** - * Remove start and end values from AST, or set start and end values to a - * constant value. Used to remove highlighting from polyfills and to set - * highlighting in an eval to cover the entire eval expression. - * @param {!Object} node AST node. - * @param {number=} start Starting character of all nodes, or undefined. - * @param {number=} end Ending character of all nodes, or undefined. - * @private - */ - Interpreter.prototype.stripLocations_ = function (node, start, end) { - if (start) { - node['start'] = start; - } - else { - delete node['start']; - } - if (end) { - node['end'] = end; - } - else { - delete node['end']; - } - for (var name in node) { - if (node.hasOwnProperty(name)) { - var prop = node[name]; - if (prop && typeof prop === 'object') { - this.stripLocations_(prop, start, end); + // Fourth, find the variable + if (!state.doneVariable_) { + state.doneVariable_ = true; + var left = node['left']; + if (left['type'] === 'VariableDeclaration') { + // Inline variable declaration: for (var x in y) + state.variable_ = + [Interpreter.SCOPE_REFERENCE, left['declarations'][0]['id']['name']]; + } + else { + // Arbitrary left side: for (foo().bar in y) + state.variable_ = null; + var nextState = new Interpreter.MyState(left, state.scope); + nextState.components = true; + return nextState; } } - } - }; - ; - /** - * Is the current state directly being called with as a construction with 'new'. - * @return {boolean} True if 'new foo()', false if 'foo()'. - */ - Interpreter.prototype.calledWithNew = function () { - return this.stateStack[this.stateStack.length - 1].isConstructor; - }; - ; - /** - * Gets a value from the scope chain or from an object property. - * @param {!Array} ref Name of variable or object/propname tuple. - * @return {Interpreter.Value} Any value. - * May be flagged as being a getter and thus needing immediate execution - * (rather than being the value of the property). - */ - Interpreter.prototype.getValue = function (ref) { - if (ref[0] === Interpreter.SCOPE_REFERENCE) { - // A null/varname variable lookup. - return this.getValueFromScope(ref[1]); - } - else { - // An obj/prop components tuple (foo.bar). - return this.getProperty(ref[0], ref[1]); - } - }; - ; - /** - * Sets a value to the scope chain or to an object property. - * @param {!Array} ref Name of variable or object/propname tuple. - * @param {Interpreter.Value} value Value. - * @return {!Interpreter.MyObject|undefined} Returns a setter function if one - * needs to be called, otherwise undefined. - */ - Interpreter.prototype.setValue = function (ref, value) { - if (ref[0] === Interpreter.SCOPE_REFERENCE) { - // A null/varname variable lookup. - return this.setValueToScope(ref[1], value); - } - else { - // An obj/prop components tuple (foo.bar). - return this.setProperty(ref[0], ref[1], value); - } - }; - ; - /** - * Throw an exception in the interpreter that can be handled by an - * interpreter try/catch statement. If unhandled, a real exception will - * be thrown. Can be called with either an error class and a message, or - * with an actual object to be thrown. - * @param {!Interpreter.MyObject} errorClass Type of error (if message is - * provided) or the value to throw (if no message). - * @param {string=} opt_message Message being thrown. - */ - Interpreter.prototype.throwException = function (errorClass, opt_message) { - if (opt_message === undefined) { - var error = errorClass; // This is a value to throw, not an error class. - } - else { - var error = this.createObject(errorClass); - this.setProperty(error, 'message', opt_message, Interpreter.NONENUMERABLE_DESCRIPTOR); - } - this.executeException(error); - // Abort anything related to the current step. - throw Interpreter.STEP_ERROR; - }; - ; - /** - * Throw an exception in the interpreter that can be handled by a - * interpreter try/catch statement. If unhandled, a real exception will - * be thrown. - * @param {!Interpreter.MyObject} error Error object to execute. - */ - Interpreter.prototype.executeException = function (error) { - // Search for a try statement. - do { - this.stateStack.pop(); - var state = this.stateStack[this.stateStack.length - 1]; - if (state.node['type'] === 'TryStatement') { - state.throwValue = error; - return; - } - } while (state && state.node['type'] !== 'Program'); - // Throw a real error. - var realError; - if (this.isa(error, this.ERROR)) { - var errorTable = { - 'EvalError': EvalError, - 'RangeError': RangeError, - 'ReferenceError': ReferenceError, - 'SyntaxError': SyntaxError, - 'TypeError': TypeError, - 'URIError': URIError - }; - var name = this.getProperty(error, 'name').toString(); - var message = this.getProperty(error, 'message').valueOf(); - var type = errorTable[name] || Error; - realError = type(message); - } - else { - realError = error.toString(); - } - throw realError; - }; - ; - /** - * Create a call to a getter function. - * @param {!Interpreter.MyObject} func Function to execute. - * @param {!Interpreter.MyObject|!Array} left - * Name of variable or object/propname tuple. - * @private - */ - Interpreter.prototype.createGetter_ = function (func, left) { - // Normally 'this' will be specified as the object component (o.x). - // Sometimes 'this' is explicitly provided (o). - var funcThis = Array.isArray(left) ? left[0] : left; - var node = new this.nodeConstructor(); - node['type'] = 'CallExpression'; - var state = new Interpreter.MyState(node, this.stateStack[this.stateStack.length - 1].scope); - state.doneCallee_ = true; - state.funcThis_ = funcThis; - state.func_ = func; - state.doneArgs_ = true; - state.arguments_ = []; - return state; - }; - ; - /** - * Create a call to a setter function. - * @param {!Interpreter.MyObject} func Function to execute. - * @param {!Interpreter.MyObject|!Array} left - * Name of variable or object/propname tuple. - * @param {Interpreter.Value} value Value to set. - * @private - */ - Interpreter.prototype.createSetter_ = function (func, left, value) { - // Normally 'this' will be specified as the object component (o.x). - // Sometimes 'this' is implicitly the global object (x). - var funcThis = Array.isArray(left) ? left[0] : this.global; - var node = new this.nodeConstructor(); - node['type'] = 'CallExpression'; - var state = new Interpreter.MyState(node, this.stateStack[this.stateStack.length - 1].scope); - state.doneCallee_ = true; - state.funcThis_ = funcThis; - state.func_ = func; - state.doneArgs_ = true; - state.arguments_ = [value]; - return state; - }; - ; - /////////////////////////////////////////////////////////////////////////////// - // Functions to handle each node type. - /////////////////////////////////////////////////////////////////////////////// - Interpreter.prototype.stepArrayExpression = function (stack, state, node) { - var elements = node['elements']; - var n = state.n_ || 0; - if (!state.array_) { - state.array_ = this.createObjectProto(this.ARRAY_PROTO); - state.array_.properties.length = elements.length; - } - else { - this.setProperty(state.array_, n, state.value); - n++; - } - while (n < elements.length) { - // Skip missing elements - they're not defined, not undefined. - if (elements[n]) { - state.n_ = n; - return new Interpreter.MyState(elements[n], state.scope); + if (!state.variable_) { + state.variable_ = state.value; } - n++; - } - stack.pop(); - stack[stack.length - 1].value = state.array_; - }; - ; - Interpreter.prototype.stepAssignmentExpression = function (stack, state, node) { - if (!state.doneLeft_) { - state.doneLeft_ = true; - var nextState = new Interpreter.MyState(node['left'], state.scope); - nextState.components = true; - return nextState; - } - if (!state.doneRight_) { - if (!state.leftReference_) { - state.leftReference_ = state.value; + // Fifth, set the variable. + if (!state.doneSetter_) { + state.doneSetter_ = true; + var value = state.name_; + var setter = this.setValue(state.variable_, value); + if (setter) { + return this.createSetter_(setter, state.variable_, value); + } } - if (state.doneGetter_) { - state.leftValue_ = state.value; + // Next step will be step three. + state.name_ = undefined; + // Reevaluate the variable since it could be a setter on the global object. + state.doneVariable_ = false; + state.doneSetter_ = false; + // Sixth and finally, execute the body if there was one. this. + if (node['body']) { + return new Interpreter.MyState(node['body'], state.scope); } - if (!state.doneGetter_ && node['operator'] !== '=') { - var leftValue = this.getValue(state.leftReference_); - state.leftValue_ = leftValue; - if (leftValue && typeof leftValue === 'object' && leftValue.isGetter) { - // Clear the getter flag and call the getter function. - leftValue.isGetter = false; - state.doneGetter_ = true; - var func = (leftValue); - return this.createGetter_(func, state.leftReference_); + }; + ; + Interpreter.prototype.stepForStatement = function (stack, state, node) { + var mode = state.mode_ || 0; + if (mode === 0) { + state.mode_ = 1; + if (node['init']) { + return new Interpreter.MyState(node['init'], state.scope); } } - state.doneRight_ = true; - return new Interpreter.MyState(node['right'], state.scope); - } - if (state.doneSetter_) { - // Return if setter function. - // Setter method on property has completed. - // Ignore its return value, and use the original set value instead. - stack.pop(); - stack[stack.length - 1].value = state.doneSetter_; - return; - } - var value = state.leftValue_; - var rightValue = state.value; - switch (node['operator']) { - case '=': - value = rightValue; - break; - case '+=': - value += rightValue; - break; - case '-=': - value -= rightValue; - break; - case '*=': - value *= rightValue; - break; - case '/=': - value /= rightValue; - break; - case '%=': - value %= rightValue; - break; - case '<<=': - value <<= rightValue; - break; - case '>>=': - value >>= rightValue; - break; - case '>>>=': - value >>>= rightValue; - break; - case '&=': - value &= rightValue; - break; - case '^=': - value ^= rightValue; - break; - case '|=': - value |= rightValue; - break; - default: - throw SyntaxError('Unknown assignment expression: ' + node['operator']); - } - var setter = this.setValue(state.leftReference_, value); - if (setter) { - state.doneSetter_ = value; - return this.createSetter_(setter, state.leftReference_, value); - } - // Return if no setter function. - stack.pop(); - stack[stack.length - 1].value = value; - }; - ; - Interpreter.prototype.stepBinaryExpression = function (stack, state, node) { - if (!state.doneLeft_) { - state.doneLeft_ = true; - return new Interpreter.MyState(node['left'], state.scope); - } - if (!state.doneRight_) { - state.doneRight_ = true; - state.leftValue_ = state.value; - return new Interpreter.MyState(node['right'], state.scope); - } - stack.pop(); - var leftValue = state.leftValue_; - var rightValue = state.value; - var value; - switch (node['operator']) { - case '==': - value = leftValue == rightValue; - break; - case '!=': - value = leftValue != rightValue; - break; - case '===': - value = leftValue === rightValue; - break; - case '!==': - value = leftValue !== rightValue; - break; - case '>': - value = leftValue > rightValue; - break; - case '>=': - value = leftValue >= rightValue; - break; - case '<': - value = leftValue < rightValue; - break; - case '<=': - value = leftValue <= rightValue; - break; - case '+': - value = leftValue + rightValue; - break; - case '-': - value = leftValue - rightValue; - break; - case '*': - value = leftValue * rightValue; - break; - case '/': - value = leftValue / rightValue; - break; - case '%': - value = leftValue % rightValue; - break; - case '&': - value = leftValue & rightValue; - break; - case '|': - value = leftValue | rightValue; - break; - case '^': - value = leftValue ^ rightValue; - break; - case '<<': - value = leftValue << rightValue; - break; - case '>>': - value = leftValue >> rightValue; - break; - case '>>>': - value = leftValue >>> rightValue; - break; - case 'in': - if (!rightValue || !rightValue.isObject) { - this.throwException(this.TYPE_ERROR, "'in' expects an object, not '" + rightValue + "'"); - } - value = this.hasProperty(rightValue, leftValue); - break; - case 'instanceof': - if (!this.isa(rightValue, this.FUNCTION)) { - this.throwException(this.TYPE_ERROR, 'Right-hand side of instanceof is not an object'); - } - value = leftValue.isObject ? this.isa(leftValue, rightValue) : false; - break; - default: - throw SyntaxError('Unknown binary operator: ' + node['operator']); - } - stack[stack.length - 1].value = value; - }; - ; - Interpreter.prototype.stepBlockStatement = function (stack, state, node) { - var n = state.n_ || 0; - var expression = node['body'][n]; - if (expression) { - state.n_ = n + 1; - return new Interpreter.MyState(expression, state.scope); - } - stack.pop(); - }; - ; - Interpreter.prototype.stepBreakStatement = function (stack, state, node) { - stack.pop(); - var label = null; - if (node['label']) { - label = node['label']['name']; - } - while (state && - state.node['type'] !== 'CallExpression' && - state.node['type'] !== 'NewExpression') { - if (label) { - if (state.labels && state.labels.indexOf(label) !== -1) { - return; + else if (mode === 1) { + state.mode_ = 2; + if (node['test']) { + return new Interpreter.MyState(node['test'], state.scope); } } - else if (state.isLoop || state.isSwitch) { - return; + else if (mode === 2) { + state.mode_ = 3; + if (node['test'] && !state.value) { + // Done, exit loop. + stack.pop(); + } + else { + state.isLoop = true; + return new Interpreter.MyState(node['body'], state.scope); + } } - state = stack.pop(); - } - // Syntax error, do not allow this error to be trapped. - throw SyntaxError('Illegal break statement'); - }; - ; - Interpreter.prototype.stepCallExpression = function (stack, state, node) { - if (!state.doneCallee_) { - state.doneCallee_ = 1; - // Components needed to determine value of 'this'. - var nextState = new Interpreter.MyState(node['callee'], state.scope); - nextState.components = true; - return nextState; - } - if (state.doneCallee_ === 1) { - // Determine value of the function. - state.doneCallee_ = 2; - var func = state.value; - if (Array.isArray(func)) { - state.func_ = this.getValue(func); - if (func[0] !== Interpreter.SCOPE_REFERENCE) { - // Method function, 'this' is object (ignored if invoked as 'new'). - state.funcThis_ = func[0]; - } - func = state.func_; - if (func && typeof func === 'object' && func.isGetter) { - // Clear the getter flag and call the getter function. - func.isGetter = false; - state.doneCallee_ = 1; - return this.createGetter_(/** @type {!Interpreter.Object} */ (func), state.value); + else if (mode === 3) { + state.mode_ = 1; + if (node['update']) { + return new Interpreter.MyState(node['update'], state.scope); } } - else { - // Already evaluated function: (function(){...})(); - state.func_ = func; + }; + ; + Interpreter.prototype.stepFunctionDeclaration = function (stack, state, node) { + // This was found and handled when the scope was populated. + stack.pop(); + }; + ; + Interpreter.prototype.stepFunctionExpression = function (stack, state, node) { + stack.pop(); + stack[stack.length - 1].value = this.createFunction(node, state.scope); + }; + ; + Interpreter.prototype.stepIdentifier = function (stack, state, node) { + stack.pop(); + if (state.components) { + stack[stack.length - 1].value = [Interpreter.SCOPE_REFERENCE, node['name']]; + return; } - state.arguments_ = []; - state.n_ = 0; - } - var func = state.func_; - if (!state.doneArgs_) { - if (state.n_ !== 0) { - state.arguments_.push(state.value); + var value = this.getValueFromScope(node['name']); + // An identifier could be a getter if it's a property on the global object. + if (value && typeof value === 'object' && value.isGetter) { + // Clear the getter flag and call the getter function. + value.isGetter = false; + var scope = state.scope; + while (!this.hasProperty(scope, node['name'])) { + scope = scope.parentScope; + } + var func = (value); + return this.createGetter_(func, this.global); } - if (node['arguments'][state.n_]) { - return new Interpreter.MyState(node['arguments'][state.n_++], state.scope); + stack[stack.length - 1].value = value; + }; + ; + Interpreter.prototype.stepIfStatement = function (stack, state, node) { + return this.stepConditionalExpression(stack, state, node); + }; + Interpreter.prototype.stepLabeledStatement = function (stack, state, node) { + // No need to hit this node again on the way back up the stack. + stack.pop(); + // Note that a statement might have multiple labels. + var labels = state.labels || []; + labels.push(node['label']['name']); + var nextState = new Interpreter.MyState(node['body'], state.scope); + nextState.labels = labels; + return nextState; + }; + ; + Interpreter.prototype.stepLiteral = function (stack, state, node) { + stack.pop(); + var value = node['value']; + if (value instanceof RegExp) { + var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO); + this.populateRegExp(pseudoRegexp, value); + value = pseudoRegexp; } - // Determine value of 'this' in function. - if (node['type'] === 'NewExpression') { - if (func.illegalConstructor) { - // Illegal: new escape(); - this.throwException(this.TYPE_ERROR, func + ' is not a constructor'); - } - // Constructor, 'this' is new object. - state.funcThis_ = this.createObject(func); - state.isConstructor = true; + stack[stack.length - 1].value = value; + }; + ; + Interpreter.prototype.stepLogicalExpression = function (stack, state, node) { + if (node['operator'] !== '&&' && node['operator'] !== '||') { + throw SyntaxError('Unknown logical operator: ' + node['operator']); } - else if (state.funcThis_ === undefined) { - // Global function, 'this' is global object (or 'undefined' if strict). - state.funcThis_ = state.scope.strict ? undefined : this.global; + if (!state.doneLeft_) { + state.doneLeft_ = true; + return new Interpreter.MyState(node['left'], state.scope); } - state.doneArgs_ = true; - } - if (!state.doneExec_) { - state.doneExec_ = true; - if (!func || !func.isObject) { - this.throwException(this.TYPE_ERROR, func + ' is not a function'); - } - var funcNode = func.node; - if (funcNode) { - var scope = this.createScope(funcNode['body'], func.parentScope); - // Add all arguments. - for (var i = 0; i < funcNode['params'].length; i++) { - var paramName = funcNode['params'][i]['name']; - var paramValue = state.arguments_.length > i ? state.arguments_[i] : - undefined; - this.setProperty(scope, paramName, paramValue); - } - // Build arguments variable. - var argsList = this.createObjectProto(this.ARRAY_PROTO); - for (var i = 0; i < state.arguments_.length; i++) { - this.setProperty(argsList, i, state.arguments_[i]); - } - this.setProperty(scope, 'arguments', argsList); - // Add the function's name (var x = function foo(){};) - var name = funcNode['id'] && funcNode['id']['name']; - if (name) { - this.setProperty(scope, name, func); - } - this.setProperty(scope, 'this', state.funcThis_, Interpreter.READONLY_DESCRIPTOR); - state.value = undefined; // Default value if no explicit return. - return new Interpreter.MyState(funcNode['body'], scope); - } - else if (func.eval) { - var code = state.arguments_[0]; - if (typeof code !== 'string') { - // JS does not parse String objects: - // eval(new String('1 + 1')) -> '1 + 1' - state.value = code; + if (!state.doneRight_) { + if ((node['operator'] === '&&' && !state.value) || + (node['operator'] === '||' && state.value)) { + // Shortcut evaluation. + stack.pop(); + stack[stack.length - 1].value = state.value; } else { - try { - var ast = acorn.parse(code.toString(), Interpreter.PARSE_OPTIONS); - } - catch (e) { - // Acorn threw a SyntaxError. Rethrow as a trappable error. - this.throwException(this.SYNTAX_ERROR, 'Invalid code: ' + e.message); - } - var evalNode = new this.nodeConstructor(); - evalNode['type'] = 'EvalProgram_'; - evalNode['body'] = ast['body']; - this.stripLocations_(evalNode, node['start'], node['end']); - // Update current scope with definitions in eval(). - var scope = state.scope; - if (scope.strict) { - // Strict mode get its own scope in eval. - scope = this.createScope(ast, scope); - } - else { - // Non-strict mode pollutes the current scope. - this.populateScope_(ast, scope); - } - this.value = undefined; // Default value if no code. - return new Interpreter.MyState(evalNode, scope); + state.doneRight_ = true; + return new Interpreter.MyState(node['right'], state.scope); } } - else if (func.nativeFunc) { - state.value = func.nativeFunc.apply(state.funcThis_, state.arguments_); + else { + stack.pop(); + stack[stack.length - 1].value = state.value; } - else if (func.asyncFunc) { - var thisInterpreter = this; - var callback = function (value) { - state.value = value; - thisInterpreter.paused_ = false; - }; - var argsWithCallback = state.arguments_.concat(callback); - this.paused_ = true; - func.asyncFunc.apply(state.funcThis_, argsWithCallback); - return; + }; + ; + Interpreter.prototype.stepMemberExpression = function (stack, state, node) { + if (!state.doneObject_) { + state.doneObject_ = true; + return new Interpreter.MyState(node['object'], state.scope); + } + var propName; + if (!node['computed']) { + state.object_ = state.value; + // obj.foo -- Just access 'foo' directly. + propName = node['property']['name']; + } + else if (!state.doneProperty_) { + state.object_ = state.value; + // obj[foo] -- Compute value of 'foo'. + state.doneProperty_ = true; + return new Interpreter.MyState(node['property'], state.scope); } else { - /* A child of a function is a function but is not callable. For example: - var F = function() {}; - F.prototype = escape; - var f = new F(); - f(); - */ - this.throwException(this.TYPE_ERROR, func["class"] + ' is not a function'); + propName = state.value; } - } - else { - // Execution complete. Put the return value on the stack. stack.pop(); - if (state.isConstructor && typeof state.value !== 'object') { - stack[stack.length - 1].value = state.funcThis_; + if (state.components) { + stack[stack.length - 1].value = [state.object_, propName]; } else { - stack[stack.length - 1].value = state.value; + var value = this.getProperty(state.object_, propName); + if (value && typeof value === 'object' && value.isGetter) { + // Clear the getter flag and call the getter function. + value.isGetter = false; + var func = (value); + return this.createGetter_(func, state.object_); + } + stack[stack.length - 1].value = value; + } + }; + ; + Interpreter.prototype.stepNewExpression = function (stack, state, node) { + return this.stepCallExpression(stack, state, node); + }; + Interpreter.prototype.stepObjectExpression = function (stack, state, node) { + var n = state.n_ || 0; + var property = node['properties'][n]; + if (!state.object_) { + // First execution. + state.object_ = this.createObjectProto(this.OBJECT_PROTO); + state.properties_ = Object.create(null); + } + else { + // Determine property name. + var key = property['key']; + if (key['type'] === 'Identifier') { + var propName = key['name']; + } + else if (key['type'] === 'Literal') { + var propName = key['value']; + } + else { + throw SyntaxError('Unknown object structure: ' + key['type']); + } + // Set the property computed in the previous execution. + if (!state.properties_[propName]) { + // Create temp object to collect value, getter, and/or setter. + state.properties_[propName] = {}; + } + state.properties_[propName][property['kind']] = state.value; + state.n_ = ++n; + property = node['properties'][n]; + } + if (property) { + return new Interpreter.MyState(property['value'], state.scope); + } + for (var key in state.properties_) { + var kinds = state.properties_[key]; + if ('get' in kinds || 'set' in kinds) { + // Set a property with a getter or setter. + var descriptor = { + configurable: true, + enumerable: true, + get: kinds['get'], + set: kinds['set'] + }; + this.setProperty(state.object_, key, null, descriptor); + } + else { + // Set a normal property with a value. + this.setProperty(state.object_, key, kinds['init']); + } } - } - }; - ; - Interpreter.prototype.stepCatchClause = function (stack, state, node) { - if (!state.done_) { - state.done_ = true; - // Create an empty scope. - var scope = this.createSpecialScope(state.scope); - // Add the argument. - this.setProperty(scope, node['param']['name'], state.throwValue); - // Execute catch clause. - return new Interpreter.MyState(node['body'], scope); - } - else { stack.pop(); - } - }; - ; - Interpreter.prototype.stepConditionalExpression = function (stack, state, node) { - var mode = state.mode_ || 0; - if (mode === 0) { - state.mode_ = 1; - return new Interpreter.MyState(node['test'], state.scope); - } - if (mode === 1) { - state.mode_ = 2; - var value = Boolean(state.value); - if (value && node['consequent']) { - // Execute 'if' block. - return new Interpreter.MyState(node['consequent'], state.scope); - } - else if (!value && node['alternate']) { - // Execute 'else' block. - return new Interpreter.MyState(node['alternate'], state.scope); - } - // eval('1;if(false){2}') -> undefined - this.value = undefined; - } - stack.pop(); - if (node['type'] === 'ConditionalExpression') { - stack[stack.length - 1].value = state.value; - } - }; - ; - Interpreter.prototype.stepContinueStatement = function (stack, state, node) { - stack.pop(); - var label = null; - if (node['label']) { - label = node['label']['name']; - } - state = stack[stack.length - 1]; - while (state && - state.node['type'] !== 'CallExpression' && - state.node['type'] !== 'NewExpression') { - if (state.isLoop) { - if (!label || (state.labels && state.labels.indexOf(label) !== -1)) { - return; + stack[stack.length - 1].value = state.object_; + }; + ; + Interpreter.prototype.stepProgram = function (stack, state, node) { + var n = state.n_ || 0; + var expression = node['body'][n]; + if (expression) { + state.done = false; + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); + } + state.done = true; + // Don't pop the stateStack. + // Leave the root scope on the tree in case the program is appended to. + }; + ; + Interpreter.prototype.stepReturnStatement = function (stack, state, node) { + if (node['argument'] && !state.done_) { + state.done_ = true; + return new Interpreter.MyState(node['argument'], state.scope); + } + var value = state.value; + var i = stack.length - 1; + state = stack[i]; + while (state.node['type'] !== 'CallExpression' && + state.node['type'] !== 'NewExpression') { + if (state.node['type'] !== 'TryStatement') { + stack.splice(i, 1); + } + i--; + if (i < 0) { + // Syntax error, do not allow this error to be trapped. + throw SyntaxError('Illegal return statement'); } + state = stack[i]; + } + state.value = value; + }; + ; + Interpreter.prototype.stepSequenceExpression = function (stack, state, node) { + var n = state.n_ || 0; + var expression = node['expressions'][n]; + if (expression) { + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); } stack.pop(); - state = stack[stack.length - 1]; - } - // Syntax error, do not allow this error to be trapped. - throw SyntaxError('Illegal continue statement'); - }; - ; - Interpreter.prototype.stepDebuggerStatement = function (stack, state, node) { - // Do nothing. May be overridden by developers. - stack.pop(); - }; - ; - Interpreter.prototype.stepDoWhileStatement = function (stack, state, node) { - if (node['type'] === 'DoWhileStatement' && state.test_ === undefined) { - // First iteration of do/while executes without checking test. - state.value = true; - state.test_ = true; - } - if (!state.test_) { - state.test_ = true; - return new Interpreter.MyState(node['test'], state.scope); - } - if (!state.value) { - stack.pop(); - } - else if (node['body']) { - state.test_ = false; - state.isLoop = true; - return new Interpreter.MyState(node['body'], state.scope); - } - }; - ; - Interpreter.prototype.stepEmptyStatement = function (stack, state, node) { - stack.pop(); - }; - ; - Interpreter.prototype.stepEvalProgram_ = function (stack, state, node) { - var n = state.n_ || 0; - var expression = node['body'][n]; - if (expression) { - state.n_ = n + 1; - return new Interpreter.MyState(expression, state.scope); - } - stack.pop(); - stack[stack.length - 1].value = this.value; - }; - ; - Interpreter.prototype.stepExpressionStatement = function (stack, state, node) { - if (!state.done_) { - state.done_ = true; - return new Interpreter.MyState(node['expression'], state.scope); - } - stack.pop(); - // Save this value to interpreter.value for use as a return value if - // this code is inside an eval function. - this.value = state.value; - }; - ; - Interpreter.prototype.stepForInStatement = function (stack, state, node) { - // First, initialize a variable if exists. Only do so once, ever. - if (!state.doneInit_) { - state.doneInit_ = true; - if (node['left']['declarations'] && - node['left']['declarations'][0]['init']) { - if (state.scope.strict) { - this.throwException(this.SYNTAX_ERROR, 'for-in loop variable declaration may not have an initializer.'); - } - // Variable initialization: for (var x = 4 in y) - return new Interpreter.MyState(node['left'], state.scope); + stack[stack.length - 1].value = state.value; + }; + ; + Interpreter.prototype.stepSwitchStatement = function (stack, state, node) { + if (!state.test_) { + state.test_ = 1; + return new Interpreter.MyState(node['discriminant'], state.scope); } - } - // Second, look up the object. Only do so once, ever. - if (!state.doneObject_) { - state.doneObject_ = true; - if (!state.variable_) { - state.variable_ = state.value; + if (state.test_ === 1) { + state.test_ = 2; + // Preserve switch value between case tests. + state.switchValue_ = state.value; } - return new Interpreter.MyState(node['right'], state.scope); - } - if (!state.isLoop) { - // First iteration. - state.isLoop = true; - state.object_ = state.value; - state.visited_ = Object.create(null); - } - // Third, find the property name for this iteration. - if (state.name_ === undefined) { - done: do { - if (state.object_ && state.object_.isObject) { - if (!state.props_) { - state.props_ = Object.getOwnPropertyNames(state.object_.properties); + while (true) { + var index = state.index_ || 0; + var switchCase = node['cases'][index]; + if (!state.matched_ && switchCase && !switchCase['test']) { + // Test on the default case is null. + // Bypass (but store) the default case, and get back to it later. + state.defaultCase_ = index; + state.index_ = index + 1; + continue; + } + if (!switchCase && !state.matched_ && state.defaultCase_) { + // Ran through all cases, no match. Jump to the default. + state.matched_ = true; + state.index_ = state.defaultCase_; + continue; + } + if (switchCase) { + if (!state.matched_ && !state.tested_ && switchCase['test']) { + state.tested_ = true; + return new Interpreter.MyState(switchCase['test'], state.scope); } - do { - var prop = state.props_.shift(); - } while (prop && (state.visited_[prop] || - !Object.prototype.hasOwnProperty.call(state.object_.properties, prop))); - if (prop) { - state.visited_[prop] = true; - if (Object.prototype.propertyIsEnumerable.call(state.object_.properties, prop)) { - state.name_ = prop; - break done; + if (state.matched_ || state.value === state.switchValue_) { + state.matched_ = true; + var n = state.n_ || 0; + if (switchCase['consequent'][n]) { + state.isSwitch = true; + state.n_ = n + 1; + return new Interpreter.MyState(switchCase['consequent'][n], state.scope); } } + // Move on to next case. + state.tested_ = false; + state.n_ = 0; + state.index_ = index + 1; } - else if (state.object_ !== null) { - if (!state.props_) { - state.props_ = Object.getOwnPropertyNames(state.object_); - } - do { - var prop = state.props_.shift(); - } while (prop && state.visited_[prop]); - if (prop) { - state.visited_[prop] = true; - state.name_ = prop; - break done; - } + else { + stack.pop(); + return; } - state.object_ = this.getPrototype(state.object_); - state.props_ = null; - } while (state.object_ !== null); - if (state.object_ === null) { - // Done, exit loop. - stack.pop(); - return; } - } - // Fourth, find the variable - if (!state.doneVariable_) { - state.doneVariable_ = true; - var left = node['left']; - if (left['type'] === 'VariableDeclaration') { - // Inline variable declaration: for (var x in y) - state.variable_ = - [Interpreter.SCOPE_REFERENCE, left['declarations'][0]['id']['name']]; + }; + ; + Interpreter.prototype.stepThisExpression = function (stack, state, node) { + stack.pop(); + stack[stack.length - 1].value = this.getValueFromScope('this'); + }; + ; + Interpreter.prototype.stepThrowStatement = function (stack, state, node) { + if (!state.done_) { + state.done_ = true; + return new Interpreter.MyState(node['argument'], state.scope); } else { - // Arbitrary left side: for (foo().bar in y) - state.variable_ = null; - var nextState = new Interpreter.MyState(left, state.scope); - nextState.components = true; - return nextState; - } - } - if (!state.variable_) { - state.variable_ = state.value; - } - // Fifth, set the variable. - if (!state.doneSetter_) { - state.doneSetter_ = true; - var value = state.name_; - var setter = this.setValue(state.variable_, value); - if (setter) { - return this.createSetter_(setter, state.variable_, value); + this.throwException(state.value); } - } - // Next step will be step three. - state.name_ = undefined; - // Reevaluate the variable since it could be a setter on the global object. - state.doneVariable_ = false; - state.doneSetter_ = false; - // Sixth and finally, execute the body if there was one. this. - if (node['body']) { - return new Interpreter.MyState(node['body'], state.scope); - } - }; - ; - Interpreter.prototype.stepForStatement = function (stack, state, node) { - var mode = state.mode_ || 0; - if (mode === 0) { - state.mode_ = 1; - if (node['init']) { - return new Interpreter.MyState(node['init'], state.scope); + }; + ; + Interpreter.prototype.stepTryStatement = function (stack, state, node) { + if (!state.doneBlock_) { + state.doneBlock_ = true; + return new Interpreter.MyState(node['block'], state.scope); + } + if (state.throwValue && !state.doneHandler_ && node['handler']) { + state.doneHandler_ = true; + var nextState = new Interpreter.MyState(node['handler'], state.scope); + nextState.throwValue = state.throwValue; + state.throwValue = null; // This error has been handled, don't rethrow. + return nextState; } - } - else if (mode === 1) { - state.mode_ = 2; - if (node['test']) { - return new Interpreter.MyState(node['test'], state.scope); + if (!state.doneFinalizer_ && node['finalizer']) { + state.doneFinalizer_ = true; + return new Interpreter.MyState(node['finalizer'], state.scope); } - } - else if (mode === 2) { - state.mode_ = 3; - if (node['test'] && !state.value) { - // Done, exit loop. - stack.pop(); + if (state.throwValue) { + // There was no catch handler, or the catch/finally threw an error. + // Throw the error up to a higher try. + this.executeException(state.throwValue); } else { - state.isLoop = true; - return new Interpreter.MyState(node['body'], state.scope); - } - } - else if (mode === 3) { - state.mode_ = 1; - if (node['update']) { - return new Interpreter.MyState(node['update'], state.scope); - } - } - }; - ; - Interpreter.prototype.stepFunctionDeclaration = function (stack, state, node) { - // This was found and handled when the scope was populated. - stack.pop(); - }; - ; - Interpreter.prototype.stepFunctionExpression = function (stack, state, node) { - stack.pop(); - stack[stack.length - 1].value = this.createFunction(node, state.scope); - }; - ; - Interpreter.prototype.stepIdentifier = function (stack, state, node) { - stack.pop(); - if (state.components) { - stack[stack.length - 1].value = [Interpreter.SCOPE_REFERENCE, node['name']]; - return; - } - var value = this.getValueFromScope(node['name']); - // An identifier could be a getter if it's a property on the global object. - if (value && typeof value === 'object' && value.isGetter) { - // Clear the getter flag and call the getter function. - value.isGetter = false; - var scope = state.scope; - while (!this.hasProperty(scope, node['name'])) { - scope = scope.parentScope; - } - var func = (value); - return this.createGetter_(func, this.global); - } - stack[stack.length - 1].value = value; - }; - ; - Interpreter.prototype.stepIfStatement = function (stack, state, node) { - return this.stepConditionalExpression(stack, state, node); - }; - Interpreter.prototype.stepLabeledStatement = function (stack, state, node) { - // No need to hit this node again on the way back up the stack. - stack.pop(); - // Note that a statement might have multiple labels. - var labels = state.labels || []; - labels.push(node['label']['name']); - var nextState = new Interpreter.MyState(node['body'], state.scope); - nextState.labels = labels; - return nextState; - }; - ; - Interpreter.prototype.stepLiteral = function (stack, state, node) { - stack.pop(); - var value = node['value']; - if (value instanceof RegExp) { - var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO); - this.populateRegExp(pseudoRegexp, value); - value = pseudoRegexp; - } - stack[stack.length - 1].value = value; - }; - ; - Interpreter.prototype.stepLogicalExpression = function (stack, state, node) { - if (node['operator'] !== '&&' && node['operator'] !== '||') { - throw SyntaxError('Unknown logical operator: ' + node['operator']); - } - if (!state.doneLeft_) { - state.doneLeft_ = true; - return new Interpreter.MyState(node['left'], state.scope); - } - if (!state.doneRight_) { - if ((node['operator'] === '&&' && !state.value) || - (node['operator'] === '||' && state.value)) { - // Shortcut evaluation. stack.pop(); - stack[stack.length - 1].value = state.value; } - else { - state.doneRight_ = true; - return new Interpreter.MyState(node['right'], state.scope); + }; + ; + Interpreter.prototype.stepUnaryExpression = function (stack, state, node) { + if (!state.done_) { + state.done_ = true; + var nextState = new Interpreter.MyState(node['argument'], state.scope); + nextState.components = node['operator'] === 'delete'; + return nextState; } - } - else { stack.pop(); - stack[stack.length - 1].value = state.value; - } - }; - ; - Interpreter.prototype.stepMemberExpression = function (stack, state, node) { - if (!state.doneObject_) { - state.doneObject_ = true; - return new Interpreter.MyState(node['object'], state.scope); - } - var propName; - if (!node['computed']) { - state.object_ = state.value; - // obj.foo -- Just access 'foo' directly. - propName = node['property']['name']; - } - else if (!state.doneProperty_) { - state.object_ = state.value; - // obj[foo] -- Compute value of 'foo'. - state.doneProperty_ = true; - return new Interpreter.MyState(node['property'], state.scope); - } - else { - propName = state.value; - } - stack.pop(); - if (state.components) { - stack[stack.length - 1].value = [state.object_, propName]; - } - else { - var value = this.getProperty(state.object_, propName); - if (value && typeof value === 'object' && value.isGetter) { - // Clear the getter flag and call the getter function. - value.isGetter = false; - var func = (value); - return this.createGetter_(func, state.object_); + var value = state.value; + if (node['operator'] === '-') { + value = -value; + } + else if (node['operator'] === '+') { + value = +value; + } + else if (node['operator'] === '!') { + value = !value; + } + else if (node['operator'] === '~') { + value = ~value; + } + else if (node['operator'] === 'delete') { + var result = true; + // If value is not an array, then it is a primitive, or some other value. + // If so, skip the delete and return true. + if (Array.isArray(value)) { + var obj = value[0]; + if (obj === Interpreter.SCOPE_REFERENCE) { + // 'delete foo;' is the same as 'delete window.foo'. + obj = state.scope; + } + var name = String(value[1]); + try { + delete obj.properties[name]; + } + catch (e) { + if (state.scope.strict) { + this.throwException(this.TYPE_ERROR, "Cannot delete property '" + + name + "' of '" + obj + "'"); + } + else { + result = false; + } + } + } + value = result; } - stack[stack.length - 1].value = value; - } - }; - ; - Interpreter.prototype.stepNewExpression = function (stack, state, node) { - return this.stepCallExpression(stack, state, node); - }; - Interpreter.prototype.stepObjectExpression = function (stack, state, node) { - var n = state.n_ || 0; - var property = node['properties'][n]; - if (!state.object_) { - // First execution. - state.object_ = this.createObjectProto(this.OBJECT_PROTO); - state.properties_ = Object.create(null); - } - else { - // Determine property name. - var key = property['key']; - if (key['type'] === 'Identifier') { - var propName = key['name']; + else if (node['operator'] === 'typeof') { + value = (value && value["class"] === 'Function') ? 'function' : typeof value; } - else if (key['type'] === 'Literal') { - var propName = key['value']; + else if (node['operator'] === 'void') { + value = undefined; } else { - throw SyntaxError('Unknown object structure: ' + key['type']); - } - // Set the property computed in the previous execution. - if (!state.properties_[propName]) { - // Create temp object to collect value, getter, and/or setter. - state.properties_[propName] = {}; + throw SyntaxError('Unknown unary operator: ' + node['operator']); } - state.properties_[propName][property['kind']] = state.value; - state.n_ = ++n; - property = node['properties'][n]; - } - if (property) { - return new Interpreter.MyState(property['value'], state.scope); - } - for (var key in state.properties_) { - var kinds = state.properties_[key]; - if ('get' in kinds || 'set' in kinds) { - // Set a property with a getter or setter. - var descriptor = { - configurable: true, - enumerable: true, - get: kinds['get'], - set: kinds['set'] - }; - this.setProperty(state.object_, key, null, descriptor); + stack[stack.length - 1].value = value; + }; + ; + Interpreter.prototype.stepUpdateExpression = function (stack, state, node) { + if (!state.doneLeft_) { + state.doneLeft_ = true; + var nextState = new Interpreter.MyState(node['argument'], state.scope); + nextState.components = true; + return nextState; } - else { - // Set a normal property with a value. - this.setProperty(state.object_, key, kinds['init']); + if (!state.leftSide_) { + state.leftSide_ = state.value; } - } - stack.pop(); - stack[stack.length - 1].value = state.object_; - }; - ; - Interpreter.prototype.stepProgram = function (stack, state, node) { - var n = state.n_ || 0; - var expression = node['body'][n]; - if (expression) { - state.done = false; - state.n_ = n + 1; - return new Interpreter.MyState(expression, state.scope); - } - state.done = true; - // Don't pop the stateStack. - // Leave the root scope on the tree in case the program is appended to. - }; - ; - Interpreter.prototype.stepReturnStatement = function (stack, state, node) { - if (node['argument'] && !state.done_) { - state.done_ = true; - return new Interpreter.MyState(node['argument'], state.scope); - } - var value = state.value; - var i = stack.length - 1; - state = stack[i]; - while (state.node['type'] !== 'CallExpression' && - state.node['type'] !== 'NewExpression') { - if (state.node['type'] !== 'TryStatement') { - stack.splice(i, 1); - } - i--; - if (i < 0) { - // Syntax error, do not allow this error to be trapped. - throw SyntaxError('Illegal return statement'); + if (state.doneGetter_) { + state.leftValue_ = state.value; } - state = stack[i]; - } - state.value = value; - }; - ; - Interpreter.prototype.stepSequenceExpression = function (stack, state, node) { - var n = state.n_ || 0; - var expression = node['expressions'][n]; - if (expression) { - state.n_ = n + 1; - return new Interpreter.MyState(expression, state.scope); - } - stack.pop(); - stack[stack.length - 1].value = state.value; - }; - ; - Interpreter.prototype.stepSwitchStatement = function (stack, state, node) { - if (!state.test_) { - state.test_ = 1; - return new Interpreter.MyState(node['discriminant'], state.scope); - } - if (state.test_ === 1) { - state.test_ = 2; - // Preserve switch value between case tests. - state.switchValue_ = state.value; - } - while (true) { - var index = state.index_ || 0; - var switchCase = node['cases'][index]; - if (!state.matched_ && switchCase && !switchCase['test']) { - // Test on the default case is null. - // Bypass (but store) the default case, and get back to it later. - state.defaultCase_ = index; - state.index_ = index + 1; - continue; - } - if (!switchCase && !state.matched_ && state.defaultCase_) { - // Ran through all cases, no match. Jump to the default. - state.matched_ = true; - state.index_ = state.defaultCase_; - continue; - } - if (switchCase) { - if (!state.matched_ && !state.tested_ && switchCase['test']) { - state.tested_ = true; - return new Interpreter.MyState(switchCase['test'], state.scope); - } - if (state.matched_ || state.value === state.switchValue_) { - state.matched_ = true; - var n = state.n_ || 0; - if (switchCase['consequent'][n]) { - state.isSwitch = true; - state.n_ = n + 1; - return new Interpreter.MyState(switchCase['consequent'][n], state.scope); - } + if (!state.doneGetter_) { + var leftValue = this.getValue(state.leftSide_); + state.leftValue_ = leftValue; + if (leftValue && typeof leftValue === 'object' && leftValue.isGetter) { + // Clear the getter flag and call the getter function. + leftValue.isGetter = false; + state.doneGetter_ = true; + var func = (leftValue); + return this.createGetter_(func, state.leftSide_); } - // Move on to next case. - state.tested_ = false; - state.n_ = 0; - state.index_ = index + 1; } - else { + if (state.doneSetter_) { + // Return if setter function. + // Setter method on property has completed. + // Ignore its return value, and use the original set value instead. stack.pop(); + stack[stack.length - 1].value = state.doneSetter_; return; } - } - }; - ; - Interpreter.prototype.stepThisExpression = function (stack, state, node) { - stack.pop(); - stack[stack.length - 1].value = this.getValueFromScope('this'); - }; - ; - Interpreter.prototype.stepThrowStatement = function (stack, state, node) { - if (!state.done_) { - state.done_ = true; - return new Interpreter.MyState(node['argument'], state.scope); - } - else { - this.throwException(state.value); - } - }; - ; - Interpreter.prototype.stepTryStatement = function (stack, state, node) { - if (!state.doneBlock_) { - state.doneBlock_ = true; - return new Interpreter.MyState(node['block'], state.scope); - } - if (state.throwValue && !state.doneHandler_ && node['handler']) { - state.doneHandler_ = true; - var nextState = new Interpreter.MyState(node['handler'], state.scope); - nextState.throwValue = state.throwValue; - state.throwValue = null; // This error has been handled, don't rethrow. - return nextState; - } - if (!state.doneFinalizer_ && node['finalizer']) { - state.doneFinalizer_ = true; - return new Interpreter.MyState(node['finalizer'], state.scope); - } - if (state.throwValue) { - // There was no catch handler, or the catch/finally threw an error. - // Throw the error up to a higher try. - this.executeException(state.throwValue); - } - else { - stack.pop(); - } - }; - ; - Interpreter.prototype.stepUnaryExpression = function (stack, state, node) { - if (!state.done_) { - state.done_ = true; - var nextState = new Interpreter.MyState(node['argument'], state.scope); - nextState.components = node['operator'] === 'delete'; - return nextState; - } - stack.pop(); - var value = state.value; - if (node['operator'] === '-') { - value = -value; - } - else if (node['operator'] === '+') { - value = +value; - } - else if (node['operator'] === '!') { - value = !value; - } - else if (node['operator'] === '~') { - value = ~value; - } - else if (node['operator'] === 'delete') { - var result = true; - // If value is not an array, then it is a primitive, or some other value. - // If so, skip the delete and return true. - if (Array.isArray(value)) { - var obj = value[0]; - if (obj === Interpreter.SCOPE_REFERENCE) { - // 'delete foo;' is the same as 'delete window.foo'. - obj = state.scope; - } - var name = String(value[1]); - try { - delete obj.properties[name]; - } - catch (e) { - if (state.scope.strict) { - this.throwException(this.TYPE_ERROR, "Cannot delete property '" + - name + "' of '" + obj + "'"); - } - else { - result = false; - } - } + leftValue = Number(state.leftValue_); + var changeValue; + if (node['operator'] === '++') { + changeValue = leftValue + 1; } - value = result; - } - else if (node['operator'] === 'typeof') { - value = (value && value["class"] === 'Function') ? 'function' : typeof value; - } - else if (node['operator'] === 'void') { - value = undefined; - } - else { - throw SyntaxError('Unknown unary operator: ' + node['operator']); - } - stack[stack.length - 1].value = value; - }; - ; - Interpreter.prototype.stepUpdateExpression = function (stack, state, node) { - if (!state.doneLeft_) { - state.doneLeft_ = true; - var nextState = new Interpreter.MyState(node['argument'], state.scope); - nextState.components = true; - return nextState; - } - if (!state.leftSide_) { - state.leftSide_ = state.value; - } - if (state.doneGetter_) { - state.leftValue_ = state.value; - } - if (!state.doneGetter_) { - var leftValue = this.getValue(state.leftSide_); - state.leftValue_ = leftValue; - if (leftValue && typeof leftValue === 'object' && leftValue.isGetter) { - // Clear the getter flag and call the getter function. - leftValue.isGetter = false; - state.doneGetter_ = true; - var func = (leftValue); - return this.createGetter_(func, state.leftSide_); + else if (node['operator'] === '--') { + changeValue = leftValue - 1; } - } - if (state.doneSetter_) { - // Return if setter function. - // Setter method on property has completed. - // Ignore its return value, and use the original set value instead. + else { + throw SyntaxError('Unknown update expression: ' + node['operator']); + } + var returnValue = node['prefix'] ? changeValue : leftValue; + var setter = this.setValue(state.leftSide_, changeValue); + if (setter) { + state.doneSetter_ = returnValue; + return this.createSetter_(setter, state.leftSide_, changeValue); + } + // Return if no setter function. stack.pop(); - stack[stack.length - 1].value = state.doneSetter_; - return; - } - leftValue = Number(state.leftValue_); - var changeValue; - if (node['operator'] === '++') { - changeValue = leftValue + 1; - } - else if (node['operator'] === '--') { - changeValue = leftValue - 1; - } - else { - throw SyntaxError('Unknown update expression: ' + node['operator']); - } - var returnValue = node['prefix'] ? changeValue : leftValue; - var setter = this.setValue(state.leftSide_, changeValue); - if (setter) { - state.doneSetter_ = returnValue; - return this.createSetter_(setter, state.leftSide_, changeValue); - } - // Return if no setter function. - stack.pop(); - stack[stack.length - 1].value = returnValue; - }; - ; - Interpreter.prototype.stepVariableDeclaration = function (stack, state, node) { - var declarations = node['declarations']; - var n = state.n_ || 0; - var declarationNode = declarations[n]; - if (state.init_ && declarationNode) { - // This setValue call never needs to deal with calling a setter function. - // Note that this is setting the init value, not defining the variable. - // Variable definition is done when scope is populated. - this.setValueToScope(declarationNode['id']['name'], state.value); - state.init_ = false; - declarationNode = declarations[++n]; - } - while (declarationNode) { - // Skip any declarations that are not initialized. They have already - // been defined as undefined in populateScope_. - if (declarationNode['init']) { - state.n_ = n; - state.init_ = true; - return new Interpreter.MyState(declarationNode['init'], state.scope); - } - declarationNode = declarations[++n]; - } - stack.pop(); - }; - ; - Interpreter.prototype.stepWithStatement = function (stack, state, node) { - if (!state.doneObject_) { - state.doneObject_ = true; - return new Interpreter.MyState(node['object'], state.scope); - } - else if (!state.doneBody_) { - state.doneBody_ = true; - var scope = this.createSpecialScope(state.scope, state.value); - return new Interpreter.MyState(node['body'], scope); - } - else { + stack[stack.length - 1].value = returnValue; + }; + ; + Interpreter.prototype.stepVariableDeclaration = function (stack, state, node) { + var declarations = node['declarations']; + var n = state.n_ || 0; + var declarationNode = declarations[n]; + if (state.init_ && declarationNode) { + // This setValue call never needs to deal with calling a setter function. + // Note that this is setting the init value, not defining the variable. + // Variable definition is done when scope is populated. + this.setValueToScope(declarationNode['id']['name'], state.value); + state.init_ = false; + declarationNode = declarations[++n]; + } + while (declarationNode) { + // Skip any declarations that are not initialized. They have already + // been defined as undefined in populateScope_. + if (declarationNode['init']) { + state.n_ = n; + state.init_ = true; + return new Interpreter.MyState(declarationNode['init'], state.scope); + } + declarationNode = declarations[++n]; + } stack.pop(); - } - }; - ; - Interpreter.prototype.stepWhileStatement = function (stack, state, node) { - return this.stepDoWhileStatement(stack, state, node); - }; - /** - * @const {!Object} Configuration used for all Acorn parsing. - */ - Interpreter.PARSE_OPTIONS = { - ecmaVersion: 5 - }; - /** - * Property descriptor of readonly properties. - */ - Interpreter.READONLY_DESCRIPTOR = { - configurable: true, - enumerable: true, - writable: false - }; - /** - * Property descriptor of non-enumerable properties. - */ - Interpreter.NONENUMERABLE_DESCRIPTOR = { - configurable: true, - enumerable: false, - writable: true - }; - /** - * Property descriptor of readonly, non-enumerable properties. - */ - Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR = { - configurable: true, - enumerable: false, - writable: false - }; - /** - * Property descriptor of variables. - */ - Interpreter.VARIABLE_DESCRIPTOR = { - configurable: false, - enumerable: true, - writable: true - }; - /** - * Unique symbol for indicating that a step has encountered an error, has - * added it to the stack, and will be thrown within the user's program. - * When STEP_ERROR is thrown in the JS-Interpreter, the error can be ignored. - */ - Interpreter.STEP_ERROR = {}; - /** - * Unique symbol for indicating that a reference is a variable on the scope, - * not an object property. - */ - Interpreter.SCOPE_REFERENCE = {}; - /** - * For cycle detection in array to string and error conversion; - * see spec bug github.com/tc39/ecma262/issues/289 - * Since this is for atomic actions only, it can be a class property. - */ - Interpreter.toStringCycles_ = []; - return Interpreter; -}()); -// Preserve top-level API functions from being pruned/renamed by JS compilers. -// Add others as needed. -// The global object ('window' in a browser, 'global' in node.js) is 'this'. -this['Interpreter'] = Interpreter; -Interpreter.prototype['step'] = Interpreter.prototype.step; -Interpreter.prototype['run'] = Interpreter.prototype.run; -Interpreter.prototype['appendCode'] = Interpreter.prototype.appendCode; -Interpreter.prototype['createObject'] = Interpreter.prototype.createObject; -Interpreter.prototype['createObjectProto'] = - Interpreter.prototype.createObjectProto; -Interpreter.prototype['createAsyncFunction'] = - Interpreter.prototype.createAsyncFunction; -Interpreter.prototype['createNativeFunction'] = - Interpreter.prototype.createNativeFunction; -Interpreter.prototype['getProperty'] = Interpreter.prototype.getProperty; -Interpreter.prototype['setProperty'] = Interpreter.prototype.setProperty; -Interpreter.prototype['nativeToPseudo'] = Interpreter.prototype.nativeToPseudo; -Interpreter.prototype['pseudoToNative'] = Interpreter.prototype.pseudoToNative; -// Obsolete. Do not use. -// private createPrimitive(x) {return x;}; -(function (Interpreter) { - /** - * Class for an object. - * @param {Interpreter.MyObject} proto Prototype object or null. - * @constructor - */ - var MyObject = (function () { - function MyObject(proto) { - /** @type {Interpreter.MyObject} */ - this.proto = null; - /** @type {boolean} */ - this.isObject = true; - /** @type {string} */ - this["class"] = 'Object'; - /** @type {Date|RegExp|boolean|number|string|undefined|null} */ - this.data = null; - this.getter = Object.create(null); - this.setter = Object.create(null); - this.properties = Object.create(null); - this.proto = proto; - } + }; + ; + Interpreter.prototype.stepWithStatement = function (stack, state, node) { + if (!state.doneObject_) { + state.doneObject_ = true; + return new Interpreter.MyState(node['object'], state.scope); + } + else if (!state.doneBody_) { + state.doneBody_ = true; + var scope = this.createSpecialScope(state.scope, state.value); + return new Interpreter.MyState(node['body'], scope); + } + else { + stack.pop(); + } + }; + ; + Interpreter.prototype.stepWhileStatement = function (stack, state, node) { + return this.stepDoWhileStatement(stack, state, node); + }; /** - * Convert this object into a string. - * @return {string} String value. - * @override + * @const {!Object} Configuration used for all Acorn parsing. */ - MyObject.prototype.toString = function () { - if (this["class"] === 'Array') { - // Array - var cycles = Interpreter.toStringCycles_; - cycles.push(this); - try { - var strs = []; - for (var i = 0; i < this.properties.length; i++) { - var value = this.properties[i]; - strs[i] = (value && value.isObject && cycles.indexOf(value) !== -1) ? - '...' : value; + Interpreter.PARSE_OPTIONS = { + ecmaVersion: 5 + }; + /** + * Property descriptor of readonly properties. + */ + Interpreter.READONLY_DESCRIPTOR = { + configurable: true, + enumerable: true, + writable: false + }; + /** + * Property descriptor of non-enumerable properties. + */ + Interpreter.NONENUMERABLE_DESCRIPTOR = { + configurable: true, + enumerable: false, + writable: true + }; + /** + * Property descriptor of readonly, non-enumerable properties. + */ + Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR = { + configurable: true, + enumerable: false, + writable: false + }; + /** + * Property descriptor of variables. + */ + Interpreter.VARIABLE_DESCRIPTOR = { + configurable: false, + enumerable: true, + writable: true + }; + /** + * Unique symbol for indicating that a step has encountered an error, has + * added it to the stack, and will be thrown within the user's program. + * When STEP_ERROR is thrown in the JS-Interpreter, the error can be ignored. + */ + Interpreter.STEP_ERROR = {}; + /** + * Unique symbol for indicating that a reference is a variable on the scope, + * not an object property. + */ + Interpreter.SCOPE_REFERENCE = {}; + /** + * For cycle detection in array to string and error conversion; + * see spec bug github.com/tc39/ecma262/issues/289 + * Since this is for atomic actions only, it can be a class property. + */ + Interpreter.toStringCycles_ = []; + return Interpreter; + }()); + // Preserve top-level API functions from being pruned/renamed by JS compilers. + // Add others as needed. + // The global object ('window' in a browser, 'global' in node.js) is 'this'. + this['Interpreter'] = Interpreter; + Interpreter.prototype['step'] = Interpreter.prototype.step; + Interpreter.prototype['run'] = Interpreter.prototype.run; + Interpreter.prototype['appendCode'] = Interpreter.prototype.appendCode; + Interpreter.prototype['createObject'] = Interpreter.prototype.createObject; + Interpreter.prototype['createObjectProto'] = + Interpreter.prototype.createObjectProto; + Interpreter.prototype['createAsyncFunction'] = + Interpreter.prototype.createAsyncFunction; + Interpreter.prototype['createNativeFunction'] = + Interpreter.prototype.createNativeFunction; + Interpreter.prototype['getProperty'] = Interpreter.prototype.getProperty; + Interpreter.prototype['setProperty'] = Interpreter.prototype.setProperty; + Interpreter.prototype['nativeToPseudo'] = Interpreter.prototype.nativeToPseudo; + Interpreter.prototype['pseudoToNative'] = Interpreter.prototype.pseudoToNative; + // Obsolete. Do not use. + // private createPrimitive(x) {return x;}; + (function (Interpreter) { + /** + * Class for an object. + * @param {Interpreter.MyObject} proto Prototype object or null. + * @constructor + */ + var MyObject = (function () { + function MyObject(proto) { + /** @type {Interpreter.MyObject} */ + this.proto = null; + /** @type {boolean} */ + this.isObject = true; + /** @type {string} */ + this["class"] = 'Object'; + /** @type {Date|RegExp|boolean|number|string|undefined|null} */ + this.data = null; + this.getter = Object.create(null); + this.setter = Object.create(null); + this.properties = Object.create(null); + this.proto = proto; + } + /** + * Convert this object into a string. + * @return {string} String value. + * @override + */ + MyObject.prototype.toString = function () { + if (this["class"] === 'Array') { + // Array + var cycles = Interpreter.toStringCycles_; + cycles.push(this); + try { + var strs = []; + for (var i = 0; i < this.properties.length; i++) { + var value = this.properties[i]; + strs[i] = (value && value.isObject && cycles.indexOf(value) !== -1) ? + '...' : value; + } } + finally { + cycles.pop(); + } + return strs.join(','); } - finally { - cycles.pop(); - } - return strs.join(','); - } - if (this["class"] === 'Error') { - var cycles = Interpreter.toStringCycles_; - if (cycles.indexOf(this) !== -1) { - return '[object Error]'; - } - var name, message; - // Bug: Does not support getters and setters for name or message. - var obj = this; - do { - if ('name' in obj.properties) { - name = obj.properties['name']; - break; + if (this["class"] === 'Error') { + var cycles = Interpreter.toStringCycles_; + if (cycles.indexOf(this) !== -1) { + return '[object Error]'; } - } while ((obj = obj.proto)); - var obj = this; - do { - if ('message' in obj.properties) { - message = obj.properties['message']; - break; + var name, message; + // Bug: Does not support getters and setters for name or message. + var obj = this; + do { + if ('name' in obj.properties) { + name = obj.properties['name']; + break; + } + } while ((obj = obj.proto)); + var obj = this; + do { + if ('message' in obj.properties) { + message = obj.properties['message']; + break; + } + } while ((obj = obj.proto)); + cycles.push(this); + try { + name = name && name.toString(); + message = message && message.toString(); } - } while ((obj = obj.proto)); - cycles.push(this); - try { - name = name && name.toString(); - message = message && message.toString(); + finally { + cycles.pop(); + } + return message ? name + ': ' + message : String(name); } - finally { - cycles.pop(); + // RegExp, Date, and boxed primitives. + if (this.data !== null) { + return String(this.data); } - return message ? name + ': ' + message : String(name); - } - // RegExp, Date, and boxed primitives. - if (this.data !== null) { - return String(this.data); - } - return '[object ' + this["class"] + ']'; - }; + return '[object ' + this["class"] + ']'; + }; + /** + * Return the object's value. + * @return {Interpreter.MyValue} Value. + * @override + */ + MyObject.prototype.valueOf = function () { + if (this.data === undefined || this.data === null || + this.data instanceof RegExp) { + return this; // An Object. + } + if (this.data instanceof Date) { + return this.data.valueOf(); // Milliseconds. + } + return (this.data); // Boxed primitive. + }; + return MyObject; + }()); + Interpreter.MyObject = MyObject; /** - * Return the object's value. - * @return {Interpreter.Value} Value. - * @override + * Class for a state. + * @param {!MyObject} node AST node for the state. + * @param {!Interpreter.MyObject} scope Scope object for the state. + * @constructor */ - MyObject.prototype.valueOf = function () { - if (this.data === undefined || this.data === null || - this.data instanceof RegExp) { - return this; // An Object. - } - if (this.data instanceof Date) { - return this.data.valueOf(); // Milliseconds. - } - return (this.data); // Boxed primitive. - }; - return MyObject; - }()); - Interpreter.MyObject = MyObject; - /** - * Class for a state. - * @param {!MyObject} node AST node for the state. - * @param {!Interpreter.MyObject} scope Scope object for the state. - * @constructor - */ - var MyState = (function () { - function MyState(node, scope) { - this.node = node; - this.scope = scope; - } - return MyState; - }()); - Interpreter.MyState = MyState; -})(Interpreter || (Interpreter = {})); + var MyState = (function () { + function MyState(node, scope) { + this.node = node; + this.scope = scope; + } + return MyState; + }()); + Interpreter.MyState = MyState; + })(Interpreter || (Interpreter = {})); +}); //# sourceMappingURL=interpreter.js.map \ No newline at end of file diff --git a/interpreter.js.map b/interpreter.js.map index af6e9bb3..bed6a50e 100644 --- a/interpreter.js.map +++ b/interpreter.js.map @@ -1 +1 @@ -{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["interpreter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["interpreter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/interpreter.ts b/interpreter.ts index 6a83ae48..69d7e774 100644 --- a/interpreter.ts +++ b/interpreter.ts @@ -2,10 +2,6 @@ import * as ESTree from 'estree'; declare function escape(s:string): string; declare function unescape(s:string): string; -interface ArrayConstructor { - from(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): Array; - from(arrayLike: ArrayLike): Array; -} declare module acorn { function parse(code: string, options?: any): ESTree.Program; } @@ -1317,7 +1313,7 @@ public initDate(scope) { return Date(); } // Called as new Date(). - var args = [null].concat(Array.from(arguments)); + var args = [null].concat([].slice.call(arguments)); this.data = new (Function.prototype.bind.apply(Date, args)); return this; }; From de535661bc6719282584239a33431864b3305c17 Mon Sep 17 00:00:00 2001 From: Jun Kato Date: Sat, 12 Aug 2017 18:21:42 +0900 Subject: [PATCH 08/29] Add types to MyState fields. --- interpreter.js | 2 +- interpreter.js.map | 2 +- interpreter.ts | 18 ++++++++++++------ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/interpreter.js b/interpreter.js index 34b87378..3efdb18f 100644 --- a/interpreter.js +++ b/interpreter.js @@ -3111,7 +3111,7 @@ define(["require", "exports"], function (require, exports) { Interpreter.prototype['nativeToPseudo'] = Interpreter.prototype.nativeToPseudo; Interpreter.prototype['pseudoToNative'] = Interpreter.prototype.pseudoToNative; // Obsolete. Do not use. - // private createPrimitive(x) {return x;}; + Interpreter.prototype['createPrimitive'] = function (x) { return x; }; (function (Interpreter) { /** * Class for an object. diff --git a/interpreter.js.map b/interpreter.js.map index bed6a50e..b9f71450 100644 --- a/interpreter.js.map +++ b/interpreter.js.map @@ -1 +1 @@ -{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["interpreter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["interpreter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/interpreter.ts b/interpreter.ts index 69d7e774..b9b06dbd 100644 --- a/interpreter.ts +++ b/interpreter.ts @@ -5,6 +5,9 @@ declare function unescape(s:string): string; declare module acorn { function parse(code: string, options?: any): ESTree.Program; } +interface NodeConstructor { + new (): ESTree.BaseNode; +} /** * @license @@ -39,12 +42,12 @@ declare module acorn { * @constructor */ class Interpreter { -private nodeConstructor: FunctionConstructor; +private nodeConstructor: NodeConstructor; public ast: ESTree.Program; public global: Interpreter.MyObject; public stateStack: Interpreter.MyState[]; public value: Interpreter.MyValue; -private initFunc_: Function; +private initFunc_: (i: Interpreter, scope: Interpreter.MyObject) => void; private paused_: boolean; private polyfills_: string[]; private functionCounter_: number; @@ -82,7 +85,8 @@ public STRING_EMPTY: string; public NUMBER_ZERO: number; public NUMBER_ONE: number; -constructor(code: string | ESTree.Program, opt_initFunc?: Function) { +constructor(code: string | ESTree.Program + , opt_initFunc?: (i: Interpreter, scope: Interpreter.MyObject) => void) { if (typeof code === 'string') { code = acorn.parse(code, Interpreter.PARSE_OPTIONS); } @@ -121,7 +125,7 @@ constructor(code: string | ESTree.Program, opt_initFunc?: Function) { this.stateStack.length = 0; this.stateStack[0] = state; // Get a handle on Acorn's node_t object. It's tricky to access. - this.nodeConstructor = state.node.constructor; + this.nodeConstructor = state.node.constructor; // Preserve publicly properties from being pruned/renamed by JS compilers. // Add others as needed. this['stateStack'] = this.stateStack; @@ -3440,7 +3444,7 @@ Interpreter.prototype['setProperty'] = Interpreter.prototype.setProperty; Interpreter.prototype['nativeToPseudo'] = Interpreter.prototype.nativeToPseudo; Interpreter.prototype['pseudoToNative'] = Interpreter.prototype.pseudoToNative; // Obsolete. Do not use. -// private createPrimitive(x) {return x;}; +Interpreter.prototype['createPrimitive'] = (x) => {return x;}; module Interpreter { /** @@ -3561,7 +3565,9 @@ export type MyValue = MyObject | boolean | number | string | undefined | null; */ export class MyState { [key: string]: any; -constructor(node, scope) { +node: ESTree.BaseNode; +scope: Interpreter.MyObject; +constructor(node: ESTree.BaseNode, scope: Interpreter.MyObject) { this.node = node; this.scope = scope; } From de41073a3a22a90f43d8d5675bc3bd8be3a399db Mon Sep 17 00:00:00 2001 From: Jun Kato Date: Sat, 12 Aug 2017 19:01:30 +0900 Subject: [PATCH 09/29] Add types to Interpreter methods. --- interpreter.js | 20 +++-- interpreter.js.map | 2 +- interpreter.ts | 216 ++++++++++++++++++++++++--------------------- 3 files changed, 127 insertions(+), 111 deletions(-) diff --git a/interpreter.js b/interpreter.js index 3efdb18f..c43e0d52 100644 --- a/interpreter.js +++ b/interpreter.js @@ -1087,12 +1087,12 @@ define(["require", "exports"], function (require, exports) { } // The first step up the prototype chain is harder since the child might be // a primitive value. Subsequent steps can just follow the .proto property. - child = this.getPrototype(child); - while (child) { - if (child === proto) { + var childObj = this.getPrototype(child); + while (childObj) { + if (childObj === proto) { return true; } - child = child.proto; + childObj = childObj.proto; } return false; }; @@ -1370,15 +1370,16 @@ define(["require", "exports"], function (require, exports) { } } do { - if (obj.properties && name in obj.properties) { - var getter = obj.getter[name]; + var myObj = obj; + if (myObj.properties && name in myObj.properties) { + var getter = myObj.getter[name]; if (getter) { // Flag this function as being a getter and thus needing immediate // execution (rather than being the value of the property). getter.isGetter = true; return getter; } - return obj.properties[name]; + return myObj.properties[name]; } } while ((obj = this.getPrototype(obj))); return undefined; @@ -1391,7 +1392,7 @@ define(["require", "exports"], function (require, exports) { * @return {boolean} True if property exists. */ Interpreter.prototype.hasProperty = function (obj, name) { - if (!obj.isObject) { + if (!obj['isObject']) { throw TypeError('Primitive data type has no properties'); } name = String(name); @@ -1405,7 +1406,8 @@ define(["require", "exports"], function (require, exports) { } } do { - if (obj.properties && name in obj.properties) { + var myObj = obj; + if (myObj.properties && name in myObj.properties) { return true; } } while ((obj = this.getPrototype(obj))); diff --git a/interpreter.js.map b/interpreter.js.map index b9f71450..e6982193 100644 --- a/interpreter.js.map +++ b/interpreter.js.map @@ -1 +1 @@ -{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["interpreter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["interpreter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/interpreter.ts b/interpreter.ts index b9b06dbd..22601e49 100644 --- a/interpreter.ts +++ b/interpreter.ts @@ -8,6 +8,9 @@ declare module acorn { interface NodeConstructor { new (): ESTree.BaseNode; } +interface NativeFunction extends Function { + id?: number; +} /** * @license @@ -206,7 +209,7 @@ static toStringCycles_ = []; * Add more code to the interpreter. * @param {string|!Object} code Raw JavaScript text or AST. */ -public appendCode(code) { +public appendCode(code: string | ESTree.Node) { var state = this.stateStack[0]; if (!state || state.node['type'] !== 'Program') { throw Error('Expecting original AST to start with a Program node.'); @@ -229,7 +232,7 @@ public appendCode(code) { * Execute one step of the interpreter. * @return {boolean} True if a step was executed, false if no more instructions. */ -public step() { +public step(): boolean { var stack = this.stateStack; var state = stack[stack.length - 1]; if (!state) { @@ -274,7 +277,7 @@ public run() { * Initialize the global scope with buitin properties and functions. * @param {!Interpreter.MyObject} scope Global scope. */ -public initGlobalScope(scope) { +public initGlobalScope(scope: Interpreter.MyObject) { // Initialize uneditable global properties. this.setProperty(scope, 'NaN', NaN, Interpreter.READONLY_DESCRIPTOR); @@ -359,7 +362,7 @@ public initGlobalScope(scope) { * Initialize the Function class. * @param {!Interpreter.MyObject} scope Global scope. */ -public initFunction(scope) { +public initFunction(scope: Interpreter.MyObject) { var thisInterpreter = this; var wrapper; var identifierRegexp = /^[A-Za-z_$][\w$]*$/; @@ -531,7 +534,7 @@ public initFunction(scope) { * Initialize the Object class. * @param {!Interpreter.MyObject} scope Global scope. */ -public initObject(scope) { +public initObject(scope: Interpreter.MyObject) { var thisInterpreter = this; var wrapper; // Object constructor. @@ -693,7 +696,7 @@ public initObject(scope) { delete descriptor.value; delete descriptor.writable; } - var pseudoDescriptor = thisInterpreter.nativeToPseudo(descriptor); + var pseudoDescriptor = thisInterpreter.nativeToPseudo(descriptor); if ('value' in descriptor) { thisInterpreter.setProperty(pseudoDescriptor, 'value', descriptor.value); } @@ -771,7 +774,7 @@ public initObject(scope) { * Initialize the Array class. * @param {!Interpreter.MyObject} scope Global scope. */ -public initArray(scope) { +public initArray(scope: Interpreter.MyObject) { var thisInterpreter = this; var getInt = function(obj, def) { // Return an integer, or the default. @@ -1094,7 +1097,7 @@ public initArray(scope) { * Initialize the String class. * @param {!Interpreter.MyObject} scope Global scope. */ -public initString(scope) { +public initString(scope: Interpreter.MyObject) { var thisInterpreter = this; var wrapper; // String constructor. @@ -1205,7 +1208,7 @@ public initString(scope) { * Initialize the Boolean class. * @param {!Interpreter.MyObject} scope Global scope. */ -public initBoolean(scope) { +public initBoolean(scope: Interpreter.MyObject) { var thisInterpreter = this; var wrapper; // Boolean constructor. @@ -1228,7 +1231,7 @@ public initBoolean(scope) { * Initialize the Number class. * @param {!Interpreter.MyObject} scope Global scope. */ -public initNumber(scope) { +public initNumber(scope: Interpreter.MyObject) { var thisInterpreter = this; var wrapper; // Number constructor. @@ -1306,7 +1309,7 @@ public initNumber(scope) { * Initialize the Date class. * @param {!Interpreter.MyObject} scope Global scope. */ -public initDate(scope) { +public initDate(scope: Interpreter.MyObject) { var thisInterpreter = this; var wrapper; // Date constructor. @@ -1366,7 +1369,7 @@ public initDate(scope) { * Initialize Regular Expression object. * @param {!Interpreter.MyObject} scope Global scope. */ -public initRegExp(scope) { +public initRegExp(scope: Interpreter.MyObject) { var thisInterpreter = this; var wrapper; // RegExp constructor. @@ -1429,7 +1432,7 @@ public initRegExp(scope) { * Initialize the Error class. * @param {!Interpreter.MyObject} scope Global scope. */ -public initError(scope) { +public initError(scope: Interpreter.MyObject) { var thisInterpreter = this; // Error constructor. this.ERROR = this.createNativeFunction(function(opt_message) { @@ -1489,7 +1492,7 @@ public initError(scope) { * Initialize Math object. * @param {!Interpreter.MyObject} scope Global scope. */ -public initMath(scope) { +public initMath(scope: Interpreter.MyObject) { var thisInterpreter = this; var myMath = this.createObjectProto(this.OBJECT_PROTO); this.setProperty(scope, 'Math', myMath); @@ -1513,7 +1516,7 @@ public initMath(scope) { * Initialize JSON object. * @param {!Interpreter.MyObject} scope Global scope. */ -public initJSON(scope) { +public initJSON(scope: Interpreter.MyObject) { var thisInterpreter = this; var myJSON = thisInterpreter.createObjectProto(this.OBJECT_PROTO); this.setProperty(scope, 'JSON', myJSON); @@ -1548,7 +1551,7 @@ public initJSON(scope) { * @return {boolean} True if object is the class or inherits from it. * False otherwise. */ -public isa(child, constructor) { +public isa(child: Interpreter.MyValue, constructor: Interpreter.MyObject) { if (child === null || child === undefined || !constructor) { return false; } @@ -1558,12 +1561,12 @@ public isa(child, constructor) { } // The first step up the prototype chain is harder since the child might be // a primitive value. Subsequent steps can just follow the .proto property. - child = this.getPrototype(child); - while (child) { - if (child === proto) { + var childObj = this.getPrototype(child); + while (childObj) { + if (childObj === proto) { return true; } - child = child.proto; + childObj = childObj.proto; } return false; }; @@ -1574,8 +1577,8 @@ public isa(child, constructor) { * @return {number} Zero, or a positive integer if the value can be * converted to such. NaN otherwise. */ -static legalArrayLength(x) { - var n = x >>> 0; +static legalArrayLength(x: Interpreter.MyValue) { + var n = x >>> 0; // Array length must be between 0 and 2^32-1 (inclusive). return (n === Number(x)) ? n : NaN; }; @@ -1586,8 +1589,8 @@ static legalArrayLength(x) { * @return {number} Zero, or a positive integer if the value can be * converted to such. NaN otherwise. */ -static legalArrayIndex(x) { - var n = x >>> 0; +static legalArrayIndex(x: Interpreter.MyValue) { + var n = x >>> 0; // Array index cannot be 2^32-1, otherwise length would be 2^32. // 0xffffffff is 2^32-1. return (String(n) === String(x) && n !== 0xffffffff) ? n : NaN; @@ -1599,7 +1602,7 @@ static legalArrayIndex(x) { * or null if scope object. * @return {!Interpreter.MyObject} New data object. */ -public createObject(constructor) { +public createObject(constructor: Interpreter.MyObject) { return this.createObjectProto(constructor && constructor.properties['prototype']); }; @@ -1609,7 +1612,7 @@ public createObject(constructor) { * @param {Interpreter.MyObject} proto Prototype object. * @return {!Interpreter.MyObject} New data object. */ -public createObjectProto(proto) { +public createObjectProto(proto: Interpreter.MyObject) { var obj = new Interpreter.MyObject(proto); // Functions have prototype objects. if (this.isa(obj, this.FUNCTION)) { @@ -1635,7 +1638,7 @@ public createObjectProto(proto) { * @param {!Interpreter.MyObject} pseudoRegexp The existing object to set. * @param {!RegExp} nativeRegexp The native regular expression. */ -public populateRegExp(pseudoRegexp, nativeRegexp) { +public populateRegExp(pseudoRegexp: Interpreter.MyObject, nativeRegexp: RegExp) { pseudoRegexp.data = nativeRegexp; // lastIndex is settable, all others are read-only attributes this.setProperty(pseudoRegexp, 'lastIndex', nativeRegexp.lastIndex, @@ -1656,7 +1659,7 @@ public populateRegExp(pseudoRegexp, nativeRegexp) { * @param {!Object} scope Parent scope. * @return {!Interpreter.MyObject} New function. */ -public createFunction(node, scope) { +public createFunction(node: ESTree.FunctionDeclaration, scope: Interpreter.MyObject) { var func = this.createObjectProto(this.FUNCTION_PROTO); func.parentScope = scope; func.node = node; @@ -1674,7 +1677,7 @@ public createFunction(node, scope) { * Defaults to undefined. * @return {!Interpreter.MyObject} New function. */ -public createNativeFunction(nativeFunc, opt_constructor?) { +public createNativeFunction(nativeFunc: NativeFunction, opt_constructor?: boolean) { var func = this.createObjectProto(this.FUNCTION_PROTO); func.nativeFunc = nativeFunc; nativeFunc.id = this.functionCounter_++; @@ -1710,7 +1713,7 @@ public createAsyncFunction(asyncFunc) { * @param {*} nativeObj The native JS object to be converted. * @return {Interpreter.MyValue} The equivalent JS interpreter object. */ -public nativeToPseudo(nativeObj) { +public nativeToPseudo(nativeObj: any): Interpreter.MyValue { if (typeof nativeObj === 'boolean' || typeof nativeObj === 'number' || typeof nativeObj === 'string' || @@ -1739,7 +1742,7 @@ public nativeToPseudo(nativeObj) { return this.createNativeFunction(wrapper, undefined); } - var pseudoObj; + var pseudoObj: Interpreter.MyObject; if (Array.isArray(nativeObj)) { // Array. pseudoObj = this.createObjectProto(this.ARRAY_PROTO); for (var i = 0; i < nativeObj.length; i++) { @@ -1764,7 +1767,7 @@ public nativeToPseudo(nativeObj) { * @param {Object=} opt_cycles Cycle detection (used in recursive calls). * @return {*} The equivalent native JS object or value. */ -public pseudoToNative(pseudoObj, opt_cycles?) { +public pseudoToNative(pseudoObj: Interpreter.MyValue, opt_cycles?: Interpreter.MyValueTable) { if (typeof pseudoObj === 'boolean' || typeof pseudoObj === 'number' || typeof pseudoObj === 'string' || @@ -1780,7 +1783,7 @@ public pseudoToNative(pseudoObj, opt_cycles?) { pseudo: [], native: [] }; - var i = (>cycles.pseudo).indexOf(pseudoObj); + var i = cycles.pseudo.indexOf(pseudoObj); if (i !== -1) { return cycles.native[i]; } @@ -1815,7 +1818,7 @@ public pseudoToNative(pseudoObj, opt_cycles?) { * @param {Interpreter.MyValue} value Data object. * @return {Interpreter.MyObject} Prototype object, null if none. */ -public getPrototype(value) { +public getPrototype(value: Interpreter.MyValue): Interpreter.MyObject { switch (typeof value) { case 'number': return this.NUMBER.properties['prototype']; @@ -1825,7 +1828,7 @@ public getPrototype(value) { return this.STRING.properties['prototype']; } if (value) { - return value.proto; + return (value).proto; } return null; }; @@ -1836,7 +1839,7 @@ public getPrototype(value) { * @param {Interpreter.MyValue} name Name of property. * @return {Interpreter.MyValue} Property value (may be undefined). */ -public getProperty(obj, name) { +public getProperty(obj: Interpreter.MyValue, name: Interpreter.MyValue): Interpreter.MyValue { name = String(name); if (obj === undefined || obj === null) { this.throwException(this.TYPE_ERROR, @@ -1858,15 +1861,16 @@ public getProperty(obj, name) { } } do { - if (obj.properties && name in obj.properties) { - var getter = obj.getter[name]; + const myObj = obj; + if (myObj.properties && name in myObj.properties) { + var getter = myObj.getter[name]; if (getter) { // Flag this function as being a getter and thus needing immediate // execution (rather than being the value of the property). getter.isGetter = true; return getter; } - return obj.properties[name]; + return myObj.properties[name]; } } while ((obj = this.getPrototype(obj))); return undefined; @@ -1878,8 +1882,8 @@ public getProperty(obj, name) { * @param {Interpreter.MyValue} name Name of property. * @return {boolean} True if property exists. */ -public hasProperty(obj, name) { - if (!obj.isObject) { +public hasProperty(obj: Interpreter.MyValue, name: Interpreter.MyValue) { + if (!obj['isObject']) { throw TypeError('Primitive data type has no properties'); } name = String(name); @@ -1893,7 +1897,8 @@ public hasProperty(obj, name) { } } do { - if (obj.properties && name in obj.properties) { + const myObj = obj; + if (myObj.properties && name in myObj.properties) { return true; } } while ((obj = this.getPrototype(obj))); @@ -1910,7 +1915,7 @@ public hasProperty(obj, name) { * @return {!Interpreter.MyObject|undefined} Returns a setter function if one * needs to be called, otherwise undefined. */ -public setProperty(obj, name, value, opt_descriptor?) { +public setProperty(obj: Interpreter.MyObject, name: Interpreter.MyValue, value: Interpreter.MyValue | ReferenceErrorConstructor, opt_descriptor?): Interpreter.MyObject { name = String(name); if (obj === undefined || obj === null) { this.throwException(this.TYPE_ERROR, @@ -1946,7 +1951,7 @@ public setProperty(obj, name, value, opt_descriptor?) { var i; if (name === 'length') { // Delete elements if length is smaller. - value = Interpreter.legalArrayLength(value); + value = Interpreter.legalArrayLength(value); if (isNaN(value)) { this.throwException(this.RANGE_ERROR, 'Invalid array length'); } @@ -2061,7 +2066,7 @@ public setProperty(obj, name, value, opt_descriptor?) { * @param {Interpreter.MyValue} name Name of property. * @param {!Function} wrapper Function object. */ -private setNativeFunctionPrototype(obj, name, wrapper) { +private setNativeFunctionPrototype(obj: Interpreter.MyObject, name: Interpreter.MyValue, wrapper: Function) { this.setProperty(obj.properties['prototype'], name, this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); @@ -2086,7 +2091,7 @@ public getScope() { * @param {Interpreter.MyObject} parentScope Scope to link to. * @return {!Interpreter.MyObject} New scope. */ -public createScope(node, parentScope) { +public createScope(node: ESTree.Node, parentScope: Interpreter.MyObject) { var scope = this.createObjectProto(null); scope.parentScope = parentScope; if (!parentScope) { @@ -2118,7 +2123,7 @@ public createScope(node, parentScope) { * scope. * @return {!Interpreter.MyObject} New scope. */ -public createSpecialScope(parentScope, opt_scope?) { +public createSpecialScope(parentScope: Interpreter.MyObject, opt_scope?: Interpreter.MyObject) { if (!parentScope) { throw Error('parentScope required'); } @@ -2135,7 +2140,7 @@ public createSpecialScope(parentScope, opt_scope?) { * May be flagged as being a getter and thus needing immediate execution * (rather than being the value of the property). */ -public getValueFromScope(name) { +public getValueFromScope(name: string): Interpreter.MyValue { var scope = this.getScope(); while (scope && scope !== this.global) { if (name in scope.properties) { @@ -2164,7 +2169,7 @@ public getValueFromScope(name) { * @return {!Interpreter.MyObject|undefined} Returns a setter function if one * needs to be called, otherwise undefined. */ -public setValueToScope(name, value) { +public setValueToScope(name: string, value: Interpreter.MyValue) { var scope = this.getScope(); var strict = scope.strict; while (scope && scope !== this.global) { @@ -2188,7 +2193,7 @@ public setValueToScope(name, value) { * @param {!Interpreter.MyObject} scope Scope dictionary to populate. * @private */ -public populateScope_(node, scope) { +public populateScope_(node: ESTree.Node, scope: Interpreter.MyObject) { if (node['type'] === 'VariableDeclaration') { for (var i = 0; i < node['declarations'].length; i++) { this.setProperty(scope, node['declarations'][i]['id']['name'], @@ -2196,7 +2201,7 @@ public populateScope_(node, scope) { } } else if (node['type'] === 'FunctionDeclaration') { this.setProperty(scope, node['id']['name'], - this.createFunction(node, scope), Interpreter.VARIABLE_DESCRIPTOR); + this.createFunction(node, scope), Interpreter.VARIABLE_DESCRIPTOR); return; // Do not recurse into function. } else if (node['type'] === 'FunctionExpression') { return; // Do not recurse into function. @@ -2231,7 +2236,7 @@ public populateScope_(node, scope) { * @param {number=} end Ending character of all nodes, or undefined. * @private */ -public stripLocations_(node, start, end) { +private stripLocations_(node: ESTree.BaseNode, start: number, end: number) { if (start) { node['start'] = start; } else { @@ -2256,7 +2261,7 @@ public stripLocations_(node, start, end) { * Is the current state directly being called with as a construction with 'new'. * @return {boolean} True if 'new foo()', false if 'foo()'. */ -public calledWithNew() { +public calledWithNew(): boolean { return this.stateStack[this.stateStack.length - 1].isConstructor; }; @@ -2284,7 +2289,7 @@ public getValue(ref) { * @return {!Interpreter.MyObject|undefined} Returns a setter function if one * needs to be called, otherwise undefined. */ -public setValue(ref, value) { +public setValue(ref: Array & { 0: Interpreter.MyObject, 1: string }, value: Interpreter.MyValue) { if (ref[0] === Interpreter.SCOPE_REFERENCE) { // A null/varname variable lookup. return this.setValueToScope(ref[1], value); @@ -2303,7 +2308,7 @@ public setValue(ref, value) { * provided) or the value to throw (if no message). * @param {string=} opt_message Message being thrown. */ -public throwException(errorClass, opt_message?) { +public throwException(errorClass: Interpreter.MyObject, opt_message?: string) { if (opt_message === undefined) { var error = errorClass; // This is a value to throw, not an error class. } else { @@ -2322,7 +2327,7 @@ public throwException(errorClass, opt_message?) { * be thrown. * @param {!Interpreter.MyObject} error Error object to execute. */ -public executeException(error) { +public executeException(error: Interpreter.MyObject) { // Search for a try statement. do { this.stateStack.pop(); @@ -2361,7 +2366,7 @@ public executeException(error) { * Name of variable or object/propname tuple. * @private */ -public createGetter_(func, left) { +public createGetter_(func: Interpreter.MyObject, left: Interpreter.MyObject | Array) { // Normally 'this' will be specified as the object component (o.x). // Sometimes 'this' is explicitly provided (o). var funcThis = Array.isArray(left) ? left[0] : left; @@ -2385,7 +2390,7 @@ public createGetter_(func, left) { * @param {Interpreter.MyValue} value Value to set. * @private */ -public createSetter_(func, left, value) { +public createSetter_(func: Interpreter.MyObject, left: Interpreter.MyObject | Array, value: Interpreter.MyValue) { // Normally 'this' will be specified as the object component (o.x). // Sometimes 'this' is implicitly the global object (x). var funcThis = Array.isArray(left) ? left[0] : this.global; @@ -2406,7 +2411,7 @@ public createSetter_(func, left, value) { // Functions to handle each node type. /////////////////////////////////////////////////////////////////////////////// -private stepArrayExpression(stack, state, node) { +private stepArrayExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { var elements = node['elements']; var n = state.n_ || 0; if (!state.array_) { @@ -2428,7 +2433,7 @@ private stepArrayExpression(stack, state, node) { stack[stack.length - 1].value = state.array_; }; -private stepAssignmentExpression(stack, state, node) { +private stepAssignmentExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (!state.doneLeft_) { state.doneLeft_ = true; var nextState = new Interpreter.MyState(node['left'], state.scope); @@ -2492,7 +2497,7 @@ private stepAssignmentExpression(stack, state, node) { stack[stack.length - 1].value = value; }; -private stepBinaryExpression(stack, state, node) { +private stepBinaryExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (!state.doneLeft_) { state.doneLeft_ = true; return new Interpreter.MyState(node['left'], state.scope); @@ -2546,7 +2551,7 @@ private stepBinaryExpression(stack, state, node) { stack[stack.length - 1].value = value; }; -private stepBlockStatement(stack, state, node) { +private stepBlockStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { var n = state.n_ || 0; var expression = node['body'][n]; if (expression) { @@ -2556,7 +2561,7 @@ private stepBlockStatement(stack, state, node) { stack.pop(); }; -private stepBreakStatement(stack, state, node) { +private stepBreakStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { stack.pop(); var label = null; if (node['label']) { @@ -2578,7 +2583,7 @@ private stepBreakStatement(stack, state, node) { throw SyntaxError('Illegal break statement'); }; -private stepCallExpression(stack, state, node) { +private stepCallExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (!state.doneCallee_) { state.doneCallee_ = 1; // Components needed to determine value of 'this'. @@ -2725,7 +2730,7 @@ private stepCallExpression(stack, state, node) { } }; -private stepCatchClause(stack, state, node) { +private stepCatchClause(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (!state.done_) { state.done_ = true; // Create an empty scope. @@ -2739,7 +2744,7 @@ private stepCatchClause(stack, state, node) { } }; -private stepConditionalExpression(stack, state, node) { +private stepConditionalExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { var mode = state.mode_ || 0; if (mode === 0) { state.mode_ = 1; @@ -2764,7 +2769,7 @@ private stepConditionalExpression(stack, state, node) { } }; -private stepContinueStatement(stack, state, node) { +private stepContinueStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { stack.pop(); var label = null; if (node['label']) { @@ -2786,12 +2791,12 @@ private stepContinueStatement(stack, state, node) { throw SyntaxError('Illegal continue statement'); }; -private stepDebuggerStatement(stack, state, node) { +private stepDebuggerStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { // Do nothing. May be overridden by developers. stack.pop(); }; -private stepDoWhileStatement(stack, state, node) { +private stepDoWhileStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (node['type'] === 'DoWhileStatement' && state.test_ === undefined) { // First iteration of do/while executes without checking test. state.value = true; @@ -2810,11 +2815,11 @@ private stepDoWhileStatement(stack, state, node) { } }; -private stepEmptyStatement(stack, state, node) { +private stepEmptyStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { stack.pop(); }; -private stepEvalProgram_(stack, state, node) { +private stepEvalProgram_(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { var n = state.n_ || 0; var expression = node['body'][n]; if (expression) { @@ -2825,7 +2830,7 @@ private stepEvalProgram_(stack, state, node) { stack[stack.length - 1].value = this.value; }; -private stepExpressionStatement(stack, state, node) { +private stepExpressionStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (!state.done_) { state.done_ = true; return new Interpreter.MyState(node['expression'], state.scope); @@ -2836,7 +2841,7 @@ private stepExpressionStatement(stack, state, node) { this.value = state.value; }; -private stepForInStatement(stack, state, node) { +private stepForInStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { // First, initialize a variable if exists. Only do so once, ever. if (!state.doneInit_) { state.doneInit_ = true; @@ -2945,7 +2950,7 @@ private stepForInStatement(stack, state, node) { } }; -private stepForStatement(stack, state, node) { +private stepForStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { var mode = state.mode_ || 0; if (mode === 0) { state.mode_ = 1; @@ -2974,17 +2979,17 @@ private stepForStatement(stack, state, node) { } }; -private stepFunctionDeclaration(stack, state, node) { +private stepFunctionDeclaration(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { // This was found and handled when the scope was populated. stack.pop(); }; -private stepFunctionExpression(stack, state, node) { +private stepFunctionExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { stack.pop(); - stack[stack.length - 1].value = this.createFunction(node, state.scope); + stack[stack.length - 1].value = this.createFunction(node, state.scope); }; -private stepIdentifier(stack, state, node) { +private stepIdentifier(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { stack.pop(); if (state.components) { stack[stack.length - 1].value = [Interpreter.SCOPE_REFERENCE, node['name']]; @@ -3005,11 +3010,11 @@ private stepIdentifier(stack, state, node) { stack[stack.length - 1].value = value; }; -private stepIfStatement(stack, state, node) { +private stepIfStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { return this.stepConditionalExpression(stack, state, node); } -private stepLabeledStatement(stack, state, node) { +private stepLabeledStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { // No need to hit this node again on the way back up the stack. stack.pop(); // Note that a statement might have multiple labels. @@ -3020,7 +3025,7 @@ private stepLabeledStatement(stack, state, node) { return nextState; }; -private stepLiteral(stack, state, node) { +private stepLiteral(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { stack.pop(); var value = node['value']; if (value instanceof RegExp) { @@ -3031,7 +3036,7 @@ private stepLiteral(stack, state, node) { stack[stack.length - 1].value = value; }; -private stepLogicalExpression(stack, state, node) { +private stepLogicalExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (node['operator'] !== '&&' && node['operator'] !== '||') { throw SyntaxError('Unknown logical operator: ' + node['operator']); } @@ -3055,7 +3060,7 @@ private stepLogicalExpression(stack, state, node) { } }; -private stepMemberExpression(stack, state, node) { +private stepMemberExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (!state.doneObject_) { state.doneObject_ = true; return new Interpreter.MyState(node['object'], state.scope); @@ -3088,11 +3093,11 @@ private stepMemberExpression(stack, state, node) { } }; -private stepNewExpression(stack, state, node) { +private stepNewExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { return this.stepCallExpression(stack, state, node); } -private stepObjectExpression(stack, state, node) { +private stepObjectExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { var n = state.n_ || 0; var property = node['properties'][n]; if (!state.object_) { @@ -3141,7 +3146,7 @@ private stepObjectExpression(stack, state, node) { stack[stack.length - 1].value = state.object_; }; -private stepProgram(stack, state, node) { +private stepProgram(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { var n = state.n_ || 0; var expression = node['body'][n]; if (expression) { @@ -3154,7 +3159,7 @@ private stepProgram(stack, state, node) { // Leave the root scope on the tree in case the program is appended to. }; -private stepReturnStatement(stack, state, node) { +private stepReturnStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (node['argument'] && !state.done_) { state.done_ = true; return new Interpreter.MyState(node['argument'], state.scope); @@ -3177,7 +3182,7 @@ private stepReturnStatement(stack, state, node) { state.value = value; }; -private stepSequenceExpression(stack, state, node) { +private stepSequenceExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { var n = state.n_ || 0; var expression = node['expressions'][n]; if (expression) { @@ -3188,7 +3193,7 @@ private stepSequenceExpression(stack, state, node) { stack[stack.length - 1].value = state.value; }; -private stepSwitchStatement(stack, state, node) { +private stepSwitchStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (!state.test_) { state.test_ = 1; return new Interpreter.MyState(node['discriminant'], state.scope); @@ -3241,12 +3246,12 @@ private stepSwitchStatement(stack, state, node) { } }; -private stepThisExpression(stack, state, node) { +private stepThisExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { stack.pop(); stack[stack.length - 1].value = this.getValueFromScope('this'); }; -private stepThrowStatement(stack, state, node) { +private stepThrowStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (!state.done_) { state.done_ = true; return new Interpreter.MyState(node['argument'], state.scope); @@ -3255,7 +3260,7 @@ private stepThrowStatement(stack, state, node) { } }; -private stepTryStatement(stack, state, node) { +private stepTryStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (!state.doneBlock_) { state.doneBlock_ = true; return new Interpreter.MyState(node['block'], state.scope); @@ -3280,7 +3285,7 @@ private stepTryStatement(stack, state, node) { } }; -private stepUnaryExpression(stack, state, node) { +private stepUnaryExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (!state.done_) { state.done_ = true; var nextState = new Interpreter.MyState(node['argument'], state.scope); @@ -3330,7 +3335,7 @@ private stepUnaryExpression(stack, state, node) { stack[stack.length - 1].value = value; }; -private stepUpdateExpression(stack, state, node) { +private stepUpdateExpression(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (!state.doneLeft_) { state.doneLeft_ = true; var nextState = new Interpreter.MyState(node['argument'], state.scope); @@ -3382,7 +3387,7 @@ private stepUpdateExpression(stack, state, node) { stack[stack.length - 1].value = returnValue; }; -private stepVariableDeclaration(stack, state, node) { +private stepVariableDeclaration(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { var declarations = node['declarations']; var n = state.n_ || 0; var declarationNode = declarations[n]; @@ -3407,7 +3412,7 @@ private stepVariableDeclaration(stack, state, node) { stack.pop(); }; -private stepWithStatement(stack, state, node) { +private stepWithStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { if (!state.doneObject_) { state.doneObject_ = true; return new Interpreter.MyState(node['object'], state.scope); @@ -3420,7 +3425,7 @@ private stepWithStatement(stack, state, node) { } }; -private stepWhileStatement(stack, state, node) { +private stepWhileStatement(stack: Interpreter.MyState[], state: Interpreter.MyState, node: ESTree.Node) { return this.stepDoWhileStatement(stack, state, node); } } @@ -3454,6 +3459,10 @@ module Interpreter { */ export class MyObject { [key: string]: any; +getter: any; +setter: any; +properties: any; + constructor(proto) { this.getter = Object.create(null); this.setter = Object.create(null); @@ -3462,7 +3471,7 @@ constructor(proto) { } /** @type {Interpreter.MyObject} */ -proto = null; +proto: Interpreter.MyObject = null; /** @type {boolean} */ isObject = true; @@ -3471,7 +3480,7 @@ isObject = true; class = 'Object'; /** @type {Date|RegExp|boolean|number|string|undefined|null} */ -data = null; +data: Date | RegExp | boolean | number | string | undefined | null = null; /** * Convert this object into a string. @@ -3502,14 +3511,14 @@ toString() { } var name, message; // Bug: Does not support getters and setters for name or message. - var obj = this; + var obj = this; do { if ('name' in obj.properties) { name = obj.properties['name']; break; } } while ((obj = obj.proto)); - var obj = this; + var obj = this; do { if ('message' in obj.properties) { message = obj.properties['message']; @@ -3572,4 +3581,9 @@ constructor(node: ESTree.BaseNode, scope: Interpreter.MyObject) { this.scope = scope; } } + +export interface MyValueTable { + pseudo: MyValue[], + native: any[] +} } From 9c3550b2a1a345a15b943b21a694065fb022099f Mon Sep 17 00:00:00 2001 From: Jun Kato Date: Sat, 12 Aug 2017 19:36:45 +0900 Subject: [PATCH 10/29] Add some workaround for producing raw JS code (not AMD/ES6 modules) --- _estree.d.ts | 5 + interpreter.js | 6025 ++++++++++++++++++++++---------------------- interpreter.js.map | 2 +- interpreter.ts | 3 +- tsconfig.json | 5 +- 5 files changed, 3022 insertions(+), 3018 deletions(-) create mode 100644 _estree.d.ts diff --git a/_estree.d.ts b/_estree.d.ts new file mode 100644 index 00000000..307750a6 --- /dev/null +++ b/_estree.d.ts @@ -0,0 +1,5 @@ +/// + +import * as _ESTree from 'estree'; +export as namespace ESTree; +export = _ESTree; diff --git a/interpreter.js b/interpreter.js index c43e0d52..d5147f61 100644 --- a/interpreter.js +++ b/interpreter.js @@ -1,3232 +1,3229 @@ -define(["require", "exports"], function (require, exports) { - "use strict"; - exports.__esModule = true; +/// +/** + * @license + * JavaScript Interpreter + * + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @fileoverview Interpreting JavaScript in JavaScript. + * @author fraser@google.com (Neil Fraser) + */ +/** + * Create a new interpreter. + * @param {string|!Object} code Raw JavaScript text or AST. + * @param {Function=} opt_initFunc Optional initialization function. Used to + * define APIs. When called it is passed the interpreter object and the + * global scope object. + * @constructor + */ +var Interpreter = (function () { + function Interpreter(code, opt_initFunc) { + if (typeof code === 'string') { + code = acorn.parse(code, Interpreter.PARSE_OPTIONS); + } + this.ast = code; + this.initFunc_ = opt_initFunc; + this.paused_ = false; + this.polyfills_ = []; + // Unique identifier for native functions. Used in serialization. + this.functionCounter_ = 0; + // Map node types to our step function names; a property lookup is faster + // than string concatenation with "step" prefix. + this.stepFunctions_ = Object.create(null); + var stepMatch = /^step([A-Z]\w*)$/; + var m; + for (var methodName in this) { + if ((typeof this[methodName] === 'function') && + (m = methodName.match(stepMatch))) { + this.stepFunctions_[m[1]] = this[methodName].bind(this); + } + } + // Create and initialize the global scope. + this.global = this.createScope(this.ast, null); + // Run the polyfills. + this.ast = acorn.parse(this.polyfills_.join('\n'), Interpreter.PARSE_OPTIONS); + this.polyfills_ = undefined; // Allow polyfill strings to garbage collect. + this.stripLocations_(this.ast, undefined, undefined); + var state = new Interpreter.MyState(this.ast, this.global); + state.done = false; + this.stateStack = [state]; + this.run(); + this.value = undefined; + // Point at the main program. + this.ast = code; + var state = new Interpreter.MyState(this.ast, this.global); + state.done = false; + this.stateStack.length = 0; + this.stateStack[0] = state; + // Get a handle on Acorn's node_t object. It's tricky to access. + this.nodeConstructor = state.node.constructor; + // Preserve publicly properties from being pruned/renamed by JS compilers. + // Add others as needed. + this['stateStack'] = this.stateStack; + this['OBJECT'] = this.OBJECT; + this['OBJECT_PROTO'] = this.OBJECT_PROTO; + this['FUNCTION'] = this.FUNCTION; + this['FUNCTION_PROTO'] = this.FUNCTION_PROTO; + this['ARRAY'] = this.ARRAY; + this['ARRAY_PROTO'] = this.ARRAY_PROTO; + this['REGEXP'] = this.REGEXP; + this['REGEXP_PROTO'] = this.REGEXP_PROTO; + // The following properties are obsolete. Do not use. + this['UNDEFINED'] = undefined; + this['NULL'] = null; + this['NAN'] = NaN; + this['TRUE'] = true; + this['FALSE'] = false; + this['STRING_EMPTY'] = ''; + this['NUMBER_ZERO'] = 0; + this['NUMBER_ONE'] = 1; + } + ; /** - * @license - * JavaScript Interpreter - * - * Copyright 2013 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Add more code to the interpreter. + * @param {string|!Object} code Raw JavaScript text or AST. */ + Interpreter.prototype.appendCode = function (code) { + var state = this.stateStack[0]; + if (!state || state.node['type'] !== 'Program') { + throw Error('Expecting original AST to start with a Program node.'); + } + if (typeof code === 'string') { + code = acorn.parse(code, Interpreter.PARSE_OPTIONS); + } + if (!code || code['type'] !== 'Program') { + throw Error('Expecting new AST to start with a Program node.'); + } + this.populateScope_(code, state.scope); + // Append the new program to the old one. + for (var i = 0, node; (node = code['body'][i]); i++) { + state.node['body'].push(node); + } + state.done = false; + }; + ; /** - * @fileoverview Interpreting JavaScript in JavaScript. - * @author fraser@google.com (Neil Fraser) + * Execute one step of the interpreter. + * @return {boolean} True if a step was executed, false if no more instructions. */ + Interpreter.prototype.step = function () { + var stack = this.stateStack; + var state = stack[stack.length - 1]; + if (!state) { + return false; + } + var node = state.node, type = node['type']; + if (type === 'Program' && state.done) { + return false; + } + else if (this.paused_) { + return true; + } + try { + var nextState = this.stepFunctions_[type](stack, state, node); + } + catch (e) { + // Eat any step errors. They have been thrown on the stack. + if (e !== Interpreter.STEP_ERROR) { + // Uh oh. This is a real error in the JS-Interpreter. Rethrow. + throw e; + } + } + if (nextState) { + stack.push(nextState); + } + if (!node['end']) { + // This is polyfill code. Keep executing until we arrive at user code. + return this.step(); + } + return true; + }; + ; /** - * Create a new interpreter. - * @param {string|!Object} code Raw JavaScript text or AST. - * @param {Function=} opt_initFunc Optional initialization function. Used to - * define APIs. When called it is passed the interpreter object and the - * global scope object. - * @constructor + * Execute the interpreter to program completion. Vulnerable to infinite loops. + * @return {boolean} True if a execution is asynchronously blocked, + * false if no more instructions. */ - var Interpreter = (function () { - function Interpreter(code, opt_initFunc) { - if (typeof code === 'string') { - code = acorn.parse(code, Interpreter.PARSE_OPTIONS); - } - this.ast = code; - this.initFunc_ = opt_initFunc; - this.paused_ = false; - this.polyfills_ = []; - // Unique identifier for native functions. Used in serialization. - this.functionCounter_ = 0; - // Map node types to our step function names; a property lookup is faster - // than string concatenation with "step" prefix. - this.stepFunctions_ = Object.create(null); - var stepMatch = /^step([A-Z]\w*)$/; - var m; - for (var methodName in this) { - if ((typeof this[methodName] === 'function') && - (m = methodName.match(stepMatch))) { - this.stepFunctions_[m[1]] = this[methodName].bind(this); - } - } - // Create and initialize the global scope. - this.global = this.createScope(this.ast, null); - // Run the polyfills. - this.ast = acorn.parse(this.polyfills_.join('\n'), Interpreter.PARSE_OPTIONS); - this.polyfills_ = undefined; // Allow polyfill strings to garbage collect. - this.stripLocations_(this.ast, undefined, undefined); - var state = new Interpreter.MyState(this.ast, this.global); - state.done = false; - this.stateStack = [state]; - this.run(); - this.value = undefined; - // Point at the main program. - this.ast = code; - var state = new Interpreter.MyState(this.ast, this.global); - state.done = false; - this.stateStack.length = 0; - this.stateStack[0] = state; - // Get a handle on Acorn's node_t object. It's tricky to access. - this.nodeConstructor = state.node.constructor; - // Preserve publicly properties from being pruned/renamed by JS compilers. - // Add others as needed. - this['stateStack'] = this.stateStack; - this['OBJECT'] = this.OBJECT; - this['OBJECT_PROTO'] = this.OBJECT_PROTO; - this['FUNCTION'] = this.FUNCTION; - this['FUNCTION_PROTO'] = this.FUNCTION_PROTO; - this['ARRAY'] = this.ARRAY; - this['ARRAY_PROTO'] = this.ARRAY_PROTO; - this['REGEXP'] = this.REGEXP; - this['REGEXP_PROTO'] = this.REGEXP_PROTO; - // The following properties are obsolete. Do not use. - this['UNDEFINED'] = undefined; - this['NULL'] = null; - this['NAN'] = NaN; - this['TRUE'] = true; - this['FALSE'] = false; - this['STRING_EMPTY'] = ''; - this['NUMBER_ZERO'] = 0; - this['NUMBER_ONE'] = 1; - } - ; - /** - * Add more code to the interpreter. - * @param {string|!Object} code Raw JavaScript text or AST. - */ - Interpreter.prototype.appendCode = function (code) { - var state = this.stateStack[0]; - if (!state || state.node['type'] !== 'Program') { - throw Error('Expecting original AST to start with a Program node.'); - } - if (typeof code === 'string') { - code = acorn.parse(code, Interpreter.PARSE_OPTIONS); - } - if (!code || code['type'] !== 'Program') { - throw Error('Expecting new AST to start with a Program node.'); - } - this.populateScope_(code, state.scope); - // Append the new program to the old one. - for (var i = 0, node; (node = code['body'][i]); i++) { - state.node['body'].push(node); - } - state.done = false; - }; - ; - /** - * Execute one step of the interpreter. - * @return {boolean} True if a step was executed, false if no more instructions. - */ - Interpreter.prototype.step = function () { - var stack = this.stateStack; - var state = stack[stack.length - 1]; - if (!state) { - return false; + Interpreter.prototype.run = function () { + while (!this.paused_ && this.step()) { } + return this.paused_; + }; + ; + /** + * Initialize the global scope with buitin properties and functions. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initGlobalScope = function (scope) { + // Initialize uneditable global properties. + this.setProperty(scope, 'NaN', NaN, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'Infinity', Infinity, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'undefined', undefined, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'window', scope, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'this', scope, Interpreter.READONLY_DESCRIPTOR); + this.setProperty(scope, 'self', scope); // Editable. + // Create the objects which will become Object.prototype and + // Function.prototype, which are needed to bootstrap everything else. + this.OBJECT_PROTO = new Interpreter.MyObject(null); + this.FUNCTION_PROTO = new Interpreter.MyObject(this.OBJECT_PROTO); + // Initialize global objects. + this.initFunction(scope); + this.initObject(scope); + // Unable to set scope's parent prior (OBJECT did not exist). + // Note that in a browser this would be 'Window', whereas in Node.js it would + // be 'Object'. This interpreter is closer to Node in that it has no DOM. + scope.proto = this.OBJECT_PROTO; + this.setProperty(scope, 'constructor', this.OBJECT); + this.initArray(scope); + this.initString(scope); + this.initBoolean(scope); + this.initNumber(scope); + this.initDate(scope); + this.initRegExp(scope); + this.initError(scope); + this.initMath(scope); + this.initJSON(scope); + // Initialize global functions. + var thisInterpreter = this; + var func = this.createNativeFunction(function (x) { throw EvalError("Can't happen"); }, false); + func.eval = true; + this.setProperty(scope, 'eval', func); + this.setProperty(scope, 'parseInt', this.createNativeFunction(parseInt, false)); + this.setProperty(scope, 'parseFloat', this.createNativeFunction(parseFloat, false)); + this.setProperty(scope, 'isNaN', this.createNativeFunction(isNaN, false)); + this.setProperty(scope, 'isFinite', this.createNativeFunction(isFinite, false)); + var strFunctions = [ + [escape, 'escape'], [unescape, 'unescape'], + [decodeURI, 'decodeURI'], [decodeURIComponent, 'decodeURIComponent'], + [encodeURI, 'encodeURI'], [encodeURIComponent, 'encodeURIComponent'] + ]; + for (var i = 0; i < strFunctions.length; i++) { + var wrapper = (function (nativeFunc) { + return function (str) { + try { + return nativeFunc(str); + } + catch (e) { + // decodeURI('%xy') will throw an error. Catch and rethrow. + thisInterpreter.throwException(thisInterpreter.URI_ERROR, e.message); + } + }; + })(strFunctions[i][0]); + this.setProperty(scope, strFunctions[i][1], this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + } + // Run any user-provided initialization. + if (this.initFunc_) { + this.initFunc_(this, scope); + } + }; + ; + /** + * Initialize the Function class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initFunction = function (scope) { + var thisInterpreter = this; + var wrapper; + var identifierRegexp = /^[A-Za-z_$][\w$]*$/; + // Function constructor. + wrapper = function (var_args) { + if (thisInterpreter.calledWithNew()) { + // Called as new Function(). + var newFunc = this; } - var node = state.node, type = node['type']; - if (type === 'Program' && state.done) { - return false; + else { + // Called as Function(). + var newFunc = thisInterpreter.createObjectProto(thisInterpreter.FUNCTION_PROTO); } - else if (this.paused_) { - return true; + if (arguments.length) { + var code = String(arguments[arguments.length - 1]); } + else { + var code = ''; + } + var args = []; + for (var i = 0; i < arguments.length - 1; i++) { + var name = String(arguments[i]); + if (!name.match(identifierRegexp)) { + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid function argument: ' + name); + } + args.push(name); + } + args = args.join(', '); + // Interestingly, the scope for constructed functions is the global scope, + // even if they were constructed in some other scope. + newFunc.parentScope = thisInterpreter.global; + // Acorn needs to parse code in the context of a function or else 'return' + // statements will be syntax errors. try { - var nextState = this.stepFunctions_[type](stack, state, node); + var ast = acorn.parse('$ = function(' + args + ') {' + code + '};', Interpreter.PARSE_OPTIONS); } catch (e) { - // Eat any step errors. They have been thrown on the stack. - if (e !== Interpreter.STEP_ERROR) { - // Uh oh. This is a real error in the JS-Interpreter. Rethrow. - throw e; - } - } - if (nextState) { - stack.push(nextState); - } - if (!node['end']) { - // This is polyfill code. Keep executing until we arrive at user code. - return this.step(); - } - return true; - }; - ; - /** - * Execute the interpreter to program completion. Vulnerable to infinite loops. - * @return {boolean} True if a execution is asynchronously blocked, - * false if no more instructions. - */ - Interpreter.prototype.run = function () { - while (!this.paused_ && this.step()) { } - return this.paused_; - }; - ; - /** - * Initialize the global scope with buitin properties and functions. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initGlobalScope = function (scope) { - // Initialize uneditable global properties. - this.setProperty(scope, 'NaN', NaN, Interpreter.READONLY_DESCRIPTOR); - this.setProperty(scope, 'Infinity', Infinity, Interpreter.READONLY_DESCRIPTOR); - this.setProperty(scope, 'undefined', undefined, Interpreter.READONLY_DESCRIPTOR); - this.setProperty(scope, 'window', scope, Interpreter.READONLY_DESCRIPTOR); - this.setProperty(scope, 'this', scope, Interpreter.READONLY_DESCRIPTOR); - this.setProperty(scope, 'self', scope); // Editable. - // Create the objects which will become Object.prototype and - // Function.prototype, which are needed to bootstrap everything else. - this.OBJECT_PROTO = new Interpreter.MyObject(null); - this.FUNCTION_PROTO = new Interpreter.MyObject(this.OBJECT_PROTO); - // Initialize global objects. - this.initFunction(scope); - this.initObject(scope); - // Unable to set scope's parent prior (OBJECT did not exist). - // Note that in a browser this would be 'Window', whereas in Node.js it would - // be 'Object'. This interpreter is closer to Node in that it has no DOM. - scope.proto = this.OBJECT_PROTO; - this.setProperty(scope, 'constructor', this.OBJECT); - this.initArray(scope); - this.initString(scope); - this.initBoolean(scope); - this.initNumber(scope); - this.initDate(scope); - this.initRegExp(scope); - this.initError(scope); - this.initMath(scope); - this.initJSON(scope); - // Initialize global functions. - var thisInterpreter = this; - var func = this.createNativeFunction(function (x) { throw EvalError("Can't happen"); }, false); - func.eval = true; - this.setProperty(scope, 'eval', func); - this.setProperty(scope, 'parseInt', this.createNativeFunction(parseInt, false)); - this.setProperty(scope, 'parseFloat', this.createNativeFunction(parseFloat, false)); - this.setProperty(scope, 'isNaN', this.createNativeFunction(isNaN, false)); - this.setProperty(scope, 'isFinite', this.createNativeFunction(isFinite, false)); - var strFunctions = [ - [escape, 'escape'], [unescape, 'unescape'], - [decodeURI, 'decodeURI'], [decodeURIComponent, 'decodeURIComponent'], - [encodeURI, 'encodeURI'], [encodeURIComponent, 'encodeURIComponent'] - ]; - for (var i = 0; i < strFunctions.length; i++) { - var wrapper = (function (nativeFunc) { - return function (str) { - try { - return nativeFunc(str); - } - catch (e) { - // decodeURI('%xy') will throw an error. Catch and rethrow. - thisInterpreter.throwException(thisInterpreter.URI_ERROR, e.message); - } - }; - })(strFunctions[i][0]); - this.setProperty(scope, strFunctions[i][1], this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - } - // Run any user-provided initialization. - if (this.initFunc_) { - this.initFunc_(this, scope); - } - }; - ; - /** - * Initialize the Function class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initFunction = function (scope) { - var thisInterpreter = this; - var wrapper; - var identifierRegexp = /^[A-Za-z_$][\w$]*$/; - // Function constructor. - wrapper = function (var_args) { - if (thisInterpreter.calledWithNew()) { - // Called as new Function(). - var newFunc = this; - } - else { - // Called as Function(). - var newFunc = thisInterpreter.createObjectProto(thisInterpreter.FUNCTION_PROTO); - } - if (arguments.length) { - var code = String(arguments[arguments.length - 1]); - } - else { - var code = ''; - } - var args = []; - for (var i = 0; i < arguments.length - 1; i++) { - var name = String(arguments[i]); - if (!name.match(identifierRegexp)) { - thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid function argument: ' + name); - } - args.push(name); - } - args = args.join(', '); - // Interestingly, the scope for constructed functions is the global scope, - // even if they were constructed in some other scope. - newFunc.parentScope = thisInterpreter.global; - // Acorn needs to parse code in the context of a function or else 'return' - // statements will be syntax errors. - try { - var ast = acorn.parse('$ = function(' + args + ') {' + code + '};', Interpreter.PARSE_OPTIONS); - } - catch (e) { - // Acorn threw a SyntaxError. Rethrow as a trappable error. - thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid code: ' + e.message); - } - if (ast['body'].length !== 1) { - // Function('a', 'return a + 6;}; {alert(1);'); - thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid code in function body.'); - } - newFunc.node = ast['body'][0]['expression']['right']; - thisInterpreter.setProperty(newFunc, 'length', newFunc.node['length'], Interpreter.READONLY_DESCRIPTOR); - return newFunc; - }; - wrapper.id = this.functionCounter_++; - this.FUNCTION = this.createObjectProto(this.FUNCTION_PROTO); - this.setProperty(scope, 'Function', this.FUNCTION); - // Manually setup type and prototype because createObj doesn't recognize - // this object as a function (this.FUNCTION did not exist). - this.setProperty(this.FUNCTION, 'prototype', this.FUNCTION_PROTO); - this.FUNCTION.nativeFunc = wrapper; - // Configure Function.prototype. - this.setProperty(this.FUNCTION_PROTO, 'constructor', this.FUNCTION, Interpreter.NONENUMERABLE_DESCRIPTOR); - this.FUNCTION_PROTO.nativeFunc = function () { }; - this.FUNCTION_PROTO.nativeFunc.id = this.functionCounter_++; - this.setProperty(this.FUNCTION_PROTO, 'length', 0, Interpreter.READONLY_DESCRIPTOR); - var boxThis = function (value) { - // In non-strict mode 'this' must be an object. - if ((!value || !value.isObject) && !thisInterpreter.getScope().strict) { - if (value === undefined || value === null) { - // 'Undefined' and 'null' are changed to global object. - value = thisInterpreter.global; - } - else { - // Primitives must be boxed in non-strict mode. - var box = thisInterpreter.createObjectProto(thisInterpreter.getPrototype(value)); - box.data = value; - value = box; - } - } - return value; - }; - wrapper = function (thisArg, args) { - var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1]; - // Rewrite the current 'CallExpression' to apply a different function. - state.func_ = this; - // Assign the 'this' object. - state.funcThis_ = boxThis(thisArg); - // Bind any provided arguments. - state.arguments_ = []; - if (args !== null && args !== undefined) { - if (args.isObject) { - state.arguments_ = thisInterpreter.pseudoToNative(args); - } - else { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'CreateListFromArrayLike called on non-object'); - } - } - state.doneExec_ = false; - }; - this.setNativeFunctionPrototype(this.FUNCTION, 'apply', wrapper); - wrapper = function (thisArg, var_args) { - var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1]; - // Rewrite the current 'CallExpression' to call a different function. - state.func_ = this; - // Assign the 'this' object. - state.funcThis_ = boxThis(thisArg); - // Bind any provided arguments. - state.arguments_ = []; - for (var i = 1; i < arguments.length; i++) { - state.arguments_.push(arguments[i]); - } - state.doneExec_ = false; - }; - this.setNativeFunctionPrototype(this.FUNCTION, 'call', wrapper); - this.polyfills_.push( - // Polyfill copied from: - // developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind - "Object.defineProperty(Function.prototype, 'bind',", "{configurable: true, writable: true, value:", "function(oThis) {", "if (typeof this !== 'function') {", "throw TypeError('What is trying to be bound is not callable');", "}", "var aArgs = Array.prototype.slice.call(arguments, 1),", "fToBind = this,", "fNOP = function() {},", "fBound = function() {", "return fToBind.apply(this instanceof fNOP", "? this", ": oThis,", "aArgs.concat(Array.prototype.slice.call(arguments)));", "};", "if (this.prototype) {", "fNOP.prototype = this.prototype;", "}", "fBound.prototype = new fNOP();", "return fBound;", "}", "});", ""); - // Function has no parent to inherit from, so it needs its own mandatory - // toString and valueOf functions. - wrapper = function () { - return this.toString(); - }; - this.setNativeFunctionPrototype(this.FUNCTION, 'toString', wrapper); - this.setProperty(this.FUNCTION, 'toString', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - wrapper = function () { - return this.valueOf(); - }; - this.setNativeFunctionPrototype(this.FUNCTION, 'valueOf', wrapper); - this.setProperty(this.FUNCTION, 'valueOf', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - }; - ; - /** - * Initialize the Object class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initObject = function (scope) { - var thisInterpreter = this; - var wrapper; - // Object constructor. - wrapper = function (value) { + // Acorn threw a SyntaxError. Rethrow as a trappable error. + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid code: ' + e.message); + } + if (ast['body'].length !== 1) { + // Function('a', 'return a + 6;}; {alert(1);'); + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, 'Invalid code in function body.'); + } + newFunc.node = ast['body'][0]['expression']['right']; + thisInterpreter.setProperty(newFunc, 'length', newFunc.node['length'], Interpreter.READONLY_DESCRIPTOR); + return newFunc; + }; + wrapper.id = this.functionCounter_++; + this.FUNCTION = this.createObjectProto(this.FUNCTION_PROTO); + this.setProperty(scope, 'Function', this.FUNCTION); + // Manually setup type and prototype because createObj doesn't recognize + // this object as a function (this.FUNCTION did not exist). + this.setProperty(this.FUNCTION, 'prototype', this.FUNCTION_PROTO); + this.FUNCTION.nativeFunc = wrapper; + // Configure Function.prototype. + this.setProperty(this.FUNCTION_PROTO, 'constructor', this.FUNCTION, Interpreter.NONENUMERABLE_DESCRIPTOR); + this.FUNCTION_PROTO.nativeFunc = function () { }; + this.FUNCTION_PROTO.nativeFunc.id = this.functionCounter_++; + this.setProperty(this.FUNCTION_PROTO, 'length', 0, Interpreter.READONLY_DESCRIPTOR); + var boxThis = function (value) { + // In non-strict mode 'this' must be an object. + if ((!value || !value.isObject) && !thisInterpreter.getScope().strict) { if (value === undefined || value === null) { - // Create a new object. - if (thisInterpreter.calledWithNew()) { - // Called as new Object(). - return this; - } - else { - // Called as Object(). - return thisInterpreter.createObjectProto(thisInterpreter.OBJECT_PROTO); - } + // 'Undefined' and 'null' are changed to global object. + value = thisInterpreter.global; } - if (!value.isObject) { - // Wrap the value as an object. + else { + // Primitives must be boxed in non-strict mode. var box = thisInterpreter.createObjectProto(thisInterpreter.getPrototype(value)); box.data = value; - return box; - } - // Return the provided object. - return value; - }; - this.OBJECT = this.createNativeFunction(wrapper, true); - // Throw away the created prototype and use the root prototype. - this.setProperty(this.OBJECT, 'prototype', this.OBJECT_PROTO); - this.setProperty(this.OBJECT_PROTO, 'constructor', this.OBJECT); - this.setProperty(scope, 'Object', this.OBJECT); - /** - * Checks if the provided value is null or undefined. - * If so, then throw an error in the call stack. - * @param {Interpreter.MyValue} value Value to check. - */ - var throwIfNullUndefined = function (value) { - if (value === undefined || value === null) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, "Cannot convert '" + value + "' to object"); - } - }; - // Static methods on Object. - wrapper = function (obj) { - throwIfNullUndefined(obj); - var props = obj.isObject ? obj.properties : obj; - return thisInterpreter.nativeToPseudo(Object.getOwnPropertyNames(props)); - }; - this.setProperty(this.OBJECT, 'getOwnPropertyNames', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - wrapper = function (obj) { - throwIfNullUndefined(obj); - if (!obj.isObject) { - return thisInterpreter.nativeToPseudo(Object.keys(obj)); - } - return thisInterpreter.nativeToPseudo(Object.keys(obj.properties)); - }; - this.setProperty(this.OBJECT, 'keys', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - wrapper = function (proto) { - // Support for the second argument is the responsibility of a polyfill. - if (proto === null) { - return thisInterpreter.createObjectProto(null); - } - if (proto === undefined || !proto.isObject) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object prototype may only be an Object or null'); - } - return thisInterpreter.createObjectProto(proto); - }; - this.setProperty(this.OBJECT, 'create', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - // Add a polyfill to handle create's second argument. - this.polyfills_.push("(function() {", "var create_ = Object.create;", "Object.create = function(proto, props) {", "var obj = create_(proto);", "props && Object.defineProperties(obj, props);", "return obj;", "};", "})();", ""); - wrapper = function (obj, prop, descriptor) { - prop = String(prop); - if (!obj || !obj.isObject) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object.defineProperty called on non-object'); - } - if (!descriptor || !descriptor.isObject) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Property description must be an object'); - } - if (!obj.properties[prop] && obj.preventExtensions) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, "Can't define property '" + prop + "', object is not extensible"); - } - // The polyfill guarantees no inheritance and no getter functions. - // Therefore the descriptor properties map is the native object needed. - thisInterpreter.setProperty(obj, prop, ReferenceError, descriptor.properties); - return obj; - }; - this.setProperty(this.OBJECT, 'defineProperty', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - this.polyfills_.push( - // Flatten the descriptor to remove any inheritance or getter functions. - "(function() {", "var defineProperty_ = Object.defineProperty;", "Object.defineProperty = function(obj, prop, d1) {", "var d2 = {};", "if ('configurable' in d1) d2.configurable = d1.configurable;", "if ('enumerable' in d1) d2.enumerable = d1.enumerable;", "if ('writable' in d1) d2.writable = d1.writable;", "if ('value' in d1) d2.value = d1.value;", "if ('get' in d1) d2.get = d1.get;", "if ('set' in d1) d2.set = d1.set;", "return defineProperty_(obj, prop, d2);", "};", "})();", "Object.defineProperty(Object, 'defineProperties',", "{configurable: true, writable: true, value:", "function(obj, props) {", "var keys = Object.keys(props);", "for (var i = 0; i < keys.length; i++) {", "Object.defineProperty(obj, keys[i], props[keys[i]]);", "}", "return obj;", "}", "});", ""); - wrapper = function (obj, prop) { - if (!obj || !obj.isObject) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object.getOwnPropertyDescriptor called on non-object'); - } - prop = String(prop); - if (!(prop in obj.properties)) { - return undefined; - } - var descriptor = Object.getOwnPropertyDescriptor(obj.properties, prop); - var getter = obj.getter[prop]; - var setter = obj.setter[prop]; - if (getter || setter) { - descriptor.get = getter; - descriptor.set = setter; - delete descriptor.value; - delete descriptor.writable; - } - var pseudoDescriptor = thisInterpreter.nativeToPseudo(descriptor); - if ('value' in descriptor) { - thisInterpreter.setProperty(pseudoDescriptor, 'value', descriptor.value); - } - return pseudoDescriptor; - }; - this.setProperty(this.OBJECT, 'getOwnPropertyDescriptor', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - wrapper = function (obj) { - throwIfNullUndefined(obj); - return thisInterpreter.getPrototype(obj); - }; - this.setProperty(this.OBJECT, 'getPrototypeOf', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - wrapper = function (obj) { - return Boolean(obj) && !obj.preventExtensions; - }; - this.setProperty(this.OBJECT, 'isExtensible', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - wrapper = function (obj) { - if (obj && obj.isObject) { - obj.preventExtensions = true; - } - return obj; - }; - this.setProperty(this.OBJECT, 'preventExtensions', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - // Instance methods on Object. - this.setNativeFunctionPrototype(this.OBJECT, 'toString', Interpreter.MyObject.prototype.toString); - this.setNativeFunctionPrototype(this.OBJECT, 'toLocaleString', Interpreter.MyObject.prototype.toString); - this.setNativeFunctionPrototype(this.OBJECT, 'valueOf', Interpreter.MyObject.prototype.valueOf); - wrapper = function (prop) { - throwIfNullUndefined(this); - if (!this.isObject) { - return this.hasOwnProperty(prop); - } - return String(prop) in this.properties; - }; - this.setNativeFunctionPrototype(this.OBJECT, 'hasOwnProperty', wrapper); - wrapper = function (prop) { - throwIfNullUndefined(this); - return Object.prototype.propertyIsEnumerable.call(this.properties, prop); - }; - this.setNativeFunctionPrototype(this.OBJECT, 'propertyIsEnumerable', wrapper); - wrapper = function (obj) { - while (true) { - // Note, circular loops shouldn't be possible. - obj = thisInterpreter.getPrototype(obj); - if (!obj) { - // No parent; reached the top. - return false; - } - if (obj === this) { - return true; - } - } - }; - this.setNativeFunctionPrototype(this.OBJECT, 'isPrototypeOf', wrapper); - }; - ; - /** - * Initialize the Array class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initArray = function (scope) { - var thisInterpreter = this; - var getInt = function (obj, def) { - // Return an integer, or the default. - var n = obj ? Math.floor(obj) : def; - if (isNaN(n)) { - n = def; - } - return n; - }; - var wrapper; - // Array constructor. - wrapper = function (var_args) { - if (thisInterpreter.calledWithNew()) { - // Called as new Array(). - var newArray = this; - } - else { - // Called as Array(). - var newArray = thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO); - } - var first = arguments[0]; - if (arguments.length === 1 && typeof first === 'number') { - if (isNaN(Interpreter.legalArrayLength(first))) { - thisInterpreter.throwException(thisInterpreter.RANGE_ERROR, 'Invalid array length'); - } - newArray.properties.length = first; - } - else { - for (var i = 0; i < arguments.length; i++) { - newArray.properties[i] = arguments[i]; - } - newArray.properties.length = i; - } - return newArray; - }; - this.ARRAY = this.createNativeFunction(wrapper, true); - this.ARRAY_PROTO = this.ARRAY.properties['prototype']; - this.setProperty(scope, 'Array', this.ARRAY); - // Static methods on Array. - wrapper = function (obj) { - return obj && obj["class"] === 'Array'; - }; - this.setProperty(this.ARRAY, 'isArray', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - // Instance methods on Array. - wrapper = function () { - return Array.prototype.pop.call(this.properties); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'pop', wrapper); - wrapper = function (var_args) { - return Array.prototype.push.apply(this.properties, arguments); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'push', wrapper); - wrapper = function () { - return Array.prototype.shift.call(this.properties); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'shift', wrapper); - wrapper = function (var_args) { - return Array.prototype.unshift.apply(this.properties, arguments); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'unshift', wrapper); - wrapper = function () { - Array.prototype.reverse.call(this.properties); - return this; - }; - this.setNativeFunctionPrototype(this.ARRAY, 'reverse', wrapper); - wrapper = function (index, howmany /*, var_args*/) { - var list = Array.prototype.splice.apply(this.properties, arguments); - return thisInterpreter.nativeToPseudo(list); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'splice', wrapper); - wrapper = function (opt_begin, opt_end) { - var list = Array.prototype.slice.call(this.properties, opt_begin, opt_end); - return thisInterpreter.nativeToPseudo(list); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'slice', wrapper); - wrapper = function (opt_separator) { - return Array.prototype.join.call(this.properties, opt_separator); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'join', wrapper); - wrapper = function (var_args) { - var list = []; - var length = 0; - // Start by copying the current array. - var iLength = thisInterpreter.getProperty(this, 'length'); - for (var i = 0; i < iLength; i++) { - if (thisInterpreter.hasProperty(this, i)) { - var element = thisInterpreter.getProperty(this, i); - list[length] = element; - } - length++; - } - // Loop through all arguments and copy them in. - for (var i = 0; i < arguments.length; i++) { - var value = arguments[i]; - if (thisInterpreter.isa(value, thisInterpreter.ARRAY)) { - var jLength = thisInterpreter.getProperty(value, 'length'); - for (var j = 0; j < jLength; j++) { - if (thisInterpreter.hasProperty(value, j)) { - list[length] = thisInterpreter.getProperty(value, j); - } - length++; - } - } - else { - list[length] = value; - } - } - return thisInterpreter.nativeToPseudo(list); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'concat', wrapper); - wrapper = function (searchElement, opt_fromIndex) { - return Array.prototype.indexOf.apply(this.properties, arguments); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'indexOf', wrapper); - wrapper = function (searchElement, opt_fromIndex) { - return Array.prototype.lastIndexOf.apply(this.properties, arguments); - }; - this.setNativeFunctionPrototype(this.ARRAY, 'lastIndexOf', wrapper); - wrapper = function () { - Array.prototype.sort.call(this.properties); - return this; - }; - this.setNativeFunctionPrototype(this.ARRAY, 'sort', wrapper); - this.polyfills_.push( - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/every - "Object.defineProperty(Array.prototype, 'every',", "{configurable: true, writable: true, value:", "function(callbackfn, thisArg) {", "if (!this || typeof callbackfn !== 'function') throw TypeError();", "var T, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "k = 0;", "while (k < len) {", "if (k in O && !callbackfn.call(T, O[k], k, O)) return false;", "k++;", "}", "return true;", "}", "});", - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/filter - "Object.defineProperty(Array.prototype, 'filter',", "{configurable: true, writable: true, value:", "function(fun/*, thisArg*/) {", "if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();", "var t = Object(this);", "var len = t.length >>> 0;", "var res = [];", "var thisArg = arguments.length >= 2 ? arguments[1] : void 0;", "for (var i = 0; i < len; i++) {", "if (i in t) {", "var val = t[i];", "if (fun.call(thisArg, val, i, t)) res.push(val);", "}", "}", "return res;", "}", "});", - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach - "Object.defineProperty(Array.prototype, 'forEach',", "{configurable: true, writable: true, value:", "function(callback, thisArg) {", "if (!this || typeof callback !== 'function') throw TypeError();", "var T, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "k = 0;", "while (k < len) {", "if (k in O) callback.call(T, O[k], k, O);", "k++;", "}", "}", "});", - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map - "Object.defineProperty(Array.prototype, 'map',", "{configurable: true, writable: true, value:", "function(callback, thisArg) {", "if (!this || typeof callback !== 'function') new TypeError;", "var T, A, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "A = new Array(len);", "k = 0;", "while (k < len) {", "if (k in O) A[k] = callback.call(T, O[k], k, O);", "k++;", "}", "return A;", "}", "});", - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce - "Object.defineProperty(Array.prototype, 'reduce',", "{configurable: true, writable: true, value:", "function(callback /*, initialValue*/) {", "if (!this || typeof callback !== 'function') throw TypeError();", "var t = Object(this), len = t.length >>> 0, k = 0, value;", "if (arguments.length === 2) {", "value = arguments[1];", "} else {", "while (k < len && !(k in t)) k++;", "if (k >= len) {", "throw TypeError('Reduce of empty array with no initial value');", "}", "value = t[k++];", "}", "for (; k < len; k++) {", "if (k in t) value = callback(value, t[k], k, t);", "}", "return value;", "}", "});", - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight - "Object.defineProperty(Array.prototype, 'reduceRight',", "{configurable: true, writable: true, value:", "function(callback /*, initialValue*/) {", "if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();", "var t = Object(this), len = t.length >>> 0, k = len - 1, value;", "if (arguments.length >= 2) {", "value = arguments[1];", "} else {", "while (k >= 0 && !(k in t)) k--;", "if (k < 0) {", "throw TypeError('Reduce of empty array with no initial value');", "}", "value = t[k--];", "}", "for (; k >= 0; k--) {", "if (k in t) value = callback(value, t[k], k, t);", "}", "return value;", "}", "});", - // Polyfill copied from: - // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/some - "Object.defineProperty(Array.prototype, 'some',", "{configurable: true, writable: true, value:", "function(fun/*, thisArg*/) {", "if (!this || typeof fun !== 'function') throw TypeError();", "var t = Object(this);", "var len = t.length >>> 0;", "var thisArg = arguments.length >= 2 ? arguments[1] : void 0;", "for (var i = 0; i < len; i++) {", "if (i in t && fun.call(thisArg, t[i], i, t)) {", "return true;", "}", "}", "return false;", "}", "});", "(function() {", "var sort_ = Array.prototype.sort;", "Array.prototype.sort = function(opt_comp) {", - // Fast native sort. - "if (typeof opt_comp !== 'function') {", "return sort_.call(this);", "}", - // Slow bubble sort. - "for (var i = 0; i < this.length; i++) {", "var changes = 0;", "for (var j = 0; j < this.length - i - 1; j++) {", "if (opt_comp(this[j], this[j + 1]) > 0) {", "var swap = this[j];", "this[j] = this[j + 1];", "this[j + 1] = swap;", "changes++;", "}", "}", "if (!changes) break;", "}", "return this;", "};", "})();", "Object.defineProperty(Array.prototype, 'toLocaleString',", "{configurable: true, writable: true, value:", "function() {", "var out = [];", "for (var i = 0; i < this.length; i++) {", "out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();", "}", "return out.join(',');", "}", "});", ""); - }; - ; - /** - * Initialize the String class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initString = function (scope) { - var thisInterpreter = this; - var wrapper; - // String constructor. - wrapper = function (value) { - value = String(value); - if (thisInterpreter.calledWithNew()) { - // Called as new String(). - this.data = value; - return this; - } - else { - // Called as String(). - return value; - } - }; - this.STRING = this.createNativeFunction(wrapper, true); - this.setProperty(scope, 'String', this.STRING); - // Static methods on String. - this.setProperty(this.STRING, 'fromCharCode', this.createNativeFunction(String.fromCharCode, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - // Instance methods on String. - // Methods with exclusively primitive arguments. - var functions = ['trim', 'toLowerCase', 'toUpperCase', - 'toLocaleLowerCase', 'toLocaleUpperCase', 'charAt', 'charCodeAt', - 'substring', 'slice', 'substr', 'indexOf', 'lastIndexOf', 'concat']; - for (var i = 0; i < functions.length; i++) { - this.setNativeFunctionPrototype(this.STRING, functions[i], String.prototype[functions[i]]); - } - wrapper = function (compareString, locales, options) { - locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined; - options = options ? thisInterpreter.pseudoToNative(options) : undefined; - return String(this).localeCompare(compareString, locales, options); - }; - this.setNativeFunctionPrototype(this.STRING, 'localeCompare', wrapper); - wrapper = function (separator, limit) { - if (thisInterpreter.isa(separator, thisInterpreter.REGEXP)) { - separator = separator.data; - } - var jsList = String(this).split(separator, limit); - return thisInterpreter.nativeToPseudo(jsList); - }; - this.setNativeFunctionPrototype(this.STRING, 'split', wrapper); - wrapper = function (regexp) { - regexp = regexp ? regexp.data : undefined; - var match = String(this).match(regexp); - if (!match) { - return null; - } - return thisInterpreter.nativeToPseudo(match); - }; - this.setNativeFunctionPrototype(this.STRING, 'match', wrapper); - wrapper = function (regexp) { - regexp = regexp ? regexp.data : undefined; - return String(this).search(regexp); - }; - this.setNativeFunctionPrototype(this.STRING, 'search', wrapper); - wrapper = function (substr, newSubstr) { - // Support for function replacements is the responsibility of a polyfill. - return String(this).replace(substr.data || substr, newSubstr); - }; - this.setNativeFunctionPrototype(this.STRING, 'replace', wrapper); - // Add a polyfill to handle replace's second argument being a function. - this.polyfills_.push("(function() {", "var replace_ = String.prototype.replace;", "String.prototype.replace = function(substr, newSubstr) {", "if (typeof newSubstr !== 'function') {", - // string.replace(string|regexp, string) - "return replace_.call(this, substr, newSubstr);", "}", "var str = this;", "if (substr instanceof RegExp) {", // string.replace(regexp, function) - "var subs = [];", "var m = substr.exec(str);", "while (m) {", "m.push(m.index, str);", "var inject = newSubstr.apply(null, m);", "subs.push([m.index, m[0].length, inject]);", "m = substr.global ? substr.exec(str) : null;", "}", "for (var i = subs.length - 1; i >= 0; i--) {", "str = str.substring(0, subs[i][0]) + subs[i][2] + " + - "str.substring(subs[i][0] + subs[i][1]);", "}", "} else {", // string.replace(string, function) - "var i = str.indexOf(substr);", "if (i !== -1) {", "var inject = newSubstr(str.substr(i, substr.length), i, str);", "str = str.substring(0, i) + inject + " + - "str.substring(i + substr.length);", "}", "}", "return str;", "};", "})();", ""); - }; - ; - /** - * Initialize the Boolean class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initBoolean = function (scope) { - var thisInterpreter = this; - var wrapper; - // Boolean constructor. - wrapper = function (value) { - value = Boolean(value); - if (thisInterpreter.calledWithNew()) { - // Called as new Boolean(). - this.data = value; - return this; - } - else { - // Called as Boolean(). - return value; - } - }; - this.BOOLEAN = this.createNativeFunction(wrapper, true); - this.setProperty(scope, 'Boolean', this.BOOLEAN); - }; - ; - /** - * Initialize the Number class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initNumber = function (scope) { - var thisInterpreter = this; - var wrapper; - // Number constructor. - wrapper = function (value) { - value = Number(value); - if (thisInterpreter.calledWithNew()) { - // Called as new Number(). - this.data = value; - return this; - } - else { - // Called as Number(). - return value; - } - }; - this.NUMBER = this.createNativeFunction(wrapper, true); - this.setProperty(scope, 'Number', this.NUMBER); - var numConsts = ['MAX_VALUE', 'MIN_VALUE', 'NaN', 'NEGATIVE_INFINITY', - 'POSITIVE_INFINITY']; - for (var i = 0; i < numConsts.length; i++) { - this.setProperty(this.NUMBER, numConsts[i], Number[numConsts[i]], Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - } - // Instance methods on Number. - wrapper = function (fractionDigits) { - try { - return Number(this).toExponential(fractionDigits); - } - catch (e) { - // Throws if fractionDigits isn't within 0-20. - thisInterpreter.throwException(thisInterpreter.ERROR, e.message); - } - }; - this.setNativeFunctionPrototype(this.NUMBER, 'toExponential', wrapper); - wrapper = function (digits) { - try { - return Number(this).toFixed(digits); - } - catch (e) { - // Throws if digits isn't within 0-20. - thisInterpreter.throwException(thisInterpreter.ERROR, e.message); - } - }; - this.setNativeFunctionPrototype(this.NUMBER, 'toFixed', wrapper); - wrapper = function (precision) { - try { - return Number(this).toPrecision(precision); - } - catch (e) { - // Throws if precision isn't within range (depends on implementation). - thisInterpreter.throwException(thisInterpreter.ERROR, e.message); - } - }; - this.setNativeFunctionPrototype(this.NUMBER, 'toPrecision', wrapper); - wrapper = function (radix) { - try { - return Number(this).toString(radix); - } - catch (e) { - // Throws if radix isn't within 2-36. - thisInterpreter.throwException(thisInterpreter.ERROR, e.message); - } - }; - this.setNativeFunctionPrototype(this.NUMBER, 'toString', wrapper); - wrapper = function (locales, options) { - locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined; - options = options ? thisInterpreter.pseudoToNative(options) : undefined; - return Number(this).toLocaleString(locales, options); - }; - this.setNativeFunctionPrototype(this.NUMBER, 'toLocaleString', wrapper); - }; - ; - /** - * Initialize the Date class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initDate = function (scope) { - var thisInterpreter = this; - var wrapper; - // Date constructor. - wrapper = function (value, var_args) { - if (!thisInterpreter.calledWithNew()) { - // Called as Date(). - // Calling Date() as a function returns a string, no arguments are heeded. - return Date(); + value = box; } - // Called as new Date(). - var args = [null].concat([].slice.call(arguments)); - this.data = new (Function.prototype.bind.apply(Date, args)); - return this; - }; - this.DATE = this.createNativeFunction(wrapper, true); - this.setProperty(scope, 'Date', this.DATE); - // Static methods on Date. - this.setProperty(this.DATE, 'now', this.createNativeFunction(Date.now, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - this.setProperty(this.DATE, 'parse', this.createNativeFunction(Date.parse, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - this.setProperty(this.DATE, 'UTC', this.createNativeFunction(Date.UTC, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - // Instance methods on Date. - var functions = ['getDate', 'getDay', 'getFullYear', 'getHours', - 'getMilliseconds', 'getMinutes', 'getMonth', 'getSeconds', 'getTime', - 'getTimezoneOffset', 'getUTCDate', 'getUTCDay', 'getUTCFullYear', - 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', - 'getUTCSeconds', 'getYear', - 'setDate', 'setFullYear', 'setHours', 'setMilliseconds', - 'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', - 'setUTCFullYear', 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', - 'setUTCMonth', 'setUTCSeconds', 'setYear', - 'toDateString', 'toISOString', 'toJSON', 'toGMTString', - 'toLocaleDateString', 'toLocaleString', 'toLocaleTimeString', - 'toTimeString', 'toUTCString']; - for (var i = 0; i < functions.length; i++) { - wrapper = (function (nativeFunc) { - return function (var_args) { - var args = []; - for (var i = 0; i < arguments.length; i++) { - args[i] = thisInterpreter.pseudoToNative(arguments[i]); - } - return this.data[nativeFunc].apply(this.data, args); - }; - })(functions[i]); - this.setNativeFunctionPrototype(this.DATE, functions[i], wrapper); } + return value; }; - ; - /** - * Initialize Regular Expression object. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initRegExp = function (scope) { - var thisInterpreter = this; - var wrapper; - // RegExp constructor. - wrapper = function (pattern, flags) { - if (thisInterpreter.calledWithNew()) { - // Called as new RegExp(). - var rgx = this; + wrapper = function (thisArg, args) { + var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1]; + // Rewrite the current 'CallExpression' to apply a different function. + state.func_ = this; + // Assign the 'this' object. + state.funcThis_ = boxThis(thisArg); + // Bind any provided arguments. + state.arguments_ = []; + if (args !== null && args !== undefined) { + if (args.isObject) { + state.arguments_ = thisInterpreter.pseudoToNative(args); } else { - // Called as RegExp(). - var rgx = thisInterpreter.createObjectProto(thisInterpreter.REGEXP_PROTO); - } - pattern = pattern ? pattern.toString() : ''; - flags = flags ? flags.toString() : ''; - thisInterpreter.populateRegExp(rgx, new RegExp(pattern, flags)); - return rgx; - }; - this.REGEXP = this.createNativeFunction(wrapper, true); - this.REGEXP_PROTO = this.REGEXP.properties['prototype']; - this.setProperty(scope, 'RegExp', this.REGEXP); - this.setProperty(this.REGEXP.properties['prototype'], 'global', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - this.setProperty(this.REGEXP.properties['prototype'], 'ignoreCase', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - this.setProperty(this.REGEXP.properties['prototype'], 'multiline', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - this.setProperty(this.REGEXP.properties['prototype'], 'source', '(?:)', Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - wrapper = function (str) { - return this.data.test(str); - }; - this.setNativeFunctionPrototype(this.REGEXP, 'test', wrapper); - wrapper = function (str) { - str = str.toString(); - // Get lastIndex from wrapped regex, since this is settable. - this.data.lastIndex = - Number(thisInterpreter.getProperty(this, 'lastIndex')); - var match = this.data.exec(str); - thisInterpreter.setProperty(this, 'lastIndex', this.data.lastIndex); - if (match) { - var result = thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO); - for (var i = 0; i < match.length; i++) { - thisInterpreter.setProperty(result, i, match[i]); - } - // match has additional properties. - thisInterpreter.setProperty(result, 'index', match.index); - thisInterpreter.setProperty(result, 'input', match.input); - return result; + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'CreateListFromArrayLike called on non-object'); } - return null; - }; - this.setNativeFunctionPrototype(this.REGEXP, 'exec', wrapper); + } + state.doneExec_ = false; }; - ; - /** - * Initialize the Error class. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initError = function (scope) { - var thisInterpreter = this; - // Error constructor. - this.ERROR = this.createNativeFunction(function (opt_message) { + this.setNativeFunctionPrototype(this.FUNCTION, 'apply', wrapper); + wrapper = function (thisArg, var_args) { + var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1]; + // Rewrite the current 'CallExpression' to call a different function. + state.func_ = this; + // Assign the 'this' object. + state.funcThis_ = boxThis(thisArg); + // Bind any provided arguments. + state.arguments_ = []; + for (var i = 1; i < arguments.length; i++) { + state.arguments_.push(arguments[i]); + } + state.doneExec_ = false; + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'call', wrapper); + this.polyfills_.push( + // Polyfill copied from: + // developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind + "Object.defineProperty(Function.prototype, 'bind',", "{configurable: true, writable: true, value:", "function(oThis) {", "if (typeof this !== 'function') {", "throw TypeError('What is trying to be bound is not callable');", "}", "var aArgs = Array.prototype.slice.call(arguments, 1),", "fToBind = this,", "fNOP = function() {},", "fBound = function() {", "return fToBind.apply(this instanceof fNOP", "? this", ": oThis,", "aArgs.concat(Array.prototype.slice.call(arguments)));", "};", "if (this.prototype) {", "fNOP.prototype = this.prototype;", "}", "fBound.prototype = new fNOP();", "return fBound;", "}", "});", ""); + // Function has no parent to inherit from, so it needs its own mandatory + // toString and valueOf functions. + wrapper = function () { + return this.toString(); + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'toString', wrapper); + this.setProperty(this.FUNCTION, 'toString', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function () { + return this.valueOf(); + }; + this.setNativeFunctionPrototype(this.FUNCTION, 'valueOf', wrapper); + this.setProperty(this.FUNCTION, 'valueOf', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + }; + ; + /** + * Initialize the Object class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initObject = function (scope) { + var thisInterpreter = this; + var wrapper; + // Object constructor. + wrapper = function (value) { + if (value === undefined || value === null) { + // Create a new object. if (thisInterpreter.calledWithNew()) { - // Called as new Error(). - var newError = this; + // Called as new Object(). + return this; } else { - // Called as Error(). - var newError = thisInterpreter.createObject(thisInterpreter.ERROR); - } - if (opt_message) { - thisInterpreter.setProperty(newError, 'message', String(opt_message), Interpreter.NONENUMERABLE_DESCRIPTOR); - } - return newError; - }, true); - this.setProperty(scope, 'Error', this.ERROR); - this.setProperty(this.ERROR.properties['prototype'], 'message', '', Interpreter.NONENUMERABLE_DESCRIPTOR); - this.setProperty(this.ERROR.properties['prototype'], 'name', 'Error', Interpreter.NONENUMERABLE_DESCRIPTOR); - var createErrorSubclass = function (name) { - var constructor = thisInterpreter.createNativeFunction(function (opt_message) { - if (thisInterpreter.calledWithNew()) { - // Called as new XyzError(). - var newError = this; - } - else { - // Called as XyzError(). - var newError = thisInterpreter.createObject(constructor); - } - if (opt_message) { - thisInterpreter.setProperty(newError, 'message', String(opt_message), Interpreter.NONENUMERABLE_DESCRIPTOR); - } - return newError; - }, true); - thisInterpreter.setProperty(constructor, 'prototype', thisInterpreter.createObject(thisInterpreter.ERROR)); - thisInterpreter.setProperty(constructor.properties['prototype'], 'name', name, Interpreter.NONENUMERABLE_DESCRIPTOR); - thisInterpreter.setProperty(scope, name, constructor); - return constructor; - }; - this.EVAL_ERROR = createErrorSubclass('EvalError'); - this.RANGE_ERROR = createErrorSubclass('RangeError'); - this.REFERENCE_ERROR = createErrorSubclass('ReferenceError'); - this.SYNTAX_ERROR = createErrorSubclass('SyntaxError'); - this.TYPE_ERROR = createErrorSubclass('TypeError'); - this.URI_ERROR = createErrorSubclass('URIError'); - }; - ; - /** - * Initialize Math object. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initMath = function (scope) { - var thisInterpreter = this; - var myMath = this.createObjectProto(this.OBJECT_PROTO); - this.setProperty(scope, 'Math', myMath); - var mathConsts = ['E', 'LN2', 'LN10', 'LOG2E', 'LOG10E', 'PI', - 'SQRT1_2', 'SQRT2']; - for (var i = 0; i < mathConsts.length; i++) { - this.setProperty(myMath, mathConsts[i], Math[mathConsts[i]], Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - } - var numFunctions = ['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', - 'exp', 'floor', 'log', 'max', 'min', 'pow', 'random', - 'round', 'sin', 'sqrt', 'tan']; - for (var i = 0; i < numFunctions.length; i++) { - this.setProperty(myMath, numFunctions[i], this.createNativeFunction(Math[numFunctions[i]], false), Interpreter.NONENUMERABLE_DESCRIPTOR); - } - }; - ; - /** - * Initialize JSON object. - * @param {!Interpreter.MyObject} scope Global scope. - */ - Interpreter.prototype.initJSON = function (scope) { - var thisInterpreter = this; - var myJSON = thisInterpreter.createObjectProto(this.OBJECT_PROTO); - this.setProperty(scope, 'JSON', myJSON); - var wrapper = function (text) { - try { - var nativeObj = JSON.parse(text.toString()); + // Called as Object(). + return thisInterpreter.createObjectProto(thisInterpreter.OBJECT_PROTO); } - catch (e) { - thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, e.message); - } - return thisInterpreter.nativeToPseudo(nativeObj); - }; - this.setProperty(myJSON, 'parse', this.createNativeFunction(wrapper, false)); - wrapper = function (value) { - var nativeObj = thisInterpreter.pseudoToNative(value); - try { - var str = JSON.stringify(nativeObj); - } - catch (e) { - thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, e.message); - } - return str; - }; - this.setProperty(myJSON, 'stringify', this.createNativeFunction(wrapper, false)); - }; - ; - /** - * Is an object of a certain class? - * @param {Interpreter.MyValue} child Object to check. - * @param {Interpreter.MyObject} constructor Constructor of object. - * @return {boolean} True if object is the class or inherits from it. - * False otherwise. - */ - Interpreter.prototype.isa = function (child, constructor) { - if (child === null || child === undefined || !constructor) { - return false; } - var proto = constructor.properties['prototype']; - if (child === proto) { - return true; + if (!value.isObject) { + // Wrap the value as an object. + var box = thisInterpreter.createObjectProto(thisInterpreter.getPrototype(value)); + box.data = value; + return box; } - // The first step up the prototype chain is harder since the child might be - // a primitive value. Subsequent steps can just follow the .proto property. - var childObj = this.getPrototype(child); - while (childObj) { - if (childObj === proto) { - return true; - } - childObj = childObj.proto; - } - return false; - }; - ; - /** - * Is a value a legal integer for an array length? - * @param {Interpreter.MyValue} x Value to check. - * @return {number} Zero, or a positive integer if the value can be - * converted to such. NaN otherwise. - */ - Interpreter.legalArrayLength = function (x) { - var n = x >>> 0; - // Array length must be between 0 and 2^32-1 (inclusive). - return (n === Number(x)) ? n : NaN; - }; - ; - /** - * Is a value a legal integer for an array index? - * @param {Interpreter.MyValue} x Value to check. - * @return {number} Zero, or a positive integer if the value can be - * converted to such. NaN otherwise. - */ - Interpreter.legalArrayIndex = function (x) { - var n = x >>> 0; - // Array index cannot be 2^32-1, otherwise length would be 2^32. - // 0xffffffff is 2^32-1. - return (String(n) === String(x) && n !== 0xffffffff) ? n : NaN; + // Return the provided object. + return value; }; - ; + this.OBJECT = this.createNativeFunction(wrapper, true); + // Throw away the created prototype and use the root prototype. + this.setProperty(this.OBJECT, 'prototype', this.OBJECT_PROTO); + this.setProperty(this.OBJECT_PROTO, 'constructor', this.OBJECT); + this.setProperty(scope, 'Object', this.OBJECT); /** - * Create a new data object based on a constructor's prototype. - * @param {Interpreter.MyObject} constructor Parent constructor function, - * or null if scope object. - * @return {!Interpreter.MyObject} New data object. + * Checks if the provided value is null or undefined. + * If so, then throw an error in the call stack. + * @param {Interpreter.MyValue} value Value to check. */ - Interpreter.prototype.createObject = function (constructor) { - return this.createObjectProto(constructor && - constructor.properties['prototype']); - }; - ; - /** - * Create a new data object based on a prototype. - * @param {Interpreter.MyObject} proto Prototype object. - * @return {!Interpreter.MyObject} New data object. - */ - Interpreter.prototype.createObjectProto = function (proto) { - var obj = new Interpreter.MyObject(proto); - // Functions have prototype objects. - if (this.isa(obj, this.FUNCTION)) { - this.setProperty(obj, 'prototype', this.createObjectProto(this.OBJECT_PROTO || null)); - obj["class"] = 'Function'; - } - // Arrays have length. - if (this.isa(obj, this.ARRAY)) { - this.setProperty(obj, 'length', 0, { configurable: false, enumerable: false, writable: true }); - obj["class"] = 'Array'; + var throwIfNullUndefined = function (value) { + if (value === undefined || value === null) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, "Cannot convert '" + value + "' to object"); } - if (this.isa(obj, this.ERROR)) { - obj["class"] = 'Error'; - } - return obj; }; - ; - /** - * Initialize a pseudo regular expression object based on a native regular - * expression object. - * @param {!Interpreter.MyObject} pseudoRegexp The existing object to set. - * @param {!RegExp} nativeRegexp The native regular expression. - */ - Interpreter.prototype.populateRegExp = function (pseudoRegexp, nativeRegexp) { - pseudoRegexp.data = nativeRegexp; - // lastIndex is settable, all others are read-only attributes - this.setProperty(pseudoRegexp, 'lastIndex', nativeRegexp.lastIndex, Interpreter.NONENUMERABLE_DESCRIPTOR); - this.setProperty(pseudoRegexp, 'source', nativeRegexp.source, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - this.setProperty(pseudoRegexp, 'global', nativeRegexp.global, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - this.setProperty(pseudoRegexp, 'ignoreCase', nativeRegexp.ignoreCase, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - this.setProperty(pseudoRegexp, 'multiline', nativeRegexp.multiline, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); - }; - ; - /** - * Create a new function. - * @param {!Object} node AST node defining the function. - * @param {!Object} scope Parent scope. - * @return {!Interpreter.MyObject} New function. - */ - Interpreter.prototype.createFunction = function (node, scope) { - var func = this.createObjectProto(this.FUNCTION_PROTO); - func.parentScope = scope; - func.node = node; - this.setProperty(func, 'length', func.node['params'].length, Interpreter.READONLY_DESCRIPTOR); - return func; - }; - ; - /** - * Create a new native function. - * @param {!Function} nativeFunc JavaScript function. - * @param {boolean=} opt_constructor If true, the function's - * prototype will have its constructor property set to the function. - * If false, the function cannot be called as a constructor (e.g. escape). - * Defaults to undefined. - * @return {!Interpreter.MyObject} New function. - */ - Interpreter.prototype.createNativeFunction = function (nativeFunc, opt_constructor) { - var func = this.createObjectProto(this.FUNCTION_PROTO); - func.nativeFunc = nativeFunc; - nativeFunc.id = this.functionCounter_++; - this.setProperty(func, 'length', nativeFunc.length, Interpreter.READONLY_DESCRIPTOR); - if (opt_constructor) { - this.setProperty(func.properties['prototype'], 'constructor', func, Interpreter.NONENUMERABLE_DESCRIPTOR); - } - else if (opt_constructor === false) { - func.illegalConstructor = true; - this.setProperty(func, 'prototype', undefined); - } - return func; + // Static methods on Object. + wrapper = function (obj) { + throwIfNullUndefined(obj); + var props = obj.isObject ? obj.properties : obj; + return thisInterpreter.nativeToPseudo(Object.getOwnPropertyNames(props)); }; - ; - /** - * Create a new native asynchronous function. - * @param {!Function} asyncFunc JavaScript function. - * @return {!Interpreter.MyObject} New function. - */ - Interpreter.prototype.createAsyncFunction = function (asyncFunc) { - var func = this.createObjectProto(this.FUNCTION_PROTO); - func.asyncFunc = asyncFunc; - asyncFunc.id = this.functionCounter_++; - this.setProperty(func, 'length', asyncFunc.length, Interpreter.READONLY_DESCRIPTOR); - return func; - }; - ; - /** - * Converts from a native JS object or value to a JS interpreter object. - * Can handle JSON-style values. - * @param {*} nativeObj The native JS object to be converted. - * @return {Interpreter.MyValue} The equivalent JS interpreter object. - */ - Interpreter.prototype.nativeToPseudo = function (nativeObj) { - if (typeof nativeObj === 'boolean' || - typeof nativeObj === 'number' || - typeof nativeObj === 'string' || - nativeObj === null || nativeObj === undefined) { - return nativeObj; - } - if (nativeObj instanceof RegExp) { - var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO); - this.populateRegExp(pseudoRegexp, nativeObj); - return pseudoRegexp; - } - if (nativeObj instanceof Function) { - var interpreter = this; - var wrapper = function () { - return interpreter.nativeToPseudo(nativeObj.apply(interpreter, Array.prototype.slice.call(arguments) - .map(function (i) { - return interpreter.pseudoToNative(i); - }))); - }; - return this.createNativeFunction(wrapper, undefined); - } - var pseudoObj; - if (Array.isArray(nativeObj)) { - pseudoObj = this.createObjectProto(this.ARRAY_PROTO); - for (var i = 0; i < nativeObj.length; i++) { - if (i in nativeObj) { - this.setProperty(pseudoObj, i, this.nativeToPseudo(nativeObj[i])); - } - } - } - else { - pseudoObj = this.createObjectProto(this.OBJECT_PROTO); - for (var key in nativeObj) { - this.setProperty(pseudoObj, key, this.nativeToPseudo(nativeObj[key])); - } - } - return pseudoObj; - }; - ; - /** - * Converts from a JS interpreter object to native JS object. - * Can handle JSON-style values, plus cycles. - * @param {Interpreter.MyValue} pseudoObj The JS interpreter object to be - * converted. - * @param {Object=} opt_cycles Cycle detection (used in recursive calls). - * @return {*} The equivalent native JS object or value. - */ - Interpreter.prototype.pseudoToNative = function (pseudoObj, opt_cycles) { - if (typeof pseudoObj === 'boolean' || - typeof pseudoObj === 'number' || - typeof pseudoObj === 'string' || - pseudoObj === null || pseudoObj === undefined) { - return pseudoObj; - } - if (this.isa(pseudoObj, this.REGEXP)) { - return pseudoObj.data; - } - var cycles = opt_cycles || { - pseudo: [], - native: [] - }; - var i = cycles.pseudo.indexOf(pseudoObj); - if (i !== -1) { - return cycles.native[i]; - } - cycles.pseudo.push(pseudoObj); - var nativeObj; - if (this.isa(pseudoObj, this.ARRAY)) { - nativeObj = []; - cycles.native.push(nativeObj); - var length = this.getProperty(pseudoObj, 'length'); - for (var i = 0; i < length; i++) { - if (this.hasProperty(pseudoObj, i)) { - nativeObj[i] = - this.pseudoToNative(this.getProperty(pseudoObj, i), cycles); - } - } - } - else { - nativeObj = {}; - cycles.native.push(nativeObj); - var val; - for (var key in pseudoObj.properties) { - val = pseudoObj.properties[key]; - nativeObj[key] = this.pseudoToNative(val, cycles); - } - } - cycles.pseudo.pop(); - cycles.native.pop(); - return nativeObj; - }; - ; - /** - * Look up the prototype for this value. - * @param {Interpreter.MyValue} value Data object. - * @return {Interpreter.MyObject} Prototype object, null if none. - */ - Interpreter.prototype.getPrototype = function (value) { - switch (typeof value) { - case 'number': - return this.NUMBER.properties['prototype']; - case 'boolean': - return this.BOOLEAN.properties['prototype']; - case 'string': - return this.STRING.properties['prototype']; - } - if (value) { - return value.proto; + this.setProperty(this.OBJECT, 'getOwnPropertyNames', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (obj) { + throwIfNullUndefined(obj); + if (!obj.isObject) { + return thisInterpreter.nativeToPseudo(Object.keys(obj)); } - return null; + return thisInterpreter.nativeToPseudo(Object.keys(obj.properties)); }; - ; - /** - * Fetch a property value from a data object. - * @param {Interpreter.MyValue} obj Data object. - * @param {Interpreter.MyValue} name Name of property. - * @return {Interpreter.MyValue} Property value (may be undefined). - */ - Interpreter.prototype.getProperty = function (obj, name) { - name = String(name); - if (obj === undefined || obj === null) { - this.throwException(this.TYPE_ERROR, "Cannot read property '" + name + "' of " + obj); + this.setProperty(this.OBJECT, 'keys', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (proto) { + // Support for the second argument is the responsibility of a polyfill. + if (proto === null) { + return thisInterpreter.createObjectProto(null); } - if (name === 'length') { - // Special cases for magic length property. - if (this.isa(obj, this.STRING)) { - return String(obj).length; - } - } - else if (name.charCodeAt(0) < 0x40) { - // Might have numbers in there? - // Special cases for string array indexing - if (this.isa(obj, this.STRING)) { - var n = Interpreter.legalArrayIndex(name); - if (!isNaN(n) && n < String(obj).length) { - return String(obj)[n]; - } - } + if (proto === undefined || !proto.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object prototype may only be an Object or null'); } - do { - var myObj = obj; - if (myObj.properties && name in myObj.properties) { - var getter = myObj.getter[name]; - if (getter) { - // Flag this function as being a getter and thus needing immediate - // execution (rather than being the value of the property). - getter.isGetter = true; - return getter; - } - return myObj.properties[name]; - } - } while ((obj = this.getPrototype(obj))); - return undefined; + return thisInterpreter.createObjectProto(proto); }; - ; - /** - * Does the named property exist on a data object. - * @param {Interpreter.MyValue} obj Data object. - * @param {Interpreter.MyValue} name Name of property. - * @return {boolean} True if property exists. - */ - Interpreter.prototype.hasProperty = function (obj, name) { - if (!obj['isObject']) { - throw TypeError('Primitive data type has no properties'); + this.setProperty(this.OBJECT, 'create', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Add a polyfill to handle create's second argument. + this.polyfills_.push("(function() {", "var create_ = Object.create;", "Object.create = function(proto, props) {", "var obj = create_(proto);", "props && Object.defineProperties(obj, props);", "return obj;", "};", "})();", ""); + wrapper = function (obj, prop, descriptor) { + prop = String(prop); + if (!obj || !obj.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object.defineProperty called on non-object'); } - name = String(name); - if (name === 'length' && this.isa(obj, this.STRING)) { - return true; + if (!descriptor || !descriptor.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Property description must be an object'); } - if (this.isa(obj, this.STRING)) { - var n = Interpreter.legalArrayIndex(name); - if (!isNaN(n) && n < String(obj).length) { - return true; - } + if (!obj.properties[prop] && obj.preventExtensions) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, "Can't define property '" + prop + "', object is not extensible"); } - do { - var myObj = obj; - if (myObj.properties && name in myObj.properties) { - return true; - } - } while ((obj = this.getPrototype(obj))); - return false; + // The polyfill guarantees no inheritance and no getter functions. + // Therefore the descriptor properties map is the native object needed. + thisInterpreter.setProperty(obj, prop, ReferenceError, descriptor.properties); + return obj; }; - ; - /** - * Set a property value on a data object. - * @param {!Interpreter.MyObject} obj Data object. - * @param {Interpreter.MyValue} name Name of property. - * @param {Interpreter.MyValue|ReferenceError} value New property value. - * Use ReferenceError if value is handled by descriptor instead. - * @param {Object=} opt_descriptor Optional descriptor object. - * @return {!Interpreter.MyObject|undefined} Returns a setter function if one - * needs to be called, otherwise undefined. - */ - Interpreter.prototype.setProperty = function (obj, name, value, opt_descriptor) { - name = String(name); - if (obj === undefined || obj === null) { - this.throwException(this.TYPE_ERROR, "Cannot set property '" + name + "' of " + obj); - } - if (opt_descriptor && ('get' in opt_descriptor || 'set' in opt_descriptor) && - ('value' in opt_descriptor || 'writable' in opt_descriptor)) { - this.throwException(this.TYPE_ERROR, 'Invalid property descriptor. ' + - 'Cannot both specify accessors and a value or writable attribute'); - } - var strict = !this.stateStack || this.getScope().strict; - if (!obj.isObject) { - if (strict) { - this.throwException(this.TYPE_ERROR, "Can't create property '" + name + - "' on '" + obj + "'"); - } - return; - } - if (this.isa(obj, this.STRING)) { - var n = Interpreter.legalArrayIndex(name); - if (name === 'length' || (!isNaN(n) && n < String(obj).length)) { - // Can't set length or letters on String objects. - if (strict) { - this.throwException(this.TYPE_ERROR, "Cannot assign to read only " + - "property '" + name + "' of String '" + obj.data + "'"); - } - return; - } + this.setProperty(this.OBJECT, 'defineProperty', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + this.polyfills_.push( + // Flatten the descriptor to remove any inheritance or getter functions. + "(function() {", "var defineProperty_ = Object.defineProperty;", "Object.defineProperty = function(obj, prop, d1) {", "var d2 = {};", "if ('configurable' in d1) d2.configurable = d1.configurable;", "if ('enumerable' in d1) d2.enumerable = d1.enumerable;", "if ('writable' in d1) d2.writable = d1.writable;", "if ('value' in d1) d2.value = d1.value;", "if ('get' in d1) d2.get = d1.get;", "if ('set' in d1) d2.set = d1.set;", "return defineProperty_(obj, prop, d2);", "};", "})();", "Object.defineProperty(Object, 'defineProperties',", "{configurable: true, writable: true, value:", "function(obj, props) {", "var keys = Object.keys(props);", "for (var i = 0; i < keys.length; i++) {", "Object.defineProperty(obj, keys[i], props[keys[i]]);", "}", "return obj;", "}", "});", ""); + wrapper = function (obj, prop) { + if (!obj || !obj.isObject) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, 'Object.getOwnPropertyDescriptor called on non-object'); } - if (obj["class"] === 'Array') { - // Arrays have a magic length variable that is bound to the elements. - var length = obj.properties.length; - var i; - if (name === 'length') { - // Delete elements if length is smaller. - value = Interpreter.legalArrayLength(value); - if (isNaN(value)) { - this.throwException(this.RANGE_ERROR, 'Invalid array length'); - } - if (value < length) { - for (i in obj.properties) { - i = Interpreter.legalArrayIndex(i); - if (!isNaN(i) && value <= i) { - delete obj.properties[i]; - } - } - } - } - else if (!isNaN(i = Interpreter.legalArrayIndex(name))) { - // Increase length if this index is larger. - obj.properties.length = Math.max(length, i + 1); - } - } - if (obj.preventExtensions && !(name in obj.properties)) { - if (strict) { - this.throwException(this.TYPE_ERROR, "Can't add property '" + name + - "', object is not extensible"); - } - return; - } - if (opt_descriptor) { - // Define the property. - if ('get' in opt_descriptor) { - if (opt_descriptor.get) { - obj.getter[name] = opt_descriptor.get; - } - else { - delete obj.getter[name]; - } - } - if ('set' in opt_descriptor) { - if (opt_descriptor.set) { - obj.setter[name] = opt_descriptor.set; - } - else { - delete obj.setter[name]; - } - } - var descriptor = {}; - if ('configurable' in opt_descriptor) { - descriptor.configurable = opt_descriptor.configurable; - } - if ('enumerable' in opt_descriptor) { - descriptor.enumerable = opt_descriptor.enumerable; - } - if ('writable' in opt_descriptor) { - descriptor.writable = opt_descriptor.writable; - delete obj.getter[name]; - delete obj.setter[name]; - } - if ('value' in opt_descriptor) { - descriptor.value = opt_descriptor.value; - delete obj.getter[name]; - delete obj.setter[name]; - } - else if (value !== ReferenceError) { - descriptor.value = value; - delete obj.getter[name]; - delete obj.setter[name]; - } - try { - Object.defineProperty(obj.properties, name, descriptor); - } - catch (e) { - this.throwException(this.TYPE_ERROR, 'Cannot redefine property: ' + name); - } - } - else { - // Set the property. - if (value === ReferenceError) { - throw ReferenceError('Value not specified.'); - } - // Determine the parent (possibly self) where the property is defined. - var defObj = obj; - while (!(name in defObj.properties)) { - defObj = this.getPrototype(defObj); - if (!defObj) { - // This is a new property. - defObj = obj; - break; - } - } - if (defObj.setter && defObj.setter[name]) { - return defObj.setter[name]; - } - if (defObj.getter && defObj.getter[name]) { - if (strict) { - this.throwException(this.TYPE_ERROR, "Cannot set property '" + name + - "' of object '" + obj + "' which only has a getter"); - } - } - else { - // No setter, simple assignment. - try { - obj.properties[name] = value; - } - catch (e) { - if (strict) { - this.throwException(this.TYPE_ERROR, "Cannot assign to read only " + - "property '" + name + "' of object '" + obj + "'"); - } - } - } - } - }; - ; - /** - * Convenience method for adding a native function as a non-enumerable property - * onto an object's prototype. - * @param {!Interpreter.MyObject} obj Data object. - * @param {Interpreter.MyValue} name Name of property. - * @param {!Function} wrapper Function object. - */ - Interpreter.prototype.setNativeFunctionPrototype = function (obj, name, wrapper) { - this.setProperty(obj.properties['prototype'], name, this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); - }; - ; - /** - * Returns the current scope from the stateStack. - * @return {!Interpreter.MyObject} Current scope dictionary. - */ - Interpreter.prototype.getScope = function () { - var scope = this.stateStack[this.stateStack.length - 1].scope; - if (!scope) { - throw Error('No scope found.'); + prop = String(prop); + if (!(prop in obj.properties)) { + return undefined; } - return scope; - }; - ; - /** - * Create a new scope dictionary. - * @param {!Object} node AST node defining the scope container - * (e.g. a function). - * @param {Interpreter.MyObject} parentScope Scope to link to. - * @return {!Interpreter.MyObject} New scope. - */ - Interpreter.prototype.createScope = function (node, parentScope) { - var scope = this.createObjectProto(null); - scope.parentScope = parentScope; - if (!parentScope) { - this.initGlobalScope(scope); - } - this.populateScope_(node, scope); - // Determine if this scope starts with 'use strict'. - scope.strict = false; - if (parentScope && parentScope.strict) { - scope.strict = true; + var descriptor = Object.getOwnPropertyDescriptor(obj.properties, prop); + var getter = obj.getter[prop]; + var setter = obj.setter[prop]; + if (getter || setter) { + descriptor.get = getter; + descriptor.set = setter; + delete descriptor.value; + delete descriptor.writable; } - else { - var firstNode = node['body'] && node['body'][0]; - if (firstNode && firstNode.expression && - firstNode.expression['type'] === 'Literal' && - firstNode.expression.value === 'use strict') { - scope.strict = true; - } + var pseudoDescriptor = thisInterpreter.nativeToPseudo(descriptor); + if ('value' in descriptor) { + thisInterpreter.setProperty(pseudoDescriptor, 'value', descriptor.value); } - return scope; + return pseudoDescriptor; }; - ; - /** - * Create a new special scope dictionary. Similar to createScope(), but - * doesn't assume that the scope is for a function body. - * This is used for 'catch' clauses and 'with' statements. - * @param {!Interpreter.MyObject} parentScope Scope to link to. - * @param {Interpreter.MyObject=} opt_scope Optional object to transform into - * scope. - * @return {!Interpreter.MyObject} New scope. - */ - Interpreter.prototype.createSpecialScope = function (parentScope, opt_scope) { - if (!parentScope) { - throw Error('parentScope required'); - } - var scope = opt_scope || this.createObjectProto(null); - scope.parentScope = parentScope; - scope.strict = parentScope.strict; - return scope; + this.setProperty(this.OBJECT, 'getOwnPropertyDescriptor', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (obj) { + throwIfNullUndefined(obj); + return thisInterpreter.getPrototype(obj); }; - ; - /** - * Retrieves a value from the scope chain. - * @param {string} name Name of variable. - * @return {Interpreter.MyValue} Any value. - * May be flagged as being a getter and thus needing immediate execution - * (rather than being the value of the property). - */ - Interpreter.prototype.getValueFromScope = function (name) { - var scope = this.getScope(); - while (scope && scope !== this.global) { - if (name in scope.properties) { - return scope.properties[name]; - } - scope = scope.parentScope; - } - // The root scope is also an object which has inherited properties and - // could also have getters. - if (scope === this.global && this.hasProperty(scope, name)) { - return this.getProperty(scope, name); - } - // Typeof operator is unique: it can safely look at non-defined variables. - var prevNode = this.stateStack[this.stateStack.length - 1].node; - if (prevNode['type'] === 'UnaryExpression' && - prevNode['operator'] === 'typeof') { - return undefined; - } - this.throwException(this.REFERENCE_ERROR, name + ' is not defined'); + this.setProperty(this.OBJECT, 'getPrototypeOf', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (obj) { + return Boolean(obj) && !obj.preventExtensions; }; - ; - /** - * Sets a value to the current scope. - * @param {string} name Name of variable. - * @param {Interpreter.MyValue} value Value. - * @return {!Interpreter.MyObject|undefined} Returns a setter function if one - * needs to be called, otherwise undefined. - */ - Interpreter.prototype.setValueToScope = function (name, value) { - var scope = this.getScope(); - var strict = scope.strict; - while (scope && scope !== this.global) { - if (name in scope.properties) { - scope.properties[name] = value; - return undefined; - } - scope = scope.parentScope; + this.setProperty(this.OBJECT, 'isExtensible', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + wrapper = function (obj) { + if (obj && obj.isObject) { + obj.preventExtensions = true; } - // The root scope is also an object which has readonly properties and - // could also have setters. - if (scope === this.global && (!strict || this.hasProperty(scope, name))) { - return this.setProperty(scope, name, value); - } - this.throwException(this.REFERENCE_ERROR, name + ' is not defined'); + return obj; }; - ; - /** - * Create a new scope for the given node. - * @param {!Object} node AST node (program or function). - * @param {!Interpreter.MyObject} scope Scope dictionary to populate. - * @private - */ - Interpreter.prototype.populateScope_ = function (node, scope) { - if (node['type'] === 'VariableDeclaration') { - for (var i = 0; i < node['declarations'].length; i++) { - this.setProperty(scope, node['declarations'][i]['id']['name'], undefined, Interpreter.VARIABLE_DESCRIPTOR); + this.setProperty(this.OBJECT, 'preventExtensions', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Instance methods on Object. + this.setNativeFunctionPrototype(this.OBJECT, 'toString', Interpreter.MyObject.prototype.toString); + this.setNativeFunctionPrototype(this.OBJECT, 'toLocaleString', Interpreter.MyObject.prototype.toString); + this.setNativeFunctionPrototype(this.OBJECT, 'valueOf', Interpreter.MyObject.prototype.valueOf); + wrapper = function (prop) { + throwIfNullUndefined(this); + if (!this.isObject) { + return this.hasOwnProperty(prop); + } + return String(prop) in this.properties; + }; + this.setNativeFunctionPrototype(this.OBJECT, 'hasOwnProperty', wrapper); + wrapper = function (prop) { + throwIfNullUndefined(this); + return Object.prototype.propertyIsEnumerable.call(this.properties, prop); + }; + this.setNativeFunctionPrototype(this.OBJECT, 'propertyIsEnumerable', wrapper); + wrapper = function (obj) { + while (true) { + // Note, circular loops shouldn't be possible. + obj = thisInterpreter.getPrototype(obj); + if (!obj) { + // No parent; reached the top. + return false; + } + if (obj === this) { + return true; } } - else if (node['type'] === 'FunctionDeclaration') { - this.setProperty(scope, node['id']['name'], this.createFunction(node, scope), Interpreter.VARIABLE_DESCRIPTOR); - return; // Do not recurse into function. + }; + this.setNativeFunctionPrototype(this.OBJECT, 'isPrototypeOf', wrapper); + }; + ; + /** + * Initialize the Array class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initArray = function (scope) { + var thisInterpreter = this; + var getInt = function (obj, def) { + // Return an integer, or the default. + var n = obj ? Math.floor(obj) : def; + if (isNaN(n)) { + n = def; + } + return n; + }; + var wrapper; + // Array constructor. + wrapper = function (var_args) { + if (thisInterpreter.calledWithNew()) { + // Called as new Array(). + var newArray = this; } - else if (node['type'] === 'FunctionExpression') { - return; // Do not recurse into function. + else { + // Called as Array(). + var newArray = thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO); } - else if (node['type'] === 'ExpressionStatement') { - return; // Expressions can't contain variable/function declarations. + var first = arguments[0]; + if (arguments.length === 1 && typeof first === 'number') { + if (isNaN(Interpreter.legalArrayLength(first))) { + thisInterpreter.throwException(thisInterpreter.RANGE_ERROR, 'Invalid array length'); + } + newArray.properties.length = first; } - var nodeClass = node['constructor']; - for (var name in node) { - var prop = node[name]; - if (prop && typeof prop === 'object') { - if (Array.isArray(prop)) { - for (var i = 0; i < prop.length; i++) { - if (prop[i] && prop[i].constructor === nodeClass) { - this.populateScope_(prop[i], scope); - } - } - } - else { - if (prop.constructor === nodeClass) { - this.populateScope_(prop, scope); + else { + for (var i = 0; i < arguments.length; i++) { + newArray.properties[i] = arguments[i]; + } + newArray.properties.length = i; + } + return newArray; + }; + this.ARRAY = this.createNativeFunction(wrapper, true); + this.ARRAY_PROTO = this.ARRAY.properties['prototype']; + this.setProperty(scope, 'Array', this.ARRAY); + // Static methods on Array. + wrapper = function (obj) { + return obj && obj["class"] === 'Array'; + }; + this.setProperty(this.ARRAY, 'isArray', this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Instance methods on Array. + wrapper = function () { + return Array.prototype.pop.call(this.properties); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'pop', wrapper); + wrapper = function (var_args) { + return Array.prototype.push.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'push', wrapper); + wrapper = function () { + return Array.prototype.shift.call(this.properties); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'shift', wrapper); + wrapper = function (var_args) { + return Array.prototype.unshift.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'unshift', wrapper); + wrapper = function () { + Array.prototype.reverse.call(this.properties); + return this; + }; + this.setNativeFunctionPrototype(this.ARRAY, 'reverse', wrapper); + wrapper = function (index, howmany /*, var_args*/) { + var list = Array.prototype.splice.apply(this.properties, arguments); + return thisInterpreter.nativeToPseudo(list); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'splice', wrapper); + wrapper = function (opt_begin, opt_end) { + var list = Array.prototype.slice.call(this.properties, opt_begin, opt_end); + return thisInterpreter.nativeToPseudo(list); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'slice', wrapper); + wrapper = function (opt_separator) { + return Array.prototype.join.call(this.properties, opt_separator); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'join', wrapper); + wrapper = function (var_args) { + var list = []; + var length = 0; + // Start by copying the current array. + var iLength = thisInterpreter.getProperty(this, 'length'); + for (var i = 0; i < iLength; i++) { + if (thisInterpreter.hasProperty(this, i)) { + var element = thisInterpreter.getProperty(this, i); + list[length] = element; + } + length++; + } + // Loop through all arguments and copy them in. + for (var i = 0; i < arguments.length; i++) { + var value = arguments[i]; + if (thisInterpreter.isa(value, thisInterpreter.ARRAY)) { + var jLength = thisInterpreter.getProperty(value, 'length'); + for (var j = 0; j < jLength; j++) { + if (thisInterpreter.hasProperty(value, j)) { + list[length] = thisInterpreter.getProperty(value, j); } + length++; } } - } - }; - ; - /** - * Remove start and end values from AST, or set start and end values to a - * constant value. Used to remove highlighting from polyfills and to set - * highlighting in an eval to cover the entire eval expression. - * @param {!Object} node AST node. - * @param {number=} start Starting character of all nodes, or undefined. - * @param {number=} end Ending character of all nodes, or undefined. - * @private - */ - Interpreter.prototype.stripLocations_ = function (node, start, end) { - if (start) { - node['start'] = start; + else { + list[length] = value; + } + } + return thisInterpreter.nativeToPseudo(list); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'concat', wrapper); + wrapper = function (searchElement, opt_fromIndex) { + return Array.prototype.indexOf.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'indexOf', wrapper); + wrapper = function (searchElement, opt_fromIndex) { + return Array.prototype.lastIndexOf.apply(this.properties, arguments); + }; + this.setNativeFunctionPrototype(this.ARRAY, 'lastIndexOf', wrapper); + wrapper = function () { + Array.prototype.sort.call(this.properties); + return this; + }; + this.setNativeFunctionPrototype(this.ARRAY, 'sort', wrapper); + this.polyfills_.push( + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/every + "Object.defineProperty(Array.prototype, 'every',", "{configurable: true, writable: true, value:", "function(callbackfn, thisArg) {", "if (!this || typeof callbackfn !== 'function') throw TypeError();", "var T, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "k = 0;", "while (k < len) {", "if (k in O && !callbackfn.call(T, O[k], k, O)) return false;", "k++;", "}", "return true;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/filter + "Object.defineProperty(Array.prototype, 'filter',", "{configurable: true, writable: true, value:", "function(fun/*, thisArg*/) {", "if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();", "var t = Object(this);", "var len = t.length >>> 0;", "var res = [];", "var thisArg = arguments.length >= 2 ? arguments[1] : void 0;", "for (var i = 0; i < len; i++) {", "if (i in t) {", "var val = t[i];", "if (fun.call(thisArg, val, i, t)) res.push(val);", "}", "}", "return res;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach + "Object.defineProperty(Array.prototype, 'forEach',", "{configurable: true, writable: true, value:", "function(callback, thisArg) {", "if (!this || typeof callback !== 'function') throw TypeError();", "var T, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "k = 0;", "while (k < len) {", "if (k in O) callback.call(T, O[k], k, O);", "k++;", "}", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map + "Object.defineProperty(Array.prototype, 'map',", "{configurable: true, writable: true, value:", "function(callback, thisArg) {", "if (!this || typeof callback !== 'function') new TypeError;", "var T, A, k;", "var O = Object(this);", "var len = O.length >>> 0;", "if (arguments.length > 1) T = thisArg;", "A = new Array(len);", "k = 0;", "while (k < len) {", "if (k in O) A[k] = callback.call(T, O[k], k, O);", "k++;", "}", "return A;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce + "Object.defineProperty(Array.prototype, 'reduce',", "{configurable: true, writable: true, value:", "function(callback /*, initialValue*/) {", "if (!this || typeof callback !== 'function') throw TypeError();", "var t = Object(this), len = t.length >>> 0, k = 0, value;", "if (arguments.length === 2) {", "value = arguments[1];", "} else {", "while (k < len && !(k in t)) k++;", "if (k >= len) {", "throw TypeError('Reduce of empty array with no initial value');", "}", "value = t[k++];", "}", "for (; k < len; k++) {", "if (k in t) value = callback(value, t[k], k, t);", "}", "return value;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight + "Object.defineProperty(Array.prototype, 'reduceRight',", "{configurable: true, writable: true, value:", "function(callback /*, initialValue*/) {", "if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();", "var t = Object(this), len = t.length >>> 0, k = len - 1, value;", "if (arguments.length >= 2) {", "value = arguments[1];", "} else {", "while (k >= 0 && !(k in t)) k--;", "if (k < 0) {", "throw TypeError('Reduce of empty array with no initial value');", "}", "value = t[k--];", "}", "for (; k >= 0; k--) {", "if (k in t) value = callback(value, t[k], k, t);", "}", "return value;", "}", "});", + // Polyfill copied from: + // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/some + "Object.defineProperty(Array.prototype, 'some',", "{configurable: true, writable: true, value:", "function(fun/*, thisArg*/) {", "if (!this || typeof fun !== 'function') throw TypeError();", "var t = Object(this);", "var len = t.length >>> 0;", "var thisArg = arguments.length >= 2 ? arguments[1] : void 0;", "for (var i = 0; i < len; i++) {", "if (i in t && fun.call(thisArg, t[i], i, t)) {", "return true;", "}", "}", "return false;", "}", "});", "(function() {", "var sort_ = Array.prototype.sort;", "Array.prototype.sort = function(opt_comp) {", + // Fast native sort. + "if (typeof opt_comp !== 'function') {", "return sort_.call(this);", "}", + // Slow bubble sort. + "for (var i = 0; i < this.length; i++) {", "var changes = 0;", "for (var j = 0; j < this.length - i - 1; j++) {", "if (opt_comp(this[j], this[j + 1]) > 0) {", "var swap = this[j];", "this[j] = this[j + 1];", "this[j + 1] = swap;", "changes++;", "}", "}", "if (!changes) break;", "}", "return this;", "};", "})();", "Object.defineProperty(Array.prototype, 'toLocaleString',", "{configurable: true, writable: true, value:", "function() {", "var out = [];", "for (var i = 0; i < this.length; i++) {", "out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();", "}", "return out.join(',');", "}", "});", ""); + }; + ; + /** + * Initialize the String class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initString = function (scope) { + var thisInterpreter = this; + var wrapper; + // String constructor. + wrapper = function (value) { + value = String(value); + if (thisInterpreter.calledWithNew()) { + // Called as new String(). + this.data = value; + return this; } else { - delete node['start']; + // Called as String(). + return value; } - if (end) { - node['end'] = end; + }; + this.STRING = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'String', this.STRING); + // Static methods on String. + this.setProperty(this.STRING, 'fromCharCode', this.createNativeFunction(String.fromCharCode, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Instance methods on String. + // Methods with exclusively primitive arguments. + var functions = ['trim', 'toLowerCase', 'toUpperCase', + 'toLocaleLowerCase', 'toLocaleUpperCase', 'charAt', 'charCodeAt', + 'substring', 'slice', 'substr', 'indexOf', 'lastIndexOf', 'concat']; + for (var i = 0; i < functions.length; i++) { + this.setNativeFunctionPrototype(this.STRING, functions[i], String.prototype[functions[i]]); + } + wrapper = function (compareString, locales, options) { + locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined; + options = options ? thisInterpreter.pseudoToNative(options) : undefined; + return String(this).localeCompare(compareString, locales, options); + }; + this.setNativeFunctionPrototype(this.STRING, 'localeCompare', wrapper); + wrapper = function (separator, limit) { + if (thisInterpreter.isa(separator, thisInterpreter.REGEXP)) { + separator = separator.data; + } + var jsList = String(this).split(separator, limit); + return thisInterpreter.nativeToPseudo(jsList); + }; + this.setNativeFunctionPrototype(this.STRING, 'split', wrapper); + wrapper = function (regexp) { + regexp = regexp ? regexp.data : undefined; + var match = String(this).match(regexp); + if (!match) { + return null; } - else { - delete node['end']; + return thisInterpreter.nativeToPseudo(match); + }; + this.setNativeFunctionPrototype(this.STRING, 'match', wrapper); + wrapper = function (regexp) { + regexp = regexp ? regexp.data : undefined; + return String(this).search(regexp); + }; + this.setNativeFunctionPrototype(this.STRING, 'search', wrapper); + wrapper = function (substr, newSubstr) { + // Support for function replacements is the responsibility of a polyfill. + return String(this).replace(substr.data || substr, newSubstr); + }; + this.setNativeFunctionPrototype(this.STRING, 'replace', wrapper); + // Add a polyfill to handle replace's second argument being a function. + this.polyfills_.push("(function() {", "var replace_ = String.prototype.replace;", "String.prototype.replace = function(substr, newSubstr) {", "if (typeof newSubstr !== 'function') {", + // string.replace(string|regexp, string) + "return replace_.call(this, substr, newSubstr);", "}", "var str = this;", "if (substr instanceof RegExp) {", // string.replace(regexp, function) + "var subs = [];", "var m = substr.exec(str);", "while (m) {", "m.push(m.index, str);", "var inject = newSubstr.apply(null, m);", "subs.push([m.index, m[0].length, inject]);", "m = substr.global ? substr.exec(str) : null;", "}", "for (var i = subs.length - 1; i >= 0; i--) {", "str = str.substring(0, subs[i][0]) + subs[i][2] + " + + "str.substring(subs[i][0] + subs[i][1]);", "}", "} else {", // string.replace(string, function) + "var i = str.indexOf(substr);", "if (i !== -1) {", "var inject = newSubstr(str.substr(i, substr.length), i, str);", "str = str.substring(0, i) + inject + " + + "str.substring(i + substr.length);", "}", "}", "return str;", "};", "})();", ""); + }; + ; + /** + * Initialize the Boolean class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initBoolean = function (scope) { + var thisInterpreter = this; + var wrapper; + // Boolean constructor. + wrapper = function (value) { + value = Boolean(value); + if (thisInterpreter.calledWithNew()) { + // Called as new Boolean(). + this.data = value; + return this; } - for (var name in node) { - if (node.hasOwnProperty(name)) { - var prop = node[name]; - if (prop && typeof prop === 'object') { - this.stripLocations_(prop, start, end); - } - } + else { + // Called as Boolean(). + return value; } }; - ; - /** - * Is the current state directly being called with as a construction with 'new'. - * @return {boolean} True if 'new foo()', false if 'foo()'. - */ - Interpreter.prototype.calledWithNew = function () { - return this.stateStack[this.stateStack.length - 1].isConstructor; - }; - ; - /** - * Gets a value from the scope chain or from an object property. - * @param {!Array} ref Name of variable or object/propname tuple. - * @return {Interpreter.MyValue} Any value. - * May be flagged as being a getter and thus needing immediate execution - * (rather than being the value of the property). - */ - Interpreter.prototype.getValue = function (ref) { - if (ref[0] === Interpreter.SCOPE_REFERENCE) { - // A null/varname variable lookup. - return this.getValueFromScope(ref[1]); + this.BOOLEAN = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'Boolean', this.BOOLEAN); + }; + ; + /** + * Initialize the Number class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initNumber = function (scope) { + var thisInterpreter = this; + var wrapper; + // Number constructor. + wrapper = function (value) { + value = Number(value); + if (thisInterpreter.calledWithNew()) { + // Called as new Number(). + this.data = value; + return this; } else { - // An obj/prop components tuple (foo.bar). - return this.getProperty(ref[0], ref[1]); + // Called as Number(). + return value; } }; - ; - /** - * Sets a value to the scope chain or to an object property. - * @param {!Array} ref Name of variable or object/propname tuple. - * @param {Interpreter.MyValue} value Value. - * @return {!Interpreter.MyObject|undefined} Returns a setter function if one - * needs to be called, otherwise undefined. - */ - Interpreter.prototype.setValue = function (ref, value) { - if (ref[0] === Interpreter.SCOPE_REFERENCE) { - // A null/varname variable lookup. - return this.setValueToScope(ref[1], value); + this.NUMBER = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'Number', this.NUMBER); + var numConsts = ['MAX_VALUE', 'MIN_VALUE', 'NaN', 'NEGATIVE_INFINITY', + 'POSITIVE_INFINITY']; + for (var i = 0; i < numConsts.length; i++) { + this.setProperty(this.NUMBER, numConsts[i], Number[numConsts[i]], Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + } + // Instance methods on Number. + wrapper = function (fractionDigits) { + try { + return Number(this).toExponential(fractionDigits); } - else { - // An obj/prop components tuple (foo.bar). - return this.setProperty(ref[0], ref[1], value); + catch (e) { + // Throws if fractionDigits isn't within 0-20. + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); } }; - ; - /** - * Throw an exception in the interpreter that can be handled by an - * interpreter try/catch statement. If unhandled, a real exception will - * be thrown. Can be called with either an error class and a message, or - * with an actual object to be thrown. - * @param {!Interpreter.MyObject} errorClass Type of error (if message is - * provided) or the value to throw (if no message). - * @param {string=} opt_message Message being thrown. - */ - Interpreter.prototype.throwException = function (errorClass, opt_message) { - if (opt_message === undefined) { - var error = errorClass; // This is a value to throw, not an error class. + this.setNativeFunctionPrototype(this.NUMBER, 'toExponential', wrapper); + wrapper = function (digits) { + try { + return Number(this).toFixed(digits); } - else { - var error = this.createObject(errorClass); - this.setProperty(error, 'message', opt_message, Interpreter.NONENUMERABLE_DESCRIPTOR); + catch (e) { + // Throws if digits isn't within 0-20. + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); } - this.executeException(error); - // Abort anything related to the current step. - throw Interpreter.STEP_ERROR; }; - ; - /** - * Throw an exception in the interpreter that can be handled by a - * interpreter try/catch statement. If unhandled, a real exception will - * be thrown. - * @param {!Interpreter.MyObject} error Error object to execute. - */ - Interpreter.prototype.executeException = function (error) { - // Search for a try statement. - do { - this.stateStack.pop(); - var state = this.stateStack[this.stateStack.length - 1]; - if (state.node['type'] === 'TryStatement') { - state.throwValue = error; - return; - } - } while (state && state.node['type'] !== 'Program'); - // Throw a real error. - var realError; - if (this.isa(error, this.ERROR)) { - var errorTable = { - 'EvalError': EvalError, - 'RangeError': RangeError, - 'ReferenceError': ReferenceError, - 'SyntaxError': SyntaxError, - 'TypeError': TypeError, - 'URIError': URIError - }; - var name = this.getProperty(error, 'name').toString(); - var message = this.getProperty(error, 'message').valueOf(); - var type = errorTable[name] || Error; - realError = type(message); + this.setNativeFunctionPrototype(this.NUMBER, 'toFixed', wrapper); + wrapper = function (precision) { + try { + return Number(this).toPrecision(precision); } - else { - realError = error.toString(); + catch (e) { + // Throws if precision isn't within range (depends on implementation). + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); } - throw realError; }; - ; - /** - * Create a call to a getter function. - * @param {!Interpreter.MyObject} func Function to execute. - * @param {!Interpreter.MyObject|!Array} left - * Name of variable or object/propname tuple. - * @private - */ - Interpreter.prototype.createGetter_ = function (func, left) { - // Normally 'this' will be specified as the object component (o.x). - // Sometimes 'this' is explicitly provided (o). - var funcThis = Array.isArray(left) ? left[0] : left; - var node = new this.nodeConstructor(); - node['type'] = 'CallExpression'; - var state = new Interpreter.MyState(node, this.stateStack[this.stateStack.length - 1].scope); - state.doneCallee_ = true; - state.funcThis_ = funcThis; - state.func_ = func; - state.doneArgs_ = true; - state.arguments_ = []; - return state; + this.setNativeFunctionPrototype(this.NUMBER, 'toPrecision', wrapper); + wrapper = function (radix) { + try { + return Number(this).toString(radix); + } + catch (e) { + // Throws if radix isn't within 2-36. + thisInterpreter.throwException(thisInterpreter.ERROR, e.message); + } }; - ; - /** - * Create a call to a setter function. - * @param {!Interpreter.MyObject} func Function to execute. - * @param {!Interpreter.MyObject|!Array} left - * Name of variable or object/propname tuple. - * @param {Interpreter.MyValue} value Value to set. - * @private - */ - Interpreter.prototype.createSetter_ = function (func, left, value) { - // Normally 'this' will be specified as the object component (o.x). - // Sometimes 'this' is implicitly the global object (x). - var funcThis = Array.isArray(left) ? left[0] : this.global; - var node = new this.nodeConstructor(); - node['type'] = 'CallExpression'; - var state = new Interpreter.MyState(node, this.stateStack[this.stateStack.length - 1].scope); - state.doneCallee_ = true; - state.funcThis_ = funcThis; - state.func_ = func; - state.doneArgs_ = true; - state.arguments_ = [value]; - return state; + this.setNativeFunctionPrototype(this.NUMBER, 'toString', wrapper); + wrapper = function (locales, options) { + locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined; + options = options ? thisInterpreter.pseudoToNative(options) : undefined; + return Number(this).toLocaleString(locales, options); }; - ; - /////////////////////////////////////////////////////////////////////////////// - // Functions to handle each node type. - /////////////////////////////////////////////////////////////////////////////// - Interpreter.prototype.stepArrayExpression = function (stack, state, node) { - var elements = node['elements']; - var n = state.n_ || 0; - if (!state.array_) { - state.array_ = this.createObjectProto(this.ARRAY_PROTO); - state.array_.properties.length = elements.length; + this.setNativeFunctionPrototype(this.NUMBER, 'toLocaleString', wrapper); + }; + ; + /** + * Initialize the Date class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initDate = function (scope) { + var thisInterpreter = this; + var wrapper; + // Date constructor. + wrapper = function (value, var_args) { + if (!thisInterpreter.calledWithNew()) { + // Called as Date(). + // Calling Date() as a function returns a string, no arguments are heeded. + return Date(); + } + // Called as new Date(). + var args = [null].concat([].slice.call(arguments)); + this.data = new (Function.prototype.bind.apply(Date, args)); + return this; + }; + this.DATE = this.createNativeFunction(wrapper, true); + this.setProperty(scope, 'Date', this.DATE); + // Static methods on Date. + this.setProperty(this.DATE, 'now', this.createNativeFunction(Date.now, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.DATE, 'parse', this.createNativeFunction(Date.parse, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.DATE, 'UTC', this.createNativeFunction(Date.UTC, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + // Instance methods on Date. + var functions = ['getDate', 'getDay', 'getFullYear', 'getHours', + 'getMilliseconds', 'getMinutes', 'getMonth', 'getSeconds', 'getTime', + 'getTimezoneOffset', 'getUTCDate', 'getUTCDay', 'getUTCFullYear', + 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', + 'getUTCSeconds', 'getYear', + 'setDate', 'setFullYear', 'setHours', 'setMilliseconds', + 'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', + 'setUTCFullYear', 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', + 'setUTCMonth', 'setUTCSeconds', 'setYear', + 'toDateString', 'toISOString', 'toJSON', 'toGMTString', + 'toLocaleDateString', 'toLocaleString', 'toLocaleTimeString', + 'toTimeString', 'toUTCString']; + for (var i = 0; i < functions.length; i++) { + wrapper = (function (nativeFunc) { + return function (var_args) { + var args = []; + for (var i = 0; i < arguments.length; i++) { + args[i] = thisInterpreter.pseudoToNative(arguments[i]); + } + return this.data[nativeFunc].apply(this.data, args); + }; + })(functions[i]); + this.setNativeFunctionPrototype(this.DATE, functions[i], wrapper); + } + }; + ; + /** + * Initialize Regular Expression object. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initRegExp = function (scope) { + var thisInterpreter = this; + var wrapper; + // RegExp constructor. + wrapper = function (pattern, flags) { + if (thisInterpreter.calledWithNew()) { + // Called as new RegExp(). + var rgx = this; } else { - this.setProperty(state.array_, n, state.value); - n++; - } - while (n < elements.length) { - // Skip missing elements - they're not defined, not undefined. - if (elements[n]) { - state.n_ = n; - return new Interpreter.MyState(elements[n], state.scope); - } - n++; + // Called as RegExp(). + var rgx = thisInterpreter.createObjectProto(thisInterpreter.REGEXP_PROTO); + } + pattern = pattern ? pattern.toString() : ''; + flags = flags ? flags.toString() : ''; + thisInterpreter.populateRegExp(rgx, new RegExp(pattern, flags)); + return rgx; + }; + this.REGEXP = this.createNativeFunction(wrapper, true); + this.REGEXP_PROTO = this.REGEXP.properties['prototype']; + this.setProperty(scope, 'RegExp', this.REGEXP); + this.setProperty(this.REGEXP.properties['prototype'], 'global', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.REGEXP.properties['prototype'], 'ignoreCase', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.REGEXP.properties['prototype'], 'multiline', undefined, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.REGEXP.properties['prototype'], 'source', '(?:)', Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + wrapper = function (str) { + return this.data.test(str); + }; + this.setNativeFunctionPrototype(this.REGEXP, 'test', wrapper); + wrapper = function (str) { + str = str.toString(); + // Get lastIndex from wrapped regex, since this is settable. + this.data.lastIndex = + Number(thisInterpreter.getProperty(this, 'lastIndex')); + var match = this.data.exec(str); + thisInterpreter.setProperty(this, 'lastIndex', this.data.lastIndex); + if (match) { + var result = thisInterpreter.createObjectProto(thisInterpreter.ARRAY_PROTO); + for (var i = 0; i < match.length; i++) { + thisInterpreter.setProperty(result, i, match[i]); + } + // match has additional properties. + thisInterpreter.setProperty(result, 'index', match.index); + thisInterpreter.setProperty(result, 'input', match.input); + return result; } - stack.pop(); - stack[stack.length - 1].value = state.array_; + return null; }; - ; - Interpreter.prototype.stepAssignmentExpression = function (stack, state, node) { - if (!state.doneLeft_) { - state.doneLeft_ = true; - var nextState = new Interpreter.MyState(node['left'], state.scope); - nextState.components = true; - return nextState; + this.setNativeFunctionPrototype(this.REGEXP, 'exec', wrapper); + }; + ; + /** + * Initialize the Error class. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initError = function (scope) { + var thisInterpreter = this; + // Error constructor. + this.ERROR = this.createNativeFunction(function (opt_message) { + if (thisInterpreter.calledWithNew()) { + // Called as new Error(). + var newError = this; } - if (!state.doneRight_) { - if (!state.leftReference_) { - state.leftReference_ = state.value; + else { + // Called as Error(). + var newError = thisInterpreter.createObject(thisInterpreter.ERROR); + } + if (opt_message) { + thisInterpreter.setProperty(newError, 'message', String(opt_message), Interpreter.NONENUMERABLE_DESCRIPTOR); + } + return newError; + }, true); + this.setProperty(scope, 'Error', this.ERROR); + this.setProperty(this.ERROR.properties['prototype'], 'message', '', Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(this.ERROR.properties['prototype'], 'name', 'Error', Interpreter.NONENUMERABLE_DESCRIPTOR); + var createErrorSubclass = function (name) { + var constructor = thisInterpreter.createNativeFunction(function (opt_message) { + if (thisInterpreter.calledWithNew()) { + // Called as new XyzError(). + var newError = this; } - if (state.doneGetter_) { - state.leftValue_ = state.value; + else { + // Called as XyzError(). + var newError = thisInterpreter.createObject(constructor); } - if (!state.doneGetter_ && node['operator'] !== '=') { - var leftValue = this.getValue(state.leftReference_); - state.leftValue_ = leftValue; - if (leftValue && typeof leftValue === 'object' && leftValue.isGetter) { - // Clear the getter flag and call the getter function. - leftValue.isGetter = false; - state.doneGetter_ = true; - var func = (leftValue); - return this.createGetter_(func, state.leftReference_); - } + if (opt_message) { + thisInterpreter.setProperty(newError, 'message', String(opt_message), Interpreter.NONENUMERABLE_DESCRIPTOR); } - state.doneRight_ = true; - return new Interpreter.MyState(node['right'], state.scope); + return newError; + }, true); + thisInterpreter.setProperty(constructor, 'prototype', thisInterpreter.createObject(thisInterpreter.ERROR)); + thisInterpreter.setProperty(constructor.properties['prototype'], 'name', name, Interpreter.NONENUMERABLE_DESCRIPTOR); + thisInterpreter.setProperty(scope, name, constructor); + return constructor; + }; + this.EVAL_ERROR = createErrorSubclass('EvalError'); + this.RANGE_ERROR = createErrorSubclass('RangeError'); + this.REFERENCE_ERROR = createErrorSubclass('ReferenceError'); + this.SYNTAX_ERROR = createErrorSubclass('SyntaxError'); + this.TYPE_ERROR = createErrorSubclass('TypeError'); + this.URI_ERROR = createErrorSubclass('URIError'); + }; + ; + /** + * Initialize Math object. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initMath = function (scope) { + var thisInterpreter = this; + var myMath = this.createObjectProto(this.OBJECT_PROTO); + this.setProperty(scope, 'Math', myMath); + var mathConsts = ['E', 'LN2', 'LN10', 'LOG2E', 'LOG10E', 'PI', + 'SQRT1_2', 'SQRT2']; + for (var i = 0; i < mathConsts.length; i++) { + this.setProperty(myMath, mathConsts[i], Math[mathConsts[i]], Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + } + var numFunctions = ['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', + 'exp', 'floor', 'log', 'max', 'min', 'pow', 'random', + 'round', 'sin', 'sqrt', 'tan']; + for (var i = 0; i < numFunctions.length; i++) { + this.setProperty(myMath, numFunctions[i], this.createNativeFunction(Math[numFunctions[i]], false), Interpreter.NONENUMERABLE_DESCRIPTOR); + } + }; + ; + /** + * Initialize JSON object. + * @param {!Interpreter.MyObject} scope Global scope. + */ + Interpreter.prototype.initJSON = function (scope) { + var thisInterpreter = this; + var myJSON = thisInterpreter.createObjectProto(this.OBJECT_PROTO); + this.setProperty(scope, 'JSON', myJSON); + var wrapper = function (text) { + try { + var nativeObj = JSON.parse(text.toString()); } - if (state.doneSetter_) { - // Return if setter function. - // Setter method on property has completed. - // Ignore its return value, and use the original set value instead. - stack.pop(); - stack[stack.length - 1].value = state.doneSetter_; - return; + catch (e) { + thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, e.message); } - var value = state.leftValue_; - var rightValue = state.value; - switch (node['operator']) { - case '=': - value = rightValue; - break; - case '+=': - value += rightValue; - break; - case '-=': - value -= rightValue; - break; - case '*=': - value *= rightValue; - break; - case '/=': - value /= rightValue; - break; - case '%=': - value %= rightValue; - break; - case '<<=': - value <<= rightValue; - break; - case '>>=': - value >>= rightValue; - break; - case '>>>=': - value >>>= rightValue; - break; - case '&=': - value &= rightValue; - break; - case '^=': - value ^= rightValue; - break; - case '|=': - value |= rightValue; - break; - default: - throw SyntaxError('Unknown assignment expression: ' + node['operator']); + return thisInterpreter.nativeToPseudo(nativeObj); + }; + this.setProperty(myJSON, 'parse', this.createNativeFunction(wrapper, false)); + wrapper = function (value) { + var nativeObj = thisInterpreter.pseudoToNative(value); + try { + var str = JSON.stringify(nativeObj); } - var setter = this.setValue(state.leftReference_, value); - if (setter) { - state.doneSetter_ = value; - return this.createSetter_(setter, state.leftReference_, value); + catch (e) { + thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, e.message); } - // Return if no setter function. - stack.pop(); - stack[stack.length - 1].value = value; + return str; }; - ; - Interpreter.prototype.stepBinaryExpression = function (stack, state, node) { - if (!state.doneLeft_) { - state.doneLeft_ = true; - return new Interpreter.MyState(node['left'], state.scope); - } - if (!state.doneRight_) { - state.doneRight_ = true; - state.leftValue_ = state.value; - return new Interpreter.MyState(node['right'], state.scope); + this.setProperty(myJSON, 'stringify', this.createNativeFunction(wrapper, false)); + }; + ; + /** + * Is an object of a certain class? + * @param {Interpreter.MyValue} child Object to check. + * @param {Interpreter.MyObject} constructor Constructor of object. + * @return {boolean} True if object is the class or inherits from it. + * False otherwise. + */ + Interpreter.prototype.isa = function (child, constructor) { + if (child === null || child === undefined || !constructor) { + return false; + } + var proto = constructor.properties['prototype']; + if (child === proto) { + return true; + } + // The first step up the prototype chain is harder since the child might be + // a primitive value. Subsequent steps can just follow the .proto property. + var childObj = this.getPrototype(child); + while (childObj) { + if (childObj === proto) { + return true; } - stack.pop(); - var leftValue = state.leftValue_; - var rightValue = state.value; - var value; - switch (node['operator']) { - case '==': - value = leftValue == rightValue; - break; - case '!=': - value = leftValue != rightValue; - break; - case '===': - value = leftValue === rightValue; - break; - case '!==': - value = leftValue !== rightValue; - break; - case '>': - value = leftValue > rightValue; - break; - case '>=': - value = leftValue >= rightValue; - break; - case '<': - value = leftValue < rightValue; - break; - case '<=': - value = leftValue <= rightValue; - break; - case '+': - value = leftValue + rightValue; - break; - case '-': - value = leftValue - rightValue; - break; - case '*': - value = leftValue * rightValue; - break; - case '/': - value = leftValue / rightValue; - break; - case '%': - value = leftValue % rightValue; - break; - case '&': - value = leftValue & rightValue; - break; - case '|': - value = leftValue | rightValue; - break; - case '^': - value = leftValue ^ rightValue; - break; - case '<<': - value = leftValue << rightValue; - break; - case '>>': - value = leftValue >> rightValue; - break; - case '>>>': - value = leftValue >>> rightValue; - break; - case 'in': - if (!rightValue || !rightValue.isObject) { - this.throwException(this.TYPE_ERROR, "'in' expects an object, not '" + rightValue + "'"); - } - value = this.hasProperty(rightValue, leftValue); - break; - case 'instanceof': - if (!this.isa(rightValue, this.FUNCTION)) { - this.throwException(this.TYPE_ERROR, 'Right-hand side of instanceof is not an object'); - } - value = leftValue.isObject ? this.isa(leftValue, rightValue) : false; - break; - default: - throw SyntaxError('Unknown binary operator: ' + node['operator']); + childObj = childObj.proto; + } + return false; + }; + ; + /** + * Is a value a legal integer for an array length? + * @param {Interpreter.MyValue} x Value to check. + * @return {number} Zero, or a positive integer if the value can be + * converted to such. NaN otherwise. + */ + Interpreter.legalArrayLength = function (x) { + var n = x >>> 0; + // Array length must be between 0 and 2^32-1 (inclusive). + return (n === Number(x)) ? n : NaN; + }; + ; + /** + * Is a value a legal integer for an array index? + * @param {Interpreter.MyValue} x Value to check. + * @return {number} Zero, or a positive integer if the value can be + * converted to such. NaN otherwise. + */ + Interpreter.legalArrayIndex = function (x) { + var n = x >>> 0; + // Array index cannot be 2^32-1, otherwise length would be 2^32. + // 0xffffffff is 2^32-1. + return (String(n) === String(x) && n !== 0xffffffff) ? n : NaN; + }; + ; + /** + * Create a new data object based on a constructor's prototype. + * @param {Interpreter.MyObject} constructor Parent constructor function, + * or null if scope object. + * @return {!Interpreter.MyObject} New data object. + */ + Interpreter.prototype.createObject = function (constructor) { + return this.createObjectProto(constructor && + constructor.properties['prototype']); + }; + ; + /** + * Create a new data object based on a prototype. + * @param {Interpreter.MyObject} proto Prototype object. + * @return {!Interpreter.MyObject} New data object. + */ + Interpreter.prototype.createObjectProto = function (proto) { + var obj = new Interpreter.MyObject(proto); + // Functions have prototype objects. + if (this.isa(obj, this.FUNCTION)) { + this.setProperty(obj, 'prototype', this.createObjectProto(this.OBJECT_PROTO || null)); + obj["class"] = 'Function'; + } + // Arrays have length. + if (this.isa(obj, this.ARRAY)) { + this.setProperty(obj, 'length', 0, { configurable: false, enumerable: false, writable: true }); + obj["class"] = 'Array'; + } + if (this.isa(obj, this.ERROR)) { + obj["class"] = 'Error'; + } + return obj; + }; + ; + /** + * Initialize a pseudo regular expression object based on a native regular + * expression object. + * @param {!Interpreter.MyObject} pseudoRegexp The existing object to set. + * @param {!RegExp} nativeRegexp The native regular expression. + */ + Interpreter.prototype.populateRegExp = function (pseudoRegexp, nativeRegexp) { + pseudoRegexp.data = nativeRegexp; + // lastIndex is settable, all others are read-only attributes + this.setProperty(pseudoRegexp, 'lastIndex', nativeRegexp.lastIndex, Interpreter.NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'source', nativeRegexp.source, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'global', nativeRegexp.global, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'ignoreCase', nativeRegexp.ignoreCase, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + this.setProperty(pseudoRegexp, 'multiline', nativeRegexp.multiline, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR); + }; + ; + /** + * Create a new function. + * @param {!Object} node AST node defining the function. + * @param {!Object} scope Parent scope. + * @return {!Interpreter.MyObject} New function. + */ + Interpreter.prototype.createFunction = function (node, scope) { + var func = this.createObjectProto(this.FUNCTION_PROTO); + func.parentScope = scope; + func.node = node; + this.setProperty(func, 'length', func.node['params'].length, Interpreter.READONLY_DESCRIPTOR); + return func; + }; + ; + /** + * Create a new native function. + * @param {!Function} nativeFunc JavaScript function. + * @param {boolean=} opt_constructor If true, the function's + * prototype will have its constructor property set to the function. + * If false, the function cannot be called as a constructor (e.g. escape). + * Defaults to undefined. + * @return {!Interpreter.MyObject} New function. + */ + Interpreter.prototype.createNativeFunction = function (nativeFunc, opt_constructor) { + var func = this.createObjectProto(this.FUNCTION_PROTO); + func.nativeFunc = nativeFunc; + nativeFunc.id = this.functionCounter_++; + this.setProperty(func, 'length', nativeFunc.length, Interpreter.READONLY_DESCRIPTOR); + if (opt_constructor) { + this.setProperty(func.properties['prototype'], 'constructor', func, Interpreter.NONENUMERABLE_DESCRIPTOR); + } + else if (opt_constructor === false) { + func.illegalConstructor = true; + this.setProperty(func, 'prototype', undefined); + } + return func; + }; + ; + /** + * Create a new native asynchronous function. + * @param {!Function} asyncFunc JavaScript function. + * @return {!Interpreter.MyObject} New function. + */ + Interpreter.prototype.createAsyncFunction = function (asyncFunc) { + var func = this.createObjectProto(this.FUNCTION_PROTO); + func.asyncFunc = asyncFunc; + asyncFunc.id = this.functionCounter_++; + this.setProperty(func, 'length', asyncFunc.length, Interpreter.READONLY_DESCRIPTOR); + return func; + }; + ; + /** + * Converts from a native JS object or value to a JS interpreter object. + * Can handle JSON-style values. + * @param {*} nativeObj The native JS object to be converted. + * @return {Interpreter.MyValue} The equivalent JS interpreter object. + */ + Interpreter.prototype.nativeToPseudo = function (nativeObj) { + if (typeof nativeObj === 'boolean' || + typeof nativeObj === 'number' || + typeof nativeObj === 'string' || + nativeObj === null || nativeObj === undefined) { + return nativeObj; + } + if (nativeObj instanceof RegExp) { + var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO); + this.populateRegExp(pseudoRegexp, nativeObj); + return pseudoRegexp; + } + if (nativeObj instanceof Function) { + var interpreter = this; + var wrapper = function () { + return interpreter.nativeToPseudo(nativeObj.apply(interpreter, Array.prototype.slice.call(arguments) + .map(function (i) { + return interpreter.pseudoToNative(i); + }))); + }; + return this.createNativeFunction(wrapper, undefined); + } + var pseudoObj; + if (Array.isArray(nativeObj)) { + pseudoObj = this.createObjectProto(this.ARRAY_PROTO); + for (var i = 0; i < nativeObj.length; i++) { + if (i in nativeObj) { + this.setProperty(pseudoObj, i, this.nativeToPseudo(nativeObj[i])); + } } - stack[stack.length - 1].value = value; - }; - ; - Interpreter.prototype.stepBlockStatement = function (stack, state, node) { - var n = state.n_ || 0; - var expression = node['body'][n]; - if (expression) { - state.n_ = n + 1; - return new Interpreter.MyState(expression, state.scope); + } + else { + pseudoObj = this.createObjectProto(this.OBJECT_PROTO); + for (var key in nativeObj) { + this.setProperty(pseudoObj, key, this.nativeToPseudo(nativeObj[key])); } - stack.pop(); + } + return pseudoObj; + }; + ; + /** + * Converts from a JS interpreter object to native JS object. + * Can handle JSON-style values, plus cycles. + * @param {Interpreter.MyValue} pseudoObj The JS interpreter object to be + * converted. + * @param {Object=} opt_cycles Cycle detection (used in recursive calls). + * @return {*} The equivalent native JS object or value. + */ + Interpreter.prototype.pseudoToNative = function (pseudoObj, opt_cycles) { + if (typeof pseudoObj === 'boolean' || + typeof pseudoObj === 'number' || + typeof pseudoObj === 'string' || + pseudoObj === null || pseudoObj === undefined) { + return pseudoObj; + } + if (this.isa(pseudoObj, this.REGEXP)) { + return pseudoObj.data; + } + var cycles = opt_cycles || { + pseudo: [], + native: [] }; - ; - Interpreter.prototype.stepBreakStatement = function (stack, state, node) { - stack.pop(); - var label = null; - if (node['label']) { - label = node['label']['name']; - } - while (state && - state.node['type'] !== 'CallExpression' && - state.node['type'] !== 'NewExpression') { - if (label) { - if (state.labels && state.labels.indexOf(label) !== -1) { - return; - } - } - else if (state.isLoop || state.isSwitch) { - return; + var i = cycles.pseudo.indexOf(pseudoObj); + if (i !== -1) { + return cycles.native[i]; + } + cycles.pseudo.push(pseudoObj); + var nativeObj; + if (this.isa(pseudoObj, this.ARRAY)) { + nativeObj = []; + cycles.native.push(nativeObj); + var length = this.getProperty(pseudoObj, 'length'); + for (var i = 0; i < length; i++) { + if (this.hasProperty(pseudoObj, i)) { + nativeObj[i] = + this.pseudoToNative(this.getProperty(pseudoObj, i), cycles); } - state = stack.pop(); } - // Syntax error, do not allow this error to be trapped. - throw SyntaxError('Illegal break statement'); - }; - ; - Interpreter.prototype.stepCallExpression = function (stack, state, node) { - if (!state.doneCallee_) { - state.doneCallee_ = 1; - // Components needed to determine value of 'this'. - var nextState = new Interpreter.MyState(node['callee'], state.scope); - nextState.components = true; - return nextState; + } + else { + nativeObj = {}; + cycles.native.push(nativeObj); + var val; + for (var key in pseudoObj.properties) { + val = pseudoObj.properties[key]; + nativeObj[key] = this.pseudoToNative(val, cycles); } - if (state.doneCallee_ === 1) { - // Determine value of the function. - state.doneCallee_ = 2; - var func = state.value; - if (Array.isArray(func)) { - state.func_ = this.getValue(func); - if (func[0] !== Interpreter.SCOPE_REFERENCE) { - // Method function, 'this' is object (ignored if invoked as 'new'). - state.funcThis_ = func[0]; - } - func = state.func_; - if (func && typeof func === 'object' && func.isGetter) { - // Clear the getter flag and call the getter function. - func.isGetter = false; - state.doneCallee_ = 1; - return this.createGetter_(/** @type {!Interpreter.Object} */ (func), state.value); - } - } - else { - // Already evaluated function: (function(){...})(); - state.func_ = func; - } - state.arguments_ = []; - state.n_ = 0; + } + cycles.pseudo.pop(); + cycles.native.pop(); + return nativeObj; + }; + ; + /** + * Look up the prototype for this value. + * @param {Interpreter.MyValue} value Data object. + * @return {Interpreter.MyObject} Prototype object, null if none. + */ + Interpreter.prototype.getPrototype = function (value) { + switch (typeof value) { + case 'number': + return this.NUMBER.properties['prototype']; + case 'boolean': + return this.BOOLEAN.properties['prototype']; + case 'string': + return this.STRING.properties['prototype']; + } + if (value) { + return value.proto; + } + return null; + }; + ; + /** + * Fetch a property value from a data object. + * @param {Interpreter.MyValue} obj Data object. + * @param {Interpreter.MyValue} name Name of property. + * @return {Interpreter.MyValue} Property value (may be undefined). + */ + Interpreter.prototype.getProperty = function (obj, name) { + name = String(name); + if (obj === undefined || obj === null) { + this.throwException(this.TYPE_ERROR, "Cannot read property '" + name + "' of " + obj); + } + if (name === 'length') { + // Special cases for magic length property. + if (this.isa(obj, this.STRING)) { + return String(obj).length; } - var func = state.func_; - if (!state.doneArgs_) { - if (state.n_ !== 0) { - state.arguments_.push(state.value); - } - if (node['arguments'][state.n_]) { - return new Interpreter.MyState(node['arguments'][state.n_++], state.scope); - } - // Determine value of 'this' in function. - if (node['type'] === 'NewExpression') { - if (func.illegalConstructor) { - // Illegal: new escape(); - this.throwException(this.TYPE_ERROR, func + ' is not a constructor'); - } - // Constructor, 'this' is new object. - state.funcThis_ = this.createObject(func); - state.isConstructor = true; - } - else if (state.funcThis_ === undefined) { - // Global function, 'this' is global object (or 'undefined' if strict). - state.funcThis_ = state.scope.strict ? undefined : this.global; + } + else if (name.charCodeAt(0) < 0x40) { + // Might have numbers in there? + // Special cases for string array indexing + if (this.isa(obj, this.STRING)) { + var n = Interpreter.legalArrayIndex(name); + if (!isNaN(n) && n < String(obj).length) { + return String(obj)[n]; } - state.doneArgs_ = true; } - if (!state.doneExec_) { - state.doneExec_ = true; - if (!func || !func.isObject) { - this.throwException(this.TYPE_ERROR, func + ' is not a function'); - } - var funcNode = func.node; - if (funcNode) { - var scope = this.createScope(funcNode['body'], func.parentScope); - // Add all arguments. - for (var i = 0; i < funcNode['params'].length; i++) { - var paramName = funcNode['params'][i]['name']; - var paramValue = state.arguments_.length > i ? state.arguments_[i] : - undefined; - this.setProperty(scope, paramName, paramValue); - } - // Build arguments variable. - var argsList = this.createObjectProto(this.ARRAY_PROTO); - for (var i = 0; i < state.arguments_.length; i++) { - this.setProperty(argsList, i, state.arguments_[i]); - } - this.setProperty(scope, 'arguments', argsList); - // Add the function's name (var x = function foo(){};) - var name = funcNode['id'] && funcNode['id']['name']; - if (name) { - this.setProperty(scope, name, func); - } - this.setProperty(scope, 'this', state.funcThis_, Interpreter.READONLY_DESCRIPTOR); - state.value = undefined; // Default value if no explicit return. - return new Interpreter.MyState(funcNode['body'], scope); + } + do { + var myObj = obj; + if (myObj.properties && name in myObj.properties) { + var getter = myObj.getter[name]; + if (getter) { + // Flag this function as being a getter and thus needing immediate + // execution (rather than being the value of the property). + getter.isGetter = true; + return getter; + } + return myObj.properties[name]; + } + } while ((obj = this.getPrototype(obj))); + return undefined; + }; + ; + /** + * Does the named property exist on a data object. + * @param {Interpreter.MyValue} obj Data object. + * @param {Interpreter.MyValue} name Name of property. + * @return {boolean} True if property exists. + */ + Interpreter.prototype.hasProperty = function (obj, name) { + if (!obj['isObject']) { + throw TypeError('Primitive data type has no properties'); + } + name = String(name); + if (name === 'length' && this.isa(obj, this.STRING)) { + return true; + } + if (this.isa(obj, this.STRING)) { + var n = Interpreter.legalArrayIndex(name); + if (!isNaN(n) && n < String(obj).length) { + return true; + } + } + do { + var myObj = obj; + if (myObj.properties && name in myObj.properties) { + return true; + } + } while ((obj = this.getPrototype(obj))); + return false; + }; + ; + /** + * Set a property value on a data object. + * @param {!Interpreter.MyObject} obj Data object. + * @param {Interpreter.MyValue} name Name of property. + * @param {Interpreter.MyValue|ReferenceError} value New property value. + * Use ReferenceError if value is handled by descriptor instead. + * @param {Object=} opt_descriptor Optional descriptor object. + * @return {!Interpreter.MyObject|undefined} Returns a setter function if one + * needs to be called, otherwise undefined. + */ + Interpreter.prototype.setProperty = function (obj, name, value, opt_descriptor) { + name = String(name); + if (obj === undefined || obj === null) { + this.throwException(this.TYPE_ERROR, "Cannot set property '" + name + "' of " + obj); + } + if (opt_descriptor && ('get' in opt_descriptor || 'set' in opt_descriptor) && + ('value' in opt_descriptor || 'writable' in opt_descriptor)) { + this.throwException(this.TYPE_ERROR, 'Invalid property descriptor. ' + + 'Cannot both specify accessors and a value or writable attribute'); + } + var strict = !this.stateStack || this.getScope().strict; + if (!obj.isObject) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Can't create property '" + name + + "' on '" + obj + "'"); + } + return; + } + if (this.isa(obj, this.STRING)) { + var n = Interpreter.legalArrayIndex(name); + if (name === 'length' || (!isNaN(n) && n < String(obj).length)) { + // Can't set length or letters on String objects. + if (strict) { + this.throwException(this.TYPE_ERROR, "Cannot assign to read only " + + "property '" + name + "' of String '" + obj.data + "'"); } - else if (func.eval) { - var code = state.arguments_[0]; - if (typeof code !== 'string') { - // JS does not parse String objects: - // eval(new String('1 + 1')) -> '1 + 1' - state.value = code; - } - else { - try { - var ast = acorn.parse(code.toString(), Interpreter.PARSE_OPTIONS); - } - catch (e) { - // Acorn threw a SyntaxError. Rethrow as a trappable error. - this.throwException(this.SYNTAX_ERROR, 'Invalid code: ' + e.message); - } - var evalNode = new this.nodeConstructor(); - evalNode['type'] = 'EvalProgram_'; - evalNode['body'] = ast['body']; - this.stripLocations_(evalNode, node['start'], node['end']); - // Update current scope with definitions in eval(). - var scope = state.scope; - if (scope.strict) { - // Strict mode get its own scope in eval. - scope = this.createScope(ast, scope); - } - else { - // Non-strict mode pollutes the current scope. - this.populateScope_(ast, scope); + return; + } + } + if (obj["class"] === 'Array') { + // Arrays have a magic length variable that is bound to the elements. + var length = obj.properties.length; + var i; + if (name === 'length') { + // Delete elements if length is smaller. + value = Interpreter.legalArrayLength(value); + if (isNaN(value)) { + this.throwException(this.RANGE_ERROR, 'Invalid array length'); + } + if (value < length) { + for (i in obj.properties) { + i = Interpreter.legalArrayIndex(i); + if (!isNaN(i) && value <= i) { + delete obj.properties[i]; } - this.value = undefined; // Default value if no code. - return new Interpreter.MyState(evalNode, scope); } } - else if (func.nativeFunc) { - state.value = func.nativeFunc.apply(state.funcThis_, state.arguments_); - } - else if (func.asyncFunc) { - var thisInterpreter = this; - var callback = function (value) { - state.value = value; - thisInterpreter.paused_ = false; - }; - var argsWithCallback = state.arguments_.concat(callback); - this.paused_ = true; - func.asyncFunc.apply(state.funcThis_, argsWithCallback); - return; + } + else if (!isNaN(i = Interpreter.legalArrayIndex(name))) { + // Increase length if this index is larger. + obj.properties.length = Math.max(length, i + 1); + } + } + if (obj.preventExtensions && !(name in obj.properties)) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Can't add property '" + name + + "', object is not extensible"); + } + return; + } + if (opt_descriptor) { + // Define the property. + if ('get' in opt_descriptor) { + if (opt_descriptor.get) { + obj.getter[name] = opt_descriptor.get; } else { - /* A child of a function is a function but is not callable. For example: - var F = function() {}; - F.prototype = escape; - var f = new F(); - f(); - */ - this.throwException(this.TYPE_ERROR, func["class"] + ' is not a function'); + delete obj.getter[name]; } } - else { - // Execution complete. Put the return value on the stack. - stack.pop(); - if (state.isConstructor && typeof state.value !== 'object') { - stack[stack.length - 1].value = state.funcThis_; + if ('set' in opt_descriptor) { + if (opt_descriptor.set) { + obj.setter[name] = opt_descriptor.set; } else { - stack[stack.length - 1].value = state.value; + delete obj.setter[name]; } } - }; - ; - Interpreter.prototype.stepCatchClause = function (stack, state, node) { - if (!state.done_) { - state.done_ = true; - // Create an empty scope. - var scope = this.createSpecialScope(state.scope); - // Add the argument. - this.setProperty(scope, node['param']['name'], state.throwValue); - // Execute catch clause. - return new Interpreter.MyState(node['body'], scope); + var descriptor = {}; + if ('configurable' in opt_descriptor) { + descriptor.configurable = opt_descriptor.configurable; } - else { - stack.pop(); + if ('enumerable' in opt_descriptor) { + descriptor.enumerable = opt_descriptor.enumerable; } - }; - ; - Interpreter.prototype.stepConditionalExpression = function (stack, state, node) { - var mode = state.mode_ || 0; - if (mode === 0) { - state.mode_ = 1; - return new Interpreter.MyState(node['test'], state.scope); + if ('writable' in opt_descriptor) { + descriptor.writable = opt_descriptor.writable; + delete obj.getter[name]; + delete obj.setter[name]; } - if (mode === 1) { - state.mode_ = 2; - var value = Boolean(state.value); - if (value && node['consequent']) { - // Execute 'if' block. - return new Interpreter.MyState(node['consequent'], state.scope); - } - else if (!value && node['alternate']) { - // Execute 'else' block. - return new Interpreter.MyState(node['alternate'], state.scope); - } - // eval('1;if(false){2}') -> undefined - this.value = undefined; + if ('value' in opt_descriptor) { + descriptor.value = opt_descriptor.value; + delete obj.getter[name]; + delete obj.setter[name]; } - stack.pop(); - if (node['type'] === 'ConditionalExpression') { - stack[stack.length - 1].value = state.value; + else if (value !== ReferenceError) { + descriptor.value = value; + delete obj.getter[name]; + delete obj.setter[name]; } - }; - ; - Interpreter.prototype.stepContinueStatement = function (stack, state, node) { - stack.pop(); - var label = null; - if (node['label']) { - label = node['label']['name']; + try { + Object.defineProperty(obj.properties, name, descriptor); } - state = stack[stack.length - 1]; - while (state && - state.node['type'] !== 'CallExpression' && - state.node['type'] !== 'NewExpression') { - if (state.isLoop) { - if (!label || (state.labels && state.labels.indexOf(label) !== -1)) { - return; - } + catch (e) { + this.throwException(this.TYPE_ERROR, 'Cannot redefine property: ' + name); + } + } + else { + // Set the property. + if (value === ReferenceError) { + throw ReferenceError('Value not specified.'); + } + // Determine the parent (possibly self) where the property is defined. + var defObj = obj; + while (!(name in defObj.properties)) { + defObj = this.getPrototype(defObj); + if (!defObj) { + // This is a new property. + defObj = obj; + break; } - stack.pop(); - state = stack[stack.length - 1]; } - // Syntax error, do not allow this error to be trapped. - throw SyntaxError('Illegal continue statement'); - }; - ; - Interpreter.prototype.stepDebuggerStatement = function (stack, state, node) { - // Do nothing. May be overridden by developers. - stack.pop(); - }; - ; - Interpreter.prototype.stepDoWhileStatement = function (stack, state, node) { - if (node['type'] === 'DoWhileStatement' && state.test_ === undefined) { - // First iteration of do/while executes without checking test. - state.value = true; - state.test_ = true; - } - if (!state.test_) { - state.test_ = true; - return new Interpreter.MyState(node['test'], state.scope); + if (defObj.setter && defObj.setter[name]) { + return defObj.setter[name]; } - if (!state.value) { - stack.pop(); + if (defObj.getter && defObj.getter[name]) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Cannot set property '" + name + + "' of object '" + obj + "' which only has a getter"); + } } - else if (node['body']) { - state.test_ = false; - state.isLoop = true; - return new Interpreter.MyState(node['body'], state.scope); + else { + // No setter, simple assignment. + try { + obj.properties[name] = value; + } + catch (e) { + if (strict) { + this.throwException(this.TYPE_ERROR, "Cannot assign to read only " + + "property '" + name + "' of object '" + obj + "'"); + } + } } - }; - ; - Interpreter.prototype.stepEmptyStatement = function (stack, state, node) { - stack.pop(); - }; - ; - Interpreter.prototype.stepEvalProgram_ = function (stack, state, node) { - var n = state.n_ || 0; - var expression = node['body'][n]; - if (expression) { - state.n_ = n + 1; - return new Interpreter.MyState(expression, state.scope); + } + }; + ; + /** + * Convenience method for adding a native function as a non-enumerable property + * onto an object's prototype. + * @param {!Interpreter.MyObject} obj Data object. + * @param {Interpreter.MyValue} name Name of property. + * @param {!Function} wrapper Function object. + */ + Interpreter.prototype.setNativeFunctionPrototype = function (obj, name, wrapper) { + this.setProperty(obj.properties['prototype'], name, this.createNativeFunction(wrapper, false), Interpreter.NONENUMERABLE_DESCRIPTOR); + }; + ; + /** + * Returns the current scope from the stateStack. + * @return {!Interpreter.MyObject} Current scope dictionary. + */ + Interpreter.prototype.getScope = function () { + var scope = this.stateStack[this.stateStack.length - 1].scope; + if (!scope) { + throw Error('No scope found.'); + } + return scope; + }; + ; + /** + * Create a new scope dictionary. + * @param {!Object} node AST node defining the scope container + * (e.g. a function). + * @param {Interpreter.MyObject} parentScope Scope to link to. + * @return {!Interpreter.MyObject} New scope. + */ + Interpreter.prototype.createScope = function (node, parentScope) { + var scope = this.createObjectProto(null); + scope.parentScope = parentScope; + if (!parentScope) { + this.initGlobalScope(scope); + } + this.populateScope_(node, scope); + // Determine if this scope starts with 'use strict'. + scope.strict = false; + if (parentScope && parentScope.strict) { + scope.strict = true; + } + else { + var firstNode = node['body'] && node['body'][0]; + if (firstNode && firstNode.expression && + firstNode.expression['type'] === 'Literal' && + firstNode.expression.value === 'use strict') { + scope.strict = true; } - stack.pop(); - stack[stack.length - 1].value = this.value; - }; - ; - Interpreter.prototype.stepExpressionStatement = function (stack, state, node) { - if (!state.done_) { - state.done_ = true; - return new Interpreter.MyState(node['expression'], state.scope); + } + return scope; + }; + ; + /** + * Create a new special scope dictionary. Similar to createScope(), but + * doesn't assume that the scope is for a function body. + * This is used for 'catch' clauses and 'with' statements. + * @param {!Interpreter.MyObject} parentScope Scope to link to. + * @param {Interpreter.MyObject=} opt_scope Optional object to transform into + * scope. + * @return {!Interpreter.MyObject} New scope. + */ + Interpreter.prototype.createSpecialScope = function (parentScope, opt_scope) { + if (!parentScope) { + throw Error('parentScope required'); + } + var scope = opt_scope || this.createObjectProto(null); + scope.parentScope = parentScope; + scope.strict = parentScope.strict; + return scope; + }; + ; + /** + * Retrieves a value from the scope chain. + * @param {string} name Name of variable. + * @return {Interpreter.MyValue} Any value. + * May be flagged as being a getter and thus needing immediate execution + * (rather than being the value of the property). + */ + Interpreter.prototype.getValueFromScope = function (name) { + var scope = this.getScope(); + while (scope && scope !== this.global) { + if (name in scope.properties) { + return scope.properties[name]; } - stack.pop(); - // Save this value to interpreter.value for use as a return value if - // this code is inside an eval function. - this.value = state.value; - }; - ; - Interpreter.prototype.stepForInStatement = function (stack, state, node) { - // First, initialize a variable if exists. Only do so once, ever. - if (!state.doneInit_) { - state.doneInit_ = true; - if (node['left']['declarations'] && - node['left']['declarations'][0]['init']) { - if (state.scope.strict) { - this.throwException(this.SYNTAX_ERROR, 'for-in loop variable declaration may not have an initializer.'); - } - // Variable initialization: for (var x = 4 in y) - return new Interpreter.MyState(node['left'], state.scope); - } + scope = scope.parentScope; + } + // The root scope is also an object which has inherited properties and + // could also have getters. + if (scope === this.global && this.hasProperty(scope, name)) { + return this.getProperty(scope, name); + } + // Typeof operator is unique: it can safely look at non-defined variables. + var prevNode = this.stateStack[this.stateStack.length - 1].node; + if (prevNode['type'] === 'UnaryExpression' && + prevNode['operator'] === 'typeof') { + return undefined; + } + this.throwException(this.REFERENCE_ERROR, name + ' is not defined'); + }; + ; + /** + * Sets a value to the current scope. + * @param {string} name Name of variable. + * @param {Interpreter.MyValue} value Value. + * @return {!Interpreter.MyObject|undefined} Returns a setter function if one + * needs to be called, otherwise undefined. + */ + Interpreter.prototype.setValueToScope = function (name, value) { + var scope = this.getScope(); + var strict = scope.strict; + while (scope && scope !== this.global) { + if (name in scope.properties) { + scope.properties[name] = value; + return undefined; } - // Second, look up the object. Only do so once, ever. - if (!state.doneObject_) { - state.doneObject_ = true; - if (!state.variable_) { - state.variable_ = state.value; - } - return new Interpreter.MyState(node['right'], state.scope); + scope = scope.parentScope; + } + // The root scope is also an object which has readonly properties and + // could also have setters. + if (scope === this.global && (!strict || this.hasProperty(scope, name))) { + return this.setProperty(scope, name, value); + } + this.throwException(this.REFERENCE_ERROR, name + ' is not defined'); + }; + ; + /** + * Create a new scope for the given node. + * @param {!Object} node AST node (program or function). + * @param {!Interpreter.MyObject} scope Scope dictionary to populate. + * @private + */ + Interpreter.prototype.populateScope_ = function (node, scope) { + if (node['type'] === 'VariableDeclaration') { + for (var i = 0; i < node['declarations'].length; i++) { + this.setProperty(scope, node['declarations'][i]['id']['name'], undefined, Interpreter.VARIABLE_DESCRIPTOR); } - if (!state.isLoop) { - // First iteration. - state.isLoop = true; - state.object_ = state.value; - state.visited_ = Object.create(null); - } - // Third, find the property name for this iteration. - if (state.name_ === undefined) { - done: do { - if (state.object_ && state.object_.isObject) { - if (!state.props_) { - state.props_ = Object.getOwnPropertyNames(state.object_.properties); - } - do { - var prop = state.props_.shift(); - } while (prop && (state.visited_[prop] || - !Object.prototype.hasOwnProperty.call(state.object_.properties, prop))); - if (prop) { - state.visited_[prop] = true; - if (Object.prototype.propertyIsEnumerable.call(state.object_.properties, prop)) { - state.name_ = prop; - break done; - } - } - } - else if (state.object_ !== null) { - if (!state.props_) { - state.props_ = Object.getOwnPropertyNames(state.object_); - } - do { - var prop = state.props_.shift(); - } while (prop && state.visited_[prop]); - if (prop) { - state.visited_[prop] = true; - state.name_ = prop; - break done; + } + else if (node['type'] === 'FunctionDeclaration') { + this.setProperty(scope, node['id']['name'], this.createFunction(node, scope), Interpreter.VARIABLE_DESCRIPTOR); + return; // Do not recurse into function. + } + else if (node['type'] === 'FunctionExpression') { + return; // Do not recurse into function. + } + else if (node['type'] === 'ExpressionStatement') { + return; // Expressions can't contain variable/function declarations. + } + var nodeClass = node['constructor']; + for (var name in node) { + var prop = node[name]; + if (prop && typeof prop === 'object') { + if (Array.isArray(prop)) { + for (var i = 0; i < prop.length; i++) { + if (prop[i] && prop[i].constructor === nodeClass) { + this.populateScope_(prop[i], scope); } } - state.object_ = this.getPrototype(state.object_); - state.props_ = null; - } while (state.object_ !== null); - if (state.object_ === null) { - // Done, exit loop. - stack.pop(); - return; - } - } - // Fourth, find the variable - if (!state.doneVariable_) { - state.doneVariable_ = true; - var left = node['left']; - if (left['type'] === 'VariableDeclaration') { - // Inline variable declaration: for (var x in y) - state.variable_ = - [Interpreter.SCOPE_REFERENCE, left['declarations'][0]['id']['name']]; } else { - // Arbitrary left side: for (foo().bar in y) - state.variable_ = null; - var nextState = new Interpreter.MyState(left, state.scope); - nextState.components = true; - return nextState; + if (prop.constructor === nodeClass) { + this.populateScope_(prop, scope); + } } } - if (!state.variable_) { - state.variable_ = state.value; - } - // Fifth, set the variable. - if (!state.doneSetter_) { - state.doneSetter_ = true; - var value = state.name_; - var setter = this.setValue(state.variable_, value); - if (setter) { - return this.createSetter_(setter, state.variable_, value); + } + }; + ; + /** + * Remove start and end values from AST, or set start and end values to a + * constant value. Used to remove highlighting from polyfills and to set + * highlighting in an eval to cover the entire eval expression. + * @param {!Object} node AST node. + * @param {number=} start Starting character of all nodes, or undefined. + * @param {number=} end Ending character of all nodes, or undefined. + * @private + */ + Interpreter.prototype.stripLocations_ = function (node, start, end) { + if (start) { + node['start'] = start; + } + else { + delete node['start']; + } + if (end) { + node['end'] = end; + } + else { + delete node['end']; + } + for (var name in node) { + if (node.hasOwnProperty(name)) { + var prop = node[name]; + if (prop && typeof prop === 'object') { + this.stripLocations_(prop, start, end); } } - // Next step will be step three. - state.name_ = undefined; - // Reevaluate the variable since it could be a setter on the global object. - state.doneVariable_ = false; - state.doneSetter_ = false; - // Sixth and finally, execute the body if there was one. this. - if (node['body']) { - return new Interpreter.MyState(node['body'], state.scope); + } + }; + ; + /** + * Is the current state directly being called with as a construction with 'new'. + * @return {boolean} True if 'new foo()', false if 'foo()'. + */ + Interpreter.prototype.calledWithNew = function () { + return this.stateStack[this.stateStack.length - 1].isConstructor; + }; + ; + /** + * Gets a value from the scope chain or from an object property. + * @param {!Array} ref Name of variable or object/propname tuple. + * @return {Interpreter.MyValue} Any value. + * May be flagged as being a getter and thus needing immediate execution + * (rather than being the value of the property). + */ + Interpreter.prototype.getValue = function (ref) { + if (ref[0] === Interpreter.SCOPE_REFERENCE) { + // A null/varname variable lookup. + return this.getValueFromScope(ref[1]); + } + else { + // An obj/prop components tuple (foo.bar). + return this.getProperty(ref[0], ref[1]); + } + }; + ; + /** + * Sets a value to the scope chain or to an object property. + * @param {!Array} ref Name of variable or object/propname tuple. + * @param {Interpreter.MyValue} value Value. + * @return {!Interpreter.MyObject|undefined} Returns a setter function if one + * needs to be called, otherwise undefined. + */ + Interpreter.prototype.setValue = function (ref, value) { + if (ref[0] === Interpreter.SCOPE_REFERENCE) { + // A null/varname variable lookup. + return this.setValueToScope(ref[1], value); + } + else { + // An obj/prop components tuple (foo.bar). + return this.setProperty(ref[0], ref[1], value); + } + }; + ; + /** + * Throw an exception in the interpreter that can be handled by an + * interpreter try/catch statement. If unhandled, a real exception will + * be thrown. Can be called with either an error class and a message, or + * with an actual object to be thrown. + * @param {!Interpreter.MyObject} errorClass Type of error (if message is + * provided) or the value to throw (if no message). + * @param {string=} opt_message Message being thrown. + */ + Interpreter.prototype.throwException = function (errorClass, opt_message) { + if (opt_message === undefined) { + var error = errorClass; // This is a value to throw, not an error class. + } + else { + var error = this.createObject(errorClass); + this.setProperty(error, 'message', opt_message, Interpreter.NONENUMERABLE_DESCRIPTOR); + } + this.executeException(error); + // Abort anything related to the current step. + throw Interpreter.STEP_ERROR; + }; + ; + /** + * Throw an exception in the interpreter that can be handled by a + * interpreter try/catch statement. If unhandled, a real exception will + * be thrown. + * @param {!Interpreter.MyObject} error Error object to execute. + */ + Interpreter.prototype.executeException = function (error) { + // Search for a try statement. + do { + this.stateStack.pop(); + var state = this.stateStack[this.stateStack.length - 1]; + if (state.node['type'] === 'TryStatement') { + state.throwValue = error; + return; } - }; - ; - Interpreter.prototype.stepForStatement = function (stack, state, node) { - var mode = state.mode_ || 0; - if (mode === 0) { - state.mode_ = 1; - if (node['init']) { - return new Interpreter.MyState(node['init'], state.scope); - } + } while (state && state.node['type'] !== 'Program'); + // Throw a real error. + var realError; + if (this.isa(error, this.ERROR)) { + var errorTable = { + 'EvalError': EvalError, + 'RangeError': RangeError, + 'ReferenceError': ReferenceError, + 'SyntaxError': SyntaxError, + 'TypeError': TypeError, + 'URIError': URIError + }; + var name = this.getProperty(error, 'name').toString(); + var message = this.getProperty(error, 'message').valueOf(); + var type = errorTable[name] || Error; + realError = type(message); + } + else { + realError = error.toString(); + } + throw realError; + }; + ; + /** + * Create a call to a getter function. + * @param {!Interpreter.MyObject} func Function to execute. + * @param {!Interpreter.MyObject|!Array} left + * Name of variable or object/propname tuple. + * @private + */ + Interpreter.prototype.createGetter_ = function (func, left) { + // Normally 'this' will be specified as the object component (o.x). + // Sometimes 'this' is explicitly provided (o). + var funcThis = Array.isArray(left) ? left[0] : left; + var node = new this.nodeConstructor(); + node['type'] = 'CallExpression'; + var state = new Interpreter.MyState(node, this.stateStack[this.stateStack.length - 1].scope); + state.doneCallee_ = true; + state.funcThis_ = funcThis; + state.func_ = func; + state.doneArgs_ = true; + state.arguments_ = []; + return state; + }; + ; + /** + * Create a call to a setter function. + * @param {!Interpreter.MyObject} func Function to execute. + * @param {!Interpreter.MyObject|!Array} left + * Name of variable or object/propname tuple. + * @param {Interpreter.MyValue} value Value to set. + * @private + */ + Interpreter.prototype.createSetter_ = function (func, left, value) { + // Normally 'this' will be specified as the object component (o.x). + // Sometimes 'this' is implicitly the global object (x). + var funcThis = Array.isArray(left) ? left[0] : this.global; + var node = new this.nodeConstructor(); + node['type'] = 'CallExpression'; + var state = new Interpreter.MyState(node, this.stateStack[this.stateStack.length - 1].scope); + state.doneCallee_ = true; + state.funcThis_ = funcThis; + state.func_ = func; + state.doneArgs_ = true; + state.arguments_ = [value]; + return state; + }; + ; + /////////////////////////////////////////////////////////////////////////////// + // Functions to handle each node type. + /////////////////////////////////////////////////////////////////////////////// + Interpreter.prototype.stepArrayExpression = function (stack, state, node) { + var elements = node['elements']; + var n = state.n_ || 0; + if (!state.array_) { + state.array_ = this.createObjectProto(this.ARRAY_PROTO); + state.array_.properties.length = elements.length; + } + else { + this.setProperty(state.array_, n, state.value); + n++; + } + while (n < elements.length) { + // Skip missing elements - they're not defined, not undefined. + if (elements[n]) { + state.n_ = n; + return new Interpreter.MyState(elements[n], state.scope); } - else if (mode === 1) { - state.mode_ = 2; - if (node['test']) { - return new Interpreter.MyState(node['test'], state.scope); - } + n++; + } + stack.pop(); + stack[stack.length - 1].value = state.array_; + }; + ; + Interpreter.prototype.stepAssignmentExpression = function (stack, state, node) { + if (!state.doneLeft_) { + state.doneLeft_ = true; + var nextState = new Interpreter.MyState(node['left'], state.scope); + nextState.components = true; + return nextState; + } + if (!state.doneRight_) { + if (!state.leftReference_) { + state.leftReference_ = state.value; } - else if (mode === 2) { - state.mode_ = 3; - if (node['test'] && !state.value) { - // Done, exit loop. - stack.pop(); - } - else { - state.isLoop = true; - return new Interpreter.MyState(node['body'], state.scope); - } + if (state.doneGetter_) { + state.leftValue_ = state.value; } - else if (mode === 3) { - state.mode_ = 1; - if (node['update']) { - return new Interpreter.MyState(node['update'], state.scope); + if (!state.doneGetter_ && node['operator'] !== '=') { + var leftValue = this.getValue(state.leftReference_); + state.leftValue_ = leftValue; + if (leftValue && typeof leftValue === 'object' && leftValue.isGetter) { + // Clear the getter flag and call the getter function. + leftValue.isGetter = false; + state.doneGetter_ = true; + var func = (leftValue); + return this.createGetter_(func, state.leftReference_); } } - }; - ; - Interpreter.prototype.stepFunctionDeclaration = function (stack, state, node) { - // This was found and handled when the scope was populated. - stack.pop(); - }; - ; - Interpreter.prototype.stepFunctionExpression = function (stack, state, node) { - stack.pop(); - stack[stack.length - 1].value = this.createFunction(node, state.scope); - }; - ; - Interpreter.prototype.stepIdentifier = function (stack, state, node) { + state.doneRight_ = true; + return new Interpreter.MyState(node['right'], state.scope); + } + if (state.doneSetter_) { + // Return if setter function. + // Setter method on property has completed. + // Ignore its return value, and use the original set value instead. stack.pop(); - if (state.components) { - stack[stack.length - 1].value = [Interpreter.SCOPE_REFERENCE, node['name']]; + stack[stack.length - 1].value = state.doneSetter_; + return; + } + var value = state.leftValue_; + var rightValue = state.value; + switch (node['operator']) { + case '=': + value = rightValue; + break; + case '+=': + value += rightValue; + break; + case '-=': + value -= rightValue; + break; + case '*=': + value *= rightValue; + break; + case '/=': + value /= rightValue; + break; + case '%=': + value %= rightValue; + break; + case '<<=': + value <<= rightValue; + break; + case '>>=': + value >>= rightValue; + break; + case '>>>=': + value >>>= rightValue; + break; + case '&=': + value &= rightValue; + break; + case '^=': + value ^= rightValue; + break; + case '|=': + value |= rightValue; + break; + default: + throw SyntaxError('Unknown assignment expression: ' + node['operator']); + } + var setter = this.setValue(state.leftReference_, value); + if (setter) { + state.doneSetter_ = value; + return this.createSetter_(setter, state.leftReference_, value); + } + // Return if no setter function. + stack.pop(); + stack[stack.length - 1].value = value; + }; + ; + Interpreter.prototype.stepBinaryExpression = function (stack, state, node) { + if (!state.doneLeft_) { + state.doneLeft_ = true; + return new Interpreter.MyState(node['left'], state.scope); + } + if (!state.doneRight_) { + state.doneRight_ = true; + state.leftValue_ = state.value; + return new Interpreter.MyState(node['right'], state.scope); + } + stack.pop(); + var leftValue = state.leftValue_; + var rightValue = state.value; + var value; + switch (node['operator']) { + case '==': + value = leftValue == rightValue; + break; + case '!=': + value = leftValue != rightValue; + break; + case '===': + value = leftValue === rightValue; + break; + case '!==': + value = leftValue !== rightValue; + break; + case '>': + value = leftValue > rightValue; + break; + case '>=': + value = leftValue >= rightValue; + break; + case '<': + value = leftValue < rightValue; + break; + case '<=': + value = leftValue <= rightValue; + break; + case '+': + value = leftValue + rightValue; + break; + case '-': + value = leftValue - rightValue; + break; + case '*': + value = leftValue * rightValue; + break; + case '/': + value = leftValue / rightValue; + break; + case '%': + value = leftValue % rightValue; + break; + case '&': + value = leftValue & rightValue; + break; + case '|': + value = leftValue | rightValue; + break; + case '^': + value = leftValue ^ rightValue; + break; + case '<<': + value = leftValue << rightValue; + break; + case '>>': + value = leftValue >> rightValue; + break; + case '>>>': + value = leftValue >>> rightValue; + break; + case 'in': + if (!rightValue || !rightValue.isObject) { + this.throwException(this.TYPE_ERROR, "'in' expects an object, not '" + rightValue + "'"); + } + value = this.hasProperty(rightValue, leftValue); + break; + case 'instanceof': + if (!this.isa(rightValue, this.FUNCTION)) { + this.throwException(this.TYPE_ERROR, 'Right-hand side of instanceof is not an object'); + } + value = leftValue.isObject ? this.isa(leftValue, rightValue) : false; + break; + default: + throw SyntaxError('Unknown binary operator: ' + node['operator']); + } + stack[stack.length - 1].value = value; + }; + ; + Interpreter.prototype.stepBlockStatement = function (stack, state, node) { + var n = state.n_ || 0; + var expression = node['body'][n]; + if (expression) { + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); + } + stack.pop(); + }; + ; + Interpreter.prototype.stepBreakStatement = function (stack, state, node) { + stack.pop(); + var label = null; + if (node['label']) { + label = node['label']['name']; + } + while (state && + state.node['type'] !== 'CallExpression' && + state.node['type'] !== 'NewExpression') { + if (label) { + if (state.labels && state.labels.indexOf(label) !== -1) { + return; + } + } + else if (state.isLoop || state.isSwitch) { return; } - var value = this.getValueFromScope(node['name']); - // An identifier could be a getter if it's a property on the global object. - if (value && typeof value === 'object' && value.isGetter) { - // Clear the getter flag and call the getter function. - value.isGetter = false; - var scope = state.scope; - while (!this.hasProperty(scope, node['name'])) { - scope = scope.parentScope; + state = stack.pop(); + } + // Syntax error, do not allow this error to be trapped. + throw SyntaxError('Illegal break statement'); + }; + ; + Interpreter.prototype.stepCallExpression = function (stack, state, node) { + if (!state.doneCallee_) { + state.doneCallee_ = 1; + // Components needed to determine value of 'this'. + var nextState = new Interpreter.MyState(node['callee'], state.scope); + nextState.components = true; + return nextState; + } + if (state.doneCallee_ === 1) { + // Determine value of the function. + state.doneCallee_ = 2; + var func = state.value; + if (Array.isArray(func)) { + state.func_ = this.getValue(func); + if (func[0] !== Interpreter.SCOPE_REFERENCE) { + // Method function, 'this' is object (ignored if invoked as 'new'). + state.funcThis_ = func[0]; + } + func = state.func_; + if (func && typeof func === 'object' && func.isGetter) { + // Clear the getter flag and call the getter function. + func.isGetter = false; + state.doneCallee_ = 1; + return this.createGetter_(/** @type {!Interpreter.Object} */ (func), state.value); } - var func = (value); - return this.createGetter_(func, this.global); } - stack[stack.length - 1].value = value; - }; - ; - Interpreter.prototype.stepIfStatement = function (stack, state, node) { - return this.stepConditionalExpression(stack, state, node); - }; - Interpreter.prototype.stepLabeledStatement = function (stack, state, node) { - // No need to hit this node again on the way back up the stack. - stack.pop(); - // Note that a statement might have multiple labels. - var labels = state.labels || []; - labels.push(node['label']['name']); - var nextState = new Interpreter.MyState(node['body'], state.scope); - nextState.labels = labels; - return nextState; - }; - ; - Interpreter.prototype.stepLiteral = function (stack, state, node) { - stack.pop(); - var value = node['value']; - if (value instanceof RegExp) { - var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO); - this.populateRegExp(pseudoRegexp, value); - value = pseudoRegexp; + else { + // Already evaluated function: (function(){...})(); + state.func_ = func; } - stack[stack.length - 1].value = value; - }; - ; - Interpreter.prototype.stepLogicalExpression = function (stack, state, node) { - if (node['operator'] !== '&&' && node['operator'] !== '||') { - throw SyntaxError('Unknown logical operator: ' + node['operator']); + state.arguments_ = []; + state.n_ = 0; + } + var func = state.func_; + if (!state.doneArgs_) { + if (state.n_ !== 0) { + state.arguments_.push(state.value); } - if (!state.doneLeft_) { - state.doneLeft_ = true; - return new Interpreter.MyState(node['left'], state.scope); + if (node['arguments'][state.n_]) { + return new Interpreter.MyState(node['arguments'][state.n_++], state.scope); + } + // Determine value of 'this' in function. + if (node['type'] === 'NewExpression') { + if (func.illegalConstructor) { + // Illegal: new escape(); + this.throwException(this.TYPE_ERROR, func + ' is not a constructor'); + } + // Constructor, 'this' is new object. + state.funcThis_ = this.createObject(func); + state.isConstructor = true; + } + else if (state.funcThis_ === undefined) { + // Global function, 'this' is global object (or 'undefined' if strict). + state.funcThis_ = state.scope.strict ? undefined : this.global; } - if (!state.doneRight_) { - if ((node['operator'] === '&&' && !state.value) || - (node['operator'] === '||' && state.value)) { - // Shortcut evaluation. - stack.pop(); - stack[stack.length - 1].value = state.value; + state.doneArgs_ = true; + } + if (!state.doneExec_) { + state.doneExec_ = true; + if (!func || !func.isObject) { + this.throwException(this.TYPE_ERROR, func + ' is not a function'); + } + var funcNode = func.node; + if (funcNode) { + var scope = this.createScope(funcNode['body'], func.parentScope); + // Add all arguments. + for (var i = 0; i < funcNode['params'].length; i++) { + var paramName = funcNode['params'][i]['name']; + var paramValue = state.arguments_.length > i ? state.arguments_[i] : + undefined; + this.setProperty(scope, paramName, paramValue); + } + // Build arguments variable. + var argsList = this.createObjectProto(this.ARRAY_PROTO); + for (var i = 0; i < state.arguments_.length; i++) { + this.setProperty(argsList, i, state.arguments_[i]); + } + this.setProperty(scope, 'arguments', argsList); + // Add the function's name (var x = function foo(){};) + var name = funcNode['id'] && funcNode['id']['name']; + if (name) { + this.setProperty(scope, name, func); + } + this.setProperty(scope, 'this', state.funcThis_, Interpreter.READONLY_DESCRIPTOR); + state.value = undefined; // Default value if no explicit return. + return new Interpreter.MyState(funcNode['body'], scope); + } + else if (func.eval) { + var code = state.arguments_[0]; + if (typeof code !== 'string') { + // JS does not parse String objects: + // eval(new String('1 + 1')) -> '1 + 1' + state.value = code; } else { - state.doneRight_ = true; - return new Interpreter.MyState(node['right'], state.scope); + try { + var ast = acorn.parse(code.toString(), Interpreter.PARSE_OPTIONS); + } + catch (e) { + // Acorn threw a SyntaxError. Rethrow as a trappable error. + this.throwException(this.SYNTAX_ERROR, 'Invalid code: ' + e.message); + } + var evalNode = new this.nodeConstructor(); + evalNode['type'] = 'EvalProgram_'; + evalNode['body'] = ast['body']; + this.stripLocations_(evalNode, node['start'], node['end']); + // Update current scope with definitions in eval(). + var scope = state.scope; + if (scope.strict) { + // Strict mode get its own scope in eval. + scope = this.createScope(ast, scope); + } + else { + // Non-strict mode pollutes the current scope. + this.populateScope_(ast, scope); + } + this.value = undefined; // Default value if no code. + return new Interpreter.MyState(evalNode, scope); } } - else { - stack.pop(); - stack[stack.length - 1].value = state.value; + else if (func.nativeFunc) { + state.value = func.nativeFunc.apply(state.funcThis_, state.arguments_); } - }; - ; - Interpreter.prototype.stepMemberExpression = function (stack, state, node) { - if (!state.doneObject_) { - state.doneObject_ = true; - return new Interpreter.MyState(node['object'], state.scope); - } - var propName; - if (!node['computed']) { - state.object_ = state.value; - // obj.foo -- Just access 'foo' directly. - propName = node['property']['name']; - } - else if (!state.doneProperty_) { - state.object_ = state.value; - // obj[foo] -- Compute value of 'foo'. - state.doneProperty_ = true; - return new Interpreter.MyState(node['property'], state.scope); + else if (func.asyncFunc) { + var thisInterpreter = this; + var callback = function (value) { + state.value = value; + thisInterpreter.paused_ = false; + }; + var argsWithCallback = state.arguments_.concat(callback); + this.paused_ = true; + func.asyncFunc.apply(state.funcThis_, argsWithCallback); + return; } else { - propName = state.value; + /* A child of a function is a function but is not callable. For example: + var F = function() {}; + F.prototype = escape; + var f = new F(); + f(); + */ + this.throwException(this.TYPE_ERROR, func["class"] + ' is not a function'); } + } + else { + // Execution complete. Put the return value on the stack. stack.pop(); - if (state.components) { - stack[stack.length - 1].value = [state.object_, propName]; - } - else { - var value = this.getProperty(state.object_, propName); - if (value && typeof value === 'object' && value.isGetter) { - // Clear the getter flag and call the getter function. - value.isGetter = false; - var func = (value); - return this.createGetter_(func, state.object_); - } - stack[stack.length - 1].value = value; - } - }; - ; - Interpreter.prototype.stepNewExpression = function (stack, state, node) { - return this.stepCallExpression(stack, state, node); - }; - Interpreter.prototype.stepObjectExpression = function (stack, state, node) { - var n = state.n_ || 0; - var property = node['properties'][n]; - if (!state.object_) { - // First execution. - state.object_ = this.createObjectProto(this.OBJECT_PROTO); - state.properties_ = Object.create(null); + if (state.isConstructor && typeof state.value !== 'object') { + stack[stack.length - 1].value = state.funcThis_; } else { - // Determine property name. - var key = property['key']; - if (key['type'] === 'Identifier') { - var propName = key['name']; - } - else if (key['type'] === 'Literal') { - var propName = key['value']; - } - else { - throw SyntaxError('Unknown object structure: ' + key['type']); - } - // Set the property computed in the previous execution. - if (!state.properties_[propName]) { - // Create temp object to collect value, getter, and/or setter. - state.properties_[propName] = {}; - } - state.properties_[propName][property['kind']] = state.value; - state.n_ = ++n; - property = node['properties'][n]; - } - if (property) { - return new Interpreter.MyState(property['value'], state.scope); - } - for (var key in state.properties_) { - var kinds = state.properties_[key]; - if ('get' in kinds || 'set' in kinds) { - // Set a property with a getter or setter. - var descriptor = { - configurable: true, - enumerable: true, - get: kinds['get'], - set: kinds['set'] - }; - this.setProperty(state.object_, key, null, descriptor); - } - else { - // Set a normal property with a value. - this.setProperty(state.object_, key, kinds['init']); - } + stack[stack.length - 1].value = state.value; } + } + }; + ; + Interpreter.prototype.stepCatchClause = function (stack, state, node) { + if (!state.done_) { + state.done_ = true; + // Create an empty scope. + var scope = this.createSpecialScope(state.scope); + // Add the argument. + this.setProperty(scope, node['param']['name'], state.throwValue); + // Execute catch clause. + return new Interpreter.MyState(node['body'], scope); + } + else { stack.pop(); - stack[stack.length - 1].value = state.object_; - }; - ; - Interpreter.prototype.stepProgram = function (stack, state, node) { - var n = state.n_ || 0; - var expression = node['body'][n]; - if (expression) { - state.done = false; - state.n_ = n + 1; - return new Interpreter.MyState(expression, state.scope); - } - state.done = true; - // Don't pop the stateStack. - // Leave the root scope on the tree in case the program is appended to. - }; - ; - Interpreter.prototype.stepReturnStatement = function (stack, state, node) { - if (node['argument'] && !state.done_) { - state.done_ = true; - return new Interpreter.MyState(node['argument'], state.scope); - } - var value = state.value; - var i = stack.length - 1; - state = stack[i]; - while (state.node['type'] !== 'CallExpression' && - state.node['type'] !== 'NewExpression') { - if (state.node['type'] !== 'TryStatement') { - stack.splice(i, 1); - } - i--; - if (i < 0) { - // Syntax error, do not allow this error to be trapped. - throw SyntaxError('Illegal return statement'); + } + }; + ; + Interpreter.prototype.stepConditionalExpression = function (stack, state, node) { + var mode = state.mode_ || 0; + if (mode === 0) { + state.mode_ = 1; + return new Interpreter.MyState(node['test'], state.scope); + } + if (mode === 1) { + state.mode_ = 2; + var value = Boolean(state.value); + if (value && node['consequent']) { + // Execute 'if' block. + return new Interpreter.MyState(node['consequent'], state.scope); + } + else if (!value && node['alternate']) { + // Execute 'else' block. + return new Interpreter.MyState(node['alternate'], state.scope); + } + // eval('1;if(false){2}') -> undefined + this.value = undefined; + } + stack.pop(); + if (node['type'] === 'ConditionalExpression') { + stack[stack.length - 1].value = state.value; + } + }; + ; + Interpreter.prototype.stepContinueStatement = function (stack, state, node) { + stack.pop(); + var label = null; + if (node['label']) { + label = node['label']['name']; + } + state = stack[stack.length - 1]; + while (state && + state.node['type'] !== 'CallExpression' && + state.node['type'] !== 'NewExpression') { + if (state.isLoop) { + if (!label || (state.labels && state.labels.indexOf(label) !== -1)) { + return; } - state = stack[i]; - } - state.value = value; - }; - ; - Interpreter.prototype.stepSequenceExpression = function (stack, state, node) { - var n = state.n_ || 0; - var expression = node['expressions'][n]; - if (expression) { - state.n_ = n + 1; - return new Interpreter.MyState(expression, state.scope); } stack.pop(); - stack[stack.length - 1].value = state.value; - }; - ; - Interpreter.prototype.stepSwitchStatement = function (stack, state, node) { - if (!state.test_) { - state.test_ = 1; - return new Interpreter.MyState(node['discriminant'], state.scope); + state = stack[stack.length - 1]; + } + // Syntax error, do not allow this error to be trapped. + throw SyntaxError('Illegal continue statement'); + }; + ; + Interpreter.prototype.stepDebuggerStatement = function (stack, state, node) { + // Do nothing. May be overridden by developers. + stack.pop(); + }; + ; + Interpreter.prototype.stepDoWhileStatement = function (stack, state, node) { + if (node['type'] === 'DoWhileStatement' && state.test_ === undefined) { + // First iteration of do/while executes without checking test. + state.value = true; + state.test_ = true; + } + if (!state.test_) { + state.test_ = true; + return new Interpreter.MyState(node['test'], state.scope); + } + if (!state.value) { + stack.pop(); + } + else if (node['body']) { + state.test_ = false; + state.isLoop = true; + return new Interpreter.MyState(node['body'], state.scope); + } + }; + ; + Interpreter.prototype.stepEmptyStatement = function (stack, state, node) { + stack.pop(); + }; + ; + Interpreter.prototype.stepEvalProgram_ = function (stack, state, node) { + var n = state.n_ || 0; + var expression = node['body'][n]; + if (expression) { + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); + } + stack.pop(); + stack[stack.length - 1].value = this.value; + }; + ; + Interpreter.prototype.stepExpressionStatement = function (stack, state, node) { + if (!state.done_) { + state.done_ = true; + return new Interpreter.MyState(node['expression'], state.scope); + } + stack.pop(); + // Save this value to interpreter.value for use as a return value if + // this code is inside an eval function. + this.value = state.value; + }; + ; + Interpreter.prototype.stepForInStatement = function (stack, state, node) { + // First, initialize a variable if exists. Only do so once, ever. + if (!state.doneInit_) { + state.doneInit_ = true; + if (node['left']['declarations'] && + node['left']['declarations'][0]['init']) { + if (state.scope.strict) { + this.throwException(this.SYNTAX_ERROR, 'for-in loop variable declaration may not have an initializer.'); + } + // Variable initialization: for (var x = 4 in y) + return new Interpreter.MyState(node['left'], state.scope); } - if (state.test_ === 1) { - state.test_ = 2; - // Preserve switch value between case tests. - state.switchValue_ = state.value; + } + // Second, look up the object. Only do so once, ever. + if (!state.doneObject_) { + state.doneObject_ = true; + if (!state.variable_) { + state.variable_ = state.value; } - while (true) { - var index = state.index_ || 0; - var switchCase = node['cases'][index]; - if (!state.matched_ && switchCase && !switchCase['test']) { - // Test on the default case is null. - // Bypass (but store) the default case, and get back to it later. - state.defaultCase_ = index; - state.index_ = index + 1; - continue; - } - if (!switchCase && !state.matched_ && state.defaultCase_) { - // Ran through all cases, no match. Jump to the default. - state.matched_ = true; - state.index_ = state.defaultCase_; - continue; - } - if (switchCase) { - if (!state.matched_ && !state.tested_ && switchCase['test']) { - state.tested_ = true; - return new Interpreter.MyState(switchCase['test'], state.scope); + return new Interpreter.MyState(node['right'], state.scope); + } + if (!state.isLoop) { + // First iteration. + state.isLoop = true; + state.object_ = state.value; + state.visited_ = Object.create(null); + } + // Third, find the property name for this iteration. + if (state.name_ === undefined) { + done: do { + if (state.object_ && state.object_.isObject) { + if (!state.props_) { + state.props_ = Object.getOwnPropertyNames(state.object_.properties); } - if (state.matched_ || state.value === state.switchValue_) { - state.matched_ = true; - var n = state.n_ || 0; - if (switchCase['consequent'][n]) { - state.isSwitch = true; - state.n_ = n + 1; - return new Interpreter.MyState(switchCase['consequent'][n], state.scope); + do { + var prop = state.props_.shift(); + } while (prop && (state.visited_[prop] || + !Object.prototype.hasOwnProperty.call(state.object_.properties, prop))); + if (prop) { + state.visited_[prop] = true; + if (Object.prototype.propertyIsEnumerable.call(state.object_.properties, prop)) { + state.name_ = prop; + break done; } } - // Move on to next case. - state.tested_ = false; - state.n_ = 0; - state.index_ = index + 1; } - else { - stack.pop(); - return; + else if (state.object_ !== null) { + if (!state.props_) { + state.props_ = Object.getOwnPropertyNames(state.object_); + } + do { + var prop = state.props_.shift(); + } while (prop && state.visited_[prop]); + if (prop) { + state.visited_[prop] = true; + state.name_ = prop; + break done; + } } + state.object_ = this.getPrototype(state.object_); + state.props_ = null; + } while (state.object_ !== null); + if (state.object_ === null) { + // Done, exit loop. + stack.pop(); + return; } - }; - ; - Interpreter.prototype.stepThisExpression = function (stack, state, node) { - stack.pop(); - stack[stack.length - 1].value = this.getValueFromScope('this'); - }; - ; - Interpreter.prototype.stepThrowStatement = function (stack, state, node) { - if (!state.done_) { - state.done_ = true; - return new Interpreter.MyState(node['argument'], state.scope); + } + // Fourth, find the variable + if (!state.doneVariable_) { + state.doneVariable_ = true; + var left = node['left']; + if (left['type'] === 'VariableDeclaration') { + // Inline variable declaration: for (var x in y) + state.variable_ = + [Interpreter.SCOPE_REFERENCE, left['declarations'][0]['id']['name']]; } else { - this.throwException(state.value); - } - }; - ; - Interpreter.prototype.stepTryStatement = function (stack, state, node) { - if (!state.doneBlock_) { - state.doneBlock_ = true; - return new Interpreter.MyState(node['block'], state.scope); - } - if (state.throwValue && !state.doneHandler_ && node['handler']) { - state.doneHandler_ = true; - var nextState = new Interpreter.MyState(node['handler'], state.scope); - nextState.throwValue = state.throwValue; - state.throwValue = null; // This error has been handled, don't rethrow. + // Arbitrary left side: for (foo().bar in y) + state.variable_ = null; + var nextState = new Interpreter.MyState(left, state.scope); + nextState.components = true; return nextState; } - if (!state.doneFinalizer_ && node['finalizer']) { - state.doneFinalizer_ = true; - return new Interpreter.MyState(node['finalizer'], state.scope); + } + if (!state.variable_) { + state.variable_ = state.value; + } + // Fifth, set the variable. + if (!state.doneSetter_) { + state.doneSetter_ = true; + var value = state.name_; + var setter = this.setValue(state.variable_, value); + if (setter) { + return this.createSetter_(setter, state.variable_, value); } - if (state.throwValue) { - // There was no catch handler, or the catch/finally threw an error. - // Throw the error up to a higher try. - this.executeException(state.throwValue); + } + // Next step will be step three. + state.name_ = undefined; + // Reevaluate the variable since it could be a setter on the global object. + state.doneVariable_ = false; + state.doneSetter_ = false; + // Sixth and finally, execute the body if there was one. this. + if (node['body']) { + return new Interpreter.MyState(node['body'], state.scope); + } + }; + ; + Interpreter.prototype.stepForStatement = function (stack, state, node) { + var mode = state.mode_ || 0; + if (mode === 0) { + state.mode_ = 1; + if (node['init']) { + return new Interpreter.MyState(node['init'], state.scope); } - else { + } + else if (mode === 1) { + state.mode_ = 2; + if (node['test']) { + return new Interpreter.MyState(node['test'], state.scope); + } + } + else if (mode === 2) { + state.mode_ = 3; + if (node['test'] && !state.value) { + // Done, exit loop. stack.pop(); } - }; - ; - Interpreter.prototype.stepUnaryExpression = function (stack, state, node) { - if (!state.done_) { - state.done_ = true; - var nextState = new Interpreter.MyState(node['argument'], state.scope); - nextState.components = node['operator'] === 'delete'; - return nextState; + else { + state.isLoop = true; + return new Interpreter.MyState(node['body'], state.scope); } - stack.pop(); - var value = state.value; - if (node['operator'] === '-') { - value = -value; - } - else if (node['operator'] === '+') { - value = +value; - } - else if (node['operator'] === '!') { - value = !value; - } - else if (node['operator'] === '~') { - value = ~value; - } - else if (node['operator'] === 'delete') { - var result = true; - // If value is not an array, then it is a primitive, or some other value. - // If so, skip the delete and return true. - if (Array.isArray(value)) { - var obj = value[0]; - if (obj === Interpreter.SCOPE_REFERENCE) { - // 'delete foo;' is the same as 'delete window.foo'. - obj = state.scope; - } - var name = String(value[1]); - try { - delete obj.properties[name]; - } - catch (e) { - if (state.scope.strict) { - this.throwException(this.TYPE_ERROR, "Cannot delete property '" + - name + "' of '" + obj + "'"); - } - else { - result = false; - } - } - } - value = result; + } + else if (mode === 3) { + state.mode_ = 1; + if (node['update']) { + return new Interpreter.MyState(node['update'], state.scope); } - else if (node['operator'] === 'typeof') { - value = (value && value["class"] === 'Function') ? 'function' : typeof value; + } + }; + ; + Interpreter.prototype.stepFunctionDeclaration = function (stack, state, node) { + // This was found and handled when the scope was populated. + stack.pop(); + }; + ; + Interpreter.prototype.stepFunctionExpression = function (stack, state, node) { + stack.pop(); + stack[stack.length - 1].value = this.createFunction(node, state.scope); + }; + ; + Interpreter.prototype.stepIdentifier = function (stack, state, node) { + stack.pop(); + if (state.components) { + stack[stack.length - 1].value = [Interpreter.SCOPE_REFERENCE, node['name']]; + return; + } + var value = this.getValueFromScope(node['name']); + // An identifier could be a getter if it's a property on the global object. + if (value && typeof value === 'object' && value.isGetter) { + // Clear the getter flag and call the getter function. + value.isGetter = false; + var scope = state.scope; + while (!this.hasProperty(scope, node['name'])) { + scope = scope.parentScope; } - else if (node['operator'] === 'void') { - value = undefined; + var func = (value); + return this.createGetter_(func, this.global); + } + stack[stack.length - 1].value = value; + }; + ; + Interpreter.prototype.stepIfStatement = function (stack, state, node) { + return this.stepConditionalExpression(stack, state, node); + }; + Interpreter.prototype.stepLabeledStatement = function (stack, state, node) { + // No need to hit this node again on the way back up the stack. + stack.pop(); + // Note that a statement might have multiple labels. + var labels = state.labels || []; + labels.push(node['label']['name']); + var nextState = new Interpreter.MyState(node['body'], state.scope); + nextState.labels = labels; + return nextState; + }; + ; + Interpreter.prototype.stepLiteral = function (stack, state, node) { + stack.pop(); + var value = node['value']; + if (value instanceof RegExp) { + var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO); + this.populateRegExp(pseudoRegexp, value); + value = pseudoRegexp; + } + stack[stack.length - 1].value = value; + }; + ; + Interpreter.prototype.stepLogicalExpression = function (stack, state, node) { + if (node['operator'] !== '&&' && node['operator'] !== '||') { + throw SyntaxError('Unknown logical operator: ' + node['operator']); + } + if (!state.doneLeft_) { + state.doneLeft_ = true; + return new Interpreter.MyState(node['left'], state.scope); + } + if (!state.doneRight_) { + if ((node['operator'] === '&&' && !state.value) || + (node['operator'] === '||' && state.value)) { + // Shortcut evaluation. + stack.pop(); + stack[stack.length - 1].value = state.value; } else { - throw SyntaxError('Unknown unary operator: ' + node['operator']); - } - stack[stack.length - 1].value = value; - }; - ; - Interpreter.prototype.stepUpdateExpression = function (stack, state, node) { - if (!state.doneLeft_) { - state.doneLeft_ = true; - var nextState = new Interpreter.MyState(node['argument'], state.scope); - nextState.components = true; - return nextState; + state.doneRight_ = true; + return new Interpreter.MyState(node['right'], state.scope); } - if (!state.leftSide_) { - state.leftSide_ = state.value; + } + else { + stack.pop(); + stack[stack.length - 1].value = state.value; + } + }; + ; + Interpreter.prototype.stepMemberExpression = function (stack, state, node) { + if (!state.doneObject_) { + state.doneObject_ = true; + return new Interpreter.MyState(node['object'], state.scope); + } + var propName; + if (!node['computed']) { + state.object_ = state.value; + // obj.foo -- Just access 'foo' directly. + propName = node['property']['name']; + } + else if (!state.doneProperty_) { + state.object_ = state.value; + // obj[foo] -- Compute value of 'foo'. + state.doneProperty_ = true; + return new Interpreter.MyState(node['property'], state.scope); + } + else { + propName = state.value; + } + stack.pop(); + if (state.components) { + stack[stack.length - 1].value = [state.object_, propName]; + } + else { + var value = this.getProperty(state.object_, propName); + if (value && typeof value === 'object' && value.isGetter) { + // Clear the getter flag and call the getter function. + value.isGetter = false; + var func = (value); + return this.createGetter_(func, state.object_); } - if (state.doneGetter_) { - state.leftValue_ = state.value; + stack[stack.length - 1].value = value; + } + }; + ; + Interpreter.prototype.stepNewExpression = function (stack, state, node) { + return this.stepCallExpression(stack, state, node); + }; + Interpreter.prototype.stepObjectExpression = function (stack, state, node) { + var n = state.n_ || 0; + var property = node['properties'][n]; + if (!state.object_) { + // First execution. + state.object_ = this.createObjectProto(this.OBJECT_PROTO); + state.properties_ = Object.create(null); + } + else { + // Determine property name. + var key = property['key']; + if (key['type'] === 'Identifier') { + var propName = key['name']; } - if (!state.doneGetter_) { - var leftValue = this.getValue(state.leftSide_); - state.leftValue_ = leftValue; - if (leftValue && typeof leftValue === 'object' && leftValue.isGetter) { - // Clear the getter flag and call the getter function. - leftValue.isGetter = false; - state.doneGetter_ = true; - var func = (leftValue); - return this.createGetter_(func, state.leftSide_); - } + else if (key['type'] === 'Literal') { + var propName = key['value']; } - if (state.doneSetter_) { - // Return if setter function. - // Setter method on property has completed. - // Ignore its return value, and use the original set value instead. - stack.pop(); - stack[stack.length - 1].value = state.doneSetter_; - return; + else { + throw SyntaxError('Unknown object structure: ' + key['type']); } - leftValue = Number(state.leftValue_); - var changeValue; - if (node['operator'] === '++') { - changeValue = leftValue + 1; + // Set the property computed in the previous execution. + if (!state.properties_[propName]) { + // Create temp object to collect value, getter, and/or setter. + state.properties_[propName] = {}; } - else if (node['operator'] === '--') { - changeValue = leftValue - 1; + state.properties_[propName][property['kind']] = state.value; + state.n_ = ++n; + property = node['properties'][n]; + } + if (property) { + return new Interpreter.MyState(property['value'], state.scope); + } + for (var key in state.properties_) { + var kinds = state.properties_[key]; + if ('get' in kinds || 'set' in kinds) { + // Set a property with a getter or setter. + var descriptor = { + configurable: true, + enumerable: true, + get: kinds['get'], + set: kinds['set'] + }; + this.setProperty(state.object_, key, null, descriptor); } else { - throw SyntaxError('Unknown update expression: ' + node['operator']); + // Set a normal property with a value. + this.setProperty(state.object_, key, kinds['init']); } - var returnValue = node['prefix'] ? changeValue : leftValue; - var setter = this.setValue(state.leftSide_, changeValue); - if (setter) { - state.doneSetter_ = returnValue; - return this.createSetter_(setter, state.leftSide_, changeValue); + } + stack.pop(); + stack[stack.length - 1].value = state.object_; + }; + ; + Interpreter.prototype.stepProgram = function (stack, state, node) { + var n = state.n_ || 0; + var expression = node['body'][n]; + if (expression) { + state.done = false; + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); + } + state.done = true; + // Don't pop the stateStack. + // Leave the root scope on the tree in case the program is appended to. + }; + ; + Interpreter.prototype.stepReturnStatement = function (stack, state, node) { + if (node['argument'] && !state.done_) { + state.done_ = true; + return new Interpreter.MyState(node['argument'], state.scope); + } + var value = state.value; + var i = stack.length - 1; + state = stack[i]; + while (state.node['type'] !== 'CallExpression' && + state.node['type'] !== 'NewExpression') { + if (state.node['type'] !== 'TryStatement') { + stack.splice(i, 1); + } + i--; + if (i < 0) { + // Syntax error, do not allow this error to be trapped. + throw SyntaxError('Illegal return statement'); } - // Return if no setter function. - stack.pop(); - stack[stack.length - 1].value = returnValue; - }; - ; - Interpreter.prototype.stepVariableDeclaration = function (stack, state, node) { - var declarations = node['declarations']; - var n = state.n_ || 0; - var declarationNode = declarations[n]; - if (state.init_ && declarationNode) { - // This setValue call never needs to deal with calling a setter function. - // Note that this is setting the init value, not defining the variable. - // Variable definition is done when scope is populated. - this.setValueToScope(declarationNode['id']['name'], state.value); - state.init_ = false; - declarationNode = declarations[++n]; - } - while (declarationNode) { - // Skip any declarations that are not initialized. They have already - // been defined as undefined in populateScope_. - if (declarationNode['init']) { - state.n_ = n; - state.init_ = true; - return new Interpreter.MyState(declarationNode['init'], state.scope); + state = stack[i]; + } + state.value = value; + }; + ; + Interpreter.prototype.stepSequenceExpression = function (stack, state, node) { + var n = state.n_ || 0; + var expression = node['expressions'][n]; + if (expression) { + state.n_ = n + 1; + return new Interpreter.MyState(expression, state.scope); + } + stack.pop(); + stack[stack.length - 1].value = state.value; + }; + ; + Interpreter.prototype.stepSwitchStatement = function (stack, state, node) { + if (!state.test_) { + state.test_ = 1; + return new Interpreter.MyState(node['discriminant'], state.scope); + } + if (state.test_ === 1) { + state.test_ = 2; + // Preserve switch value between case tests. + state.switchValue_ = state.value; + } + while (true) { + var index = state.index_ || 0; + var switchCase = node['cases'][index]; + if (!state.matched_ && switchCase && !switchCase['test']) { + // Test on the default case is null. + // Bypass (but store) the default case, and get back to it later. + state.defaultCase_ = index; + state.index_ = index + 1; + continue; + } + if (!switchCase && !state.matched_ && state.defaultCase_) { + // Ran through all cases, no match. Jump to the default. + state.matched_ = true; + state.index_ = state.defaultCase_; + continue; + } + if (switchCase) { + if (!state.matched_ && !state.tested_ && switchCase['test']) { + state.tested_ = true; + return new Interpreter.MyState(switchCase['test'], state.scope); + } + if (state.matched_ || state.value === state.switchValue_) { + state.matched_ = true; + var n = state.n_ || 0; + if (switchCase['consequent'][n]) { + state.isSwitch = true; + state.n_ = n + 1; + return new Interpreter.MyState(switchCase['consequent'][n], state.scope); + } } - declarationNode = declarations[++n]; - } - stack.pop(); - }; - ; - Interpreter.prototype.stepWithStatement = function (stack, state, node) { - if (!state.doneObject_) { - state.doneObject_ = true; - return new Interpreter.MyState(node['object'], state.scope); - } - else if (!state.doneBody_) { - state.doneBody_ = true; - var scope = this.createSpecialScope(state.scope, state.value); - return new Interpreter.MyState(node['body'], scope); + // Move on to next case. + state.tested_ = false; + state.n_ = 0; + state.index_ = index + 1; } else { stack.pop(); + return; } - }; - ; - Interpreter.prototype.stepWhileStatement = function (stack, state, node) { - return this.stepDoWhileStatement(stack, state, node); - }; - /** - * @const {!Object} Configuration used for all Acorn parsing. - */ - Interpreter.PARSE_OPTIONS = { - ecmaVersion: 5 - }; - /** - * Property descriptor of readonly properties. - */ - Interpreter.READONLY_DESCRIPTOR = { - configurable: true, - enumerable: true, - writable: false - }; - /** - * Property descriptor of non-enumerable properties. - */ - Interpreter.NONENUMERABLE_DESCRIPTOR = { - configurable: true, - enumerable: false, - writable: true - }; - /** - * Property descriptor of readonly, non-enumerable properties. - */ - Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR = { - configurable: true, - enumerable: false, - writable: false - }; - /** - * Property descriptor of variables. - */ - Interpreter.VARIABLE_DESCRIPTOR = { - configurable: false, - enumerable: true, - writable: true - }; - /** - * Unique symbol for indicating that a step has encountered an error, has - * added it to the stack, and will be thrown within the user's program. - * When STEP_ERROR is thrown in the JS-Interpreter, the error can be ignored. - */ - Interpreter.STEP_ERROR = {}; - /** - * Unique symbol for indicating that a reference is a variable on the scope, - * not an object property. - */ - Interpreter.SCOPE_REFERENCE = {}; - /** - * For cycle detection in array to string and error conversion; - * see spec bug github.com/tc39/ecma262/issues/289 - * Since this is for atomic actions only, it can be a class property. - */ - Interpreter.toStringCycles_ = []; - return Interpreter; - }()); - // Preserve top-level API functions from being pruned/renamed by JS compilers. - // Add others as needed. - // The global object ('window' in a browser, 'global' in node.js) is 'this'. - this['Interpreter'] = Interpreter; - Interpreter.prototype['step'] = Interpreter.prototype.step; - Interpreter.prototype['run'] = Interpreter.prototype.run; - Interpreter.prototype['appendCode'] = Interpreter.prototype.appendCode; - Interpreter.prototype['createObject'] = Interpreter.prototype.createObject; - Interpreter.prototype['createObjectProto'] = - Interpreter.prototype.createObjectProto; - Interpreter.prototype['createAsyncFunction'] = - Interpreter.prototype.createAsyncFunction; - Interpreter.prototype['createNativeFunction'] = - Interpreter.prototype.createNativeFunction; - Interpreter.prototype['getProperty'] = Interpreter.prototype.getProperty; - Interpreter.prototype['setProperty'] = Interpreter.prototype.setProperty; - Interpreter.prototype['nativeToPseudo'] = Interpreter.prototype.nativeToPseudo; - Interpreter.prototype['pseudoToNative'] = Interpreter.prototype.pseudoToNative; - // Obsolete. Do not use. - Interpreter.prototype['createPrimitive'] = function (x) { return x; }; - (function (Interpreter) { - /** - * Class for an object. - * @param {Interpreter.MyObject} proto Prototype object or null. - * @constructor - */ - var MyObject = (function () { - function MyObject(proto) { - /** @type {Interpreter.MyObject} */ - this.proto = null; - /** @type {boolean} */ - this.isObject = true; - /** @type {string} */ - this["class"] = 'Object'; - /** @type {Date|RegExp|boolean|number|string|undefined|null} */ - this.data = null; - this.getter = Object.create(null); - this.setter = Object.create(null); - this.properties = Object.create(null); - this.proto = proto; - } - /** - * Convert this object into a string. - * @return {string} String value. - * @override - */ - MyObject.prototype.toString = function () { - if (this["class"] === 'Array') { - // Array - var cycles = Interpreter.toStringCycles_; - cycles.push(this); - try { - var strs = []; - for (var i = 0; i < this.properties.length; i++) { - var value = this.properties[i]; - strs[i] = (value && value.isObject && cycles.indexOf(value) !== -1) ? - '...' : value; - } - } - finally { - cycles.pop(); - } - return strs.join(','); + } + }; + ; + Interpreter.prototype.stepThisExpression = function (stack, state, node) { + stack.pop(); + stack[stack.length - 1].value = this.getValueFromScope('this'); + }; + ; + Interpreter.prototype.stepThrowStatement = function (stack, state, node) { + if (!state.done_) { + state.done_ = true; + return new Interpreter.MyState(node['argument'], state.scope); + } + else { + this.throwException(state.value); + } + }; + ; + Interpreter.prototype.stepTryStatement = function (stack, state, node) { + if (!state.doneBlock_) { + state.doneBlock_ = true; + return new Interpreter.MyState(node['block'], state.scope); + } + if (state.throwValue && !state.doneHandler_ && node['handler']) { + state.doneHandler_ = true; + var nextState = new Interpreter.MyState(node['handler'], state.scope); + nextState.throwValue = state.throwValue; + state.throwValue = null; // This error has been handled, don't rethrow. + return nextState; + } + if (!state.doneFinalizer_ && node['finalizer']) { + state.doneFinalizer_ = true; + return new Interpreter.MyState(node['finalizer'], state.scope); + } + if (state.throwValue) { + // There was no catch handler, or the catch/finally threw an error. + // Throw the error up to a higher try. + this.executeException(state.throwValue); + } + else { + stack.pop(); + } + }; + ; + Interpreter.prototype.stepUnaryExpression = function (stack, state, node) { + if (!state.done_) { + state.done_ = true; + var nextState = new Interpreter.MyState(node['argument'], state.scope); + nextState.components = node['operator'] === 'delete'; + return nextState; + } + stack.pop(); + var value = state.value; + if (node['operator'] === '-') { + value = -value; + } + else if (node['operator'] === '+') { + value = +value; + } + else if (node['operator'] === '!') { + value = !value; + } + else if (node['operator'] === '~') { + value = ~value; + } + else if (node['operator'] === 'delete') { + var result = true; + // If value is not an array, then it is a primitive, or some other value. + // If so, skip the delete and return true. + if (Array.isArray(value)) { + var obj = value[0]; + if (obj === Interpreter.SCOPE_REFERENCE) { + // 'delete foo;' is the same as 'delete window.foo'. + obj = state.scope; + } + var name = String(value[1]); + try { + delete obj.properties[name]; } - if (this["class"] === 'Error') { - var cycles = Interpreter.toStringCycles_; - if (cycles.indexOf(this) !== -1) { - return '[object Error]'; + catch (e) { + if (state.scope.strict) { + this.throwException(this.TYPE_ERROR, "Cannot delete property '" + + name + "' of '" + obj + "'"); } - var name, message; - // Bug: Does not support getters and setters for name or message. - var obj = this; - do { - if ('name' in obj.properties) { - name = obj.properties['name']; - break; - } - } while ((obj = obj.proto)); - var obj = this; - do { - if ('message' in obj.properties) { - message = obj.properties['message']; - break; - } - } while ((obj = obj.proto)); - cycles.push(this); - try { - name = name && name.toString(); - message = message && message.toString(); + else { + result = false; } - finally { - cycles.pop(); + } + } + value = result; + } + else if (node['operator'] === 'typeof') { + value = (value && value["class"] === 'Function') ? 'function' : typeof value; + } + else if (node['operator'] === 'void') { + value = undefined; + } + else { + throw SyntaxError('Unknown unary operator: ' + node['operator']); + } + stack[stack.length - 1].value = value; + }; + ; + Interpreter.prototype.stepUpdateExpression = function (stack, state, node) { + if (!state.doneLeft_) { + state.doneLeft_ = true; + var nextState = new Interpreter.MyState(node['argument'], state.scope); + nextState.components = true; + return nextState; + } + if (!state.leftSide_) { + state.leftSide_ = state.value; + } + if (state.doneGetter_) { + state.leftValue_ = state.value; + } + if (!state.doneGetter_) { + var leftValue = this.getValue(state.leftSide_); + state.leftValue_ = leftValue; + if (leftValue && typeof leftValue === 'object' && leftValue.isGetter) { + // Clear the getter flag and call the getter function. + leftValue.isGetter = false; + state.doneGetter_ = true; + var func = (leftValue); + return this.createGetter_(func, state.leftSide_); + } + } + if (state.doneSetter_) { + // Return if setter function. + // Setter method on property has completed. + // Ignore its return value, and use the original set value instead. + stack.pop(); + stack[stack.length - 1].value = state.doneSetter_; + return; + } + leftValue = Number(state.leftValue_); + var changeValue; + if (node['operator'] === '++') { + changeValue = leftValue + 1; + } + else if (node['operator'] === '--') { + changeValue = leftValue - 1; + } + else { + throw SyntaxError('Unknown update expression: ' + node['operator']); + } + var returnValue = node['prefix'] ? changeValue : leftValue; + var setter = this.setValue(state.leftSide_, changeValue); + if (setter) { + state.doneSetter_ = returnValue; + return this.createSetter_(setter, state.leftSide_, changeValue); + } + // Return if no setter function. + stack.pop(); + stack[stack.length - 1].value = returnValue; + }; + ; + Interpreter.prototype.stepVariableDeclaration = function (stack, state, node) { + var declarations = node['declarations']; + var n = state.n_ || 0; + var declarationNode = declarations[n]; + if (state.init_ && declarationNode) { + // This setValue call never needs to deal with calling a setter function. + // Note that this is setting the init value, not defining the variable. + // Variable definition is done when scope is populated. + this.setValueToScope(declarationNode['id']['name'], state.value); + state.init_ = false; + declarationNode = declarations[++n]; + } + while (declarationNode) { + // Skip any declarations that are not initialized. They have already + // been defined as undefined in populateScope_. + if (declarationNode['init']) { + state.n_ = n; + state.init_ = true; + return new Interpreter.MyState(declarationNode['init'], state.scope); + } + declarationNode = declarations[++n]; + } + stack.pop(); + }; + ; + Interpreter.prototype.stepWithStatement = function (stack, state, node) { + if (!state.doneObject_) { + state.doneObject_ = true; + return new Interpreter.MyState(node['object'], state.scope); + } + else if (!state.doneBody_) { + state.doneBody_ = true; + var scope = this.createSpecialScope(state.scope, state.value); + return new Interpreter.MyState(node['body'], scope); + } + else { + stack.pop(); + } + }; + ; + Interpreter.prototype.stepWhileStatement = function (stack, state, node) { + return this.stepDoWhileStatement(stack, state, node); + }; + /** + * @const {!Object} Configuration used for all Acorn parsing. + */ + Interpreter.PARSE_OPTIONS = { + ecmaVersion: 5 + }; + /** + * Property descriptor of readonly properties. + */ + Interpreter.READONLY_DESCRIPTOR = { + configurable: true, + enumerable: true, + writable: false + }; + /** + * Property descriptor of non-enumerable properties. + */ + Interpreter.NONENUMERABLE_DESCRIPTOR = { + configurable: true, + enumerable: false, + writable: true + }; + /** + * Property descriptor of readonly, non-enumerable properties. + */ + Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR = { + configurable: true, + enumerable: false, + writable: false + }; + /** + * Property descriptor of variables. + */ + Interpreter.VARIABLE_DESCRIPTOR = { + configurable: false, + enumerable: true, + writable: true + }; + /** + * Unique symbol for indicating that a step has encountered an error, has + * added it to the stack, and will be thrown within the user's program. + * When STEP_ERROR is thrown in the JS-Interpreter, the error can be ignored. + */ + Interpreter.STEP_ERROR = {}; + /** + * Unique symbol for indicating that a reference is a variable on the scope, + * not an object property. + */ + Interpreter.SCOPE_REFERENCE = {}; + /** + * For cycle detection in array to string and error conversion; + * see spec bug github.com/tc39/ecma262/issues/289 + * Since this is for atomic actions only, it can be a class property. + */ + Interpreter.toStringCycles_ = []; + return Interpreter; +}()); +// Preserve top-level API functions from being pruned/renamed by JS compilers. +// Add others as needed. +// The global object ('window' in a browser, 'global' in node.js) is 'this'. +this['Interpreter'] = Interpreter; +Interpreter.prototype['step'] = Interpreter.prototype.step; +Interpreter.prototype['run'] = Interpreter.prototype.run; +Interpreter.prototype['appendCode'] = Interpreter.prototype.appendCode; +Interpreter.prototype['createObject'] = Interpreter.prototype.createObject; +Interpreter.prototype['createObjectProto'] = + Interpreter.prototype.createObjectProto; +Interpreter.prototype['createAsyncFunction'] = + Interpreter.prototype.createAsyncFunction; +Interpreter.prototype['createNativeFunction'] = + Interpreter.prototype.createNativeFunction; +Interpreter.prototype['getProperty'] = Interpreter.prototype.getProperty; +Interpreter.prototype['setProperty'] = Interpreter.prototype.setProperty; +Interpreter.prototype['nativeToPseudo'] = Interpreter.prototype.nativeToPseudo; +Interpreter.prototype['pseudoToNative'] = Interpreter.prototype.pseudoToNative; +// Obsolete. Do not use. +Interpreter.prototype['createPrimitive'] = function (x) { return x; }; +(function (Interpreter) { + /** + * Class for an object. + * @param {Interpreter.MyObject} proto Prototype object or null. + * @constructor + */ + var MyObject = (function () { + function MyObject(proto) { + /** @type {Interpreter.MyObject} */ + this.proto = null; + /** @type {boolean} */ + this.isObject = true; + /** @type {string} */ + this["class"] = 'Object'; + /** @type {Date|RegExp|boolean|number|string|undefined|null} */ + this.data = null; + this.getter = Object.create(null); + this.setter = Object.create(null); + this.properties = Object.create(null); + this.proto = proto; + } + /** + * Convert this object into a string. + * @return {string} String value. + * @override + */ + MyObject.prototype.toString = function () { + if (this["class"] === 'Array') { + // Array + var cycles = Interpreter.toStringCycles_; + cycles.push(this); + try { + var strs = []; + for (var i = 0; i < this.properties.length; i++) { + var value = this.properties[i]; + strs[i] = (value && value.isObject && cycles.indexOf(value) !== -1) ? + '...' : value; } - return message ? name + ': ' + message : String(name); } - // RegExp, Date, and boxed primitives. - if (this.data !== null) { - return String(this.data); + finally { + cycles.pop(); } - return '[object ' + this["class"] + ']'; - }; - /** - * Return the object's value. - * @return {Interpreter.MyValue} Value. - * @override - */ - MyObject.prototype.valueOf = function () { - if (this.data === undefined || this.data === null || - this.data instanceof RegExp) { - return this; // An Object. + return strs.join(','); + } + if (this["class"] === 'Error') { + var cycles = Interpreter.toStringCycles_; + if (cycles.indexOf(this) !== -1) { + return '[object Error]'; + } + var name, message; + // Bug: Does not support getters and setters for name or message. + var obj = this; + do { + if ('name' in obj.properties) { + name = obj.properties['name']; + break; + } + } while ((obj = obj.proto)); + var obj = this; + do { + if ('message' in obj.properties) { + message = obj.properties['message']; + break; + } + } while ((obj = obj.proto)); + cycles.push(this); + try { + name = name && name.toString(); + message = message && message.toString(); } - if (this.data instanceof Date) { - return this.data.valueOf(); // Milliseconds. + finally { + cycles.pop(); } - return (this.data); // Boxed primitive. - }; - return MyObject; - }()); - Interpreter.MyObject = MyObject; + return message ? name + ': ' + message : String(name); + } + // RegExp, Date, and boxed primitives. + if (this.data !== null) { + return String(this.data); + } + return '[object ' + this["class"] + ']'; + }; /** - * Class for a state. - * @param {!MyObject} node AST node for the state. - * @param {!Interpreter.MyObject} scope Scope object for the state. - * @constructor + * Return the object's value. + * @return {Interpreter.MyValue} Value. + * @override */ - var MyState = (function () { - function MyState(node, scope) { - this.node = node; - this.scope = scope; - } - return MyState; - }()); - Interpreter.MyState = MyState; - })(Interpreter || (Interpreter = {})); -}); + MyObject.prototype.valueOf = function () { + if (this.data === undefined || this.data === null || + this.data instanceof RegExp) { + return this; // An Object. + } + if (this.data instanceof Date) { + return this.data.valueOf(); // Milliseconds. + } + return (this.data); // Boxed primitive. + }; + return MyObject; + }()); + Interpreter.MyObject = MyObject; + /** + * Class for a state. + * @param {!MyObject} node AST node for the state. + * @param {!Interpreter.MyObject} scope Scope object for the state. + * @constructor + */ + var MyState = (function () { + function MyState(node, scope) { + this.node = node; + this.scope = scope; + } + return MyState; + }()); + Interpreter.MyState = MyState; +})(Interpreter || (Interpreter = {})); //# sourceMappingURL=interpreter.js.map \ No newline at end of file diff --git a/interpreter.js.map b/interpreter.js.map index e6982193..859c7cfa 100644 --- a/interpreter.js.map +++ b/interpreter.js.map @@ -1 +1 @@ -{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["interpreter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["interpreter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/interpreter.ts b/interpreter.ts index 22601e49..3e00cb21 100644 --- a/interpreter.ts +++ b/interpreter.ts @@ -1,5 +1,6 @@ +/// + // Declare missing functions -import * as ESTree from 'estree'; declare function escape(s:string): string; declare function unescape(s:string): string; declare module acorn { diff --git a/tsconfig.json b/tsconfig.json index 74507e5d..f1346b59 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,8 @@ { "compilerOptions": { - "module": "amd", - "sourceMap": true + "module": "none", + "sourceMap": true, + "outFile": "interpreter.js" }, "files": ["interpreter.ts"] } \ No newline at end of file From c599b2d210cb33771f237ac214f9201f44e733ab Mon Sep 17 00:00:00 2001 From: Jun Kato Date: Sat, 12 Aug 2017 19:46:33 +0900 Subject: [PATCH 11/29] Add Interpreter.Object and Interpreter.State for API compatibility --- interpreter.js | 3 +++ interpreter.js.map | 2 +- interpreter.ts | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/interpreter.js b/interpreter.js index d5147f61..c80a2501 100644 --- a/interpreter.js +++ b/interpreter.js @@ -3226,4 +3226,7 @@ Interpreter.prototype['createPrimitive'] = function (x) { return x; }; }()); Interpreter.MyState = MyState; })(Interpreter || (Interpreter = {})); +// These lines are added for API compatibility +Interpreter['Object'] = Interpreter.MyObject; +Interpreter['State'] = Interpreter.MyState; //# sourceMappingURL=interpreter.js.map \ No newline at end of file diff --git a/interpreter.js.map b/interpreter.js.map index 859c7cfa..6293c21d 100644 --- a/interpreter.js.map +++ b/interpreter.js.map @@ -1 +1 @@ -{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["interpreter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["interpreter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/interpreter.ts b/interpreter.ts index 3e00cb21..869ec3a8 100644 --- a/interpreter.ts +++ b/interpreter.ts @@ -3588,3 +3588,7 @@ export interface MyValueTable { native: any[] } } + +// These lines are added for API compatibility +Interpreter['Object'] = Interpreter.MyObject; +Interpreter['State'] = Interpreter.MyState; From 16ff726b0490fe059305adb672192e8433ea0729 Mon Sep 17 00:00:00 2001 From: Jun Kato Date: Sat, 12 Aug 2017 23:31:18 +0900 Subject: [PATCH 12/29] Start using webpack for bundling and compressing JS files. --- acorn_interpreter.js | 134 - demos/async.html | 4 +- demos/json.html | 4 +- demos/serialize.html | 4 +- demos/thread.html | 4 +- dist/acorn_interpreter.js | 19 + dist/acorn_interpreter.js.map | 1 + dist/interpreter.js | 3351 ++++++++++++++++++++++++ dist/interpreter.js.map | 1 + index.html | 6 +- interpreter.js | 3232 ------------------------ interpreter.js.map | 1 - interpreter.orig.js | 3506 -------------------------- _estree.d.ts => lib/_estree.d.ts | 0 acorn.js => lib/acorn.js | 0 lib/global.ts | 4 + interpreter.ts => lib/interpreter.ts | 7 + package-lock.json | 3077 ++++++++++++++++++++++ package.json | 10 + tsconfig.json | 6 +- webpack.compress.config.js | 39 + webpack.config.js | 23 + 22 files changed, 6546 insertions(+), 6887 deletions(-) delete mode 100644 acorn_interpreter.js create mode 100644 dist/acorn_interpreter.js create mode 100644 dist/acorn_interpreter.js.map create mode 100644 dist/interpreter.js create mode 100644 dist/interpreter.js.map delete mode 100644 interpreter.js delete mode 100644 interpreter.js.map delete mode 100644 interpreter.orig.js rename _estree.d.ts => lib/_estree.d.ts (100%) rename acorn.js => lib/acorn.js (100%) create mode 100644 lib/global.ts rename interpreter.ts => lib/interpreter.ts (99%) create mode 100644 webpack.compress.config.js create mode 100644 webpack.config.js diff --git a/acorn_interpreter.js b/acorn_interpreter.js deleted file mode 100644 index d9c24a21..00000000 --- a/acorn_interpreter.js +++ /dev/null @@ -1,134 +0,0 @@ -// Acorn: Copyright 2012 Marijn Haverbeke, MIT License -var mod$$inline_58=function(a){function b(a){n=a||{};for(var b in Ua)Object.prototype.hasOwnProperty.call(n,b)||(n[b]=Ua[b]);wa=n.sourceFile||null}function c(a,b){var c=Ab(k,a);b+=" ("+c.line+":"+c.column+")";var d=new SyntaxError(b);d.pos=a;d.loc=c;d.raisedAt=f;throw d;}function d(a){function b(a){if(1==a.length)return c+="return str === "+JSON.stringify(a[0])+";";c+="switch(str){";for(var va=0;vaa)++f;else if(47===a)if(a=k.charCodeAt(f+1),42===a){var a=n.onComment&&n.locations&&new e,b=f,d=k.indexOf("*/",f+=2);-1===d&&c(f-2,"Unterminated comment"); -f=d+2;if(n.locations){Y.lastIndex=b;for(var g=void 0;(g=Y.exec(k))&&g.index=a?a=P(!0):(++f,a=g(xa)),a;case 40:return++f,g(I);case 41:return++f,g(E);case 59:return++f,g(J);case 44:return++f,g(L);case 91:return++f,g(ja); -case 93:return++f,g(ka);case 123:return++f,g(Z);case 125:return++f,g(T);case 58:return++f,g(aa);case 63:return++f,g(ya);case 48:if(a=k.charCodeAt(f+1),120===a||88===a)return f+=2,a=B(16),null==a&&c(x+2,"Expected hexadecimal number"),la(k.charCodeAt(f))&&c(f,"Identifier directly after number"),a=g(ba,a);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return P(!1);case 34:case 39:a:{f++;for(var b="";;){f>=S&&c(x,"Unterminated string constant");var d=k.charCodeAt(f);if(d===a){++f; -a=g(da,b);break a}if(92===d){var d=k.charCodeAt(++f),e=/^[0-7]+/.exec(k.slice(f,f+3));for(e&&(e=e[0]);e&&255=S)return g(pa);var b=k.charCodeAt(f);if(la(b)||92===b)return Ya();a=m(b);if(!1===a){b=String.fromCharCode(b);if("\\"===b||Za.test(b))return Ya();c(f,"Unexpected character '"+b+"'")}return a}function t(a,b){var c=k.slice(f,f+b);f+=b;g(a,c)}function K(){for(var a,b,d=f;;){f>=S&&c(d, -"Unterminated regular expression");var e=k.charAt(f);na.test(e)&&c(d,"Unterminated regular expression");if(a)a=!1;else{if("["===e)b=!0;else if("]"===e&&b)b=!1;else if("/"===e&&!b)break;a="\\"===e}++f}a=k.slice(d,f);++f;(b=$a())&&!/^[gmsiy]*$/.test(b)&&c(d,"Invalid regexp flag");return g(Ba,new RegExp(a,b))}function B(a,b){for(var c=f,d=0,e=0,g=null==b?Infinity:b;e=h?h-48:Infinity;if(h>=a)break;++f;d=d*a+h}return f===c||null!=b&& -f-c!==b?null:d}function P(a){var b=f,d=!1,e=48===k.charCodeAt(f);a||null!==B(10)||c(b,"Invalid number");46===k.charCodeAt(f)&&(++f,B(10),d=!0);a=k.charCodeAt(f);if(69===a||101===a)a=k.charCodeAt(++f),43!==a&&45!==a||++f,null===B(10)&&c(b,"Invalid number"),d=!0;la(k.charCodeAt(f))&&c(f,"Identifier directly after number");a=k.slice(b,f);var h;d?h=parseFloat(a):e&&1!==a.length?/[89]/.test(a)||C?c(b,"Invalid number"):h=parseInt(a,8):h=parseInt(a,10);return g(ba,h)}function ma(a){a=B(16,a);null===a&&c(x, -"Bad character escape sequence");return a}function $a(){ca=!1;for(var a,b=!0,d=f;;){var e=k.charCodeAt(f);if(ab(e))ca&&(a+=k.charAt(f)),++f;else if(92===e){ca||(a=k.slice(d,f));ca=!0;117!=k.charCodeAt(++f)&&c(f,"Expecting Unicode escape sequence \\uXXXX");++f;var e=ma(4),g=String.fromCharCode(e);g||c(f-1,"Invalid Unicode escape");(b?la(e):ab(e))||c(f-4,"Invalid Unicode escape");a+=g}else break;b=!1}return ca?a:k.slice(d,f)}function Ya(){var a=$a(),b=V;ca||(Lb(a)?b=Ca[a]:(n.forbidReserved&&(3===n.ecmaVersion? -Mb:Nb)(a)||C&&bb(a))&&c(x,"The keyword '"+a+"' is reserved"));return g(b,a)}function r(){Da=x;M=X;Ea=ia;z()}function Fa(a){C=a;f=M;if(n.locations)for(;fb){var e=Q(a);e.left=a;e.operator=H;a=p;r();e.right=Ra(Sa(),d,c);d=q(e,a===Va||a===Wa?"LogicalExpression":"BinaryExpression");return Ra(d,b,c)}return a}function Sa(){if(p.prefix){var a=y(),b=p.isUpdate;a.operator=H;R=a.prefix=!0;r();a.argument= -Sa();b?ra(a.argument):C&&"delete"===a.operator&&"Identifier"===a.argument.type&&c(a.start,"Deleting local variable in strict mode");return q(a,b?"UpdateExpression":"UnaryExpression")}for(b=ha(ua());p.postfix&&!qa();)a=Q(b),a.operator=H,a.prefix=!1,a.argument=b,ra(b),r(),b=q(a,"UpdateExpression");return b}function ha(a,b){if(u(xa)){var c=Q(a);c.object=a;c.property=O(!0);c.computed=!1;return ha(q(c,"MemberExpression"),b)}return u(ja)?(c=Q(a),c.object=a,c.property=A(),c.computed=!0,v(ka),ha(q(c,"MemberExpression"), -b)):!b&&u(I)?(c=Q(a),c.callee=a,c.arguments=Ta(E,!1),ha(q(c,"CallExpression"),b)):a}function ua(){switch(p){case ub:var a=y();r();return q(a,"ThisExpression");case V:return O();case ba:case da:case Ba:return a=y(),a.value=H,a.raw=k.slice(x,X),r(),q(a,"Literal");case vb:case wb:case xb:return a=y(),a.value=p.atomValue,a.raw=p.keyword,r(),q(a,"Literal");case I:var a=oa,b=x;r();var d=A();d.start=b;d.end=X;n.locations&&(d.loc.start=a,d.loc.end=ia);n.ranges&&(d.range=[b,X]);v(E);return d;case ja:return a= -y(),r(),a.elements=Ta(ka,!0,!0),q(a,"ArrayExpression");case Z:a=y();b=!0;d=!1;a.properties=[];for(r();!u(T);){if(b)b=!1;else if(v(L),n.allowTrailingCommas&&u(T))break;var e={key:p===ba||p===da?ua():O(!0)},g=!1,h;u(aa)?(e.value=A(!0),h=e.kind="init"):5<=n.ecmaVersion&&"Identifier"===e.key.type&&("get"===e.key.name||"set"===e.key.name)?(g=d=!0,h=e.kind=e.key.name,e.key=p===ba||p===da?ua():O(!0),p!==I&&N(),e.value=Na(y(),!1)):N();if("Identifier"===e.key.type&&(C||d))for(var f=0;fd?a.id:a.params[d],(bb(e.name)||sa(e.name))&&c(e.start,"Defining '"+e.name+"' in strict mode"),0<=d)for(var g=0;ga?36===a:91>a?!0:97>a?95===a:123>a?!0:170<=a&&Za.test(String.fromCharCode(a))},ab=a.isIdentifierChar=function(a){return 48>a?36===a:58>a?!0:65>a?!1:91>a?!0:97>a?95===a:123>a?!0:170<=a&&Pb.test(String.fromCharCode(a))},ca,Ia={kind:"loop"},Ob={kind:"switch"}}; -"object"==typeof exports&&"object"==typeof module?mod$$inline_58(exports):"function"==typeof define&&define.amd?define(["exports"],mod$$inline_58):mod$$inline_58(this.acorn||(this.acorn={})); -// JS-Interpreter: Copyright 2013 Google Inc, Apache 2.0 -var g; -function h(a,b){"string"===typeof a&&(a=acorn.parse(a,k));this.Y=a;this.La=b;this.pa=!1;this.ca=[];this.ta=0;this.Ja=Object.create(null);var c=/^step([A-Z]\w*)$/,d,e;for(e in this)if(d=e.match(c))this.Ja[d[1]]=this[e].bind(this);this.global=l(this,this.Y,null);this.Y=acorn.parse(this.ca.join("\n"),k);this.ca=void 0;n(this,this.Y,void 0,void 0);c=new p(this.Y,this.global);c.done=!1;this.g=[c];this.Na();this.value=void 0;this.Y=a;c=new p(this.Y,this.global);c.done=!1;this.g.length=0;this.g[0]=c;this.Aa= -c.node.constructor;this.stateStack=this.g;this.OBJECT=this.l;this.OBJECT_PROTO=this.F;this.FUNCTION=this.v;this.FUNCTION_PROTO=this.A;this.ARRAY=this.j;this.ARRAY_PROTO=this.K;this.REGEXP=this.G;this.REGEXP_PROTO=this.ra;this.UNDEFINED=void 0;this.NULL=null;this.NAN=NaN;this.TRUE=!0;this.FALSE=!1;this.STRING_EMPTY="";this.NUMBER_ZERO=0;this.NUMBER_ONE=1} -var k={$a:5},q={configurable:!0,enumerable:!0,writable:!1},t={configurable:!0,enumerable:!1,writable:!0},u={configurable:!0,enumerable:!1,writable:!1},v={configurable:!1,enumerable:!0,writable:!0},x={},z={},A=[]; -h.prototype.Qa=function(a){var b=this.g[0];if(!b||"Program"!==b.node.type)throw Error("Expecting original AST to start with a Program node.");"string"===typeof a&&(a=acorn.parse(a,k));if(!a||"Program"!==a.type)throw Error("Expecting new AST to start with a Program node.");B(this,a,b.scope);for(var c=0,d;d=a.body[c];c++)b.node.body.push(d);b.done=!1}; -h.prototype.step=function(){var a=this.g,b=a[a.length-1];if(!b)return!1;var c=b.node,d=c.type;if("Program"===d&&b.done)return!1;if(this.pa)return!0;try{var e=this.Ja[d](a,b,c)}catch(f){if(f!==x)throw f;}e&&a.push(e);return c.end?!0:this.step()};h.prototype.Na=function(){for(;!this.pa&&this.step(););return this.pa}; -function C(a,b){a.setProperty(b,"Infinity",Infinity,q);a.setProperty(b,"NaN",NaN,q);a.setProperty(b,"undefined",void 0,q);a.setProperty(b,"window",b,q);a.setProperty(b,"this",b,q);a.setProperty(b,"self",b);a.F=new D(null);a.A=new D(a.F);E(a,b);aa(a,b);b.ea=a.F;a.setProperty(b,"constructor",a.l);ba(a,b);ca(a,b);da(a,b);ea(a,b);fa(a,b);ga(a,b);ha(a,b);ia(a,b);ja(a,b);a.setProperty(b,"isNaN",a.b(isNaN,!1));a.setProperty(b,"isFinite",a.b(isFinite,!1));a.setProperty(b,"parseFloat",a.b(parseFloat,!1)); -a.setProperty(b,"parseInt",a.b(parseInt,!1));var c=a.c(a.A);c.eval=!0;c.Ka=!0;a.setProperty(c,"length",1,q);a.setProperty(b,"eval",c);for(var c=[[escape,"escape"],[unescape,"unescape"],[decodeURI,"decodeURI"],[decodeURIComponent,"decodeURIComponent"],[encodeURI,"encodeURI"],[encodeURIComponent,"encodeURIComponent"]],d=0;db?Math.max(this.length+b,0):Math.min(b,this.length);d=c(d,Infinity);d=Math.min(d,this.length-b);for(var e=a.c(a.K),f=b;f=b;f--)this.a[f+arguments.length-2]=this.a[f];this.length+=arguments.length-2;for(f=2;ff&&(f=this.length+f);var f=Math.max(0,Math.min(f,this.length)),r=c(d,this.length);0>r&&(r=this.length+r);for(var r=Math.max(0,Math.min(r,this.length)),w=0;fe&&(e=this.length+ -e);for(e=Math.max(0,e);ee&&(e=this.length+e);for(e=Math.min(e,this.length-1);0<=e;e--)if(a.m(this,e)===b)return e;return-1};L(a,a.j,"lastIndexOf",d);a.ca.push("Object.defineProperty(Array.prototype, 'every',","{configurable: true, writable: true, value:","function(callbackfn, thisArg) {","if (!this || typeof callbackfn !== 'function') throw TypeError();","var T, k;","var O = Object(this);", -"var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;","while (k < len) {","if (k in O && !callbackfn.call(T, O[k], k, O)) return false;","k++;","}","return true;","}","});","Object.defineProperty(Array.prototype, 'filter',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {","if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var res = [];","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;", -"for (var i = 0; i < len; i++) {","if (i in t) {","var val = t[i];","if (fun.call(thisArg, val, i, t)) res.push(val);","}","}","return res;","}","});","Object.defineProperty(Array.prototype, 'forEach',","{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') throw TypeError();","var T, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;","while (k < len) {","if (k in O) callback.call(T, O[k], k, O);", -"k++;","}","}","});","Object.defineProperty(Array.prototype, 'map',","{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') new TypeError;","var T, A, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","A = new Array(len);","k = 0;","while (k < len) {","if (k in O) A[k] = callback.call(T, O[k], k, O);","k++;","}","return A;","}","});","Object.defineProperty(Array.prototype, 'reduce',", -"{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {","if (!this || typeof callback !== 'function') throw TypeError();","var t = Object(this), len = t.length >>> 0, k = 0, value;","if (arguments.length === 2) {","value = arguments[1];","} else {","while (k < len && !(k in t)) k++;","if (k >= len) {","throw TypeError('Reduce of empty array with no initial value');","}","value = t[k++];","}","for (; k < len; k++) {","if (k in t) value = callback(value, t[k], k, t);", -"}","return value;","}","});","Object.defineProperty(Array.prototype, 'reduceRight',","{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {","if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();","var t = Object(this), len = t.length >>> 0, k = len - 1, value;","if (arguments.length >= 2) {","value = arguments[1];","} else {","while (k >= 0 && !(k in t)) k--;","if (k < 0) {","throw TypeError('Reduce of empty array with no initial value');", -"}","value = t[k--];","}","for (; k >= 0; k--) {","if (k in t) value = callback(value, t[k], k, t);","}","return value;","}","});","Object.defineProperty(Array.prototype, 'some',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {","if (!this || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;","for (var i = 0; i < len; i++) {","if (i in t && fun.call(thisArg, t[i], i, t)) {", -"return true;","}","}","return false;","}","});","Object.defineProperty(Array.prototype, 'sort',","{configurable: true, writable: true, value:","function(opt_comp) {","for (var i = 0; i < this.length; i++) {","var changes = 0;","for (var j = 0; j < this.length - i - 1; j++) {","if (opt_comp ?opt_comp(this[j], this[j + 1]) > 0 : this[j] > this[j + 1]) {","var swap = this[j];","this[j] = this[j + 1];","this[j + 1] = swap;","changes++;","}","}","if (changes <= 1) break;","}","return this;","}","});", -"Object.defineProperty(Array.prototype, 'toLocaleString',","{configurable: true, writable: true, value:","function() {","var out = [];","for (var i = 0; i < this.length; i++) {","out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();","}","return out.join(',');","}","});","")} -function ca(a,b){var c=function(b){b=Number(b);return I(a)?(this.data=b,this):b};a.M=a.b(c,!0);a.setProperty(b,"Number",a.M);c=["MAX_VALUE","MIN_VALUE","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY"];for(var d=0;d>>0;return b===Number(a)?b:NaN}function O(a){var b=a>>>0;return String(b)===String(a)&&4294967295!==b?b:NaN}function D(a){this.ba=Object.create(null);this.fa=Object.create(null);this.a=Object.create(null);this.ea=a}g=D.prototype;g.ea=null;g.o=!0;g.B="Object"; -g.data=null; -g.toString=function(){if("Array"===this.B){var a=A;a.push(this);try{var b=[];for(var c=0;cb.charCodeAt(0)&&J(this,a,this.s)){var c=O(b);if(!isNaN(c)&&c>=":d>>=e;break;case ">>>=":d>>>=e;break;case "&=":d&=e;break;case "^=":d^=e;break;case "|=":d|=e;break;default:throw SyntaxError("Unknown assignment expression: "+c.operator);}if(c=W(this,b.la,d))return b.N=d,Z(this,c,b.la,d);a.pop();a[a.length-1].value=d}}; -h.prototype.stepBinaryExpression=function(a,b,c){if(!b.P)return b.P=!0,new p(c.left,b.scope);if(!b.ja)return b.ja=!0,b.S=b.value,new p(c.right,b.scope);a.pop();var d=b.S;b=b.value;switch(c.operator){case "==":c=d==b;break;case "!=":c=d!=b;break;case "===":c=d===b;break;case "!==":c=d!==b;break;case ">":c=d>b;break;case ">=":c=d>=b;break;case "<":c=d>":c=d>>b;break;case ">>>":c=d>>>b;break;case "in":b&&b.o||F(this,this.f,"'in' expects an object, not '"+b+"'");c=Q(this,b,d);break;case "instanceof":J(this,b,this.v)||F(this,this.f,"Right-hand side of instanceof is not an object");c=d.o?J(this,d,b):!1;break;default:throw SyntaxError("Unknown binary operator: "+c.operator);}a[a.length-1].value=c}; -h.prototype.stepBlockStatement=function(a,b,c){var d=b.i||0;if(c=c.body[d])return b.i=d+1,new p(c,b.scope);a.pop()};h.prototype.stepBreakStatement=function(a,b,c){a.pop();var d=null;for(c.label&&(d=c.label.name);b&&"CallExpression"!==b.node.type&&"NewExpression"!==b.node.type;){if(d){if(b.labels&&-1!==b.labels.indexOf(d))return}else if(b.ka||b.Ya)return;b=a.pop()}throw SyntaxError("Illegal break statement");}; -h.prototype.stepCallExpression=function(a,b,c){var d;if(!b.aa){b.aa=1;var e=new p(c.callee,b.scope);e.Z=!0;return e}if(1===b.aa){b.aa=2;e=b.value;if(Array.isArray(e)){if(b.R=V(this,e),e[0]!==z&&(b.H=e[0]),(e=b.R)&&"object"===typeof e&&e.J)return e.J=!1,b.aa=1,Y(this,e,b.value)}else b.R=e;b.u=[];b.i=0}e=b.R;if(!b.xa){0!==b.i&&b.u.push(b.value);if(c.arguments[b.i])return new p(c.arguments[b.i++],b.scope);"NewExpression"===c.type?(e.Ka&&F(this,this.f,e+" is not a constructor"),b.H=this.$(e),b.isConstructor= -!0):void 0===b.H&&(b.H=b.scope.C?void 0:this.global);b.xa=!0}if(b.ya)a.pop(),a[a.length-1].value=b.isConstructor&&"object"!==typeof b.value?b.H:b.value;else{b.ya=!0;e&&e.o||F(this,this.f,e+" is not a function");if(a=e.node){c=l(this,a.body,e.U);for(d=0;dd?b.u[d]:void 0);var f=this.c(this.K);for(d=0;dd)throw SyntaxError("Illegal return statement");b=a[d]}b.value=c};h.prototype.stepSequenceExpression=function(a,b,c){var d=b.i||0;if(c=c.expressions[d])return b.i=d+1,new p(c,b.scope);a.pop();a[a.length-1].value=b.value}; -h.prototype.stepSwitchStatement=function(a,b,c){if(!b.O)return b.O=1,new p(c.discriminant,b.scope);1===b.O&&(b.O=2,b.Za=b.value);for(;;){var d=b.za||0,e=c.cases[d];if(b.na||!e||e.test)if(e||b.na||!b.Ga)if(e){if(!b.na&&!a.Oa&&e.test)return a.Oa=!0,new p(e.test,b.scope);if(b.na||b.value===b.Za){b.na=!0;var f=b.i||0;if(e.consequent[f])return b.Ya=!0,b.i=f+1,new p(e.consequent[f],b.scope)}a.Oa=!1;b.i=0;b.za=d+1}else{a.pop();break}else b.na=!0,b.za=b.Ga;else b.Ga=d,b.za=d+1}}; -h.prototype.stepThisExpression=function(a){a.pop();a[a.length-1].value=T(this,"this")};h.prototype.stepThrowStatement=function(a,b,c){if(b.L)F(this,b.value);else return b.L=!0,new p(c.argument,b.scope)};h.prototype.stepTryStatement=function(a,b,c){if(!b.Sa)return b.Sa=!0,new p(c.block,b.scope);if(b.V&&!b.Va&&c.handler)return b.Va=!0,a=new p(c.handler,b.scope),a.V=b.V,b.V=null,a;if(!b.Ua&&c.finalizer)return b.Ua=!0,new p(c.finalizer,b.scope);b.V?X(this,b.V):a.pop()}; -h.prototype.stepUnaryExpression=function(a,b,c){if(!b.L)return b.L=!0,a=new p(c.argument,b.scope),a.Z="delete"===c.operator,a;a.pop();var d=b.value;if("-"===c.operator)d=-d;else if("+"===c.operator)d=+d;else if("!"===c.operator)d=!d;else if("~"===c.operator)d=~d;else if("delete"===c.operator){c=!0;if(Array.isArray(d)){var e=d[0];e===z&&(e=b.scope);d=String(d[1]);try{delete e.a[d]}catch(f){b.scope.C?F(this,this.f,"Cannot delete property '"+d+"' of '"+e+"'"):c=!1}}d=c}else if("typeof"===c.operator)d= -d&&"Function"===d.B?"function":typeof d;else if("void"===c.operator)d=void 0;else throw SyntaxError("Unknown unary operator: "+c.operator);a[a.length-1].value=d}; -h.prototype.stepUpdateExpression=function(a,b,c){if(!b.P)return b.P=!0,a=new p(c.argument,b.scope),a.Z=!0,a;b.ma||(b.ma=b.value);b.ha&&(b.S=b.value);if(!b.ha){var d=V(this,b.ma);if((b.S=d)&&"object"===typeof d&&d.J)return d.J=!1,b.ha=!0,Y(this,d,b.ma)}if(b.N)a.pop(),a[a.length-1].value=b.N;else{d=Number(b.S);if("++"===c.operator)var e=d+1;else if("--"===c.operator)e=d-1;else throw SyntaxError("Unknown update expression: "+c.operator);c=c.prefix?e:d;if(d=W(this,b.ma,e))return b.N=c,Z(this,d,b.ma,e); -a.pop();a[a.length-1].value=c}};h.prototype.stepVariableDeclaration=function(a,b,c){c=c.declarations;var d=b.i||0,e=c[d];b.Ma&&e&&(U(this,e.id.name,b.value),b.Ma=!1,e=c[++d]);for(;e;){if(e.init)return b.i=d,b.Ma=!0,new p(e.init,b.scope);e=c[++d]}a.pop()};h.prototype.stepWithStatement=function(a,b,c){if(b.ia)if(b.Ta)a.pop();else return b.Ta=!0,a=R(this,b.scope,b.value),new p(c.body,a);else return b.ia=!0,new p(c.object,b.scope)};h.prototype.stepWhileStatement=h.prototype.stepDoWhileStatement; -this.Interpreter=h;h.prototype.step=h.prototype.step;h.prototype.run=h.prototype.Na;h.prototype.appendCode=h.prototype.Qa;h.prototype.createObject=h.prototype.$;h.prototype.createObjectProto=h.prototype.c;h.prototype.createAsyncFunction=h.prototype.Ra;h.prototype.createNativeFunction=h.prototype.b;h.prototype.getProperty=h.prototype.m;h.prototype.setProperty=h.prototype.setProperty;h.prototype.nativeToPseudo=h.prototype.I;h.prototype.pseudoToNative=h.prototype.w;h.prototype.createPrimitive=function(a){return a}; diff --git a/demos/async.html b/demos/async.html index e70fc8a4..b82699f4 100644 --- a/demos/async.html +++ b/demos/async.html @@ -4,8 +4,8 @@ JS-Interpreter Async Demo - - + + - + + - + + - + +