| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2009 The Native Client Authors. All rights reserved. | 2 * Copyright 2011 The Native Client Authors. All rights reserved. |
| 3 * Use of this source code is governed by a BSD-style license that can | 3 * Use of this source code is governed by a BSD-style license that can |
| 4 * be found in the LICENSE file. | 4 * be found in the LICENSE file. |
| 5 * Copyright 2009, Google Inc. | 5 * Copyright 2011, Google Inc. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_V2_MODEL_H | 8 #ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_V2_MODEL_H |
| 9 #define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_V2_MODEL_H | 9 #define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_V2_MODEL_H |
| 10 | 10 |
| 11 /* | 11 /* |
| 12 * Models instructions and decode results. | 12 * Models instructions and decode results. |
| 13 * | 13 * |
| 14 * Implementation Note: | 14 * Implementation Note: |
| 15 * All the classes in this file are designed to be fully inlined as 32-bit | 15 * All the classes in this file are designed to be fully inlined as 32-bit |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 /* | 97 /* |
| 98 * Produces a RegisterList containing a single register. | 98 * Produces a RegisterList containing a single register. |
| 99 * | 99 * |
| 100 * Note that this is an implicit constructor. This is okay in this case | 100 * Note that this is an implicit constructor. This is okay in this case |
| 101 * because | 101 * because |
| 102 * - It converts between two types that we control, | 102 * - It converts between two types that we control, |
| 103 * - It converts at most one step (no implicit conversions to Register), | 103 * - It converts at most one step (no implicit conversions to Register), |
| 104 * - It inlines to a single machine instruction, | 104 * - It inlines to a single machine instruction, |
| 105 * - The readability gain in inst_classes.cc is large. | 105 * - The readability gain in inst_classes.cc is large. |
| 106 */ | 106 */ |
| 107 /* @IGNORE_LINES_FOR_CODE_HYGIENE[2] */ |
| 107 inline RegisterList(const Register r); | 108 inline RegisterList(const Register r); |
| 108 | 109 |
| 109 /* | 110 /* |
| 110 * Checks whether this list contains the given register. | 111 * Checks whether this list contains the given register. |
| 111 */ | 112 */ |
| 112 inline bool operator[](const Register) const; | 113 inline bool operator[](const Register) const; |
| 113 | 114 |
| 114 // Checks whether this list contains all the registers in the operand. | 115 // Checks whether this list contains all the registers in the operand. |
| 115 inline bool contains_all(RegisterList) const; | 116 inline bool contains_all(RegisterList) const; |
| 116 | 117 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 134 * This is not a member function to allow implicit conversion of Register. | 135 * This is not a member function to allow implicit conversion of Register. |
| 135 */ | 136 */ |
| 136 inline const RegisterList operator+(const RegisterList, const RegisterList); | 137 inline const RegisterList operator+(const RegisterList, const RegisterList); |
| 137 | 138 |
| 138 /* | 139 /* |
| 139 * A list containing every possible register, even some we don't define. | 140 * A list containing every possible register, even some we don't define. |
| 140 * Used exclusively as a bogus scary return value for forbidden instructions. | 141 * Used exclusively as a bogus scary return value for forbidden instructions. |
| 141 */ | 142 */ |
| 142 static const RegisterList kRegisterListEverything = RegisterList(-1); | 143 static const RegisterList kRegisterListEverything = RegisterList(-1); |
| 143 | 144 |
| 145 /* |
| 146 * A register list which contains no registers. |
| 147 */ |
| 148 static const RegisterList kRegisterListNothing = RegisterList(0); |
| 144 | 149 |
| 145 /* | 150 /* |
| 146 * A 32-bit ARM instruction of unspecified type. | 151 * A 32-bit ARM instruction of unspecified type. |
| 147 * | 152 * |
| 148 * This class is designed for efficiency: | 153 * This class is designed for efficiency: |
| 149 * - Its public methods for bitfield extraction are short and inline. | 154 * - Its public methods for bitfield extraction are short and inline. |
| 150 * - It has no vtable, so on 32-bit platforms it's exactly the size of the | 155 * - It has no vtable, so on 32-bit platforms it's exactly the size of the |
| 151 * instruction it models. | 156 * instruction it models. |
| 152 */ | 157 */ |
| 153 class Instruction { | 158 class Instruction { |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 private: | 206 private: |
| 202 uint32_t _bits; | 207 uint32_t _bits; |
| 203 }; | 208 }; |
| 204 | 209 |
| 205 } // namespace | 210 } // namespace |
| 206 | 211 |
| 207 // Definitions for our inlined functions. | 212 // Definitions for our inlined functions. |
| 208 #include "native_client/src/trusted/validator_arm/model-inl.h" | 213 #include "native_client/src/trusted/validator_arm/model-inl.h" |
| 209 | 214 |
| 210 #endif // NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_V2_MODEL_H | 215 #endif // NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_ARM_V2_MODEL_H |
| OLD | NEW |