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

Side by Side Diff: test/cctest/test-strings.cc

Issue 1502193002: Remove deprecate API usage from more cctests (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: updates Created 5 years 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
« no previous file with comments | « test/cctest/test-inobject-slack-tracking.cc ('k') | no next file » | 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 12 matching lines...) Expand all
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 27
28 // Check that we can traverse very deep stacks of ConsStrings using 28 // Check that we can traverse very deep stacks of ConsStrings using
29 // StringCharacterStram. Check that Get(int) works on very deep stacks 29 // StringCharacterStram. Check that Get(int) works on very deep stacks
30 // of ConsStrings. These operations may not be very fast, but they 30 // of ConsStrings. These operations may not be very fast, but they
31 // should be possible without getting errors due to too deep recursion. 31 // should be possible without getting errors due to too deep recursion.
32 32
33 // TODO(jochen): Remove this after the setting is turned on globally.
34 #define V8_IMMINENT_DEPRECATION_WARNINGS
35
33 #include <stdlib.h> 36 #include <stdlib.h>
34 37
35 #include "src/v8.h" 38 #include "src/v8.h"
36 39
37 #include "src/api.h" 40 #include "src/api.h"
38 #include "src/factory.h" 41 #include "src/factory.h"
39 #include "src/messages.h" 42 #include "src/messages.h"
40 #include "src/objects.h" 43 #include "src/objects.h"
41 #include "src/unicode-decoder.h" 44 #include "src/unicode-decoder.h"
42 #include "test/cctest/cctest.h" 45 #include "test/cctest/cctest.h"
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 CHECK_EQ(buf[j], building_blocks[i]->Get(j)); 187 CHECK_EQ(buf[j], building_blocks[i]->Get(j));
185 } 188 }
186 break; 189 break;
187 } 190 }
188 case 2: { 191 case 2: {
189 uc16* buf = NewArray<uc16>(len); 192 uc16* buf = NewArray<uc16>(len);
190 for (int j = 0; j < len; j++) { 193 for (int j = 0; j < len; j++) {
191 buf[j] = rng->next(0x10000); 194 buf[j] = rng->next(0x10000);
192 } 195 }
193 Resource* resource = new Resource(buf, len); 196 Resource* resource = new Resource(buf, len);
194 building_blocks[i] = 197 building_blocks[i] = v8::Utils::OpenHandle(
195 v8::Utils::OpenHandle( 198 *v8::String::NewExternalTwoByte(CcTest::isolate(), resource)
196 *v8::String::NewExternal(CcTest::isolate(), resource)); 199 .ToLocalChecked());
197 for (int j = 0; j < len; j++) { 200 for (int j = 0; j < len; j++) {
198 CHECK_EQ(buf[j], building_blocks[i]->Get(j)); 201 CHECK_EQ(buf[j], building_blocks[i]->Get(j));
199 } 202 }
200 break; 203 break;
201 } 204 }
202 case 3: { 205 case 3: {
203 char* buf = NewArray<char>(len); 206 char* buf = NewArray<char>(len);
204 for (int j = 0; j < len; j++) { 207 for (int j = 0; j < len; j++) {
205 buf[j] = rng->next(0x80); 208 buf[j] = rng->next(0x80);
206 } 209 }
207 OneByteResource* resource = new OneByteResource(buf, len); 210 OneByteResource* resource = new OneByteResource(buf, len);
208 building_blocks[i] = 211 building_blocks[i] = v8::Utils::OpenHandle(
209 v8::Utils::OpenHandle( 212 *v8::String::NewExternalOneByte(CcTest::isolate(), resource)
210 *v8::String::NewExternal(CcTest::isolate(), resource)); 213 .ToLocalChecked());
211 for (int j = 0; j < len; j++) { 214 for (int j = 0; j < len; j++) {
212 CHECK_EQ(buf[j], building_blocks[i]->Get(j)); 215 CHECK_EQ(buf[j], building_blocks[i]->Get(j));
213 } 216 }
214 break; 217 break;
215 } 218 }
216 } 219 }
217 for (int j = slice_depth; j > 0; j--) { 220 for (int j = slice_depth; j > 0; j--) {
218 building_blocks[i] = factory->NewSubString( 221 building_blocks[i] = factory->NewSubString(
219 building_blocks[i], 222 building_blocks[i],
220 slice_head_chars, 223 slice_head_chars,
(...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after
873 } 876 }
874 877
875 878
876 TEST(Utf8Conversion) { 879 TEST(Utf8Conversion) {
877 // Smoke test for converting strings to utf-8. 880 // Smoke test for converting strings to utf-8.
878 CcTest::InitializeVM(); 881 CcTest::InitializeVM();
879 v8::HandleScope handle_scope(CcTest::isolate()); 882 v8::HandleScope handle_scope(CcTest::isolate());
880 // A simple one-byte string 883 // A simple one-byte string
881 const char* one_byte_string = "abcdef12345"; 884 const char* one_byte_string = "abcdef12345";
882 int len = v8::String::NewFromUtf8(CcTest::isolate(), one_byte_string, 885 int len = v8::String::NewFromUtf8(CcTest::isolate(), one_byte_string,
883 v8::String::kNormalString, 886 v8::NewStringType::kNormal,
884 StrLength(one_byte_string))->Utf8Length(); 887 StrLength(one_byte_string))
888 .ToLocalChecked()
889 ->Utf8Length();
885 CHECK_EQ(StrLength(one_byte_string), len); 890 CHECK_EQ(StrLength(one_byte_string), len);
886 // A mixed one-byte and two-byte string 891 // A mixed one-byte and two-byte string
887 // U+02E4 -> CB A4 892 // U+02E4 -> CB A4
888 // U+0064 -> 64 893 // U+0064 -> 64
889 // U+12E4 -> E1 8B A4 894 // U+12E4 -> E1 8B A4
890 // U+0030 -> 30 895 // U+0030 -> 30
891 // U+3045 -> E3 81 85 896 // U+3045 -> E3 81 85
892 const uint16_t mixed_string[] = {0x02E4, 0x0064, 0x12E4, 0x0030, 0x3045}; 897 const uint16_t mixed_string[] = {0x02E4, 0x0064, 0x12E4, 0x0030, 0x3045};
893 // The characters we expect to be output 898 // The characters we expect to be output
894 const unsigned char as_utf8[11] = {0xCB, 0xA4, 0x64, 0xE1, 0x8B, 0xA4, 0x30, 899 const unsigned char as_utf8[11] = {0xCB, 0xA4, 0x64, 0xE1, 0x8B, 0xA4, 0x30,
895 0xE3, 0x81, 0x85, 0x00}; 900 0xE3, 0x81, 0x85, 0x00};
896 // The number of bytes expected to be written for each length 901 // The number of bytes expected to be written for each length
897 const int lengths[12] = {0, 0, 2, 3, 3, 3, 6, 7, 7, 7, 10, 11}; 902 const int lengths[12] = {0, 0, 2, 3, 3, 3, 6, 7, 7, 7, 10, 11};
898 const int char_lengths[12] = {0, 0, 1, 2, 2, 2, 3, 4, 4, 4, 5, 5}; 903 const int char_lengths[12] = {0, 0, 1, 2, 2, 2, 3, 4, 4, 4, 5, 5};
899 v8::Handle<v8::String> mixed = v8::String::NewFromTwoByte( 904 v8::Local<v8::String> mixed =
900 CcTest::isolate(), mixed_string, v8::String::kNormalString, 5); 905 v8::String::NewFromTwoByte(CcTest::isolate(), mixed_string,
906 v8::NewStringType::kNormal, 5)
907 .ToLocalChecked();
901 CHECK_EQ(10, mixed->Utf8Length()); 908 CHECK_EQ(10, mixed->Utf8Length());
902 // Try encoding the string with all capacities 909 // Try encoding the string with all capacities
903 char buffer[11]; 910 char buffer[11];
904 const char kNoChar = static_cast<char>(-1); 911 const char kNoChar = static_cast<char>(-1);
905 for (int i = 0; i <= 11; i++) { 912 for (int i = 0; i <= 11; i++) {
906 // Clear the buffer before reusing it 913 // Clear the buffer before reusing it
907 for (int j = 0; j < 11; j++) 914 for (int j = 0; j < 11; j++)
908 buffer[j] = kNoChar; 915 buffer[j] = kNoChar;
909 int chars_written; 916 int chars_written;
910 int written = mixed->WriteUtf8(buffer, i, &chars_written); 917 int written = mixed->WriteUtf8(buffer, i, &chars_written);
(...skipping 11 matching lines...) Expand all
922 929
923 TEST(ExternalShortStringAdd) { 930 TEST(ExternalShortStringAdd) {
924 LocalContext context; 931 LocalContext context;
925 v8::HandleScope handle_scope(CcTest::isolate()); 932 v8::HandleScope handle_scope(CcTest::isolate());
926 933
927 // Make sure we cover all always-flat lengths and at least one above. 934 // Make sure we cover all always-flat lengths and at least one above.
928 static const int kMaxLength = 20; 935 static const int kMaxLength = 20;
929 CHECK_GT(kMaxLength, i::ConsString::kMinLength); 936 CHECK_GT(kMaxLength, i::ConsString::kMinLength);
930 937
931 // Allocate two JavaScript arrays for holding short strings. 938 // Allocate two JavaScript arrays for holding short strings.
932 v8::Handle<v8::Array> one_byte_external_strings = 939 v8::Local<v8::Array> one_byte_external_strings =
933 v8::Array::New(CcTest::isolate(), kMaxLength + 1); 940 v8::Array::New(CcTest::isolate(), kMaxLength + 1);
934 v8::Handle<v8::Array> non_one_byte_external_strings = 941 v8::Local<v8::Array> non_one_byte_external_strings =
935 v8::Array::New(CcTest::isolate(), kMaxLength + 1); 942 v8::Array::New(CcTest::isolate(), kMaxLength + 1);
936 943
937 // Generate short one-byte and two-byte external strings. 944 // Generate short one-byte and two-byte external strings.
938 for (int i = 0; i <= kMaxLength; i++) { 945 for (int i = 0; i <= kMaxLength; i++) {
939 char* one_byte = NewArray<char>(i + 1); 946 char* one_byte = NewArray<char>(i + 1);
940 for (int j = 0; j < i; j++) { 947 for (int j = 0; j < i; j++) {
941 one_byte[j] = 'a'; 948 one_byte[j] = 'a';
942 } 949 }
943 // Terminating '\0' is left out on purpose. It is not required for external 950 // Terminating '\0' is left out on purpose. It is not required for external
944 // string data. 951 // string data.
945 OneByteResource* one_byte_resource = new OneByteResource(one_byte, i); 952 OneByteResource* one_byte_resource = new OneByteResource(one_byte, i);
946 v8::Local<v8::String> one_byte_external_string = 953 v8::Local<v8::String> one_byte_external_string =
947 v8::String::NewExternal(CcTest::isolate(), one_byte_resource); 954 v8::String::NewExternalOneByte(CcTest::isolate(), one_byte_resource)
955 .ToLocalChecked();
948 956
949 one_byte_external_strings->Set(v8::Integer::New(CcTest::isolate(), i), 957 one_byte_external_strings->Set(context.local(),
950 one_byte_external_string); 958 v8::Integer::New(CcTest::isolate(), i),
959 one_byte_external_string)
960 .FromJust();
951 uc16* non_one_byte = NewArray<uc16>(i + 1); 961 uc16* non_one_byte = NewArray<uc16>(i + 1);
952 for (int j = 0; j < i; j++) { 962 for (int j = 0; j < i; j++) {
953 non_one_byte[j] = 0x1234; 963 non_one_byte[j] = 0x1234;
954 } 964 }
955 // Terminating '\0' is left out on purpose. It is not required for external 965 // Terminating '\0' is left out on purpose. It is not required for external
956 // string data. 966 // string data.
957 Resource* resource = new Resource(non_one_byte, i); 967 Resource* resource = new Resource(non_one_byte, i);
958 v8::Local<v8::String> non_one_byte_external_string = 968 v8::Local<v8::String> non_one_byte_external_string =
959 v8::String::NewExternal(CcTest::isolate(), resource); 969 v8::String::NewExternalTwoByte(CcTest::isolate(), resource)
960 non_one_byte_external_strings->Set(v8::Integer::New(CcTest::isolate(), i), 970 .ToLocalChecked();
961 non_one_byte_external_string); 971 non_one_byte_external_strings->Set(context.local(),
972 v8::Integer::New(CcTest::isolate(), i),
973 non_one_byte_external_string)
974 .FromJust();
962 } 975 }
963 976
964 // Add the arrays with the short external strings in the global object. 977 // Add the arrays with the short external strings in the global object.
965 v8::Handle<v8::Object> global = context->Global(); 978 v8::Local<v8::Object> global = context->Global();
966 global->Set(v8_str("external_one_byte"), one_byte_external_strings); 979 global->Set(context.local(), v8_str("external_one_byte"),
967 global->Set(v8_str("external_non_one_byte"), non_one_byte_external_strings); 980 one_byte_external_strings)
968 global->Set(v8_str("max_length"), 981 .FromJust();
969 v8::Integer::New(CcTest::isolate(), kMaxLength)); 982 global->Set(context.local(), v8_str("external_non_one_byte"),
983 non_one_byte_external_strings)
984 .FromJust();
985 global->Set(context.local(), v8_str("max_length"),
986 v8::Integer::New(CcTest::isolate(), kMaxLength))
987 .FromJust();
970 988
971 // Add short external one-byte and two-byte strings checking the result. 989 // Add short external one-byte and two-byte strings checking the result.
972 static const char* source = 990 static const char* source =
973 "function test() {" 991 "function test() {"
974 " var one_byte_chars = 'aaaaaaaaaaaaaaaaaaaa';" 992 " var one_byte_chars = 'aaaaaaaaaaaaaaaaaaaa';"
975 " var non_one_byte_chars = " 993 " var non_one_byte_chars = "
976 "'\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1" 994 "'\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1"
977 "234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\" 995 "234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\"
978 "u1234';" // NOLINT 996 "u1234';" // NOLINT
979 " if (one_byte_chars.length != max_length) return 1;" 997 " if (one_byte_chars.length != max_length) return 1;"
(...skipping 25 matching lines...) Expand all
1005 " (external_non_one_byte[j] + non_one_byte[i - j])) return " 1023 " (external_non_one_byte[j] + non_one_byte[i - j])) return "
1006 "11;" 1024 "11;"
1007 " if (non_one_byte[i] !=" 1025 " if (non_one_byte[i] !="
1008 " (non_one_byte[j] + external_non_one_byte[i - j])) return " 1026 " (non_one_byte[j] + external_non_one_byte[i - j])) return "
1009 "12;" 1027 "12;"
1010 " }" 1028 " }"
1011 " }" 1029 " }"
1012 " return 0;" 1030 " return 0;"
1013 "};" 1031 "};"
1014 "test()"; 1032 "test()";
1015 CHECK_EQ(0, CompileRun(source)->Int32Value()); 1033 CHECK_EQ(0, CompileRun(source)->Int32Value(context.local()).FromJust());
1016 } 1034 }
1017 1035
1018 1036
1019 TEST(JSONStringifySliceMadeExternal) { 1037 TEST(JSONStringifySliceMadeExternal) {
1020 CcTest::InitializeVM(); 1038 CcTest::InitializeVM();
1021 // Create a sliced string from a one-byte string. The latter is turned 1039 // Create a sliced string from a one-byte string. The latter is turned
1022 // into a two-byte external string. Check that JSON.stringify works. 1040 // into a two-byte external string. Check that JSON.stringify works.
1023 v8::HandleScope handle_scope(CcTest::isolate()); 1041 v8::HandleScope handle_scope(CcTest::isolate());
1024 v8::Handle<v8::String> underlying = 1042 v8::Local<v8::String> underlying =
1025 CompileRun( 1043 CompileRun(
1026 "var underlying = 'abcdefghijklmnopqrstuvwxyz';" 1044 "var underlying = 'abcdefghijklmnopqrstuvwxyz';"
1027 "underlying")->ToString(CcTest::isolate()); 1045 "underlying")
1028 v8::Handle<v8::String> slice = CompileRun( 1046 ->ToString(CcTest::isolate()->GetCurrentContext())
1029 "var slice = '';" 1047 .ToLocalChecked();
1030 "slice = underlying.slice(1);" 1048 v8::Local<v8::String> slice =
1031 "slice")->ToString(CcTest::isolate()); 1049 CompileRun(
1050 "var slice = '';"
1051 "slice = underlying.slice(1);"
1052 "slice")
1053 ->ToString(CcTest::isolate()->GetCurrentContext())
1054 .ToLocalChecked();
1032 CHECK(v8::Utils::OpenHandle(*slice)->IsSlicedString()); 1055 CHECK(v8::Utils::OpenHandle(*slice)->IsSlicedString());
1033 CHECK(v8::Utils::OpenHandle(*underlying)->IsSeqOneByteString()); 1056 CHECK(v8::Utils::OpenHandle(*underlying)->IsSeqOneByteString());
1034 1057
1035 int length = underlying->Length(); 1058 int length = underlying->Length();
1036 uc16* two_byte = NewArray<uc16>(length + 1); 1059 uc16* two_byte = NewArray<uc16>(length + 1);
1037 underlying->Write(two_byte); 1060 underlying->Write(two_byte);
1038 Resource* resource = new Resource(two_byte, length); 1061 Resource* resource = new Resource(two_byte, length);
1039 CHECK(underlying->MakeExternal(resource)); 1062 CHECK(underlying->MakeExternal(resource));
1040 CHECK(v8::Utils::OpenHandle(*slice)->IsSlicedString()); 1063 CHECK(v8::Utils::OpenHandle(*slice)->IsSlicedString());
1041 CHECK(v8::Utils::OpenHandle(*underlying)->IsExternalTwoByteString()); 1064 CHECK(v8::Utils::OpenHandle(*underlying)->IsExternalTwoByteString());
(...skipping 30 matching lines...) Expand all
1072 Handle<Object> results[] = { isolate->factory()->undefined_value(), 1095 Handle<Object> results[] = { isolate->factory()->undefined_value(),
1073 fortytwo, 1096 fortytwo,
1074 isolate->factory()->undefined_value(), 1097 isolate->factory()->undefined_value(),
1075 isolate->factory()->undefined_value(), 1098 isolate->factory()->undefined_value(),
1076 thirtyseven, 1099 thirtyseven,
1077 fortytwo, 1100 fortytwo,
1078 thirtyseven // Bug yielded 42 here. 1101 thirtyseven // Bug yielded 42 here.
1079 }; 1102 };
1080 1103
1081 const char* line; 1104 const char* line;
1105 v8::Local<v8::Context> context = CcTest::isolate()->GetCurrentContext();
1082 for (int i = 0; (line = lines[i]); i++) { 1106 for (int i = 0; (line = lines[i]); i++) {
1083 printf("%s\n", line); 1107 printf("%s\n", line);
1084 v8::Local<v8::Value> result = v8::Script::Compile( 1108 v8::Local<v8::Value> result =
1085 v8::String::NewFromUtf8(CcTest::isolate(), line))->Run(); 1109 v8::Script::Compile(context,
1110 v8::String::NewFromUtf8(CcTest::isolate(), line,
1111 v8::NewStringType::kNormal)
1112 .ToLocalChecked())
1113 .ToLocalChecked()
1114 ->Run(context)
1115 .ToLocalChecked();
1086 CHECK_EQ(results[i]->IsUndefined(), result->IsUndefined()); 1116 CHECK_EQ(results[i]->IsUndefined(), result->IsUndefined());
1087 CHECK_EQ(results[i]->IsNumber(), result->IsNumber()); 1117 CHECK_EQ(results[i]->IsNumber(), result->IsNumber());
1088 if (result->IsNumber()) { 1118 if (result->IsNumber()) {
1089 int32_t value = 0; 1119 int32_t value = 0;
1090 CHECK(results[i]->ToInt32(&value)); 1120 CHECK(results[i]->ToInt32(&value));
1091 CHECK_EQ(value, result->ToInt32(CcTest::isolate())->Value()); 1121 CHECK_EQ(value, result->ToInt32(context).ToLocalChecked()->Value());
1092 } 1122 }
1093 } 1123 }
1094 } 1124 }
1095 1125
1096 1126
1097 TEST(SliceFromCons) { 1127 TEST(SliceFromCons) {
1098 FLAG_string_slices = true; 1128 FLAG_string_slices = true;
1099 CcTest::InitializeVM(); 1129 CcTest::InitializeVM();
1100 Factory* factory = CcTest::i_isolate()->factory(); 1130 Factory* factory = CcTest::i_isolate()->factory();
1101 v8::HandleScope scope(CcTest::isolate()); 1131 v8::HandleScope scope(CcTest::isolate());
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
1313 CHECK_EQ(0, use_counts[v8::Isolate::kBreakIterator]); 1343 CHECK_EQ(0, use_counts[v8::Isolate::kBreakIterator]);
1314 v8::Local<v8::Value> result = CompileRun( 1344 v8::Local<v8::Value> result = CompileRun(
1315 "(function() {" 1345 "(function() {"
1316 " if (!this.Intl) return 0;" 1346 " if (!this.Intl) return 0;"
1317 " var iterator = Intl.v8BreakIterator(['en']);" 1347 " var iterator = Intl.v8BreakIterator(['en']);"
1318 " iterator.adoptText('Now is the time');" 1348 " iterator.adoptText('Now is the time');"
1319 " iterator.next();" 1349 " iterator.next();"
1320 " return iterator.next();" 1350 " return iterator.next();"
1321 "})();"); 1351 "})();");
1322 CHECK(result->IsNumber()); 1352 CHECK(result->IsNumber());
1323 int uses = result->ToInt32(CcTest::isolate())->Value() == 0 ? 0 : 1; 1353 int uses =
1354 result->ToInt32(context.local()).ToLocalChecked()->Value() == 0 ? 0 : 1;
1324 CHECK_EQ(uses, use_counts[v8::Isolate::kBreakIterator]); 1355 CHECK_EQ(uses, use_counts[v8::Isolate::kBreakIterator]);
1325 // Make sure GC cleans up the break iterator, so we don't get a memory leak 1356 // Make sure GC cleans up the break iterator, so we don't get a memory leak
1326 // reported by ASAN. 1357 // reported by ASAN.
1327 CcTest::isolate()->LowMemoryNotification(); 1358 CcTest::isolate()->LowMemoryNotification();
1328 } 1359 }
1329 1360
1330 1361
1331 TEST(StringReplaceAtomTwoByteResult) { 1362 TEST(StringReplaceAtomTwoByteResult) {
1332 CcTest::InitializeVM(); 1363 CcTest::InitializeVM();
1333 v8::HandleScope scope(CcTest::isolate()); 1364 v8::HandleScope scope(CcTest::isolate());
1334 LocalContext context; 1365 LocalContext context;
1335 v8::Local<v8::Value> result = CompileRun( 1366 v8::Local<v8::Value> result = CompileRun(
1336 "var subject = 'one_byte~only~string~'; " 1367 "var subject = 'one_byte~only~string~'; "
1337 "var replace = '\x80'; " 1368 "var replace = '\x80'; "
1338 "subject.replace(/~/g, replace); "); 1369 "subject.replace(/~/g, replace); ");
1339 CHECK(result->IsString()); 1370 CHECK(result->IsString());
1340 Handle<String> string = v8::Utils::OpenHandle(v8::String::Cast(*result)); 1371 Handle<String> string = v8::Utils::OpenHandle(v8::String::Cast(*result));
1341 CHECK(string->IsSeqTwoByteString()); 1372 CHECK(string->IsSeqTwoByteString());
1342 1373
1343 v8::Local<v8::String> expected = v8_str("one_byte\x80only\x80string\x80"); 1374 v8::Local<v8::String> expected = v8_str("one_byte\x80only\x80string\x80");
1344 CHECK(expected->Equals(result)); 1375 CHECK(expected->Equals(context.local(), result).FromJust());
1345 } 1376 }
1346 1377
1347 1378
1348 TEST(IsAscii) { 1379 TEST(IsAscii) {
1349 CHECK(String::IsAscii(static_cast<char*>(NULL), 0)); 1380 CHECK(String::IsAscii(static_cast<char*>(NULL), 0));
1350 CHECK(String::IsOneByte(static_cast<uc16*>(NULL), 0)); 1381 CHECK(String::IsOneByte(static_cast<uc16*>(NULL), 0));
1351 } 1382 }
1352 1383
1353 1384
1354 1385
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1473 Handle<String> arg0 = isolate->factory()->NewStringFromAsciiChecked("arg0"); 1504 Handle<String> arg0 = isolate->factory()->NewStringFromAsciiChecked("arg0");
1474 Handle<String> arg1 = isolate->factory()->NewStringFromAsciiChecked("arg1"); 1505 Handle<String> arg1 = isolate->factory()->NewStringFromAsciiChecked("arg1");
1475 Handle<String> arg2 = isolate->factory()->NewStringFromAsciiChecked("arg2"); 1506 Handle<String> arg2 = isolate->factory()->NewStringFromAsciiChecked("arg2");
1476 Handle<String> result = 1507 Handle<String> result =
1477 MessageTemplate::FormatMessage(MessageTemplate::kPropertyNotFunction, 1508 MessageTemplate::FormatMessage(MessageTemplate::kPropertyNotFunction,
1478 arg0, arg1, arg2).ToHandleChecked(); 1509 arg0, arg1, arg2).ToHandleChecked();
1479 Handle<String> expected = isolate->factory()->NewStringFromAsciiChecked( 1510 Handle<String> expected = isolate->factory()->NewStringFromAsciiChecked(
1480 "'arg0' returned for property 'arg1' of object 'arg2' is not a function"); 1511 "'arg0' returned for property 'arg1' of object 'arg2' is not a function");
1481 CHECK(String::Equals(result, expected)); 1512 CHECK(String::Equals(result, expected));
1482 } 1513 }
OLDNEW
« no previous file with comments | « test/cctest/test-inobject-slack-tracking.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698