зеркало из https://github.com/mozilla/pjs.git
Keep key register pinned longer when accessing elements of hoisted arguments objects, bug 683207. r=dvander
This commit is contained in:
Родитель
72c8ab7a3d
Коммит
c50122f9ce
|
@ -1816,9 +1816,6 @@ mjit::Compiler::jsop_getelem_args()
|
||||||
RegisterID dataReg = frame.allocReg();
|
RegisterID dataReg = frame.allocReg();
|
||||||
RegisterID typeReg = frame.allocReg();
|
RegisterID typeReg = frame.allocReg();
|
||||||
|
|
||||||
if (!key.isConstant())
|
|
||||||
frame.unpinReg(key.reg());
|
|
||||||
|
|
||||||
// Guard on nactual.
|
// Guard on nactual.
|
||||||
if (!hoistedLength) {
|
if (!hoistedLength) {
|
||||||
Address nactualAddr(JSFrameReg, StackFrame::offsetOfArgs());
|
Address nactualAddr(JSFrameReg, StackFrame::offsetOfArgs());
|
||||||
|
@ -1840,6 +1837,9 @@ mjit::Compiler::jsop_getelem_args()
|
||||||
masm.loadFrameActuals(outerScript->function(), actualsReg);
|
masm.loadFrameActuals(outerScript->function(), actualsReg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!key.isConstant())
|
||||||
|
frame.unpinReg(key.reg());
|
||||||
|
|
||||||
if (key.isConstant()) {
|
if (key.isConstant()) {
|
||||||
Address arg(actualsReg, key.index() * sizeof(Value));
|
Address arg(actualsReg, key.index() * sizeof(Value));
|
||||||
masm.loadValueAsComponents(arg, typeReg, dataReg);
|
masm.loadValueAsComponents(arg, typeReg, dataReg);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче