summaryrefslogtreecommitdiffstats
path: root/compiler/dex/quick/arm64/codegen_arm64.h
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2014-07-15 23:02:11 -0700
committerAndreas Gampe <agampe@google.com>2014-07-17 10:02:10 -0700
commit90969af6deb19b1dbe356d62fe68d8f5698d3d8f (patch)
tree6d144bcd219ce718ba9d17240eade0bec51f3400 /compiler/dex/quick/arm64/codegen_arm64.h
parentaab012d6196bd29b3167963ec8acb0b9780672b2 (diff)
downloadandroid_art-90969af6deb19b1dbe356d62fe68d8f5698d3d8f.tar.gz
android_art-90969af6deb19b1dbe356d62fe68d8f5698d3d8f.tar.bz2
android_art-90969af6deb19b1dbe356d62fe68d8f5698d3d8f.zip
ART: Refactor GenSelect, refactor gen_common accordingly
This adds a GenSelect method meant for selection of constants. The general-purpose GenInstanceof code is refactored to take advantage of this. This cleans up code and squashes a branch-over on ARM64 to a cset. Also add a slow-path for type initialization in GenInstanceof. Change-Id: Ie4494858bb8c26d386cf2e628172b81bba911ae5
Diffstat (limited to 'compiler/dex/quick/arm64/codegen_arm64.h')
-rw-r--r--compiler/dex/quick/arm64/codegen_arm64.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler/dex/quick/arm64/codegen_arm64.h b/compiler/dex/quick/arm64/codegen_arm64.h
index de976531c2..da586b1e19 100644
--- a/compiler/dex/quick/arm64/codegen_arm64.h
+++ b/compiler/dex/quick/arm64/codegen_arm64.h
@@ -206,7 +206,14 @@ class Arm64Mir2Lir FINAL : public Mir2Lir {
void GenFillArrayData(DexOffset table_offset, RegLocation rl_src);
void GenFusedFPCmpBranch(BasicBlock* bb, MIR* mir, bool gt_bias, bool is_double);
void GenFusedLongCmpBranch(BasicBlock* bb, MIR* mir);
- void GenSelect(BasicBlock* bb, MIR* mir);
+ void GenSelect(BasicBlock* bb, MIR* mir) OVERRIDE;
+ void GenSelectConst32(RegStorage left_op, RegStorage right_op, ConditionCode code,
+ int32_t true_val, int32_t false_val, RegStorage rs_dest,
+ int dest_reg_class) OVERRIDE;
+ // Helper used in the above two.
+ void GenSelect(int32_t left, int32_t right, ConditionCode code, RegStorage rs_dest,
+ int result_reg_class);
+
bool GenMemBarrier(MemBarrierKind barrier_kind);
void GenMonitorEnter(int opt_flags, RegLocation rl_src);
void GenMonitorExit(int opt_flags, RegLocation rl_src);