summaryrefslogtreecommitdiff
path: root/DevTools/ProfileViewer
AgeCommit message (Collapse)Author
2020-07-01Profiler: Rename from ProfileViewer :^)Andreas Kling
2020-06-13AK: JsonParser improvementsMatthew Olsson
- Parsing invalid JSON no longer asserts Instead of asserting when coming across malformed JSON, JsonParser::parse now returns an Optional<JsonValue>. - Disallow trailing commas in JSON objects and arrays - No longer parse 'undefined', as that is a purely JS thing - No longer allow non-whitespace after anything consumed by the initial parse() call. Examples of things that were valid and no longer are: - undefineddfz - {"foo": 1}abcd - [1,2,3]4 - JsonObject.for_each_member now iterates in original insertion order
2020-05-29Meta: Add a script check the presence of "#pragma once" in header filesEmanuele Torre
.. and make travis run it. I renamed check-license-headers.sh to check-style.sh and expanded it so that it now also checks for the presence of "#pragma once" in .h files. It also checks the presence of a (single) blank line above and below the "#pragma once" line. I also added "#pragma once" to all the files that need it: even the ones we are not check. I also added/removed blank lines in order to make the script not fail. I also ran clang-format on the files I modified.
2020-05-21LibGUI: Get rid of Model::ColumnMetadata and always use auto-sizingAndreas Kling
Auto-sizing of view columns is now enabled by default. This removes the last remaining need for ColumnMetadata, so this patch gets rid of it.
2020-05-21LibGUI: Add Model::Role::TextAlignment and remove from ColumnMetadataAndreas Kling
2020-05-15ProfileViewer: Fix opening the kernel imageSergey Bugaev
The kernel image is now at /boot/Kernel (not /boot/kernel), so adjust the paths accordingly.
2020-05-14Build: Switch to CMake :^)Sergey Bugaev
Closes https://github.com/SerenityOS/serenity/issues/2080
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