DTRACE option enables profiling with usdt and ustack. DTraceToolkit has a few examples how to use the probes under JavaScript directory. Note, check it works first: $ kldload sdt $ js24 > $ dtrace -P javascript\* -l | c++filt ID PROVIDER MODULE FUNCTION NAME 28063 javascript63331 js24 js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value const&, js::ExecuteType, js::AbstractFramePtr, JS::Value*) execute-done 28064 javascript63331 js24 js::ExecuteKernel(JSContext*, JS::Handle<JSScript*>, JSObject&, JS::Value const&, js::ExecuteType, js::AbstractFramePtr, JS::Value*) execute-start 28065 javascript63331 js24 js::StackFrame::prologue(JSContext*) function-entry 28066 javascript63331 js24 js::Probes::DTraceEnterJSFun(JSContext*, JSFunction*, JSScript*) function-entry 28067 javascript63331 js24 Interpret(JSContext*, js::RunState&) function-entry 28068 javascript63331 js24 js::jit::HandleException(js::jit::ResumeFromException*) function-return 28069 javascript63331 js24 js::StackFrame::epilogue(JSContext*) function-return 28070 javascript63331 js24 js::Probes::DTraceExitJSFun(JSContext*, JSFunction*, JSScript*) function-return 28071 javascript63331 js24 Interpret(JSContext*, js::RunState&) function-return 28072 javascript63331 js24 NewObject(JSContext*, js::Class*, js::types::TypeObject*, JSObject*, js::gc::AllocKind, js::NewObjectKind) object-create 28073 javascript63331 js24 js::NewDenseAllocatedArray(JSContext*, unsigned int, JSObject*, js::NewObjectKind) object-create 28074 javascript63331 js24 js::NewDenseUnallocatedArray(JSContext*, unsigned int, JSObject*, js::NewObjectKind) object-create 28075 javascript63331 js24 js::NewDenseCopiedArray(JSContext*, unsigned int, JS::Value const*, JSObject*, js::NewObjectKind) object-create 28076 javascript63331 js24 js::NewDenseEmptyArray(JSContext*, JSObject*, js::NewObjectKind) object-create 28077 javascript63331 js24 js::NewDenseCopiedArray(JSContext*, unsigned int, JS::Handle<JSObject*>, unsigned int, JSObject*) object-create 28078 javascript63331 js24 bool js::gc::Arena::finalize<JSObject>(js::FreeOp*, js::gc::AllocKind, unsigned long) object-finalize
Created attachment 145714 [details] esr24 patch
Hmm, this is 4 ports with 3 different maintainers. kwm@ wins, the other two are on copy.
Created attachment 145715 [details] esr24 build log (DTRACE=on) False positives to ignore: ====> Running Q/A tests (stage-qa) Warning: 'bin/js24' is not stripped consider using ${STRIP_CMD} Warning: 'lib/libmozjs-24.so' is not stripped consider using ${STRIP_CMD}
Created attachment 145733 [details] esr24 patch Oops, --disable-dtrace is broken. Needs one more patch from upstream bugzilla.
Created attachment 145734 [details] esr24 build log (DTRACE=off)
Created attachment 145735 [details] esr17 patch DTrace probes aren't included from static library (Mozilla bug 702179). Not to mention static libs are discouraged in general (security, waste of resources). If you disagree I can put lib/libmozjs-17.0.a behind %%NO_DTRACE%% at the expense of moving files/patch-bug702179 to EXTRA_PATCHES.
Created attachment 145736 [details] esr17 build log (DTRACE=on) see comment 3
Created attachment 145737 [details] esr17 build log (DTRACE=off)
Created attachment 145738 [details] js-1.8.x patch see comment 6
Created attachment 145739 [details] js-1.8.x build log (DTRACE=on)
Created attachment 145740 [details] js-1.8.x build log (DTRACE=off)
js-1.7.x is too old to have DTRACE probes. Profiling with ustack is generic and needs only non-debug symbols + -fno-omit-frame-pointer, similar to hwpmc/pmcstat. So, fixing PROFILE option should be global and belongs in bsd.port.mk (untangle STRIP et al. from WITH_DEBUG).
Comment on attachment 145738 [details] js-1.8.x patch Great PR Jan. Any reason we must lose the static library unconditionally?
See comment #6 why static is removed. I'm personaly don't care about the removal of the static library but I know it used in some places.
I'd like to not limit (user) consumption choice and flexibility, even if other ports in the tree don't use the static library themselves.
A commit references this bug: Author: kwm Date: Fri Jan 30 09:58:07 UTC 2015 New revision: 378144 URL: https://svnweb.freebsd.org/changeset/ports/378144 Log: Fix the build on ARM [1] Add DTRACE option (default off) [2] PR: 197058 [1] PR: 192614 [2] Submitted by: sbruno@ [1], jbeich@ [2] Changes: head/lang/spidermonkey24/Makefile head/lang/spidermonkey24/files/ head/lang/spidermonkey24/files/patch-assembler_jit_ExecutableAllocator.h head/lang/spidermonkey24/files/patch-bug1041795 head/lang/spidermonkey24/files/patch-bug1046224 head/lang/spidermonkey24/files/patch-bug702179 head/lang/spidermonkey24/files/patch-jit_AsmJSSignalHandlers.cpp head/lang/spidermonkey24/files/patch-jit_arm_Architecture-arm.cpp head/lang/spidermonkey24/pkg-plist
A commit references this bug: Author: kwm Date: Fri Jan 30 10:04:29 UTC 2015 New revision: 378145 URL: https://svnweb.freebsd.org/changeset/ports/378145 Log: Add DTRACE option PR: 192614 Submitted by: jbeich@ Changes: head/lang/spidermonkey170/Makefile head/lang/spidermonkey170/files/patch-bug1041795 head/lang/spidermonkey170/files/patch-bug1046224 head/lang/spidermonkey170/files/patch-bug702179 head/lang/spidermonkey170/pkg-plist
Over to koobs@ for last port
Submitter is committer. Can we leave the static library in place Jan?
Created attachment 152410 [details] js-1.8.x patch (keep static library) Hmm, DTRACE doesn't work for spidermonkey185. The probes aren't initialized as in comment 0. I've tested by launching js shell under WRKSRC and old lang/gjs. dtrace_dof* and __dtrace_javascript* symbols are there, though. $ readelf -a /usr/local/lib/libmozjs-24.so | fgrep dtrace 2237: 0000000000404920 152 FUNC LOCAL DEFAULT 11 dtrace_dof_fini 2238: 0000000000404440 951 FUNC LOCAL DEFAULT 11 dtrace_dof_init 2312: 0000000000000000 0 NOTYPE LOCAL HIDDEN ABS __dtraceenabled_javascrip 2649: 0000000000000000 0 NOTYPE LOCAL HIDDEN ABS __dtrace_javascript___obj 3164: 0000000000000000 0 NOTYPE LOCAL HIDDEN ABS __dtraceenabled_javascrip 3310: 0000000000203b40 476 FUNC LOCAL HIDDEN 11 $dtrace13930195._ZL9NewOb 3406: 0000000000000000 0 NOTYPE LOCAL HIDDEN ABS __dtraceenabled_javascrip 4216: 0000000000000000 0 NOTYPE LOCAL HIDDEN ABS __dtraceenabled_javascrip 5582: 0000000000000000 0 NOTYPE LOCAL HIDDEN ABS __dtrace_javascript___obj 5978: 0000000000000000 0 NOTYPE LOCAL HIDDEN ABS __dtrace_javascript___fun 7853: 0000000000000000 0 NOTYPE LOCAL HIDDEN ABS __dtrace_javascript___fun 9466: 0000000000000000 0 NOTYPE LOCAL HIDDEN ABS __dtrace_javascript___exe 11425: 0000000000000000 0 NOTYPE LOCAL HIDDEN ABS __dtraceenabled_javascrip 11814: 0000000000000000 0 NOTYPE LOCAL HIDDEN ABS __dtraceenabled_javascrip 12550: 0000000000000000 0 NOTYPE LOCAL HIDDEN ABS __dtrace_javascript___exe 12949: 00000000000d4710 39863 FUNC LOCAL HIDDEN 11 $dtrace13930059._ZL9Inter vs. $ readelf -a /usr/local/lib/libmozjs185.so | fgrep dtrace 143: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtrace_javascript___exe 190: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtrace_javascript___fun 271: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtrace_javascript___obj 357: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtraceenabled_javascrip 421: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtraceenabled_javascrip 430: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtraceenabled_javascrip 517: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtraceenabled_javascrip 536: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtrace_javascript___fun 727: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtraceenabled_javascrip 752: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtrace_javascript___exe 845: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtrace_javascript___obj 885: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtraceenabled_javascrip 1212: 0000000000296720 152 FUNC LOCAL DEFAULT 11 dtrace_dof_fini 1213: 0000000000296240 951 FUNC LOCAL DEFAULT 11 dtrace_dof_init 1378: 00000000000a88e0 1993 FUNC LOCAL HIDDEN 11 $dtrace13899205._ZL19Wrap 1614: 0000000000272040 373 FUNC LOCAL HIDDEN 11 $dtrace13899324._ZN2jsL14 1809: 00000000001a88d0 756 FUNC LOCAL HIDDEN 11 $dtrace13899270._ZL19NewX 2796: 00000000000dd050 373 FUNC LOCAL HIDDEN 11 $dtrace13899215._ZN2jsL14 3306: 00000000000fdf80 1959 FUNC LOCAL HIDDEN 11 $dtrace13899231._ZL10obj_ 4151: 00000000000aa660 3007 FUNC LOCAL HIDDEN 11 $dtrace13899205._ZL8Funct 4459: 00000000000dcf00 327 FUNC LOCAL HIDDEN 11 $dtrace13899215._ZL14Scri 4642: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtrace_javascript___exe 4743: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtrace_javascript___fun 4896: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtrace_javascript___exe 4927: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtraceenabled_javascrip 4998: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtrace_javascript___obj 5023: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtraceenabled_javascrip 5049: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtraceenabled_javascrip 5086: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtraceenabled_javascrip 5161: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtrace_javascript___fun 5358: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtraceenabled_javascrip 5474: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtrace_javascript___obj 5514: 0000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __dtraceenabled_javascrip
Is this still relevant? firefox-esr has 52.5.3.
The changes are all in the spidermonkey ports. Overcome by events.
^Triage: - Assign to committer that resolved - Correct resolution, this issue was resolved by commit(s), therefore FIXED