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

Side by Side Diff: src/objects.cc

Issue 618643002: Replace OStream with std::ostream. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fix Created 6 years, 2 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/objects.h ('k') | src/objects-printer.cc » ('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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 <sstream>
6
5 #include "src/v8.h" 7 #include "src/v8.h"
6 8
7 #include "src/accessors.h" 9 #include "src/accessors.h"
8 #include "src/allocation-site-scopes.h" 10 #include "src/allocation-site-scopes.h"
9 #include "src/api.h" 11 #include "src/api.h"
10 #include "src/arguments.h" 12 #include "src/arguments.h"
11 #include "src/base/bits.h" 13 #include "src/base/bits.h"
12 #include "src/bootstrapper.h" 14 #include "src/bootstrapper.h"
13 #include "src/code-stubs.h" 15 #include "src/code-stubs.h"
14 #include "src/codegen.h" 16 #include "src/codegen.h"
(...skipping 887 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 } 904 }
903 905
904 906
905 void Object::ShortPrint(FILE* out) { 907 void Object::ShortPrint(FILE* out) {
906 OFStream os(out); 908 OFStream os(out);
907 os << Brief(this); 909 os << Brief(this);
908 } 910 }
909 911
910 912
911 void Object::ShortPrint(StringStream* accumulator) { 913 void Object::ShortPrint(StringStream* accumulator) {
912 OStringStream os; 914 std::ostringstream os;
913 os << Brief(this); 915 os << Brief(this);
914 accumulator->Add(os.c_str()); 916 accumulator->Add(os.str().c_str());
915 } 917 }
916 918
917 919
918 OStream& operator<<(OStream& os, const Brief& v) { 920 std::ostream& operator<<(std::ostream& os, const Brief& v) {
919 if (v.value->IsSmi()) { 921 if (v.value->IsSmi()) {
920 Smi::cast(v.value)->SmiPrint(os); 922 Smi::cast(v.value)->SmiPrint(os);
921 } else { 923 } else {
922 // TODO(svenpanne) Const-correct HeapObjectShortPrint! 924 // TODO(svenpanne) Const-correct HeapObjectShortPrint!
923 HeapObject* obj = const_cast<HeapObject*>(HeapObject::cast(v.value)); 925 HeapObject* obj = const_cast<HeapObject*>(HeapObject::cast(v.value));
924 obj->HeapObjectShortPrint(os); 926 obj->HeapObjectShortPrint(os);
925 } 927 }
926 return os; 928 return os;
927 } 929 }
928 930
929 931
930 void Smi::SmiPrint(OStream& os) const { // NOLINT 932 void Smi::SmiPrint(std::ostream& os) const { // NOLINT
931 os << value(); 933 os << value();
932 } 934 }
933 935
934 936
935 // Should a word be prefixed by 'a' or 'an' in order to read naturally in 937 // Should a word be prefixed by 'a' or 'an' in order to read naturally in
936 // English? Returns false for non-ASCII or words that don't start with 938 // English? Returns false for non-ASCII or words that don't start with
937 // a capital letter. The a/an rule follows pronunciation in English. 939 // a capital letter. The a/an rule follows pronunciation in English.
938 // We don't use the BBC's overcorrect "an historic occasion" though if 940 // We don't use the BBC's overcorrect "an historic occasion" though if
939 // you speak a dialect you may well say "an 'istoric occasion". 941 // you speak a dialect you may well say "an 'istoric occasion".
940 static bool AnWord(String* str) { 942 static bool AnWord(String* str) {
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
1165 accumulator->Put('.'); 1167 accumulator->Put('.');
1166 accumulator->Put('.'); 1168 accumulator->Put('.');
1167 accumulator->Put('.'); 1169 accumulator->Put('.');
1168 } 1170 }
1169 accumulator->Put('>'); 1171 accumulator->Put('>');
1170 } 1172 }
1171 return; 1173 return;
1172 } 1174 }
1173 1175
1174 1176
1175 void String::PrintUC16(OStream& os, int start, int end) { // NOLINT 1177 void String::PrintUC16(std::ostream& os, int start, int end) { // NOLINT
1176 if (end < 0) end = length(); 1178 if (end < 0) end = length();
1177 ConsStringIteratorOp op; 1179 ConsStringIteratorOp op;
1178 StringCharacterStream stream(this, &op, start); 1180 StringCharacterStream stream(this, &op, start);
1179 for (int i = start; i < end && stream.HasMore(); i++) { 1181 for (int i = start; i < end && stream.HasMore(); i++) {
1180 os << AsUC16(stream.GetNext()); 1182 os << AsUC16(stream.GetNext());
1181 } 1183 }
1182 } 1184 }
1183 1185
1184 1186
1185 void JSObject::JSObjectShortPrint(StringStream* accumulator) { 1187 void JSObject::JSObjectShortPrint(StringStream* accumulator) {
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
1364 } else { 1366 } else {
1365 PrintF(file, "{symbol %p}", static_cast<void*>(name)); 1367 PrintF(file, "{symbol %p}", static_cast<void*>(name));
1366 } 1368 }
1367 PrintF(file, " "); 1369 PrintF(file, " ");
1368 } 1370 }
1369 } 1371 }
1370 PrintF(file, "\n"); 1372 PrintF(file, "\n");
1371 } 1373 }
1372 1374
1373 1375
1374 void HeapObject::HeapObjectShortPrint(OStream& os) { // NOLINT 1376 void HeapObject::HeapObjectShortPrint(std::ostream& os) { // NOLINT
1375 Heap* heap = GetHeap(); 1377 Heap* heap = GetHeap();
1376 if (!heap->Contains(this)) { 1378 if (!heap->Contains(this)) {
1377 os << "!!!INVALID POINTER!!!"; 1379 os << "!!!INVALID POINTER!!!";
1378 return; 1380 return;
1379 } 1381 }
1380 if (!heap->Contains(map())) { 1382 if (!heap->Contains(map())) {
1381 os << "!!!INVALID MAP!!!"; 1383 os << "!!!INVALID MAP!!!";
1382 return; 1384 return;
1383 } 1385 }
1384 1386
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
1661 UNREACHABLE(); 1663 UNREACHABLE();
1662 } 1664 }
1663 } 1665 }
1664 1666
1665 1667
1666 bool HeapNumber::HeapNumberBooleanValue() { 1668 bool HeapNumber::HeapNumberBooleanValue() {
1667 return DoubleToBoolean(value()); 1669 return DoubleToBoolean(value());
1668 } 1670 }
1669 1671
1670 1672
1671 void HeapNumber::HeapNumberPrint(OStream& os) { // NOLINT 1673 void HeapNumber::HeapNumberPrint(std::ostream& os) { // NOLINT
1672 os << value(); 1674 os << value();
1673 } 1675 }
1674 1676
1675 1677
1676 String* JSReceiver::class_name() { 1678 String* JSReceiver::class_name() {
1677 if (IsJSFunction() || IsJSFunctionProxy()) { 1679 if (IsJSFunction() || IsJSFunctionProxy()) {
1678 return GetHeap()->Function_string(); 1680 return GetHeap()->Function_string();
1679 } 1681 }
1680 if (map()->constructor()->IsJSFunction()) { 1682 if (map()->constructor()->IsJSFunction()) {
1681 JSFunction* constructor = JSFunction::cast(map()->constructor()); 1683 JSFunction* constructor = JSFunction::cast(map()->constructor());
(...skipping 8121 matching lines...) Expand 10 before | Expand all | Expand 10 after
9803 return instance_size; 9805 return instance_size;
9804 } 9806 }
9805 9807
9806 9808
9807 int SharedFunctionInfo::CalculateInObjectProperties() { 9809 int SharedFunctionInfo::CalculateInObjectProperties() {
9808 return (CalculateInstanceSize() - JSObject::kHeaderSize) / kPointerSize; 9810 return (CalculateInstanceSize() - JSObject::kHeaderSize) / kPointerSize;
9809 } 9811 }
9810 9812
9811 9813
9812 // Output the source code without any allocation in the heap. 9814 // Output the source code without any allocation in the heap.
9813 OStream& operator<<(OStream& os, const SourceCodeOf& v) { 9815 std::ostream& operator<<(std::ostream& os, const SourceCodeOf& v) {
9814 const SharedFunctionInfo* s = v.value; 9816 const SharedFunctionInfo* s = v.value;
9815 // For some native functions there is no source. 9817 // For some native functions there is no source.
9816 if (!s->HasSourceCode()) return os << "<No Source>"; 9818 if (!s->HasSourceCode()) return os << "<No Source>";
9817 9819
9818 // Get the source for the script which this function came from. 9820 // Get the source for the script which this function came from.
9819 // Don't use String::cast because we don't want more assertion errors while 9821 // Don't use String::cast because we don't want more assertion errors while
9820 // we are already creating a stack dump. 9822 // we are already creating a stack dump.
9821 String* script_source = 9823 String* script_source =
9822 reinterpret_cast<String*>(Script::cast(s->script())->source()); 9824 reinterpret_cast<String*>(Script::cast(s->script())->source());
9823 9825
(...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after
10623 case NUMBER_OF_KINDS: break; 10625 case NUMBER_OF_KINDS: break;
10624 } 10626 }
10625 UNREACHABLE(); 10627 UNREACHABLE();
10626 return NULL; 10628 return NULL;
10627 } 10629 }
10628 10630
10629 10631
10630 #ifdef ENABLE_DISASSEMBLER 10632 #ifdef ENABLE_DISASSEMBLER
10631 10633
10632 void DeoptimizationInputData::DeoptimizationInputDataPrint( 10634 void DeoptimizationInputData::DeoptimizationInputDataPrint(
10633 OStream& os) { // NOLINT 10635 std::ostream& os) { // NOLINT
10634 disasm::NameConverter converter; 10636 disasm::NameConverter converter;
10635 int deopt_count = DeoptCount(); 10637 int deopt_count = DeoptCount();
10636 os << "Deoptimization Input Data (deopt points = " << deopt_count << ")\n"; 10638 os << "Deoptimization Input Data (deopt points = " << deopt_count << ")\n";
10637 if (0 != deopt_count) { 10639 if (0 != deopt_count) {
10638 os << " index ast id argc pc"; 10640 os << " index ast id argc pc";
10639 if (FLAG_print_code_verbose) os << " commands"; 10641 if (FLAG_print_code_verbose) os << " commands";
10640 os << "\n"; 10642 os << "\n";
10641 } 10643 }
10642 for (int i = 0; i < deopt_count; i++) { 10644 for (int i = 0; i < deopt_count; i++) {
10643 // TODO(svenpanne) Add some basic formatting to our streams. 10645 // TODO(svenpanne) Add some basic formatting to our streams.
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
10784 break; 10786 break;
10785 } 10787 }
10786 } 10788 }
10787 os << "\n"; 10789 os << "\n";
10788 } 10790 }
10789 } 10791 }
10790 } 10792 }
10791 10793
10792 10794
10793 void DeoptimizationOutputData::DeoptimizationOutputDataPrint( 10795 void DeoptimizationOutputData::DeoptimizationOutputDataPrint(
10794 OStream& os) { // NOLINT 10796 std::ostream& os) { // NOLINT
10795 os << "Deoptimization Output Data (deopt points = " << this->DeoptPoints() 10797 os << "Deoptimization Output Data (deopt points = " << this->DeoptPoints()
10796 << ")\n"; 10798 << ")\n";
10797 if (this->DeoptPoints() == 0) return; 10799 if (this->DeoptPoints() == 0) return;
10798 10800
10799 os << "ast id pc state\n"; 10801 os << "ast id pc state\n";
10800 for (int i = 0; i < this->DeoptPoints(); i++) { 10802 for (int i = 0; i < this->DeoptPoints(); i++) {
10801 int pc_and_state = this->PcAndState(i)->value(); 10803 int pc_and_state = this->PcAndState(i)->value();
10802 // TODO(svenpanne) Add some basic formatting to our streams. 10804 // TODO(svenpanne) Add some basic formatting to our streams.
10803 Vector<char> buf = Vector<char>::New(100); 10805 Vector<char> buf = Vector<char>::New(100);
10804 SNPrintF(buf, "%6d %8d %s\n", this->AstId(i).ToInt(), 10806 SNPrintF(buf, "%6d %8d %s\n", this->AstId(i).ToInt(),
(...skipping 27 matching lines...) Expand all
10832 const char* Code::StubType2String(StubType type) { 10834 const char* Code::StubType2String(StubType type) {
10833 switch (type) { 10835 switch (type) {
10834 case NORMAL: return "NORMAL"; 10836 case NORMAL: return "NORMAL";
10835 case FAST: return "FAST"; 10837 case FAST: return "FAST";
10836 } 10838 }
10837 UNREACHABLE(); // keep the compiler happy 10839 UNREACHABLE(); // keep the compiler happy
10838 return NULL; 10840 return NULL;
10839 } 10841 }
10840 10842
10841 10843
10842 void Code::PrintExtraICState(OStream& os, // NOLINT 10844 void Code::PrintExtraICState(std::ostream& os, // NOLINT
10843 Kind kind, ExtraICState extra) { 10845 Kind kind, ExtraICState extra) {
10844 os << "extra_ic_state = "; 10846 os << "extra_ic_state = ";
10845 if ((kind == STORE_IC || kind == KEYED_STORE_IC) && (extra == STRICT)) { 10847 if ((kind == STORE_IC || kind == KEYED_STORE_IC) && (extra == STRICT)) {
10846 os << "STRICT\n"; 10848 os << "STRICT\n";
10847 } else { 10849 } else {
10848 os << extra << "\n"; 10850 os << extra << "\n";
10849 } 10851 }
10850 } 10852 }
10851 10853
10852 10854
10853 void Code::Disassemble(const char* name, OStream& os) { // NOLINT 10855 void Code::Disassemble(const char* name, std::ostream& os) { // NOLINT
10854 os << "kind = " << Kind2String(kind()) << "\n"; 10856 os << "kind = " << Kind2String(kind()) << "\n";
10855 if (IsCodeStubOrIC()) { 10857 if (IsCodeStubOrIC()) {
10856 const char* n = CodeStub::MajorName(CodeStub::GetMajorKey(this), true); 10858 const char* n = CodeStub::MajorName(CodeStub::GetMajorKey(this), true);
10857 os << "major_key = " << (n == NULL ? "null" : n) << "\n"; 10859 os << "major_key = " << (n == NULL ? "null" : n) << "\n";
10858 } 10860 }
10859 if (is_inline_cache_stub()) { 10861 if (is_inline_cache_stub()) {
10860 os << "ic_state = " << ICState2String(ic_state()) << "\n"; 10862 os << "ic_state = " << ICState2String(ic_state()) << "\n";
10861 PrintExtraICState(os, kind(), extra_ic_state()); 10863 PrintExtraICState(os, kind(), extra_ic_state());
10862 if (ic_state() == MONOMORPHIC) { 10864 if (ic_state() == MONOMORPHIC) {
10863 os << "type = " << StubType2String(type()) << "\n"; 10865 os << "type = " << StubType2String(type()) << "\n";
(...skipping 2185 matching lines...) Expand 10 before | Expand all | Expand 10 after
13049 } 13051 }
13050 13052
13051 13053
13052 // Certain compilers request function template instantiation when they 13054 // Certain compilers request function template instantiation when they
13053 // see the definition of the other template functions in the 13055 // see the definition of the other template functions in the
13054 // class. This requires us to have the template functions put 13056 // class. This requires us to have the template functions put
13055 // together, so even though this function belongs in objects-debug.cc, 13057 // together, so even though this function belongs in objects-debug.cc,
13056 // we keep it here instead to satisfy certain compilers. 13058 // we keep it here instead to satisfy certain compilers.
13057 #ifdef OBJECT_PRINT 13059 #ifdef OBJECT_PRINT
13058 template <typename Derived, typename Shape, typename Key> 13060 template <typename Derived, typename Shape, typename Key>
13059 void Dictionary<Derived, Shape, Key>::Print(OStream& os) { // NOLINT 13061 void Dictionary<Derived, Shape, Key>::Print(std::ostream& os) { // NOLINT
13060 int capacity = DerivedHashTable::Capacity(); 13062 int capacity = DerivedHashTable::Capacity();
13061 for (int i = 0; i < capacity; i++) { 13063 for (int i = 0; i < capacity; i++) {
13062 Object* k = DerivedHashTable::KeyAt(i); 13064 Object* k = DerivedHashTable::KeyAt(i);
13063 if (DerivedHashTable::IsKey(k)) { 13065 if (DerivedHashTable::IsKey(k)) {
13064 os << " "; 13066 os << " ";
13065 if (k->IsString()) { 13067 if (k->IsString()) {
13066 String::cast(k)->StringPrint(os); 13068 String::cast(k)->StringPrint(os);
13067 } else { 13069 } else {
13068 os << Brief(k); 13070 os << Brief(k);
13069 } 13071 }
(...skipping 3301 matching lines...) Expand 10 before | Expand all | Expand 10 after
16371 Handle<DependentCode> codes = 16373 Handle<DependentCode> codes =
16372 DependentCode::Insert(handle(cell->dependent_code(), info->isolate()), 16374 DependentCode::Insert(handle(cell->dependent_code(), info->isolate()),
16373 DependentCode::kPropertyCellChangedGroup, 16375 DependentCode::kPropertyCellChangedGroup,
16374 info->object_wrapper()); 16376 info->object_wrapper());
16375 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes); 16377 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes);
16376 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add( 16378 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add(
16377 cell, info->zone()); 16379 cell, info->zone());
16378 } 16380 }
16379 16381
16380 } } // namespace v8::internal 16382 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/objects.h ('k') | src/objects-printer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698