Revision: 6554
Author: [email protected]
Date: Tue Feb 1 04:52:48 2011
Log: Merge bleeding_edge revisions 6524 and 6552 to 3.0 branch.
Review URL: http://codereview.chromium.org/6347066
http://code.google.com/p/v8/source/detail?r=6554
Modified:
/branches/3.0/src/array.js
/branches/3.0/src/date.js
/branches/3.0/src/json.js
/branches/3.0/src/messages.js
/branches/3.0/src/mirror-debugger.js
/branches/3.0/src/regexp.js
/branches/3.0/src/version.cc
/branches/3.0/test/cctest/test-api.cc
/branches/3.0/test/mjsunit/debug-backtrace-text.js
/branches/3.0/test/mjsunit/mirror-error.js
=======================================
--- /branches/3.0/src/array.js Mon Jan 17 04:24:25 2011
+++ /branches/3.0/src/array.js Tue Feb 1 04:52:48 2011
@@ -171,8 +171,9 @@
}
return %StringBuilderConcat(elements, length2, '');
} finally {
- // Make sure to pop the visited array no matter what happens.
- if (is_array) visited_arrays.pop();
+ // Make sure to remove the last element of the visited array no
+ // matter what happens.
+ if (is_array) visited_arrays.length = visited_arrays.length - 1;
}
}
=======================================
--- /branches/3.0/src/date.js Mon Jan 3 02:16:46 2011
+++ /branches/3.0/src/date.js Tue Feb 1 04:52:48 2011
@@ -605,7 +605,7 @@
// ECMA 262 - 15.9.5.5
function DateToLocaleString() {
- return DateToString.call(this);
+ return %_CallFunction(this, DateToString);
}
@@ -973,7 +973,7 @@
// do that either. Instead, we create a new function whose name
// property will return toGMTString.
function DateToGMTString() {
- return DateToUTCString.call(this);
+ return %_CallFunction(this, DateToUTCString);
}
=======================================
--- /branches/3.0/src/json.js Mon Jan 17 04:24:25 2011
+++ /branches/3.0/src/json.js Tue Feb 1 04:52:48 2011
@@ -38,7 +38,7 @@
}
} else {
for (var p in val) {
- if (ObjectHasOwnProperty.call(val, p)) {
+ if (%_CallFunction(val, p, ObjectHasOwnProperty)) {
var newElement = Revive(val, p, reviver);
if (IS_UNDEFINED(newElement)) {
delete val[p];
@@ -101,7 +101,7 @@
if (IS_ARRAY(replacer)) {
var length = replacer.length;
for (var i = 0; i < length; i++) {
- if (ObjectHasOwnProperty.call(replacer, i)) {
+ if (%_CallFunction(replacer, i, ObjectHasOwnProperty)) {
var p = replacer[i];
var strP = JSONSerialize(p, value, replacer, stack, indent, gap);
if (!IS_UNDEFINED(strP)) {
@@ -114,7 +114,7 @@
}
} else {
for (var p in value) {
- if (ObjectHasOwnProperty.call(value, p)) {
+ if (%_CallFunction(value, p, ObjectHasOwnProperty)) {
var strP = JSONSerialize(p, value, replacer, stack, indent, gap);
if (!IS_UNDEFINED(strP)) {
var member = %QuoteJSONString(p) + ":";
=======================================
--- /branches/3.0/src/messages.js Fri Jan 28 00:04:38 2011
+++ /branches/3.0/src/messages.js Tue Feb 1 04:52:48 2011
@@ -50,44 +50,25 @@
// message on access.
var kAddMessageAccessorsMarker = { };
-
-function GetInstanceName(cons) {
- if (cons.length == 0) {
- return "";
- }
- var first = %StringToLowerCase(StringCharAt.call(cons, 0));
- if (kVowelSounds === 0) {
- kVowelSounds = {a: true, e: true, i: true, o: true, u: true, y: true};
- kCapitalVowelSounds = {a: true, e: true, i: true, o: true, u: true, h:
true,
- f: true, l: true, m: true, n: true, r: true, s: true, x: true, y:
true};
- }
- var vowel_mapping = kVowelSounds;
- if (cons.length > 1 && (StringCharAt.call(cons, 0) != first)) {
- // First char is upper case
- var second = %StringToLowerCase(StringCharAt.call(cons, 1));
- // Second char is upper case
- if (StringCharAt.call(cons, 1) != second) {
- vowel_mapping = kCapitalVowelSounds;
- }
- }
- var s = vowel_mapping[first] ? "an " : "a ";
- return s + cons;
-}
-
-
var kMessages = 0;
+var kReplacementMarkers =
+ [ "%0", "%1", "%2", "%3" ]
function FormatString(format, args) {
- var result = format;
- for (var i = 0; i < args.length; i++) {
- var str;
- try {
- str = ToDetailString(args[i]);
- } catch (e) {
- str = "#<error>";
- }
- result = ArrayJoin.call(StringSplit.call(result, "%" + i), str);
+ var result = "";
+ var arg_num = 0;
+ 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;
+ try {
+ str = ToDetailString(args[arg_num]);
+ } catch (e) {
+ str = "#<error>";
+ }
+ }
+ result += str;
}
return result;
}
@@ -130,7 +111,7 @@
if (!constructorName || !IS_STRING(constructorName)) {
return ToStringCheckErrorObject(obj);
}
- return "#<" + GetInstanceName(constructorName) + ">";
+ return "#<" + constructorName + ">";
} else {
return ToStringCheckErrorObject(obj);
}
@@ -164,86 +145,86 @@
if (kMessages === 0) {
kMessages = {
// Error
- cyclic_proto: "Cyclic __proto__ value",
+ cyclic_proto: ["Cyclic __proto__ value"],
// TypeError
- unexpected_token: "Unexpected token %0",
- unexpected_token_number: "Unexpected number",
- unexpected_token_string: "Unexpected string",
- unexpected_token_identifier: "Unexpected identifier",
- unexpected_eos: "Unexpected end of input",
- malformed_regexp: "Invalid regular expression: /%0/: %1",
- unterminated_regexp: "Invalid regular expression: missing
/",
- regexp_flags: "Cannot supply flags when constructing
one RegExp from another",
- incompatible_method_receiver: "Method %0 called on incompatible
receiver %1",
- invalid_lhs_in_assignment: "Invalid left-hand side in assignment",
- invalid_lhs_in_for_in: "Invalid left-hand side in for-in",
- invalid_lhs_in_postfix_op: "Invalid left-hand side expression in
postfix operation",
- invalid_lhs_in_prefix_op: "Invalid left-hand side expression in
prefix operation",
- multiple_defaults_in_switch: "More than one default clause in
switch statement",
- newline_after_throw: "Illegal newline after throw",
- redeclaration: "%0 '%1' has already been declared",
- no_catch_or_finally: "Missing catch or finally after try",
- unknown_label: "Undefined label '%0'",
- uncaught_exception: "Uncaught %0",
- stack_trace: "Stack Trace:\n%0",
- called_non_callable: "%0 is not a function",
- undefined_method: "Object %1 has no method '%0'",
- property_not_function: "Property '%0' of object %1 is not a
function",
- cannot_convert_to_primitive: "Cannot convert object to primitive
value",
- not_constructor: "%0 is not a constructor",
- not_defined: "%0 is not defined",
- non_object_property_load: "Cannot read property '%0' of %1",
- non_object_property_store: "Cannot set property '%0' of %1",
- non_object_property_call: "Cannot call method '%0' of %1",
- with_expression: "%0 has no properties",
- illegal_invocation: "Illegal invocation",
- no_setter_in_callback: "Cannot set property %0 of %1 which
has only a getter",
- apply_non_function: "Function.prototype.apply was called
on %0, which is a %1 and not a function",
- apply_wrong_args: "Function.prototype.apply: Arguments
list has wrong type",
- invalid_in_operator_use: "Cannot use 'in' operator to search
for '%0' in %1",
- instanceof_function_expected: "Expecting a function in instanceof
check, but got %0",
- instanceof_nonobject_proto: "Function has non-object
prototype '%0' in instanceof check",
- null_to_object: "Cannot convert null to object",
- reduce_no_initial: "Reduce of empty array with no initial
value",
- getter_must_be_callable: "Getter must be a function: %0",
- setter_must_be_callable: "Setter must be a function: %0",
- value_and_accessor: "Invalid property. A property cannot
both have accessors and be writable or have a value: %0",
- proto_object_or_null: "Object prototype may only be an
Object or null",
- property_desc_object: "Property description must be an
object: %0",
- redefine_disallowed: "Cannot redefine property: %0",
- define_disallowed: "Cannot define property, object is not
extensible: %0",
+ unexpected_token: ["Unexpected token ", "%0"],
+ unexpected_token_number: ["Unexpected number"],
+ unexpected_token_string: ["Unexpected string"],
+ unexpected_token_identifier: ["Unexpected identifier"],
+ unexpected_eos: ["Unexpected end of input"],
+ malformed_regexp: ["Invalid regular expression:
/", "%0", "/: ", "%1"],
+ unterminated_regexp: ["Invalid regular expression: missing
/"],
+ regexp_flags: ["Cannot supply flags when
constructing one RegExp from another"],
+ incompatible_method_receiver: ["Method ", "%0", " called on
incompatible receiver ", "%1"],
+ invalid_lhs_in_assignment: ["Invalid left-hand side in
assignment"],
+ invalid_lhs_in_for_in: ["Invalid left-hand side in for-in"],
+ invalid_lhs_in_postfix_op: ["Invalid left-hand side expression in
postfix operation"],
+ invalid_lhs_in_prefix_op: ["Invalid left-hand side expression in
prefix operation"],
+ multiple_defaults_in_switch: ["More than one default clause in
switch statement"],
+ newline_after_throw: ["Illegal newline after throw"],
+ redeclaration: ["%0", " '", "%1", "' has already been
declared"],
+ no_catch_or_finally: ["Missing catch or finally after try"],
+ unknown_label: ["Undefined label '", "%0", "'"],
+ uncaught_exception: ["Uncaught ", "%0"],
+ stack_trace: ["Stack Trace:\n", "%0"],
+ called_non_callable: ["%0", " is not a function"],
+ undefined_method: ["Object ", "%1", " has no
method '", "%0", "'"],
+ property_not_function: ["Property '", "%0", "' of
object ", "%1", " is not a function"],
+ cannot_convert_to_primitive: ["Cannot convert object to primitive
value"],
+ not_constructor: ["%0", " is not a constructor"],
+ not_defined: ["%0", " is not defined"],
+ non_object_property_load: ["Cannot read property '", "%0", "'
of ", "%1"],
+ non_object_property_store: ["Cannot set property '", "%0", "'
of ", "%1"],
+ non_object_property_call: ["Cannot call method '", "%0", "'
of ", "%1"],
+ with_expression: ["%0", " has no properties"],
+ illegal_invocation: ["Illegal invocation"],
+ no_setter_in_callback: ["Cannot set property ", "%0", "
of ", "%1", " which has only a getter"],
+ apply_non_function: ["Function.prototype.apply was called
on ", "%0", ", which is a ", "%1", " and not a function"],
+ apply_wrong_args: ["Function.prototype.apply: Arguments
list has wrong type"],
+ invalid_in_operator_use: ["Cannot use 'in' operator to search
for '", "%0", "' in ", "%1"],
+ instanceof_function_expected: ["Expecting a function in instanceof
check, but got ", "%0"],
+ instanceof_nonobject_proto: ["Function has non-object
prototype '", "%0", "' in instanceof check"],
+ null_to_object: ["Cannot convert null to object"],
+ reduce_no_initial: ["Reduce of empty array with no
initial value"],
+ getter_must_be_callable: ["Getter must be a function: ", "%0"],
+ setter_must_be_callable: ["Setter must be a function: ", "%0"],
+ value_and_accessor: ["Invalid property. A property cannot
both have accessors and be writable or have a value: ", "%0"],
+ proto_object_or_null: ["Object prototype may only be an
Object or null"],
+ property_desc_object: ["Property description must be an
object: ", "%0"],
+ redefine_disallowed: ["Cannot redefine property: ", "%0"],
+ define_disallowed: ["Cannot define property, object is
not extensible: ", "%0"],
// RangeError
- invalid_array_length: "Invalid array length",
- stack_overflow: "Maximum call stack size exceeded",
+ invalid_array_length: ["Invalid array length"],
+ stack_overflow: ["Maximum call stack size exceeded"],
// SyntaxError
- unable_to_parse: "Parse error",
- duplicate_regexp_flag: "Duplicate RegExp flag %0",
- invalid_regexp: "Invalid RegExp pattern /%0/",
- illegal_break: "Illegal break statement",
- illegal_continue: "Illegal continue statement",
- illegal_return: "Illegal return statement",
- error_loading_debugger: "Error loading debugger",
- no_input_to_regexp: "No input to %0",
- invalid_json: "String '%0' is not valid JSON",
- circular_structure: "Converting circular structure to
JSON",
- obj_ctor_property_non_object: "Object.%0 called on non-object",
- array_indexof_not_defined: "Array.getIndexOf: Argument undefined",
- object_not_extensible: "Can't add property %0, object is not
extensible",
- illegal_access: "Illegal access",
- invalid_preparser_data: "Invalid preparser data for
function %0",
- strict_mode_with: "Strict mode code may not include a
with statement",
- strict_catch_variable: "Catch variable may not be eval or
arguments in strict mode",
- strict_param_name: "Parameter name eval or arguments is
not allowed in strict mode",
- strict_param_dupe: "Strict mode function may not have
duplicate parameter names",
- strict_var_name: "Variable name may not be eval or
arguments in strict mode",
- strict_function_name: "Function name may not be eval or
arguments in strict mode",
- strict_octal_literal: "Octal literals are not allowed in
strict mode.",
- strict_duplicate_property: "Duplicate data property in object
literal not allowed in strict mode",
- accessor_data_property: "Object literal may not have data and
accessor property with the same name",
- accessor_get_set: "Object literal may not have multiple
get/set accessors with the same name",
- strict_lhs_eval_assignment: "Assignment to eval or arguments is
not allowed in strict mode",
- strict_lhs_postfix: "Postfix increment/decrement may not
have eval or arguments operand in strict mode",
- strict_lhs_prefix: "Prefix increment/decrement may not
have eval or arguments operand in strict mode",
+ unable_to_parse: ["Parse error"],
+ duplicate_regexp_flag: ["Duplicate RegExp flag ", "%0"],
+ invalid_regexp: ["Invalid RegExp pattern
/", "%0", "/"],
+ illegal_break: ["Illegal break statement"],
+ illegal_continue: ["Illegal continue statement"],
+ illegal_return: ["Illegal return statement"],
+ error_loading_debugger: ["Error loading debugger"],
+ no_input_to_regexp: ["No input to ", "%0"],
+ invalid_json: ["String '", "%0", "' is not valid
JSON"],
+ circular_structure: ["Converting circular structure to
JSON"],
+ obj_ctor_property_non_object: ["Object.", "%0", " called on
non-object"],
+ array_indexof_not_defined: ["Array.getIndexOf: Argument
undefined"],
+ object_not_extensible: ["Can't add property ", "%0", ",
object is not extensible"],
+ illegal_access: ["Illegal access"],
+ invalid_preparser_data: ["Invalid preparser data for
function ", "%0"],
+ strict_mode_with: ["Strict mode code may not include a
with statement"],
+ strict_catch_variable: ["Catch variable may not be eval or
arguments in strict mode"],
+ strict_param_name: ["Parameter name eval or arguments is
not allowed in strict mode"],
+ strict_param_dupe: ["Strict mode function may not have
duplicate parameter names"],
+ strict_var_name: ["Variable name may not be eval or
arguments in strict mode"],
+ strict_function_name: ["Function name may not be eval or
arguments in strict mode"],
+ strict_octal_literal: ["Octal literals are not allowed in
strict mode."],
+ strict_duplicate_property: ["Duplicate data property in object
literal not allowed in strict mode"],
+ accessor_data_property: ["Object literal may not have data and
accessor property with the same name"],
+ accessor_get_set: ["Object literal may not have multiple
get/set accessors with the same name"],
+ strict_lhs_eval_assignment: ["Assignment to eval or arguments is
not allowed in strict mode"],
+ strict_lhs_postfix: ["Postfix increment/decrement may not
have eval or arguments operand in strict mode"],
+ strict_lhs_prefix: ["Prefix increment/decrement may not
have eval or arguments operand in strict mode"],
};
}
var format = kMessages[message.type];
@@ -352,7 +333,7 @@
var line_ends = this.line_ends;
var start = line == 0 ? 0 : line_ends[line - 1] + 1;
var end = line_ends[line];
- if (end > 0 && StringCharAt.call(this.source, end - 1) == '\r') end--;
+ if (end > 0 && %_CallFunction(this.source, end - 1, StringCharAt)
== '\r') end--;
var column = position - start;
// Adjust according to the offset within the resource.
@@ -467,7 +448,7 @@
var line_ends = this.line_ends;
var start = line == 0 ? 0 : line_ends[line - 1] + 1;
var end = line_ends[line];
- return StringSubstring.call(this.source, start, end);
+ return %_CallFunction(this.source, start, end, StringSubstring);
}
@@ -595,7 +576,7 @@
* Source text for this location.
*/
SourceLocation.prototype.sourceText = function () {
- return StringSubstring.call(this.script.source, this.start, this.end);
+ return %_CallFunction(this.script.source, this.start, this.end,
StringSubstring);
};
@@ -632,7 +613,10 @@
* the line terminating characters (if any)
*/
SourceSlice.prototype.sourceText = function () {
- return StringSubstring.call(this.script.source, this.from_position,
this.to_position);
+ return %_CallFunction(this.script.source,
+ this.from_position,
+ this.to_position,
+ StringSubstring);
};
@@ -707,10 +691,10 @@
CallSite.prototype.getTypeName = function () {
var constructor = this.receiver.constructor;
if (!constructor)
- return $Object.prototype.toString.call(this.receiver);
+ return %_CallFunction(this.receiver, ObjectToString);
var constructorName = constructor.name;
if (!constructorName)
- return $Object.prototype.toString.call(this.receiver);
+ return %_CallFunction(this.receiver, ObjectToString);
return constructorName;
};
@@ -759,8 +743,8 @@
// this function.
var ownName = this.fun.name;
if (ownName && this.receiver &&
- (ObjectLookupGetter.call(this.receiver, ownName) === this.fun ||
- ObjectLookupSetter.call(this.receiver, ownName) === this.fun ||
+ (%_CallFunction(this.receiver, ownName, ObjectLookupGetter) ===
this.fun ||
+ %_CallFunction(this.receiver, ownName, ObjectLookupSetter) ===
this.fun ||
this.receiver[ownName] === this.fun)) {
// To handle DontEnum properties we guess that the method has
// the same name as the function.
@@ -1056,14 +1040,16 @@
if (!%PushIfAbsent(visited_errors, this)) throw cyclic_error_marker;
try {
var type = this.type;
- if (type && !this.hasOwnProperty("message")) {
+ if (type && !%_CallFunction(this, "message", ObjectHasOwnProperty)) {
var formatted = FormatMessage({ type: type, args: this.arguments });
return this.name + ": " + formatted;
}
- var message = this.hasOwnProperty("message") ? (": " +
this.message) : "";
+ var message = %_CallFunction(this, "message", ObjectHasOwnProperty)
+ ? (": " + this.message)
+ : "";
return this.name + message;
} finally {
- visited_errors.pop();
+ visited_errors.length = visited_errors.length - 1;
}
}
=======================================
--- /branches/3.0/src/mirror-debugger.js Mon Jan 3 02:16:46 2011
+++ /branches/3.0/src/mirror-debugger.js Tue Feb 1 04:52:48 2011
@@ -411,7 +411,7 @@
Mirror.prototype.toText = function() {
// Simpel to text which is used when on specialization in subclass.
- return "#<" + builtins.GetInstanceName(this.constructor.name) + ">";
+ return "#<" + this.constructor.name + ">";
}
@@ -425,7 +425,7 @@
* @extends Mirror
*/
function ValueMirror(type, value, transient) {
- Mirror.call(this, type);
+ %_CallFunction(this, type, Mirror);
this.value_ = value;
if (!transient) {
this.allocateHandle_();
@@ -470,7 +470,7 @@
* @extends ValueMirror
*/
function UndefinedMirror() {
- ValueMirror.call(this, UNDEFINED_TYPE, void 0);
+ %_CallFunction(this, UNDEFINED_TYPE, void 0, ValueMirror);
}
inherits(UndefinedMirror, ValueMirror);
@@ -486,7 +486,7 @@
* @extends ValueMirror
*/
function NullMirror() {
- ValueMirror.call(this, NULL_TYPE, null);
+ %_CallFunction(this, NULL_TYPE, null, ValueMirror);
}
inherits(NullMirror, ValueMirror);
@@ -503,7 +503,7 @@
* @extends ValueMirror
*/
function BooleanMirror(value) {
- ValueMirror.call(this, BOOLEAN_TYPE, value);
+ %_CallFunction(this, BOOLEAN_TYPE, value, ValueMirror);
}
inherits(BooleanMirror, ValueMirror);
@@ -520,7 +520,7 @@
* @extends ValueMirror
*/
function NumberMirror(value) {
- ValueMirror.call(this, NUMBER_TYPE, value);
+ %_CallFunction(this, NUMBER_TYPE, value, ValueMirror);
}
inherits(NumberMirror, ValueMirror);
@@ -537,7 +537,7 @@
* @extends ValueMirror
*/
function StringMirror(value) {
- ValueMirror.call(this, STRING_TYPE, value);
+ %_CallFunction(this, STRING_TYPE, value, ValueMirror);
}
inherits(StringMirror, ValueMirror);
@@ -568,7 +568,7 @@
* @extends ValueMirror
*/
function ObjectMirror(value, type, transient) {
- ValueMirror.call(this, type || OBJECT_TYPE, value, transient);
+ %_CallFunction(this, type || OBJECT_TYPE, value, transient, ValueMirror);
}
inherits(ObjectMirror, ValueMirror);
@@ -767,7 +767,7 @@
name = this.className();
}
}
- return '#<' + builtins.GetInstanceName(name) + '>';
+ return '#<' + name + '>';
};
@@ -778,7 +778,7 @@
* @extends ObjectMirror
*/
function FunctionMirror(value) {
- ObjectMirror.call(this, value, FUNCTION_TYPE);
+ %_CallFunction(this, value, FUNCTION_TYPE, ObjectMirror);
this.resolved_ = true;
}
inherits(FunctionMirror, ObjectMirror);
@@ -908,7 +908,7 @@
function UnresolvedFunctionMirror(value) {
// Construct this using the ValueMirror as an unresolved function is not
a
// real object but just a string.
- ValueMirror.call(this, FUNCTION_TYPE, value);
+ %_CallFunction(this, FUNCTION_TYPE, value, ValueMirror);
this.propertyCount_ = 0;
this.elementCount_ = 0;
this.resolved_ = false;
@@ -958,7 +958,7 @@
* @extends ObjectMirror
*/
function ArrayMirror(value) {
- ObjectMirror.call(this, value);
+ %_CallFunction(this, value, ObjectMirror);
}
inherits(ArrayMirror, ObjectMirror);
@@ -994,7 +994,7 @@
* @extends ObjectMirror
*/
function DateMirror(value) {
- ObjectMirror.call(this, value);
+ %_CallFunction(this, value, ObjectMirror);
}
inherits(DateMirror, ObjectMirror);
@@ -1012,7 +1012,7 @@
* @extends ObjectMirror
*/
function RegExpMirror(value) {
- ObjectMirror.call(this, value, REGEXP_TYPE);
+ %_CallFunction(this, value, REGEXP_TYPE, ObjectMirror);
}
inherits(RegExpMirror, ObjectMirror);
@@ -1066,7 +1066,7 @@
* @extends ObjectMirror
*/
function ErrorMirror(value) {
- ObjectMirror.call(this, value, ERROR_TYPE);
+ %_CallFunction(this, value, ERROR_TYPE, ObjectMirror);
}
inherits(ErrorMirror, ObjectMirror);
@@ -1084,9 +1084,9 @@
// Use the same text representation as in messages.js.
var text;
try {
- str = builtins.ToDetailString(this.value_);
+ str = %_CallFunction(this.value_, builtins.errorToString);
} catch (e) {
- str = '#<an Error>';
+ str = '#<Error>';
}
return str;
}
@@ -1101,7 +1101,7 @@
* @extends Mirror
*/
function PropertyMirror(mirror, name, details) {
- Mirror.call(this, PROPERTY_TYPE);
+ %_CallFunction(this, PROPERTY_TYPE, Mirror);
this.mirror_ = mirror;
this.name_ = name;
this.value_ = details[0];
@@ -1397,7 +1397,7 @@
* @extends Mirror
*/
function FrameMirror(break_id, index) {
- Mirror.call(this, FRAME_TYPE);
+ %_CallFunction(this, FRAME_TYPE, Mirror);
this.break_id_ = break_id;
this.index_ = index;
this.details_ = new FrameDetails(break_id, index);
@@ -1712,7 +1712,7 @@
* @extends Mirror
*/
function ScopeMirror(frame, index) {
- Mirror.call(this, SCOPE_TYPE);
+ %_CallFunction(this, SCOPE_TYPE, Mirror);
this.frame_index_ = frame.index_;
this.scope_index_ = index;
this.details_ = new ScopeDetails(frame, index);
@@ -1752,7 +1752,7 @@
* @extends Mirror
*/
function ScriptMirror(script) {
- Mirror.call(this, SCRIPT_TYPE);
+ %_CallFunction(this, SCRIPT_TYPE, Mirror);
this.script_ = script;
this.context_ = new ContextMirror(script.context_data);
this.allocateHandle_();
@@ -1868,7 +1868,7 @@
* @extends Mirror
*/
function ContextMirror(data) {
- Mirror.call(this, CONTEXT_TYPE);
+ %_CallFunction(this, CONTEXT_TYPE, Mirror);
this.data_ = data;
this.allocateHandle_();
}
=======================================
--- /branches/3.0/src/regexp.js Tue Dec 21 04:19:12 2010
+++ /branches/3.0/src/regexp.js Tue Feb 1 04:52:48 2011
@@ -52,7 +52,7 @@
var multiline = false;
for (var i = 0; i < flags.length; i++) {
- var c = StringCharAt.call(flags, i);
+ var c = %_CallFunction(flags, i, StringCharAt);
switch (c) {
case 'g':
// Allow duplicate flags to be consistent with JSC and others.
=======================================
--- /branches/3.0/src/version.cc Mon Jan 31 09:12:06 2011
+++ /branches/3.0/src/version.cc Tue Feb 1 04:52:48 2011
@@ -35,7 +35,7 @@
#define MAJOR_VERSION 3
#define MINOR_VERSION 0
#define BUILD_NUMBER 12
-#define PATCH_LEVEL 2
+#define PATCH_LEVEL 3
#define CANDIDATE_VERSION false
// Define SONAME to have the SCons build the put a specific SONAME into the
=======================================
--- /branches/3.0/test/cctest/test-api.cc Mon Jan 31 09:12:06 2011
+++ /branches/3.0/test/cctest/test-api.cc Tue Feb 1 04:52:48 2011
@@ -2369,13 +2369,27 @@
}
-// Test that overwritten toString methods are not invoked on uncaught
-// exception formatting. However, they are invoked when performing
-// normal error string conversions.
+static v8::Handle<Value> Fail(const v8::Arguments& args) {
+ ApiTestFuzzer::Fuzz();
+ CHECK(false);
+ return v8::Undefined();
+}
+
+
+// Test that overwritten methods are not invoked on uncaught exception
+// formatting. However, they are invoked when performing normal error
+// string conversions.
TEST(APIThrowMessageOverwrittenToString) {
v8::HandleScope scope;
v8::V8::AddMessageListener(check_reference_error_message);
- LocalContext context;
+ Local<ObjectTemplate> templ = ObjectTemplate::New();
+ templ->Set(v8_str("fail"), v8::FunctionTemplate::New(Fail));
+ LocalContext context(NULL, templ);
+ CompileRun("Array.prototype.pop = fail;");
+ CompileRun("Object.prototype.hasOwnProperty = fail;");
+ CompileRun("Object.prototype.toString = function f() { return 'Yikes';
}");
+ CompileRun("Number.prototype.toString = function f() { return 'Yikes';
}");
+ CompileRun("String.prototype.toString = function f() { return 'Yikes';
}");
CompileRun("ReferenceError.prototype.toString ="
" function() { return 'Whoops' }");
CompileRun("asdf;");
@@ -6254,7 +6268,7 @@
" var str = String(e);"
" if (str.indexOf('TypeError') == -1) return 1;"
" if (str.indexOf('[object Fun]') != -1) return 2;"
- " if (str.indexOf('#<a Fun>') == -1) return 3;"
+ " if (str.indexOf('#<Fun>') == -1) return 3;"
" return 0;"
" }"
" return 4;"
=======================================
--- /branches/3.0/test/mjsunit/debug-backtrace-text.js Mon Feb 9 16:49:54
2009
+++ /branches/3.0/test/mjsunit/debug-backtrace-text.js Tue Feb 1 04:52:48
2011
@@ -80,9 +80,9 @@
// 1: Call distance on Point where distance is a direct property
// 2: Call on function an array element 2
// 3: [anonymous]
- assertEquals("#<a Point>.distanceTo(p=#<a Point>)",
exec_state.frame(0).invocationText());
- assertEquals("#<a Point>.distanceTo(p=#<a Point>)",
exec_state.frame(1).invocationText());
- assertEquals("#<an Array>[2](aka distance)(p=#<a Point>, q=#<a
Point>)", exec_state.frame(2).invocationText());
+ assertEquals("#<Point>.distanceTo(p=#<Point>)",
exec_state.frame(0).invocationText());
+ assertEquals("#<Point>.distanceTo(p=#<Point>)",
exec_state.frame(1).invocationText());
+ assertEquals("#<Array>[2](aka distance)(p=#<Point>, q=#<Point>)",
exec_state.frame(2).invocationText());
assertEquals("[anonymous]()", exec_state.frame(3).invocationText());
listenerCalled = true;
} else {
=======================================
--- /branches/3.0/test/mjsunit/mirror-error.js Sun May 17 23:12:45 2009
+++ /branches/3.0/test/mjsunit/mirror-error.js Tue Feb 1 04:52:48 2011
@@ -76,7 +76,7 @@
}
assertTrue(found_message, 'Property message not found');
}
-
+
// Check the formatted text (regress 1231579).
assertEquals(fromJSON.text, e.toString(), 'toString');
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev