зеркало из https://github.com/mozilla/gecko-dev.git
Bug 827965 - Utilize GetTempRegForIntArg() for callNative calls. (r=sstangl)
This commit is contained in:
Родитель
a54f21acb8
Коммит
9b75d7d78b
|
@ -300,9 +300,20 @@ LIRGenerator::visitCall(MCall *call)
|
||||||
// Call known functions.
|
// Call known functions.
|
||||||
if (target) {
|
if (target) {
|
||||||
if (target->isNative()) {
|
if (target->isNative()) {
|
||||||
LCallNative *lir = new LCallNative(argslot, tempFixed(CallTempReg0),
|
Register cxReg, numReg, vpReg, tmpReg;
|
||||||
tempFixed(CallTempReg1), tempFixed(CallTempReg2),
|
GetTempRegForIntArg(0, 0, &cxReg);
|
||||||
tempFixed(CallTempReg3));
|
GetTempRegForIntArg(1, 0, &numReg);
|
||||||
|
GetTempRegForIntArg(2, 0, &vpReg);
|
||||||
|
|
||||||
|
// Even though this is just a temp reg, use the same API to avoid
|
||||||
|
// register collisions.
|
||||||
|
mozilla::DebugOnly<bool> ok = GetTempRegForIntArg(3, 0, &tmpReg);
|
||||||
|
MOZ_ASSERT(ok, "How can we not have four temp registers?");
|
||||||
|
|
||||||
|
LCallNative *lir = new LCallNative(argslot, tempFixed(cxReg),
|
||||||
|
tempFixed(numReg),
|
||||||
|
tempFixed(vpReg),
|
||||||
|
tempFixed(tmpReg));
|
||||||
return (defineReturn(lir, call) && assignSafepoint(lir, call));
|
return (defineReturn(lir, call) && assignSafepoint(lir, call));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче