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

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

Issue 2891053003: Add support for converted closures with explicit contexts to VM (Closed)
Patch Set: Created 3 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
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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_KERNEL_BINARY_FLOWGRAPH_H_ 5 #ifndef RUNTIME_VM_KERNEL_BINARY_FLOWGRAPH_H_
6 #define RUNTIME_VM_KERNEL_BINARY_FLOWGRAPH_H_ 6 #define RUNTIME_VM_KERNEL_BINARY_FLOWGRAPH_H_
7 7
8 #if !defined(DART_PRECOMPILED_RUNTIME) 8 #if !defined(DART_PRECOMPILED_RUNTIME)
9 9
10 #include <map> 10 #include <map>
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 LocalVariable* CurrentStackTrace(); 221 LocalVariable* CurrentStackTrace();
222 CatchBlock* catch_block(); 222 CatchBlock* catch_block();
223 ActiveClass* active_class(); 223 ActiveClass* active_class();
224 ScopeBuildingResult* scopes(); 224 ScopeBuildingResult* scopes();
225 ParsedFunction* parsed_function(); 225 ParsedFunction* parsed_function();
226 TryFinallyBlock* try_finally_block(); 226 TryFinallyBlock* try_finally_block();
227 SwitchBlock* switch_block(); 227 SwitchBlock* switch_block();
228 BreakableBlock* breakable_block(); 228 BreakableBlock* breakable_block();
229 GrowableArray<YieldContinuation>& yield_continuations(); 229 GrowableArray<YieldContinuation>& yield_continuations();
230 Value* stack(); 230 Value* stack();
231 void Push(Definition* definition);
231 Value* Pop(); 232 Value* Pop();
232 233
233 Tag PeekArgumentsFirstPositionalTag(); 234 Tag PeekArgumentsFirstPositionalTag();
234 const TypeArguments& PeekArgumentsInstantiatedType(const dart::Class& klass); 235 const TypeArguments& PeekArgumentsInstantiatedType(const dart::Class& klass);
235 intptr_t PeekArgumentsCount(); 236 intptr_t PeekArgumentsCount();
236 intptr_t PeekArgumentsTypeCount(); 237 intptr_t PeekArgumentsTypeCount();
237 void SkipArgumentsBeforeActualArguments(); 238 void SkipArgumentsBeforeActualArguments();
238 239
239 LocalVariable* LookupVariable(intptr_t kernel_offset); 240 LocalVariable* LookupVariable(intptr_t kernel_offset);
240 LocalVariable* MakeTemporary(); 241 LocalVariable* MakeTemporary();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 Token::Kind kind, 274 Token::Kind kind,
274 intptr_t argument_count, 275 intptr_t argument_count,
275 const Array& argument_names, 276 const Array& argument_names,
276 intptr_t num_args_checked); 277 intptr_t num_args_checked);
277 Fragment ThrowException(TokenPosition position); 278 Fragment ThrowException(TokenPosition position);
278 Fragment BooleanNegate(); 279 Fragment BooleanNegate();
279 Fragment TranslateInstantiatedTypeArguments( 280 Fragment TranslateInstantiatedTypeArguments(
280 const TypeArguments& type_arguments); 281 const TypeArguments& type_arguments);
281 Fragment StrictCompare(Token::Kind kind, bool number_check = false); 282 Fragment StrictCompare(Token::Kind kind, bool number_check = false);
282 Fragment AllocateObject(const dart::Class& klass, intptr_t argument_count); 283 Fragment AllocateObject(const dart::Class& klass, intptr_t argument_count);
284 Fragment AllocateObject(const dart::Class& klass,
285 const Function& closure_function);
286 Fragment LoadField(intptr_t offset);
287 Fragment AllocateContext(int size);
283 Fragment StoreLocal(TokenPosition position, LocalVariable* variable); 288 Fragment StoreLocal(TokenPosition position, LocalVariable* variable);
284 Fragment StoreStaticField(TokenPosition position, const dart::Field& field); 289 Fragment StoreStaticField(TokenPosition position, const dart::Field& field);
290 Fragment StoreInstanceField(TokenPosition position, intptr_t offset);
285 Fragment StringInterpolate(TokenPosition position); 291 Fragment StringInterpolate(TokenPosition position);
286 Fragment StringInterpolateSingle(TokenPosition position); 292 Fragment StringInterpolateSingle(TokenPosition position);
287 Fragment ThrowTypeError(); 293 Fragment ThrowTypeError();
288 Fragment LoadInstantiatorTypeArguments(); 294 Fragment LoadInstantiatorTypeArguments();
289 Fragment LoadFunctionTypeArguments(); 295 Fragment LoadFunctionTypeArguments();
290 Fragment InstantiateType(const AbstractType& type); 296 Fragment InstantiateType(const AbstractType& type);
291 Fragment CreateArray(); 297 Fragment CreateArray();
292 Fragment StoreIndexed(intptr_t class_id); 298 Fragment StoreIndexed(intptr_t class_id);
293 Fragment CheckStackOverflow(); 299 Fragment CheckStackOverflow();
294 Fragment CloneContext(); 300 Fragment CloneContext();
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 Fragment BuildListLiteral(bool is_const, TokenPosition* position); 367 Fragment BuildListLiteral(bool is_const, TokenPosition* position);
362 Fragment BuildMapLiteral(bool is_const, TokenPosition* position); 368 Fragment BuildMapLiteral(bool is_const, TokenPosition* position);
363 Fragment BuildLet(TokenPosition* position); 369 Fragment BuildLet(TokenPosition* position);
364 Fragment BuildBigIntLiteral(TokenPosition* position); 370 Fragment BuildBigIntLiteral(TokenPosition* position);
365 Fragment BuildStringLiteral(TokenPosition* position); 371 Fragment BuildStringLiteral(TokenPosition* position);
366 Fragment BuildIntLiteral(uint8_t payload, TokenPosition* position); 372 Fragment BuildIntLiteral(uint8_t payload, TokenPosition* position);
367 Fragment BuildIntLiteral(bool is_negative, TokenPosition* position); 373 Fragment BuildIntLiteral(bool is_negative, TokenPosition* position);
368 Fragment BuildDoubleLiteral(TokenPosition* position); 374 Fragment BuildDoubleLiteral(TokenPosition* position);
369 Fragment BuildBoolLiteral(bool value, TokenPosition* position); 375 Fragment BuildBoolLiteral(bool value, TokenPosition* position);
370 Fragment BuildNullLiteral(TokenPosition* position); 376 Fragment BuildNullLiteral(TokenPosition* position);
377 Fragment BuildVectorCreation(TokenPosition* position);
378 Fragment BuildVectorGet(TokenPosition* position);
379 Fragment BuildVectorSet(TokenPosition* position);
380 Fragment BuildVectorCopy(TokenPosition* position);
381 Fragment BuildClosureCreation(TokenPosition* position);
371 382
372 Fragment BuildInvalidStatement(); 383 Fragment BuildInvalidStatement();
373 Fragment BuildExpressionStatement(); 384 Fragment BuildExpressionStatement();
374 Fragment BuildBlock(); 385 Fragment BuildBlock();
375 Fragment BuildEmptyStatement(); 386 Fragment BuildEmptyStatement();
376 Fragment BuildAssertStatement(); 387 Fragment BuildAssertStatement();
377 Fragment BuildLabeledStatement(); 388 Fragment BuildLabeledStatement();
378 Fragment BuildBreakStatement(); 389 Fragment BuildBreakStatement();
379 Fragment BuildWhileStatement(); 390 Fragment BuildWhileStatement();
380 Fragment BuildDoStatement(); 391 Fragment BuildDoStatement();
(...skipping 18 matching lines...) Expand all
399 friend class StreamingConstantEvaluator; 410 friend class StreamingConstantEvaluator;
400 friend class StreamingDartTypeTranslator; 411 friend class StreamingDartTypeTranslator;
401 }; 412 };
402 413
403 414
404 } // namespace kernel 415 } // namespace kernel
405 } // namespace dart 416 } // namespace dart
406 417
407 #endif // !defined(DART_PRECOMPILED_RUNTIME) 418 #endif // !defined(DART_PRECOMPILED_RUNTIME)
408 #endif // RUNTIME_VM_KERNEL_BINARY_FLOWGRAPH_H_ 419 #endif // RUNTIME_VM_KERNEL_BINARY_FLOWGRAPH_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698