Index: src/runtime.js |
diff --git a/src/runtime.js b/src/runtime.js |
index 5da9c90682a75b807ee597775f91a53b664350cb..a7218058d7dd24108b769ce412c091dd4d81b542 100644 |
--- a/src/runtime.js |
+++ b/src/runtime.js |
@@ -55,18 +55,18 @@ function EQUALS(y) { |
if (!IS_SPEC_OBJECT(y)) { |
if (IS_SYMBOL(y) || IS_SIMD_VALUE(y)) return 1; // not equal |
// String or boolean. |
- return %NumberEquals(x, %$toNumber(y)); |
+ return %NumberEquals(x, %to_number_fun(y)); |
} |
- y = %$toPrimitive(y, NO_HINT); |
+ y = %to_primitive(y, NO_HINT); |
} |
} else if (IS_STRING(x)) { |
while (true) { |
if (IS_STRING(y)) return %StringEquals(x, y); |
- if (IS_NUMBER(y)) return %NumberEquals(%$toNumber(x), y); |
- if (IS_BOOLEAN(y)) return %NumberEquals(%$toNumber(x), %$toNumber(y)); |
+ if (IS_NUMBER(y)) return %NumberEquals(%to_number_fun(x), y); |
+ if (IS_BOOLEAN(y)) return %NumberEquals(%to_number_fun(x), %to_number_fun(y)); |
if (IS_NULL_OR_UNDEFINED(y)) return 1; // not equal |
if (IS_SYMBOL(y) || IS_SIMD_VALUE(y)) return 1; // not equal |
- y = %$toPrimitive(y, NO_HINT); |
+ y = %to_primitive(y, NO_HINT); |
} |
} else if (IS_SYMBOL(x)) { |
if (IS_SYMBOL(y)) return %_ObjectEquals(x, y) ? 0 : 1; |
@@ -74,12 +74,12 @@ function EQUALS(y) { |
} else if (IS_BOOLEAN(x)) { |
if (IS_BOOLEAN(y)) return %_ObjectEquals(x, y) ? 0 : 1; |
if (IS_NULL_OR_UNDEFINED(y)) return 1; |
- if (IS_NUMBER(y)) return %NumberEquals(%$toNumber(x), y); |
- if (IS_STRING(y)) return %NumberEquals(%$toNumber(x), %$toNumber(y)); |
+ if (IS_NUMBER(y)) return %NumberEquals(%to_number_fun(x), y); |
+ if (IS_STRING(y)) return %NumberEquals(%to_number_fun(x), %to_number_fun(y)); |
if (IS_SYMBOL(y) || IS_SIMD_VALUE(y)) return 1; // not equal |
// y is object. |
- x = %$toNumber(x); |
- y = %$toPrimitive(y, NO_HINT); |
+ x = %to_number_fun(x); |
+ y = %to_primitive(y, NO_HINT); |
} else if (IS_NULL_OR_UNDEFINED(x)) { |
return IS_NULL_OR_UNDEFINED(y) ? 0 : 1; |
} else if (IS_SIMD_VALUE(x)) { |
@@ -90,11 +90,11 @@ function EQUALS(y) { |
if (IS_SPEC_OBJECT(y)) return %_ObjectEquals(x, y) ? 0 : 1; |
if (IS_NULL_OR_UNDEFINED(y)) return 1; // not equal |
if (IS_BOOLEAN(y)) { |
- y = %$toNumber(y); |
+ y = %to_number_fun(y); |
} else if (IS_SYMBOL(y) || IS_SIMD_VALUE(y)) { |
return 1; // not equal |
} |
- x = %$toPrimitive(x, NO_HINT); |
+ x = %to_primitive(x, NO_HINT); |
} |
} |
} |
@@ -116,22 +116,22 @@ function COMPARE(x, ncr) { |
left = this; |
} else if (IS_UNDEFINED(this)) { |
if (!IS_UNDEFINED(x)) { |
- %$toPrimitive(x, NUMBER_HINT); |
+ %to_primitive(x, NUMBER_HINT); |
} |
return ncr; |
} else if (IS_UNDEFINED(x)) { |
- %$toPrimitive(this, NUMBER_HINT); |
+ %to_primitive(this, NUMBER_HINT); |
return ncr; |
} else { |
- left = %$toPrimitive(this, NUMBER_HINT); |
+ left = %to_primitive(this, NUMBER_HINT); |
} |
- right = %$toPrimitive(x, NUMBER_HINT); |
+ right = %to_primitive(x, NUMBER_HINT); |
if (IS_STRING(left) && IS_STRING(right)) { |
return %_StringCompare(left, right); |
} else { |
- var left_number = %$toNumber(left); |
- var right_number = %$toNumber(right); |
+ var left_number = %to_number_fun(left); |
+ var right_number = %to_number_fun(right); |
if (NUMBER_IS_NAN(left_number) || NUMBER_IS_NAN(right_number)) return ncr; |
return %NumberCompare(left_number, right_number, ncr); |
} |
@@ -142,7 +142,7 @@ function COMPARE_STRONG(x, ncr) { |
if (IS_STRING(this) && IS_STRING(x)) return %_StringCompare(this, x); |
if (IS_NUMBER(this) && IS_NUMBER(x)) return %NumberCompare(this, x, ncr); |
- throw %MakeTypeError(kStrongImplicitConversion); |
+ throw %make_type_error(kStrongImplicitConversion); |
} |
@@ -159,15 +159,15 @@ function ADD(x) { |
if (IS_STRING(this) && IS_STRING(x)) return %_StringAdd(this, x); |
// Default implementation. |
- var a = %$toPrimitive(this, NO_HINT); |
- var b = %$toPrimitive(x, NO_HINT); |
+ var a = %to_primitive(this, NO_HINT); |
+ var b = %to_primitive(x, NO_HINT); |
if (IS_STRING(a)) { |
- return %_StringAdd(a, %$toString(b)); |
+ return %_StringAdd(a, %to_string_fun(b)); |
} else if (IS_STRING(b)) { |
- return %_StringAdd(%$nonStringToString(a), b); |
+ return %_StringAdd(%non_string_to_string(a), b); |
} else { |
- return %NumberAdd(%$toNumber(a), %$toNumber(b)); |
+ return %NumberAdd(%to_number_fun(a), %to_number_fun(b)); |
} |
} |
@@ -177,7 +177,7 @@ function ADD_STRONG(x) { |
if (IS_NUMBER(this) && IS_NUMBER(x)) return %NumberAdd(this, x); |
if (IS_STRING(this) && IS_STRING(x)) return %_StringAdd(this, x); |
- throw %MakeTypeError(kStrongImplicitConversion); |
+ throw %make_type_error(kStrongImplicitConversion); |
} |
@@ -189,7 +189,7 @@ function STRING_ADD_LEFT(y) { |
} else { |
y = IS_NUMBER(y) |
? %_NumberToString(y) |
- : %$toString(%$toPrimitive(y, NO_HINT)); |
+ : %to_string_fun(%to_primitive(y, NO_HINT)); |
} |
} |
return %_StringAdd(this, y); |
@@ -205,7 +205,7 @@ function STRING_ADD_RIGHT(y) { |
} else { |
x = IS_NUMBER(x) |
? %_NumberToString(x) |
- : %$toString(%$toPrimitive(x, NO_HINT)); |
+ : %to_string_fun(%to_primitive(x, NO_HINT)); |
} |
} |
return %_StringAdd(x, y); |
@@ -214,8 +214,8 @@ function STRING_ADD_RIGHT(y) { |
// ECMA-262, section 11.6.2, page 50. |
function SUB(y) { |
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this); |
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y); |
+ var x = IS_NUMBER(this) ? this : %non_number_to_number(this); |
+ if (!IS_NUMBER(y)) y = %non_number_to_number(y); |
return %NumberSub(x, y); |
} |
@@ -225,14 +225,14 @@ function SUB_STRONG(y) { |
if (IS_NUMBER(this) && IS_NUMBER(y)) { |
return %NumberSub(this, y); |
} |
- throw %MakeTypeError(kStrongImplicitConversion); |
+ throw %make_type_error(kStrongImplicitConversion); |
} |
// ECMA-262, section 11.5.1, page 48. |
function MUL(y) { |
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this); |
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y); |
+ var x = IS_NUMBER(this) ? this : %non_number_to_number(this); |
+ if (!IS_NUMBER(y)) y = %non_number_to_number(y); |
return %NumberMul(x, y); |
} |
@@ -242,14 +242,14 @@ function MUL_STRONG(y) { |
if (IS_NUMBER(this) && IS_NUMBER(y)) { |
return %NumberMul(this, y); |
} |
- throw %MakeTypeError(kStrongImplicitConversion); |
+ throw %make_type_error(kStrongImplicitConversion); |
} |
// ECMA-262, section 11.5.2, page 49. |
function DIV(y) { |
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this); |
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y); |
+ var x = IS_NUMBER(this) ? this : %non_number_to_number(this); |
+ if (!IS_NUMBER(y)) y = %non_number_to_number(y); |
return %NumberDiv(x, y); |
} |
@@ -259,14 +259,14 @@ function DIV_STRONG(y) { |
if (IS_NUMBER(this) && IS_NUMBER(y)) { |
return %NumberDiv(this, y); |
} |
- throw %MakeTypeError(kStrongImplicitConversion); |
+ throw %make_type_error(kStrongImplicitConversion); |
} |
// ECMA-262, section 11.5.3, page 49. |
function MOD(y) { |
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this); |
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y); |
+ var x = IS_NUMBER(this) ? this : %non_number_to_number(this); |
+ if (!IS_NUMBER(y)) y = %non_number_to_number(y); |
return %NumberMod(x, y); |
} |
@@ -276,7 +276,7 @@ function MOD_STRONG(y) { |
if (IS_NUMBER(this) && IS_NUMBER(y)) { |
return %NumberMod(this, y); |
} |
- throw %MakeTypeError(kStrongImplicitConversion); |
+ throw %make_type_error(kStrongImplicitConversion); |
} |
@@ -287,8 +287,8 @@ function MOD_STRONG(y) { |
// ECMA-262, section 11.10, page 57. |
function BIT_OR(y) { |
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this); |
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y); |
+ var x = IS_NUMBER(this) ? this : %non_number_to_number(this); |
+ if (!IS_NUMBER(y)) y = %non_number_to_number(y); |
return %NumberOr(x, y); |
} |
@@ -298,7 +298,7 @@ function BIT_OR_STRONG(y) { |
if (IS_NUMBER(this) && IS_NUMBER(y)) { |
return %NumberOr(this, y); |
} |
- throw %MakeTypeError(kStrongImplicitConversion); |
+ throw %make_type_error(kStrongImplicitConversion); |
} |
@@ -307,14 +307,14 @@ function BIT_AND(y) { |
var x; |
if (IS_NUMBER(this)) { |
x = this; |
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y); |
+ if (!IS_NUMBER(y)) y = %non_number_to_number(y); |
} else { |
- x = %$nonNumberToNumber(this); |
+ x = %non_number_to_number(this); |
// Make sure to convert the right operand to a number before |
// bailing out in the fast case, but after converting the |
// left operand. This ensures that valueOf methods on the right |
// operand are always executed. |
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y); |
+ if (!IS_NUMBER(y)) y = %non_number_to_number(y); |
// Optimize for the case where we end up AND'ing a value |
// that doesn't convert to a number. This is common in |
// certain benchmarks. |
@@ -329,14 +329,14 @@ function BIT_AND_STRONG(y) { |
if (IS_NUMBER(this) && IS_NUMBER(y)) { |
return %NumberAnd(this, y); |
} |
- throw %MakeTypeError(kStrongImplicitConversion); |
+ throw %make_type_error(kStrongImplicitConversion); |
} |
// ECMA-262, section 11.10, page 57. |
function BIT_XOR(y) { |
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this); |
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y); |
+ var x = IS_NUMBER(this) ? this : %non_number_to_number(this); |
+ if (!IS_NUMBER(y)) y = %non_number_to_number(y); |
return %NumberXor(x, y); |
} |
@@ -346,14 +346,14 @@ function BIT_XOR_STRONG(y) { |
if (IS_NUMBER(this) && IS_NUMBER(y)) { |
return %NumberXor(this, y); |
} |
- throw %MakeTypeError(kStrongImplicitConversion); |
+ throw %make_type_error(kStrongImplicitConversion); |
} |
// ECMA-262, section 11.7.1, page 51. |
function SHL(y) { |
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this); |
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y); |
+ var x = IS_NUMBER(this) ? this : %non_number_to_number(this); |
+ if (!IS_NUMBER(y)) y = %non_number_to_number(y); |
return %NumberShl(x, y); |
} |
@@ -363,7 +363,7 @@ function SHL_STRONG(y) { |
if (IS_NUMBER(this) && IS_NUMBER(y)) { |
return %NumberShl(this, y); |
} |
- throw %MakeTypeError(kStrongImplicitConversion); |
+ throw %make_type_error(kStrongImplicitConversion); |
} |
@@ -372,14 +372,14 @@ function SAR(y) { |
var x; |
if (IS_NUMBER(this)) { |
x = this; |
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y); |
+ if (!IS_NUMBER(y)) y = %non_number_to_number(y); |
} else { |
- x = %$nonNumberToNumber(this); |
+ x = %non_number_to_number(this); |
// Make sure to convert the right operand to a number before |
// bailing out in the fast case, but after converting the |
// left operand. This ensures that valueOf methods on the right |
// operand are always executed. |
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y); |
+ if (!IS_NUMBER(y)) y = %non_number_to_number(y); |
// Optimize for the case where we end up shifting a value |
// that doesn't convert to a number. This is common in |
// certain benchmarks. |
@@ -394,14 +394,14 @@ function SAR_STRONG(y) { |
if (IS_NUMBER(this) && IS_NUMBER(y)) { |
return %NumberSar(this, y); |
} |
- throw %MakeTypeError(kStrongImplicitConversion); |
+ throw %make_type_error(kStrongImplicitConversion); |
} |
// ECMA-262, section 11.7.3, page 52. |
function SHR(y) { |
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this); |
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y); |
+ var x = IS_NUMBER(this) ? this : %non_number_to_number(this); |
+ if (!IS_NUMBER(y)) y = %non_number_to_number(y); |
return %NumberShr(x, y); |
} |
@@ -411,7 +411,7 @@ function SHR_STRONG(y) { |
if (IS_NUMBER(this) && IS_NUMBER(y)) { |
return %NumberShr(this, y); |
} |
- throw %MakeTypeError(kStrongImplicitConversion); |
+ throw %make_type_error(kStrongImplicitConversion); |
} |
@@ -423,7 +423,7 @@ function SHR_STRONG(y) { |
// ECMA-262, section 11.8.7, page 54. |
function IN(x) { |
if (!IS_SPEC_OBJECT(x)) { |
- throw %MakeTypeError(kInvalidInOperatorUse, this, x); |
+ throw %make_type_error(kInvalidInOperatorUse, this, x); |
} |
if (%_IsNonNegativeSmi(this)) { |
if (IS_ARRAY(x) && %_HasFastPackedElements(x)) { |
@@ -431,7 +431,7 @@ function IN(x) { |
} |
return %HasElement(x, this); |
} |
- return %HasProperty(x, %$toName(this)); |
+ return %HasProperty(x, %to_name(this)); |
} |
@@ -440,7 +440,7 @@ function CALL_NON_FUNCTION() { |
if (!IS_FUNCTION(delegate)) { |
var callsite = %RenderCallSite(); |
if (callsite == "") callsite = typeof this; |
- throw %MakeTypeError(kCalledNonCallable, callsite); |
+ throw %make_type_error(kCalledNonCallable, callsite); |
} |
return %Apply(delegate, this, arguments, 0, %_ArgumentsLength()); |
} |
@@ -451,7 +451,7 @@ function CALL_NON_FUNCTION_AS_CONSTRUCTOR() { |
if (!IS_FUNCTION(delegate)) { |
var callsite = %RenderCallSite(); |
if (callsite == "") callsite = typeof this; |
- throw %MakeTypeError(kCalledNonCallable, callsite); |
+ throw %make_type_error(kCalledNonCallable, callsite); |
} |
return %Apply(delegate, this, arguments, 0, %_ArgumentsLength()); |
} |
@@ -490,15 +490,15 @@ function APPLY_PREPARE(args) { |
// We can handle any number of apply arguments if the stack is |
// big enough, but sanity check the value to avoid overflow when |
// multiplying with pointer size. |
- if (length > kSafeArgumentsLength) throw %MakeRangeError(kStackOverflow); |
+ if (length > kSafeArgumentsLength) throw %make_range_error(kStackOverflow); |
if (!IS_SPEC_FUNCTION(this)) { |
- throw %MakeTypeError(kApplyNonFunction, %$toString(this), typeof this); |
+ throw %make_type_error(kApplyNonFunction, %to_string_fun(this), typeof this); |
} |
// Make sure the arguments list has the right type. |
if (args != null && !IS_SPEC_OBJECT(args)) { |
- throw %MakeTypeError(kWrongArgs, "Function.prototype.apply"); |
+ throw %make_type_error(kWrongArgs, "Function.prototype.apply"); |
} |
// Return the length which is the number of arguments to copy to the |
@@ -521,19 +521,19 @@ function REFLECT_APPLY_PREPARE(args) { |
} |
if (!IS_SPEC_FUNCTION(this)) { |
- throw %MakeTypeError(kCalledNonCallable, %$toString(this)); |
+ throw %make_type_error(kCalledNonCallable, %to_string_fun(this)); |
} |
if (!IS_SPEC_OBJECT(args)) { |
- throw %MakeTypeError(kWrongArgs, "Reflect.apply"); |
+ throw %make_type_error(kWrongArgs, "Reflect.apply"); |
} |
- length = %$toLength(args.length); |
+ length = %to_length_fun(args.length); |
// We can handle any number of apply arguments if the stack is |
// big enough, but sanity check the value to avoid overflow when |
// multiplying with pointer size. |
- if (length > kSafeArgumentsLength) throw %MakeRangeError(kStackOverflow); |
+ if (length > kSafeArgumentsLength) throw %make_range_error(kStackOverflow); |
// Return the length which is the number of arguments to copy to the |
// stack. It is guaranteed to be a small integer at this point. |
@@ -560,30 +560,30 @@ function REFLECT_CONSTRUCT_PREPARE( |
if (!ctorOk) { |
if (!IS_SPEC_FUNCTION(this)) { |
- throw %MakeTypeError(kCalledNonCallable, %$toString(this)); |
+ throw %make_type_error(kCalledNonCallable, %to_string_fun(this)); |
} else { |
- throw %MakeTypeError(kNotConstructor, %$toString(this)); |
+ throw %make_type_error(kNotConstructor, %to_string_fun(this)); |
} |
} |
if (!newTargetOk) { |
if (!IS_SPEC_FUNCTION(newTarget)) { |
- throw %MakeTypeError(kCalledNonCallable, %$toString(newTarget)); |
+ throw %make_type_error(kCalledNonCallable, %to_string_fun(newTarget)); |
} else { |
- throw %MakeTypeError(kNotConstructor, %$toString(newTarget)); |
+ throw %make_type_error(kNotConstructor, %to_string_fun(newTarget)); |
} |
} |
if (!IS_SPEC_OBJECT(args)) { |
- throw %MakeTypeError(kWrongArgs, "Reflect.construct"); |
+ throw %make_type_error(kWrongArgs, "Reflect.construct"); |
} |
- length = %$toLength(args.length); |
+ length = %to_length_fun(args.length); |
// We can handle any number of apply arguments if the stack is |
// big enough, but sanity check the value to avoid overflow when |
// multiplying with pointer size. |
- if (length > kSafeArgumentsLength) throw %MakeRangeError(kStackOverflow); |
+ if (length > kSafeArgumentsLength) throw %make_range_error(kStackOverflow); |
// Return the length which is the number of arguments to copy to the |
// stack. It is guaranteed to be a small integer at this point. |
@@ -592,30 +592,30 @@ function REFLECT_CONSTRUCT_PREPARE( |
function CONCAT_ITERABLE_TO_ARRAY(iterable) { |
- return %$concatIterableToArray(this, iterable); |
+ return %concat_iterable_to_array(this, iterable); |
}; |
function STACK_OVERFLOW(length) { |
- throw %MakeRangeError(kStackOverflow); |
+ throw %make_range_error(kStackOverflow); |
} |
// Convert the receiver to a number - forward to ToNumber. |
function TO_NUMBER() { |
- return %$toNumber(this); |
+ return %to_number_fun(this); |
} |
// Convert the receiver to a string - forward to ToString. |
function TO_STRING() { |
- return %$toString(this); |
+ return %to_string_fun(this); |
} |
// Convert the receiver to a string or symbol - forward to ToName. |
function TO_NAME() { |
- return %$toName(this); |
+ return %to_name(this); |
} |
@@ -822,7 +822,6 @@ function ToPositiveInteger(x, rangeErrorIndex) { |
// ---------------------------------------------------------------------------- |
// Exports |
-$concatIterableToArray = ConcatIterableToArray; |
$defaultNumber = DefaultNumber; |
$defaultString = DefaultString; |
$NaN = %GetRootNaN(); |
@@ -881,17 +880,25 @@ $toString = ToString; |
TO_NAME, |
}); |
-utils.ExportToRuntime(function(to) { |
- to["to_integer_fun"] = ToInteger; |
- to["to_length_fun"] = ToLength; |
- to["to_number_fun"] = ToNumber; |
- to["to_string_fun"] = ToString; |
-}); |
+%InstallToContext([ |
+ "concat_iterable_to_array", ConcatIterableToArray, |
+ "non_number_to_number", NonNumberToNumber, |
+ "non_string_to_string", NonStringToString, |
+ "to_integer_fun", ToInteger, |
+ "to_length_fun", ToLength, |
+ "to_name", ToName, |
+ "to_number_fun", ToNumber, |
+ "to_primitive", ToPrimitive, |
+ "to_string_fun", ToString, |
+]); |
utils.Export(function(to) { |
to.ToBoolean = ToBoolean; |
+ to.ToLength = ToLength; |
+ to.ToName = ToName; |
to.ToNumber = ToNumber; |
+ to.ToPrimitive = ToPrimitive; |
to.ToString = ToString; |
-}) |
+}); |
}) |