Reviewers: Toon Verwaest,
Description:
Only set binary operation side effects flags, when observable.
BUG=
Please review this at https://codereview.chromium.org/26712002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+14, -5 lines):
M src/hydrogen-instructions.h
Index: src/hydrogen-instructions.h
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
index
733347b5b5fc87a07f0f0630be20d30df21418ab..f6b6f0602d411ce1ffd52b286696d810f6f4e5ff
100644
--- a/src/hydrogen-instructions.h
+++ b/src/hydrogen-instructions.h
@@ -3947,11 +3947,11 @@ class HBitwiseBinaryOperation : public
HBinaryOperation {
}
virtual void RepresentationChanged(Representation to) V8_OVERRIDE {
- if (to.IsTagged()) {
+ if (to.IsTagged() &&
+ (left()->ToNumberCanBeObserved() ||
right()->ToNumberCanBeObserved())) {
SetAllSideEffects();
ClearFlag(kUseGVN);
} else {
- ASSERT(to.IsSmiOrInteger32());
ClearAllSideEffects();
SetFlag(kUseGVN);
}
@@ -4023,7 +4023,8 @@ class HArithmeticBinaryOperation : public
HBinaryOperation {
}
virtual void RepresentationChanged(Representation to) V8_OVERRIDE {
- if (to.IsTagged()) {
+ if (to.IsTagged() &&
+ (left()->ToNumberCanBeObserved() ||
right()->ToNumberCanBeObserved())) {
SetAllSideEffects();
ClearFlag(kUseGVN);
} else {
@@ -4562,8 +4563,16 @@ class HAdd V8_FINAL : public
HArithmeticBinaryOperation {
}
virtual void RepresentationChanged(Representation to) V8_OVERRIDE {
- if (to.IsTagged()) ClearFlag(kAllowUndefinedAsNaN);
- HArithmeticBinaryOperation::RepresentationChanged(to);
+ if (to.IsTagged() &&
+ (left()->ToNumberCanBeObserved() ||
right()->ToNumberCanBeObserved() ||
+ left()->ToStringCanBeObserved() ||
right()->ToStringCanBeObserved())) {
+ ClearFlag(kAllowUndefinedAsNaN);
+ SetAllSideEffects();
+ ClearFlag(kUseGVN);
+ } else {
+ ClearAllSideEffects();
+ SetFlag(kUseGVN);
+ }
}
DECLARE_CONCRETE_INSTRUCTION(Add)
--
--
v8-dev mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.