mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-23 02:05:42 +00:00
Bug 1595533 - Part 2: Use JSOP_UNPICK for inc/dec in PropOpEmitter.cpp. r=arai
Depends on D52549 Differential Revision: https://phabricator.services.mozilla.com/D52554 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
366e47a9f9
commit
f00e7769c3
@ -218,46 +218,20 @@ bool PropOpEmitter::emitIncDec(JSAtom* prop) {
|
||||
return false;
|
||||
}
|
||||
if (isPostIncDec()) {
|
||||
// [stack] OBJ SUPERBASE? N
|
||||
if (!bce_->emit1(JSOP_DUP)) {
|
||||
// [stack] .. N N
|
||||
return false;
|
||||
}
|
||||
if (!bce_->emit2(JSOP_UNPICK, 2 + isSuper())) {
|
||||
// [stack] N OBJ SUPERBASE? N
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (!bce_->emit1(incOp)) {
|
||||
// [stack] ... N? N+1
|
||||
// [stack] ... N+1
|
||||
return false;
|
||||
}
|
||||
if (isPostIncDec()) {
|
||||
if (isSuper()) {
|
||||
// [stack] THIS OBJ N N+1
|
||||
if (!bce_->emit2(JSOP_PICK, 3)) {
|
||||
// [stack] OBJ N N+1 THIS
|
||||
return false;
|
||||
}
|
||||
if (!bce_->emit1(JSOP_SWAP)) {
|
||||
// [stack] OBJ N THIS N+1
|
||||
return false;
|
||||
}
|
||||
if (!bce_->emit2(JSOP_PICK, 3)) {
|
||||
// [stack] N THIS N+1 OBJ
|
||||
return false;
|
||||
}
|
||||
if (!bce_->emit1(JSOP_SWAP)) {
|
||||
// [stack] N THIS OBJ N+1
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// [stack] OBJ N N+1
|
||||
if (!bce_->emit2(JSOP_PICK, 2)) {
|
||||
// [stack] N N+1 OBJ
|
||||
return false;
|
||||
}
|
||||
if (!bce_->emit1(JSOP_SWAP)) {
|
||||
// [stack] N OBJ N+1
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
JSOp setOp =
|
||||
isSuper()
|
||||
|
Loading…
Reference in New Issue
Block a user