diff options
author | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-03-20 12:40:00 +0100 |
---|---|---|
committer | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-03-20 12:40:00 +0100 |
commit | 2a57d73c3b5304be3f9be51018a1bbee79f007e2 (patch) | |
tree | 90bd70148cd2ee939092d6e70bd618ab5df914b1 /js/src/jit/MIRGraph.cpp | |
parent | caa2a53c402c7b509e9939e9aefe595dc0dbe516 (diff) | |
download | uxp-2a57d73c3b5304be3f9be51018a1bbee79f007e2.tar.gz |
Bug 1204028: Evaluate LHS reference before RHS in destructuring
Issue #73
[Depends on] Bug 1147371: Implement IteratorClose
Diffstat (limited to 'js/src/jit/MIRGraph.cpp')
-rw-r--r-- | js/src/jit/MIRGraph.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/js/src/jit/MIRGraph.cpp b/js/src/jit/MIRGraph.cpp index 3a363a5bfa..d6e0fa8ffc 100644 --- a/js/src/jit/MIRGraph.cpp +++ b/js/src/jit/MIRGraph.cpp @@ -790,6 +790,19 @@ MBasicBlock::pick(int32_t depth) } void +MBasicBlock::unpick(int32_t depth) +{ + // unpick take the top of the stack element and move it under the depth-th + // element; + // unpick(-2): + // A B C D E + // A B C E D [ swapAt(-1) ] + // A B E C D [ swapAt(-2) ] + for (int32_t n = -1; n >= depth; n--) + swapAt(n); +} + +void MBasicBlock::swapAt(int32_t depth) { uint32_t lhsDepth = stackPosition_ + depth - 1; |