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

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

Issue 2235433002: VM: Add more array intrinsics. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 4 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 #include "vm/method_recognizer.h" 5 #include "vm/method_recognizer.h"
6 6
7 #include "vm/object.h" 7 #include "vm/object.h"
8 #include "vm/symbols.h" 8 #include "vm/symbols.h"
9 9
10 namespace dart { 10 namespace dart {
(...skipping 19 matching lines...) Expand all
30 #define DEFINE_CASE(cname, fname, ename, result_type, fingerprint) \ 30 #define DEFINE_CASE(cname, fname, ename, result_type, fingerprint) \
31 case k##ename: return k##result_type##Cid; 31 case k##ename: return k##result_type##Cid;
32 RECOGNIZED_LIST(DEFINE_CASE) 32 RECOGNIZED_LIST(DEFINE_CASE)
33 #undef DEFINE_CASE 33 #undef DEFINE_CASE
34 default: 34 default:
35 return kDynamicCid; 35 return kDynamicCid;
36 } 36 }
37 } 37 }
38 38
39 39
40 intptr_t MethodRecognizer::MethodKindToCid(Kind kind) {
41 switch (kind) {
42 case kImmutableArrayGetIndexed:
43 return kImmutableArrayCid;
44
45 case kObjectArrayGetIndexed:
46 case kObjectArraySetIndexed:
47 return kArrayCid;
48
49 case kGrowableArrayGetIndexed:
50 case kGrowableArraySetIndexed:
51 return kGrowableObjectArrayCid;
52
53 case kFloat32ArrayGetIndexed:
54 case kFloat32ArraySetIndexed:
55 return kTypedDataFloat32ArrayCid;
56
57 case kFloat64ArrayGetIndexed:
58 case kFloat64ArraySetIndexed:
59 return kTypedDataFloat64ArrayCid;
60
61 case kInt8ArrayGetIndexed:
62 case kInt8ArraySetIndexed:
63 return kTypedDataInt8ArrayCid;
64
65 case kUint8ArrayGetIndexed:
66 case kUint8ArraySetIndexed:
67 return kTypedDataUint8ArrayCid;
68
69 case kUint8ClampedArrayGetIndexed:
70 case kUint8ClampedArraySetIndexed:
71 return kTypedDataUint8ClampedArrayCid;
72
73 case kExternalUint8ArrayGetIndexed:
74 case kExternalUint8ArraySetIndexed:
75 return kExternalTypedDataUint8ArrayCid;
76
77 case kExternalUint8ClampedArrayGetIndexed:
78 case kExternalUint8ClampedArraySetIndexed:
79 return kExternalTypedDataUint8ClampedArrayCid;
80
81 case kInt16ArrayGetIndexed:
82 case kInt16ArraySetIndexed:
83 return kTypedDataInt16ArrayCid;
84
85 case kUint16ArrayGetIndexed:
86 case kUint16ArraySetIndexed:
87 return kTypedDataUint16ArrayCid;
88
89 case kInt32ArrayGetIndexed:
90 case kInt32ArraySetIndexed:
91 return kTypedDataInt32ArrayCid;
92
93 case kUint32ArrayGetIndexed:
94 case kUint32ArraySetIndexed:
95 return kTypedDataUint32ArrayCid;
96
97 case kInt64ArrayGetIndexed:
98 case kInt64ArraySetIndexed:
99 return kTypedDataInt64ArrayCid;
100
101 case kFloat32x4ArrayGetIndexed:
102 case kFloat32x4ArraySetIndexed:
103 return kTypedDataFloat32x4ArrayCid;
104
105 case kInt32x4ArrayGetIndexed:
106 case kInt32x4ArraySetIndexed:
107 return kTypedDataInt32x4ArrayCid;
108
109 case kFloat64x2ArrayGetIndexed:
110 case kFloat64x2ArraySetIndexed:
111 return kTypedDataFloat64x2ArrayCid;
112
113 default:
114 break;
115 }
116 UNREACHABLE();
117 return kIllegalCid;
118 }
119
120
40 #define KIND_TO_STRING(class_name, function_name, enum_name, type, fp) \ 121 #define KIND_TO_STRING(class_name, function_name, enum_name, type, fp) \
41 #enum_name, 122 #enum_name,
42 static const char* recognized_list_method_name[] = { 123 static const char* recognized_list_method_name[] = {
43 "Unknown", 124 "Unknown",
44 RECOGNIZED_LIST(KIND_TO_STRING) 125 RECOGNIZED_LIST(KIND_TO_STRING)
45 }; 126 };
46 #undef KIND_TO_STRING 127 #undef KIND_TO_STRING
47 128
48 const char* MethodRecognizer::KindToCString(Kind kind) { 129 const char* MethodRecognizer::KindToCString(Kind kind) {
49 if (kind > kUnknown && kind < kNumRecognizedMethods) 130 if (kind > kUnknown && kind < kNumRecognizedMethods)
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 POLYMORPHIC_TARGET_LIST(SET_IS_POLYMORPHIC_TARGET); 179 POLYMORPHIC_TARGET_LIST(SET_IS_POLYMORPHIC_TARGET);
99 180
100 #undef SET_RECOGNIZED_KIND 181 #undef SET_RECOGNIZED_KIND
101 #undef SET_IS_ALWAYS_INLINE 182 #undef SET_IS_ALWAYS_INLINE
102 #undef SET_IS_POLYMORPHIC_TARGET 183 #undef SET_IS_POLYMORPHIC_TARGET
103 #undef SET_FUNCTION_BIT 184 #undef SET_FUNCTION_BIT
104 } 185 }
105 #endif // defined(DART_NO_SNAPSHOT). 186 #endif // defined(DART_NO_SNAPSHOT).
106 187
107 } // namespace dart 188 } // namespace dart
OLDNEW
« runtime/vm/method_recognizer.h ('K') | « runtime/vm/method_recognizer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698