OLD | NEW |
1 // Copyright 2008 the V8 project authors. All rights reserved. | 1 // Copyright 2008 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 30 matching lines...) Expand all Loading... |
41 ASSERT(cgen_ != NULL); | 41 ASSERT(cgen_ != NULL); |
42 ASSERT(cgen_->has_valid_frame()); | 42 ASSERT(cgen_->has_valid_frame()); |
43 // Live non-frame registers are not allowed at unconditional jumps | 43 // Live non-frame registers are not allowed at unconditional jumps |
44 // because we have no way of invalidating the corresponding results | 44 // because we have no way of invalidating the corresponding results |
45 // which are still live in the C++ code. | 45 // which are still live in the C++ code. |
46 ASSERT(cgen_->HasValidEntryRegisters()); | 46 ASSERT(cgen_->HasValidEntryRegisters()); |
47 | 47 |
48 if (is_bound()) { | 48 if (is_bound()) { |
49 // Backward jump. There is an expected frame to merge to. | 49 // Backward jump. There is an expected frame to merge to. |
50 ASSERT(direction_ == BIDIRECTIONAL); | 50 ASSERT(direction_ == BIDIRECTIONAL); |
| 51 cgen_->frame()->PrepareMergeTo(entry_frame_); |
51 cgen_->frame()->MergeTo(entry_frame_); | 52 cgen_->frame()->MergeTo(entry_frame_); |
52 cgen_->DeleteFrame(); | 53 cgen_->DeleteFrame(); |
53 __ jmp(&entry_label_); | 54 __ jmp(&entry_label_); |
54 } else { | 55 } else { |
55 // Preconfigured entry frame is not used on ARM. | 56 // Preconfigured entry frame is not used on ARM. |
56 ASSERT(entry_frame_ == NULL); | 57 ASSERT(entry_frame_ == NULL); |
57 // Forward jump. The current frame is added to the end of the list | 58 // Forward jump. The current frame is added to the end of the list |
58 // of frames reaching the target block and a jump to the merge code | 59 // of frames reaching the target block and a jump to the merge code |
59 // is emitted. | 60 // is emitted. |
60 AddReachingFrame(cgen_->frame()); | 61 AddReachingFrame(cgen_->frame()); |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 cgen_->frame()->MergeTo(entry_frame_); | 319 cgen_->frame()->MergeTo(entry_frame_); |
319 } | 320 } |
320 | 321 |
321 __ bind(&entry_label_); | 322 __ bind(&entry_label_); |
322 } | 323 } |
323 | 324 |
324 #undef __ | 325 #undef __ |
325 | 326 |
326 | 327 |
327 } } // namespace v8::internal | 328 } } // namespace v8::internal |
OLD | NEW |