On Tue, Jun 20, 2017 at 1:24 PM, Christian Palmstierna
<[email protected]> wrote:
> That makes sense. Is there any convenient way to find where this is
> happening, e.g. via a debugger?

You could try the profiler from the built-in inspector.

> Here's the full output from --prof-process:
>
> Statistical profiling result from isolate-000001A4282567E0-v8.log, (1437
> ticks, 116 unaccounted, 0 excluded).
>
>  [Shared libraries]:
>    ticks  total  nonlib   name
>
>  [JavaScript]:
>    ticks  total  nonlib   name
>     892   62.1%   62.1%  Handler: symbol("nonexistent_symbol" hash 157aee38)
>     173   12.0%   12.0%  Handler: symbol("Symbol.iterator" hash 43b0ecc)
>     160   11.1%   11.1%  Stub: RecordWriteStub {4}
>      12    0.8%    0.8%  Stub: RecordWriteStub {3}
>      10    0.7%    0.7%  Handler: symbol("promise_deferred_reactions_symbol"
> hash 25b86a1)
>       5    0.3%    0.3%  Stub: ToBooleanICStub(Undefined,Bool,String)
>       4    0.3%    0.3%  Handler: fs
>       3    0.2%    0.2%  Stub: CompareICStub {1}
>       3    0.2%    0.2%  Handler: concat
>       3    0.2%    0.2%  Builtin: StringPrototypeNormalize
>       2    0.1%    0.1%  Stub: RecordWriteStub
>       2    0.1%    0.1%  Stub: LoadConstantStub
>       2    0.1%    0.1%  Stub: CallICStub(args(4), NULL_OR_UNDEFINED,
>       2    0.1%    0.1%  Handler: subject
>       2    0.1%    0.1%  Handler: cache
>       1    0.1%    0.1%  Stub: ToBooleanICStub(Undefined,String)
>       1    0.1%    0.1%  Stub: ToBooleanICStub(Null)
>       1    0.1%    0.1%  Stub: StrictEqualStub
>       1    0.1%    0.1%  Stub: StoreFieldStub {4}
>       1    0.1%    0.1%  Stub: StoreFieldStub {3}
>       1    0.1%    0.1%  Stub: StoreFieldStub {2}
>       1    0.1%    0.1%  Stub: StoreFieldStub {1}
>       1    0.1%    0.1%  Stub: StoreFieldStub
>       1    0.1%    0.1%  Stub: StoreFastElementStub
>       1    0.1%    0.1%  Stub: RecordWriteStub {2}
>       1    0.1%    0.1%  Stub: RecordWriteStub {1}
>       1    0.1%    0.1%  Stub: LoadFieldStub
>       1    0.1%    0.1%  Stub: JSEntryStub
>       1    0.1%    0.1%  Stub: FastCloneShallowObjectStub {1}
>       1    0.1%    0.1%  Stub: FastCloneShallowObjectStub
>       1    0.1%    0.1%  Stub: DoubleToIStub
>       1    0.1%    0.1%  Stub: CompareICStub {5}
>       1    0.1%    0.1%  Stub: CompareICStub {4}
>       1    0.1%    0.1%  Stub: CompareICStub {3}
>       1    0.1%    0.1%  Stub: CompareICStub {2}
>       1    0.1%    0.1%  Stub: CompareICStub
>       1    0.1%    0.1%  Stub: CallICTrampolineStub
>       1    0.1%    0.1%  Stub: CallICStub(args(5), NULL_OR_UNDEFINED,
>       1    0.1%    0.1%  Stub: CallICStub(args(0), NULL_OR_UNDEFINED,
>       1    0.1%    0.1%  Stub:
> BinaryOpICWithAllocationSiteStub(ADD_CreateAllocationMementos:String*String->String)
> {4}
>       1    0.1%    0.1%  Stub:
> BinaryOpICWithAllocationSiteStub(ADD_CreateAllocationMementos:String*String->String)
> {3}
>       1    0.1%    0.1%  Stub:
> BinaryOpICWithAllocationSiteStub(ADD_CreateAllocationMementos:String*String->String)
> {2}
>       1    0.1%    0.1%  Stub:
> BinaryOpICWithAllocationSiteStub(ADD_CreateAllocationMementos:String*String->String)
> {1}
>       1    0.1%    0.1%  Stub:
> BinaryOpICWithAllocationSiteStub(ADD_CreateAllocationMementos:String*String->String)
>       1    0.1%    0.1%  Stub: BinaryOpICStub(MOD:Smi*1->Smi)
>       1    0.1%    0.1%  Handler: super_
>       1    0.1%    0.1%  Handler: set
>       1    0.1%    0.1%  Handler: sender
>       1    0.1%    0.1%  Handler: resumeScheduled
>       1    0.1%    0.1%  Handler: prototype
>       1    0.1%    0.1%  Handler: peek
>       1    0.1%    0.1%  Handler: internal/util
>       1    0.1%    0.1%  Handler: internal/process/warning
>       1    0.1%    0.1%  Handler: internal/process/stdio
>       1    0.1%    0.1%  Handler: error
>       1    0.1%    0.1%  Handler: end
>       1    0.1%    0.1%  Handler: destroyed
>       1    0.1%    0.1%  Handler: buffer
>       1    0.1%    0.1%  Handler: blksize
>       1    0.1%    0.1%  Handler: assert
>       1    0.1%    0.1%  Builtin: DatePrototypeSetHours
>
>  [C++]:
>    ticks  total  nonlib   name
>
>  [Summary]:
>    ticks  total  nonlib   name
>    1321   91.9%   91.9%  JavaScript
>       0    0.0%    0.0%  C++
>      22    1.5%    1.5%  GC
>       0    0.0%          Shared libraries
>     116    8.1%          Unaccounted
>
>  [C++ entry points]:
>    ticks    cpp   total   name
>
>  [Bottom up (heavy) profile]:
>   Note: percentage shows a share of a particular caller in the total
>   amount of its parent calls.
>   Callers occupying less than 2.0% are not shown.
>
>    ticks parent  name
>     892   62.1%  Handler: symbol("nonexistent_symbol" hash 157aee38)
>     875   98.1%    C:\Program Files\nodejs\node.exe
>     386   44.1%      C:\Program Files\nodejs\node.exe
>
>     173   12.0%  Handler: symbol("Symbol.iterator" hash 43b0ecc)
>     170   98.3%    C:\Program Files\nodejs\node.exe
>      78   45.9%      C:\Program Files\nodejs\node.exe
>
>     160   11.1%  Stub: RecordWriteStub {4}
>     156   97.5%    C:\Program Files\nodejs\node.exe
>      71   45.5%      C:\Program Files\nodejs\node.exe
>
>     116    8.1%  UNKNOWN

You might want to try it on Linux or MacOS.  There is a Windows bug
that skews profiles (the UNKNOWN ticks), see
https://github.com/nodejs/node/issues/8221.

(As well, on Unices you get to see C++ symbols.)

-- 
-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to