mirror of
https://github.com/tc39/test262.git
synced 2025-05-09 09:20:30 +02:00
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
105 lines
2.8 KiB
JavaScript
105 lines
2.8 KiB
JavaScript
// Test that a object accepts DFG PutByValueDirect operation with edge numbers.
|
|
|
|
function lookupWithKey(key) {
|
|
var object = {
|
|
[key]: 42
|
|
};
|
|
return object[key];
|
|
}
|
|
noInline(lookupWithKey);
|
|
|
|
for (var i = 0; i < 10000; ++i) {
|
|
[
|
|
// integers
|
|
-0x80000001, // out of int32_t
|
|
-0x80000000, // int32_t min
|
|
-1, // negative
|
|
0, // zero
|
|
1, // positive
|
|
0x7fffffff, // int32_t max
|
|
0x80000000, // out of int32_t
|
|
0xfffffffd, // less than array max in JSObject
|
|
0xfffffffe, // array max in JSObject
|
|
0xffffffff, // uint32_t max, not array index
|
|
0x100000000, // out of uint32_t
|
|
|
|
// stringified integers
|
|
(-0x80000001).toString(), // out of int32_t
|
|
(-0x80000000).toString(), // int32_t min
|
|
(-1).toString(), // negative
|
|
(0).toString(), // zero
|
|
(1).toString(), // positive
|
|
(0x7fffffff).toString(), // int32_t max
|
|
(0x80000000).toString(), // out of int32_t
|
|
(0xfffffffd).toString(), // less than array max in JSObject
|
|
(0xfffffffe).toString(), // array max in JSObject
|
|
(0xffffffff).toString(), // (uint32_t max).toString()
|
|
(0x100000000).toString(), // out of uint32_t
|
|
|
|
// doubles
|
|
Number.MIN_VALUE,
|
|
Number.MAX_VALUE,
|
|
Number.MIN_SAFE_INTEGER,
|
|
Number.MAX_SAFE_INTEGER,
|
|
Number.POSITIVE_INFINITY,
|
|
Number.NEGATIVE_INFINITY,
|
|
Number.NaN,
|
|
Number.EPSILON,
|
|
+0.0,
|
|
-0.0,
|
|
0.1,
|
|
-0.1,
|
|
4.2,
|
|
-4.2,
|
|
0x80000000 + 0.5, // out of int32_t, double
|
|
|
|
// stringified doules
|
|
(Number.MIN_VALUE).toString(),
|
|
(Number.MAX_VALUE).toString(),
|
|
(Number.MIN_SAFE_INTEGER).toString(),
|
|
(Number.MAX_SAFE_INTEGER).toString(),
|
|
(Number.POSITIVE_INFINITY).toString(),
|
|
(Number.NEGATIVE_INFINITY).toString(),
|
|
"NaN",
|
|
(Number.EPSILON).toString(),
|
|
"+0.0",
|
|
"-0.0",
|
|
"0.1",
|
|
"-0.1",
|
|
"4.2",
|
|
"-4.2",
|
|
(0x80000000 + 0.5).toString()
|
|
].forEach(function (key) {
|
|
var value = lookupWithKey(key);
|
|
if (value !== 42)
|
|
throw new Error('bad value: ' + value);
|
|
});
|
|
}
|
|
|
|
function lookupWithKey2(key) {
|
|
var object = {
|
|
[key]: 42
|
|
};
|
|
return object[key];
|
|
}
|
|
noInline(lookupWithKey2);
|
|
|
|
var toStringThrowsError = {
|
|
toString: function () {
|
|
throw new Error('ng');
|
|
}
|
|
};
|
|
|
|
for (var i = 0; i < 10000; ++i) {
|
|
var error = null;
|
|
try {
|
|
lookupWithKey2(toStringThrowsError);
|
|
} catch (e) {
|
|
error = e;
|
|
}
|
|
if (!error)
|
|
throw new Error('not thrown');
|
|
if (String(error) !== 'Error: ng')
|
|
throw new Error('bad error: ' + String(error));
|
|
}
|