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

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

Issue 10407018: Start porting fast typechecks to x64. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 7 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
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_BUILDER_H_ 5 #ifndef VM_FLOW_GRAPH_BUILDER_H_
6 #define VM_FLOW_GRAPH_BUILDER_H_ 6 #define VM_FLOW_GRAPH_BUILDER_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 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 intptr_t token_index, 129 intptr_t token_index,
130 const AbstractTypeArguments& type_arguments); 130 const AbstractTypeArguments& type_arguments);
131 131
132 // Creates a possibly uninstantiated type argument vector and the type 132 // Creates a possibly uninstantiated type argument vector and the type
133 // argument vector of the instantiator (two values in 'args') used in 133 // argument vector of the instantiator (two values in 'args') used in
134 // preparation of a constructor call. 134 // preparation of a constructor call.
135 // May be called only if allocating an object of a parameterized class. 135 // May be called only if allocating an object of a parameterized class.
136 void BuildConstructorTypeArguments(ConstructorCallNode* node, 136 void BuildConstructorTypeArguments(ConstructorCallNode* node,
137 ZoneGrowableArray<Value*>* args); 137 ZoneGrowableArray<Value*>* args);
138 138
139 // Returns the value of the type arguments of the instantiator. 139 void BuildTypecheckArguments(intptr_t token_index,
140 Value* BuildInstantiatorTypeArguments(intptr_t token_index); 140 Value** instantiator,
141 Value** instantiator_type_arguments);
142 Value* BuildInstantiator();
143 Value* BuildInstantiatorTypeArguments(intptr_t token_index,
144 Value* instantiator);
141 145
142 // Perform a type check on the given value. 146 // Perform a type check on the given value.
143 void BuildAssertAssignable(intptr_t token_index, 147 AssertAssignableComp* BuildAssertAssignable(intptr_t token_index,
144 Value* value, 148 Value* value,
145 const AbstractType& dst_type, 149 const AbstractType& dst_type,
146 const String& dst_name); 150 const String& dst_name);
147 151
148 // Perform a type check on the given value and return it. 152 // Perform a type check on the given value and return it.
149 Value* BuildAssignableValue(AstNode* value_node, 153 Value* BuildAssignableValue(intptr_t token_index,
150 Value* value, 154 Value* value,
151 const AbstractType& dst_type, 155 const AbstractType& dst_type,
152 const String& dst_name); 156 const String& dst_name);
153 157
154 virtual void BuildInstanceOf(ComparisonNode* node); 158 virtual void BuildInstanceOf(ComparisonNode* node);
155 159
156 bool MustSaveRestoreContext(SequenceNode* node) const; 160 bool MustSaveRestoreContext(SequenceNode* node) const;
157 161
158 // Moves parent context into the context register. 162 // Moves parent context into the context register.
159 void UnchainContext(); 163 void UnchainContext();
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 // Output parameters. 294 // Output parameters.
291 TargetEntryInstr** true_successor_address_; 295 TargetEntryInstr** true_successor_address_;
292 TargetEntryInstr** false_successor_address_; 296 TargetEntryInstr** false_successor_address_;
293 297
294 intptr_t condition_token_index_; 298 intptr_t condition_token_index_;
295 }; 299 };
296 300
297 } // namespace dart 301 } // namespace dart
298 302
299 #endif // VM_FLOW_GRAPH_BUILDER_H_ 303 #endif // VM_FLOW_GRAPH_BUILDER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698