OLD | NEW |
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 RUNTIME_VM_METHOD_RECOGNIZER_H_ | 5 #ifndef RUNTIME_VM_METHOD_RECOGNIZER_H_ |
6 #define RUNTIME_VM_METHOD_RECOGNIZER_H_ | 6 #define RUNTIME_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 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 V(_Double, *, Double_mul, Double, 0x66c66e3d) \ | 161 V(_Double, *, Double_mul, Double, 0x66c66e3d) \ |
162 V(_Double, /, Double_div, Double, 0x034b9f08) \ | 162 V(_Double, /, Double_div, Double, 0x034b9f08) \ |
163 V(_Double, get:isNaN, Double_getIsNaN, Bool, 0x0af9604a) \ | 163 V(_Double, get:isNaN, Double_getIsNaN, Bool, 0x0af9604a) \ |
164 V(_Double, get:isInfinite, Double_getIsInfinite, Bool, 0x0f7a56e8) \ | 164 V(_Double, get:isInfinite, Double_getIsInfinite, Bool, 0x0f7a56e8) \ |
165 V(_Double, get:isNegative, Double_getIsNegative, Bool, 0x3a597395) \ | 165 V(_Double, get:isNegative, Double_getIsNegative, Bool, 0x3a597395) \ |
166 V(_Double, _mulFromInteger, Double_mulFromInteger, Double, 0x4fb72915) \ | 166 V(_Double, _mulFromInteger, Double_mulFromInteger, Double, 0x4fb72915) \ |
167 V(_Double, .fromInteger, DoubleFromInteger, Double, 0x78d9de2c) \ | 167 V(_Double, .fromInteger, DoubleFromInteger, Double, 0x78d9de2c) \ |
168 V(_List, []=, ObjectArraySetIndexed, Dynamic, 0x51691f4c) \ | 168 V(_List, []=, ObjectArraySetIndexed, Dynamic, 0x51691f4c) \ |
169 V(_GrowableList, .withData, GrowableArray_Allocate, GrowableObjectArray, \ | 169 V(_GrowableList, .withData, GrowableArray_Allocate, GrowableObjectArray, \ |
170 0x3468a26f) \ | 170 0x3468a26f) \ |
171 V(_GrowableList, add, GrowableArray_add, Dynamic, 0x1ce3b4f8) \ | 171 V(_GrowableList, add, GrowableArray_add, Dynamic, 0x19eaa9aa) \ |
172 V(_RegExp, _ExecuteMatch, RegExp_ExecuteMatch, Dynamic, 0x380184b1) \ | 172 V(_RegExp, _ExecuteMatch, RegExp_ExecuteMatch, Dynamic, 0x380184b1) \ |
173 V(_RegExp, _ExecuteMatchSticky, RegExp_ExecuteMatchSticky, Dynamic, \ | 173 V(_RegExp, _ExecuteMatchSticky, RegExp_ExecuteMatchSticky, Dynamic, \ |
174 0x79b8f955) \ | 174 0x79b8f955) \ |
175 V(Object, ==, ObjectEquals, Bool, 0x464c6a19) \ | 175 V(Object, ==, ObjectEquals, Bool, 0x464c6a19) \ |
176 V(Object, get:runtimeType, ObjectRuntimeType, Type, 0x00e836ca) \ | 176 V(Object, get:runtimeType, ObjectRuntimeType, Type, 0x00e836ca) \ |
177 V(Object, _haveSameRuntimeType, ObjectHaveSameRuntimeType, Bool, 0x597b967a) \ | 177 V(Object, _haveSameRuntimeType, ObjectHaveSameRuntimeType, Bool, 0x597b967a) \ |
178 V(_StringBase, get:hashCode, String_getHashCode, Smi, 0x78c35fe7) \ | 178 V(_StringBase, get:hashCode, String_getHashCode, Smi, 0x78c35fe7) \ |
179 V(_StringBase, get:isEmpty, StringBaseIsEmpty, Bool, 0x1fa6a4c9) \ | 179 V(_StringBase, get:isEmpty, StringBaseIsEmpty, Bool, 0x1fa6a4c9) \ |
180 V(_StringBase, _substringMatches, StringBaseSubstringMatches, Bool, \ | 180 V(_StringBase, _substringMatches, StringBaseSubstringMatches, Bool, \ |
181 0x649cbeef) \ | 181 0x649cbeef) \ |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
373 GRAPH_INTRINSICS_LIST(V) | 373 GRAPH_INTRINSICS_LIST(V) |
374 | 374 |
375 // A list of core function that should always be inlined. | 375 // A list of core function that should always be inlined. |
376 #define INLINE_WHITE_LIST(V) \ | 376 #define INLINE_WHITE_LIST(V) \ |
377 V(Object, ==, ObjectEquals, 0x464c6a19) \ | 377 V(Object, ==, ObjectEquals, 0x464c6a19) \ |
378 V(_List, get:length, ObjectArrayLength, 0x2594af31) \ | 378 V(_List, get:length, ObjectArrayLength, 0x2594af31) \ |
379 V(_ImmutableList, get:length, ImmutableArrayLength, 0x2594af31) \ | 379 V(_ImmutableList, get:length, ImmutableArrayLength, 0x2594af31) \ |
380 V(_TypedList, get:length, TypedDataLength, 0x20915079) \ | 380 V(_TypedList, get:length, TypedDataLength, 0x20915079) \ |
381 V(_GrowableList, get:length, GrowableArrayLength, 0x18dd1255) \ | 381 V(_GrowableList, get:length, GrowableArrayLength, 0x18dd1255) \ |
382 V(_GrowableList, get:_capacity, GrowableArrayCapacity, 0x2e044a01) \ | 382 V(_GrowableList, get:_capacity, GrowableArrayCapacity, 0x2e044a01) \ |
383 V(_GrowableList, add, GrowableListAdd, 0x1ce3b4f8) \ | 383 V(_GrowableList, add, GrowableListAdd, 0x19eaa9aa) \ |
384 V(_GrowableList, removeLast, GrowableListRemoveLast, 0x3daaaca4) \ | 384 V(_GrowableList, removeLast, GrowableListRemoveLast, 0x3daaaca4) \ |
385 V(_StringBase, get:length, StringBaseLength, 0x2a2c8f72) \ | 385 V(_StringBase, get:length, StringBaseLength, 0x2a2c8f72) \ |
386 V(ListIterator, moveNext, ListIteratorMoveNext, 0x7ead154d) \ | 386 V(ListIterator, moveNext, ListIteratorMoveNext, 0x7ead154d) \ |
387 V(_FixedSizeArrayIterator, moveNext, FixedListIteratorMoveNext, 0x4197892b) \ | 387 V(_FixedSizeArrayIterator, moveNext, FixedListIteratorMoveNext, 0x4197892b) \ |
388 V(_GrowableList, get:iterator, GrowableArrayIterator, 0x64c204d5) \ | 388 V(_GrowableList, get:iterator, GrowableArrayIterator, 0x64c204d5) \ |
389 V(_GrowableList, forEach, GrowableArrayForEach, 0x4cc8215b) \ | 389 V(_GrowableList, forEach, GrowableArrayForEach, 0x4cc8215b) \ |
390 V(_List, ., ObjectArrayAllocate, 0x6c3b54ee) \ | 390 V(_List, ., ObjectArrayAllocate, 0x6c3b54ee) \ |
391 V(ListMixin, get:isEmpty, ListMixinIsEmpty, 0x7a327465) \ | 391 V(ListMixin, get:isEmpty, ListMixinIsEmpty, 0x7a327465) \ |
392 V(_List, get:iterator, ObjectArrayIterator, 0x757431f3) \ | 392 V(_List, get:iterator, ObjectArrayIterator, 0x757431f3) \ |
393 V(_List, forEach, ObjectArrayForEach, 0x4dfea652) \ | 393 V(_List, forEach, ObjectArrayForEach, 0x4dfea652) \ |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 | 553 |
554 // clang-format off | 554 // clang-format off |
555 // List of recognized list factories: | 555 // List of recognized list factories: |
556 // (factory-name-symbol, class-name-string, constructor-name-string, | 556 // (factory-name-symbol, class-name-string, constructor-name-string, |
557 // result-cid, fingerprint). | 557 // result-cid, fingerprint). |
558 #define RECOGNIZED_LIST_FACTORY_LIST(V) \ | 558 #define RECOGNIZED_LIST_FACTORY_LIST(V) \ |
559 V(_ListFactory, _List, ., kArrayCid, 0x6c3b54ee) \ | 559 V(_ListFactory, _List, ., kArrayCid, 0x6c3b54ee) \ |
560 V(_GrowableListWithData, _GrowableList, .withData, kGrowableObjectArrayCid, \ | 560 V(_GrowableListWithData, _GrowableList, .withData, kGrowableObjectArrayCid, \ |
561 0x3468a26f) \ | 561 0x3468a26f) \ |
562 V(_GrowableListFactory, _GrowableList, ., kGrowableObjectArrayCid, \ | 562 V(_GrowableListFactory, _GrowableList, ., kGrowableObjectArrayCid, \ |
563 0x7c4346ab) \ | 563 0x3bd724aa) \ |
564 V(_Int8ArrayFactory, Int8List, ., kTypedDataInt8ArrayCid, 0x165876c2) \ | 564 V(_Int8ArrayFactory, Int8List, ., kTypedDataInt8ArrayCid, 0x165876c2) \ |
565 V(_Uint8ArrayFactory, Uint8List, ., kTypedDataUint8ArrayCid, 0x52988118) \ | 565 V(_Uint8ArrayFactory, Uint8List, ., kTypedDataUint8ArrayCid, 0x52988118) \ |
566 V(_Uint8ClampedArrayFactory, Uint8ClampedList, ., \ | 566 V(_Uint8ClampedArrayFactory, Uint8ClampedList, ., \ |
567 kTypedDataUint8ClampedArrayCid, 0x001256b6) \ | 567 kTypedDataUint8ClampedArrayCid, 0x001256b6) \ |
568 V(_Int16ArrayFactory, Int16List, ., kTypedDataInt16ArrayCid, 0x7c9690c9) \ | 568 V(_Int16ArrayFactory, Int16List, ., kTypedDataInt16ArrayCid, 0x7c9690c9) \ |
569 V(_Uint16ArrayFactory, Uint16List, ., kTypedDataUint16ArrayCid, 0x6f2698c3) \ | 569 V(_Uint16ArrayFactory, Uint16List, ., kTypedDataUint16ArrayCid, 0x6f2698c3) \ |
570 V(_Int32ArrayFactory, Int32List, ., kTypedDataInt32ArrayCid, 0x43b5bf2f) \ | 570 V(_Int32ArrayFactory, Int32List, ., kTypedDataInt32ArrayCid, 0x43b5bf2f) \ |
571 V(_Uint32ArrayFactory, Uint32List, ., kTypedDataUint32ArrayCid, 0x243ae083) \ | 571 V(_Uint32ArrayFactory, Uint32List, ., kTypedDataUint32ArrayCid, 0x243ae083) \ |
572 V(_Int64ArrayFactory, Int64List, ., kTypedDataInt64ArrayCid, 0x3fb987a6) \ | 572 V(_Int64ArrayFactory, Int64List, ., kTypedDataInt64ArrayCid, 0x3fb987a6) \ |
573 V(_Uint64ArrayFactory, Uint64List, ., kTypedDataUint64ArrayCid, 0x13ea5ce3) \ | 573 V(_Uint64ArrayFactory, Uint64List, ., kTypedDataUint64ArrayCid, 0x13ea5ce3) \ |
574 V(_Float64ArrayFactory, Float64List, ., kTypedDataFloat64ArrayCid, \ | 574 V(_Float64ArrayFactory, Float64List, ., kTypedDataFloat64ArrayCid, \ |
575 0x37fd11d0) \ | 575 0x37fd11d0) \ |
576 V(_Float32ArrayFactory, Float32List, ., kTypedDataFloat32ArrayCid, \ | 576 V(_Float32ArrayFactory, Float32List, ., kTypedDataFloat32ArrayCid, \ |
577 0x5b6f3f2a) \ | 577 0x5b6f3f2a) \ |
578 V(_Float32x4ArrayFactory, Float32x4List, ., kTypedDataFloat32x4ArrayCid, \ | 578 V(_Float32x4ArrayFactory, Float32x4List, ., kTypedDataFloat32x4ArrayCid, \ |
579 0x625f03f7) | 579 0x625f03f7) |
580 | 580 |
581 // clang-format on | 581 // clang-format on |
582 | 582 |
583 // Class that recognizes factories and returns corresponding result cid. | 583 // Class that recognizes factories and returns corresponding result cid. |
584 class FactoryRecognizer : public AllStatic { | 584 class FactoryRecognizer : public AllStatic { |
585 public: | 585 public: |
586 // Return kDynamicCid if factory is not recognized. | 586 // Return kDynamicCid if factory is not recognized. |
587 static intptr_t ResultCid(const Function& factory); | 587 static intptr_t ResultCid(const Function& factory); |
588 }; | 588 }; |
589 | 589 |
590 } // namespace dart | 590 } // namespace dart |
591 | 591 |
592 #endif // RUNTIME_VM_METHOD_RECOGNIZER_H_ | 592 #endif // RUNTIME_VM_METHOD_RECOGNIZER_H_ |
OLD | NEW |