| OLD | NEW |
| 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
| 2 // All Rights Reserved. | 2 // All Rights Reserved. |
| 3 // | 3 // |
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
| 5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
| 6 // are met: | 6 // are met: |
| 7 // | 7 // |
| 8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
| 9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
| 10 // | 10 // |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 | 39 |
| 40 #ifndef V8_ARM_ASSEMBLER_ARM_H_ | 40 #ifndef V8_ARM_ASSEMBLER_ARM_H_ |
| 41 #define V8_ARM_ASSEMBLER_ARM_H_ | 41 #define V8_ARM_ASSEMBLER_ARM_H_ |
| 42 #include <stdio.h> | 42 #include <stdio.h> |
| 43 #include "assembler.h" | 43 #include "assembler.h" |
| 44 #include "serialize.h" | 44 #include "serialize.h" |
| 45 | 45 |
| 46 namespace v8 { | 46 namespace v8 { |
| 47 namespace internal { | 47 namespace internal { |
| 48 | 48 |
| 49 |
| 49 // CPU Registers. | 50 // CPU Registers. |
| 50 // | 51 // |
| 51 // 1) We would prefer to use an enum, but enum values are assignment- | 52 // 1) We would prefer to use an enum, but enum values are assignment- |
| 52 // compatible with int, which has caused code-generation bugs. | 53 // compatible with int, which has caused code-generation bugs. |
| 53 // | 54 // |
| 54 // 2) We would prefer to use a class instead of a struct but we don't like | 55 // 2) We would prefer to use a class instead of a struct but we don't like |
| 55 // the register initialization to depend on the particular initialization | 56 // the register initialization to depend on the particular initialization |
| 56 // order (which appears to be different on OS X, Linux, and Windows for the | 57 // order (which appears to be different on OS X, Linux, and Windows for the |
| 57 // installed versions of C++ we tried). Using a struct permits C-style | 58 // installed versions of C++ we tried). Using a struct permits C-style |
| 58 // "initialization". Also, the Register objects cannot be const as this | 59 // "initialization". Also, the Register objects cannot be const as this |
| (...skipping 943 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1002 // source position information | 1003 // source position information |
| 1003 int current_position_; | 1004 int current_position_; |
| 1004 int current_statement_position_; | 1005 int current_statement_position_; |
| 1005 int written_position_; | 1006 int written_position_; |
| 1006 int written_statement_position_; | 1007 int written_statement_position_; |
| 1007 | 1008 |
| 1008 // Code emission | 1009 // Code emission |
| 1009 inline void CheckBuffer(); | 1010 inline void CheckBuffer(); |
| 1010 void GrowBuffer(); | 1011 void GrowBuffer(); |
| 1011 inline void emit(Instr x); | 1012 inline void emit(Instr x); |
| 1013 inline void emit_int32(int32_t x); |
| 1012 | 1014 |
| 1013 // Instruction generation | 1015 // Instruction generation |
| 1014 void addrmod1(Instr instr, Register rn, Register rd, const Operand& x); | 1016 void addrmod1(Instr instr, Register rn, Register rd, const Operand& x); |
| 1015 void addrmod2(Instr instr, Register rd, const MemOperand& x); | 1017 void addrmod2(Instr instr, Register rd, const MemOperand& x); |
| 1016 void addrmod3(Instr instr, Register rd, const MemOperand& x); | 1018 void addrmod3(Instr instr, Register rd, const MemOperand& x); |
| 1017 void addrmod4(Instr instr, Register rn, RegList rl); | 1019 void addrmod4(Instr instr, Register rn, RegList rl); |
| 1018 void addrmod5(Instr instr, CRegister crd, const MemOperand& x); | 1020 void addrmod5(Instr instr, CRegister crd, const MemOperand& x); |
| 1019 | 1021 |
| 1020 // Labels | 1022 // Labels |
| 1021 void print(Label* L); | 1023 void print(Label* L); |
| 1022 void bind_to(Label* L, int pos); | 1024 void bind_to(Label* L, int pos); |
| 1023 void link_to(Label* L, Label* appendix); | 1025 void link_to(Label* L, Label* appendix); |
| 1024 void next(Label* L); | 1026 void next(Label* L); |
| 1025 | 1027 |
| 1026 // Record reloc info for current pc_ | 1028 // Record reloc info for current pc_ |
| 1027 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0); | 1029 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0); |
| 1028 | 1030 |
| 1029 friend class RegExpMacroAssemblerARM; | 1031 friend class RegExpMacroAssemblerARM; |
| 1030 friend class RelocInfo; | 1032 friend class RelocInfo; |
| 1031 friend class CodePatcher; | 1033 friend class CodePatcher; |
| 1032 }; | 1034 }; |
| 1033 | 1035 |
| 1034 } } // namespace v8::internal | 1036 } } // namespace v8::internal |
| 1035 | 1037 |
| 1036 #endif // V8_ARM_ASSEMBLER_ARM_H_ | 1038 #endif // V8_ARM_ASSEMBLER_ARM_H_ |
| OLD | NEW |