Chromium Code Reviews| Index: runtime/vm/intermediate_language.h |
| =================================================================== |
| --- runtime/vm/intermediate_language.h (revision 8372) |
| +++ runtime/vm/intermediate_language.h (working copy) |
| @@ -94,6 +94,9 @@ |
| ICData* ic_data() const { return ic_data_; } |
| void set_ic_data(ICData* value) { ic_data_ = value; } |
| + bool HasICData() const { |
| + return (ic_data() != NULL) && !ic_data()->IsNull(); |
| + } |
| // Visiting support. |
| virtual void Accept(FlowGraphVisitor* visitor) = 0; |
| @@ -661,22 +664,29 @@ |
| class LoadInstanceFieldComp : public TemplateComputation<1> { |
| public: |
| - LoadInstanceFieldComp(LoadInstanceFieldNode* ast_node, Value* instance) |
| - : ast_node_(*ast_node) { |
| + LoadInstanceFieldComp(const Field& field, |
| + Value* instance, |
| + InstanceCallComp* original, // Maybe NULL. |
| + ZoneGrowableArray<intptr_t>* class_ids) // Maybe NULL. |
| + : field_(field), original_(original), class_ids_(class_ids) { |
| ASSERT(instance != NULL); |
| inputs_[0] = instance; |
| } |
| DECLARE_COMPUTATION(LoadInstanceField) |
| - const Field& field() const { return ast_node_.field(); } |
| - |
| + const Field& field() const { return field_; } |
| Value* instance() const { return inputs_[0]; } |
| + const ZoneGrowableArray<intptr_t>* class_ids() const { return class_ids_; } |
| + const InstanceCallComp* original() const { return original_; } |
| virtual void PrintOperandsTo(BufferFormatter* f) const; |
| private: |
| - const LoadInstanceFieldNode& ast_node_; |
| + const Field& field_; |
| + const InstanceCallComp* original_; // For optimizations. |
| + // If non-NULL, the instruction is valid only for the clas ids listed. |
|
Florian Schneider
2012/06/07 08:47:59
s/clas/class/
srdjan
2012/06/07 18:24:50
Done.
|
| + const ZoneGrowableArray<intptr_t>* class_ids_; |
| DISALLOW_COPY_AND_ASSIGN(LoadInstanceFieldComp); |
| }; |
| @@ -684,10 +694,12 @@ |
| class StoreInstanceFieldComp : public TemplateComputation<2> { |
| public: |
| - StoreInstanceFieldComp(StoreInstanceFieldNode* ast_node, |
| + StoreInstanceFieldComp(const Field& field, |
| Value* instance, |
| - Value* value) |
| - : ast_node_(*ast_node) { |
| + Value* value, |
| + InstanceSetterComp* original, // Maybe NULL. |
| + ZoneGrowableArray<intptr_t>* class_ids) // Maybe NULL. |
| + : field_(field), original_(original), class_ids_(class_ids) { |
| ASSERT(instance != NULL); |
| ASSERT(value != NULL); |
| inputs_[0] = instance; |
| @@ -696,16 +708,21 @@ |
| DECLARE_COMPUTATION(StoreInstanceField) |
| - intptr_t token_index() const { return ast_node_.token_index(); } |
| - const Field& field() const { return ast_node_.field(); } |
| + const Field& field() const { return field_; } |
| Value* instance() const { return inputs_[0]; } |
| Value* value() const { return inputs_[1]; } |
| + const ZoneGrowableArray<intptr_t>* class_ids() const { return class_ids_; } |
| + const InstanceSetterComp* original() const { return original_; } |
| + |
| virtual void PrintOperandsTo(BufferFormatter* f) const; |
| private: |
| - const StoreInstanceFieldNode& ast_node_; |
| + const Field& field_; |
| + const InstanceSetterComp* original_; // For optimizations. |
| + // If non-NULL, the instruction is valid only for the clas ids listed. |
|
Florian Schneider
2012/06/07 08:47:59
s/clas/class/
srdjan
2012/06/07 18:24:50
Done.
|
| + const ZoneGrowableArray<intptr_t>* class_ids_; |
| DISALLOW_COPY_AND_ASSIGN(StoreInstanceFieldComp); |
| }; |