Well, the profile tells you which function was executed. It doesn't know or
care what name you used to refer to this function -- it can't, as it's a
sampling profiler. Pure-JS example:
function f() { /* long-running stuff */ }
var g = f;
g(); // Shows up as "f" in the profile.
In your example, the function is a C++ object, so it doesn't even have a
name, so V8 tries to infer a name that it hopes is meaningful to a human
reader. The point is that for a single function, it can only infer a single
name.
I think this is working as intended.
On Thu, Oct 29, 2015 at 11:57 PM, Jane Chen <[email protected]> wrote:
> A test case to demonstrate the issue can be found at:
>
> https://code.google.com/p/v8/issues/detail?id=4527
>
>
> On Thursday, October 29, 2015 at 3:46:21 PM UTC-7, Jane Chen wrote:
>>
>> Testing profiling against v8 4.6.88.
>>
>> I have functions that are exposed through accessor callbacks. If a
>> native function is set for multiple accessor properties, the last property
>> shows up as the function name in the CpuProfileNode, regardless what name
>> you set to the function returned by the accessor function. For example:
>>
>> global->SetAccessor(
>> v8::String::NewFromUtf8(isolate, "print", v8::NewStringType::kNormal)
>> .ToLocalChecked(),
>> getFunction);
>> global->SetAccessor(
>> v8::String::NewFromUtf8(isolate, "read", v8::NewStringType::kNormal)
>> .ToLocalChecked(),
>> getFunction);
>>
>> Now "get read" is the function name in CpuProfileNode although print is
>> called.
>>
>> Test script:
>>
>> function isPrime(num) {
>> for (var count = 2; count < num; count++)
>> if (num % count == 0) return false;
>> return true;
>> };
>>
>> var total = 0;
>> for (var i = 2; i < 100000; i++) {
>> if (isPrime(i)) {
>> print(i);
>> total++
>> }
>> };
>> total;
>>
>> TotalHitCount:2233
>>
>> FunctionName:(root)
>> LineNumber:0
>> ColumnNumber:0
>> HitCount:0
>> FunctionName:(program)
>> LineNumber:0
>> ColumnNumber:0
>> HitCount:7
>> FunctionName:
>> LineNumber:0
>> ColumnNumber:0
>> HitCount:13
>> FunctionName:isPrime
>> LineNumber:1
>> ColumnNumber:17
>> HitCount:8
>> FunctionName:
>> LineNumber:1
>> ColumnNumber:1
>> HitCount:2196
>> FunctionName:get read
>> LineNumber:0
>> ColumnNumber:0
>> HitCount:2
>> FunctionName:(garbage collector)
>> LineNumber:0
>> ColumnNumber:0
>> HitCount:7
>>
>>
>> Given that an accessor callback takes a property name, it should allow
>> one native function to handle multiple properties. Is this a bug, or am I
>> doing something wrong?
>>
> --
> --
> 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.
>
--
--
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.