diff options
| author | 2016-07-14 09:32:34 +0000 | |
|---|---|---|
| committer | 2016-07-14 09:32:34 +0000 | |
| commit | 2c30a373428b8d19bf97866d5d323c4ca2fbca72 (patch) | |
| tree | 8927430b0ae7185b0583615e8dbd7481ac13c6c7 /compiler/optimizing/code_generator.h | |
| parent | 7598736db0647eb963e77fafc22af6c0a5747d20 (diff) | |
| parent | 02b75806a80f8b75c3d6ba2ff97c995117630f36 (diff) | |
Merge "Introduce more compact ReadBarrierMark slow-paths."
Diffstat (limited to 'compiler/optimizing/code_generator.h')
| -rw-r--r-- | compiler/optimizing/code_generator.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/compiler/optimizing/code_generator.h b/compiler/optimizing/code_generator.h index 9364be35ff..b8540baca2 100644 --- a/compiler/optimizing/code_generator.h +++ b/compiler/optimizing/code_generator.h @@ -350,6 +350,16 @@ class CodeGenerator : public DeletableArenaObject<kArenaAllocCodeGenerator> { // accessing the String's `value` field in String intrinsics. static uint32_t GetArrayDataOffset(HArrayGet* array_get); + // Return the entry point offset for ReadBarrierMarkRegX, where X is `reg`. + template <size_t pointer_size> + static int32_t GetReadBarrierMarkEntryPointsOffset(size_t reg) { + DCHECK_LT(reg, 32u); + // The ReadBarrierMarkRegX entry points are ordered by increasing + // register number in Thread::tls_Ptr_.quick_entrypoints. + return QUICK_ENTRYPOINT_OFFSET(pointer_size, pReadBarrierMarkReg00).Int32Value() + + pointer_size * reg; + } + void EmitParallelMoves(Location from1, Location to1, Primitive::Type type1, |