Index: runtime/vm/intermediate_language.h |
=================================================================== |
--- runtime/vm/intermediate_language.h (revision 39381) |
+++ runtime/vm/intermediate_language.h (working copy) |
@@ -706,6 +706,7 @@ |
M(LoadIndexed) \ |
M(StoreIndexed) \ |
M(StoreInstanceField) \ |
+ M(InitStaticField) \ |
M(LoadStaticField) \ |
M(StoreStaticField) \ |
M(BooleanNegate) \ |
@@ -4626,6 +4627,31 @@ |
}; |
+class InitStaticFieldInstr : public TemplateInstruction<1> { |
+ public: |
+ InitStaticFieldInstr(Value* input, const Field& field) |
+ : field_(field) { |
+ SetInputAt(0, input); |
+ } |
+ |
+ virtual intptr_t token_pos() const { return field_.token_pos(); } |
+ const Field& field() const { return field_; } |
+ |
+ DECLARE_INSTRUCTION(InitStaticField) |
+ |
+ virtual intptr_t ArgumentCount() const { return 0; } |
+ virtual bool CanDeoptimize() const { return true; } |
+ virtual EffectSet Effects() const { return EffectSet::All(); } |
+ virtual bool MayThrow() const { return true; } |
+ virtual Instruction* Canonicalize(FlowGraph* flow_graph); |
+ |
+ private: |
+ const Field& field_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(InitStaticFieldInstr); |
+}; |
+ |
+ |
class AllocateUninitializedContextInstr : public TemplateDefinition<0> { |
public: |
AllocateUninitializedContextInstr(intptr_t token_pos, |