Reviewers: ,
Message:
This is the first of a 2 patches that address the regression performance
spotted
in r20187.
Description:
ARM64: Avoid iterating through unresolved branches information when
unnecessary.
Please review this at https://codereview.chromium.org/217343007/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+12, -10 lines):
M src/arm64/assembler-arm64.cc
Index: src/arm64/assembler-arm64.cc
diff --git a/src/arm64/assembler-arm64.cc b/src/arm64/assembler-arm64.cc
index
8bee92ccc273a87b1e319481ef0697063c7f4075..ad2997c316070600fba82c707a0fd07ab0a162ff
100644
--- a/src/arm64/assembler-arm64.cc
+++ b/src/arm64/assembler-arm64.cc
@@ -456,6 +456,8 @@ void Assembler::bind(Label* label) {
ASSERT(!label->is_near_linked());
ASSERT(!label->is_bound());
+ DeleteUnresolvedBranchInfoForLabel(label);
+
// If the label is linked, the link chain looks something like this:
//
// |--I----I-------I-------L
@@ -497,8 +499,6 @@ void Assembler::bind(Label* label) {
ASSERT(label->is_bound());
ASSERT(!label->is_linked());
-
- DeleteUnresolvedBranchInfoForLabel(label);
}
@@ -551,14 +551,16 @@ void
Assembler::DeleteUnresolvedBranchInfoForLabel(Label* label) {
return;
}
- // Branches to this label will be resolved when the label is bound below.
- std::multimap<int, FarBranchInfo>::iterator it_tmp, it;
- it = unresolved_branches_.begin();
- while (it != unresolved_branches_.end()) {
- it_tmp = it++;
- if (it_tmp->second.label_ == label) {
- CHECK(it_tmp->first >= pc_offset());
- unresolved_branches_.erase(it_tmp);
+ if (label->is_linked()) {
+ // Branches to this label will be resolved when the label is bound
below.
+ std::multimap<int, FarBranchInfo>::iterator it_tmp, it;
+ it = unresolved_branches_.begin();
+ while (it != unresolved_branches_.end()) {
+ it_tmp = it++;
+ if (it_tmp->second.label_ == label) {
+ CHECK(it_tmp->first >= pc_offset());
+ unresolved_branches_.erase(it_tmp);
+ }
}
}
if (unresolved_branches_.empty()) {
--
--
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.