| 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 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 void StringStream::PrintObject(Object* o) { | 187 void StringStream::PrintObject(Object* o) { |
| 188 o->ShortPrint(this); | 188 o->ShortPrint(this); |
| 189 if (o->IsString()) { | 189 if (o->IsString()) { |
| 190 if (String::cast(o)->length() <= String::kMaxShortPrintLength) { | 190 if (String::cast(o)->length() <= String::kMaxShortPrintLength) { |
| 191 return; | 191 return; |
| 192 } | 192 } |
| 193 } else if (o->IsNumber() || o->IsOddball()) { | 193 } else if (o->IsNumber() || o->IsOddball()) { |
| 194 return; | 194 return; |
| 195 } | 195 } |
| 196 if (o->IsHeapObject()) { | 196 if (o->IsHeapObject()) { |
| 197 DebugObjectCache* debug_object_cache = Isolate::Current()-> | 197 HeapObject* ho = HeapObject::cast(o); |
| 198 DebugObjectCache* debug_object_cache = ho->GetIsolate()-> |
| 198 string_stream_debug_object_cache(); | 199 string_stream_debug_object_cache(); |
| 199 for (int i = 0; i < debug_object_cache->length(); i++) { | 200 for (int i = 0; i < debug_object_cache->length(); i++) { |
| 200 if ((*debug_object_cache)[i] == o) { | 201 if ((*debug_object_cache)[i] == o) { |
| 201 Add("#%d#", i); | 202 Add("#%d#", i); |
| 202 return; | 203 return; |
| 203 } | 204 } |
| 204 } | 205 } |
| 205 if (debug_object_cache->length() < kMentionedObjectCacheMaxSize) { | 206 if (debug_object_cache->length() < kMentionedObjectCacheMaxSize) { |
| 206 Add("#%d#", debug_object_cache->length()); | 207 Add("#%d#", debug_object_cache->length()); |
| 207 debug_object_cache->Add(HeapObject::cast(o)); | 208 debug_object_cache->Add(HeapObject::cast(o)); |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 282 for (unsigned next; (next = position + 2048) < length_; position = next) { | 283 for (unsigned next; (next = position + 2048) < length_; position = next) { |
| 283 char save = buffer_[next]; | 284 char save = buffer_[next]; |
| 284 buffer_[next] = '\0'; | 285 buffer_[next] = '\0'; |
| 285 internal::PrintF(out, "%s", &buffer_[position]); | 286 internal::PrintF(out, "%s", &buffer_[position]); |
| 286 buffer_[next] = save; | 287 buffer_[next] = save; |
| 287 } | 288 } |
| 288 internal::PrintF(out, "%s", &buffer_[position]); | 289 internal::PrintF(out, "%s", &buffer_[position]); |
| 289 } | 290 } |
| 290 | 291 |
| 291 | 292 |
| 292 Handle<String> StringStream::ToString() { | 293 Handle<String> StringStream::ToString(Isolate* isolate) { |
| 293 Factory* factory = Isolate::Current()->factory(); | 294 return isolate->factory()->NewStringFromUtf8( |
| 294 return factory->NewStringFromUtf8(Vector<const char>(buffer_, length_)); | 295 Vector<const char>(buffer_, length_)); |
| 295 } | 296 } |
| 296 | 297 |
| 297 | 298 |
| 298 void StringStream::ClearMentionedObjectCache() { | 299 void StringStream::ClearMentionedObjectCache(Isolate* isolate) { |
| 299 Isolate* isolate = Isolate::Current(); | |
| 300 isolate->set_string_stream_current_security_token(NULL); | 300 isolate->set_string_stream_current_security_token(NULL); |
| 301 if (isolate->string_stream_debug_object_cache() == NULL) { | 301 if (isolate->string_stream_debug_object_cache() == NULL) { |
| 302 isolate->set_string_stream_debug_object_cache( | 302 isolate->set_string_stream_debug_object_cache( |
| 303 new List<HeapObject*, PreallocatedStorageAllocationPolicy>(0)); | 303 new List<HeapObject*, PreallocatedStorageAllocationPolicy>(0)); |
| 304 } | 304 } |
| 305 isolate->string_stream_debug_object_cache()->Clear(); | 305 isolate->string_stream_debug_object_cache()->Clear(); |
| 306 } | 306 } |
| 307 | 307 |
| 308 | 308 |
| 309 #ifdef DEBUG | 309 #ifdef DEBUG |
| 310 bool StringStream::IsMentionedObjectCacheClear() { | 310 bool StringStream::IsMentionedObjectCacheClear(Isolate* isolate) { |
| 311 return ( | 311 return isolate->string_stream_debug_object_cache()->length() == 0; |
| 312 Isolate::Current()->string_stream_debug_object_cache()->length() == 0); | |
| 313 } | 312 } |
| 314 #endif | 313 #endif |
| 315 | 314 |
| 316 | 315 |
| 317 bool StringStream::Put(String* str) { | 316 bool StringStream::Put(String* str) { |
| 318 return Put(str, 0, str->length()); | 317 return Put(str, 0, str->length()); |
| 319 } | 318 } |
| 320 | 319 |
| 321 | 320 |
| 322 bool StringStream::Put(String* str, int start, int end) { | 321 bool StringStream::Put(String* str, int start, int end) { |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 Add(" ^%c", b + 'A' - 1); | 414 Add(" ^%c", b + 'A' - 1); |
| 416 } | 415 } |
| 417 Add("\n"); | 416 Add("\n"); |
| 418 } | 417 } |
| 419 if (limit >= 10) { | 418 if (limit >= 10) { |
| 420 Add(" ...\n"); | 419 Add(" ...\n"); |
| 421 } | 420 } |
| 422 } | 421 } |
| 423 | 422 |
| 424 | 423 |
| 425 void StringStream::PrintMentionedObjectCache() { | 424 void StringStream::PrintMentionedObjectCache(Isolate* isolate) { |
| 426 DebugObjectCache* debug_object_cache = | 425 DebugObjectCache* debug_object_cache = |
| 427 Isolate::Current()->string_stream_debug_object_cache(); | 426 isolate->string_stream_debug_object_cache(); |
| 428 Add("==== Key ============================================\n\n"); | 427 Add("==== Key ============================================\n\n"); |
| 429 for (int i = 0; i < debug_object_cache->length(); i++) { | 428 for (int i = 0; i < debug_object_cache->length(); i++) { |
| 430 HeapObject* printee = (*debug_object_cache)[i]; | 429 HeapObject* printee = (*debug_object_cache)[i]; |
| 431 Add(" #%d# %p: ", i, printee); | 430 Add(" #%d# %p: ", i, printee); |
| 432 printee->ShortPrint(this); | 431 printee->ShortPrint(this); |
| 433 Add("\n"); | 432 Add("\n"); |
| 434 if (printee->IsJSObject()) { | 433 if (printee->IsJSObject()) { |
| 435 if (printee->IsJSValue()) { | 434 if (printee->IsJSValue()) { |
| 436 Add(" value(): %o\n", JSValue::cast(printee)->value()); | 435 Add(" value(): %o\n", JSValue::cast(printee)->value()); |
| 437 } | 436 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 450 PrintByteArray(ByteArray::cast(printee)); | 449 PrintByteArray(ByteArray::cast(printee)); |
| 451 } else if (printee->IsFixedArray()) { | 450 } else if (printee->IsFixedArray()) { |
| 452 unsigned int limit = FixedArray::cast(printee)->length(); | 451 unsigned int limit = FixedArray::cast(printee)->length(); |
| 453 PrintFixedArray(FixedArray::cast(printee), limit); | 452 PrintFixedArray(FixedArray::cast(printee), limit); |
| 454 } | 453 } |
| 455 } | 454 } |
| 456 } | 455 } |
| 457 | 456 |
| 458 | 457 |
| 459 void StringStream::PrintSecurityTokenIfChanged(Object* f) { | 458 void StringStream::PrintSecurityTokenIfChanged(Object* f) { |
| 460 Isolate* isolate = Isolate::Current(); | 459 if (!f->IsHeapObject()) return; |
| 460 HeapObject* obj = HeapObject::cast(f); |
| 461 Isolate* isolate = obj->GetIsolate(); |
| 461 Heap* heap = isolate->heap(); | 462 Heap* heap = isolate->heap(); |
| 462 if (!f->IsHeapObject() || !heap->Contains(HeapObject::cast(f))) { | 463 if (!heap->Contains(obj)) return; |
| 463 return; | 464 Map* map = obj->map(); |
| 464 } | |
| 465 Map* map = HeapObject::cast(f)->map(); | |
| 466 if (!map->IsHeapObject() || | 465 if (!map->IsHeapObject() || |
| 467 !heap->Contains(map) || | 466 !heap->Contains(map) || |
| 468 !map->IsMap() || | 467 !map->IsMap() || |
| 469 !f->IsJSFunction()) { | 468 !f->IsJSFunction()) { |
| 470 return; | 469 return; |
| 471 } | 470 } |
| 472 | 471 |
| 473 JSFunction* fun = JSFunction::cast(f); | 472 JSFunction* fun = JSFunction::cast(f); |
| 474 Object* perhaps_context = fun->context(); | 473 Object* perhaps_context = fun->context(); |
| 475 if (perhaps_context->IsHeapObject() && | 474 if (perhaps_context->IsHeapObject() && |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 | 592 |
| 594 // Only grow once to the maximum allowable size. | 593 // Only grow once to the maximum allowable size. |
| 595 char* NoAllocationStringAllocator::grow(unsigned* bytes) { | 594 char* NoAllocationStringAllocator::grow(unsigned* bytes) { |
| 596 ASSERT(size_ >= *bytes); | 595 ASSERT(size_ >= *bytes); |
| 597 *bytes = size_; | 596 *bytes = size_; |
| 598 return space_; | 597 return space_; |
| 599 } | 598 } |
| 600 | 599 |
| 601 | 600 |
| 602 } } // namespace v8::internal | 601 } } // namespace v8::internal |
| OLD | NEW |