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

Side by Side Diff: src/utils.h

Issue 11759008: Introduce ENABLE_LATIN_1 compile flag (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fix FilterASCII Created 7 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « src/unicode.h ('k') | src/v8utils.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 explicit ScopedVector(int length) : Vector<T>(NewArray<T>(length), length) { } 516 explicit ScopedVector(int length) : Vector<T>(NewArray<T>(length), length) { }
517 ~ScopedVector() { 517 ~ScopedVector() {
518 DeleteArray(this->start()); 518 DeleteArray(this->start());
519 } 519 }
520 520
521 private: 521 private:
522 DISALLOW_IMPLICIT_CONSTRUCTORS(ScopedVector); 522 DISALLOW_IMPLICIT_CONSTRUCTORS(ScopedVector);
523 }; 523 };
524 524
525 #define STATIC_ASCII_VECTOR(x) \ 525 #define STATIC_ASCII_VECTOR(x) \
526 v8::internal::Vector<const char>(x, ARRAY_SIZE(x)-1) 526 v8::internal::Vector<const uint8_t>(reinterpret_cast<const uint8_t*>(x), \
527 ARRAY_SIZE(x)-1)
527 528
528 inline Vector<const char> CStrVector(const char* data) { 529 inline Vector<const char> CStrVector(const char* data) {
529 return Vector<const char>(data, StrLength(data)); 530 return Vector<const char>(data, StrLength(data));
530 } 531 }
531 532
533 inline Vector<const uint8_t> OneByteVector(const char* data, int length) {
534 return Vector<const uint8_t>(reinterpret_cast<const uint8_t*>(data), length);
535 }
536
537 inline Vector<const uint8_t> OneByteVector(const char* data) {
538 return OneByteVector(data, StrLength(data));
539 }
540
532 inline Vector<char> MutableCStrVector(char* data) { 541 inline Vector<char> MutableCStrVector(char* data) {
533 return Vector<char>(data, StrLength(data)); 542 return Vector<char>(data, StrLength(data));
534 } 543 }
535 544
536 inline Vector<char> MutableCStrVector(char* data, int max) { 545 inline Vector<char> MutableCStrVector(char* data, int max) {
537 int length = StrLength(data); 546 int length = StrLength(data);
538 return Vector<char>(data, (length < max) ? length : max); 547 return Vector<char>(data, (length < max) ? length : max);
539 } 548 }
540 549
541 550
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 } 769 }
761 this->current_chunk_ = new_chunk; 770 this->current_chunk_ = new_chunk;
762 this->index_ = sequence_length; 771 this->index_ = sequence_length;
763 sequence_start_ = 0; 772 sequence_start_ = 0;
764 } 773 }
765 }; 774 };
766 775
767 776
768 // Compare ASCII/16bit chars to ASCII/16bit chars. 777 // Compare ASCII/16bit chars to ASCII/16bit chars.
769 template <typename lchar, typename rchar> 778 template <typename lchar, typename rchar>
770 inline int CompareChars(const lchar* lhs, const rchar* rhs, int chars) { 779 inline int CompareCharsUnsigned(const lchar* lhs,
780 const rchar* rhs,
781 int chars) {
771 const lchar* limit = lhs + chars; 782 const lchar* limit = lhs + chars;
772 #ifdef V8_HOST_CAN_READ_UNALIGNED 783 #ifdef V8_HOST_CAN_READ_UNALIGNED
773 if (sizeof(*lhs) == sizeof(*rhs)) { 784 if (sizeof(*lhs) == sizeof(*rhs)) {
774 // Number of characters in a uintptr_t. 785 // Number of characters in a uintptr_t.
775 static const int kStepSize = sizeof(uintptr_t) / sizeof(*lhs); // NOLINT 786 static const int kStepSize = sizeof(uintptr_t) / sizeof(*lhs); // NOLINT
776 while (lhs <= limit - kStepSize) { 787 while (lhs <= limit - kStepSize) {
777 if (*reinterpret_cast<const uintptr_t*>(lhs) != 788 if (*reinterpret_cast<const uintptr_t*>(lhs) !=
778 *reinterpret_cast<const uintptr_t*>(rhs)) { 789 *reinterpret_cast<const uintptr_t*>(rhs)) {
779 break; 790 break;
780 } 791 }
781 lhs += kStepSize; 792 lhs += kStepSize;
782 rhs += kStepSize; 793 rhs += kStepSize;
783 } 794 }
784 } 795 }
785 #endif 796 #endif
786 while (lhs < limit) { 797 while (lhs < limit) {
787 int r = static_cast<int>(*lhs) - static_cast<int>(*rhs); 798 int r = static_cast<int>(*lhs) - static_cast<int>(*rhs);
788 if (r != 0) return r; 799 if (r != 0) return r;
789 ++lhs; 800 ++lhs;
790 ++rhs; 801 ++rhs;
791 } 802 }
792 return 0; 803 return 0;
793 } 804 }
794 805
806 template<typename lchar, typename rchar>
807 inline int CompareChars(const lchar* lhs, const rchar* rhs, int chars) {
808 ASSERT(sizeof(lchar) <= 2);
809 ASSERT(sizeof(rchar) <= 2);
810 if (sizeof(lchar) == 1) {
811 if (sizeof(rchar) == 1) {
812 return CompareCharsUnsigned(reinterpret_cast<const uint8_t*>(lhs),
813 reinterpret_cast<const uint8_t*>(rhs),
814 chars);
815 } else {
816 return CompareCharsUnsigned(reinterpret_cast<const uint8_t*>(lhs),
817 reinterpret_cast<const uint16_t*>(rhs),
818 chars);
819 }
820 } else {
821 if (sizeof(rchar) == 1) {
822 return CompareCharsUnsigned(reinterpret_cast<const uint16_t*>(lhs),
823 reinterpret_cast<const uint8_t*>(rhs),
824 chars);
825 } else {
826 return CompareCharsUnsigned(reinterpret_cast<const uint16_t*>(lhs),
827 reinterpret_cast<const uint16_t*>(rhs),
828 chars);
829 }
830 }
831 }
832
795 833
796 // Calculate 10^exponent. 834 // Calculate 10^exponent.
797 inline int TenToThe(int exponent) { 835 inline int TenToThe(int exponent) {
798 ASSERT(exponent <= 9); 836 ASSERT(exponent <= 9);
799 ASSERT(exponent >= 1); 837 ASSERT(exponent >= 1);
800 int answer = 10; 838 int answer = 10;
801 for (int i = 1; i < exponent; i++) answer *= 10; 839 for (int i = 1; i < exponent; i++) answer *= 10;
802 return answer; 840 return answer;
803 } 841 }
804 842
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
1038 1076
1039 // Every compiled stub starts with this id. 1077 // Every compiled stub starts with this id.
1040 static const int kStubEntryId = 5; 1078 static const int kStubEntryId = 5;
1041 1079
1042 int id_; 1080 int id_;
1043 }; 1081 };
1044 1082
1045 } } // namespace v8::internal 1083 } } // namespace v8::internal
1046 1084
1047 #endif // V8_UTILS_H_ 1085 #endif // V8_UTILS_H_
OLDNEW
« no previous file with comments | « src/unicode.h ('k') | src/v8utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698