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

Side by Side Diff: sdk/lib/_internal/js_runtime/lib/js_rti.dart

Issue 1345413002: dart2js ssa: Inlining heuristics ignore assert() statement size. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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
« no previous file with comments | « pkg/compiler/lib/src/ssa/builder.dart ('k') | no next file » | 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 /** 5 /**
6 * This part contains helpers for supporting runtime type information. 6 * This part contains helpers for supporting runtime type information.
7 * 7 *
8 * The helper use a mixture of Dart and JavaScript objects. To indicate which is 8 * The helper use a mixture of Dart and JavaScript objects. To indicate which is
9 * used where we adopt the scheme of using explicit type annotation for Dart 9 * used where we adopt the scheme of using explicit type annotation for Dart
10 * objects and 'var' or omitted return type for JavaScript objects. 10 * objects and 'var' or omitted return type for JavaScript objects.
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 const TypeVariable(this.owner, this.name, this.bound); 78 const TypeVariable(this.owner, this.name, this.bound);
79 } 79 }
80 80
81 getMangledTypeName(TypeImpl type) => type._typeName; 81 getMangledTypeName(TypeImpl type) => type._typeName;
82 82
83 /** 83 /**
84 * Sets the runtime type information on [target]. [rti] is a type 84 * Sets the runtime type information on [target]. [rti] is a type
85 * representation of type 4 or 5, that is, either a JavaScript array or 85 * representation of type 4 or 5, that is, either a JavaScript array or
86 * `null`. 86 * `null`.
87 */ 87 */
88 // Don't inline. Let the JS engine inline this. The call expression is much
89 // more compact that the inlined expansion.
90 // TODO(sra): For most objects it would be better to initialize the type info as
91 // a field in the constructor: http://dartbug.com/22676 .
92 @NoInline()
88 Object setRuntimeTypeInfo(Object target, var rti) { 93 Object setRuntimeTypeInfo(Object target, var rti) {
89 assert(rti == null || isJsArray(rti)); 94 assert(rti == null || isJsArray(rti));
90 // We have to check for null because factories may return null. 95 // We have to check for null because factories may return null.
96 // TODO(sra): How is this true? The factory should be executing some code that
97 // creates an object that already has the correct info.
Siggi Cherem (dart-lang) 2015/09/17 16:10:10 do you mean that we would never invoke setRuntimeT
91 if (target != null) JS('var', r'#.$builtinTypeInfo = #', target, rti); 98 if (target != null) JS('var', r'#.$builtinTypeInfo = #', target, rti);
92 return target; 99 return target;
93 } 100 }
94 101
95 /** 102 /**
96 * Returns the runtime type information of [target]. The returned value is a 103 * Returns the runtime type information of [target]. The returned value is a
97 * list of type representations for the type arguments. 104 * list of type representations for the type arguments.
98 */ 105 */
99 getRuntimeTypeInfo(Object target) { 106 getRuntimeTypeInfo(Object target) {
100 if (target == null) return null; 107 if (target == null) return null;
(...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 * `null` and `undefined` (which we can avoid). 679 * `null` and `undefined` (which we can avoid).
673 */ 680 */
674 bool isIdentical(var s, var t) => JS('bool', '# === #', s, t); 681 bool isIdentical(var s, var t) => JS('bool', '# === #', s, t);
675 682
676 /** 683 /**
677 * Returns `true` if the JavaScript values [s] and [t] are not identical. We use 684 * Returns `true` if the JavaScript values [s] and [t] are not identical. We use
678 * this helper instead of [identical] because `identical` needs to merge 685 * this helper instead of [identical] because `identical` needs to merge
679 * `null` and `undefined` (which we can avoid). 686 * `null` and `undefined` (which we can avoid).
680 */ 687 */
681 bool isNotIdentical(var s, var t) => JS('bool', '# !== #', s, t); 688 bool isNotIdentical(var s, var t) => JS('bool', '# !== #', s, t);
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/ssa/builder.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698