| Index: src/jump-target.cc
|
| ===================================================================
|
| --- src/jump-target.cc (revision 4214)
|
| +++ src/jump-target.cc (working copy)
|
| @@ -290,6 +290,25 @@
|
| }
|
|
|
|
|
| +void JumpTarget::Branch(Condition cc, Result* arg0, Result* arg1, Hint hint) {
|
| + ASSERT(cgen()->has_valid_frame());
|
| +
|
| + // We want to check that non-frame registers at the call site stay in
|
| + // the same registers on the fall-through branch.
|
| + DECLARE_ARGCHECK_VARS(arg0);
|
| + DECLARE_ARGCHECK_VARS(arg1);
|
| +
|
| + cgen()->frame()->Push(arg0);
|
| + cgen()->frame()->Push(arg1);
|
| + DoBranch(cc, hint);
|
| + *arg1 = cgen()->frame()->Pop();
|
| + *arg0 = cgen()->frame()->Pop();
|
| +
|
| + ASSERT_ARGCHECK(arg0);
|
| + ASSERT_ARGCHECK(arg1);
|
| +}
|
| +
|
| +
|
| void BreakTarget::Branch(Condition cc, Result* arg, Hint hint) {
|
| ASSERT(cgen()->has_valid_frame());
|
|
|
| @@ -331,6 +350,17 @@
|
| }
|
|
|
|
|
| +void JumpTarget::Bind(Result* arg0, Result* arg1) {
|
| + if (cgen()->has_valid_frame()) {
|
| + cgen()->frame()->Push(arg0);
|
| + cgen()->frame()->Push(arg1);
|
| + }
|
| + DoBind();
|
| + *arg1 = cgen()->frame()->Pop();
|
| + *arg0 = cgen()->frame()->Pop();
|
| +}
|
| +
|
| +
|
| void JumpTarget::AddReachingFrame(VirtualFrame* frame) {
|
| ASSERT(reaching_frames_.length() == merge_labels_.length());
|
| ASSERT(entry_frame_ == NULL);
|
|
|