I managed to find the reason for this. I forgot to enter the isolate after creating it:
isolate->Enter() All looks good now. Sorry for the false alert. On Wednesday, November 6, 2019 at 10:26:41 AM UTC+2, Jakob Gruber wrote: > > +Peter Marshall <javascript:> > > On Wed, Nov 6, 2019 at 8:58 AM Darin Dimitrov <darin....@gmail.com > <javascript:>> wrote: > >> I am trying to collect function execution data using the CpuProfiler >> class. >> >> I ran the following test (taken from here >> https://github.com/v8/v8/blob/master/test/cctest/test-cpu-profiler.cc#L677 >> ): >> >> const char* src = >> "function loop(timeout) {\n" >> " this.mmm = 0;\n" >> " var start = Date.now();\n" >> " do {\n" >> " var n = 1000;\n" >> " while(n > 1) {\n" >> " n--;\n" >> " this.mmm += n * n * n;\n" >> " }\n" >> " } while (Date.now() - start < timeout);\n" >> "}\n" >> "function delay() { loop(10); }\n" >> "function bar() { delay(); }\n" >> "function baz() { delay(); }\n" >> "function foo() {\n" >> " delay();\n" >> " bar();\n" >> " delay();\n" >> " baz();\n" >> "}\n" >> "function start(duration) {\n" >> " var start = Date.now();\n" >> " do {\n" >> " foo();\n" >> " } while (Date.now() - start < duration);\n" >> "}\n"; >> >> Script::Compile(context, v8::String::NewFromUtf8(isolate, src). >> ToLocalChecked()).ToLocalChecked()->Run(context).ToLocalChecked(); >> Local<v8::Function> startFunc = context->Global()->Get(context, v8:: >> String::NewFromUtf8(isolate, "start").ToLocalChecked()).ToLocalChecked(). >> As<v8::Function>(); >> >> Local<v8::String> title = v8::String::NewFromUtf8(isolate, "my_trace"). >> ToLocalChecked(); >> CpuProfiler* profiler = CpuProfiler::New(isolate); >> profiler->StartProfiling(title, false); >> >> Local<Value> result; >> Local<Value> args[] = { Number::New(isolate, 200) }; >> assert(startFunc->Call(context, context->Global(), 1, args).ToLocal(& >> result)); >> >> const CpuProfile* profile = profiler->StopProfiling(title); >> const CpuProfileNode* root = profile->GetTopDownRoot(); >> int count = root->GetChildrenCount(); >> for (int i = 0; i < count; ++i) { >> const CpuProfileNode* child = root->GetChild(i); >> v8::String::Utf8Value str(isolate, child->GetFunctionName()); >> const char* funcName = *str; >> printf("%s\n", funcName); >> } >> >> >> >> The root CpuProfileNode contains only a single child element called >> "(program)". >> >> If I execute the same code on Android, I correctly get the following >> child functions: "(program)", "start" and "(garbage collector)". >> >> Do you have any idea what might be wrong with the CpuProfiler class in v8 >> in jitless mode? Is CpuProfiler the correct class to use to collect >> function execution times or is there some newer method? >> >> -- >> -- >> v8-users mailing list >> v8-u...@googlegroups.com <javascript:> >> 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 v8-u...@googlegroups.com <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/v8-users/798f9464-88a1-464f-8fb8-6aa223ce5e57%40googlegroups.com >> >> <https://groups.google.com/d/msgid/v8-users/798f9464-88a1-464f-8fb8-6aa223ce5e57%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- -- v8-users mailing list v8-users@googlegroups.com 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 v8-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-users/a2ef4ac8-7c6e-47ca-8cd6-2ed554d1b885%40googlegroups.com.