OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 993 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1004 if (CpuFeatures::IsSupported(VFP2)) { | 1004 if (CpuFeatures::IsSupported(VFP2)) { |
1005 CpuFeatures::Scope scope(VFP2); | 1005 CpuFeatures::Scope scope(VFP2); |
1006 // Save all allocatable VFP registers before messing with them. | 1006 // Save all allocatable VFP registers before messing with them. |
1007 ASSERT(kDoubleRegZero.code() == 14); | 1007 ASSERT(kDoubleRegZero.code() == 14); |
1008 ASSERT(kScratchDoubleReg.code() == 15); | 1008 ASSERT(kScratchDoubleReg.code() == 15); |
1009 | 1009 |
1010 // Check CPU flags for number of registers, setting the Z condition flag. | 1010 // Check CPU flags for number of registers, setting the Z condition flag. |
1011 __ CheckFor32DRegs(ip); | 1011 __ CheckFor32DRegs(ip); |
1012 | 1012 |
1013 // Push registers d0-d13, and possibly d16-d31, on the stack. | 1013 // Push registers d0-d13, and possibly d16-d31, on the stack. |
| 1014 // If d16-d31 are not pushed, decrease the stack pointer instead. |
1014 __ vstm(db_w, sp, d16, d31, ne); | 1015 __ vstm(db_w, sp, d16, d31, ne); |
1015 __ sub(sp, sp, Operand(16 * kDoubleSize), LeaveCC, eq); | 1016 __ sub(sp, sp, Operand(16 * kDoubleSize), LeaveCC, eq); |
1016 __ vstm(db_w, sp, d0, d13); | 1017 __ vstm(db_w, sp, d0, d13); |
1017 } else { | 1018 } else { |
1018 __ sub(sp, sp, Operand(kDoubleRegsSize)); | 1019 __ sub(sp, sp, Operand(kDoubleRegsSize)); |
1019 } | 1020 } |
1020 | 1021 |
1021 // Push all 16 registers (needed to populate FrameDescription::registers_). | 1022 // Push all 16 registers (needed to populate FrameDescription::registers_). |
1022 // TODO(1588) Note that using pc with stm is deprecated, so we should perhaps | 1023 // TODO(1588) Note that using pc with stm is deprecated, so we should perhaps |
1023 // handle this a bit differently. | 1024 // handle this a bit differently. |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1225 __ push(ip); | 1226 __ push(ip); |
1226 __ b(&done); | 1227 __ b(&done); |
1227 ASSERT(masm()->pc_offset() - start == table_entry_size_); | 1228 ASSERT(masm()->pc_offset() - start == table_entry_size_); |
1228 } | 1229 } |
1229 __ bind(&done); | 1230 __ bind(&done); |
1230 } | 1231 } |
1231 | 1232 |
1232 #undef __ | 1233 #undef __ |
1233 | 1234 |
1234 } } // namespace v8::internal | 1235 } } // namespace v8::internal |
OLD | NEW |