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

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

Issue 559913002: Rename ascii to one-byte where applicable. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 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
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 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 i::PreParser preparser(&scanner, &log, stack_limit); 172 i::PreParser preparser(&scanner, &log, stack_limit);
173 preparser.set_allow_lazy(true); 173 preparser.set_allow_lazy(true);
174 i::PreParser::PreParseResult result = preparser.PreParseProgram(); 174 i::PreParser::PreParseResult result = preparser.PreParseProgram();
175 // Even in the case of a syntax error, kPreParseSuccess is returned. 175 // Even in the case of a syntax error, kPreParseSuccess is returned.
176 CHECK_EQ(i::PreParser::kPreParseSuccess, result); 176 CHECK_EQ(i::PreParser::kPreParseSuccess, result);
177 CHECK(log.HasError()); 177 CHECK(log.HasError());
178 } 178 }
179 } 179 }
180 180
181 181
182 class ScriptResource : public v8::String::ExternalAsciiStringResource { 182 class ScriptResource : public v8::String::ExternalOneByteStringResource {
183 public: 183 public:
184 ScriptResource(const char* data, size_t length) 184 ScriptResource(const char* data, size_t length)
185 : data_(data), length_(length) { } 185 : data_(data), length_(length) { }
186 186
187 const char* data() const { return data_; } 187 const char* data() const { return data_; }
188 size_t length() const { return length_; } 188 size_t length() const { return length_; }
189 189
190 private: 190 private:
191 const char* data_; 191 const char* data_;
192 size_t length_; 192 size_t length_;
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 return length_; 517 return length_;
518 } 518 }
519 private: 519 private:
520 uint16_t* data_; 520 uint16_t* data_;
521 size_t length_; 521 size_t length_;
522 }; 522 };
523 523
524 524
525 #define CHECK_EQU(v1, v2) CHECK_EQ(static_cast<int>(v1), static_cast<int>(v2)) 525 #define CHECK_EQU(v1, v2) CHECK_EQ(static_cast<int>(v1), static_cast<int>(v2))
526 526
527 void TestCharacterStream(const char* ascii_source, 527 void TestCharacterStream(const char* one_byte_source, unsigned length,
528 unsigned length, 528 unsigned start = 0, unsigned end = 0) {
529 unsigned start = 0,
530 unsigned end = 0) {
531 if (end == 0) end = length; 529 if (end == 0) end = length;
532 unsigned sub_length = end - start; 530 unsigned sub_length = end - start;
533 i::Isolate* isolate = CcTest::i_isolate(); 531 i::Isolate* isolate = CcTest::i_isolate();
534 i::Factory* factory = isolate->factory(); 532 i::Factory* factory = isolate->factory();
535 i::HandleScope test_scope(isolate); 533 i::HandleScope test_scope(isolate);
536 i::SmartArrayPointer<i::uc16> uc16_buffer(new i::uc16[length]); 534 i::SmartArrayPointer<i::uc16> uc16_buffer(new i::uc16[length]);
537 for (unsigned i = 0; i < length; i++) { 535 for (unsigned i = 0; i < length; i++) {
538 uc16_buffer[i] = static_cast<i::uc16>(ascii_source[i]); 536 uc16_buffer[i] = static_cast<i::uc16>(one_byte_source[i]);
539 } 537 }
540 i::Vector<const char> ascii_vector(ascii_source, static_cast<int>(length)); 538 i::Vector<const char> one_byte_vector(one_byte_source,
541 i::Handle<i::String> ascii_string = 539 static_cast<int>(length));
542 factory->NewStringFromAscii(ascii_vector).ToHandleChecked(); 540 i::Handle<i::String> one_byte_string =
541 factory->NewStringFromAscii(one_byte_vector).ToHandleChecked();
543 TestExternalResource resource(uc16_buffer.get(), length); 542 TestExternalResource resource(uc16_buffer.get(), length);
544 i::Handle<i::String> uc16_string( 543 i::Handle<i::String> uc16_string(
545 factory->NewExternalStringFromTwoByte(&resource).ToHandleChecked()); 544 factory->NewExternalStringFromTwoByte(&resource).ToHandleChecked());
546 545
547 i::ExternalTwoByteStringUtf16CharacterStream uc16_stream( 546 i::ExternalTwoByteStringUtf16CharacterStream uc16_stream(
548 i::Handle<i::ExternalTwoByteString>::cast(uc16_string), start, end); 547 i::Handle<i::ExternalTwoByteString>::cast(uc16_string), start, end);
549 i::GenericStringUtf16CharacterStream string_stream(ascii_string, start, end); 548 i::GenericStringUtf16CharacterStream string_stream(one_byte_string, start,
549 end);
550 i::Utf8ToUtf16CharacterStream utf8_stream( 550 i::Utf8ToUtf16CharacterStream utf8_stream(
551 reinterpret_cast<const i::byte*>(ascii_source), end); 551 reinterpret_cast<const i::byte*>(one_byte_source), end);
552 utf8_stream.SeekForward(start); 552 utf8_stream.SeekForward(start);
553 553
554 unsigned i = start; 554 unsigned i = start;
555 while (i < end) { 555 while (i < end) {
556 // Read streams one char at a time 556 // Read streams one char at a time
557 CHECK_EQU(i, uc16_stream.pos()); 557 CHECK_EQU(i, uc16_stream.pos());
558 CHECK_EQU(i, string_stream.pos()); 558 CHECK_EQU(i, string_stream.pos());
559 CHECK_EQU(i, utf8_stream.pos()); 559 CHECK_EQU(i, utf8_stream.pos());
560 int32_t c0 = ascii_source[i]; 560 int32_t c0 = one_byte_source[i];
561 int32_t c1 = uc16_stream.Advance(); 561 int32_t c1 = uc16_stream.Advance();
562 int32_t c2 = string_stream.Advance(); 562 int32_t c2 = string_stream.Advance();
563 int32_t c3 = utf8_stream.Advance(); 563 int32_t c3 = utf8_stream.Advance();
564 i++; 564 i++;
565 CHECK_EQ(c0, c1); 565 CHECK_EQ(c0, c1);
566 CHECK_EQ(c0, c2); 566 CHECK_EQ(c0, c2);
567 CHECK_EQ(c0, c3); 567 CHECK_EQ(c0, c3);
568 CHECK_EQU(i, uc16_stream.pos()); 568 CHECK_EQU(i, uc16_stream.pos());
569 CHECK_EQU(i, string_stream.pos()); 569 CHECK_EQU(i, string_stream.pos());
570 CHECK_EQU(i, utf8_stream.pos()); 570 CHECK_EQU(i, utf8_stream.pos());
571 } 571 }
572 while (i > start + sub_length / 4) { 572 while (i > start + sub_length / 4) {
573 // Pushback, re-read, pushback again. 573 // Pushback, re-read, pushback again.
574 int32_t c0 = ascii_source[i - 1]; 574 int32_t c0 = one_byte_source[i - 1];
575 CHECK_EQU(i, uc16_stream.pos()); 575 CHECK_EQU(i, uc16_stream.pos());
576 CHECK_EQU(i, string_stream.pos()); 576 CHECK_EQU(i, string_stream.pos());
577 CHECK_EQU(i, utf8_stream.pos()); 577 CHECK_EQU(i, utf8_stream.pos());
578 uc16_stream.PushBack(c0); 578 uc16_stream.PushBack(c0);
579 string_stream.PushBack(c0); 579 string_stream.PushBack(c0);
580 utf8_stream.PushBack(c0); 580 utf8_stream.PushBack(c0);
581 i--; 581 i--;
582 CHECK_EQU(i, uc16_stream.pos()); 582 CHECK_EQU(i, uc16_stream.pos());
583 CHECK_EQU(i, string_stream.pos()); 583 CHECK_EQU(i, string_stream.pos());
584 CHECK_EQU(i, utf8_stream.pos()); 584 CHECK_EQU(i, utf8_stream.pos());
(...skipping 22 matching lines...) Expand all
607 i = halfway; 607 i = halfway;
608 CHECK_EQU(i, uc16_stream.pos()); 608 CHECK_EQU(i, uc16_stream.pos());
609 CHECK_EQU(i, string_stream.pos()); 609 CHECK_EQU(i, string_stream.pos());
610 CHECK_EQU(i, utf8_stream.pos()); 610 CHECK_EQU(i, utf8_stream.pos());
611 611
612 while (i < end) { 612 while (i < end) {
613 // Read streams one char at a time 613 // Read streams one char at a time
614 CHECK_EQU(i, uc16_stream.pos()); 614 CHECK_EQU(i, uc16_stream.pos());
615 CHECK_EQU(i, string_stream.pos()); 615 CHECK_EQU(i, string_stream.pos());
616 CHECK_EQU(i, utf8_stream.pos()); 616 CHECK_EQU(i, utf8_stream.pos());
617 int32_t c0 = ascii_source[i]; 617 int32_t c0 = one_byte_source[i];
618 int32_t c1 = uc16_stream.Advance(); 618 int32_t c1 = uc16_stream.Advance();
619 int32_t c2 = string_stream.Advance(); 619 int32_t c2 = string_stream.Advance();
620 int32_t c3 = utf8_stream.Advance(); 620 int32_t c3 = utf8_stream.Advance();
621 i++; 621 i++;
622 CHECK_EQ(c0, c1); 622 CHECK_EQ(c0, c1);
623 CHECK_EQ(c0, c2); 623 CHECK_EQ(c0, c2);
624 CHECK_EQ(c0, c3); 624 CHECK_EQ(c0, c3);
625 CHECK_EQU(i, uc16_stream.pos()); 625 CHECK_EQU(i, uc16_stream.pos());
626 CHECK_EQU(i, string_stream.pos()); 626 CHECK_EQU(i, string_stream.pos());
627 CHECK_EQU(i, utf8_stream.pos()); 627 CHECK_EQU(i, utf8_stream.pos());
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 CHECK(scanner.ScanRegExpPattern(start == i::Token::ASSIGN_DIV)); 803 CHECK(scanner.ScanRegExpPattern(start == i::Token::ASSIGN_DIV));
804 scanner.Next(); // Current token is now the regexp literal. 804 scanner.Next(); // Current token is now the regexp literal.
805 i::Zone zone(CcTest::i_isolate()); 805 i::Zone zone(CcTest::i_isolate());
806 i::AstValueFactory ast_value_factory(&zone, 806 i::AstValueFactory ast_value_factory(&zone,
807 CcTest::i_isolate()->heap()->HashSeed()); 807 CcTest::i_isolate()->heap()->HashSeed());
808 ast_value_factory.Internalize(CcTest::i_isolate()); 808 ast_value_factory.Internalize(CcTest::i_isolate());
809 i::Handle<i::String> val = 809 i::Handle<i::String> val =
810 scanner.CurrentSymbol(&ast_value_factory)->string(); 810 scanner.CurrentSymbol(&ast_value_factory)->string();
811 i::DisallowHeapAllocation no_alloc; 811 i::DisallowHeapAllocation no_alloc;
812 i::String::FlatContent content = val->GetFlatContent(); 812 i::String::FlatContent content = val->GetFlatContent();
813 CHECK(content.IsAscii()); 813 CHECK(content.IsOneByte());
814 i::Vector<const uint8_t> actual = content.ToOneByteVector(); 814 i::Vector<const uint8_t> actual = content.ToOneByteVector();
815 for (int i = 0; i < actual.length(); i++) { 815 for (int i = 0; i < actual.length(); i++) {
816 CHECK_NE('\0', expected[i]); 816 CHECK_NE('\0', expected[i]);
817 CHECK_EQ(expected[i], actual[i]); 817 CHECK_EQ(expected[i], actual[i]);
818 } 818 }
819 } 819 }
820 820
821 821
822 TEST(RegExpScanning) { 822 TEST(RegExpScanning) {
823 v8::V8::Initialize(); 823 v8::V8::Initialize();
(...skipping 1964 matching lines...) Expand 10 before | Expand all | Expand 10 after
2788 // Tests function name inferring in cases where some parts of the inferred 2788 // Tests function name inferring in cases where some parts of the inferred
2789 // function name are two-byte strings. 2789 // function name are two-byte strings.
2790 i::FLAG_allow_natives_syntax = true; 2790 i::FLAG_allow_natives_syntax = true;
2791 v8::Isolate* isolate = CcTest::isolate(); 2791 v8::Isolate* isolate = CcTest::isolate();
2792 v8::HandleScope scope(isolate); 2792 v8::HandleScope scope(isolate);
2793 LocalContext env; 2793 LocalContext env;
2794 uint16_t* two_byte_source = AsciiToTwoByteString( 2794 uint16_t* two_byte_source = AsciiToTwoByteString(
2795 "var obj1 = { oXj2 : { foo1: function() {} } }; " 2795 "var obj1 = { oXj2 : { foo1: function() {} } }; "
2796 "%FunctionGetInferredName(obj1.oXj2.foo1)"); 2796 "%FunctionGetInferredName(obj1.oXj2.foo1)");
2797 uint16_t* two_byte_name = AsciiToTwoByteString("obj1.oXj2.foo1"); 2797 uint16_t* two_byte_name = AsciiToTwoByteString("obj1.oXj2.foo1");
2798 // Make it really non-ASCII (replace the Xs with a non-ASCII character). 2798 // Make it really non-Latin1 (replace the Xs with a non-Latin1 character).
2799 two_byte_source[14] = two_byte_source[78] = two_byte_name[6] = 0x010d; 2799 two_byte_source[14] = two_byte_source[78] = two_byte_name[6] = 0x010d;
2800 v8::Local<v8::String> source = 2800 v8::Local<v8::String> source =
2801 v8::String::NewFromTwoByte(isolate, two_byte_source); 2801 v8::String::NewFromTwoByte(isolate, two_byte_source);
2802 v8::Local<v8::Value> result = CompileRun(source); 2802 v8::Local<v8::Value> result = CompileRun(source);
2803 CHECK(result->IsString()); 2803 CHECK(result->IsString());
2804 v8::Local<v8::String> expected_name = 2804 v8::Local<v8::String> expected_name =
2805 v8::String::NewFromTwoByte(isolate, two_byte_name); 2805 v8::String::NewFromTwoByte(isolate, two_byte_name);
2806 CHECK(result->Equals(expected_name)); 2806 CHECK(result->Equals(expected_name));
2807 i::DeleteArray(two_byte_source); 2807 i::DeleteArray(two_byte_source);
2808 i::DeleteArray(two_byte_name); 2808 i::DeleteArray(two_byte_name);
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after
3385 const char* statement_data[] = { 3385 const char* statement_data[] = {
3386 "super = x", 3386 "super = x",
3387 "y = super", 3387 "y = super",
3388 "f(super)", 3388 "f(super)",
3389 NULL}; 3389 NULL};
3390 3390
3391 static const ParserFlag always_flags[] = {kAllowClasses}; 3391 static const ParserFlag always_flags[] = {kAllowClasses};
3392 RunParserSyncTest(context_data, statement_data, kError, NULL, 0, 3392 RunParserSyncTest(context_data, statement_data, kError, NULL, 0,
3393 always_flags, arraysize(always_flags)); 3393 always_flags, arraysize(always_flags));
3394 } 3394 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698