catapult-project / catapult

Deprecated Catapult GitHub. Please instead use http://crbug.com "Speed>Benchmarks" component for bugs and https://chromium.googlesource.com/catapult for downloading and editing source code..
https://chromium.googlesource.com/catapult
BSD 3-Clause "New" or "Revised" License
1.93k stars 564 forks source link

StackFrame Cleanup #1230

Closed dj2 closed 8 years ago

dj2 commented 9 years ago

We should have one clear place for each field, and a clear statement of what the fields value is when its missing.

The frame objects we should support

module: the linkage/shared-memory-segment unit, e.g. blink.so, v8 function: just the name line num: a number or undefined offset: an offset relative to a module's base address ptr: raw unresolved ptr

dj2 commented 9 years ago

To give an idea, the entries we have from the current test files for stack frames gives the following (filtered down from ~10k entries). The items below are [event.category, event.name] pairs.

["v8", " app:1"] ["v8", " http://dromaeo.com/jquery.js:1"] ["v8", " http://dromaeo.com/tests/dromaeo-object-array.html:12 {1}"] ["v8", "$Array.enumerable native v8natives.js:525"] ["v8", "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib"] ["v8", "APIFunctions.registerUnavailable binding:36"] ["v8", "Date {1}"] ["v8", "Builtin:ArgumentsAdaptorTrampoline"] ["v8", "CallIC:A call IC from"] ["v8", "Function:~ :37"] ["v8", "Function:~ native harmony-object.js:2"] ["v8", "Handler:"] ["v8", "Handler:$toPrimitive"] ["v8", "KeyedLoadIC:A keyed load IC"] ["v8", "KeyedStoreIC:"] ["v8", "KeyedStoreIC:A keyed store IC"] ["v8", "KeyedStorePolymorphicIC:"] ["v8", "KeyedStorePolymorphicIC:0"] ["v8", "LazyCompile:"] ["v8", "LazyCompile: :1"] ["v8", "LazyCompile: chrome://tracing/tracing.js:1592"] ["v8", "LazyCompile: native v8natives.js:1199"] ["v8", "LazyCompile:$reflectApply"] ["v8", "LazyCompile:* chrome://tracing/tracing.js:1729"] ["v8", "LazyCompile:processEvent chrome://tracing/tracing.js:3018"] ["v8", "LazyCompile:~ :32"] ["v8", "LazyCompile:~ chrome://tracing/tracing.js:472"] ["v8", "LazyCompile:~ native v8natives.js:1199"] ["v8", "LazyCompile:~AddStaticStorageFunctionsToClass.inputclass.set chrome://tracing/tracing.js:163"] ["v8", "LoadIC:A load IC from"] ["v8", "RegExp"] ["v8", "RegExp:/*[^]?_/"] ["v8", "Script:~"] ["v8", "Script:~http://localhost:8000/"] ["v8", "Script:~native harmony-object.js"] ["v8", "StoreIC:A store IC from"] ["v8", "StorePolymorphicIC:childNodeCount"] ["v8", "Stub:ArgumentsAccessStub""] ["", "[unknown]"] ["Android", "[unknown]"] ["Android", "android::BitTube::read(void*, unsigned int)"] ["Chrome", "(anonymous namespace)::ClockNow(int)"] ["GPU Driver", "FloatToFPE3M6"] ["Java", "OpenArchiveInternal(ZipArchive, char const_)"] ["Kernel", "___cfg80211_scan_done"]

dj2 commented 9 years ago

@natduca I'm not seeing any frames with bare addresses in them in the current data. For the v8 frames we have addresses for each function and a code size, for the perf_sampling_trace_with_trace_events we have an id, category, name and parent id.

natduca commented 9 years ago

I think the [unknown] ones that have categories are the module + offset address. Looks like we made the choice in this to drop that instead of keep it in the file. @skyostil

The "", [unknown]" is the pc with no module.

dj2 commented 8 years ago

Given that we're killing the v8.log file, I think what we have covers the v8 sampler code. We can file individual issues if we run into things that don't parse correctly.