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

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

Issue 683433003: Integrate the Irregexp Regular Expression Engine. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: rebase, enable tests, remove *CodeUnitsAt Created 6 years, 1 month 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 | Annotate | Revision Log
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 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 V(_StringBase, [], StringBaseCharAt, 1512210677) \ 191 V(_StringBase, [], StringBaseCharAt, 1512210677) \
192 V(_OneByteString, get:hashCode, OneByteString_getHashCode, 1111837929) \ 192 V(_OneByteString, get:hashCode, OneByteString_getHashCode, 1111837929) \
193 V(_OneByteString, _substringUncheckedNative, \ 193 V(_OneByteString, _substringUncheckedNative, \
194 OneByteString_substringUnchecked, 1527498975) \ 194 OneByteString_substringUnchecked, 1527498975) \
195 V(_OneByteString, _setAt, OneByteStringSetAt, 468605749) \ 195 V(_OneByteString, _setAt, OneByteStringSetAt, 468605749) \
196 V(_OneByteString, _allocate, OneByteString_allocate, 2035417022) \ 196 V(_OneByteString, _allocate, OneByteString_allocate, 2035417022) \
197 V(_OneByteString, ==, OneByteString_equality, 1727047023) \ 197 V(_OneByteString, ==, OneByteString_equality, 1727047023) \
198 V(_TwoByteString, ==, TwoByteString_equality, 951149689) \ 198 V(_TwoByteString, ==, TwoByteString_equality, 951149689) \
199 199
200 200
201 // TODO(zerny): Remove this list and add _ExecuteMatch to
202 // CORE_LIB_INTRINSIC_LIST once irregexp code has been implemented for all
203 // architectures and JSCRE has been removed.
204 #if defined(USE_JSCRE)
205 #define CORE_REGEXP_LIB_INTRINSIC_LIST(V)
206 #else
207 #define CORE_REGEXP_LIB_INTRINSIC_LIST(V) \
208 V(_JSSyntaxRegExp, _ExecuteMatch, JSRegExp_ExecuteMatch, 1654250896)
209 #endif
210
211
201 #define CORE_INTEGER_LIB_INTRINSIC_LIST(V) \ 212 #define CORE_INTEGER_LIB_INTRINSIC_LIST(V) \
202 V(_IntegerImplementation, _addFromInteger, Integer_addFromInteger, \ 213 V(_IntegerImplementation, _addFromInteger, Integer_addFromInteger, \
203 438687793) \ 214 438687793) \
204 V(_IntegerImplementation, +, Integer_add, 501253666) \ 215 V(_IntegerImplementation, +, Integer_add, 501253666) \
205 V(_IntegerImplementation, _subFromInteger, Integer_subFromInteger, \ 216 V(_IntegerImplementation, _subFromInteger, Integer_subFromInteger, \
206 562800077) \ 217 562800077) \
207 V(_IntegerImplementation, -, Integer_sub, 1819430179) \ 218 V(_IntegerImplementation, -, Integer_sub, 1819430179) \
208 V(_IntegerImplementation, _mulFromInteger, Integer_mulFromInteger, \ 219 V(_IntegerImplementation, _mulFromInteger, Integer_mulFromInteger, \
209 67891834) \ 220 67891834) \
210 V(_IntegerImplementation, *, Integer_mul, 1787870724) \ 221 V(_IntegerImplementation, *, Integer_mul, 1787870724) \
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 GRAPH_CORE_INTRINSICS_LIST(V) \ 304 GRAPH_CORE_INTRINSICS_LIST(V) \
294 GRAPH_TYPED_DATA_INTRINSICS_LIST(V) \ 305 GRAPH_TYPED_DATA_INTRINSICS_LIST(V) \
295 306
296 #define PROFILER_LIB_INTRINSIC_LIST(V) \ 307 #define PROFILER_LIB_INTRINSIC_LIST(V) \
297 V(_UserTag, makeCurrent, UserTag_makeCurrent, 370414636) \ 308 V(_UserTag, makeCurrent, UserTag_makeCurrent, 370414636) \
298 V(::, _getDefaultTag, UserTag_defaultTag, 1159885970) \ 309 V(::, _getDefaultTag, UserTag_defaultTag, 1159885970) \
299 V(::, _getCurrentTag, Profiler_getCurrentTag, 1182126114) \ 310 V(::, _getCurrentTag, Profiler_getCurrentTag, 1182126114) \
300 311
301 #define ALL_INTRINSICS_NO_INTEGER_LIB_LIST(V) \ 312 #define ALL_INTRINSICS_NO_INTEGER_LIB_LIST(V) \
302 CORE_LIB_INTRINSIC_LIST(V) \ 313 CORE_LIB_INTRINSIC_LIST(V) \
314 CORE_REGEXP_LIB_INTRINSIC_LIST(V) \
303 MATH_LIB_INTRINSIC_LIST(V) \ 315 MATH_LIB_INTRINSIC_LIST(V) \
304 TYPED_DATA_LIB_INTRINSIC_LIST(V) \ 316 TYPED_DATA_LIB_INTRINSIC_LIST(V) \
305 PROFILER_LIB_INTRINSIC_LIST(V) 317 PROFILER_LIB_INTRINSIC_LIST(V)
306 318
307 #define ALL_INTRINSICS_LIST(V) \ 319 #define ALL_INTRINSICS_LIST(V) \
308 ALL_INTRINSICS_NO_INTEGER_LIB_LIST(V) \ 320 ALL_INTRINSICS_NO_INTEGER_LIB_LIST(V) \
309 CORE_INTEGER_LIB_INTRINSIC_LIST(V) 321 CORE_INTEGER_LIB_INTRINSIC_LIST(V)
310 322
311 #define RECOGNIZED_LIST(V) \ 323 #define RECOGNIZED_LIST(V) \
312 OTHER_RECOGNIZED_LIST(V) \ 324 OTHER_RECOGNIZED_LIST(V) \
313 ALL_INTRINSICS_LIST(V) \ 325 ALL_INTRINSICS_LIST(V) \
314 GRAPH_INTRINSICS_LIST(V) 326 GRAPH_INTRINSICS_LIST(V)
315 327
316 // A list of core function that should always be inlined. 328 // A list of core function that should always be inlined.
317 #define INLINE_WHITE_LIST(V) \ 329 #define INLINE_WHITE_LIST(V) \
318 V(Object, ==, ObjectEquals, 1068471689) \ 330 V(Object, ==, ObjectEquals, 1068471689) \
319 V(_List, get:length, ObjectArrayLength, 1181352729) \ 331 V(_List, get:length, ObjectArrayLength, 1181352729) \
320 V(_ImmutableList, get:length, ImmutableArrayLength, 274917727) \ 332 V(_ImmutableList, get:length, ImmutableArrayLength, 274917727) \
321 V(_TypedList, get:length, TypedDataLength, 522565357) \ 333 V(_TypedList, get:length, TypedDataLength, 522565357) \
322 V(_GrowableList, get:length, GrowableArrayLength, 778505107) \ 334 V(_GrowableList, get:length, GrowableArrayLength, 778505107) \
323 V(_StringBase, get:length, StringBaseLength, 784399628) \ 335 V(_StringBase, get:length, StringBaseLength, 784399628) \
336 V(_GrowableList, add, GrowableListAdd, 1899133961) \
337 V(_GrowableList, removeLast, GrowableListRemoveLast, 1274907639) \
324 V(ListIterator, moveNext, ListIteratorMoveNext, 210829138) \ 338 V(ListIterator, moveNext, ListIteratorMoveNext, 210829138) \
325 V(_FixedSizeArrayIterator, moveNext, FixedListIteratorMoveNext, 1147271335) \ 339 V(_FixedSizeArrayIterator, moveNext, FixedListIteratorMoveNext, 1147271335) \
326 V(_GrowableList, get:iterator, GrowableArrayIterator, 1812933946) \ 340 V(_GrowableList, get:iterator, GrowableArrayIterator, 1812933946) \
327 V(_GrowableList, forEach, GrowableArrayForEach, 2085943947) \ 341 V(_GrowableList, forEach, GrowableArrayForEach, 2085943947) \
328 V(_List, ., ObjectArrayAllocate, 1595327584) \ 342 V(_List, ., ObjectArrayAllocate, 1595327584) \
329 V(_List, [], ObjectArrayGetIndexed, 795612476) \ 343 V(_List, [], ObjectArrayGetIndexed, 795612476) \
330 V(_List, []=, ObjectArraySetIndexed, 1288827575) \ 344 V(_List, []=, ObjectArraySetIndexed, 1288827575) \
331 V(_List, get:isEmpty, ObjectArrayIsEmpty, 2130247737) \ 345 V(_List, get:isEmpty, ObjectArrayIsEmpty, 2130247737) \
332 V(_List, get:iterator, ObjectArrayIterator, 458612415) \ 346 V(_List, get:iterator, ObjectArrayIterator, 458612415) \
333 V(_List, forEach, ObjectArrayForEach, 592525445) \ 347 V(_List, forEach, ObjectArrayForEach, 592525445) \
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 static Kind RecognizeKind(const Function& function); 436 static Kind RecognizeKind(const Function& function);
423 static bool AlwaysInline(const Function& function); 437 static bool AlwaysInline(const Function& function);
424 static bool PolymorphicTarget(const Function& function); 438 static bool PolymorphicTarget(const Function& function);
425 static const char* KindToCString(Kind kind); 439 static const char* KindToCString(Kind kind);
426 static void InitializeState(); 440 static void InitializeState();
427 }; 441 };
428 442
429 } // namespace dart 443 } // namespace dart
430 444
431 #endif // VM_METHOD_RECOGNIZER_H_ 445 #endif // VM_METHOD_RECOGNIZER_H_
OLDNEW
« no previous file with comments | « runtime/vm/intrinsifier_x64.cc ('k') | runtime/vm/object.h » ('j') | runtime/vm/object.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698