Index: src/messages.js |
diff --git a/src/messages.js b/src/messages.js |
index cc87c20c4fe192dedda6ffb98165108a31f0ba3d..8d79dac43225931eb1800bde5f2b54feead2f92b 100644 |
--- a/src/messages.js |
+++ b/src/messages.js |
@@ -27,9 +27,6 @@ var MakeReferenceError; |
var MakeSyntaxError; |
var MakeTypeError; |
var MakeURIError; |
-var MakeReferenceErrorEmbedded; |
-var MakeSyntaxErrorEmbedded; |
-var MakeTypeErrorEmbedded; |
(function(global, utils) { |
@@ -40,12 +37,17 @@ var MakeTypeErrorEmbedded; |
var GlobalObject = global.Object; |
var InternalArray = utils.InternalArray; |
+var ObjectDefineProperty = utils.ObjectDefineProperty; |
+var ArrayJoin; |
+var ObjectToString; |
var StringCharAt; |
var StringIndexOf; |
var StringSubstring; |
utils.Import(function(from) { |
+ ArrayJoin = from.ArrayJoin; |
+ ObjectToString = from.ObjectToString; |
StringCharAt = from.StringCharAt; |
StringIndexOf = from.StringIndexOf; |
StringSubstring = from.StringSubstring; |
@@ -85,7 +87,7 @@ function NoSideEffectToString(obj) { |
} |
if (IS_SYMBOL(obj)) return %_CallFunction(obj, $symbolToString); |
if (IS_OBJECT(obj) |
- && %GetDataProperty(obj, "toString") === $objectToString) { |
+ && %GetDataProperty(obj, "toString") === ObjectToString) { |
var constructor = %GetDataProperty(obj, "constructor"); |
if (typeof constructor == "function") { |
var constructorName = constructor.name; |
@@ -137,7 +139,7 @@ function ToStringCheckErrorObject(obj) { |
function ToDetailString(obj) { |
- if (obj != null && IS_OBJECT(obj) && obj.toString === $objectToString) { |
+ if (obj != null && IS_OBJECT(obj) && obj.toString === ObjectToString) { |
var constructor = obj.constructor; |
if (typeof constructor == "function") { |
var constructorName = constructor.name; |
@@ -409,7 +411,7 @@ function ScriptNameOrSourceURL() { |
} |
-$setUpLockedPrototype(Script, [ |
+utils.SetUpLockedPrototype(Script, [ |
"source", |
"name", |
"source_url", |
@@ -473,7 +475,7 @@ function SourceLocationSourceText() { |
} |
-$setUpLockedPrototype(SourceLocation, |
+utils.SetUpLockedPrototype(SourceLocation, |
["script", "position", "line", "column", "start", "end"], |
["sourceText", SourceLocationSourceText] |
); |
@@ -517,7 +519,7 @@ function SourceSliceSourceText() { |
StringSubstring); |
} |
-$setUpLockedPrototype(SourceSlice, |
+utils.SetUpLockedPrototype(SourceSlice, |
["script", "from_line", "to_line", "from_position", "to_position"], |
["sourceText", SourceSliceSourceText] |
); |
@@ -715,7 +717,7 @@ function CallSiteToString() { |
return line; |
} |
-$setUpLockedPrototype(CallSite, ["receiver", "fun", "pos"], [ |
+utils.SetUpLockedPrototype(CallSite, ["receiver", "fun", "pos"], [ |
"getThis", CallSiteGetThis, |
"getTypeName", CallSiteGetTypeName, |
"isToplevel", CallSiteIsToplevel, |
@@ -842,7 +844,7 @@ function FormatStackTrace(obj, raw_stack) { |
} |
lines.push(" at " + line); |
} |
- return %_CallFunction(lines, "\n", $arrayJoin); |
+ return %_CallFunction(lines, "\n", ArrayJoin); |
} |
@@ -902,13 +904,7 @@ var StackTraceSetter = function(v) { |
// Use a dummy function since we do not actually want to capture a stack trace |
// when constructing the initial Error prototytpes. |
-var captureStackTrace = function captureStackTrace(obj, cons_opt) { |
- // Define accessors first, as this may fail and throw. |
- $objectDefineProperty(obj, 'stack', { get: StackTraceGetter, |
- set: StackTraceSetter, |
- configurable: true }); |
- %CollectStackTrace(obj, cons_opt ? cons_opt : captureStackTrace); |
-} |
+var captureStackTrace = function() {}; |
// Define special error type constructors. |
@@ -963,9 +959,6 @@ GlobalSyntaxError = DefineError(global, function SyntaxError() { }); |
GlobalTypeError = DefineError(global, function TypeError() { }); |
GlobalURIError = DefineError(global, function URIError() { }); |
- |
-GlobalError.captureStackTrace = captureStackTrace; |
- |
%AddNamedProperty(GlobalError.prototype, 'message', '', DONT_ENUM); |
// Global list of error objects visited during ErrorToString. This is |
@@ -1030,8 +1023,8 @@ function ErrorToString() { |
} |
} |
-$installFunctions(GlobalError.prototype, DONT_ENUM, |
- ['toString', ErrorToString]); |
+utils.InstallFunctions(GlobalError.prototype, DONT_ENUM, |
+ ['toString', ErrorToString]); |
$errorToString = ErrorToString; |
$getStackTraceLine = GetStackTraceLine; |
@@ -1077,10 +1070,22 @@ MakeURIError = function() { |
return MakeGenericError(GlobalURIError, kURIMalformed); |
} |
-//Boilerplate for exceptions for stack overflows. Used from |
-//Isolate::StackOverflow(). |
+// Boilerplate for exceptions for stack overflows. Used from |
+// Isolate::StackOverflow(). |
$stackOverflowBoilerplate = MakeRangeError(kStackOverflow); |
%DefineAccessorPropertyUnchecked($stackOverflowBoilerplate, 'stack', |
- StackTraceGetter, StackTraceSetter, DONT_ENUM); |
+ StackTraceGetter, StackTraceSetter, |
+ DONT_ENUM); |
-}) |
+// Define actual captureStackTrace function after everything has been set up. |
+captureStackTrace = function captureStackTrace(obj, cons_opt) { |
+ // Define accessors first, as this may fail and throw. |
+ ObjectDefineProperty(obj, 'stack', { get: StackTraceGetter, |
+ set: StackTraceSetter, |
+ configurable: true }); |
+ %CollectStackTrace(obj, cons_opt ? cons_opt : captureStackTrace); |
+}; |
+ |
+GlobalError.captureStackTrace = captureStackTrace; |
+ |
+}); |