-
-
Notifications
You must be signed in to change notification settings - Fork 925
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Truffle] Switched branching max value check with a bit shift based o…
…ne to avoid branching.
- 9.4.12.0
- 9.4.11.0
- 9.4.10.0
- 9.4.9.0
- 9.4.8.0
- 9.4.7.0
- 9.4.6.0
- 9.4.5.0
- 9.4.4.0
- 9.4.3.0
- 9.4.2.0
- 9.4.1.0
- 9.4.0.0
- 9.3.15.0
- 9.3.14.0
- 9.3.13.0
- 9.3.12.0
- 9.3.11.0
- 9.3.10.0
- 9.3.9.0
- 9.3.8.0
- 9.3.7.0
- 9.3.6.0
- 9.3.5.0
- 9.3.4.0
- 9.3.3.0
- 9.3.2.0
- 9.3.1.0
- 9.3.0.0
- 9.2.21.0
- 9.2.20.1
- 9.2.20.0
- 9.2.19.0
- 9.2.18.0
- 9.2.17.0
- 9.2.16.0
- 9.2.15.0
- 9.2.14.0
- 9.2.13.0
- 9.2.12.0
- 9.2.11.1
- 9.2.11.0
- 9.2.10.0
- 9.2.9.0
- 9.2.8.0
- 9.2.7.0
- 9.2.6.0
- 9.2.5.0
- 9.2.4.1
- 9.2.4.0
- 9.2.3.0
- 9.2.2.0
- 9.2.1.0
- 9.2.0.0
- 9.1.17.0
- 9.1.16.0
- 9.1.15.0
- 9.1.14.0
- 9.1.13.0
- 9.1.12.0
- 9.1.11.0
- 9.1.10.0
- 9.1.9.0
- 9.1.8.0
- 9.1.7.0
- 9.1.6.0
- 9.1.5.0
- 9.1.4.0
- 9.1.3.0
- 9.1.2.0
- 9.1.1.0
- 9.1.0.0
Showing
1 changed file
with
15 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -222,42 +222,38 @@ public Rope concatLeaves(LeafRope left, LeafRope right, Encoding encoding, | |
public Rope concatLeavesGeneral(LeafRope left, LeafRope right, Encoding encoding, | ||
@Cached("createBinaryProfile()") ConditionProfile sameCodeRangeProfile, | ||
@Cached("createBinaryProfile()") ConditionProfile brokenCodeRangeProfile, | ||
@Cached("createBinaryProfile()") ConditionProfile isLeftSingleByteOptimizableProfile, | ||
@Cached("createBinaryProfile()") ConditionProfile leftDepthGreaterThanRightProfile) { | ||
return concat(left, right, encoding, sameCodeRangeProfile, brokenCodeRangeProfile, isLeftSingleByteOptimizableProfile, leftDepthGreaterThanRightProfile); | ||
@Cached("createBinaryProfile()") ConditionProfile isLeftSingleByteOptimizableProfile) { | ||
return concat(left, right, encoding, sameCodeRangeProfile, brokenCodeRangeProfile, isLeftSingleByteOptimizableProfile); | ||
} | ||
|
||
@Specialization(guards = { "!left.isEmpty()", "!right.isEmpty()", "right.byteLength() < SHORT_LEAF_BYTESIZE_THRESHOLD" }) | ||
public Rope concatWithReduce(ConcatRope left, LeafRope right, Encoding encoding, | ||
@Cached("createBinaryProfile()") ConditionProfile sameCodeRangeProfile, | ||
@Cached("createBinaryProfile()") ConditionProfile brokenCodeRangeProfile, | ||
@Cached("createBinaryProfile()") ConditionProfile isLeftSingleByteOptimizableProfile, | ||
@Cached("createBinaryProfile()") ConditionProfile leftDepthGreaterThanRightProfile) { | ||
@Cached("createBinaryProfile()") ConditionProfile isLeftSingleByteOptimizableProfile) { | ||
|
||
if ((left.getRight().byteLength() < SHORT_LEAF_BYTESIZE_THRESHOLD) && (left.getRight() instanceof LeafRope)) { | ||
final Rope compacted = concatLeaves((LeafRope) left.getRight(), right, encoding, sameCodeRangeProfile, brokenCodeRangeProfile); | ||
return concat(left.getLeft(), compacted, encoding, sameCodeRangeProfile, brokenCodeRangeProfile, isLeftSingleByteOptimizableProfile, leftDepthGreaterThanRightProfile); | ||
return concat(left.getLeft(), compacted, encoding, sameCodeRangeProfile, brokenCodeRangeProfile, isLeftSingleByteOptimizableProfile); | ||
} | ||
|
||
return concat(left, right, encoding, sameCodeRangeProfile, brokenCodeRangeProfile, isLeftSingleByteOptimizableProfile, leftDepthGreaterThanRightProfile); | ||
return concat(left, right, encoding, sameCodeRangeProfile, brokenCodeRangeProfile, isLeftSingleByteOptimizableProfile); | ||
} | ||
|
||
@Specialization(guards = { "!left.isEmpty()", "!right.isEmpty()", "right.byteLength() < SHORT_LEAF_BYTESIZE_THRESHOLD" }) | ||
public Rope concatSubstringLeaf(SubstringRope left, LeafRope right, Encoding encoding, | ||
@Cached("createBinaryProfile()") ConditionProfile sameCodeRangeProfile, | ||
@Cached("createBinaryProfile()") ConditionProfile brokenCodeRangeProfile, | ||
@Cached("createBinaryProfile()") ConditionProfile isLeftSingleByteOptimizableProfile, | ||
@Cached("createBinaryProfile()") ConditionProfile leftDepthGreaterThanRightProfile) { | ||
return concat(left, right, encoding, sameCodeRangeProfile, brokenCodeRangeProfile, isLeftSingleByteOptimizableProfile, leftDepthGreaterThanRightProfile); | ||
@Cached("createBinaryProfile()") ConditionProfile isLeftSingleByteOptimizableProfile) { | ||
return concat(left, right, encoding, sameCodeRangeProfile, brokenCodeRangeProfile, isLeftSingleByteOptimizableProfile); | ||
} | ||
|
||
@Specialization(guards = { "!left.isEmpty()", "!right.isEmpty()" }) | ||
public Rope concat(Rope left, Rope right, Encoding encoding, | ||
@Cached("createBinaryProfile()") ConditionProfile sameCodeRangeProfile, | ||
@Cached("createBinaryProfile()") ConditionProfile brokenCodeRangeProfile, | ||
@Cached("createBinaryProfile()") ConditionProfile isLeftSingleByteOptimizableProfile, | ||
@Cached("createBinaryProfile()") ConditionProfile leftDepthGreaterThanRightProfile) { | ||
int depth = depth(left, right, leftDepthGreaterThanRightProfile); | ||
@Cached("createBinaryProfile()") ConditionProfile isLeftSingleByteOptimizableProfile) { | ||
int depth = depth(left, right); | ||
/*if (depth >= 10) { | ||
System.out.println("ConcatRope depth: " + depth); | ||
}*/ | ||
|
@@ -291,12 +287,13 @@ private boolean isSingleByteOptimizable(Rope left, Rope right, ConditionProfile | |
return false; | ||
} | ||
|
||
private int depth(Rope left, Rope right, ConditionProfile leftDepthGreaterThanRightProfile) { | ||
if (leftDepthGreaterThanRightProfile.profile(left.depth() >= right.depth())) { | ||
return left.depth() + 1; | ||
} | ||
private int depth(Rope left, Rope right) { | ||
final int x = left.depth(); | ||
final int y = right.depth(); | ||
|
||
int maxChildDepth = x - ((x - y) & ((x - y) >> (Integer.SIZE - 1))); | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
nirvdrum
Author
Contributor
|
||
|
||
return right.depth() + 1; | ||
return maxChildDepth + 1; | ||
} | ||
|
||
protected static boolean isShortLeafRope(Rope rope) { | ||
|
How does this work?