summaryrefslogtreecommitdiff
path: root/deps/v8/src/arm/jump-target-arm.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/arm/jump-target-arm.cc')
-rw-r--r--deps/v8/src/arm/jump-target-arm.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/deps/v8/src/arm/jump-target-arm.cc b/deps/v8/src/arm/jump-target-arm.cc
index b9e6ebf247..df370c4437 100644
--- a/deps/v8/src/arm/jump-target-arm.cc
+++ b/deps/v8/src/arm/jump-target-arm.cc
@@ -143,6 +143,16 @@ void JumpTarget::DoBind() {
entry_frame_set_ = true;
} else {
cgen()->frame()->MergeTo(&entry_frame_);
+ // On fall through we may have to merge both ways.
+ if (direction_ != FORWARD_ONLY) {
+ // This will not need to adjust the virtual frame entries that are
+ // register allocated since that was done above and they now match.
+ // But it does need to adjust the entry_frame_ of this jump target
+ // to make it potentially less optimistic. Later code can branch back
+ // to this jump target and we need to assert that that code does not
+ // have weaker assumptions about types.
+ entry_frame_.MergeTo(cgen()->frame());
+ }
}
} else {
// If there is no current frame we must have an entry frame which we can