summaryrefslogtreecommitdiff
path: root/Userland/DevTools
AgeCommit message (Collapse)Author
2021-08-13Profiler: Store event type as enumAndreas Kling
Also check for the most common event type (sample) first instead of leaving it as the fallback. This avoids a lot of string comparisons while parsing profiles.
2021-08-13Profiler: Remove "Signpost " prefix from timeline tooltipsAndreas Kling
2021-08-12Revert "HackStudio: Remove noop code when opening the project"Andreas Kling
This reverts commit 012fc3f92317b1f1c96a9829755593463d9630e1.
2021-08-12Userland: Fix PATH environment variable orderingJean-Baptiste Boric
2021-08-12HackStudio: Remove noop code when opening the projectKarol Kosek
28b1e66b51ec7b4552a12ac5ee37ecd6b96d4541 made that the m_all_editor_wrappers vector is cleared everytime a project path is changed (the m_project if check is just for the app launch -- the vector is empty there anyway), making the code never execute.
2021-08-12HackStudio: Show the 'Save as...' dialog when saving uncreated fileKarol Kosek
Previously when user wanted to save an uncreated file, the program would just quietly ignore the save request, without giving any message. This can be seen when creating a new editor in split view mode.
2021-08-12HackStudio: Add 'Save as...' actionKarol Kosek
Not adding it to the toolbar, because it has the same icon as a typical 'Save' action.
2021-08-12HackStudio: Show text editor after starting the applicationKarol Kosek
The user can now start typing text instead of creating a file first. This also enables drag-and-dropping a file as soon as the application starts.
2021-08-12Kernel: Make sys$perf_register_string() generate the string ID'sAndreas Kling
Making userspace provide a global string ID was silly, and made the API extremely difficult to use correctly in a global profiling context. Instead, simply make the kernel do the string ID allocation for us. This also allows us to convert the string storage to a Vector in the kernel (and an array in the JSON profile data.)
2021-08-12Profiler: Parse and render signpost stringsAndreas Kling
The first perf_event argument to a PERF_EVENT_SIGNPOST is now interpreted as a string ID (in the profile strings set.) This allows us to generate signposts with custom strings. :^)
2021-08-12Profiler: Parse and paint profile signpost events :^)Andreas Kling
Signposts generated by perf_event(PERF_EVENT_SIGNPOST) now show up in profile timelines, and if you hover them you get a tooltip with the two arguments passed with the event.
2021-08-11HackStudio: Make "Open project" action open in the current project pathKarol Kosek
Prior this change, the action opened a File Picker in user home directory. Changing the startup path to a project path might make correcting the path or switching between different projects a bit faster, as you don't have to go through the subdirectories all over again. It's also the path that's showed in the project tree view.
2021-08-10Profiler: Disassemble the entire function if the symbol is a functionAli Mohammad Pur
Previously the view would've cut off at the last instruction that was hit in the profile, which is not the right behaviour for functions.
2021-08-10Profiler: Use SelectionBehavior::SelectRowssin-ack
Profiler uses the TreeView in a tabular fashion, and so should set the selection behavior appropriately.
2021-08-10UserspaceEmulator: Fail sys$map_time_page() with ENOSYS for nowAndreas Kling
This allows LibC to fall back to sys$clock_gettime() until we can add support for the kernel time page to UserspaceEmulator.
2021-08-10Kernel+UserspaceEmulator: Remove unused sys$gettimeofday()Andreas Kling
Now that LibC uses clock_gettime() to implement gettimeofday(), we can get rid of this entire syscall. :^)
2021-08-10UserspaceEmulator: Move all the profiling details into the EmulatorAli Mohammad Pur
Them being in the global namespace doesn't have a lot of fans, it seems.
2021-08-10Profiler: Disassemble the containing function for non-function symbolsAli Mohammad Pur
This can happen if the symbol is part of a switch-case, and not a function, which would previously have made the disassembly view appear empty. Now we disassemble the containing function, starting at the given label and continuing up until the last captured instruction.
2021-08-10Profiler: Show the symbol address in object fileAli Mohammad Pur
2021-08-10UserspaceEmulator+LibC: Add support for Region-of-Interest profilingAli Mohammad Pur
2021-08-09Everywhere: Use tobyase@serenityos.org for my copyright headersTobias Christiansen
2021-08-08UserspaceEmulator: Use `for_each_region_of_type` in `find_text_region`Daniel Bertalan
Since we now have this helper template, we can make our code cleaner.
2021-08-08UserspaceEmulator: Make symbolication work when .text isn't the firstDaniel Bertalan
... segment This happens with binaries build with Clang or with a custom linker script. If this is the case, offsets should be calculated not from the base address of `.text`, but from the first section loaded for the library. This commit moves all UserspaceEmulator symbolication into a common helper function and fixes a FIXME.
2021-08-08UserspaceEmulator: Fix typo in a method nameDaniel Bertalan
Changes `load_library_from_adress` to `load_library_from_address`.
2021-08-07LibCpp: Do macro substitution in the preprocessor instead of the parserItamar
After this change, the parser is completely separated from preprocessor concepts.
2021-08-07LibCpp: Import definitions from headers while processingItamar
When the preprocessor encounters an #include statement it now adds the preprocessor definitions that exist in the included header to its own set of definitions. We previously only aggregated the definitions from headers after processing the source, which was less correct. (For example, there could be an #ifdef that depends on a definition from another header).
2021-08-07LibCpp: Do lexing in the PreprocessorItamar
We now call Preprocessor::process_and_lex() and pass the result to the parser. Doing the lexing in the preprocessor will allow us to maintain the original position information of tokens after substituting definitions.
2021-08-06LibGUI+Applications: Rename Model::is_valid to is_within_rangesin-ack
The previous name did not describe what the function checked, and was easy to confuse with ModelIndex::is_valid.
2021-08-06Everywhere: Replace Model::update() with Model::invalidate()sin-ack
Most of the models were just calling did_update anyway, which is pointless since it can be unified to the base Model class. Instead, code calling update() will now call invalidate(), which functions identically and is more obvious in what it does. Additionally, a default implementation is provided, which removes the need to add empty implementations of update() for each model subclass. Co-Authored-By: Ali Mohammad Pur <ali.mpfard@gmail.com>
2021-08-06Profiler: Display source location information in the disassembly viewAli Mohammad Pur
With this, we can now have some amount of source-level profiling information :^)
2021-08-06LibDebug+Everywhere: Make DebugInfo not own the ELF imageAli Mohammad Pur
This is required to avoid copying the image where otherwise a reference would be enough.
2021-08-06UserspaceEmulator: Optionally generate a Profiler-compatible profileAli Mohammad Pur
`ue --profile --profile-file ~/some-file.profile id` can now generate a full profile (instruction-by-instruction, if needed), at the cost of not being able to see past the syscall boundary (a.la. callgrind). This makes it significantly easier to profile seemingly fast userspace things, like Loader.so :^)
2021-08-02HackStudio: Enable building HackStudio on x86_64Gunnar Beutner
This implements bits and pieces to get the debugging functionality to build. No testing has been done to check whether it actually works because GCC doesn't currently work.
2021-08-01HackStudio: Properly close previous project when opening a new oneLennon Donaghy
Previously files in the open files view would stay open from the previous project, and files in the new project with the same name as files in the old one would be inaccessible, with the old ones showing up instead. Now all files and open editors are closed before a new project is opened. Fixes #9103
2021-08-01DevTools: Remove unused header includesBrian Gianforcaro
2021-07-31HackStudio+TextEditor: Sync extensions from the FileIconProvider fileKarol Kosek
This adds more possible extensions for highlighting C/C++ files and JavaScript module files.
2021-07-31HackStudio: Don't use 'else' after 'return'Karol Kosek
2021-07-31HackStudio: Add syntax highlighting for HTML, Shell, and SQL filesKarol Kosek
.html files were recognised before -- the name was shown on the statusbar, but it didn't actually enable the syntax highlighting. This also sneaks a highlighting for JSON using JS highlighting. It isn't technically correct, but so does TextEditor. :^)
2021-07-29Profiler: Don't perform disassembly when disassembly view is hiddenAndreas Kling
2021-07-29HackStudio: Add GML Preview action tabConor Byrne
This allows us to show a GML Preview in realtime via HackStudio::GMLPreviewWidget! :^)
2021-07-29HackStudio: Add autocompletion for GML filesConor Byrne
2021-07-29LibGUI+Playground: Move GMLAutocompleteProvider to LibGUIConor Byrne
2021-07-28HackStudio: Tweak splitter spacings in the main UIAndreas Kling
The splitters all felt a little bit too small and hard-to-grab. This patch puts a little more fat on them.
2021-07-27Kernel: Support loading the kernel at almost arbitrary virtual addressesGunnar Beutner
This enables further work on implementing KASLR by adding relocation support to the pre-kernel and updating the kernel to be less dependent on specific virtual memory layouts.
2021-07-26HackStudio: Resize editors when removing panesNicholas Hollett
Splitter does weird things when you resize and then remove children. This works around the limitation by forcing at least one of the editors to fill the space. It's janky, but at least doesn't result in the last editor not filling the window.
2021-07-24GML Playground: Add Vim emulationPhoenix
2021-07-22UserspaceEmulator: Move to using the new SoftFPUHendiadyoin1
2021-07-22UserspaceEmulator: Implement SoftFPU instructionsHendiadyoin1
This implements almost all instructions related to the FPU, including all MMX instructions as well. A lot of these were copied and adjusted from the SoftCPU implementation. The next big milestone would be QNan detection and ShadowValue handling.
2021-07-22UserspaceEmulator: Sketch out a SoftFPU interfaceHendiadyoin1
2021-07-22LibX86: Add missing MovD and MovQ instructionsHendiadyoin1
These are placeholders for now