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

Side by Side Diff: pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart

Issue 1685893002: cpsir: insert guard and force specialization for [] and []= (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 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
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 library tree_ir.optimization.logical_rewriter; 5 library tree_ir.optimization.logical_rewriter;
6 6
7 import '../tree_ir_nodes.dart'; 7 import '../tree_ir_nodes.dart';
8 import 'optimization.dart' show Pass; 8 import 'optimization.dart' show Pass;
9 import '../../constants/values.dart' as values; 9 import '../../constants/values.dart' as values;
10 10
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 case BuiltinOperator.StrictNeq: 346 case BuiltinOperator.StrictNeq:
347 case BuiltinOperator.LooseEq: 347 case BuiltinOperator.LooseEq:
348 case BuiltinOperator.LooseNeq: 348 case BuiltinOperator.LooseNeq:
349 case BuiltinOperator.NumLt: 349 case BuiltinOperator.NumLt:
350 case BuiltinOperator.NumLe: 350 case BuiltinOperator.NumLe:
351 case BuiltinOperator.NumGt: 351 case BuiltinOperator.NumGt:
352 case BuiltinOperator.NumGe: 352 case BuiltinOperator.NumGe:
353 case BuiltinOperator.IsNumber: 353 case BuiltinOperator.IsNumber:
354 case BuiltinOperator.IsNotNumber: 354 case BuiltinOperator.IsNotNumber:
355 case BuiltinOperator.IsFloor: 355 case BuiltinOperator.IsFloor:
356 case BuiltinOperator.IsNumberAndFloor: 356 case BuiltinOperator.IsInteger:
357 case BuiltinOperator.IsNotInteger:
357 case BuiltinOperator.Identical: 358 case BuiltinOperator.Identical:
358 return true; 359 return true;
359 default: 360 default:
360 return false; 361 return false;
361 } 362 }
362 } 363 }
363 364
364 bool isBooleanValuedTypeOperator(TypeOperator e) { 365 bool isBooleanValuedTypeOperator(TypeOperator e) {
365 return e.isTypeTest; 366 return e.isTypeTest;
366 } 367 }
367 368
368 BuiltinOperator negateBuiltin(BuiltinOperator operator) { 369 BuiltinOperator negateBuiltin(BuiltinOperator operator) {
369 switch (operator) { 370 switch (operator) {
370 case BuiltinOperator.StrictEq: return BuiltinOperator.StrictNeq; 371 case BuiltinOperator.StrictEq: return BuiltinOperator.StrictNeq;
371 case BuiltinOperator.StrictNeq: return BuiltinOperator.StrictEq; 372 case BuiltinOperator.StrictNeq: return BuiltinOperator.StrictEq;
372 case BuiltinOperator.LooseEq: return BuiltinOperator.LooseNeq; 373 case BuiltinOperator.LooseEq: return BuiltinOperator.LooseNeq;
373 case BuiltinOperator.LooseNeq: return BuiltinOperator.LooseEq; 374 case BuiltinOperator.LooseNeq: return BuiltinOperator.LooseEq;
374 case BuiltinOperator.IsNumber: return BuiltinOperator.IsNotNumber; 375 case BuiltinOperator.IsNumber: return BuiltinOperator.IsNotNumber;
375 case BuiltinOperator.IsNotNumber: return BuiltinOperator.IsNumber; 376 case BuiltinOperator.IsNotNumber: return BuiltinOperator.IsNumber;
377 case BuiltinOperator.IsInteger: return BuiltinOperator.IsNotInteger;
378 case BuiltinOperator.IsNotInteger: return BuiltinOperator.IsInteger;
376 379
377 // Because of NaN, these do not have a negated form. 380 // Because of NaN, these do not have a negated form.
378 case BuiltinOperator.NumLt: 381 case BuiltinOperator.NumLt:
379 case BuiltinOperator.NumLe: 382 case BuiltinOperator.NumLe:
380 case BuiltinOperator.NumGt: 383 case BuiltinOperator.NumGt:
381 case BuiltinOperator.NumGe: 384 case BuiltinOperator.NumGe:
382 return null; 385 return null;
383 386
384 default: 387 default:
385 return null; 388 return null;
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 } else if (e1 is Assign) { 552 } else if (e1 is Assign) {
550 return e2 is VariableUse && e1.variable == e2.variable; 553 return e2 is VariableUse && e1.variable == e2.variable;
551 } 554 }
552 return false; 555 return false;
553 } 556 }
554 557
555 void destroyVariableUse(VariableUse node) { 558 void destroyVariableUse(VariableUse node) {
556 --node.variable.readCount; 559 --node.variable.readCount;
557 } 560 }
558 } 561 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_backend/codegen/codegen.dart ('k') | tests/compiler/dart2js/cps_ir/expected/optimize_indexers.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698