OLD | NEW |
---|---|
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
114 function->ReplaceCode(function->shared()->code()); | 114 function->ReplaceCode(function->shared()->code()); |
115 | 115 |
116 if (FLAG_trace_deopt) { | 116 if (FLAG_trace_deopt) { |
117 PrintF("[forced deoptimization: "); | 117 PrintF("[forced deoptimization: "); |
118 function->PrintName(); | 118 function->PrintName(); |
119 PrintF(" / %x]\n", reinterpret_cast<uint32_t>(function)); | 119 PrintF(" / %x]\n", reinterpret_cast<uint32_t>(function)); |
120 } | 120 } |
121 } | 121 } |
122 | 122 |
123 | 123 |
124 void Deoptimizer::PatchStackCheckCodeAt(Address pc_after, | 124 void Deoptimizer::PatchStackCheckCodeAt(Code* code, |
Erik Corry
2011/02/22 12:27:19
Should we add a TODO to make use of this argument?
Vyacheslav Egorov (Chromium)
2011/02/23 14:31:46
Done.
| |
125 Address pc_after, | |
125 Code* check_code, | 126 Code* check_code, |
126 Code* replacement_code) { | 127 Code* replacement_code) { |
127 const int kInstrSize = Assembler::kInstrSize; | 128 const int kInstrSize = Assembler::kInstrSize; |
128 // The call of the stack guard check has the following form: | 129 // The call of the stack guard check has the following form: |
129 // e1 5d 00 0c cmp sp, <limit> | 130 // e1 5d 00 0c cmp sp, <limit> |
130 // 2a 00 00 01 bcs ok | 131 // 2a 00 00 01 bcs ok |
131 // e5 9f c? ?? ldr ip, [pc, <stack guard address>] | 132 // e5 9f c? ?? ldr ip, [pc, <stack guard address>] |
132 // e1 2f ff 3c blx ip | 133 // e1 2f ff 3c blx ip |
133 ASSERT(Memory::int32_at(pc_after - kInstrSize) == | 134 ASSERT(Memory::int32_at(pc_after - kInstrSize) == |
134 (al | B24 | B21 | 15*B16 | 15*B12 | 15*B8 | BLX | ip.code())); | 135 (al | B24 | B21 | 15*B16 | 15*B12 | 15*B8 | BLX | ip.code())); |
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
689 __ push(ip); | 690 __ push(ip); |
690 __ b(&done); | 691 __ b(&done); |
691 ASSERT(masm()->pc_offset() - start == table_entry_size_); | 692 ASSERT(masm()->pc_offset() - start == table_entry_size_); |
692 } | 693 } |
693 __ bind(&done); | 694 __ bind(&done); |
694 } | 695 } |
695 | 696 |
696 #undef __ | 697 #undef __ |
697 | 698 |
698 } } // namespace v8::internal | 699 } } // namespace v8::internal |
OLD | NEW |