Seems like an improvement here, with --nolazy, before first and after second: samples % image name symbol name 16437 2.4713 shell v8::internal::VirtualFrame::RawSyncElementAt(int) 8175 1.2291 shell v8::internal::VirtualFrame::PrepareForCall(int, int) 6918 1.0401 shell v8::internal::VirtualFrame::SpillElementAt(int) 61 0.0092 shell v8::internal::VirtualFrame::SyncElementAt(int) 39 0.0059 shell v8::internal::VirtualFrame::SyncRange(int, int)
samples % image name symbol name 6221 0.9483 shell v8::internal::VirtualFrame::SyncRange(int, int) 5958 0.9082 shell v8::internal::VirtualFrame::SpillElementAt(int) 5457 0.8319 shell v8::internal::VirtualFrame::PrepareForCall(int, int) 3954 0.6028 shell v8::internal::VirtualFrame::SyncElementByPushing(int) 1367 0.2084 shell v8::internal::VirtualFrame::SyncElementBelowStackPointer(int) 125 0.0191 shell v8::internal::VirtualFrame::SyncElementAt(int) On Thu, Mar 26, 2009 at 10:40 AM, Kevin Millikin <[email protected]>wrote: > Here's the top of an oprofile run before this change, showing > RawSyncElement and PrepareForCall: > 44461 3.8503 shell > v8::internal::MarkingVisitor::VisitPointers(v8::internal::Object**, > v8::internal::Object**) > 36612 3.1706 shell > v8::internal::Scanner::ScanIdentifier() > 30610 2.6508 shell > v8::internal::UTF8Buffer::AddChar(int) > 29237 2.5319 shell > v8::internal::JumpTarget::ComputeEntryFrame(int) > 22616 1.9585 shell > v8::internal::VirtualFrame::RawSyncElementAt(int) > 21849 1.8921 shell > v8::internal::Heap::IterateRSet(v8::internal::PagedSpace*, void > (*)(v8::internal::HeapObject**)) > 21259 1.8410 shell > v8::internal::RelocIterator::next() > 21080 1.8255 shell > v8::internal::Scanner::ScanToken() > 20865 1.8069 shell > v8::internal::Scanner::SkipWhiteSpace(bool) > 20150 1.7450 shell > v8::internal::Heap::CopyFixedArray(v8::internal::FixedArray*) > 19240 1.6662 shell > v8::internal::String::IsEqualTo(v8::internal::Vector<char const>) > 18414 1.5947 shell > unibrow::Utf8::ReadBlock(unibrow::Buffer<char const*>, unsigned char*, > unsigned int, unsigned int*, unsigned int*) > 17095 1.4804 shell v8::internal::Scanner::Next() > 14925 1.2925 shell > v8::internal::VirtualFrame::PrepareMergeTo(v8::internal::VirtualFrame*) > 14001 1.2125 shell > v8::internal::ScavengeVisitor::VisitPointers(v8::internal::Object**, > v8::internal::Object**) > 12028 1.0416 shell > v8::internal::JSObject::GetElementWithReceiver(v8::internal::JSObject*, > unsigned int) > 11172 0.9675 shell > v8::internal::Heap::AllocateStringFromUtf8(v8::internal::Vector<char > const>, v8::internal::PretenureFlag) > 10485 0.9080 shell > v8::internal::Heap::IterateRSetRange(unsigned char*, unsigned char*, > unsigned char*, void (*)(v8::internal::HeapObject**)) > 10411 0.9016 shell v8::internal::Token::Lookup(char > const*) > 10358 0.8970 shell > v8::internal::VirtualFrame::PrepareForCall(int, int) > > > On Wed, Mar 25, 2009 at 4:58 PM, <[email protected]> wrote: > >> Oh, and LGTM. >> >> >> http://codereview.chromium.org/49029/diff/2007/2010 >> File src/virtual-frame.cc (right): >> >> http://codereview.chromium.org/49029/diff/2007/2010#newcode216 >> Line 216: // [min(stack_pointer_,begin), end). >> You mean min(stack_pointer + 1, begin)? >> >> It might be better in the sense of avoiding surprise to not make this >> general and to require the caller to give a proper range (ie, beginning >> at or below stack_pointer + 1). It would be more explicit at the >> calling sites (both of them!) what's going on (and I think it's true now >> anyway). >> >> http://codereview.chromium.org/49029/diff/2007/2010#newcode220 >> Line 220: if (begin > stack_pointer_) { >> This whole think is just complicated enough to need some comments so it >> doesn't get off by one when maintaining it. >> >> >> http://codereview.chromium.org/49029 >> > > --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
