| Index: src/messages.js
|
| diff --git a/src/messages.js b/src/messages.js
|
| index 32766a89fe4cfa0a48b998145b3dd00efd8d1634..f0d241aebc8031a3679f09e5369fbc0d5ace52c9 100644
|
| --- a/src/messages.js
|
| +++ b/src/messages.js
|
| @@ -5,8 +5,6 @@
|
| // -------------------------------------------------------------------
|
|
|
| var $errorToString;
|
| -var $internalErrorSymbol;
|
| -var $stackTraceSymbol;
|
| var MakeError;
|
| var MakeEvalError;
|
| var MakeRangeError;
|
| @@ -26,15 +24,26 @@ var ArrayJoin;
|
| var Bool16x8ToString;
|
| var Bool32x4ToString;
|
| var Bool8x16ToString;
|
| +var callSiteReceiverSymbol =
|
| + utils.GetPrivateSymbol("call_site_receiver_symbol");
|
| +var callSiteFunctionSymbol =
|
| + utils.GetPrivateSymbol("call_site_function_symbol");
|
| +var callSitePositionSymbol =
|
| + utils.GetPrivateSymbol("call_site_position_symbol");
|
| +var callSiteStrictSymbol = utils.GetPrivateSymbol("call_site_strict_symbol");
|
| var Float32x4ToString;
|
| +var formattedStackTraceSymbol =
|
| + utils.GetPrivateSymbol("formatted_stack_trace_symbol");
|
| var FunctionSourceString
|
| var GlobalObject = global.Object;
|
| var Int16x8ToString;
|
| var Int32x4ToString;
|
| var Int8x16ToString;
|
| var InternalArray = utils.InternalArray;
|
| +var internalErrorSymbol = utils.GetPrivateSymbol("internal_error_symbol");
|
| var ObjectDefineProperty;
|
| var ObjectToString;
|
| +var stackTraceSymbol = utils.GetPrivateSymbol("stack_trace_symbol");
|
| var StringCharAt;
|
| var StringIndexOf;
|
| var StringSubstring;
|
| @@ -173,7 +182,7 @@ function ToDetailString(obj) {
|
|
|
| function MakeGenericError(constructor, type, arg0, arg1, arg2) {
|
| var error = new constructor(FormatMessage(type, arg0, arg1, arg2));
|
| - error[$internalErrorSymbol] = true;
|
| + error[internalErrorSymbol] = true;
|
| return error;
|
| }
|
|
|
| @@ -574,112 +583,77 @@ function GetStackTraceLine(recv, fun, pos, isGlobal) {
|
| // ----------------------------------------------------------------------------
|
| // Error implementation
|
|
|
| -var CallSiteReceiverKey = NEW_PRIVATE("CallSite#receiver");
|
| -var CallSiteFunctionKey = NEW_PRIVATE("CallSite#function");
|
| -var CallSitePositionKey = NEW_PRIVATE("CallSite#position");
|
| -var CallSiteStrictModeKey = NEW_PRIVATE("CallSite#strict_mode");
|
| -
|
| function CallSite(receiver, fun, pos, strict_mode) {
|
| - SET_PRIVATE(this, CallSiteReceiverKey, receiver);
|
| - SET_PRIVATE(this, CallSiteFunctionKey, fun);
|
| - SET_PRIVATE(this, CallSitePositionKey, pos);
|
| - SET_PRIVATE(this, CallSiteStrictModeKey, strict_mode);
|
| + SET_PRIVATE(this, callSiteReceiverSymbol, receiver);
|
| + SET_PRIVATE(this, callSiteFunctionSymbol, fun);
|
| + SET_PRIVATE(this, callSitePositionSymbol, pos);
|
| + SET_PRIVATE(this, callSiteStrictSymbol, strict_mode);
|
| }
|
|
|
| function CallSiteGetThis() {
|
| - return GET_PRIVATE(this, CallSiteStrictModeKey)
|
| - ? UNDEFINED : GET_PRIVATE(this, CallSiteReceiverKey);
|
| + return GET_PRIVATE(this, callSiteStrictSymbol)
|
| + ? UNDEFINED : GET_PRIVATE(this, callSiteReceiverSymbol);
|
| }
|
|
|
| function CallSiteGetFunction() {
|
| - return GET_PRIVATE(this, CallSiteStrictModeKey)
|
| - ? UNDEFINED : GET_PRIVATE(this, CallSiteFunctionKey);
|
| + return GET_PRIVATE(this, callSiteStrictSymbol)
|
| + ? UNDEFINED : GET_PRIVATE(this, callSiteFunctionSymbol);
|
| }
|
|
|
| function CallSiteGetPosition() {
|
| - return GET_PRIVATE(this, CallSitePositionKey);
|
| + return GET_PRIVATE(this, callSitePositionSymbol);
|
| }
|
|
|
| function CallSiteGetTypeName() {
|
| - return GetTypeName(GET_PRIVATE(this, CallSiteReceiverKey), false);
|
| + return GetTypeName(GET_PRIVATE(this, callSiteReceiverSymbol), false);
|
| }
|
|
|
| function CallSiteIsToplevel() {
|
| - var receiver = GET_PRIVATE(this, CallSiteReceiverKey);
|
| - var fun = GET_PRIVATE(this, CallSiteFunctionKey);
|
| - var pos = GET_PRIVATE(this, CallSitePositionKey);
|
| - return %CallSiteIsToplevelRT(receiver, fun, pos);
|
| + return %CallSiteIsToplevelRT(this);
|
| }
|
|
|
| function CallSiteIsEval() {
|
| - var receiver = GET_PRIVATE(this, CallSiteReceiverKey);
|
| - var fun = GET_PRIVATE(this, CallSiteFunctionKey);
|
| - var pos = GET_PRIVATE(this, CallSitePositionKey);
|
| - return %CallSiteIsEvalRT(receiver, fun, pos);
|
| + return %CallSiteIsEvalRT(this);
|
| }
|
|
|
| function CallSiteGetEvalOrigin() {
|
| - var script = %FunctionGetScript(GET_PRIVATE(this, CallSiteFunctionKey));
|
| + var script = %FunctionGetScript(GET_PRIVATE(this, callSiteFunctionSymbol));
|
| return FormatEvalOrigin(script);
|
| }
|
|
|
| function CallSiteGetScriptNameOrSourceURL() {
|
| - var receiver = GET_PRIVATE(this, CallSiteReceiverKey);
|
| - var fun = GET_PRIVATE(this, CallSiteFunctionKey);
|
| - var pos = GET_PRIVATE(this, CallSitePositionKey);
|
| - return %CallSiteGetScriptNameOrSourceUrlRT(receiver, fun, pos);
|
| + return %CallSiteGetScriptNameOrSourceUrlRT(this);
|
| }
|
|
|
| function CallSiteGetFunctionName() {
|
| // See if the function knows its own name
|
| - var receiver = GET_PRIVATE(this, CallSiteReceiverKey);
|
| - var fun = GET_PRIVATE(this, CallSiteFunctionKey);
|
| - var pos = GET_PRIVATE(this, CallSitePositionKey);
|
| - return %CallSiteGetFunctionNameRT(receiver, fun, pos);
|
| + return %CallSiteGetFunctionNameRT(this);
|
| }
|
|
|
| function CallSiteGetMethodName() {
|
| // See if we can find a unique property on the receiver that holds
|
| // this function.
|
| - var receiver = GET_PRIVATE(this, CallSiteReceiverKey);
|
| - var fun = GET_PRIVATE(this, CallSiteFunctionKey);
|
| - var pos = GET_PRIVATE(this, CallSitePositionKey);
|
| - return %CallSiteGetMethodNameRT(receiver, fun, pos);
|
| + return %CallSiteGetMethodNameRT(this);
|
| }
|
|
|
| function CallSiteGetFileName() {
|
| - var receiver = GET_PRIVATE(this, CallSiteReceiverKey);
|
| - var fun = GET_PRIVATE(this, CallSiteFunctionKey);
|
| - var pos = GET_PRIVATE(this, CallSitePositionKey);
|
| - return %CallSiteGetFileNameRT(receiver, fun, pos);
|
| + return %CallSiteGetFileNameRT(this);
|
| }
|
|
|
| function CallSiteGetLineNumber() {
|
| - var receiver = GET_PRIVATE(this, CallSiteReceiverKey);
|
| - var fun = GET_PRIVATE(this, CallSiteFunctionKey);
|
| - var pos = GET_PRIVATE(this, CallSitePositionKey);
|
| - return %CallSiteGetLineNumberRT(receiver, fun, pos);
|
| + return %CallSiteGetLineNumberRT(this);
|
| }
|
|
|
| function CallSiteGetColumnNumber() {
|
| - var receiver = GET_PRIVATE(this, CallSiteReceiverKey);
|
| - var fun = GET_PRIVATE(this, CallSiteFunctionKey);
|
| - var pos = GET_PRIVATE(this, CallSitePositionKey);
|
| - return %CallSiteGetColumnNumberRT(receiver, fun, pos);
|
| + return %CallSiteGetColumnNumberRT(this);
|
| }
|
|
|
| function CallSiteIsNative() {
|
| - var receiver = GET_PRIVATE(this, CallSiteReceiverKey);
|
| - var fun = GET_PRIVATE(this, CallSiteFunctionKey);
|
| - var pos = GET_PRIVATE(this, CallSitePositionKey);
|
| - return %CallSiteIsNativeRT(receiver, fun, pos);
|
| + return %CallSiteIsNativeRT(this);
|
| }
|
|
|
| function CallSiteIsConstructor() {
|
| - var receiver = GET_PRIVATE(this, CallSiteReceiverKey);
|
| - var fun = GET_PRIVATE(this, CallSiteFunctionKey);
|
| - var pos = GET_PRIVATE(this, CallSitePositionKey);
|
| - return %CallSiteIsConstructorRT(receiver, fun, pos);
|
| + return %CallSiteIsConstructorRT(this);
|
| }
|
|
|
| function CallSiteToString() {
|
| @@ -718,7 +692,7 @@ function CallSiteToString() {
|
| var isConstructor = this.isConstructor();
|
| var isMethodCall = !(this.isToplevel() || isConstructor);
|
| if (isMethodCall) {
|
| - var typeName = GetTypeName(GET_PRIVATE(this, CallSiteReceiverKey), true);
|
| + var typeName = GetTypeName(GET_PRIVATE(this, callSiteReceiverSymbol), true);
|
| var methodName = this.getMethodName();
|
| if (functionName) {
|
| if (typeName &&
|
| @@ -894,8 +868,6 @@ function GetTypeName(receiver, requireConstructor) {
|
| return constructorName;
|
| }
|
|
|
| -var formatted_stack_trace_symbol = NEW_PRIVATE("formatted stack trace");
|
| -
|
|
|
| // Format the stack trace if not yet done, and return it.
|
| // Cache the formatted stack trace on the holder.
|
| @@ -904,10 +876,10 @@ var StackTraceGetter = function() {
|
| var holder = this;
|
| while (holder) {
|
| var formatted_stack_trace =
|
| - GET_PRIVATE(holder, formatted_stack_trace_symbol);
|
| + GET_PRIVATE(holder, formattedStackTraceSymbol);
|
| if (IS_UNDEFINED(formatted_stack_trace)) {
|
| // No formatted stack trace available.
|
| - var stack_trace = GET_PRIVATE(holder, $stackTraceSymbol);
|
| + var stack_trace = GET_PRIVATE(holder, stackTraceSymbol);
|
| if (IS_UNDEFINED(stack_trace)) {
|
| // Neither formatted nor structured stack trace available.
|
| // Look further up the prototype chain.
|
| @@ -915,8 +887,8 @@ var StackTraceGetter = function() {
|
| continue;
|
| }
|
| formatted_stack_trace = FormatStackTrace(holder, stack_trace);
|
| - SET_PRIVATE(holder, $stackTraceSymbol, UNDEFINED);
|
| - SET_PRIVATE(holder, formatted_stack_trace_symbol, formatted_stack_trace);
|
| + SET_PRIVATE(holder, stackTraceSymbol, UNDEFINED);
|
| + SET_PRIVATE(holder, formattedStackTraceSymbol, formatted_stack_trace);
|
| }
|
| return formatted_stack_trace;
|
| }
|
| @@ -927,9 +899,9 @@ var StackTraceGetter = function() {
|
| // If the receiver equals the holder, set the formatted stack trace that the
|
| // getter returns.
|
| var StackTraceSetter = function(v) {
|
| - if (HAS_PRIVATE(this, $stackTraceSymbol)) {
|
| - SET_PRIVATE(this, $stackTraceSymbol, UNDEFINED);
|
| - SET_PRIVATE(this, formatted_stack_trace_symbol, v);
|
| + if (HAS_PRIVATE(this, stackTraceSymbol)) {
|
| + SET_PRIVATE(this, stackTraceSymbol, UNDEFINED);
|
| + SET_PRIVATE(this, formattedStackTraceSymbol, v);
|
| }
|
| };
|
|
|
|
|