summaryrefslogtreecommitdiff
path: root/DevTools/ProfileViewer
AgeCommit message (Collapse)Author
2020-05-06Misc: Replace "String(string_view)" with "string_view.to_string()"Linus Groh
StringView::to_string() was added in 917ccb1 but not actually used anywhere yet.
2020-04-21LibGUI: Make it easier to create checkable GUI::ActionsAndreas Kling
This patch adds GUI::Action::create_checkable() helpers that work just like the existing create() helpers, but the actions become checkable(!) Clients are no longer required to manage the checked state of their actions manually, but instead they will be checked/unchecked as needed by GUI::Action itself before the activation hook is fired.
2020-04-21LibGUI: Make MenuBar a Core::ObjectAndreas Kling
This makes it show up in Inspector with all the menus inside it. :^)
2020-04-20LibELF: Make ELF::Loader RefCountedItamar
2020-04-18ProfileViewer: Make the invert menu item visible again :^)Emanuel Sprung
2020-04-12ProfileViewer: Switching to percent mode should take effect immediatelyAndreas Kling
2020-04-12ProfileViewer: Symbolicate the disassembled instructionsAndreas Kling
Instead of "call 0x0811d6ac", we now say "call 0x0811d6ac <malloc>" :^)
2020-04-12LibGUI: Add a way for models to update without invalidating indexesAndreas Kling
This is really just a workaround to keep SystemMonitor's process table working right wrt selection retention during resorts (while also doing full index invalidation on things like ProfileViewer inversion.) It's starting to feel like the model abstraction is not super great and we'll need a better approach if we want to actually build some more dynamic functionality into our views.
2020-04-12ProfileViewer: Put the tree and disasembly views in a vertical splitterAndreas Kling
2020-04-11ProfileViewer: Open /boot/kernel for disassembly if possibleAndreas Kling
If you have access to /boot/kernel, you can see the disassembly of kernel code in ProfileViewer. This is really useful! :^)
2020-04-11ProfileViewer: Don't crash when we can't disassemble somethingAndreas Kling
2020-04-11LibELF: Move ELF classes into namespace ELFAndrew Kaster
This is for consistency with other namespace changes that were made a while back to the other libraries :)
2020-04-11ProfileViewer: Color code the instruction rows by sample percentageAndreas Kling
We now "heat color" the instruction-level samples so you can get a nice visual picture of where time is spent in functions. :^)
2020-04-11ProfileViewer: Don't skip the innermost frame when loading profilesAndreas Kling
We were skipping the innermost frame as a workaround for the kernel putting garbage data there. Now that the kernel puts the instruction poiner there, we can load the frame normally! :^)
2020-04-11ProfileViewer: Remove debug spam during disassemblyAndreas Kling
2020-04-11ProfileViewer: Highlight instructions with >0 samples in yellowAndreas Kling
2020-04-11ProfileViewer: Add an instruction-level sample viewerAndreas Kling
When you select a function in the profile tree, we will now display a per-instruction breakdown of aggregated samples in that function. This allows us to look much closer at what our code is doing! :^)
2020-04-07ProfileViewer: Remove nonsense no-opAndreas Kling
2020-04-07ProfileViewer: Remove an unnecessary call to String::format()Andreas Kling
2020-04-04LibGUI: Add MenuBar::add_menu(name)Andreas Kling
This allows us to construct menus in a more natural way: auto& file_menu = menubar->add_menu("File"); file_menu.add_action(...); Instead of the old way: auto file_menu = GUI::Menu::construct(); file_menu->add_action(...); menubar->add_menu(file_menu);
2020-03-08AK: Add global FlatPtr typedef. It's u32 or u64, based on sizeof(void*)Andreas Kling
Use this instead of uintptr_t throughout the codebase. This makes it possible to pass a FlatPtr to something that has u32 and u64 overloads.
2020-03-07LibGUI: Move Icon and FontDatabase into the GUI namespaceShannon Booth
We also clean up some old references to the old G prefixed GUI classes This also fixes a potential bug with using: C_OBJECT_ABSTRACT(GAbstractButton) instead of C_OBJECT_ABSTRACT(AbstractButton)
2020-03-04LibCore: Make Core::Object::add<ChildType> return a ChildType&Andreas Kling
Since the returned object is now owned by the callee object, we can simply vend a ChildType&. This allows us to use "." instead of "->" at the call site, which is quite nice. :^)
2020-03-04LibGUI: Use GUI::Window::set_main_widget<WidgetType>() in clientsAndreas Kling
2020-03-04LibGUI: Use set_layout<LayoutType>() in lots of client codeAndreas Kling
2020-03-02ProfileViewer: Add mode that shows percentages instead of sample countsAndreas Kling
Sometimes it's much nicer to work with percentages than raw sample counts when browsing through a profile. :^)
2020-03-02ProfileView: Show "self" sample counts in profilesAndreas Kling
The "self" sample count is the number of samples that had this specific frame as its innermost stack frame (leaf nodes in the profile tree.)
2020-03-02ProfileViewer: Parse the JSON input directly to Profile::EventAndreas Kling
We were going from "new JSON format" => "old JSON format" => Event. This made loading longer profiles unnecessarily slow. It's still pretty slow, and we should... profile it! :^)
2020-03-02ProfileViewer: Rename Profile::Sample => Profile::EventAndreas Kling
2020-02-29ProfileViewer: Unbreak after Vector size_t changesAndreas Kling
Another backwards iteration accident.
2020-02-25AK: Make Vector use size_t for its size and capacityAndreas Kling
2020-02-23LibGUI: Remove parent parameter to GUI::Widget constructorAndreas Kling
2020-02-23LibGUI: Make GUI::Frame have the 2px sunken container look by defaultAndreas Kling
The overwhelming majority of GUI::Frame users set the same appearance, so let's just make it the default.
2020-02-22ProfileViewer: Fix treeview selection looking unselected on Left keyAndreas Kling
When pressing the Left arrow key, we now travel to the parent_index() of the currently selected index. Our implementation of parent_index() was always returning an index with column 0, instead of using the same column as the current index. This prevented the selected item from looking selected.
2020-02-22ProfileViewer: Remove loading code for the old file formatAndreas Kling
We're still jumping through all kinds of silly hoops to load the new format, and this commit only gets rid of the API for loading old files.
2020-02-22ProfileViewer: Symbolicate unknown addresses as "??" for nowAndreas Kling
This makes unknown addresses accumulate their children together in the treeview, which turns out to be a bit more useful than having hundreds of unique garbage addresses each with their own subtree.
2020-02-22ProfileViewer: Symbolicate kernel addresses when possibleAndreas Kling
ProfileViewer will now attempt to open /boot/kernel and use that to symbolicate kernel addresses (anything above the 3GB mark.) In other words, if you run ProfileViewer as root, on a profile that was generated by root, you can now see kernel functions properly as well. This is not available to non-privileged users.
2020-02-22Kernel+ProfileViewer: Move symbolication to userspace for time profilesAndreas Kling
This makes the time profiles look like the memory profiles so we can use the userspace symbolication code in ProfileViewer.
2020-02-16LibGUI: Add forwarding headerAndreas Kling
This patch adds <LibGUI/Forward.h> and uses it a bunch. It also dragged various header dependency reduction changes into it.
2020-02-06LibGUI: Remove leading G from filenamesAndreas Kling
2020-02-06LibCore: Remove leading C from filenamesAndreas Kling
2020-02-06LibGUI: Rename {H,V}BoxLayout => {Horizontal,Vertical}BoxLayoutAndreas Kling
2020-02-06LibGfx: Rename from LibDraw :^)Andreas Kling
2020-02-06LibDraw: Put all classes in the Gfx namespaceAndreas Kling
I started adding things to a Draw namespace, but it somehow felt really wrong seeing Draw::Rect and Draw::Bitmap, etc. So instead, let's rename the library to LibGfx. :^)
2020-02-02ProfileViewer: Only show live allocations by defaultAndreas Kling
For memory profiles, we now keep track of which allocations are still live at the end of the selected timeline range and only show those. This is really cool, I have to admit. :^)
2020-02-02ProfileViewer: Add basic support for loading "perfcore" filesAndreas Kling
"perfcore" is the file that the kernel generates after a process that was recording performance events has exited. This patch teaches ProfileViewer how to load (and symbolicate!) those files so that we can look at them. This will need a bunch more work to make it truly useful.
2020-02-02LibGUI: Put all classes in the GUI namespace and remove the leading GAndreas Kling
This took me a moment. Welcome to the new world of GUI::Widget! :^)
2020-02-02LibCore: Put all classes in the Core namespace and remove the leading CAndreas Kling
I've been wanting to do this for a long time. It's time we start being consistent about how this stuff works. The new convention is: - "LibFoo" is a userspace library that provides the "Foo" namespace. That's it :^) This was pretty tedious to convert and I didn't even start on LibGUI yet. But it's coming up next.
2020-02-02LibGUI: Add GHBoxLayout and GVBoxLayout convenience classesAndreas Kling
2020-01-19Kernel: Let's say that everything < 3GB is user virtual memoryAndreas Kling
Technically the bottom 2MB is still identity-mapped for the kernel and not made available to userspace at all, but for simplicity's sake we can just ignore that and make "address < 0xc0000000" the canonical check for user/kernel.