diff options
Diffstat (limited to 'vm/compiler/codegen/arm/Ralloc.h')
| -rw-r--r-- | vm/compiler/codegen/arm/Ralloc.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/vm/compiler/codegen/arm/Ralloc.h b/vm/compiler/codegen/arm/Ralloc.h index 6c7dfaaae..cc3e60587 100644 --- a/vm/compiler/codegen/arm/Ralloc.h +++ b/vm/compiler/codegen/arm/Ralloc.h @@ -27,6 +27,20 @@ #include "compiler/Dataflow.h" #include "compiler/codegen/arm/ArmLIR.h" +/* + * Return most flexible allowed register class based on size. + * Bug: 2813841 + * Must use a core register for data types narrower than word (due + * to possible unaligned load/store. + */ +static inline RegisterClass dvmCompilerRegClassBySize(OpSize size) +{ + return (size == kUnsignedHalf || + size == kSignedHalf || + size == kUnsignedByte || + size == kSignedByte ) ? kCoreReg : kAnyReg; +} + static inline int dvmCompilerS2VReg(CompilationUnit *cUnit, int sReg) { assert(sReg != INVALID_SREG); |
