| 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 3086 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3097 | 3097 |
| 3098 virtual Condition EmitComparisonCode(FlowGraphCompiler* compiler, | 3098 virtual Condition EmitComparisonCode(FlowGraphCompiler* compiler, |
| 3099 BranchLabels labels); | 3099 BranchLabels labels); |
| 3100 | 3100 |
| 3101 private: | 3101 private: |
| 3102 DISALLOW_COPY_AND_ASSIGN(TestSmiInstr); | 3102 DISALLOW_COPY_AND_ASSIGN(TestSmiInstr); |
| 3103 }; | 3103 }; |
| 3104 | 3104 |
| 3105 | 3105 |
| 3106 // Checks the input value cid against cids stored in a table and returns either | 3106 // Checks the input value cid against cids stored in a table and returns either |
| 3107 // a result or deoptimizes. | 3107 // a result or deoptimizes. If the cid is not in the list and there is a deopt |
| 3108 // id, then the instruction deoptimizes. If there is no deopt id, all the |
| 3109 // results must be the same (all true or all false) and the instruction returns |
| 3110 // the opposite for cids not on the list. The first element in the table must |
| 3111 // always be the result for the Smi class-id and is allowed to differ from the |
| 3112 // other results even in the no-deopt case. |
| 3108 class TestCidsInstr : public TemplateComparison<1, NoThrow, Pure> { | 3113 class TestCidsInstr : public TemplateComparison<1, NoThrow, Pure> { |
| 3109 public: | 3114 public: |
| 3110 TestCidsInstr(TokenPosition token_pos, | 3115 TestCidsInstr(TokenPosition token_pos, |
| 3111 Token::Kind kind, | 3116 Token::Kind kind, |
| 3112 Value* value, | 3117 Value* value, |
| 3113 const ZoneGrowableArray<intptr_t>& cid_results, | 3118 const ZoneGrowableArray<intptr_t>& cid_results, |
| 3114 intptr_t deopt_id) | 3119 intptr_t deopt_id); |
| 3115 : TemplateComparison(token_pos, kind, deopt_id), | |
| 3116 cid_results_(cid_results), | |
| 3117 licm_hoisted_(false) { | |
| 3118 ASSERT((kind == Token::kIS) || (kind == Token::kISNOT)); | |
| 3119 SetInputAt(0, value); | |
| 3120 set_operation_cid(kObjectCid); | |
| 3121 } | |
| 3122 | 3120 |
| 3123 const ZoneGrowableArray<intptr_t>& cid_results() const { | 3121 const ZoneGrowableArray<intptr_t>& cid_results() const { |
| 3124 return cid_results_; | 3122 return cid_results_; |
| 3125 } | 3123 } |
| 3126 | 3124 |
| 3127 DECLARE_INSTRUCTION(TestCids); | 3125 DECLARE_INSTRUCTION(TestCids); |
| 3128 | 3126 |
| 3129 virtual ComparisonInstr* CopyWithNewOperands(Value* left, Value* right); | 3127 virtual ComparisonInstr* CopyWithNewOperands(Value* left, Value* right); |
| 3130 | 3128 |
| 3131 virtual CompileType ComputeType() const; | 3129 virtual CompileType ComputeType() const; |
| (...skipping 5099 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8231 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \ | 8229 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \ |
| 8232 UNIMPLEMENTED(); \ | 8230 UNIMPLEMENTED(); \ |
| 8233 return NULL; \ | 8231 return NULL; \ |
| 8234 } \ | 8232 } \ |
| 8235 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } | 8233 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } |
| 8236 | 8234 |
| 8237 | 8235 |
| 8238 } // namespace dart | 8236 } // namespace dart |
| 8239 | 8237 |
| 8240 #endif // RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ | 8238 #endif // RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ |
| OLD | NEW |