| 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 #include "vm/globals.h"  // Needed here to get TARGET_ARCH_XXX. |    5 #include "vm/globals.h"  // Needed here to get TARGET_ARCH_XXX. | 
|    6  |    6  | 
|    7 #include "vm/flow_graph_compiler.h" |    7 #include "vm/flow_graph_compiler.h" | 
|    8  |    8  | 
|    9 #include "vm/dart_entry.h" |    9 #include "vm/dart_entry.h" | 
|   10 #include "vm/debugger.h" |   10 #include "vm/debugger.h" | 
| (...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  411                                        try_index); |  411                                        try_index); | 
|  412 } |  412 } | 
|  413  |  413  | 
|  414  |  414  | 
|  415 void FlowGraphCompiler::GenerateNumberTypeCheck(Register kClassIdReg, |  415 void FlowGraphCompiler::GenerateNumberTypeCheck(Register kClassIdReg, | 
|  416                                                 const AbstractType& type, |  416                                                 const AbstractType& type, | 
|  417                                                 Label* is_instance_lbl, |  417                                                 Label* is_instance_lbl, | 
|  418                                                 Label* is_not_instance_lbl) { |  418                                                 Label* is_not_instance_lbl) { | 
|  419   GrowableArray<intptr_t> args; |  419   GrowableArray<intptr_t> args; | 
|  420   if (type.IsNumberInterface()) { |  420   if (type.IsNumberInterface()) { | 
|  421     args.Add(kDouble); |  421     args.Add(kDoubleCid); | 
|  422     args.Add(kMint); |  422     args.Add(kMintCid); | 
|  423     args.Add(kBigint); |  423     args.Add(kBigintCid); | 
|  424   } else if (type.IsIntInterface()) { |  424   } else if (type.IsIntInterface()) { | 
|  425     args.Add(kMint); |  425     args.Add(kMintCid); | 
|  426     args.Add(kBigint); |  426     args.Add(kBigintCid); | 
|  427   } else if (type.IsDoubleInterface()) { |  427   } else if (type.IsDoubleInterface()) { | 
|  428     args.Add(kDouble); |  428     args.Add(kDoubleCid); | 
|  429   } |  429   } | 
|  430   CheckClassIds(kClassIdReg, args, is_instance_lbl, is_not_instance_lbl); |  430   CheckClassIds(kClassIdReg, args, is_instance_lbl, is_not_instance_lbl); | 
|  431 } |  431 } | 
|  432  |  432  | 
|  433  |  433  | 
|  434 void FlowGraphCompiler::GenerateStringTypeCheck(Register kClassIdReg, |  434 void FlowGraphCompiler::GenerateStringTypeCheck(Register kClassIdReg, | 
|  435                                                 Label* is_instance_lbl, |  435                                                 Label* is_instance_lbl, | 
|  436                                                 Label* is_not_instance_lbl) { |  436                                                 Label* is_not_instance_lbl) { | 
|  437   GrowableArray<intptr_t> args; |  437   GrowableArray<intptr_t> args; | 
|  438   args.Add(kOneByteString); |  438   args.Add(kOneByteStringCid); | 
|  439   args.Add(kTwoByteString); |  439   args.Add(kTwoByteStringCid); | 
|  440   args.Add(kFourByteString); |  440   args.Add(kFourByteStringCid); | 
|  441   args.Add(kExternalOneByteString); |  441   args.Add(kExternalOneByteStringCid); | 
|  442   args.Add(kExternalTwoByteString); |  442   args.Add(kExternalTwoByteStringCid); | 
|  443   args.Add(kExternalFourByteString); |  443   args.Add(kExternalFourByteStringCid); | 
|  444   CheckClassIds(kClassIdReg, args, is_instance_lbl, is_not_instance_lbl); |  444   CheckClassIds(kClassIdReg, args, is_instance_lbl, is_not_instance_lbl); | 
|  445 } |  445 } | 
|  446  |  446  | 
|  447  |  447  | 
|  448 void FlowGraphCompiler::GenerateListTypeCheck(Register kClassIdReg, |  448 void FlowGraphCompiler::GenerateListTypeCheck(Register kClassIdReg, | 
|  449                                               Label* is_instance_lbl) { |  449                                               Label* is_instance_lbl) { | 
|  450   Label unknown; |  450   Label unknown; | 
|  451   GrowableArray<intptr_t> args; |  451   GrowableArray<intptr_t> args; | 
|  452   args.Add(kArray); |  452   args.Add(kArrayCid); | 
|  453   args.Add(kGrowableObjectArray); |  453   args.Add(kGrowableObjectArrayCid); | 
|  454   args.Add(kImmutableArray); |  454   args.Add(kImmutableArrayCid); | 
|  455   CheckClassIds(kClassIdReg, args, is_instance_lbl, &unknown); |  455   CheckClassIds(kClassIdReg, args, is_instance_lbl, &unknown); | 
|  456   assembler()->Bind(&unknown); |  456   assembler()->Bind(&unknown); | 
|  457 } |  457 } | 
|  458  |  458  | 
|  459  |  459  | 
|  460 void FlowGraphCompiler::EmitComment(Instruction* instr) { |  460 void FlowGraphCompiler::EmitComment(Instruction* instr) { | 
|  461   char buffer[256]; |  461   char buffer[256]; | 
|  462   BufferFormatter f(buffer, sizeof(buffer)); |  462   BufferFormatter f(buffer, sizeof(buffer)); | 
|  463   instr->PrintTo(&f); |  463   instr->PrintTo(&f); | 
|  464   assembler()->Comment("%s", buffer); |  464   assembler()->Comment("%s", buffer); | 
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  852       return; |  852       return; | 
|  853     } |  853     } | 
|  854   } |  854   } | 
|  855  |  855  | 
|  856   // This move is not blocked. |  856   // This move is not blocked. | 
|  857   EmitMove(index); |  857   EmitMove(index); | 
|  858 } |  858 } | 
|  859  |  859  | 
|  860  |  860  | 
|  861 }  // namespace dart |  861 }  // namespace dart | 
| OLD | NEW |