Bug 1121299 - Let GVN fold MSimdBox when it can fold MSimdConstants. r=sunfish

This commit is contained in:
Nicolas B. Pierron 2015-01-15 16:28:14 +01:00
Родитель eb68fdf7f2
Коммит a6068b03ba
2 изменённых файлов: 39 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,28 @@
setJitCompilerOption("baseline.warmup.trigger", 10);
setJitCompilerOption("ion.warmup.trigger", 30);
function test_1(i) {
if (i >= 40)
return;
var a = SIMD.float32x4(1.1, 2.2, 3.3, 4.6);
SIMD.int32x4.fromFloat32x4(a);
test_1(i + 1);
}
test_1(0);
var float32x4 = SIMD.float32x4;
function test_2() {
var Array = float32x4.array(3);
var array = new Array([
float32x4(1, 2, 3, 4),
float32x4(5, 6, 7, 8),
float32x4(9, 10, 11, 12)
]);
if (typeof reportCompare === "function")
reportCompare(true, true);
}
test_2();
evaluate("test_2(); test_2();", {
compileAndGo: true
});

Просмотреть файл

@ -2963,6 +2963,17 @@ class MSimdBox
return initialHeap_;
}
bool congruentTo(const MDefinition *ins) const MOZ_OVERRIDE {
if (congruentIfOperandsEqual(ins)) {
MOZ_ASSERT(ins->toSimdBox()->initialHeap() == initialHeap());
// The template object is likely to be different, but represents the
// same kind of objects as the MIRTypes are identical.
return true;
}
return false;
}
AliasSet getAliasSet() const MOZ_OVERRIDE {
return AliasSet::None();
}