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

Side by Side Diff: runtime/vm/flow_graph_compiler.cc

Issue 11048032: Support for mixed null/smi equality: do not deoptimize, emit same optimized code as if that was smi… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 2 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 #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 456 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 } 467 }
468 // Even if an intrinsified version of the function was successfully 468 // Even if an intrinsified version of the function was successfully
469 // generated, it may fall through to the non-intrinsified method body. 469 // generated, it may fall through to the non-intrinsified method body.
470 if (!FLAG_trace_functions) { 470 if (!FLAG_trace_functions) {
471 return Intrinsifier::Intrinsify(parsed_function().function(), assembler()); 471 return Intrinsifier::Intrinsify(parsed_function().function(), assembler());
472 } 472 }
473 return false; 473 return false;
474 } 474 }
475 475
476 476
477 void FlowGraphCompiler::GenerateInstanceCall( 477 const ICData& FlowGraphCompiler::GenerateInstanceCall(
478 intptr_t deopt_id, 478 intptr_t deopt_id,
479 intptr_t token_pos, 479 intptr_t token_pos,
480 const String& function_name, 480 const String& function_name,
481 intptr_t argument_count, 481 intptr_t argument_count,
482 const Array& argument_names, 482 const Array& argument_names,
483 intptr_t checked_argument_count, 483 intptr_t checked_argument_count,
484 LocationSummary* locs) { 484 LocationSummary* locs) {
485 ASSERT(!IsLeaf()); 485 ASSERT(!IsLeaf());
486 ICData& ic_data = 486 ICData& ic_data =
487 ICData::ZoneHandle(ICData::New(parsed_function().function(), 487 ICData::ZoneHandle(ICData::New(parsed_function().function(),
(...skipping 13 matching lines...) Expand all
501 case 3: 501 case 3:
502 label_address = StubCode::ThreeArgsCheckInlineCacheEntryPoint(); 502 label_address = StubCode::ThreeArgsCheckInlineCacheEntryPoint();
503 break; 503 break;
504 default: 504 default:
505 UNIMPLEMENTED(); 505 UNIMPLEMENTED();
506 } 506 }
507 ExternalLabel target_label("InlineCache", label_address); 507 ExternalLabel target_label("InlineCache", label_address);
508 508
509 EmitInstanceCall(&target_label, ic_data, arguments_descriptor, argument_count, 509 EmitInstanceCall(&target_label, ic_data, arguments_descriptor, argument_count,
510 deopt_id, token_pos, locs); 510 deopt_id, token_pos, locs);
511 return ic_data;
511 } 512 }
512 513
513 514
514 void FlowGraphCompiler::GenerateStaticCall(intptr_t deopt_id, 515 void FlowGraphCompiler::GenerateStaticCall(intptr_t deopt_id,
515 intptr_t token_pos, 516 intptr_t token_pos,
516 const Function& function, 517 const Function& function,
517 intptr_t argument_count, 518 intptr_t argument_count,
518 const Array& argument_names, 519 const Array& argument_names,
519 LocationSummary* locs) { 520 LocationSummary* locs) {
520 const Array& arguments_descriptor = 521 const Array& arguments_descriptor =
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
899 case ABOVE: return unsigned_left > unsigned_right; 900 case ABOVE: return unsigned_left > unsigned_right;
900 case ABOVE_EQUAL: return unsigned_left >= unsigned_right; 901 case ABOVE_EQUAL: return unsigned_left >= unsigned_right;
901 default: 902 default:
902 UNIMPLEMENTED(); 903 UNIMPLEMENTED();
903 return false; 904 return false;
904 } 905 }
905 } 906 }
906 907
907 908
908 } // namespace dart 909 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698