summaryrefslogtreecommitdiff
path: root/Userland
AgeCommit message (Collapse)Author
2021-02-26LibELF: Consolidate main executable loading a bitAndreas Kling
Merge the load_elf() and commit_elf() functions into a single load_main_executable() function that takes care of both things. Also split "stage 3" into two separate stages, keeping the lazy relocations in stage 3, and adding a stage 4 for calling library initialization functions. We also make sure to map the main executable before dealing with any of its dependencies, to ensure that non-PIE executables get loaded at their desired address.
2021-02-26disk_benchmark: Modernize this code a little bitAndreas Kling
Use the new formatting helpers and such.
2021-02-26LibGUI: Set correct open action for LinkLabel context menuthankyouverycool
Replaces the Open... common action for files with more appropriate Show in File Manager, as the desktop context menu uses
2021-02-26HackStudio: Set correct icons, text and location in menusthankyouverycool
Adds correct icon to New Project, moves Wrapping Mode to more traditional View, and truncates overly verbose Project entries
2021-02-26TextEditor: Fix passing null parent to AboutDialogthankyouverycool
Refactors menubar creation to avoid passing a null parent window to AboutDialog during construction. Fixes #5177 in part
2021-02-26Terminal: Remove unnecessary ellipses and capitalize name in menuthankyouverycool
2021-02-26Spreadsheet: Merge File menu into 'Spreadsheet' app menuthankyouverycool
This is the common convention among the other apps. Also remove a superfluous separator
2021-02-26HexEditor: Fix nullptr pass to AboutDialog and clean up menusthankyouverycool
Refactors menubar creation to avoid a null parent window during construction; moves search options to the more traditional edit menu; creates and exclusive action group for bytes per row Fixes #5177 in part
2021-02-26Browser: Add Go menu and move Bookmarks bar toggle to Viewthankyouverycool
2021-02-25Spreadsheet: Fix cell identifier labelJelle Raaijmakers
Commit 6a6f19a72 broke the cell position display in the top left of the Spreadsheet window and the title of the cell type dialog, causing the application to crash when interacting with cells beyond column FE.
2021-02-25LibGUI: Paint all widgets as toolbars in ToolBarContainerthankyouverycool
Fixes missing shadow and highlight threeds for Bookmark bar
2021-02-25LibGUI: Improve IconView rubberband performanceTom
Rather than invalidating the entire window, which is very expensive on the transparent desktop widget, just invalidate the areas that actually need updating.
2021-02-25LibGUI: Avoid needlessly copying vectors of rectsTom
2021-02-25LibGUI: Process pending invalidations when handling paint eventsTom
It's possible that pending invalidation rectangles haven't been flushed when processing a paint event. Handle them right away, which avoids another round trip.
2021-02-25LibGUI: Constrain widgets to invalidating themselves onlyTom
2021-02-25LibC: Make it compile on 64-bitAndreas Kling
It won't actually work on 64-bit yet, but let's do our future selves a favor and make it compile.
2021-02-25LibC: Add x86_64 implementation of setjmp() and longjmp()Andreas Kling
2021-02-25FileManager: change icon for Show in File ManagerMorc - Richard Gráčik
A small detail to match with the new File Manager icon in context menu. :^)
2021-02-25Base: Update some icons for color, quality and consistencythankyouverycool
And remove unused filetypes
2021-02-25Base: Add new icons for fonts and File Managerthankyouverycool
2021-02-24LibC: Avoid double memory clearing in calloc()Andreas Kling
calloc() was internally calling malloc_impl() which would scrub out all the allocated memory with the scrub byte (0xdc). We would then immediately zero-fill the memory. This was obviously a waste of time, and our hash tables were doing it all the time. :^)
2021-02-24LibGUI: Let cursor start a wrapped lineAngus Gibson
In line wrapping mode, the same column refers both to the end of a visual line and the beginning of the subsequent visual line. This meant that the cursor couldn't move to the beginning of a visual line. Now, we only let the cursor go to the end of a physical line, not the visual line. Closes #4786
2021-02-24LibGUI: Remove redundant cursor updateAngus Gibson
2021-02-24Calculator: Add support for copy+paste using system clipboardBrendan Coles
2021-02-24LibGUI: Account for the row and column headers when painting a TableViewAnotherTest
Otherwise we'd be drawing all the rows, instead of the ones in view. Fixes #5483.
2021-02-24Spreadsheet: Store the column index in a Position instead of its nameAnotherTest
This will make constructing (and destructing) Positions a lot cheaper (as it no longer needs to ref() and unref() a String). Resulted from #5483, but doesn't fix it.
2021-02-24Profiler: Add help documentationBrendan Coles
2021-02-24LibC+DynamicLoader: Move "transactional memory" GCC stubs to LibCAndreas Kling
Instead of having a special case in the dynamic loader where we ignore TM-related GCC symbols, just stub them out in LibC like we already do for various other things we don't support.
2021-02-24LibELF: Convert more string literals to StringView literals.Brian Gianforcaro
Most of these won't have perf impact, but the optimization is practically free, so no harm in fixing these up.
2021-02-24LibELF: Use StringView literal syntax to build section names.Brian Gianforcaro
2021-02-24AK: Make dbgln_if() avoid evaluating the arguments when disabledAnotherTest
Naturally, this makes the `enabled` flag on dbgln() obsolete.
2021-02-24LibLine: Note that the search() call modifies the bufferAnotherTest
Fixes #5465.
2021-02-24LibLine: Update the drawn cursor value when updating lazilyAnotherTest
2021-02-24LibLine: Properly update the main editor when clearing the search editorAnotherTest
This broke after the lazy update change :P
2021-02-24Profiler: Make sure rendered timestamps don't overflowSahan Fernando
If you drag-select a slice of the profile off of the side of the Profiler window, the profiler will try to render a negative start time, which will overflow. This commit fixes that bug by clamping timestamps to the start/end of the profile before rendering.
2021-02-24LibJS: Use const references to avoid some copies in the parserLinus Groh
2021-02-24Build: Build Userland with -O2, Kernel with -OsAndreas Kling
For some reason I don't yet understand, building the kernel with -O2 produces a way-too-large kernel on some people's systems. Since there are some really nice performance benefits from -O2 in userspace, let's do a compromise and build Userland with -O2 but put Kernel back into the -Os box for now.
2021-02-24LibJS: Let RegExpPrototype inherit from Object directlyLinus Groh
https://tc39.es/ecma262/#sec-properties-of-the-regexp-prototype-object The RegExp prototype object: - is an ordinary object. - is not a RegExp instance and does not have a [[RegExpMatcher]] internal slot or any of the other internal slots of RegExp instance objects. In other words: no need to have RegExpPrototype inherit from RegExpObject (we weren't even calling its initialize()).
2021-02-24LibJS: Make ArrayPrototype an Array objectLinus Groh
https://tc39.es/ecma262/#sec-properties-of-the-array-prototype-object The Array prototype object: [...] is an Array exotic object and has the internal methods specified for such objects. NOTE: The Array prototype object is specified to be an Array exotic object to ensure compatibility with ECMAScript code that was created prior to the ECMAScript 2015 specification.
2021-02-23Everywhere: Remove unused RELEASE_ASSERT macroAndreas Kling
2021-02-23Everywhere: Rename ASSERT => VERIFYAndreas Kling
(...and ASSERT_NOT_REACHED => VERIFY_NOT_REACHED) Since all of these checks are done in release builds as well, let's rename them to VERIFY to prevent confusion, as everyone is used to assertions being compiled out in release. We can introduce a new ASSERT macro that is specifically for debug checks, but I'm doing this wholesale conversion first since we've accumulated thousands of these already, and it's not immediately obvious which ones are suitable for ASSERT.
2021-02-23LibELF: Inline DynamicObject::hash_section()Andreas Kling
This was high up in profiles and gets almost entirely optimized out when inlined, so let's do that.
2021-02-23LibELF: Don't build barely-used section lookup table in ELF::ImageAndreas Kling
The name-to-section lookup table was only used in a handful of places, and none of them were calling it nearly enough to justify building a cache for it in the first place. So let's get rid of it and reduce startup time by a little bit. :^)
2021-02-23LibDebug: Fix build with -O2Andreas Kling
It turns out that LibDebug was the only thing that couldn't be built with -O2. We were neglecting to deal with some stream read errors.
2021-02-23LibELF: Avoid doing strlen() on everything while iterating GNU hashAndreas Kling
It's a lot faster to iterate the GNU hash tables if we don't have to compute the length of every symbol name before rejecting it anyway while comparing the first character. :^)
2021-02-23LibELF: Rename lookup_elf_symbol() => lookup_sysv_symbol()Andreas Kling
We have two kinds of lookup, SYSV and GNU hash. Both are ELF lookups.
2021-02-23LibELF: Avoid calling strlen() in DynamicObject::hash_section()Andreas Kling
The long-term fix here is to make StringView recognize compile-time string literals and do the right thing automatically.
2021-02-23LibELF: Don't recompute the same ELF hashes over and overAndreas Kling
When performing a global symbol lookup, we were recomputing the symbol hashes once for every dynamic object searched. The hash function was at the very top of a profile (15%) of program startup. With this change, the hash function is no longer visible among the top stacks in the profile. :^)
2021-02-23LibELF: Remove an ungodly amount of DYNAMIC_LOAD_DEBUG loggingAndreas Kling
This logging mode was unusable anyway since it spams way too much. The dynamic loader is in a pretty good place now anyway, so I think it's okay for us to drop some of the bring-up debug logging. :^) Also, we have to be careful with dbgln_if(FOO_DEBUG, "{}", foo()) where foo() is something expensive, since it might get evaluated even if !FOO_DEBUG.
2021-02-23LibELF: Move ELF hash functions to their own file (and make constexpr)Andreas Kling