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

Side by Side Diff: src/objects-debug.cc

Issue 2549773002: Internalize strings in-place (Closed)
Patch Set: rebased Created 3 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
« no previous file with comments | « src/objects-body-descriptors-inl.h ('k') | src/objects-inl.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 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/objects.h" 5 #include "src/objects.h"
6 6
7 #include "src/bootstrapper.h" 7 #include "src/bootstrapper.h"
8 #include "src/disasm.h" 8 #include "src/disasm.h"
9 #include "src/disassembler.h" 9 #include "src/disassembler.h"
10 #include "src/field-type.h" 10 #include "src/field-type.h"
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 void String::StringVerify() { 552 void String::StringVerify() {
553 CHECK(IsString()); 553 CHECK(IsString());
554 CHECK(length() >= 0 && length() <= Smi::kMaxValue); 554 CHECK(length() >= 0 && length() <= Smi::kMaxValue);
555 if (IsInternalizedString()) { 555 if (IsInternalizedString()) {
556 CHECK(!GetHeap()->InNewSpace(this)); 556 CHECK(!GetHeap()->InNewSpace(this));
557 } 557 }
558 if (IsConsString()) { 558 if (IsConsString()) {
559 ConsString::cast(this)->ConsStringVerify(); 559 ConsString::cast(this)->ConsStringVerify();
560 } else if (IsSlicedString()) { 560 } else if (IsSlicedString()) {
561 SlicedString::cast(this)->SlicedStringVerify(); 561 SlicedString::cast(this)->SlicedStringVerify();
562 } else if (IsThinString()) {
563 ThinString::cast(this)->ThinStringVerify();
562 } 564 }
563 } 565 }
564 566
565 567
566 void ConsString::ConsStringVerify() { 568 void ConsString::ConsStringVerify() {
567 CHECK(this->first()->IsString()); 569 CHECK(this->first()->IsString());
568 CHECK(this->second() == GetHeap()->empty_string() || 570 CHECK(this->second() == GetHeap()->empty_string() ||
569 this->second()->IsString()); 571 this->second()->IsString());
570 CHECK(this->length() >= ConsString::kMinLength); 572 CHECK(this->length() >= ConsString::kMinLength);
571 CHECK(this->length() == this->first()->length() + this->second()->length()); 573 CHECK(this->length() == this->first()->length() + this->second()->length());
572 if (this->IsFlat()) { 574 if (this->IsFlat()) {
573 // A flat cons can only be created by String::SlowTryFlatten. 575 // A flat cons can only be created by String::SlowFlatten.
574 // Afterwards, the first part may be externalized. 576 // Afterwards, the first part may be externalized or internalized.
575 CHECK(this->first()->IsSeqString() || this->first()->IsExternalString()); 577 CHECK(this->first()->IsSeqString() || this->first()->IsExternalString() ||
578 this->first()->IsThinString());
576 } 579 }
577 } 580 }
578 581
582 void ThinString::ThinStringVerify() {
583 CHECK(this->actual()->IsInternalizedString());
584 CHECK(this->actual()->IsSeqString() || this->actual()->IsExternalString());
585 }
579 586
580 void SlicedString::SlicedStringVerify() { 587 void SlicedString::SlicedStringVerify() {
581 CHECK(!this->parent()->IsConsString()); 588 CHECK(!this->parent()->IsConsString());
582 CHECK(!this->parent()->IsSlicedString()); 589 CHECK(!this->parent()->IsSlicedString());
583 CHECK(this->length() >= SlicedString::kMinLength); 590 CHECK(this->length() >= SlicedString::kMinLength);
584 } 591 }
585 592
586 593
587 void JSBoundFunction::JSBoundFunctionVerify() { 594 void JSBoundFunction::JSBoundFunctionVerify() {
588 CHECK(IsJSBoundFunction()); 595 CHECK(IsJSBoundFunction());
(...skipping 967 matching lines...) Expand 10 before | Expand all | Expand 10 after
1556 1563
1557 // Both are done at the same time. 1564 // Both are done at the same time.
1558 CHECK_EQ(new_it.done(), old_it.done()); 1565 CHECK_EQ(new_it.done(), old_it.done());
1559 } 1566 }
1560 1567
1561 1568
1562 #endif // DEBUG 1569 #endif // DEBUG
1563 1570
1564 } // namespace internal 1571 } // namespace internal
1565 } // namespace v8 1572 } // namespace v8
OLDNEW
« no previous file with comments | « src/objects-body-descriptors-inl.h ('k') | src/objects-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698