summaryrefslogtreecommitdiff
path: root/compiler/utils/arm/assembler_thumb2.h
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2016-04-22 12:16:29 +0100
committer Vladimir Marko <vmarko@google.com> 2016-04-22 15:39:46 +0100
commit1f2ce44db2613a1e60a66c3c454834b72e994f57 (patch)
tree72d4f3a908b97ed9b3ce4d52f3e30703f7367fe5 /compiler/utils/arm/assembler_thumb2.h
parent1bfc7e5ebf22aac51019937849499f3d7f389db0 (diff)
Thumb2: Reduce memory used for fixup dependencies.
Mark fixups for far backward branches as 32-bit from the beginning and ignore their dependencies since they cannot be expanded anymore. This reduces the memory used by the fixup_dependents_ when compiling methods with a lot of slow paths. Bug: 28256882 Change-Id: I0b7155ed8970b69703fa9c4666d9c4961e425721
Diffstat (limited to 'compiler/utils/arm/assembler_thumb2.h')
-rw-r--r--compiler/utils/arm/assembler_thumb2.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/compiler/utils/arm/assembler_thumb2.h b/compiler/utils/arm/assembler_thumb2.h
index 111a6b09d7..bc5b708e88 100644
--- a/compiler/utils/arm/assembler_thumb2.h
+++ b/compiler/utils/arm/assembler_thumb2.h
@@ -538,6 +538,20 @@ class Thumb2Assembler FINAL : public ArmAssembler {
return GetType() >= kLoadLiteralNarrow;
}
+ // Returns whether the Fixup can expand from the original size.
+ bool CanExpand() const {
+ switch (GetOriginalSize()) {
+ case kBranch32Bit:
+ case kCbxz48Bit:
+ case kLiteralFar:
+ case kLiteralAddrFar:
+ case kLongOrFPLiteralFar:
+ return false;
+ default:
+ return true;
+ }
+ }
+
Size GetOriginalSize() const {
return original_size_;
}