Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(97)

Side by Side Diff: runtime/vm/flow_graph_compiler_ia32.h

Issue 10477020: Move inlined type checking code to new compiler ia32. Sharing more and more code between ia32/x64 (… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/assembler_ia32.cc ('k') | runtime/vm/flow_graph_compiler_ia32.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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_
OLDNEW
« no previous file with comments | « runtime/vm/assembler_ia32.cc ('k') | runtime/vm/flow_graph_compiler_ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698