Reviewers: Rico,
Description:
Add defaults on some internal objects' prototypes.
Please review this at http://codereview.chromium.org/7703005/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/messages.js
M src/string.js
M src/v8natives.js
Index: src/messages.js
diff --git a/src/messages.js b/src/messages.js
index
a6305072b73b080da8403ff2477dda71d8d69555..071851a80efa79dc903ce6d0bfc58bb3ebd0a4e5
100644
--- a/src/messages.js
+++ b/src/messages.js
@@ -1,4 +1,4 @@
-// Copyright 2006-2008 the V8 project authors. All rights reserved.
+// Copyright 2011 the V8 project authors. All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
@@ -57,7 +57,7 @@ function FormatString(format, message) {
for (var i = 0; i < format.length; i++) {
var str = format[i];
for (arg_num = 0; arg_num < kReplacementMarkers.length; arg_num++) {
- if (format[i] !== kReplacementMarkers[arg_num]) continue;
+ if (str !== kReplacementMarkers[arg_num]) continue;
try {
str = ToDetailString(args[arg_num]);
} catch (e) {
@@ -100,7 +100,8 @@ function ToStringCheckErrorObject(obj) {
function ToDetailString(obj) {
- if (obj != null && IS_OBJECT(obj) && obj.toString ===
$Object.prototype.toString) {
+ if (obj != null && IS_OBJECT(obj) &&
+ obj.toString === $Object.prototype.toString) {
var constructor = obj.constructor;
if (!constructor) return ToStringCheckErrorObject(obj);
var constructorName = constructor.name;
@@ -560,6 +561,13 @@ function SourceLocation(script, position, line,
column, start, end) {
this.end = end;
}
+SourceLocation.prototype.script = null;
+SourceLocation.prototype.position = null;
+SourceLocation.prototype.line = null;
+SourceLocation.prototype.column = null;
+SourceLocation.prototype.start = null;
+SourceLocation.prototype.end = null;
+
const kLineLengthLimit = 78;
@@ -649,6 +657,12 @@ function SourceSlice(script, from_line, to_line,
from_position, to_position) {
this.to_position = to_position;
}
+SourceSlice.prototype.script = null;
+SourceSlice.prototype.from_line = null;
+SourceSlice.prototype.to_line = null;
+SourceSlice.prototype.from_position = null;
+SourceSlice.prototype.to_position = null;
+
/**
* Get the source text for a SourceSlice
@@ -716,23 +730,30 @@ function CallSite(receiver, fun, pos) {
this.pos = pos;
}
+CallSite.prototype.receiver = null;
+CallSite.prototype.fun = null;
+CallSite.prototype.pos = null;
+
CallSite.prototype.getThis = function () {
return this.receiver;
};
CallSite.prototype.getTypeName = function () {
var constructor = this.receiver.constructor;
- if (!constructor)
+ if (!constructor) {
return %_CallFunction(this.receiver, ObjectToString);
+ }
var constructorName = constructor.name;
- if (!constructorName)
+ if (!constructorName) {
return %_CallFunction(this.receiver, ObjectToString);
+ }
return constructorName;
};
CallSite.prototype.isToplevel = function () {
- if (this.receiver == null)
+ if (this.receiver == null) {
return true;
+ }
return IS_GLOBAL(this.receiver);
};
@@ -765,8 +786,9 @@ CallSite.prototype.getFunctionName = function () {
}
// Maybe this is an evaluation?
var script = %FunctionGetScript(this.fun);
- if (script && script.compilation_type == COMPILATION_TYPE_EVAL)
+ if (script && script.compilation_type == COMPILATION_TYPE_EVAL) {
return "eval";
+ }
return null;
};
@@ -788,13 +810,15 @@ CallSite.prototype.getMethodName = function () {
this.receiver.__lookupSetter__(prop) === this.fun ||
(!this.receiver.__lookupGetter__(prop) && this.receiver[prop] ===
this.fun)) {
// If we find more than one match bail out to avoid confusion.
- if (name)
+ if (name) {
return null;
+ }
name = prop;
}
}
- if (name)
+ if (name) {
return name;
+ }
return null;
};
@@ -804,8 +828,9 @@ CallSite.prototype.getFileName = function () {
};
CallSite.prototype.getLineNumber = function () {
- if (this.pos == -1)
+ if (this.pos == -1) {
return null;
+ }
var script = %FunctionGetScript(this.fun);
var location = null;
if (script) {
@@ -815,8 +840,9 @@ CallSite.prototype.getLineNumber = function () {
};
CallSite.prototype.getColumnNumber = function () {
- if (this.pos == -1)
+ if (this.pos == -1) {
return null;
+ }
var script = %FunctionGetScript(this.fun);
var location = null;
if (script) {
@@ -836,15 +862,17 @@ CallSite.prototype.getPosition = function () {
CallSite.prototype.isConstructor = function () {
var constructor = this.receiver ? this.receiver.constructor : null;
- if (!constructor)
+ if (!constructor) {
return false;
+ }
return this.fun === constructor;
};
function FormatEvalOrigin(script) {
var sourceURL = script.nameOrSourceURL();
- if (sourceURL)
+ if (sourceURL) {
return sourceURL;
+ }
var eval_origin = "eval at ";
if (script.eval_from_function_name) {
@@ -1042,8 +1070,9 @@ function DefineError(f) {
function captureStackTrace(obj, cons_opt) {
var stackTraceLimit = $Error.stackTraceLimit;
if (!stackTraceLimit || !IS_NUMBER(stackTraceLimit)) return;
- if (stackTraceLimit < 0 || stackTraceLimit > 10000)
+ if (stackTraceLimit < 0 || stackTraceLimit > 10000) {
stackTraceLimit = 10000;
+ }
var raw_stack = %CollectStackTrace(cons_opt
? cons_opt
: captureStackTrace, stackTraceLimit);
@@ -1117,8 +1146,10 @@ function errorToString() {
} catch(e) {
// If this error message was encountered already return the empty
// string for it instead of recursively formatting it.
- if (isCyclicErrorMarker(e)) return '';
- else throw e;
+ if (isCyclicErrorMarker(e)) {
+ return '';
+ }
+ throw e;
}
}
Index: src/string.js
diff --git a/src/string.js b/src/string.js
index
50531822be15f65ec9718c208de357252274c4cb..ff8763352a2bc4f07ab4ef41c182b96f37d38931
100644
--- a/src/string.js
+++ b/src/string.js
@@ -914,6 +914,9 @@ function ReplaceResultBuilder(str) {
this.special_string = str;
}
+ReplaceResultBuilder.prototype.elements = null;
+ReplaceResultBuilder.prototype.special_string = null;
+
ReplaceResultBuilder.prototype.add = function(str) {
str = TO_STRING_INLINE(str);
Index: src/v8natives.js
diff --git a/src/v8natives.js b/src/v8natives.js
index
9d57a7944af0a43ff13f2d9f7e07a779259bf174..f1358a849a01584e09078f866363a8d7f2d6f7d5
100644
--- a/src/v8natives.js
+++ b/src/v8natives.js
@@ -461,6 +461,20 @@ function PropertyDescriptor() {
this.hasSetter_ = false;
}
+PropertyDescriptor.prototype.value_ = null;
+PropertyDescriptor.prototype.hasValue_ = null;
+PropertyDescriptor.prototype.writable_ = null;
+PropertyDescriptor.prototype.hasWritable_ = null;
+PropertyDescriptor.prototype.enumerable_ = null;
+PropertyDescriptor.prototype.hasEnumerable_ = null;
+PropertyDescriptor.prototype.configurable_ = null;
+PropertyDescriptor.prototype.hasConfigurable_ = null;
+PropertyDescriptor.prototype.get_ = null;
+PropertyDescriptor.prototype.hasGetter_ = null;
+PropertyDescriptor.prototype.set_ = null;
+PropertyDescriptor.prototype.hasSetter_ = null;
+
+
PropertyDescriptor.prototype.__proto__ = null;
PropertyDescriptor.prototype.toString = function() {
return "[object PropertyDescriptor]";
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev