OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 VM_FLOW_GRAPH_COMPILER_IA32_H_ | 5 #ifndef VM_FLOW_GRAPH_COMPILER_IA32_H_ |
6 #define VM_FLOW_GRAPH_COMPILER_IA32_H_ | 6 #define VM_FLOW_GRAPH_COMPILER_IA32_H_ |
7 | 7 |
8 #ifndef VM_FLOW_GRAPH_COMPILER_H_ | 8 #ifndef VM_FLOW_GRAPH_COMPILER_H_ |
9 #error Include flow_graph_compiler.h instead of flow_graph_compiler_ia32.h. | 9 #error Include flow_graph_compiler.h instead of flow_graph_compiler_ia32.h. |
10 #endif | 10 #endif |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 friend class DeoptimizationStub; | 74 friend class DeoptimizationStub; |
75 | 75 |
76 virtual void VisitBlocks(); | 76 virtual void VisitBlocks(); |
77 | 77 |
78 void CopyParameters(); | 78 void CopyParameters(); |
79 void EmitInstructionPrologue(Instruction* instr); | 79 void EmitInstructionPrologue(Instruction* instr); |
80 | 80 |
81 virtual void GenerateInlinedGetter(intptr_t offset); | 81 virtual void GenerateInlinedGetter(intptr_t offset); |
82 virtual void GenerateInlinedSetter(intptr_t offset); | 82 virtual void GenerateInlinedSetter(intptr_t offset); |
83 | 83 |
| 84 RawSubtypeTestCache* GenerateInlineInstanceof(intptr_t cid, |
| 85 intptr_t token_index, |
| 86 const AbstractType& type, |
| 87 Label* is_instance_lbl, |
| 88 Label* is_not_instance_lbl); |
| 89 |
| 90 RawSubtypeTestCache* GenerateInstantiatedTypeWithArgumentsTest( |
| 91 intptr_t cid, |
| 92 intptr_t token_index, |
| 93 const AbstractType& dst_type, |
| 94 Label* is_instance_lbl, |
| 95 Label* is_not_instance_lbl); |
| 96 |
| 97 void GenerateInstantiatedTypeNoArgumentsTest(intptr_t cid, |
| 98 intptr_t token_index, |
| 99 const AbstractType& dst_type, |
| 100 Label* is_instance_lbl, |
| 101 Label* is_not_instance_lbl); |
| 102 |
| 103 RawSubtypeTestCache* GenerateUninstantiatedTypeTest( |
| 104 intptr_t cid, |
| 105 intptr_t token_index, |
| 106 const AbstractType& dst_type, |
| 107 Label* is_instance_lbl, |
| 108 Label* is_not_instance_label); |
| 109 |
| 110 RawSubtypeTestCache* GenerateSubtype1TestCacheLookup( |
| 111 intptr_t cid, |
| 112 intptr_t token_index, |
| 113 const Class& type_class, |
| 114 Label* is_instance_lbl, |
| 115 Label* is_not_instance_lbl); |
| 116 |
| 117 enum TypeTestStubKind { |
| 118 kTestTypeOneArg, |
| 119 kTestTypeTwoArgs, |
| 120 kTestTypeThreeArgs, |
| 121 }; |
| 122 |
| 123 RawSubtypeTestCache* GenerateCallSubtypeTestStub(TypeTestStubKind test_kind, |
| 124 Register instance_reg, |
| 125 Register type_arguments_reg, |
| 126 Register temp_reg, |
| 127 Label* is_instance_lbl, |
| 128 Label* is_not_instance_lbl); |
| 129 |
| 130 void GenerateBoolToJump(Register bool_reg, Label* is_true, Label* is_false); |
| 131 |
| 132 virtual void CheckClassIds(Register class_id_reg, |
| 133 const GrowableArray<intptr_t>& class_ids, |
| 134 Label* is_equal_lbl, |
| 135 Label* is_not_equal_lbl); |
| 136 |
84 void EmitComment(Instruction* instr); | 137 void EmitComment(Instruction* instr); |
85 void BailoutOnInstruction(Instruction* instr); | 138 void BailoutOnInstruction(Instruction* instr); |
86 | 139 |
87 DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler); | 140 DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler); |
88 }; | 141 }; |
89 | 142 |
90 } // namespace dart | 143 } // namespace dart |
91 | 144 |
92 #endif // VM_FLOW_GRAPH_COMPILER_IA32_H_ | 145 #endif // VM_FLOW_GRAPH_COMPILER_IA32_H_ |
OLD | NEW |