| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/string-stream.h" | 5 #include "src/string-stream.h" |
| 6 | 6 |
| 7 #include "src/handles-inl.h" | 7 #include "src/handles-inl.h" |
| 8 #include "src/prototype.h" |
| 8 | 9 |
| 9 namespace v8 { | 10 namespace v8 { |
| 10 namespace internal { | 11 namespace internal { |
| 11 | 12 |
| 12 static const int kMentionedObjectCacheMaxSize = 256; | 13 static const int kMentionedObjectCacheMaxSize = 256; |
| 13 | 14 |
| 14 char* HeapStringAllocator::allocate(unsigned bytes) { | 15 char* HeapStringAllocator::allocate(unsigned bytes) { |
| 15 space_ = NewArray<char>(bytes); | 16 space_ = NewArray<char>(bytes); |
| 16 return space_; | 17 return space_; |
| 17 } | 18 } |
| (...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 Add("%o", f); | 493 Add("%o", f); |
| 493 Add("/* warning: no JSFunction object or function name found */ "); | 494 Add("/* warning: no JSFunction object or function name found */ "); |
| 494 } | 495 } |
| 495 } | 496 } |
| 496 | 497 |
| 497 | 498 |
| 498 void StringStream::PrintPrototype(JSFunction* fun, Object* receiver) { | 499 void StringStream::PrintPrototype(JSFunction* fun, Object* receiver) { |
| 499 Object* name = fun->shared()->name(); | 500 Object* name = fun->shared()->name(); |
| 500 bool print_name = false; | 501 bool print_name = false; |
| 501 Isolate* isolate = fun->GetIsolate(); | 502 Isolate* isolate = fun->GetIsolate(); |
| 502 for (Object* p = receiver; | 503 for (PrototypeIterator iter(isolate, receiver, |
| 503 p != isolate->heap()->null_value(); | 504 PrototypeIterator::START_AT_RECEIVER); |
| 504 p = p->GetPrototype(isolate)) { | 505 !iter.IsAtEnd(); iter.Advance()) { |
| 505 if (p->IsJSObject()) { | 506 if (iter.GetCurrent()->IsJSObject()) { |
| 506 Object* key = JSObject::cast(p)->SlowReverseLookup(fun); | 507 Object* key = JSObject::cast(iter.GetCurrent())->SlowReverseLookup(fun); |
| 507 if (key != isolate->heap()->undefined_value()) { | 508 if (key != isolate->heap()->undefined_value()) { |
| 508 if (!name->IsString() || | 509 if (!name->IsString() || |
| 509 !key->IsString() || | 510 !key->IsString() || |
| 510 !String::cast(name)->Equals(String::cast(key))) { | 511 !String::cast(name)->Equals(String::cast(key))) { |
| 511 print_name = true; | 512 print_name = true; |
| 512 } | 513 } |
| 513 if (name->IsString() && String::cast(name)->length() == 0) { | 514 if (name->IsString() && String::cast(name)->length() == 0) { |
| 514 print_name = false; | 515 print_name = false; |
| 515 } | 516 } |
| 516 name = key; | 517 name = key; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 542 } | 543 } |
| 543 MemCopy(new_space, space_, *bytes); | 544 MemCopy(new_space, space_, *bytes); |
| 544 *bytes = new_bytes; | 545 *bytes = new_bytes; |
| 545 DeleteArray(space_); | 546 DeleteArray(space_); |
| 546 space_ = new_space; | 547 space_ = new_space; |
| 547 return new_space; | 548 return new_space; |
| 548 } | 549 } |
| 549 | 550 |
| 550 | 551 |
| 551 } } // namespace v8::internal | 552 } } // namespace v8::internal |
| OLD | NEW |