// 15.4.5.1 CreateArrayIterator Abstract Operation
function CreateArrayIterator(array, kind) {
- var object = $toObject(array);
+ var object = ToObject(array);
var iterator = new ArrayIterator;
SET_PRIVATE(iterator, arrayIteratorObjectSymbol, object);
SET_PRIVATE(iterator, arrayIteratorNextIndexSymbol, 0);
// 15.4.5.2.2 ArrayIterator.prototype.next( )
function ArrayIteratorNext() {
- var iterator = $toObject(this);
+ var iterator = ToObject(this);
if (!HAS_DEFINED_PRIVATE(iterator, arrayIteratorNextIndexSymbol)) {
throw MakeTypeError(kIncompatibleMethodReceiver,
// Assumes x is a non-string.
if (IS_NUMBER(x)) return %_NumberToString(x);
if (IS_BOOLEAN(x)) return x ? 'true' : 'false';
- return (IS_NULL_OR_UNDEFINED(x)) ? '' : $toString($defaultString(x));
+ return (IS_NULL_OR_UNDEFINED(x)) ? '' : %ToString(%DefaultString(x));
}
// According to ES5, section 15.4.4.3, the toLocaleString conversion
// must throw a TypeError if ToObject(e).toLocaleString isn't
// callable.
- var e_obj = $toObject(e);
- return $toString(e_obj.toLocaleString());
+ var e_obj = ToObject(e);
+ return %ToString(e_obj.toLocaleString());
}
}
}
array = this;
} else {
- array = $toObject(this);
+ array = ToObject(this);
func = array.join;
}
if (!IS_SPEC_FUNCTION(func)) {
function ArrayToLocaleString() {
- var array = $toObject(this);
+ var array = ToObject(this);
var arrayLen = array.length;
var len = TO_UINT32(arrayLen);
if (len === 0) return "";
if (IS_UNDEFINED(separator)) {
separator = ',';
} else if (!IS_STRING(separator)) {
- separator = $nonStringToString(separator);
+ separator = NonStringToString(separator);
}
var result = %_FastOneByteArrayJoin(array, separator);
var e = array[0];
if (IS_STRING(e)) return e;
if (IS_NULL_OR_UNDEFINED(e)) return '';
- return $nonStringToString(e);
+ return NonStringToString(e);
}
return Join(array, length, separator, ConvertToString);
n--;
var value = array[n];
- $delete(array, $toName(n), true);
+ $delete(array, ToName(n), true);
array.length = n;
return value;
}
function ArrayConcatJS(arg1) { // length == 1
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.concat");
- var array = $toObject(this);
+ var array = ToObject(this);
var arg_count = %_ArgumentsLength();
var arrays = new InternalArray(1 + arg_count);
arrays[0] = array;
if (%_IsSmi(x) && %_IsSmi(y)) {
return %SmiLexicographicCompare(x, y);
}
- x = $toString(x);
- y = $toString(y);
+ x = ToString(x);
+ y = ToString(y);
if (x == y) return 0;
else return x < y ? -1 : 1;
};
// Pull out the length so that modifications to the length in the
// loop will not affect the looping and side effects are visible.
- var array = $toObject(this);
- var length = $toUint32(array.length);
+ var array = ToObject(this);
+ var length = ToUint32(array.length);
if (!IS_SPEC_FUNCTION(f)) throw MakeTypeError(kCalledNonCallable, f);
var needs_wrapper = false;
var element = array[i];
// Prepare break slots for debugger step in.
if (stepping) %DebugPrepareStepInIfStepping(f);
- var new_receiver = needs_wrapper ? $toObject(receiver) : receiver;
+ var new_receiver = needs_wrapper ? ToObject(receiver) : receiver;
if (%_CallFunction(new_receiver, element, i, array, f)) {
accumulator[accumulator_length++] = element;
}
// Pull out the length so that modifications to the length in the
// loop will not affect the looping and side effects are visible.
- var array = $toObject(this);
+ var array = ToObject(this);
var length = TO_UINT32(array.length);
if (!IS_SPEC_FUNCTION(f)) throw MakeTypeError(kCalledNonCallable, f);
var element = array[i];
// Prepare break slots for debugger step in.
if (stepping) %DebugPrepareStepInIfStepping(f);
- var new_receiver = needs_wrapper ? $toObject(receiver) : receiver;
+ var new_receiver = needs_wrapper ? ToObject(receiver) : receiver;
%_CallFunction(new_receiver, element, i, array, f);
}
}
// Pull out the length so that modifications to the length in the
// loop will not affect the looping and side effects are visible.
- var array = $toObject(this);
+ var array = ToObject(this);
var length = TO_UINT32(array.length);
if (!IS_SPEC_FUNCTION(f)) throw MakeTypeError(kCalledNonCallable, f);
var element = array[i];
// Prepare break slots for debugger step in.
if (stepping) %DebugPrepareStepInIfStepping(f);
- var new_receiver = needs_wrapper ? $toObject(receiver) : receiver;
+ var new_receiver = needs_wrapper ? ToObject(receiver) : receiver;
if (%_CallFunction(new_receiver, element, i, array, f)) return true;
}
}
// Pull out the length so that modifications to the length in the
// loop will not affect the looping and side effects are visible.
- var array = $toObject(this);
+ var array = ToObject(this);
var length = TO_UINT32(array.length);
if (!IS_SPEC_FUNCTION(f)) throw MakeTypeError(kCalledNonCallable, f);
var element = array[i];
// Prepare break slots for debugger step in.
if (stepping) %DebugPrepareStepInIfStepping(f);
- var new_receiver = needs_wrapper ? $toObject(receiver) : receiver;
+ var new_receiver = needs_wrapper ? ToObject(receiver) : receiver;
if (!%_CallFunction(new_receiver, element, i, array, f)) return false;
}
}
// Pull out the length so that modifications to the length in the
// loop will not affect the looping and side effects are visible.
- var array = $toObject(this);
+ var array = ToObject(this);
var length = TO_UINT32(array.length);
if (!IS_SPEC_FUNCTION(f)) throw MakeTypeError(kCalledNonCallable, f);
var element = array[i];
// Prepare break slots for debugger step in.
if (stepping) %DebugPrepareStepInIfStepping(f);
- var new_receiver = needs_wrapper ? $toObject(receiver) : receiver;
+ var new_receiver = needs_wrapper ? ToObject(receiver) : receiver;
accumulator[i] = %_CallFunction(new_receiver, element, i, array, f);
}
}
// Pull out the length so that modifications to the length in the
// loop will not affect the looping and side effects are visible.
- var array = $toObject(this);
- var length = $toUint32(array.length);
+ var array = ToObject(this);
+ var length = ToUint32(array.length);
if (!IS_SPEC_FUNCTION(callback)) {
throw MakeTypeError(kCalledNonCallable, callback);
// Pull out the length so that side effects are visible before the
// callback function is checked.
- var array = $toObject(this);
- var length = $toUint32(array.length);
+ var array = ToObject(this);
+ var length = ToUint32(array.length);
if (!IS_SPEC_FUNCTION(callback)) {
throw MakeTypeError(kCalledNonCallable, callback);
function ArrayBufferConstructor(length) { // length = 1
if (%_IsConstructCall()) {
- var byteLength = $toPositiveInteger(length, kInvalidArrayBufferLength);
+ var byteLength = ToPositiveInteger(length, kInvalidArrayBufferLength);
%ArrayBufferInitialize(this, byteLength);
} else {
throw MakeTypeError(kConstructorNotFunction, "ArrayBuffer");
F(spread_iterable, "$spreadIterable") \
F(this, "this") \
F(throw_iterator_result_not_an_object, "ThrowIteratorResultNotAnObject") \
- F(to_string, "$toString") \
+ F(to_string, "ToString") \
F(undefined, "undefined") \
F(use_asm, "use asm") \
F(use_strong, "use strong") \
HandleScope scope(isolate());
INSTALL_NATIVE(JSFunction, "$createDate", create_date_fun);
- INSTALL_NATIVE(JSFunction, "$toNumber", to_number_fun);
- INSTALL_NATIVE(JSFunction, "$toString", to_string_fun);
+ INSTALL_NATIVE(JSFunction, "ToNumber", to_number_fun);
+ INSTALL_NATIVE(JSFunction, "ToString", to_string_fun);
INSTALL_NATIVE(JSFunction, "$toDetailString", to_detail_string_fun);
- INSTALL_NATIVE(JSFunction, "$toObject", to_object_fun);
- INSTALL_NATIVE(JSFunction, "$toInteger", to_integer_fun);
- INSTALL_NATIVE(JSFunction, "$toUint32", to_uint32_fun);
- INSTALL_NATIVE(JSFunction, "$toInt32", to_int32_fun);
- INSTALL_NATIVE(JSFunction, "$toLength", to_length_fun);
+ INSTALL_NATIVE(JSFunction, "ToObject", to_object_fun);
+ INSTALL_NATIVE(JSFunction, "ToInteger", to_integer_fun);
+ INSTALL_NATIVE(JSFunction, "ToUint32", to_uint32_fun);
+ INSTALL_NATIVE(JSFunction, "ToInt32", to_int32_fun);
+ INSTALL_NATIVE(JSFunction, "ToLength", to_length_fun);
INSTALL_NATIVE(JSFunction, "$globalEval", global_eval_fun);
INSTALL_NATIVE(JSFunction, "$getStackTraceLine", get_stack_trace_line_fun);
while (%SetIteratorNext(iterator, value_array)) {
if (stepping) %DebugPrepareStepInIfStepping(f);
key = value_array[0];
- var new_receiver = needs_wrapper ? $toObject(receiver) : receiver;
+ var new_receiver = needs_wrapper ? ToObject(receiver) : receiver;
%_CallFunction(new_receiver, key, key, this, f);
}
}
var value_array = [UNDEFINED, UNDEFINED];
while (%MapIteratorNext(iterator, value_array)) {
if (stepping) %DebugPrepareStepInIfStepping(f);
- var new_receiver = needs_wrapper ? $toObject(receiver) : receiver;
+ var new_receiver = needs_wrapper ? ToObject(receiver) : receiver;
%_CallFunction(new_receiver, value_array[1], value_array[0], this, f);
}
}
// argument. We therefore use NUMBER_HINT for the conversion,
// which is the default for everything else than Date objects.
// This makes us behave like KJS and SpiderMonkey.
- var time = $toPrimitive(year, NUMBER_HINT);
- value = IS_STRING(time) ? DateParse(time) : $toNumber(time);
+ var time = ToPrimitive(year, NUMBER_HINT);
+ value = IS_STRING(time) ? DateParse(time) : ToNumber(time);
}
SET_UTC_DATE_VALUE(this, value);
} else {
- year = $toNumber(year);
- month = $toNumber(month);
- date = argc > 2 ? $toNumber(date) : 1;
- hours = argc > 3 ? $toNumber(hours) : 0;
- minutes = argc > 4 ? $toNumber(minutes) : 0;
- seconds = argc > 5 ? $toNumber(seconds) : 0;
- ms = argc > 6 ? $toNumber(ms) : 0;
+ year = ToNumber(year);
+ month = ToNumber(month);
+ date = argc > 2 ? ToNumber(date) : 1;
+ hours = argc > 3 ? ToNumber(hours) : 0;
+ minutes = argc > 4 ? ToNumber(minutes) : 0;
+ seconds = argc > 5 ? ToNumber(seconds) : 0;
+ ms = argc > 6 ? ToNumber(ms) : 0;
year = (!NUMBER_IS_NAN(year) &&
0 <= TO_INTEGER(year) &&
TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year;
// ECMA 262 - 15.9.4.2
function DateParse(string) {
- var arr = %DateParseString($toString(string), parse_buffer);
+ var arr = %DateParseString(ToString(string), parse_buffer);
if (IS_NULL(arr)) return NAN;
var day = MakeDay(arr[0], arr[1], arr[2]);
// ECMA 262 - 15.9.4.3
function DateUTC(year, month, date, hours, minutes, seconds, ms) {
- year = $toNumber(year);
- month = $toNumber(month);
+ year = ToNumber(year);
+ month = ToNumber(month);
var argc = %_ArgumentsLength();
- date = argc > 2 ? $toNumber(date) : 1;
- hours = argc > 3 ? $toNumber(hours) : 0;
- minutes = argc > 4 ? $toNumber(minutes) : 0;
- seconds = argc > 5 ? $toNumber(seconds) : 0;
- ms = argc > 6 ? $toNumber(ms) : 0;
+ date = argc > 2 ? ToNumber(date) : 1;
+ hours = argc > 3 ? ToNumber(hours) : 0;
+ minutes = argc > 4 ? ToNumber(minutes) : 0;
+ seconds = argc > 5 ? ToNumber(seconds) : 0;
+ ms = argc > 6 ? ToNumber(ms) : 0;
year = (!NUMBER_IS_NAN(year) &&
0 <= TO_INTEGER(year) &&
TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year;
// ECMA 262 - 15.9.5.27
function DateSetTime(ms) {
CHECK_DATE(this);
- SET_UTC_DATE_VALUE(this, $toNumber(ms));
+ SET_UTC_DATE_VALUE(this, ToNumber(ms));
return UTC_DATE_VALUE(this);
}
// ECMA 262 - 15.9.5.28
function DateSetMilliseconds(ms) {
var t = LOCAL_DATE_VALUE(this);
- ms = $toNumber(ms);
+ ms = ToNumber(ms);
var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms);
return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
}
// ECMA 262 - 15.9.5.29
function DateSetUTCMilliseconds(ms) {
var t = UTC_DATE_VALUE(this);
- ms = $toNumber(ms);
+ ms = ToNumber(ms);
var time = MakeTime(UTC_HOUR(this),
UTC_MIN(this),
UTC_SEC(this),
// ECMA 262 - 15.9.5.30
function DateSetSeconds(sec, ms) {
var t = LOCAL_DATE_VALUE(this);
- sec = $toNumber(sec);
- ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : $toNumber(ms);
+ sec = ToNumber(sec);
+ ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : ToNumber(ms);
var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms);
return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
}
// ECMA 262 - 15.9.5.31
function DateSetUTCSeconds(sec, ms) {
var t = UTC_DATE_VALUE(this);
- sec = $toNumber(sec);
- ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : $toNumber(ms);
+ sec = ToNumber(sec);
+ ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : ToNumber(ms);
var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms);
return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
}
// ECMA 262 - 15.9.5.33
function DateSetMinutes(min, sec, ms) {
var t = LOCAL_DATE_VALUE(this);
- min = $toNumber(min);
+ min = ToNumber(min);
var argc = %_ArgumentsLength();
- sec = argc < 2 ? LOCAL_SEC(this) : $toNumber(sec);
- ms = argc < 3 ? LOCAL_MS(this) : $toNumber(ms);
+ sec = argc < 2 ? LOCAL_SEC(this) : ToNumber(sec);
+ ms = argc < 3 ? LOCAL_MS(this) : ToNumber(ms);
var time = MakeTime(LOCAL_HOUR(this), min, sec, ms);
return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
}
// ECMA 262 - 15.9.5.34
function DateSetUTCMinutes(min, sec, ms) {
var t = UTC_DATE_VALUE(this);
- min = $toNumber(min);
+ min = ToNumber(min);
var argc = %_ArgumentsLength();
- sec = argc < 2 ? UTC_SEC(this) : $toNumber(sec);
- ms = argc < 3 ? UTC_MS(this) : $toNumber(ms);
+ sec = argc < 2 ? UTC_SEC(this) : ToNumber(sec);
+ ms = argc < 3 ? UTC_MS(this) : ToNumber(ms);
var time = MakeTime(UTC_HOUR(this), min, sec, ms);
return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
}
// ECMA 262 - 15.9.5.35
function DateSetHours(hour, min, sec, ms) {
var t = LOCAL_DATE_VALUE(this);
- hour = $toNumber(hour);
+ hour = ToNumber(hour);
var argc = %_ArgumentsLength();
- min = argc < 2 ? LOCAL_MIN(this) : $toNumber(min);
- sec = argc < 3 ? LOCAL_SEC(this) : $toNumber(sec);
- ms = argc < 4 ? LOCAL_MS(this) : $toNumber(ms);
+ min = argc < 2 ? LOCAL_MIN(this) : ToNumber(min);
+ sec = argc < 3 ? LOCAL_SEC(this) : ToNumber(sec);
+ ms = argc < 4 ? LOCAL_MS(this) : ToNumber(ms);
var time = MakeTime(hour, min, sec, ms);
return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
}
// ECMA 262 - 15.9.5.34
function DateSetUTCHours(hour, min, sec, ms) {
var t = UTC_DATE_VALUE(this);
- hour = $toNumber(hour);
+ hour = ToNumber(hour);
var argc = %_ArgumentsLength();
- min = argc < 2 ? UTC_MIN(this) : $toNumber(min);
- sec = argc < 3 ? UTC_SEC(this) : $toNumber(sec);
- ms = argc < 4 ? UTC_MS(this) : $toNumber(ms);
+ min = argc < 2 ? UTC_MIN(this) : ToNumber(min);
+ sec = argc < 3 ? UTC_SEC(this) : ToNumber(sec);
+ ms = argc < 4 ? UTC_MS(this) : ToNumber(ms);
var time = MakeTime(hour, min, sec, ms);
return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
}
// ECMA 262 - 15.9.5.36
function DateSetDate(date) {
var t = LOCAL_DATE_VALUE(this);
- date = $toNumber(date);
+ date = ToNumber(date);
var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date);
return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this)));
}
// ECMA 262 - 15.9.5.37
function DateSetUTCDate(date) {
var t = UTC_DATE_VALUE(this);
- date = $toNumber(date);
+ date = ToNumber(date);
var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date);
return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this)));
}
// ECMA 262 - 15.9.5.38
function DateSetMonth(month, date) {
var t = LOCAL_DATE_VALUE(this);
- month = $toNumber(month);
- date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : $toNumber(date);
+ month = ToNumber(month);
+ date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : ToNumber(date);
var day = MakeDay(LOCAL_YEAR(this), month, date);
return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this)));
}
// ECMA 262 - 15.9.5.39
function DateSetUTCMonth(month, date) {
var t = UTC_DATE_VALUE(this);
- month = $toNumber(month);
- date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : $toNumber(date);
+ month = ToNumber(month);
+ date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : ToNumber(date);
var day = MakeDay(UTC_YEAR(this), month, date);
return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this)));
}
// ECMA 262 - 15.9.5.40
function DateSetFullYear(year, month, date) {
var t = LOCAL_DATE_VALUE(this);
- year = $toNumber(year);
+ year = ToNumber(year);
var argc = %_ArgumentsLength();
var time ;
if (NUMBER_IS_NAN(t)) {
- month = argc < 2 ? 0 : $toNumber(month);
- date = argc < 3 ? 1 : $toNumber(date);
+ month = argc < 2 ? 0 : ToNumber(month);
+ date = argc < 3 ? 1 : ToNumber(date);
time = 0;
} else {
- month = argc < 2 ? LOCAL_MONTH(this) : $toNumber(month);
- date = argc < 3 ? LOCAL_DAY(this) : $toNumber(date);
+ month = argc < 2 ? LOCAL_MONTH(this) : ToNumber(month);
+ date = argc < 3 ? LOCAL_DAY(this) : ToNumber(date);
time = LOCAL_TIME_IN_DAY(this);
}
var day = MakeDay(year, month, date);
// ECMA 262 - 15.9.5.41
function DateSetUTCFullYear(year, month, date) {
var t = UTC_DATE_VALUE(this);
- year = $toNumber(year);
+ year = ToNumber(year);
var argc = %_ArgumentsLength();
var time ;
if (NUMBER_IS_NAN(t)) {
- month = argc < 2 ? 0 : $toNumber(month);
- date = argc < 3 ? 1 : $toNumber(date);
+ month = argc < 2 ? 0 : ToNumber(month);
+ date = argc < 3 ? 1 : ToNumber(date);
time = 0;
} else {
- month = argc < 2 ? UTC_MONTH(this) : $toNumber(month);
- date = argc < 3 ? UTC_DAY(this) : $toNumber(date);
+ month = argc < 2 ? UTC_MONTH(this) : ToNumber(month);
+ date = argc < 3 ? UTC_DAY(this) : ToNumber(date);
time = UTC_TIME_IN_DAY(this);
}
var day = MakeDay(year, month, date);
// ECMA 262 - B.2.5
function DateSetYear(year) {
CHECK_DATE(this);
- year = $toNumber(year);
+ year = ToNumber(year);
if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN);
year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99)
? 1900 + TO_INTEGER(year) : year;
function DateToJSON(key) {
- var o = $toObject(this);
- var tv = $defaultNumber(o);
+ var o = ToObject(this);
+ var tv = DefaultNumber(o);
if (IS_NUMBER(tv) && !NUMBER_IS_FINITE(tv)) {
return null;
}
try {
var mirror = exec_state.frame(0).evaluate(this.condition());
// If no sensible mirror or non true value break point not triggered.
- if (!(mirror instanceof ValueMirror) ||
- !builtins.$toBoolean(mirror.value_)) {
+ if (!(mirror instanceof ValueMirror) || !%ToBoolean(mirror.value_)) {
return false;
}
} catch (e) {
ExecutionState.prototype.prepareStep = function(opt_action, opt_count,
opt_callframe) {
var action = Debug.StepAction.StepIn;
- if (!IS_UNDEFINED(opt_action)) action = builtins.$toNumber(opt_action);
- var count = opt_count ? builtins.$toNumber(opt_count) : 1;
+ if (!IS_UNDEFINED(opt_action)) action = %ToNumber(opt_action);
+ var count = opt_count ? %ToNumber(opt_count) : 1;
var callFrameId = 0;
if (!IS_UNDEFINED(opt_callframe)) {
callFrameId = opt_callframe.details_.frameId();
};
ExecutionState.prototype.setSelectedFrame = function(index) {
- var i = builtins.$toNumber(index);
+ var i = %ToNumber(index);
if (i < 0 || i >= this.frameCount()) throw new Error('Illegal frame index.');
this.selected_frame = i;
};
response = this.createResponse();
}
response.success = false;
- response.message = builtins.$toString(e);
+ response.message = %ToString(e);
}
// Return the response as a JSON encoded string.
'"request_seq":' + request.seq + ',' +
'"type":"response",' +
'"success":false,' +
- '"message":"Internal error: ' + builtins.$toString(e) + '"}';
+ '"message":"Internal error: ' + %ToString(e) + '"}';
}
} catch (e) {
// Failed in one of the catch blocks above - most generic error.
// Get the stepcount argument if any.
if (stepcount) {
- count = builtins.$toNumber(stepcount);
+ count = %ToNumber(stepcount);
if (count < 0) {
throw new Error('Invalid stepcount argument "' + stepcount + '".');
}
// Find the function through a global evaluate.
f = this.exec_state_.evaluateGlobal(target).value();
} catch (e) {
- response.failed('Error: "' + builtins.$toString(e) +
+ response.failed('Error: "' + %ToString(e) +
'" evaluating "' + target + '"');
return;
}
}
// Pull out arguments.
- var break_point = builtins.$toNumber(request.arguments.breakpoint);
+ var break_point = %ToNumber(request.arguments.breakpoint);
var enabled = request.arguments.enabled;
var condition = request.arguments.condition;
var ignoreCount = request.arguments.ignoreCount;
}
// Pull out arguments.
- var break_point = builtins.$toNumber(request.arguments.breakpoint);
+ var break_point = %ToNumber(request.arguments.breakpoint);
// Check for legal arguments.
if (!break_point) {
// With no scope argument just return top scope.
var scope_index = 0;
if (request.arguments && !IS_UNDEFINED(request.arguments.number)) {
- scope_index = builtins.$toNumber(request.arguments.number);
+ scope_index = %ToNumber(request.arguments.number);
if (scope_index < 0 || scope_holder.scopeCount() <= scope_index) {
return response.failed('Invalid scope number');
}
if (IS_UNDEFINED(scope_description.number)) {
response.failed('Missing scope number');
}
- var scope_index = builtins.$toNumber(scope_description.number);
+ var scope_index = %ToNumber(scope_description.number);
var scope = scope_holder.scope(scope_index);
// Check whether a frame was specified.
if (!IS_UNDEFINED(frame)) {
- var frame_number = builtins.$toNumber(frame);
+ var frame_number = %ToNumber(frame);
if (frame_number < 0 || frame_number >= this.exec_state_.frameCount()) {
return response.failed('Invalid frame "' + frame + '"');
}
// Set 'includeSource' option for script lookup.
if (!IS_UNDEFINED(request.arguments.includeSource)) {
- var includeSource = builtins.$toBoolean(request.arguments.includeSource);
+ var includeSource = %ToBoolean(request.arguments.includeSource);
response.setOption('includeSource', includeSource);
}
to_line = request.arguments.toLine;
if (!IS_UNDEFINED(request.arguments.frame)) {
- var frame_number = builtins.$toNumber(request.arguments.frame);
+ var frame_number = %ToNumber(request.arguments.frame);
if (frame_number < 0 || frame_number >= this.exec_state_.frameCount()) {
return response.failed('Invalid frame "' + frame + '"');
}
if (request.arguments) {
// Pull out arguments.
if (!IS_UNDEFINED(request.arguments.types)) {
- types = builtins.$toNumber(request.arguments.types);
+ types = %ToNumber(request.arguments.types);
if (isNaN(types) || types < 0) {
return response.failed('Invalid types "' +
request.arguments.types + '"');
}
if (!IS_UNDEFINED(request.arguments.includeSource)) {
- includeSource = builtins.$toBoolean(request.arguments.includeSource);
+ includeSource = %ToBoolean(request.arguments.includeSource);
response.setOption('includeSource', includeSource);
}
var filterStr = null;
var filterNum = null;
if (!IS_UNDEFINED(request.arguments.filter)) {
- var num = builtins.$toNumber(request.arguments.filter);
+ var num = %ToNumber(request.arguments.filter);
if (!isNaN(num)) {
filterNum = num;
}
var frame_mirror;
// Check whether a frame was specified.
if (!IS_UNDEFINED(frame)) {
- var frame_number = builtins.$toNumber(frame);
+ var frame_number = %ToNumber(frame);
if (frame_number < 0 || frame_number >= this.exec_state_.frameCount()) {
return response.failed('Invalid frame "' + frame + '"');
}
// https://github.com/tc39/Array.prototype.includes
// 6e3b78c927aeda20b9d40e81303f9d44596cd904
function ArrayIncludes(searchElement, fromIndex) {
- var array = $toObject(this);
- var len = $toLength(array.length);
+ var array = ToObject(this);
+ var len = ToLength(array.length);
if (len === 0) {
return false;
}
- var n = $toInteger(fromIndex);
+ var n = ToInteger(fromIndex);
var k;
if (n >= 0) {
while (k < len) {
var elementK = array[k];
- if ($sameValueZero(searchElement, elementK)) {
+ if (SameValueZero(searchElement, elementK)) {
return true;
}
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.copyWithin");
var array = TO_OBJECT_INLINE(this);
- var length = $toLength(array.length);
+ var length = ToLength(array.length);
target = TO_INTEGER(target);
var to;
function ArrayFind(predicate /* thisArg */) { // length == 1
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.find");
- var array = $toObject(this);
- var length = $toInteger(array.length);
+ var array = ToObject(this);
+ var length = ToInteger(array.length);
if (!IS_SPEC_FUNCTION(predicate)) {
throw MakeTypeError(kCalledNonCallable, predicate);
for (var i = 0; i < length; i++) {
if (i in array) {
var element = array[i];
- var newThisArg = needs_wrapper ? $toObject(thisArg) : thisArg;
+ var newThisArg = needs_wrapper ? ToObject(thisArg) : thisArg;
if (%_CallFunction(newThisArg, element, i, array, predicate)) {
return element;
}
function ArrayFindIndex(predicate /* thisArg */) { // length == 1
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.findIndex");
- var array = $toObject(this);
- var length = $toInteger(array.length);
+ var array = ToObject(this);
+ var length = ToInteger(array.length);
if (!IS_SPEC_FUNCTION(predicate)) {
throw MakeTypeError(kCalledNonCallable, predicate);
for (var i = 0; i < length; i++) {
if (i in array) {
var element = array[i];
- var newThisArg = needs_wrapper ? $toObject(thisArg) : thisArg;
+ var newThisArg = needs_wrapper ? ToObject(thisArg) : thisArg;
if (%_CallFunction(newThisArg, element, i, array, predicate)) {
return i;
}
function ArrayFill(value /* [, start [, end ] ] */) { // length == 1
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.fill");
- var array = $toObject(this);
+ var array = ToObject(this);
var length = TO_UINT32(array.length);
var i = 0;
// ES6, draft 10-14-14, section 22.1.2.1
function ArrayFrom(arrayLike, mapfn, receiver) {
- var items = $toObject(arrayLike);
+ var items = ToObject(arrayLike);
var mapping = !IS_UNDEFINED(mapfn);
if (mapping) {
%AddElement(result, k++, mappedValue, NONE);
}
} else {
- var len = $toLength(items.length);
- result = %IsConstructor(this) ? new this(len) : new GlobalArray(len);
+ var len = ToLength(items.length);
+ result = %IsConstructor(this) ? new this(len) : new $Array(len);
for (k = 0; k < len; ++k) {
nextValue = items[k];
// + https://bugs.ecmascript.org/show_bug.cgi?id=3423
function RegExpGetFlags() {
if (!IS_SPEC_OBJECT(this)) {
- throw MakeTypeError(kFlagsGetterNonObject, $toString(this));
+ throw MakeTypeError(kFlagsGetterNonObject, %ToString(this));
}
var result = '';
if (this.global) result += 'g';
var element = this[i];
// Prepare break slots for debugger step in.
if (stepping) %DebugPrepareStepInIfStepping(f);
- var new_receiver = needs_wrapper ? $toObject(receiver) : receiver;
+ var new_receiver = needs_wrapper ? ToObject(receiver) : receiver;
%_CallFunction(new_receiver, TO_OBJECT_INLINE(element), i, this, f);
}
}
if (options === undefined) {
options = {};
} else {
- options = $toObject(options);
+ options = ToObject(options);
}
var matcher = options.localeMatcher;
return freezeArray(seen);
}
- var o = $toObject(locales);
+ var o = ToObject(locales);
// Converts it to UInt32 (>>> is shr on 32bit integers).
var len = o.length >>> 0;
return new Intl.Collator(locales, options);
}
- return initializeCollator($toObject(this), locales, options);
+ return initializeCollator(ToObject(this), locales, options);
},
DONT_ENUM
);
return new Intl.NumberFormat(locales, options);
}
- return initializeNumberFormat($toObject(this), locales, options);
+ return initializeNumberFormat(ToObject(this), locales, options);
},
DONT_ENUM
);
*/
function formatNumber(formatter, value) {
// Spec treats -0 and +0 as 0.
- var number = $toNumber(value) + 0;
+ var number = GlobalNumber(value) + 0;
return %InternalNumberFormat(%GetImplFromInitializedIntlObject(formatter),
number);
return new Intl.DateTimeFormat(locales, options);
}
- return initializeDateTimeFormat($toObject(this), locales, options);
+ return initializeDateTimeFormat(ToObject(this), locales, options);
},
DONT_ENUM
);
if (dateValue === undefined) {
dateMs = GlobalDate.now();
} else {
- dateMs = $toNumber(dateValue);
+ dateMs = GlobalNumber(dateValue);
}
if (!$isFinite(dateMs)) throw MakeRangeError(kDateRange);
return new Intl.v8BreakIterator(locales, options);
}
- return initializeBreakIterator($toObject(this), locales, options);
+ return initializeBreakIterator(ToObject(this), locales, options);
},
DONT_ENUM
);
if (IS_ARRAY(value)) {
return SerializeArray(value, replacer, stack, indent, gap);
} else if (IS_NUMBER_WRAPPER(value)) {
- value = $toNumber(value);
+ value = ToNumber(value);
return JSON_NUMBER_TO_STRING(value);
} else if (IS_STRING_WRAPPER(value)) {
- return %QuoteJSONString($toString(value));
+ return %QuoteJSONString(ToString(value));
} else if (IS_BOOLEAN_WRAPPER(value)) {
return %_ValueOf(value) ? "true" : "false";
} else {
if (IS_OBJECT(space)) {
// Unwrap 'space' if it is wrapped
if (IS_NUMBER_WRAPPER(space)) {
- space = $toNumber(space);
+ space = ToNumber(space);
} else if (IS_STRING_WRAPPER(space)) {
- space = $toString(space);
+ space = ToString(space);
}
}
var gap;
if (IS_NUMBER(space)) {
- space = $max(0, $min($toInteger(space), 10));
+ space = $max(0, $min(ToInteger(space), 10));
gap = %_SubString(" ", 0, space);
} else if (IS_STRING(space)) {
if (space.length > 10) {
for (var i = 0; i < length; i++) {
var item = replacer[i];
if (IS_STRING_WRAPPER(item)) {
- item = $toString(item);
+ item = ToString(item);
} else {
- if (IS_NUMBER_WRAPPER(item)) item = $toNumber(item);
+ if (IS_NUMBER_WRAPPER(item)) item = ToNumber(item);
if (IS_NUMBER(item)) item = %_NumberToString(item);
}
if (IS_STRING(item) && seen_properties[item] != seen_sentinel) {
# Inline macros. Use %IS_VAR to make sure arg is evaluated only once.
macro NUMBER_IS_NAN(arg) = (!%_IsSmi(%IS_VAR(arg)) && !(arg == arg));
macro NUMBER_IS_FINITE(arg) = (%_IsSmi(%IS_VAR(arg)) || ((arg == arg) && (arg != 1/0) && (arg != -1/0)));
-macro TO_INTEGER(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : %NumberToInteger($toNumber(arg)));
-macro TO_INTEGER_FOR_SIDE_EFFECT(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : $toNumber(arg));
-macro TO_INTEGER_MAP_MINUS_ZERO(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : %NumberToIntegerMapMinusZero($toNumber(arg)));
+macro TO_INTEGER(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : %NumberToInteger(ToNumber(arg)));
+macro TO_INTEGER_FOR_SIDE_EFFECT(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : ToNumber(arg));
+macro TO_INTEGER_MAP_MINUS_ZERO(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : %NumberToIntegerMapMinusZero(ToNumber(arg)));
macro TO_INT32(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : (arg >> 0));
macro TO_UINT32(arg) = (arg >>> 0);
-macro TO_STRING_INLINE(arg) = (IS_STRING(%IS_VAR(arg)) ? arg : $nonStringToString(arg));
-macro TO_NUMBER_INLINE(arg) = (IS_NUMBER(%IS_VAR(arg)) ? arg : $nonNumberToNumber(arg));
-macro TO_OBJECT_INLINE(arg) = (IS_SPEC_OBJECT(%IS_VAR(arg)) ? arg : $toObject(arg));
+macro TO_STRING_INLINE(arg) = (IS_STRING(%IS_VAR(arg)) ? arg : NonStringToString(arg));
+macro TO_NUMBER_INLINE(arg) = (IS_NUMBER(%IS_VAR(arg)) ? arg : NonNumberToNumber(arg));
+macro TO_OBJECT_INLINE(arg) = (IS_SPEC_OBJECT(%IS_VAR(arg)) ? arg : ToObject(arg));
macro JSON_NUMBER_TO_STRING(arg) = ((%_IsSmi(%IS_VAR(arg)) || arg - arg == 0) ? %_NumberToString(arg) : "null");
macro HAS_OWN_PROPERTY(arg, index) = (%_CallFunction(arg, index, $objectHasOwnProperty));
macro SHOULD_CREATE_WRAPPER(functionName, receiver) = (!IS_SPEC_OBJECT(receiver) && %IsSloppyModeFunction(functionName));
var r = -INFINITY;
for (var i = 0; i < length; i++) {
var n = %_Arguments(i);
- n = TO_NUMBER_INLINE(n);
+ if (!IS_NUMBER(n)) n = NonNumberToNumber(n);
// Make sure +0 is considered greater than -0.
if (NUMBER_IS_NAN(n) || n > r || (r === 0 && n === 0 && %_IsMinusZero(r))) {
r = n;
var r = INFINITY;
for (var i = 0; i < length; i++) {
var n = %_Arguments(i);
- n = TO_NUMBER_INLINE(n);
+ if (!IS_NUMBER(n)) n = NonNumberToNumber(n);
// Make sure -0 is considered less than +0.
if (NUMBER_IS_NAN(n) || n < r || (r === 0 && n === 0 && %_IsMinusZero(n))) {
r = n;
// ES6 draft 09-27-13, section 20.2.2.33.
function MathTanh(x) {
- x = TO_NUMBER_INLINE(x);
+ if (!IS_NUMBER(x)) x = NonNumberToNumber(x);
// Idempotent for +/-0.
if (x === 0) return x;
// Returns +/-1 for +/-Infinity.
// ES6 draft 09-27-13, section 20.2.2.5.
function MathAsinh(x) {
- x = TO_NUMBER_INLINE(x);
+ if (!IS_NUMBER(x)) x = NonNumberToNumber(x);
// Idempotent for NaN, +/-0 and +/-Infinity.
if (x === 0 || !NUMBER_IS_FINITE(x)) return x;
if (x > 0) return MathLog(x + %_MathSqrt(x * x + 1));
// ES6 draft 09-27-13, section 20.2.2.3.
function MathAcosh(x) {
- x = TO_NUMBER_INLINE(x);
+ if (!IS_NUMBER(x)) x = NonNumberToNumber(x);
if (x < 1) return NAN;
// Idempotent for NaN and +Infinity.
if (!NUMBER_IS_FINITE(x)) return x;
// ES6 draft 09-27-13, section 20.2.2.7.
function MathAtanh(x) {
- x = TO_NUMBER_INLINE(x);
+ if (!IS_NUMBER(x)) x = NonNumberToNumber(x);
// Idempotent for +/-0.
if (x === 0) return x;
// Returns NaN for NaN and +/- Infinity.
var max = 0;
for (var i = 0; i < length; i++) {
var n = %_Arguments(i);
- n = TO_NUMBER_INLINE(n);
+ if (!IS_NUMBER(n)) n = NonNumberToNumber(n);
if (n === INFINITY || n === -INFINITY) return INFINITY;
n = MathAbs(n);
if (n > max) max = n;
// Using initial approximation adapted from Kahan's cbrt and 4 iterations
// of Newton's method.
function MathCbrt(x) {
- x = TO_NUMBER_INLINE(x);
+ if (!IS_NUMBER(x)) x = NonNumberToNumber(x);
if (x == 0 || !NUMBER_IS_FINITE(x)) return x;
return x >= 0 ? CubeRoot(x) : -CubeRoot(-x);
}
if (CanBeSafelyTreatedAsAnErrorObject(obj)) {
return %_CallFunction(obj, ErrorToString);
} else {
- return $toString(obj);
+ return ToString(obj);
}
}
// object. This avoids going through getters and setters defined
// on prototype objects.
if (!IS_UNDEFINED(m)) {
- %AddNamedProperty(this, 'message', $toString(m), DONT_ENUM);
+ %AddNamedProperty(this, 'message', ToString(m), DONT_ENUM);
}
} else {
return new f(m);
ObjectMirror.prototype.property = function(name) {
- var details = %DebugGetPropertyDetails(this.value_, builtins.$toName(name));
+ var details = %DebugGetPropertyDetails(this.value_, %ToName(name));
if (details) {
return new PropertyMirror(this, name, details);
}
if (from_index > to_index) return new Array();
var values = new Array(to_index - from_index + 1);
for (var i = from_index; i <= to_index; i++) {
- var details = %DebugGetPropertyDetails(this.value_, builtins.$toString(i));
+ var details = %DebugGetPropertyDetails(this.value_, %ToString(i));
var value;
if (details) {
value = new PropertyMirror(this, i, details);
if (!IS_SPEC_OBJECT(arg)) throw MakeTypeError(kObserveInvalidAccept);
- var len = $toInteger(arg.length);
+ var len = ToInteger(arg.length);
if (len < 0) len = 0;
return TypeMapCreateFromList(arg, len);
// permissible values (see the DCHECK in heap.cc).
static const int kInitialMaxFastElementArray = 100000;
- // This constant applies only to the initial map of "global.Object" and
- // not to arbitrary other JSObject maps.
+ // This constant applies only to the initial map of "$Object" aka
+ // "global.Object" and not to arbitrary other JSObject maps.
static const int kInitialGlobalObjectUnusedPropertiesCount = 4;
static const int kMaxInstanceSize = 255 * kPointerSize;
pattern = pattern.source;
}
- pattern = IS_UNDEFINED(pattern) ? '' : $toString(pattern);
- flags = IS_UNDEFINED(flags) ? '' : $toString(flags);
+ pattern = IS_UNDEFINED(pattern) ? '' : ToString(pattern);
+ flags = IS_UNDEFINED(flags) ? '' : ToString(flags);
%RegExpInitializeAndCompile(object, pattern, flags);
}
return IS_UNDEFINED(regExpInput) ? "" : regExpInput;
};
var RegExpSetInput = function(string) {
- LAST_INPUT($regexpLastMatchInfo) = $toString(string);
+ LAST_INPUT($regexpLastMatchInfo) = ToString(string);
};
%OptimizeObjectForAddingMultipleProperties(GlobalRegExp, 22);
// The following declarations are shared with other native JS files.
// They are all declared at this one spot to avoid redeclaration errors.
-var EQUALS;
-var STRICT_EQUALS;
-var COMPARE;
-var ADD;
-var ADD_STRONG;
-var STRING_ADD_LEFT;
-var STRING_ADD_LEFT_STRONG;
-var STRING_ADD_RIGHT;
-var STRING_ADD_RIGHT_STRONG;
-var SUB;
-var SUB_STRONG;
-var MUL;
-var MUL_STRONG;
-var DIV;
-var DIV_STRONG;
-var MOD;
-var MOD_STRONG;
-var BIT_OR;
-var BIT_OR_STRONG;
-var BIT_AND;
-var BIT_AND_STRONG;
-var BIT_XOR;
-var BIT_XOR_STRONG;
-var SHL;
-var SHL_STRONG;
-var SAR;
-var SAR_STRONG;
-var SHR;
-var SHR_STRONG;
-var DELETE;
-var IN;
-var INSTANCE_OF;
-var FILTER_KEY;
-var CALL_NON_FUNCTION;
-var CALL_NON_FUNCTION_AS_CONSTRUCTOR;
-var CALL_FUNCTION_PROXY;
-var CALL_FUNCTION_PROXY_AS_CONSTRUCTOR;
-var APPLY_PREPARE;
-var REFLECT_APPLY_PREPARE;
-var REFLECT_CONSTRUCT_PREPARE;
-var STACK_OVERFLOW;
-var TO_OBJECT;
-var TO_NUMBER;
-var TO_STRING;
-var TO_NAME;
-
-var STRING_LENGTH_STUB;
-
-var $defaultNumber;
-var $defaultString;
-var $NaN;
-var $nonNumberToNumber;
-var $nonStringToString;
-var $sameValue;
-var $sameValueZero;
-var $toBoolean;
-var $toInt32;
-var $toInteger;
-var $toLength;
-var $toName;
-var $toNumber;
-var $toObject;
-var $toPositiveInteger;
-var $toPrimitive;
-var $toString;
-var $toUint32;
-
-(function() {
-
-%CheckIsBootstrapping();
-
-var GlobalArray = global.Array;
-var GlobalBoolean = global.Boolean;
-var GlobalString = global.String;
-var GlobalNumber = global.Number;
-
-// ----------------------------------------------------------------------------
+var $Object = global.Object;
+var $Array = global.Array;
+var $String = global.String;
+var $Number = global.Number;
+var $Function = global.Function;
+var $Boolean = global.Boolean;
+var $NaN = %GetRootNaN();
// ECMA-262 Section 11.9.3.
-EQUALS = function EQUALS(y) {
+function EQUALS(y) {
if (IS_STRING(this) && IS_STRING(y)) return %StringEquals(this, y);
var x = this;
if (IS_SYMBOL(y)) return 1; // not equal
if (!IS_SPEC_OBJECT(y)) {
// String or boolean.
- return %NumberEquals(x, %$toNumber(y));
+ return %NumberEquals(x, %ToNumber(y));
}
- y = %$toPrimitive(y, NO_HINT);
+ y = %ToPrimitive(y, NO_HINT);
}
} else if (IS_STRING(x)) {
while (true) {
if (IS_STRING(y)) return %StringEquals(x, y);
if (IS_SYMBOL(y)) return 1; // not equal
- 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(%ToNumber(x), y);
+ if (IS_BOOLEAN(y)) return %NumberEquals(%ToNumber(x), %ToNumber(y));
if (IS_NULL_OR_UNDEFINED(y)) return 1; // not equal
- y = %$toPrimitive(y, NO_HINT);
+ y = %ToPrimitive(y, NO_HINT);
}
} else if (IS_SYMBOL(x)) {
if (IS_SYMBOL(y)) return %_ObjectEquals(x, y) ? 0 : 1;
} 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(%ToNumber(x), y);
+ if (IS_STRING(y)) return %NumberEquals(%ToNumber(x), %ToNumber(y));
if (IS_SYMBOL(y)) return 1; // not equal
// y is object.
- x = %$toNumber(x);
- y = %$toPrimitive(y, NO_HINT);
+ x = %ToNumber(x);
+ y = %ToPrimitive(y, NO_HINT);
} else if (IS_NULL_OR_UNDEFINED(x)) {
return IS_NULL_OR_UNDEFINED(y) ? 0 : 1;
} else {
}
if (IS_NULL_OR_UNDEFINED(y)) return 1; // not equal
if (IS_SYMBOL(y)) return 1; // not equal
- if (IS_BOOLEAN(y)) y = %$toNumber(y);
- x = %$toPrimitive(x, NO_HINT);
+ if (IS_BOOLEAN(y)) y = %ToNumber(y);
+ x = %ToPrimitive(x, NO_HINT);
}
}
}
// ECMA-262, section 11.9.4, page 56.
-STRICT_EQUALS = function STRICT_EQUALS(x) {
+function STRICT_EQUALS(x) {
if (IS_STRING(this)) {
if (!IS_STRING(x)) return 1; // not equal
return %StringEquals(this, x);
// ECMA-262, section 11.8.5, page 53. The 'ncr' parameter is used as
// the result when either (or both) the operands are NaN.
-COMPARE = function COMPARE(x, ncr) {
+function COMPARE(x, ncr) {
var left;
var right;
// Fast cases for string, numbers and undefined compares.
left = this;
} else if (IS_UNDEFINED(this)) {
if (!IS_UNDEFINED(x)) {
- %$toPrimitive(x, NUMBER_HINT);
+ %ToPrimitive(x, NUMBER_HINT);
}
return ncr;
} else if (IS_UNDEFINED(x)) {
- %$toPrimitive(this, NUMBER_HINT);
+ %ToPrimitive(this, NUMBER_HINT);
return ncr;
} else {
- left = %$toPrimitive(this, NUMBER_HINT);
+ left = %ToPrimitive(this, NUMBER_HINT);
}
- right = %$toPrimitive(x, NUMBER_HINT);
+ right = %ToPrimitive(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 = %ToNumber(left);
+ var right_number = %ToNumber(right);
if (NUMBER_IS_NAN(left_number) || NUMBER_IS_NAN(right_number)) return ncr;
return %NumberCompare(left_number, right_number, ncr);
}
*/
// ECMA-262, section 11.6.1, page 50.
-ADD = function ADD(x) {
+function ADD(x) {
// Fast case: Check for number operands and do the addition.
if (IS_NUMBER(this) && IS_NUMBER(x)) return %NumberAdd(this, 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 = %ToPrimitive(this, NO_HINT);
+ var b = %ToPrimitive(x, NO_HINT);
if (IS_STRING(a)) {
- return %_StringAdd(a, %$toString(b));
+ return %_StringAdd(a, %ToString(b));
} else if (IS_STRING(b)) {
- return %_StringAdd(%$nonStringToString(a), b);
+ return %_StringAdd(%NonStringToString(a), b);
} else {
- return %NumberAdd(%$toNumber(a), %$toNumber(b));
+ return %NumberAdd(%ToNumber(a), %ToNumber(b));
}
}
// Strong mode ADD throws if an implicit conversion would be performed
-ADD_STRONG = function ADD_STRONG(x) {
+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);
// Left operand (this) is already a string.
-STRING_ADD_LEFT = function STRING_ADD_LEFT(y) {
+function STRING_ADD_LEFT(y) {
if (!IS_STRING(y)) {
if (IS_STRING_WRAPPER(y) && %_IsStringWrapperSafeForDefaultValueOf(y)) {
y = %_ValueOf(y);
} else {
y = IS_NUMBER(y)
? %_NumberToString(y)
- : %$toString(%$toPrimitive(y, NO_HINT));
+ : %ToString(%ToPrimitive(y, NO_HINT));
}
}
return %_StringAdd(this, y);
// Left operand (this) is already a string.
-STRING_ADD_LEFT_STRONG = function STRING_ADD_LEFT_STRONG(y) {
+function STRING_ADD_LEFT_STRONG(y) {
if (IS_STRING(y)) {
return %_StringAdd(this, y);
}
// Right operand (y) is already a string.
-STRING_ADD_RIGHT = function STRING_ADD_RIGHT(y) {
+function STRING_ADD_RIGHT(y) {
var x = this;
if (!IS_STRING(x)) {
if (IS_STRING_WRAPPER(x) && %_IsStringWrapperSafeForDefaultValueOf(x)) {
} else {
x = IS_NUMBER(x)
? %_NumberToString(x)
- : %$toString(%$toPrimitive(x, NO_HINT));
+ : %ToString(%ToPrimitive(x, NO_HINT));
}
}
return %_StringAdd(x, y);
// Right operand (y) is already a string.
-STRING_ADD_RIGHT_STRONG = function STRING_ADD_RIGHT_STRONG(y) {
+function STRING_ADD_RIGHT_STRONG(y) {
if (IS_STRING(this)) {
return %_StringAdd(this, y);
}
// ECMA-262, section 11.6.2, page 50.
-SUB = function SUB(y) {
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this);
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y);
+function SUB(y) {
+ var x = IS_NUMBER(this) ? this : %NonNumberToNumber(this);
+ if (!IS_NUMBER(y)) y = %NonNumberToNumber(y);
return %NumberSub(x, y);
}
// Strong mode SUB throws if an implicit conversion would be performed
-SUB_STRONG = function SUB_STRONG(y) {
+function SUB_STRONG(y) {
if (IS_NUMBER(this) && IS_NUMBER(y)) {
return %NumberSub(this, y);
}
// ECMA-262, section 11.5.1, page 48.
-MUL = function MUL(y) {
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this);
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y);
+function MUL(y) {
+ var x = IS_NUMBER(this) ? this : %NonNumberToNumber(this);
+ if (!IS_NUMBER(y)) y = %NonNumberToNumber(y);
return %NumberMul(x, y);
}
// Strong mode MUL throws if an implicit conversion would be performed
-MUL_STRONG = function MUL_STRONG(y) {
+function MUL_STRONG(y) {
if (IS_NUMBER(this) && IS_NUMBER(y)) {
return %NumberMul(this, y);
}
// ECMA-262, section 11.5.2, page 49.
-DIV = function DIV(y) {
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this);
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y);
+function DIV(y) {
+ var x = IS_NUMBER(this) ? this : %NonNumberToNumber(this);
+ if (!IS_NUMBER(y)) y = %NonNumberToNumber(y);
return %NumberDiv(x, y);
}
// Strong mode DIV throws if an implicit conversion would be performed
-DIV_STRONG = function DIV_STRONG(y) {
+function DIV_STRONG(y) {
if (IS_NUMBER(this) && IS_NUMBER(y)) {
return %NumberDiv(this, y);
}
// ECMA-262, section 11.5.3, page 49.
-MOD = function MOD(y) {
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this);
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y);
+function MOD(y) {
+ var x = IS_NUMBER(this) ? this : %NonNumberToNumber(this);
+ if (!IS_NUMBER(y)) y = %NonNumberToNumber(y);
return %NumberMod(x, y);
}
// Strong mode MOD throws if an implicit conversion would be performed
-MOD_STRONG = function MOD_STRONG(y) {
+function MOD_STRONG(y) {
if (IS_NUMBER(this) && IS_NUMBER(y)) {
return %NumberMod(this, y);
}
*/
// ECMA-262, section 11.10, page 57.
-BIT_OR = function BIT_OR(y) {
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this);
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y);
+function BIT_OR(y) {
+ var x = IS_NUMBER(this) ? this : %NonNumberToNumber(this);
+ if (!IS_NUMBER(y)) y = %NonNumberToNumber(y);
return %NumberOr(x, y);
}
// Strong mode BIT_OR throws if an implicit conversion would be performed
-BIT_OR_STRONG = function BIT_OR_STRONG(y) {
+function BIT_OR_STRONG(y) {
if (IS_NUMBER(this) && IS_NUMBER(y)) {
return %NumberOr(this, y);
}
// ECMA-262, section 11.10, page 57.
-BIT_AND = function BIT_AND(y) {
+function BIT_AND(y) {
var x;
if (IS_NUMBER(this)) {
x = this;
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y);
+ if (!IS_NUMBER(y)) y = %NonNumberToNumber(y);
} else {
- x = %$nonNumberToNumber(this);
+ x = %NonNumberToNumber(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 = %NonNumberToNumber(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.
// Strong mode BIT_AND throws if an implicit conversion would be performed
-BIT_AND_STRONG = function BIT_AND_STRONG(y) {
+function BIT_AND_STRONG(y) {
if (IS_NUMBER(this) && IS_NUMBER(y)) {
return %NumberAnd(this, y);
}
// ECMA-262, section 11.10, page 57.
-BIT_XOR = function BIT_XOR(y) {
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this);
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y);
+function BIT_XOR(y) {
+ var x = IS_NUMBER(this) ? this : %NonNumberToNumber(this);
+ if (!IS_NUMBER(y)) y = %NonNumberToNumber(y);
return %NumberXor(x, y);
}
// Strong mode BIT_XOR throws if an implicit conversion would be performed
-BIT_XOR_STRONG = function BIT_XOR_STRONG(y) {
+function BIT_XOR_STRONG(y) {
if (IS_NUMBER(this) && IS_NUMBER(y)) {
return %NumberXor(this, y);
}
// ECMA-262, section 11.7.1, page 51.
-SHL = function SHL(y) {
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this);
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y);
+function SHL(y) {
+ var x = IS_NUMBER(this) ? this : %NonNumberToNumber(this);
+ if (!IS_NUMBER(y)) y = %NonNumberToNumber(y);
return %NumberShl(x, y);
}
// Strong mode SHL throws if an implicit conversion would be performed
-SHL_STRONG = function SHL_STRONG(y) {
+function SHL_STRONG(y) {
if (IS_NUMBER(this) && IS_NUMBER(y)) {
return %NumberShl(this, y);
}
// ECMA-262, section 11.7.2, page 51.
-SAR = function SAR(y) {
+function SAR(y) {
var x;
if (IS_NUMBER(this)) {
x = this;
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y);
+ if (!IS_NUMBER(y)) y = %NonNumberToNumber(y);
} else {
- x = %$nonNumberToNumber(this);
+ x = %NonNumberToNumber(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 = %NonNumberToNumber(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.
// Strong mode SAR throws if an implicit conversion would be performed
-SAR_STRONG = function SAR_STRONG(y) {
+function SAR_STRONG(y) {
if (IS_NUMBER(this) && IS_NUMBER(y)) {
return %NumberSar(this, y);
}
// ECMA-262, section 11.7.3, page 52.
-SHR = function SHR(y) {
- var x = IS_NUMBER(this) ? this : %$nonNumberToNumber(this);
- if (!IS_NUMBER(y)) y = %$nonNumberToNumber(y);
+function SHR(y) {
+ var x = IS_NUMBER(this) ? this : %NonNumberToNumber(this);
+ if (!IS_NUMBER(y)) y = %NonNumberToNumber(y);
return %NumberShr(x, y);
}
// Strong mode SHR throws if an implicit conversion would be performed
-SHR_STRONG = function SHR_STRONG(y) {
+function SHR_STRONG(y) {
if (IS_NUMBER(this) && IS_NUMBER(y)) {
return %NumberShr(this, y);
}
*/
// ECMA-262, section 11.4.1, page 46.
-DELETE = function DELETE(key, language_mode) {
- return %DeleteProperty(%$toObject(this), %$toName(key), language_mode);
+function DELETE(key, language_mode) {
+ return %DeleteProperty(%ToObject(this), %ToName(key), language_mode);
}
// ECMA-262, section 11.8.7, page 54.
-IN = function IN(x) {
+function IN(x) {
if (!IS_SPEC_OBJECT(x)) {
throw %MakeTypeError(kInvalidInOperatorUse, this, x);
}
}
return %HasElement(x, this);
}
- return %HasProperty(x, %$toName(this));
+ return %HasProperty(x, %ToName(this));
}
// efficient, the return value should be zero if the 'this' is an
// instance of F, and non-zero if not. This makes it possible to avoid
// an expensive ToBoolean conversion in the generated code.
-INSTANCE_OF = function INSTANCE_OF(F) {
+function INSTANCE_OF(F) {
var V = this;
if (!IS_SPEC_FUNCTION(F)) {
throw %MakeTypeError(kInstanceofFunctionExpected, F);
// Filter a given key against an object by checking if the object
// has a property with the given key; return the key as a string if
// it has. Otherwise returns 0 (smi). Used in for-in statements.
-FILTER_KEY = function FILTER_KEY(key) {
- var string = %$toName(key);
+function FILTER_KEY(key) {
+ var string = %ToName(key);
if (%HasProperty(this, string)) return string;
return 0;
}
-CALL_NON_FUNCTION = function CALL_NON_FUNCTION() {
+function CALL_NON_FUNCTION() {
var delegate = %GetFunctionDelegate(this);
if (!IS_FUNCTION(delegate)) {
var callsite = %RenderCallSite();
}
-CALL_NON_FUNCTION_AS_CONSTRUCTOR = function CALL_NON_FUNCTION_AS_CONSTRUCTOR() {
+function CALL_NON_FUNCTION_AS_CONSTRUCTOR() {
var delegate = %GetConstructorDelegate(this);
if (!IS_FUNCTION(delegate)) {
var callsite = %RenderCallSite();
}
-CALL_FUNCTION_PROXY = function CALL_FUNCTION_PROXY() {
+function CALL_FUNCTION_PROXY() {
var arity = %_ArgumentsLength() - 1;
var proxy = %_Arguments(arity); // The proxy comes in as an additional arg.
var trap = %GetCallTrap(proxy);
}
-CALL_FUNCTION_PROXY_AS_CONSTRUCTOR =
- function CALL_FUNCTION_PROXY_AS_CONSTRUCTOR () {
+function CALL_FUNCTION_PROXY_AS_CONSTRUCTOR() {
var proxy = this;
var trap = %GetConstructTrap(proxy);
return %Apply(trap, this, arguments, 0, %_ArgumentsLength());
}
-APPLY_PREPARE = function APPLY_PREPARE(args) {
+function APPLY_PREPARE(args) {
var length;
// First check whether length is a positive Smi and args is an
// array. This is the fast case. If this fails, we do the slow case
}
}
- length = (args == null) ? 0 : %$toUint32(args.length);
+ length = (args == null) ? 0 : %ToUint32(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
if (length > kSafeArgumentsLength) throw %MakeRangeError(kStackOverflow);
if (!IS_SPEC_FUNCTION(this)) {
- throw %MakeTypeError(kApplyNonFunction, %$toString(this), typeof this);
+ throw %MakeTypeError(kApplyNonFunction, %ToString(this), typeof this);
}
// Make sure the arguments list has the right type.
}
-REFLECT_APPLY_PREPARE = function REFLECT_APPLY_PREPARE(args) {
+function REFLECT_APPLY_PREPARE(args) {
var length;
// First check whether length is a positive Smi and args is an
// array. This is the fast case. If this fails, we do the slow case
}
if (!IS_SPEC_FUNCTION(this)) {
- throw %MakeTypeError(kCalledNonCallable, %$toString(this));
+ throw %MakeTypeError(kCalledNonCallable, %ToString(this));
}
if (!IS_SPEC_OBJECT(args)) {
throw %MakeTypeError(kWrongArgs, "Reflect.apply");
}
- length = %$toLength(args.length);
+ length = %ToLength(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
}
-REFLECT_CONSTRUCT_PREPARE = function REFLECT_CONSTRUCT_PREPARE(
- args, newTarget) {
+function REFLECT_CONSTRUCT_PREPARE(args, newTarget) {
var length;
var ctorOk = IS_SPEC_FUNCTION(this) && %IsConstructor(this);
var newTargetOk = IS_SPEC_FUNCTION(newTarget) && %IsConstructor(newTarget);
if (!ctorOk) {
if (!IS_SPEC_FUNCTION(this)) {
- throw %MakeTypeError(kCalledNonCallable, %$toString(this));
+ throw %MakeTypeError(kCalledNonCallable, %ToString(this));
} else {
- throw %MakeTypeError(kNotConstructor, %$toString(this));
+ throw %MakeTypeError(kNotConstructor, %ToString(this));
}
}
if (!newTargetOk) {
if (!IS_SPEC_FUNCTION(newTarget)) {
- throw %MakeTypeError(kCalledNonCallable, %$toString(newTarget));
+ throw %MakeTypeError(kCalledNonCallable, %ToString(newTarget));
} else {
- throw %MakeTypeError(kNotConstructor, %$toString(newTarget));
+ throw %MakeTypeError(kNotConstructor, %ToString(newTarget));
}
}
throw %MakeTypeError(kWrongArgs, "Reflect.construct");
}
- length = %$toLength(args.length);
+ length = %ToLength(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
}
-STACK_OVERFLOW = function STACK_OVERFLOW(length) {
+function STACK_OVERFLOW(length) {
throw %MakeRangeError(kStackOverflow);
}
// Convert the receiver to an object - forward to ToObject.
-TO_OBJECT = function TO_OBJECT() {
- return %$toObject(this);
+function TO_OBJECT() {
+ return %ToObject(this);
}
// Convert the receiver to a number - forward to ToNumber.
-TO_NUMBER = function TO_NUMBER() {
- return %$toNumber(this);
+function TO_NUMBER() {
+ return %ToNumber(this);
}
// Convert the receiver to a string - forward to ToString.
-TO_STRING = function TO_STRING() {
- return %$toString(this);
+function TO_STRING() {
+ return %ToString(this);
}
// Convert the receiver to a string or symbol - forward to ToName.
-TO_NAME = function TO_NAME() {
- return %$toName(this);
-}
-
-
-/* -----------------------------------------------
- - - - J a v a S c r i p t S t u b s - - -
- -----------------------------------------------
-*/
-
-STRING_LENGTH_STUB = function STRING_LENGTH_STUB(name) {
- var receiver = this; // implicit first parameter
- return %_StringGetLength(%_JSValueGetValue(receiver));
+function TO_NAME() {
+ return %ToName(this);
}
if (!IS_SPEC_OBJECT(x)) return x;
if (IS_SYMBOL_WRAPPER(x)) throw MakeTypeError(kSymbolToPrimitive);
if (hint == NO_HINT) hint = (IS_DATE(x)) ? STRING_HINT : NUMBER_HINT;
- return (hint == NUMBER_HINT) ? DefaultNumber(x) : DefaultString(x);
+ return (hint == NUMBER_HINT) ? %DefaultNumber(x) : %DefaultString(x);
}
if (IS_BOOLEAN(x)) return x ? 1 : 0;
if (IS_UNDEFINED(x)) return NAN;
if (IS_SYMBOL(x)) throw MakeTypeError(kSymbolToNumber);
- return (IS_NULL(x)) ? 0 : ToNumber(DefaultNumber(x));
+ return (IS_NULL(x)) ? 0 : ToNumber(%DefaultNumber(x));
}
function NonNumberToNumber(x) {
if (IS_BOOLEAN(x)) return x ? 1 : 0;
if (IS_UNDEFINED(x)) return NAN;
if (IS_SYMBOL(x)) throw MakeTypeError(kSymbolToNumber);
- return (IS_NULL(x)) ? 0 : ToNumber(DefaultNumber(x));
+ return (IS_NULL(x)) ? 0 : ToNumber(%DefaultNumber(x));
}
if (IS_NUMBER(x)) return %_NumberToString(x);
if (IS_BOOLEAN(x)) return x ? 'true' : 'false';
if (IS_UNDEFINED(x)) return 'undefined';
- if (IS_SYMBOL(x)) throw MakeTypeError(kSymbolToString);
- return (IS_NULL(x)) ? 'null' : ToString(DefaultString(x));
+ if (IS_SYMBOL(x)) throw %MakeTypeError(kSymbolToString);
+ return (IS_NULL(x)) ? 'null' : %ToString(%DefaultString(x));
}
function NonStringToString(x) {
if (IS_NUMBER(x)) return %_NumberToString(x);
if (IS_BOOLEAN(x)) return x ? 'true' : 'false';
if (IS_UNDEFINED(x)) return 'undefined';
- if (IS_SYMBOL(x)) throw MakeTypeError(kSymbolToString);
- return (IS_NULL(x)) ? 'null' : ToString(DefaultString(x));
+ if (IS_SYMBOL(x)) throw %MakeTypeError(kSymbolToString);
+ return (IS_NULL(x)) ? 'null' : %ToString(%DefaultString(x));
}
// ES6 symbols
function ToName(x) {
- return IS_SYMBOL(x) ? x : ToString(x);
+ return IS_SYMBOL(x) ? x : %ToString(x);
}
// ECMA-262, section 9.9, page 36.
function ToObject(x) {
- if (IS_STRING(x)) return new GlobalString(x);
- if (IS_NUMBER(x)) return new GlobalNumber(x);
- if (IS_BOOLEAN(x)) return new GlobalBoolean(x);
+ if (IS_STRING(x)) return new $String(x);
+ if (IS_NUMBER(x)) return new $Number(x);
+ if (IS_BOOLEAN(x)) return new $Boolean(x);
if (IS_SYMBOL(x)) return %NewSymbolWrapper(x);
if (IS_NULL_OR_UNDEFINED(x) && !IS_UNDETECTABLE(x)) {
- throw MakeTypeError(kUndefinedOrNullToObject);
+ throw %MakeTypeError(kUndefinedOrNullToObject);
}
return x;
}
function ToLength(arg) {
arg = ToInteger(arg);
if (arg < 0) return 0;
- return arg < GlobalNumber.MAX_SAFE_INTEGER ? arg
- : GlobalNumber.MAX_SAFE_INTEGER;
+ return arg < $Number.MAX_SAFE_INTEGER ? arg : $Number.MAX_SAFE_INTEGER;
}
return x === y;
}
-
// ES6, section 7.2.4
function SameValueZero(x, y) {
if (typeof x != typeof y) return false;
var valueOf = x.valueOf;
if (IS_SPEC_FUNCTION(valueOf)) {
var v = %_CallFunction(x, valueOf);
- if (IsPrimitive(v)) return v;
+ if (%IsPrimitive(v)) return v;
}
var toString = x.toString;
if (IS_SPEC_FUNCTION(toString)) {
var s = %_CallFunction(x, toString);
- if (IsPrimitive(s)) return s;
+ if (%IsPrimitive(s)) return s;
}
}
- throw MakeTypeError(kCannotConvertToPrimitive);
+ throw %MakeTypeError(kCannotConvertToPrimitive);
}
// ECMA-262, section 8.6.2.6, page 28.
var toString = x.toString;
if (IS_SPEC_FUNCTION(toString)) {
var s = %_CallFunction(x, toString);
- if (IsPrimitive(s)) return s;
+ if (%IsPrimitive(s)) return s;
}
var valueOf = x.valueOf;
if (IS_SPEC_FUNCTION(valueOf)) {
var v = %_CallFunction(x, valueOf);
- if (IsPrimitive(v)) return v;
+ if (%IsPrimitive(v)) return v;
}
}
- throw MakeTypeError(kCannotConvertToPrimitive);
+ throw %MakeTypeError(kCannotConvertToPrimitive);
}
function ToPositiveInteger(x, rangeErrorIndex) {
return i;
}
-//----------------------------------------------------------------------------
// NOTE: Setting the prototype for Array must take place as early as
// possible due to code generation for array literals. When
// generating code for a array literal a boilerplate array is created
// that is cloned when running the code. It is essential that the
// boilerplate gets the right prototype.
-%FunctionSetPrototype(GlobalArray, new GlobalArray(0));
-
-//----------------------------------------------------------------------------
-
-$defaultNumber = DefaultNumber;
-$defaultString = DefaultString;
-$NaN = %GetRootNaN();
-$nonNumberToNumber = NonNumberToNumber;
-$nonStringToString = NonStringToString;
-$sameValue = SameValue;
-$sameValueZero = SameValueZero;
-$toBoolean = ToBoolean;
-$toInt32 = ToInt32;
-$toInteger = ToInteger;
-$toLength = ToLength;
-$toName = ToName;
-$toNumber = ToNumber;
-$toObject = ToObject;
-$toPositiveInteger = ToPositiveInteger;
-$toPrimitive = ToPrimitive;
-$toString = ToString;
-$toUint32 = ToUint32;
-
-})();
+%FunctionSetPrototype($Array, new $Array(0));
+
+
+/* -----------------------------------------------
+ - - - J a v a S c r i p t S t u b s - - -
+ -----------------------------------------------
+*/
+
+function STRING_LENGTH_STUB(name) {
+ var receiver = this; // implicit first parameter
+ return %_StringGetLength(%_JSValueGetValue(receiver));
+}
// 21.1.5.2.1 %StringIteratorPrototype%.next( )
function StringIteratorNext() {
- var iterator = $toObject(this);
+ var iterator = ToObject(this);
if (!HAS_DEFINED_PRIVATE(iterator, stringIteratorNextIndexSymbol)) {
throw MakeTypeError(kIncompatibleMethodReceiver,
var patLength = pat.length;
var index = subLength - patLength;
if (%_ArgumentsLength() > 1) {
- var position = $toNumber(%_Arguments(1));
+ var position = ToNumber(%_Arguments(1));
if (!NUMBER_IS_NAN(position)) {
position = TO_INTEGER(position);
if (position < 0) {
function StringFromCharCode(code) {
var n = %_ArgumentsLength();
if (n == 1) {
- if (!%_IsSmi(code)) code = $toNumber(code);
+ if (!%_IsSmi(code)) code = ToNumber(code);
return %_StringCharFromCode(code & 0xffff);
}
var i;
for (i = 0; i < n; i++) {
var code = %_Arguments(i);
- if (!%_IsSmi(code)) code = $toNumber(code) & 0xffff;
+ if (!%_IsSmi(code)) code = ToNumber(code) & 0xffff;
if (code < 0) code = code & 0xffff;
if (code > 0xff) break;
%_OneByteSeqStringSetChar(i, code, one_byte);
var two_byte = %NewString(n - i, NEW_TWO_BYTE_STRING);
for (var j = 0; i < n; i++, j++) {
var code = %_Arguments(i);
- if (!%_IsSmi(code)) code = $toNumber(code) & 0xffff;
+ if (!%_IsSmi(code)) code = ToNumber(code) & 0xffff;
%_TwoByteSeqStringSetChar(j, code, two_byte);
}
return one_byte + two_byte;
CHECK_OBJECT_COERCIBLE(this, "String.prototype.repeat");
var s = TO_STRING_INLINE(this);
- var n = $toInteger(count);
+ var n = ToInteger(count);
// The maximum string length is stored in a smi, so a longer repeat
// must result in a range error.
if (n < 0 || n > %_MaxSmi()) throw MakeRangeError(kInvalidCountValue);
var pos = 0;
if (%_ArgumentsLength() > 1) {
pos = %_Arguments(1); // position
- pos = $toInteger(pos);
+ pos = ToInteger(pos);
}
var s_len = s.length;
if (%_ArgumentsLength() > 1) {
var arg = %_Arguments(1); // position
if (!IS_UNDEFINED(arg)) {
- pos = $toInteger(arg);
+ pos = ToInteger(arg);
}
}
var pos = 0;
if (%_ArgumentsLength() > 1) {
pos = %_Arguments(1); // position
- pos = $toInteger(pos);
+ pos = ToInteger(pos);
}
var s_len = s.length;
for (index = 0; index < length; index++) {
code = %_Arguments(index);
if (!%_IsSmi(code)) {
- code = $toNumber(code);
+ code = ToNumber(code);
}
if (code < 0 || code > 0x10FFFF || code !== TO_INTEGER(code)) {
throw MakeRangeError(kInvalidCodePoint, code);
function StringRaw(callSite) {
// TODO(caitp): Use rest parameters when implemented
var numberOfSubstitutions = %_ArgumentsLength();
- var cooked = $toObject(callSite);
- var raw = $toObject(cooked.raw);
- var literalSegments = $toLength(raw.length);
+ var cooked = ToObject(callSite);
+ var raw = ToObject(cooked.raw);
+ var literalSegments = ToLength(raw.length);
if (literalSegments <= 0) return "";
- var result = $toString(raw[0]);
+ var result = ToString(raw[0]);
for (var i = 1; i < literalSegments; ++i) {
if (i < numberOfSubstitutions) {
- result += $toString(%_Arguments(i));
+ result += ToString(%_Arguments(i));
}
- result += $toString(raw[i]);
+ result += ToString(raw[i]);
}
return result;
function SymbolConstructor(x) {
if (%_IsConstructCall()) throw MakeTypeError(kNotConstructor, "Symbol");
// NOTE: Passing in a Symbol value will throw on ToString().
- return %CreateSymbol(IS_UNDEFINED(x) ? x : $toString(x));
+ return %CreateSymbol(IS_UNDEFINED(x) ? x : ToString(x));
}
// ES6 19.1.2.8
function ObjectGetOwnPropertySymbols(obj) {
- obj = $toObject(obj);
+ obj = ToObject(obj);
// TODO(arv): Proxies use a shared trap for String and Symbol keys.
function NAMEConstructByArrayBuffer(obj, buffer, byteOffset, length) {
if (!IS_UNDEFINED(byteOffset)) {
byteOffset =
- $toPositiveInteger(byteOffset, kInvalidTypedArrayLength);
+ ToPositiveInteger(byteOffset, kInvalidTypedArrayLength);
}
if (!IS_UNDEFINED(length)) {
- length = $toPositiveInteger(length, kInvalidTypedArrayLength);
+ length = ToPositiveInteger(length, kInvalidTypedArrayLength);
}
var bufferByteLength = %_ArrayBufferGetByteLength(buffer);
function NAMEConstructByLength(obj, length) {
var l = IS_UNDEFINED(length) ?
- 0 : $toPositiveInteger(length, kInvalidTypedArrayLength);
+ 0 : ToPositiveInteger(length, kInvalidTypedArrayLength);
if (l > %_MaxSmi()) {
throw MakeRangeError(kInvalidTypedArrayLength);
}
function NAMEConstructByArrayLike(obj, arrayLike) {
var length = arrayLike.length;
- var l = $toPositiveInteger(length, kInvalidTypedArrayLength);
+ var l = ToPositiveInteger(length, kInvalidTypedArrayLength);
if (l > %_MaxSmi()) {
throw MakeRangeError(kInvalidTypedArrayLength);
if (%_IsConstructCall()) {
if (!IS_ARRAYBUFFER(buffer)) throw MakeTypeError(kDataViewNotArrayBuffer);
if (!IS_UNDEFINED(byteOffset)) {
- byteOffset = $toPositiveInteger(byteOffset, kInvalidDataViewOffset);
+ byteOffset = ToPositiveInteger(byteOffset, kInvalidDataViewOffset);
}
if (!IS_UNDEFINED(byteLength)) {
byteLength = TO_INTEGER(byteLength);
FUNCTION(Float64)
endmacro
+function ToPositiveDataViewOffset(offset) {
+ return ToPositiveInteger(offset, kInvalidDataViewAccessorOffset);
+}
+
macro DATA_VIEW_GETTER_SETTER(TYPENAME)
function DataViewGetTYPENAMEJS(offset, little_endian) {
'DataView.getTYPENAME', this);
}
if (%_ArgumentsLength() < 1) throw MakeTypeError(kInvalidArgument);
- offset = $toPositiveInteger(offset, kInvalidDataViewAccessorOffset);
- return %DataViewGetTYPENAME(this, offset, !!little_endian);
+ return %DataViewGetTYPENAME(this,
+ ToPositiveDataViewOffset(offset),
+ !!little_endian);
}
function DataViewSetTYPENAMEJS(offset, value, little_endian) {
'DataView.setTYPENAME', this);
}
if (%_ArgumentsLength() < 2) throw MakeTypeError(kInvalidArgument);
- offset = $toPositiveInteger(offset, kInvalidDataViewAccessorOffset);
- %DataViewSetTYPENAME(this, offset, TO_NUMBER_INLINE(value), !!little_endian);
+ %DataViewSetTYPENAME(this,
+ ToPositiveDataViewOffset(offset),
+ TO_NUMBER_INLINE(value),
+ !!little_endian);
}
endmacro
// ECMA-262 - B.2.1.
function URIEscapeJS(str) {
- var s = $toString(str);
+ var s = ToString(str);
return %URIEscape(s);
}
// ECMA-262 - B.2.2.
function URIUnescapeJS(str) {
- var s = $toString(str);
+ var s = ToString(str);
return %URIUnescape(s);
}
return false;
};
- var string = $toString(uri);
+ var string = ToString(uri);
return Decode(string, reservedPredicate);
}
// ECMA-262 - 15.1.3.2.
function URIDecodeComponent(component) {
var reservedPredicate = function(cc) { return false; };
- var string = $toString(component);
+ var string = ToString(component);
return Decode(string, reservedPredicate);
}
return false;
};
- var string = $toString(uri);
+ var string = ToString(uri);
return Encode(string, unescapePredicate);
}
return false;
};
- var string = $toString(component);
+ var string = ToString(component);
return Encode(string, unescapePredicate);
}
// ECMA 262 - 15.1.4
function GlobalIsNaN(number) {
- number = TO_NUMBER_INLINE(number);
+ if (!IS_NUMBER(number)) number = NonNumberToNumber(number);
return NUMBER_IS_NAN(number);
}
// ECMA 262 - 15.1.5
function GlobalIsFinite(number) {
- number = TO_NUMBER_INLINE(number);
+ if (!IS_NUMBER(number)) number = NonNumberToNumber(number);
return NUMBER_IS_FINITE(number);
}
if (IS_SYMBOL(V)) return false;
var handler = %GetHandler(this);
- return CallTrap1(handler, "hasOwn", $proxyDerivedHasOwnTrap, $toName(V));
+ return CallTrap1(handler, "hasOwn", $proxyDerivedHasOwnTrap, ToName(V));
}
- return %HasOwnProperty(TO_OBJECT_INLINE(this), $toName(V));
+ return %HasOwnProperty(TO_OBJECT_INLINE(this), ToName(V));
}
// ECMA-262 - 15.2.4.6
function ObjectPropertyIsEnumerable(V) {
- var P = $toName(V);
+ var P = ToName(V);
if (%_IsJSProxy(this)) {
// TODO(rossberg): adjust once there is a story for symbols vs proxies.
if (IS_SYMBOL(V)) return false;
desc.setGet(fun);
desc.setEnumerable(true);
desc.setConfigurable(true);
- DefineOwnProperty(TO_OBJECT_INLINE(receiver), $toName(name), desc, false);
+ DefineOwnProperty(TO_OBJECT_INLINE(receiver), ToName(name), desc, false);
}
if (receiver == null && !IS_UNDETECTABLE(receiver)) {
receiver = %GlobalProxy(global);
}
- return %LookupAccessor(TO_OBJECT_INLINE(receiver), $toName(name), GETTER);
+ return %LookupAccessor(TO_OBJECT_INLINE(receiver), ToName(name), GETTER);
}
desc.setSet(fun);
desc.setEnumerable(true);
desc.setConfigurable(true);
- DefineOwnProperty(TO_OBJECT_INLINE(receiver), $toName(name), desc, false);
+ DefineOwnProperty(TO_OBJECT_INLINE(receiver), ToName(name), desc, false);
}
if (receiver == null && !IS_UNDETECTABLE(receiver)) {
receiver = %GlobalProxy(global);
}
- return %LookupAccessor(TO_OBJECT_INLINE(receiver), $toName(name), SETTER);
+ return %LookupAccessor(TO_OBJECT_INLINE(receiver), ToName(name), SETTER);
}
var desc = new PropertyDescriptor();
if ("enumerable" in obj) {
- desc.setEnumerable($toBoolean(obj.enumerable));
+ desc.setEnumerable(ToBoolean(obj.enumerable));
}
if ("configurable" in obj) {
- desc.setConfigurable($toBoolean(obj.configurable));
+ desc.setConfigurable(ToBoolean(obj.configurable));
}
if ("value" in obj) {
}
if ("writable" in obj) {
- desc.setWritable($toBoolean(obj.writable));
+ desc.setWritable(ToBoolean(obj.writable));
}
if ("get" in obj) {
// ES5 section 8.12.1.
function GetOwnPropertyJS(obj, v) {
- var p = $toName(v);
+ var p = ToName(v);
if (%_IsJSProxy(obj)) {
// TODO(rossberg): adjust once there is a story for symbols vs proxies.
if (IS_SYMBOL(v)) return UNDEFINED;
var handler = %GetHandler(obj);
var result = CallTrap2(handler, "defineProperty", UNDEFINED, p, attributes);
- if (!$toBoolean(result)) {
+ if (!ToBoolean(result)) {
if (should_throw) {
throw MakeTypeError(kProxyHandlerReturned,
handler, "false", "defineProperty");
// ES5 8.12.9.
function DefineObjectProperty(obj, p, desc, should_throw) {
- var current_array = %GetOwnProperty(obj, $toName(p));
+ var current_array = %GetOwnProperty(obj, ToName(p));
var current = ConvertDescriptorArrayToDescriptor(current_array);
var extensible = %IsExtensible(obj);
if ((IsGenericDescriptor(desc) ||
IsDataDescriptor(desc) == IsDataDescriptor(current)) &&
(!desc.hasEnumerable() ||
- $sameValue(desc.isEnumerable(), current.isEnumerable())) &&
+ SameValue(desc.isEnumerable(), current.isEnumerable())) &&
(!desc.hasConfigurable() ||
- $sameValue(desc.isConfigurable(), current.isConfigurable())) &&
+ SameValue(desc.isConfigurable(), current.isConfigurable())) &&
(!desc.hasWritable() ||
- $sameValue(desc.isWritable(), current.isWritable())) &&
+ SameValue(desc.isWritable(), current.isWritable())) &&
(!desc.hasValue() ||
- $sameValue(desc.getValue(), current.getValue())) &&
+ SameValue(desc.getValue(), current.getValue())) &&
(!desc.hasGetter() ||
- $sameValue(desc.getGet(), current.getGet())) &&
+ SameValue(desc.getGet(), current.getGet())) &&
(!desc.hasSetter() ||
- $sameValue(desc.getSet(), current.getSet()))) {
+ SameValue(desc.getSet(), current.getSet()))) {
return true;
}
if (!current.isConfigurable()) {
}
}
if (!current.isWritable() && desc.hasValue() &&
- !$sameValue(desc.getValue(), current.getValue())) {
+ !SameValue(desc.getValue(), current.getValue())) {
if (should_throw) {
throw MakeTypeError(kRedefineDisallowed, p);
} else {
}
// Step 11
if (IsAccessorDescriptor(desc) && IsAccessorDescriptor(current)) {
- if (desc.hasSetter() &&
- !$sameValue(desc.getSet(), current.getSet())) {
+ if (desc.hasSetter() && !SameValue(desc.getSet(), current.getSet())) {
if (should_throw) {
throw MakeTypeError(kRedefineDisallowed, p);
} else {
return false;
}
}
- if (desc.hasGetter() && !$sameValue(desc.getGet(),current.getGet())) {
+ if (desc.hasGetter() && !SameValue(desc.getGet(),current.getGet())) {
if (should_throw) {
throw MakeTypeError(kRedefineDisallowed, p);
} else {
if (!desc.hasValue()) {
return DefineObjectProperty(obj, "length", desc, should_throw);
}
- var new_length = $toUint32(desc.getValue());
- if (new_length != $toNumber(desc.getValue())) {
+ var new_length = ToUint32(desc.getValue());
+ if (new_length != ToNumber(desc.getValue())) {
throw MakeRangeError(kArrayLengthOutOfRange);
}
var length_desc = GetOwnPropertyJS(obj, "length");
}
while (new_length < length--) {
- var index = $toString(length);
+ var index = ToString(length);
if (emit_splice) {
var deletedDesc = GetOwnPropertyJS(obj, index);
if (deletedDesc && deletedDesc.hasValue())
// Step 4 - Special handling for array index.
if (!IS_SYMBOL(p)) {
- var index = $toUint32(p);
+ var index = ToUint32(p);
var emit_splice = false;
- if ($toString(index) == p && index != 4294967295) {
+ if (ToString(index) == p && index != 4294967295) {
var length = obj.length;
if (index >= length && %IsObserved(obj)) {
emit_splice = true;
if (!IS_SPEC_OBJECT(obj)) {
throw MakeTypeError(kProxyNonObjectPropNames, trap, obj);
}
- var n = $toUint32(obj.length);
+ var n = ToUint32(obj.length);
var array = new GlobalArray(n);
var realLength = 0;
var names = { __proto__: null }; // TODO(rossberg): use sets once ready.
for (var index = 0; index < n; index++) {
- var s = $toName(obj[index]);
+ var s = ToName(obj[index]);
// TODO(rossberg): adjust once there is a story for symbols vs proxies.
if (IS_SYMBOL(s) && !includeSymbols) continue;
if (%HasOwnProperty(names, s)) {
}
} else {
if (filter & PROPERTY_ATTRIBUTES_STRING) continue;
- name = $toString(name);
+ name = ToString(name);
}
if (seenKeys[name]) continue;
seenKeys[name] = true;
if (!IS_SPEC_OBJECT(obj)) {
throw MakeTypeError(kCalledOnNonObject, "Object.defineProperty");
}
- var name = $toName(p);
+ var name = ToName(p);
if (%_IsJSProxy(obj)) {
// Clone the attributes object for protection.
// TODO(rossberg): not spec'ed yet, so not sure if this should involve
// ECMA-262, Edition 6, section 19.1.2.10
function ObjectIs(obj1, obj2) {
- return $sameValue(obj1, obj2);
+ return SameValue(obj1, obj2);
}
function BooleanConstructor(x) {
if (%_IsConstructCall()) {
- %_SetValueOf(this, $toBoolean(x));
+ %_SetValueOf(this, ToBoolean(x));
} else {
- return $toBoolean(x);
+ return ToBoolean(x);
}
}
// Number
function NumberConstructor(x) {
- var value = %_ArgumentsLength() == 0 ? 0 : $toNumber(x);
+ var value = %_ArgumentsLength() == 0 ? 0 : ToNumber(x);
if (%_IsConstructCall()) {
%_SetValueOf(this, value);
} else {
// Get the value of this number in case it's an object.
x = %_ValueOf(this);
}
- if (IS_UNDEFINED(precision)) return $toString(%_ValueOf(this));
+ if (IS_UNDEFINED(precision)) return ToString(%_ValueOf(this));
var p = TO_INTEGER(precision);
if (NUMBER_IS_NAN(x)) return "NaN";
var n = args.length;
var p = '';
if (n > 1) {
- p = $toString(args[0]);
+ p = ToString(args[0]);
for (var i = 1; i < n - 1; i++) {
- p += ',' + $toString(args[i]);
+ p += ',' + ToString(args[i]);
}
// If the formal parameters string include ) - an illegal
// character - it may make the combined function expression
// comments we can include a trailing block comment to catch this.
p += '\n/' + '**/';
}
- var body = (n > 0) ? $toString(args[n - 1]) : '';
+ var body = (n > 0) ? ToString(args[n - 1]) : '';
return '(' + function_token + '(' + p + ') {\n' + body + '\n})';
}
TEST(RuntimeCallJS) {
FLAG_allow_natives_syntax = true;
- FunctionTester T("(function(a) { return %$toString(a); })");
+ FunctionTester T("(function(a) { return %ToString(a); })");
T.CheckCall(T.Val("23"), T.Val(23), T.undefined());
T.CheckCall(T.Val("4.2"), T.Val(4.2), T.undefined());
var obj1 = {x: 10, y: 11, z: "test"};
var obj2 = {x: 10, y: 11, z: "test"};
-var sameValue = natives.$sameValue;
-
-assertTrue(sameValue(0, 0));
-assertTrue(sameValue(+0, +0));
-assertTrue(sameValue(-0, -0));
-assertTrue(sameValue(1, 1));
-assertTrue(sameValue(2, 2));
-assertTrue(sameValue(-1, -1));
-assertTrue(sameValue(0.5, 0.5));
-assertTrue(sameValue(true, true));
-assertTrue(sameValue(false, false));
-assertTrue(sameValue(NaN, NaN));
-assertTrue(sameValue(null, null));
-assertTrue(sameValue("foo", "foo"));
-assertTrue(sameValue(obj1, obj1));
+assertTrue(natives.SameValue(0, 0));
+assertTrue(natives.SameValue(+0, +0));
+assertTrue(natives.SameValue(-0, -0));
+assertTrue(natives.SameValue(1, 1));
+assertTrue(natives.SameValue(2, 2));
+assertTrue(natives.SameValue(-1, -1));
+assertTrue(natives.SameValue(0.5, 0.5));
+assertTrue(natives.SameValue(true, true));
+assertTrue(natives.SameValue(false, false));
+assertTrue(natives.SameValue(NaN, NaN));
+assertTrue(natives.SameValue(null, null));
+assertTrue(natives.SameValue("foo", "foo"));
+assertTrue(natives.SameValue(obj1, obj1));
// Undefined values.
-assertTrue(sameValue());
-assertTrue(sameValue(undefined, undefined));
+assertTrue(natives.SameValue());
+assertTrue(natives.SameValue(undefined, undefined));
-assertFalse(sameValue(0,1));
-assertFalse(sameValue("foo", "bar"));
-assertFalse(sameValue(obj1, obj2));
-assertFalse(sameValue(true, false));
+assertFalse(natives.SameValue(0,1));
+assertFalse(natives.SameValue("foo", "bar"));
+assertFalse(natives.SameValue(obj1, obj2));
+assertFalse(natives.SameValue(true, false));
-assertFalse(sameValue(obj1, true));
-assertFalse(sameValue(obj1, "foo"));
-assertFalse(sameValue(obj1, 1));
-assertFalse(sameValue(obj1, undefined));
-assertFalse(sameValue(obj1, NaN));
+assertFalse(natives.SameValue(obj1, true));
+assertFalse(natives.SameValue(obj1, "foo"));
+assertFalse(natives.SameValue(obj1, 1));
+assertFalse(natives.SameValue(obj1, undefined));
+assertFalse(natives.SameValue(obj1, NaN));
-assertFalse(sameValue(undefined, true));
-assertFalse(sameValue(undefined, "foo"));
-assertFalse(sameValue(undefined, 1));
-assertFalse(sameValue(undefined, obj1));
-assertFalse(sameValue(undefined, NaN));
+assertFalse(natives.SameValue(undefined, true));
+assertFalse(natives.SameValue(undefined, "foo"));
+assertFalse(natives.SameValue(undefined, 1));
+assertFalse(natives.SameValue(undefined, obj1));
+assertFalse(natives.SameValue(undefined, NaN));
-assertFalse(sameValue(NaN, true));
-assertFalse(sameValue(NaN, "foo"));
-assertFalse(sameValue(NaN, 1));
-assertFalse(sameValue(NaN, obj1));
-assertFalse(sameValue(NaN, undefined));
+assertFalse(natives.SameValue(NaN, true));
+assertFalse(natives.SameValue(NaN, "foo"));
+assertFalse(natives.SameValue(NaN, 1));
+assertFalse(natives.SameValue(NaN, obj1));
+assertFalse(natives.SameValue(NaN, undefined));
-assertFalse(sameValue("foo", true));
-assertFalse(sameValue("foo", 1));
-assertFalse(sameValue("foo", obj1));
-assertFalse(sameValue("foo", undefined));
-assertFalse(sameValue("foo", NaN));
+assertFalse(natives.SameValue("foo", true));
+assertFalse(natives.SameValue("foo", 1));
+assertFalse(natives.SameValue("foo", obj1));
+assertFalse(natives.SameValue("foo", undefined));
+assertFalse(natives.SameValue("foo", NaN));
-assertFalse(sameValue(true, 1));
-assertFalse(sameValue(true, obj1));
-assertFalse(sameValue(true, undefined));
-assertFalse(sameValue(true, NaN));
-assertFalse(sameValue(true, "foo"));
+assertFalse(natives.SameValue(true, 1));
+assertFalse(natives.SameValue(true, obj1));
+assertFalse(natives.SameValue(true, undefined));
+assertFalse(natives.SameValue(true, NaN));
+assertFalse(natives.SameValue(true, "foo"));
-assertFalse(sameValue(1, true));
-assertFalse(sameValue(1, obj1));
-assertFalse(sameValue(1, undefined));
-assertFalse(sameValue(1, NaN));
-assertFalse(sameValue(1, "foo"));
+assertFalse(natives.SameValue(1, true));
+assertFalse(natives.SameValue(1, obj1));
+assertFalse(natives.SameValue(1, undefined));
+assertFalse(natives.SameValue(1, NaN));
+assertFalse(natives.SameValue(1, "foo"));
// Special string cases.
-assertFalse(sameValue("1", 1));
-assertFalse(sameValue("true", true));
-assertFalse(sameValue("false", false));
-assertFalse(sameValue("undefined", undefined));
-assertFalse(sameValue("NaN", NaN));
+assertFalse(natives.SameValue("1", 1));
+assertFalse(natives.SameValue("true", true));
+assertFalse(natives.SameValue("false", false));
+assertFalse(natives.SameValue("undefined", undefined));
+assertFalse(natives.SameValue("NaN", NaN));
// -0 and +0 are should be different
-assertFalse(sameValue(+0, -0));
-assertFalse(sameValue(-0, +0));
+assertFalse(natives.SameValue(+0, -0));
+assertFalse(natives.SameValue(-0, +0));