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

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

Issue 12282038: Remove deprecated string features. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Merge to head Created 7 years, 10 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/flow_graph_optimizer.h ('k') | runtime/vm/intermediate_language.h » ('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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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/flow_graph_optimizer.h" 5 #include "vm/flow_graph_optimizer.h"
6 6
7 #include "vm/bit_vector.h" 7 #include "vm/bit_vector.h"
8 #include "vm/cha.h" 8 #include "vm/cha.h"
9 #include "vm/flow_graph_builder.h" 9 #include "vm/flow_graph_builder.h"
10 #include "vm/flow_graph_compiler.h" 10 #include "vm/flow_graph_compiler.h"
(...skipping 1396 matching lines...) Expand 10 before | Expand all | Expand 10 after
1407 } 1407 }
1408 InlineStringIsEmptyGetter(call); 1408 InlineStringIsEmptyGetter(call);
1409 return true; 1409 return true;
1410 default: 1410 default:
1411 ASSERT(recognized_kind == MethodRecognizer::kUnknown); 1411 ASSERT(recognized_kind == MethodRecognizer::kUnknown);
1412 } 1412 }
1413 return false; 1413 return false;
1414 } 1414 }
1415 1415
1416 1416
1417 LoadIndexedInstr* FlowGraphOptimizer::BuildStringCharCodeAt( 1417 LoadIndexedInstr* FlowGraphOptimizer::BuildStringCodeUnitAt(
1418 InstanceCallInstr* call, 1418 InstanceCallInstr* call,
1419 intptr_t cid) { 1419 intptr_t cid) {
1420 Definition* str = call->ArgumentAt(0); 1420 Definition* str = call->ArgumentAt(0);
1421 Definition* index = call->ArgumentAt(1); 1421 Definition* index = call->ArgumentAt(1);
1422 AddReceiverCheck(call); 1422 AddReceiverCheck(call);
1423 InsertBefore(call, 1423 InsertBefore(call,
1424 new CheckSmiInstr(new Value(index), call->deopt_id()), 1424 new CheckSmiInstr(new Value(index), call->deopt_id()),
1425 call->env(), 1425 call->env(),
1426 Definition::kEffect); 1426 Definition::kEffect);
1427 // If both index and string are constants, then do a compile-time check. 1427 // If both index and string are constants, then do a compile-time check.
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1529 case MethodRecognizer::kInt16ArraySetIndexed: 1529 case MethodRecognizer::kInt16ArraySetIndexed:
1530 case MethodRecognizer::kUint16ArraySetIndexed: 1530 case MethodRecognizer::kUint16ArraySetIndexed:
1531 case MethodRecognizer::kInt32ArraySetIndexed: 1531 case MethodRecognizer::kInt32ArraySetIndexed:
1532 case MethodRecognizer::kUint32ArraySetIndexed: 1532 case MethodRecognizer::kUint32ArraySetIndexed:
1533 return TryInlineByteArraySetIndexed(call); 1533 return TryInlineByteArraySetIndexed(call);
1534 1534
1535 default: 1535 default:
1536 break; 1536 break;
1537 } 1537 }
1538 1538
1539 if ((recognized_kind == MethodRecognizer::kStringBaseCharCodeAt) && 1539 if ((recognized_kind == MethodRecognizer::kStringBaseCodeUnitAt) &&
1540 (ic_data.NumberOfChecks() == 1) && 1540 (ic_data.NumberOfChecks() == 1) &&
1541 ((class_ids[0] == kOneByteStringCid) || 1541 ((class_ids[0] == kOneByteStringCid) ||
1542 (class_ids[0] == kTwoByteStringCid))) { 1542 (class_ids[0] == kTwoByteStringCid))) {
1543 LoadIndexedInstr* instr = BuildStringCharCodeAt(call, class_ids[0]); 1543 LoadIndexedInstr* instr = BuildStringCodeUnitAt(call, class_ids[0]);
1544 ReplaceCall(call, instr); 1544 ReplaceCall(call, instr);
1545 return true; 1545 return true;
1546 } 1546 }
1547 if ((recognized_kind == MethodRecognizer::kStringBaseCharAt) && 1547 if ((recognized_kind == MethodRecognizer::kStringBaseCharAt) &&
1548 (ic_data.NumberOfChecks() == 1) && 1548 (ic_data.NumberOfChecks() == 1) &&
1549 (class_ids[0] == kOneByteStringCid)) { 1549 (class_ids[0] == kOneByteStringCid)) {
1550 // TODO(fschneider): Handle TwoByteString. 1550 // TODO(fschneider): Handle TwoByteString.
1551 LoadIndexedInstr* load_char_code = 1551 LoadIndexedInstr* load_char_code =
1552 BuildStringCharCodeAt(call, class_ids[0]); 1552 BuildStringCodeUnitAt(call, class_ids[0]);
1553 InsertBefore(call, load_char_code, NULL, Definition::kValue); 1553 InsertBefore(call, load_char_code, NULL, Definition::kValue);
1554 StringFromCharCodeInstr* char_at = 1554 StringFromCharCodeInstr* char_at =
1555 new StringFromCharCodeInstr(new Value(load_char_code), 1555 new StringFromCharCodeInstr(new Value(load_char_code),
1556 kOneByteStringCid); 1556 kOneByteStringCid);
1557 ReplaceCall(call, char_at); 1557 ReplaceCall(call, char_at);
1558 return true; 1558 return true;
1559 } 1559 }
1560 1560
1561 if ((recognized_kind == MethodRecognizer::kIntegerToDouble) && 1561 if ((recognized_kind == MethodRecognizer::kIntegerToDouble) &&
1562 (class_ids[0] == kSmiCid)) { 1562 (class_ids[0] == kSmiCid)) {
(...skipping 2820 matching lines...) Expand 10 before | Expand all | Expand 10 after
4383 4383
4384 if (FLAG_trace_constant_propagation) { 4384 if (FLAG_trace_constant_propagation) {
4385 OS::Print("\n==== After constant propagation ====\n"); 4385 OS::Print("\n==== After constant propagation ====\n");
4386 FlowGraphPrinter printer(*graph_); 4386 FlowGraphPrinter printer(*graph_);
4387 printer.PrintBlocks(); 4387 printer.PrintBlocks();
4388 } 4388 }
4389 } 4389 }
4390 4390
4391 4391
4392 } // namespace dart 4392 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/flow_graph_optimizer.h ('k') | runtime/vm/intermediate_language.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698