OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ | 5 #ifndef RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ |
6 #define RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ | 6 #define RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ |
7 | 7 |
8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
9 #include "vm/ast.h" | 9 #include "vm/ast.h" |
10 #include "vm/growable_array.h" | 10 #include "vm/growable_array.h" |
(...skipping 4467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4478 | 4478 |
4479 DECLARE_INSTRUCTION(LoadField) | 4479 DECLARE_INSTRUCTION(LoadField) |
4480 virtual CompileType ComputeType() const; | 4480 virtual CompileType ComputeType() const; |
4481 | 4481 |
4482 virtual bool ComputeCanDeoptimize() const { return false; } | 4482 virtual bool ComputeCanDeoptimize() const { return false; } |
4483 | 4483 |
4484 virtual void InferRange(RangeAnalysis* analysis, Range* range); | 4484 virtual void InferRange(RangeAnalysis* analysis, Range* range); |
4485 | 4485 |
4486 bool IsImmutableLengthLoad() const; | 4486 bool IsImmutableLengthLoad() const; |
4487 | 4487 |
| 4488 // Try evaluating this load against the given constant value of |
| 4489 // the instance. Returns true if evaluation succeeded and |
| 4490 // puts result into result. |
| 4491 // Note: we only evaluate loads when we can ensure that |
| 4492 // instance has the field. |
| 4493 bool Evaluate(const Object& instance_value, Object* result); |
| 4494 |
4488 virtual Definition* Canonicalize(FlowGraph* flow_graph); | 4495 virtual Definition* Canonicalize(FlowGraph* flow_graph); |
4489 | 4496 |
4490 static MethodRecognizer::Kind RecognizedKindFromArrayCid(intptr_t cid); | 4497 static MethodRecognizer::Kind RecognizedKindFromArrayCid(intptr_t cid); |
4491 | 4498 |
4492 static bool IsFixedLengthArrayCid(intptr_t cid); | 4499 static bool IsFixedLengthArrayCid(intptr_t cid); |
4493 | 4500 |
4494 virtual bool AllowsCSE() const { return immutable_; } | 4501 virtual bool AllowsCSE() const { return immutable_; } |
4495 virtual EffectSet Effects() const { return EffectSet::None(); } | 4502 virtual EffectSet Effects() const { return EffectSet::None(); } |
4496 virtual EffectSet Dependencies() const; | 4503 virtual EffectSet Dependencies() const; |
4497 virtual bool AttributesEqual(Instruction* other) const; | 4504 virtual bool AttributesEqual(Instruction* other) const; |
(...skipping 3672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8170 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \ | 8177 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \ |
8171 UNIMPLEMENTED(); \ | 8178 UNIMPLEMENTED(); \ |
8172 return NULL; \ | 8179 return NULL; \ |
8173 } \ | 8180 } \ |
8174 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } | 8181 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } |
8175 | 8182 |
8176 | 8183 |
8177 } // namespace dart | 8184 } // namespace dart |
8178 | 8185 |
8179 #endif // RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ | 8186 #endif // RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ |
OLD | NEW |