Keep key register pinned longer when accessing elements of hoisted arguments objects, bug 683207. r=dvander

This commit is contained in:
Brian Hackett 2011-08-30 19:23:55 -07:00
Родитель 2789fe6ab4
Коммит cc9bf1df05
1 изменённых файлов: 3 добавлений и 3 удалений

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

@ -1816,9 +1816,6 @@ mjit::Compiler::jsop_getelem_args()
RegisterID dataReg = frame.allocReg();
RegisterID typeReg = frame.allocReg();
if (!key.isConstant())
frame.unpinReg(key.reg());
// Guard on nactual.
if (!hoistedLength) {
Address nactualAddr(JSFrameReg, StackFrame::offsetOfArgs());
@ -1840,6 +1837,9 @@ mjit::Compiler::jsop_getelem_args()
masm.loadFrameActuals(outerScript->function(), actualsReg);
}
if (!key.isConstant())
frame.unpinReg(key.reg());
if (key.isConstant()) {
Address arg(actualsReg, key.index() * sizeof(Value));
masm.loadValueAsComponents(arg, typeReg, dataReg);