OLD | NEW |
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 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 "Fun2(new Cons1(), new Cons2()) == '[object Cons1],[object Cons2]'"); | 282 "Fun2(new Cons1(), new Cons2()) == '[object Cons1],[object Cons2]'"); |
283 CHECK(value8->IsTrue()); | 283 CHECK(value8->IsTrue()); |
284 } | 284 } |
285 | 285 |
286 | 286 |
287 THREADED_TEST(HulIgennem) { | 287 THREADED_TEST(HulIgennem) { |
288 LocalContext env; | 288 LocalContext env; |
289 v8::HandleScope scope(env->GetIsolate()); | 289 v8::HandleScope scope(env->GetIsolate()); |
290 v8::Handle<v8::Primitive> undef = v8::Undefined(); | 290 v8::Handle<v8::Primitive> undef = v8::Undefined(); |
291 Local<String> undef_str = undef->ToString(); | 291 Local<String> undef_str = undef->ToString(); |
292 char* value = i::NewArray<char>(undef_str->Length() + 1); | 292 char* value = i::NewArray<char>(undef_str->Utf8Length() + 1); |
293 undef_str->WriteAscii(value); | 293 undef_str->WriteUtf8(value); |
294 CHECK_EQ(0, strcmp(value, "undefined")); | 294 CHECK_EQ(0, strcmp(value, "undefined")); |
295 i::DeleteArray(value); | 295 i::DeleteArray(value); |
296 } | 296 } |
297 | 297 |
298 | 298 |
299 THREADED_TEST(Access) { | 299 THREADED_TEST(Access) { |
300 LocalContext env; | 300 LocalContext env; |
301 v8::HandleScope scope(env->GetIsolate()); | 301 v8::HandleScope scope(env->GetIsolate()); |
302 Local<v8::Object> obj = v8::Object::New(); | 302 Local<v8::Object> obj = v8::Object::New(); |
303 Local<Value> foo_before = obj->Get(v8_str("foo")); | 303 Local<Value> foo_before = obj->Get(v8_str("foo")); |
(...skipping 6231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6535 len = right_tree->WriteUtf8(utf8buf, utf8_expected, &charlen); | 6535 len = right_tree->WriteUtf8(utf8buf, utf8_expected, &charlen); |
6536 CHECK_EQ(utf8_expected, len); | 6536 CHECK_EQ(utf8_expected, len); |
6537 CHECK_EQ(0xd800 / kStride, charlen); | 6537 CHECK_EQ(0xd800 / kStride, charlen); |
6538 CHECK_EQ(0xed, static_cast<unsigned char>(utf8buf[0])); | 6538 CHECK_EQ(0xed, static_cast<unsigned char>(utf8buf[0])); |
6539 CHECK_EQ(0x9f, static_cast<unsigned char>(utf8buf[1])); | 6539 CHECK_EQ(0x9f, static_cast<unsigned char>(utf8buf[1])); |
6540 CHECK_EQ(0xc0 - kStride, static_cast<unsigned char>(utf8buf[2])); | 6540 CHECK_EQ(0xc0 - kStride, static_cast<unsigned char>(utf8buf[2])); |
6541 CHECK_EQ(1, utf8buf[utf8_expected]); | 6541 CHECK_EQ(1, utf8buf[utf8_expected]); |
6542 | 6542 |
6543 memset(buf, 0x1, sizeof(buf)); | 6543 memset(buf, 0x1, sizeof(buf)); |
6544 memset(wbuf, 0x1, sizeof(wbuf)); | 6544 memset(wbuf, 0x1, sizeof(wbuf)); |
6545 len = str->WriteAscii(buf); | 6545 len = str->WriteOneByte(reinterpret_cast<uint8_t*>(buf)); |
6546 CHECK_EQ(5, len); | 6546 CHECK_EQ(5, len); |
6547 len = str->Write(wbuf); | 6547 len = str->Write(wbuf); |
6548 CHECK_EQ(5, len); | 6548 CHECK_EQ(5, len); |
6549 CHECK_EQ(0, strcmp("abcde", buf)); | 6549 CHECK_EQ(0, strcmp("abcde", buf)); |
6550 uint16_t answer1[] = {'a', 'b', 'c', 'd', 'e', '\0'}; | 6550 uint16_t answer1[] = {'a', 'b', 'c', 'd', 'e', '\0'}; |
6551 CHECK_EQ(0, StrCmp16(answer1, wbuf)); | 6551 CHECK_EQ(0, StrCmp16(answer1, wbuf)); |
6552 | 6552 |
6553 memset(buf, 0x1, sizeof(buf)); | 6553 memset(buf, 0x1, sizeof(buf)); |
6554 memset(wbuf, 0x1, sizeof(wbuf)); | 6554 memset(wbuf, 0x1, sizeof(wbuf)); |
6555 len = str->WriteAscii(buf, 0, 4); | 6555 len = str->WriteOneByte(reinterpret_cast<uint8_t*>(buf), 0, 4); |
6556 CHECK_EQ(4, len); | 6556 CHECK_EQ(4, len); |
6557 len = str->Write(wbuf, 0, 4); | 6557 len = str->Write(wbuf, 0, 4); |
6558 CHECK_EQ(4, len); | 6558 CHECK_EQ(4, len); |
6559 CHECK_EQ(0, strncmp("abcd\1", buf, 5)); | 6559 CHECK_EQ(0, strncmp("abcd\1", buf, 5)); |
6560 uint16_t answer2[] = {'a', 'b', 'c', 'd', 0x101}; | 6560 uint16_t answer2[] = {'a', 'b', 'c', 'd', 0x101}; |
6561 CHECK_EQ(0, StrNCmp16(answer2, wbuf, 5)); | 6561 CHECK_EQ(0, StrNCmp16(answer2, wbuf, 5)); |
6562 | 6562 |
6563 memset(buf, 0x1, sizeof(buf)); | 6563 memset(buf, 0x1, sizeof(buf)); |
6564 memset(wbuf, 0x1, sizeof(wbuf)); | 6564 memset(wbuf, 0x1, sizeof(wbuf)); |
6565 len = str->WriteAscii(buf, 0, 5); | 6565 len = str->WriteOneByte(reinterpret_cast<uint8_t*>(buf), 0, 5); |
6566 CHECK_EQ(5, len); | 6566 CHECK_EQ(5, len); |
6567 len = str->Write(wbuf, 0, 5); | 6567 len = str->Write(wbuf, 0, 5); |
6568 CHECK_EQ(5, len); | 6568 CHECK_EQ(5, len); |
6569 CHECK_EQ(0, strncmp("abcde\1", buf, 6)); | 6569 CHECK_EQ(0, strncmp("abcde\1", buf, 6)); |
6570 uint16_t answer3[] = {'a', 'b', 'c', 'd', 'e', 0x101}; | 6570 uint16_t answer3[] = {'a', 'b', 'c', 'd', 'e', 0x101}; |
6571 CHECK_EQ(0, StrNCmp16(answer3, wbuf, 6)); | 6571 CHECK_EQ(0, StrNCmp16(answer3, wbuf, 6)); |
6572 | 6572 |
6573 memset(buf, 0x1, sizeof(buf)); | 6573 memset(buf, 0x1, sizeof(buf)); |
6574 memset(wbuf, 0x1, sizeof(wbuf)); | 6574 memset(wbuf, 0x1, sizeof(wbuf)); |
6575 len = str->WriteAscii(buf, 0, 6); | 6575 len = str->WriteOneByte(reinterpret_cast<uint8_t*>(buf), 0, 6); |
6576 CHECK_EQ(5, len); | 6576 CHECK_EQ(5, len); |
6577 len = str->Write(wbuf, 0, 6); | 6577 len = str->Write(wbuf, 0, 6); |
6578 CHECK_EQ(5, len); | 6578 CHECK_EQ(5, len); |
6579 CHECK_EQ(0, strcmp("abcde", buf)); | 6579 CHECK_EQ(0, strcmp("abcde", buf)); |
6580 uint16_t answer4[] = {'a', 'b', 'c', 'd', 'e', '\0'}; | 6580 uint16_t answer4[] = {'a', 'b', 'c', 'd', 'e', '\0'}; |
6581 CHECK_EQ(0, StrCmp16(answer4, wbuf)); | 6581 CHECK_EQ(0, StrCmp16(answer4, wbuf)); |
6582 | 6582 |
6583 memset(buf, 0x1, sizeof(buf)); | 6583 memset(buf, 0x1, sizeof(buf)); |
6584 memset(wbuf, 0x1, sizeof(wbuf)); | 6584 memset(wbuf, 0x1, sizeof(wbuf)); |
6585 len = str->WriteAscii(buf, 4, -1); | 6585 len = str->WriteOneByte(reinterpret_cast<uint8_t*>(buf), 4, -1); |
6586 CHECK_EQ(1, len); | 6586 CHECK_EQ(1, len); |
6587 len = str->Write(wbuf, 4, -1); | 6587 len = str->Write(wbuf, 4, -1); |
6588 CHECK_EQ(1, len); | 6588 CHECK_EQ(1, len); |
6589 CHECK_EQ(0, strcmp("e", buf)); | 6589 CHECK_EQ(0, strcmp("e", buf)); |
6590 uint16_t answer5[] = {'e', '\0'}; | 6590 uint16_t answer5[] = {'e', '\0'}; |
6591 CHECK_EQ(0, StrCmp16(answer5, wbuf)); | 6591 CHECK_EQ(0, StrCmp16(answer5, wbuf)); |
6592 | 6592 |
6593 memset(buf, 0x1, sizeof(buf)); | 6593 memset(buf, 0x1, sizeof(buf)); |
6594 memset(wbuf, 0x1, sizeof(wbuf)); | 6594 memset(wbuf, 0x1, sizeof(wbuf)); |
6595 len = str->WriteAscii(buf, 4, 6); | 6595 len = str->WriteOneByte(reinterpret_cast<uint8_t*>(buf), 4, 6); |
6596 CHECK_EQ(1, len); | 6596 CHECK_EQ(1, len); |
6597 len = str->Write(wbuf, 4, 6); | 6597 len = str->Write(wbuf, 4, 6); |
6598 CHECK_EQ(1, len); | 6598 CHECK_EQ(1, len); |
6599 CHECK_EQ(0, strcmp("e", buf)); | 6599 CHECK_EQ(0, strcmp("e", buf)); |
6600 CHECK_EQ(0, StrCmp16(answer5, wbuf)); | 6600 CHECK_EQ(0, StrCmp16(answer5, wbuf)); |
6601 | 6601 |
6602 memset(buf, 0x1, sizeof(buf)); | 6602 memset(buf, 0x1, sizeof(buf)); |
6603 memset(wbuf, 0x1, sizeof(wbuf)); | 6603 memset(wbuf, 0x1, sizeof(wbuf)); |
6604 len = str->WriteAscii(buf, 4, 1); | 6604 len = str->WriteOneByte(reinterpret_cast<uint8_t*>(buf), 4, 1); |
6605 CHECK_EQ(1, len); | 6605 CHECK_EQ(1, len); |
6606 len = str->Write(wbuf, 4, 1); | 6606 len = str->Write(wbuf, 4, 1); |
6607 CHECK_EQ(1, len); | 6607 CHECK_EQ(1, len); |
6608 CHECK_EQ(0, strncmp("e\1", buf, 2)); | 6608 CHECK_EQ(0, strncmp("e\1", buf, 2)); |
6609 uint16_t answer6[] = {'e', 0x101}; | 6609 uint16_t answer6[] = {'e', 0x101}; |
6610 CHECK_EQ(0, StrNCmp16(answer6, wbuf, 2)); | 6610 CHECK_EQ(0, StrNCmp16(answer6, wbuf, 2)); |
6611 | 6611 |
6612 memset(buf, 0x1, sizeof(buf)); | 6612 memset(buf, 0x1, sizeof(buf)); |
6613 memset(wbuf, 0x1, sizeof(wbuf)); | 6613 memset(wbuf, 0x1, sizeof(wbuf)); |
6614 len = str->WriteAscii(buf, 3, 1); | 6614 len = str->WriteOneByte(reinterpret_cast<uint8_t*>(buf), 3, 1); |
6615 CHECK_EQ(1, len); | 6615 CHECK_EQ(1, len); |
6616 len = str->Write(wbuf, 3, 1); | 6616 len = str->Write(wbuf, 3, 1); |
6617 CHECK_EQ(1, len); | 6617 CHECK_EQ(1, len); |
6618 CHECK_EQ(0, strncmp("d\1", buf, 2)); | 6618 CHECK_EQ(0, strncmp("d\1", buf, 2)); |
6619 uint16_t answer7[] = {'d', 0x101}; | 6619 uint16_t answer7[] = {'d', 0x101}; |
6620 CHECK_EQ(0, StrNCmp16(answer7, wbuf, 2)); | 6620 CHECK_EQ(0, StrNCmp16(answer7, wbuf, 2)); |
6621 | 6621 |
6622 memset(wbuf, 0x1, sizeof(wbuf)); | 6622 memset(wbuf, 0x1, sizeof(wbuf)); |
6623 wbuf[5] = 'X'; | 6623 wbuf[5] = 'X'; |
6624 len = str->Write(wbuf, 0, 6, String::NO_NULL_TERMINATION); | 6624 len = str->Write(wbuf, 0, 6, String::NO_NULL_TERMINATION); |
6625 CHECK_EQ(5, len); | 6625 CHECK_EQ(5, len); |
6626 CHECK_EQ('X', wbuf[5]); | 6626 CHECK_EQ('X', wbuf[5]); |
6627 uint16_t answer8a[] = {'a', 'b', 'c', 'd', 'e'}; | 6627 uint16_t answer8a[] = {'a', 'b', 'c', 'd', 'e'}; |
6628 uint16_t answer8b[] = {'a', 'b', 'c', 'd', 'e', '\0'}; | 6628 uint16_t answer8b[] = {'a', 'b', 'c', 'd', 'e', '\0'}; |
6629 CHECK_EQ(0, StrNCmp16(answer8a, wbuf, 5)); | 6629 CHECK_EQ(0, StrNCmp16(answer8a, wbuf, 5)); |
6630 CHECK_NE(0, StrCmp16(answer8b, wbuf)); | 6630 CHECK_NE(0, StrCmp16(answer8b, wbuf)); |
6631 wbuf[5] = '\0'; | 6631 wbuf[5] = '\0'; |
6632 CHECK_EQ(0, StrCmp16(answer8b, wbuf)); | 6632 CHECK_EQ(0, StrCmp16(answer8b, wbuf)); |
6633 | 6633 |
6634 memset(buf, 0x1, sizeof(buf)); | 6634 memset(buf, 0x1, sizeof(buf)); |
6635 buf[5] = 'X'; | 6635 buf[5] = 'X'; |
6636 len = str->WriteAscii(buf, 0, 6, String::NO_NULL_TERMINATION); | 6636 len = str->WriteOneByte(reinterpret_cast<uint8_t*>(buf), |
| 6637 0, |
| 6638 6, |
| 6639 String::NO_NULL_TERMINATION); |
6637 CHECK_EQ(5, len); | 6640 CHECK_EQ(5, len); |
6638 CHECK_EQ('X', buf[5]); | 6641 CHECK_EQ('X', buf[5]); |
6639 CHECK_EQ(0, strncmp("abcde", buf, 5)); | 6642 CHECK_EQ(0, strncmp("abcde", buf, 5)); |
6640 CHECK_NE(0, strcmp("abcde", buf)); | 6643 CHECK_NE(0, strcmp("abcde", buf)); |
6641 buf[5] = '\0'; | 6644 buf[5] = '\0'; |
6642 CHECK_EQ(0, strcmp("abcde", buf)); | 6645 CHECK_EQ(0, strcmp("abcde", buf)); |
6643 | 6646 |
6644 memset(utf8buf, 0x1, sizeof(utf8buf)); | 6647 memset(utf8buf, 0x1, sizeof(utf8buf)); |
6645 utf8buf[8] = 'X'; | 6648 utf8buf[8] = 'X'; |
6646 len = str2->WriteUtf8(utf8buf, sizeof(utf8buf), &charlen, | 6649 len = str2->WriteUtf8(utf8buf, sizeof(utf8buf), &charlen, |
(...skipping 10 matching lines...) Expand all Loading... |
6657 utf8buf[5] = 'X'; | 6660 utf8buf[5] = 'X'; |
6658 len = str->WriteUtf8(utf8buf, sizeof(utf8buf), &charlen, | 6661 len = str->WriteUtf8(utf8buf, sizeof(utf8buf), &charlen, |
6659 String::NO_NULL_TERMINATION); | 6662 String::NO_NULL_TERMINATION); |
6660 CHECK_EQ(5, len); | 6663 CHECK_EQ(5, len); |
6661 CHECK_EQ('X', utf8buf[5]); // Test that the sixth character is untouched. | 6664 CHECK_EQ('X', utf8buf[5]); // Test that the sixth character is untouched. |
6662 CHECK_EQ(5, charlen); | 6665 CHECK_EQ(5, charlen); |
6663 utf8buf[5] = '\0'; | 6666 utf8buf[5] = '\0'; |
6664 CHECK_EQ(0, strcmp(utf8buf, "abcde")); | 6667 CHECK_EQ(0, strcmp(utf8buf, "abcde")); |
6665 | 6668 |
6666 memset(buf, 0x1, sizeof(buf)); | 6669 memset(buf, 0x1, sizeof(buf)); |
6667 len = str3->WriteAscii(buf); | 6670 len = str3->WriteOneByte(reinterpret_cast<uint8_t*>(buf)); |
6668 CHECK_EQ(7, len); | |
6669 CHECK_EQ(0, strcmp("abc def", buf)); | |
6670 | |
6671 memset(buf, 0x1, sizeof(buf)); | |
6672 len = str3->WriteAscii(buf, 0, -1, String::PRESERVE_ASCII_NULL); | |
6673 CHECK_EQ(7, len); | 6671 CHECK_EQ(7, len); |
6674 CHECK_EQ(0, strcmp("abc", buf)); | 6672 CHECK_EQ(0, strcmp("abc", buf)); |
6675 CHECK_EQ(0, buf[3]); | 6673 CHECK_EQ(0, buf[3]); |
6676 CHECK_EQ(0, strcmp("def", buf + 4)); | 6674 CHECK_EQ(0, strcmp("def", buf + 4)); |
6677 | 6675 |
6678 CHECK_EQ(0, str->WriteAscii(NULL, 0, 0, String::NO_NULL_TERMINATION)); | 6676 CHECK_EQ(0, str->WriteOneByte(NULL, 0, 0, String::NO_NULL_TERMINATION)); |
6679 CHECK_EQ(0, str->WriteUtf8(NULL, 0, 0, String::NO_NULL_TERMINATION)); | 6677 CHECK_EQ(0, str->WriteUtf8(NULL, 0, 0, String::NO_NULL_TERMINATION)); |
6680 CHECK_EQ(0, str->Write(NULL, 0, 0, String::NO_NULL_TERMINATION)); | 6678 CHECK_EQ(0, str->Write(NULL, 0, 0, String::NO_NULL_TERMINATION)); |
6681 } | 6679 } |
6682 | 6680 |
6683 | 6681 |
6684 static void Utf16Helper( | 6682 static void Utf16Helper( |
6685 LocalContext& context, | 6683 LocalContext& context, |
6686 const char* name, | 6684 const char* name, |
6687 const char* lengths_name, | 6685 const char* lengths_name, |
6688 int len) { | 6686 int len) { |
(...skipping 1542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8231 static bool NamedAccessFlatten(Local<v8::Object> global, | 8229 static bool NamedAccessFlatten(Local<v8::Object> global, |
8232 Local<Value> name, | 8230 Local<Value> name, |
8233 v8::AccessType type, | 8231 v8::AccessType type, |
8234 Local<Value> data) { | 8232 Local<Value> data) { |
8235 char buf[100]; | 8233 char buf[100]; |
8236 int len; | 8234 int len; |
8237 | 8235 |
8238 CHECK(name->IsString()); | 8236 CHECK(name->IsString()); |
8239 | 8237 |
8240 memset(buf, 0x1, sizeof(buf)); | 8238 memset(buf, 0x1, sizeof(buf)); |
8241 len = name.As<String>()->WriteAscii(buf); | 8239 len = name.As<String>()->WriteOneByte(reinterpret_cast<uint8_t*>(buf)); |
8242 CHECK_EQ(4, len); | 8240 CHECK_EQ(4, len); |
8243 | 8241 |
8244 uint16_t buf2[100]; | 8242 uint16_t buf2[100]; |
8245 | 8243 |
8246 memset(buf, 0x1, sizeof(buf)); | 8244 memset(buf, 0x1, sizeof(buf)); |
8247 len = name.As<String>()->Write(buf2); | 8245 len = name.As<String>()->Write(buf2); |
8248 CHECK_EQ(4, len); | 8246 CHECK_EQ(4, len); |
8249 | 8247 |
8250 return true; | 8248 return true; |
8251 } | 8249 } |
(...skipping 10605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
18857 i::Semaphore* sem_; | 18855 i::Semaphore* sem_; |
18858 volatile int sem_value_; | 18856 volatile int sem_value_; |
18859 }; | 18857 }; |
18860 | 18858 |
18861 | 18859 |
18862 THREADED_TEST(SemaphoreInterruption) { | 18860 THREADED_TEST(SemaphoreInterruption) { |
18863 ThreadInterruptTest().RunTest(); | 18861 ThreadInterruptTest().RunTest(); |
18864 } | 18862 } |
18865 | 18863 |
18866 #endif // WIN32 | 18864 #endif // WIN32 |
OLD | NEW |