OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_HYDROGEN_INSTRUCTIONS_H_ | 5 #ifndef V8_HYDROGEN_INSTRUCTIONS_H_ |
6 #define V8_HYDROGEN_INSTRUCTIONS_H_ | 6 #define V8_HYDROGEN_INSTRUCTIONS_H_ |
7 | 7 |
8 #include <iosfwd> | 8 #include <iosfwd> |
9 | 9 |
10 #include "src/v8.h" | 10 #include "src/v8.h" |
(...skipping 6925 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6936 } | 6936 } |
6937 | 6937 |
6938 void SetTransition(HConstant* transition) { | 6938 void SetTransition(HConstant* transition) { |
6939 DCHECK(!has_transition()); // Only set once. | 6939 DCHECK(!has_transition()); // Only set once. |
6940 SetOperandAt(2, transition); | 6940 SetOperandAt(2, transition); |
6941 bit_field_ = HasTransitionField::update(bit_field_, true); | 6941 bit_field_ = HasTransitionField::update(bit_field_, true); |
6942 SetChangesFlag(kMaps); | 6942 SetChangesFlag(kMaps); |
6943 } | 6943 } |
6944 | 6944 |
6945 bool NeedsWriteBarrier() const { | 6945 bool NeedsWriteBarrier() const { |
6946 DCHECK(!field_representation().IsDouble() || | 6946 DCHECK(!field_representation().IsDouble() || !has_transition()); |
6947 (FLAG_unbox_double_fields && access_.IsInobject()) || | |
6948 !has_transition()); | |
6949 if (field_representation().IsDouble()) return false; | 6947 if (field_representation().IsDouble()) return false; |
6950 if (field_representation().IsSmi()) return false; | 6948 if (field_representation().IsSmi()) return false; |
6951 if (field_representation().IsInteger32()) return false; | 6949 if (field_representation().IsInteger32()) return false; |
6952 if (field_representation().IsExternal()) return false; | 6950 if (field_representation().IsExternal()) return false; |
6953 return StoringValueNeedsWriteBarrier(value()) && | 6951 return StoringValueNeedsWriteBarrier(value()) && |
6954 ReceiverObjectNeedsWriteBarrier(object(), value(), dominator()); | 6952 ReceiverObjectNeedsWriteBarrier(object(), value(), dominator()); |
6955 } | 6953 } |
6956 | 6954 |
6957 bool NeedsWriteBarrierForMap() { | 6955 bool NeedsWriteBarrierForMap() { |
6958 return ReceiverObjectNeedsWriteBarrier(object(), transition(), | 6956 return ReceiverObjectNeedsWriteBarrier(object(), transition(), |
(...skipping 1021 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7980 }; | 7978 }; |
7981 | 7979 |
7982 | 7980 |
7983 | 7981 |
7984 #undef DECLARE_INSTRUCTION | 7982 #undef DECLARE_INSTRUCTION |
7985 #undef DECLARE_CONCRETE_INSTRUCTION | 7983 #undef DECLARE_CONCRETE_INSTRUCTION |
7986 | 7984 |
7987 } } // namespace v8::internal | 7985 } } // namespace v8::internal |
7988 | 7986 |
7989 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 7987 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |