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

Side by Side Diff: runtime/vm/method_recognizer.h

Issue 2379733002: Recognize and optimize a.runtimeType == b.runtimeType pattern. (Closed)
Patch Set: Support polymorphic inlining of Object.get:runtimeType Created 4 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
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 #ifndef VM_METHOD_RECOGNIZER_H_ 5 #ifndef VM_METHOD_RECOGNIZER_H_
6 #define VM_METHOD_RECOGNIZER_H_ 6 #define VM_METHOD_RECOGNIZER_H_
7 7
8 #include "vm/allocation.h" 8 #include "vm/allocation.h"
9 9
10 namespace dart { 10 namespace dart {
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 V(_Double, get:isNegative, Double_getIsNegative, Bool, 0x3a58ff36) \ 159 V(_Double, get:isNegative, Double_getIsNegative, Bool, 0x3a58ff36) \
160 V(_Double, _mulFromInteger, Double_mulFromInteger, Double, 0x330e9a36) \ 160 V(_Double, _mulFromInteger, Double_mulFromInteger, Double, 0x330e9a36) \
161 V(_Double, .fromInteger, DoubleFromInteger, Double, 0x7ef45843) \ 161 V(_Double, .fromInteger, DoubleFromInteger, Double, 0x7ef45843) \
162 V(_List, []=, ObjectArraySetIndexed, Dynamic, 0x34d2c72c) \ 162 V(_List, []=, ObjectArraySetIndexed, Dynamic, 0x34d2c72c) \
163 V(_GrowableList, .withData, GrowableArray_Allocate, GrowableObjectArray, \ 163 V(_GrowableList, .withData, GrowableArray_Allocate, GrowableObjectArray, \
164 0x25a786de) \ 164 0x25a786de) \
165 V(_GrowableList, add, GrowableArray_add, Dynamic, 0x0d1358ed) \ 165 V(_GrowableList, add, GrowableArray_add, Dynamic, 0x0d1358ed) \
166 V(_RegExp, _ExecuteMatch, RegExp_ExecuteMatch, Dynamic, 0x6036d7fa) \ 166 V(_RegExp, _ExecuteMatch, RegExp_ExecuteMatch, Dynamic, 0x6036d7fa) \
167 V(Object, ==, ObjectEquals, Bool, 0x11662ed8) \ 167 V(Object, ==, ObjectEquals, Bool, 0x11662ed8) \
168 V(Object, get:runtimeType, ObjectRuntimeType, Type, 0x00e7c26b) \ 168 V(Object, get:runtimeType, ObjectRuntimeType, Type, 0x00e7c26b) \
169 V(Object, _haveSameRuntimeType, ObjectHaveSameRuntimeType, Bool, 0x72aad7e2) \
169 V(_StringBase, get:hashCode, String_getHashCode, Smi, 0x78c2eb88) \ 170 V(_StringBase, get:hashCode, String_getHashCode, Smi, 0x78c2eb88) \
170 V(_StringBase, get:isEmpty, StringBaseIsEmpty, Bool, 0x74c21fca) \ 171 V(_StringBase, get:isEmpty, StringBaseIsEmpty, Bool, 0x74c21fca) \
171 V(_StringBase, _substringMatches, StringBaseSubstringMatches, Bool, \ 172 V(_StringBase, _substringMatches, StringBaseSubstringMatches, Bool, \
172 0x2f851deb) \ 173 0x2f851deb) \
173 V(_StringBase, [], StringBaseCharAt, Dynamic, 0x2cf92c45) \ 174 V(_StringBase, [], StringBaseCharAt, Dynamic, 0x2cf92c45) \
174 V(_OneByteString, get:hashCode, OneByteString_getHashCode, Smi, 0x78c2eb88) \ 175 V(_OneByteString, get:hashCode, OneByteString_getHashCode, Smi, 0x78c2eb88) \
175 V(_OneByteString, _substringUncheckedNative, \ 176 V(_OneByteString, _substringUncheckedNative, \
176 OneByteString_substringUnchecked, OneByteString, 0x638c3722) \ 177 OneByteString_substringUnchecked, OneByteString, 0x638c3722) \
177 V(_OneByteString, _setAt, OneByteStringSetAt, Dynamic, 0x452533ef) \ 178 V(_OneByteString, _setAt, OneByteStringSetAt, Dynamic, 0x452533ef) \
178 V(_OneByteString, _allocate, OneByteString_allocate, OneByteString, \ 179 V(_OneByteString, _allocate, OneByteString_allocate, OneByteString, \
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 V(_TypedList, _setInt8, ByteArrayBaseSetInt8, 0x4e82d1e9) \ 482 V(_TypedList, _setInt8, ByteArrayBaseSetInt8, 0x4e82d1e9) \
482 V(_TypedList, _setUint8, ByteArrayBaseSetInt8, 0x4f3587fc) \ 483 V(_TypedList, _setUint8, ByteArrayBaseSetInt8, 0x4f3587fc) \
483 V(_TypedList, _setInt16, ByteArrayBaseSetInt16, 0x6cef30ee) \ 484 V(_TypedList, _setInt16, ByteArrayBaseSetInt16, 0x6cef30ee) \
484 V(_TypedList, _setUint16, ByteArrayBaseSetInt16, 0x64f938ac) \ 485 V(_TypedList, _setUint16, ByteArrayBaseSetInt16, 0x64f938ac) \
485 V(_TypedList, _setInt32, ByteArrayBaseSetInt32, 0x3693c029) \ 486 V(_TypedList, _setInt32, ByteArrayBaseSetInt32, 0x3693c029) \
486 V(_TypedList, _setUint32, ByteArrayBaseSetUint32, 0x74bbf260) \ 487 V(_TypedList, _setUint32, ByteArrayBaseSetUint32, 0x74bbf260) \
487 V(_TypedList, _setFloat32, ByteArrayBaseSetFloat32, 0x6e72f2a4) \ 488 V(_TypedList, _setFloat32, ByteArrayBaseSetFloat32, 0x6e72f2a4) \
488 V(_TypedList, _setFloat64, ByteArrayBaseSetFloat64, 0x4765edda) \ 489 V(_TypedList, _setFloat64, ByteArrayBaseSetFloat64, 0x4765edda) \
489 V(_TypedList, _setFloat32x4, ByteArrayBaseSetFloat32x4, 0x7cca4533) \ 490 V(_TypedList, _setFloat32x4, ByteArrayBaseSetFloat32x4, 0x7cca4533) \
490 V(_TypedList, _setInt32x4, ByteArrayBaseSetInt32x4, 0x7631bdbc) \ 491 V(_TypedList, _setInt32x4, ByteArrayBaseSetInt32x4, 0x7631bdbc) \
492 V(Object, get:runtimeType, ObjectRuntimeType, 0x00e7c26b) \
491 493
492 // Forward declarations. 494 // Forward declarations.
493 class Function; 495 class Function;
494 496
495 // Class that recognizes the name and owner of a function and returns the 497 // Class that recognizes the name and owner of a function and returns the
496 // corresponding enum. See RECOGNIZED_LIST above for list of recognizable 498 // corresponding enum. See RECOGNIZED_LIST above for list of recognizable
497 // functions. 499 // functions.
498 class MethodRecognizer : public AllStatic { 500 class MethodRecognizer : public AllStatic {
499 public: 501 public:
500 enum Kind { 502 enum Kind {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 // Class that recognizes factories and returns corresponding result cid. 552 // Class that recognizes factories and returns corresponding result cid.
551 class FactoryRecognizer : public AllStatic { 553 class FactoryRecognizer : public AllStatic {
552 public: 554 public:
553 // Return kDynamicCid if factory is not recognized. 555 // Return kDynamicCid if factory is not recognized.
554 static intptr_t ResultCid(const Function& factory); 556 static intptr_t ResultCid(const Function& factory);
555 }; 557 };
556 558
557 } // namespace dart 559 } // namespace dart
558 560
559 #endif // VM_METHOD_RECOGNIZER_H_ 561 #endif // VM_METHOD_RECOGNIZER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698