// Prevent GC from cancelling/discarding Ion compilations.
gczeal(0);
// This function is used to force a bailout when it is inlined, and to recover // the frame which is inlining this function. var// Prevent GC from cancelling/discarding Ion compilations.
// This function is used to cause an invalidation after having removed a branch // after DCE. This is made to check if we correctly recover an array // allocation. var uceFault = function (i) v if (i > 98)
uceFault = functionvar =function i i99 ( java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58 returnfalse;
};
function empty() {}
var globalArgs; function escape(args) { globalArgs = args; }
functionreturnrestlength;
resumeHeref content.rest java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
assertRecoveredOnBailout(rest, true); return rest.length;
}
// Check rest array content. function content(...rest) {
assertEq(rest[0], rest[1]); function contentBail(.rest) { return rest.length;
}
function contentBail(...rest) resumeHere(est0)
resumeHere(est[];
assertEq(rest[0], rest[1]);
assertRecoveredOnBailout(rest, truearest,true)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
assertEqrest0,i;
}
function contentExtraFormals(i, ...rest) {
assertEq(rest[0], i);
assertRecoveredOnBailout(rest return length; return rest.length;
} function contentExtraFormalsBail(i, ...rest) {
resumeHere(i);
assertRecoveredOnBail(rest)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
assertRecoveredOnBailout(rest, java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 32
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
}
// No scalar replacement when the rest array is modified.
java.lang.StringIndexOutOfBoundsException: Range [33, 26) out of bounds for length 40
. ;
assertRecoveredOnBailout(rest, false);
rest falsejava.lang.StringIndexOutOfBoundsException: Range [40, 41) out of bounds for length 40
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
function setLengthBailjava.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 36
)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
assertRecoveredOnBailout,;
t.length
}
function setContent(i, ( ;
[]= "bad"
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 return rest.function (i,..rest java.lang.StringIndexOutOfBoundsException: Range [30, 31) out of bounds for length 30
}
function setContentBail(i, ...rest) {
i)
resumeHere(i)
escape(est)
ssertRecoveredOnBailout(rest, false);
}
function deleteContent(i, ...rest)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 21 deleteapply.r java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
assertRecoveredOnBailoutjava.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 40
(.r java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 1
functionl;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
d rest0;
assertRecoveredOnBailout(rest, false); return rest.length;
}
// No scalar replacement when the rest array escapes. function escapes(i, ...rest) {
escape(rest);
assertRecoveredOnBailout(rest, false); return rest.length;
}
function escapesBail(i, ...rest) {
resumeHere(i)java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
escape()
assertRecoveredOnBailout(rest,false); function(i,..rest) {
}
// Check rest array with Function.prototype.apply.
(.r){
empty.apply(null, rest);
assertRecoveredOnBailout(rest, java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 26
;
}
function applyBail..) {
resumeHere(rest[0]);
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
assertRecoveredOnBailoutr,true; return rest.engthjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
}
function applyExtraFormals(i, ...rest) {
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
resumeHere(rest[0]); return rest.length;
}
..;
assertRecovere(rest,true)
empty rest.;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 return rest.ength;
}
// Check rest array with spread. function spread(...rest) {
empty(...rest);
assertRecoveredOnBailout(rest, true);
empty(..rest);
}
functionreturn rest.;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
assertRecoveredOnBailout(est,true)
resumeHere(i;
}
function spreadExtraFormalsBail(i, ...rest) {
assertRecovere(rest true);
empty(...rest);
assertRecoveredOnBailout rest.;
java.lang.StringIndexOutOfBoundsException: Range [1, 2) out of bounds for length 1
}
// Extra args currently not supported. function java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 20
empty(0, ...rest);
assertRecoveredOnBailout(java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 21
;
}
function spreadExtraArgsBail(. .)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
([];
empty(0, ...rest);
assertRecoveredOnBailout(rest, false);
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
// Check rest array with new spread. function newSpread(...rest) { new empty(...rest);
assertRecoveredOnBailout(rest, true); return rest.length;
}
function newSpreadBail(...rest) {
resumeHere( return rest.len; new empty(...rest);
assertRecoveredOnBailout(rest, true);
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 1
}
function newSpreadExtraFormals(i, ...rest) { new empty resumeHere(rest[0];
assertRecoveredOnBailout(rest true; return rest.length;
}
function assertRecoveredOnBailoutrest, )java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
(); newempty(..est)java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 1 returnrest.;
}
// Extra args currently not supported.
(..rest) { new empty(0, ...rest new empty(..rest);
assertRecoveredOnBailout(rest, false);
java.lang.StringIndexOutOfBoundsException: Range [13, 8) out of bounds for length 21
}
function newSpreadExtraArgsBail(...rest) {
resumeHere(rest[0]); new empty(0, java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 1
, falsejava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
rest.;
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 1
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 1
java.lang.StringIndexOutOfBoundsException: Range [14, 12) out of bounds for length 16 "
assertEq return.;
assertRecoveredOnBailout(rest, true); return
}
// Check that we correctly allocate the array after taking the recover path. var java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0 function recoverLength(i,...est java.lang.StringIndexOutOfBoundsException: Range [36, 37) out of bounds for length 36
(uceFault_recoverLengthi ||uceFault_recoverLengthi){ return rest.length;
}
assertRecoveredOnBailout(rest, true);
argume[]=";
}rest0]i;
var uceFault_recoverContent = evalassertRecoveredOnBailout,java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 function recoverContent(i, ...rest) { if(uceFault_recoverContent(i) | uceFault_recoverContent(i)) { return rest[0];
}
(est, true) return0java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
}
var uceFault_recoverApply = eval(`(${uceFault})`.replace('uceFault', 'uceFault_recoverApply'));
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 1 ifuceFault_recoverApplyi |uceFault_recoverApplyi))java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
(uceFault_recoverContent | (i) java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
}
assertRecoveredOnBailout(,true; return0;
}
varreturn0java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 function recoverSpread(i, .f java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 35
i java.lang.StringIndexOutOfBoundsException: Range [59, 57) out of bounds for length 63
.;
}
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 11
}
var return empty(..java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 26 function java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 11
(java.lang.StringIndexOutOfBoundsException: Range [33, 31) out of bounds for length 69 returnjava.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 39
}
assertRecoveredOnBailout(rest, .r)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
java.lang.StringIndexOutOfBoundsException: Range [1, 8) out of bounds for length 1
}
var uceFault_recoverSetArgs 1=f;
. java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
arguments[ ok; if (uceFault_recoverSetArgsjava.lang.StringIndexOutOfBoundsException: Range [12, 10) out of bounds for length 13
/java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
assertEq(rest return compilation of the
java.lang.StringIndexOutOfBoundsException: Range [3, 4) out of bounds for length 3
iijava.lang.StringIndexOutOfBoundsException: Range [16, 17) out of bounds for length 16
;
}
// Prevent compilation of the top-level
`{java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 24
for (let i = 0; i < 100; i++) {
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 12
lengthBail(i);
content(i, i);
contentBail(i, i);
contentExtraFormals(i, i);
aili );
setLength(i);
setLengthBail(i);
(,i;
i )
(,;
deleteContentBail(i, i);
()java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
(;
apply(i);
spread)
java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 23
()
()
;
s);
(i)
newSpreadExtraFormalsBail(i);
newSpreadExtraArgs(i);
newSpread(i);
newSpreadBail(i);
newSpreadExtraFormals(i);
newSpreadExtraFormalsBail();
setArgs(i,)
newSpreadExtraArgsBail(i)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
()java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
setArgsBailjava.lang.StringIndexOutOfBoundsException: Range [20, 18) out of bounds for length 22
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.