Commit e1591bbd authored by Sigurd Schneider's avatar Sigurd Schneider Committed by Commit Bot

[turbofan] Support multiple receiver maps in Array.prototype.pop/shift

Bug: v8:7205
Change-Id: I3de97ca0990ca4d791c990eee7e23f29a75eff31
Reviewed-on: https://chromium-review.googlesource.com/856558
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50534}
parent 557e79ca
This diff is collapsed.
...@@ -66,7 +66,7 @@ function runTest(f, message, mkICTraining, deoptArg) { ...@@ -66,7 +66,7 @@ function runTest(f, message, mkICTraining, deoptArg) {
let checks = { let checks = {
smiReceiver: smiReceiver:
{ mkTrainingArguments : () => [{arr:[1], el:3}], { mkTrainingArguments : () => [{arr:[1], el:3}],
deoptingArguments : [{arr:[1], el:true}, {arr:[0.1], el:1}, {arr:[{}], el:1}] deoptingArguments : [{arr:[0.1], el:1}, {arr:[{}], el:1}]
}, },
objectReceiver: objectReceiver:
{ mkTrainingArguments : () => [{arr:[{}], el:0.1}], { mkTrainingArguments : () => [{arr:[{}], el:0.1}],
...@@ -74,19 +74,19 @@ let checks = { ...@@ -74,19 +74,19 @@ let checks = {
}, },
multipleSmiReceivers: multipleSmiReceivers:
{ mkTrainingArguments : () => { let b = [1]; b.x=3; return [{arr:[1], el:3}, {arr:b, el:3}] }, { mkTrainingArguments : () => { let b = [1]; b.x=3; return [{arr:[1], el:3}, {arr:b, el:3}] },
deoptingArguments : [{arr:[1], el:true}, {arr:[0.1], el:1}, {arr:[{}], el:1}] deoptingArguments : [{arr:[0.1], el:1}, {arr:[{}], el:1}]
}, },
multipleSmiReceiversPackedUnpacked: multipleSmiReceiversPackedUnpacked:
{ mkTrainingArguments : () => { let b = [1]; b[100] = 3; return [{arr:[1], el:3}, {arr:b, el:3}] }, { mkTrainingArguments : () => { let b = [1]; b[100] = 3; return [{arr:[1], el:3}, {arr:b, el:3}] },
deoptingArguments : [ {arr:[1], el:true} ] deoptingArguments : [{arr:[0.1], el:1}, {arr:[{}], el:1}]
}, },
multipleDoubleReceivers: multipleDoubleReceivers:
{ mkTrainingArguments : () => { let b = [0.1]; b.x=0.3; return [{arr:[0.1], el:0.3}, {arr:b, el:0.3}] }, { mkTrainingArguments : () => { let b = [0.1]; b.x=0.3; return [{arr:[0.1], el:0.3}, {arr:b, el:0.3}] },
deoptingArguments : [{arr:[{}], el:true}, {arr:[0.1], el:true}] deoptingArguments : [{arr:[{}], el:true}, {arr:[1], el:true}]
}, },
multipleDoubleReceiversPackedUnpacked: multipleDoubleReceiversPackedUnpacked:
{ mkTrainingArguments : () => { let b = [0.1]; b[100] = 0.3; return [{arr:[0.1], el:0.3}, {arr:b, el:0.3}] }, { mkTrainingArguments : () => { let b = [0.1]; b[100] = 0.3; return [{arr:[0.1], el:0.3}, {arr:b, el:0.3}] },
deoptingArguments : [{arr:[{}], el:true}, {arr:[0.1], el:true}] deoptingArguments : [{arr:[{}], el:true}, {arr:[1], el:true}]
}, },
multipleMixedReceivers: multipleMixedReceivers:
{ mkTrainingArguments : () => { let b = [0.1]; b.x=0.3; return [{arr:[1], el:0.3}, {arr:[{}], el:true}, {arr:b, el:0.3}] }, { mkTrainingArguments : () => { let b = [0.1]; b.x=0.3; return [{arr:[1], el:0.3}, {arr:[{}], el:true}, {arr:b, el:0.3}] },
...@@ -98,10 +98,13 @@ let checks = { ...@@ -98,10 +98,13 @@ let checks = {
}, },
}; };
const functions = { const functions = {
push_reliable: (a,g) => { let b = g(); return a.push(2, b); }, push_reliable: (a,g) => { let b = g(); return a.push(2, b); },
push_unreliable: (a,g) => { return a.push(2, g()); }, push_unreliable: (a,g) => { return a.push(2, g()); },
pop_reliable: (a,g) => { let b = g(); return a.pop(2, b); },
pop_unreliable: (a,g) => { return a.pop(2, g()); },
shift_reliable: (a,g) => { let b = g(); return a.shift(2, b); },
shift_unreliable: (a,g) => { return a.shift(2, g()); }
} }
Object.keys(checks).forEach( Object.keys(checks).forEach(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment