| 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 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 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 V(Int32x4, get:flagZ, Int32x4GetFlagZ, Bool, 0x20d61679) \ | 104 V(Int32x4, get:flagZ, Int32x4GetFlagZ, Bool, 0x20d61679) \ |
| 105 V(Int32x4, get:flagW, Int32x4GetFlagW, Bool, 0x504478ac) \ | 105 V(Int32x4, get:flagW, Int32x4GetFlagW, Bool, 0x504478ac) \ |
| 106 V(Int32x4, get:signMask, Int32x4GetSignMask, Dynamic, 0x2c1ec9e5) \ | 106 V(Int32x4, get:signMask, Int32x4GetSignMask, Dynamic, 0x2c1ec9e5) \ |
| 107 V(Int32x4, shuffle, Int32x4Shuffle, Int32x4, 0x20bc0b16) \ | 107 V(Int32x4, shuffle, Int32x4Shuffle, Int32x4, 0x20bc0b16) \ |
| 108 V(Int32x4, shuffleMix, Int32x4ShuffleMix, Int32x4, 0x5c7056e1) \ | 108 V(Int32x4, shuffleMix, Int32x4ShuffleMix, Int32x4, 0x5c7056e1) \ |
| 109 V(Int32x4, select, Int32x4Select, Float32x4, 0x518ee337) \ | 109 V(Int32x4, select, Int32x4Select, Float32x4, 0x518ee337) \ |
| 110 V(Int32x4, withFlagX, Int32x4WithFlagX, Int32x4, 0x0ef58fcf) \ | 110 V(Int32x4, withFlagX, Int32x4WithFlagX, Int32x4, 0x0ef58fcf) \ |
| 111 V(Int32x4, withFlagY, Int32x4WithFlagY, Int32x4, 0x6485a9c4) \ | 111 V(Int32x4, withFlagY, Int32x4WithFlagY, Int32x4, 0x6485a9c4) \ |
| 112 V(Int32x4, withFlagZ, Int32x4WithFlagZ, Int32x4, 0x267acdfa) \ | 112 V(Int32x4, withFlagZ, Int32x4WithFlagZ, Int32x4, 0x267acdfa) \ |
| 113 V(Int32x4, withFlagW, Int32x4WithFlagW, Int32x4, 0x345ac675) \ | 113 V(Int32x4, withFlagW, Int32x4WithFlagW, Int32x4, 0x345ac675) \ |
| 114 V(Float32List, [], Float32ArrayGetIndexed, Double, 0x5686528f) \ | |
| 115 V(Float32List, []=, Float32ArraySetIndexed, Dynamic, 0x1b0d90df) \ | |
| 116 V(Int8List, [], Int8ArrayGetIndexed, Smi, 0x069af8b3) \ | |
| 117 V(Int8List, []=, Int8ArraySetIndexed, Dynamic, 0x33994cd7) \ | |
| 118 V(Uint8ClampedList, [], Uint8ClampedArrayGetIndexed, Smi, 0x027603ed) \ | |
| 119 V(Uint8ClampedList, []=, Uint8ClampedArraySetIndexed, Dynamic, 0x28f5f058) \ | |
| 120 V(_ExternalUint8ClampedArray, [], ExternalUint8ClampedArrayGetIndexed, \ | |
| 121 Smi, 0x027603ed) \ | |
| 122 V(_ExternalUint8ClampedArray, []=, ExternalUint8ClampedArraySetIndexed, \ | |
| 123 Dynamic, 0x28f5f058) \ | |
| 124 V(Int16List, [], Int16ArrayGetIndexed, Smi, 0x173cd6a1) \ | |
| 125 V(Int16List, []=, Int16ArraySetIndexed, Dynamic, 0x32f84e3c) \ | |
| 126 V(Uint16List, [], Uint16ArrayGetIndexed, Smi, 0x3ececa2f) \ | |
| 127 V(Uint16List, []=, Uint16ArraySetIndexed, Dynamic, 0x5c3a0bb9) \ | |
| 128 V(Int32List, [], Int32ArrayGetIndexed, Dynamic, 0x262eef09) \ | |
| 129 V(Int32List, []=, Int32ArraySetIndexed, Dynamic, 0x1b05b471) \ | |
| 130 V(Int64List, [], Int64ArrayGetIndexed, Dynamic, 0x0c0c939a) \ | 114 V(Int64List, [], Int64ArrayGetIndexed, Dynamic, 0x0c0c939a) \ |
| 131 V(Int64List, []=, Int64ArraySetIndexed, Dynamic, 0x3714d004) \ | 115 V(Int64List, []=, Int64ArraySetIndexed, Dynamic, 0x3714d004) \ |
| 132 V(Float32x4List, [], Float32x4ArrayGetIndexed, Float32x4, 0x01c7017b) \ | 116 V(Float32x4List, [], Float32x4ArrayGetIndexed, Float32x4, 0x01c7017b) \ |
| 133 V(Float32x4List, []=, Float32x4ArraySetIndexed, Dynamic, 0x56e843aa) \ | 117 V(Float32x4List, []=, Float32x4ArraySetIndexed, Dynamic, 0x56e843aa) \ |
| 134 V(Int32x4List, [], Int32x4ArrayGetIndexed, Int32x4, 0x08353f8d) \ | 118 V(Int32x4List, [], Int32x4ArrayGetIndexed, Int32x4, 0x08353f8d) \ |
| 135 V(Int32x4List, []=, Int32x4ArraySetIndexed, Dynamic, 0x1d9a47a5) \ | 119 V(Int32x4List, []=, Int32x4ArraySetIndexed, Dynamic, 0x1d9a47a5) \ |
| 136 V(Float64x2List, [], Float64x2ArrayGetIndexed, Float64x2, 0x669b1498) \ | 120 V(Float64x2List, [], Float64x2ArrayGetIndexed, Float64x2, 0x669b1498) \ |
| 137 V(Float64x2List, []=, Float64x2ArraySetIndexed, Dynamic, 0x76da6ffe) \ | 121 V(Float64x2List, []=, Float64x2ArraySetIndexed, Dynamic, 0x76da6ffe) \ |
| 138 V(_Bigint, get:_neg, Bigint_getNeg, Bool, 0x7bf17a57) \ | 122 V(_Bigint, get:_neg, Bigint_getNeg, Bool, 0x7bf17a57) \ |
| 139 V(_Bigint, get:_used, Bigint_getUsed, Smi, 0x55041013) \ | 123 V(_Bigint, get:_used, Bigint_getUsed, Smi, 0x55041013) \ |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 V(Float64List, ., TypedData_Float64Array_factory, \ | 258 V(Float64List, ., TypedData_Float64Array_factory, \ |
| 275 TypedDataFloat64Array, 0x501be4f1) \ | 259 TypedDataFloat64Array, 0x501be4f1) \ |
| 276 V(Float32x4List, ., TypedData_Float32x4Array_factory, \ | 260 V(Float32x4List, ., TypedData_Float32x4Array_factory, \ |
| 277 TypedDataFloat32x4Array, 0x7a7dd718) \ | 261 TypedDataFloat32x4Array, 0x7a7dd718) \ |
| 278 V(Int32x4List, ., TypedData_Int32x4Array_factory, \ | 262 V(Int32x4List, ., TypedData_Int32x4Array_factory, \ |
| 279 TypedDataInt32x4Array, 0x1e0dca48) \ | 263 TypedDataInt32x4Array, 0x1e0dca48) \ |
| 280 V(Float64x2List, ., TypedData_Float64x2Array_factory, \ | 264 V(Float64x2List, ., TypedData_Float64x2Array_factory, \ |
| 281 TypedDataFloat64x2Array, 0x18cbf4d9) \ | 265 TypedDataFloat64x2Array, 0x18cbf4d9) \ |
| 282 | 266 |
| 283 #define GRAPH_TYPED_DATA_INTRINSICS_LIST(V) \ | 267 #define GRAPH_TYPED_DATA_INTRINSICS_LIST(V) \ |
| 268 V(Int8List, [], Int8ArrayGetIndexed, Smi, 0x069af8b3) \ |
| 269 V(Int8List, []=, Int8ArraySetIndexed, Dynamic, 0x33994cd7) \ |
| 284 V(Uint8List, [], Uint8ArrayGetIndexed, Smi, 0x027603ed) \ | 270 V(Uint8List, [], Uint8ArrayGetIndexed, Smi, 0x027603ed) \ |
| 285 V(Uint8List, []=, Uint8ArraySetIndexed, Dynamic, 0x060d5256) \ | 271 V(Uint8List, []=, Uint8ArraySetIndexed, Dynamic, 0x060d5256) \ |
| 286 V(_ExternalUint8Array, [], ExternalUint8ArrayGetIndexed, Smi, 0x027603ed) \ | 272 V(_ExternalUint8Array, [], ExternalUint8ArrayGetIndexed, Smi, 0x027603ed) \ |
| 287 V(_ExternalUint8Array, []=, ExternalUint8ArraySetIndexed, Dynamic, \ | 273 V(_ExternalUint8Array, []=, ExternalUint8ArraySetIndexed, Dynamic, \ |
| 288 0x060d5256) \ | 274 0x060d5256) \ |
| 275 V(Uint8ClampedList, [], Uint8ClampedArrayGetIndexed, Smi, 0x027603ed) \ |
| 276 V(Uint8ClampedList, []=, Uint8ClampedArraySetIndexed, Dynamic, 0x28f5f058) \ |
| 277 V(_ExternalUint8ClampedArray, [], ExternalUint8ClampedArrayGetIndexed, \ |
| 278 Smi, 0x027603ed) \ |
| 279 V(_ExternalUint8ClampedArray, []=, ExternalUint8ClampedArraySetIndexed, \ |
| 280 Dynamic, 0x28f5f058) \ |
| 281 V(Int16List, [], Int16ArrayGetIndexed, Smi, 0x173cd6a1) \ |
| 282 V(Int16List, []=, Int16ArraySetIndexed, Dynamic, 0x32f84e3c) \ |
| 283 V(Uint16List, [], Uint16ArrayGetIndexed, Smi, 0x3ececa2f) \ |
| 284 V(Uint16List, []=, Uint16ArraySetIndexed, Dynamic, 0x5c3a0bb9) \ |
| 285 V(Int32List, [], Int32ArrayGetIndexed, Dynamic, 0x262eef09) \ |
| 286 V(Int32List, []=, Int32ArraySetIndexed, Dynamic, 0x1b05b471) \ |
| 289 V(Uint32List, [], Uint32ArrayGetIndexed, Dynamic, 0x6040f7fb) \ | 287 V(Uint32List, [], Uint32ArrayGetIndexed, Dynamic, 0x6040f7fb) \ |
| 290 V(Uint32List, []=, Uint32ArraySetIndexed, Dynamic, 0x3a4e1119) \ | 288 V(Uint32List, []=, Uint32ArraySetIndexed, Dynamic, 0x3a4e1119) \ |
| 291 V(Float64List, [], Float64ArrayGetIndexed, Double, 0x7a27098d) \ | 289 V(Float64List, [], Float64ArrayGetIndexed, Double, 0x7a27098d) \ |
| 292 V(Float64List, []=, Float64ArraySetIndexed, Dynamic, 0x139b2465) \ | 290 V(Float64List, []=, Float64ArraySetIndexed, Dynamic, 0x139b2465) \ |
| 291 V(Float32List, [], Float32ArrayGetIndexed, Double, 0x5686528f) \ |
| 292 V(Float32List, []=, Float32ArraySetIndexed, Dynamic, 0x1b0d90df) \ |
| 293 V(_TypedList, get:length, TypedDataLength, Smi, 0x2090dc1a) \ | 293 V(_TypedList, get:length, TypedDataLength, Smi, 0x2090dc1a) \ |
| 294 V(Float32x4, get:x, Float32x4ShuffleX, Double, 0x63d0c13f) \ | 294 V(Float32x4, get:x, Float32x4ShuffleX, Double, 0x63d0c13f) \ |
| 295 V(Float32x4, get:y, Float32x4ShuffleY, Double, 0x20343b1b) \ | 295 V(Float32x4, get:y, Float32x4ShuffleY, Double, 0x20343b1b) \ |
| 296 V(Float32x4, get:z, Float32x4ShuffleZ, Double, 0x13181dba) \ | 296 V(Float32x4, get:z, Float32x4ShuffleZ, Double, 0x13181dba) \ |
| 297 V(Float32x4, get:w, Float32x4ShuffleW, Double, 0x69895020) \ | 297 V(Float32x4, get:w, Float32x4ShuffleW, Double, 0x69895020) \ |
| 298 V(Float32x4, _mul, Float32x4Mul, Float32x4, 0x028d3146) \ | 298 V(Float32x4, _mul, Float32x4Mul, Float32x4, 0x028d3146) \ |
| 299 V(Float32x4, _sub, Float32x4Sub, Float32x4, 0x062f78f7) \ | 299 V(Float32x4, _sub, Float32x4Sub, Float32x4, 0x062f78f7) \ |
| 300 V(Float32x4, _add, Float32x4Add, Float32x4, 0x509f9006) \ | 300 V(Float32x4, _add, Float32x4Add, Float32x4, 0x509f9006) \ |
| 301 | 301 |
| 302 #define GRAPH_CORE_INTRINSICS_LIST(V) \ | 302 #define GRAPH_CORE_INTRINSICS_LIST(V) \ |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 522 k##enum_name, | 522 k##enum_name, |
| 523 RECOGNIZED_LIST(DEFINE_ENUM_LIST) | 523 RECOGNIZED_LIST(DEFINE_ENUM_LIST) |
| 524 #undef DEFINE_ENUM_LIST | 524 #undef DEFINE_ENUM_LIST |
| 525 kNumRecognizedMethods | 525 kNumRecognizedMethods |
| 526 }; | 526 }; |
| 527 | 527 |
| 528 static Kind RecognizeKind(const Function& function); | 528 static Kind RecognizeKind(const Function& function); |
| 529 static bool AlwaysInline(const Function& function); | 529 static bool AlwaysInline(const Function& function); |
| 530 static bool PolymorphicTarget(const Function& function); | 530 static bool PolymorphicTarget(const Function& function); |
| 531 static intptr_t ResultCid(const Function& function); | 531 static intptr_t ResultCid(const Function& function); |
| 532 static intptr_t MethodKindToReceiverCid(Kind kind); |
| 532 static const char* KindToCString(Kind kind); | 533 static const char* KindToCString(Kind kind); |
| 533 #if defined(DART_NO_SNAPSHOT) | 534 #if defined(DART_NO_SNAPSHOT) |
| 534 static void InitializeState(); | 535 static void InitializeState(); |
| 535 #endif // defined(DART_NO_SNAPSHOT). | 536 #endif // defined(DART_NO_SNAPSHOT). |
| 536 }; | 537 }; |
| 537 | 538 |
| 538 | 539 |
| 539 #if defined(DART_NO_SNAPSHOT) | 540 #if defined(DART_NO_SNAPSHOT) |
| 540 #define CHECK_FINGERPRINT2(f, p0, p1, fp) \ | 541 #define CHECK_FINGERPRINT2(f, p0, p1, fp) \ |
| 541 ASSERT(f.CheckSourceFingerprint(#p0 ", " #p1, fp)) | 542 ASSERT(f.CheckSourceFingerprint(#p0 ", " #p1, fp)) |
| (...skipping 26 matching lines...) Expand all Loading... |
| 568 // Class that recognizes factories and returns corresponding result cid. | 569 // Class that recognizes factories and returns corresponding result cid. |
| 569 class FactoryRecognizer : public AllStatic { | 570 class FactoryRecognizer : public AllStatic { |
| 570 public: | 571 public: |
| 571 // Return kDynamicCid if factory is not recognized. | 572 // Return kDynamicCid if factory is not recognized. |
| 572 static intptr_t ResultCid(const Function& factory); | 573 static intptr_t ResultCid(const Function& factory); |
| 573 }; | 574 }; |
| 574 | 575 |
| 575 } // namespace dart | 576 } // namespace dart |
| 576 | 577 |
| 577 #endif // VM_METHOD_RECOGNIZER_H_ | 578 #endif // VM_METHOD_RECOGNIZER_H_ |
| OLD | NEW |