Commit graph

23021 commits

Author SHA1 Message Date
Daniel Bertalan 515e2d9734 AK: Use conditionally trivial special member functions
This commit makes use of the conditionally trivial special member
functions introduced in C++20. Basically, `Optional` and `Variant`
inherits whether its wrapped type is trivially copy constructible,
trivially copy assignable or trivially destructible. This lets the
compiler optimize optimize a large number of their use cases.

The constraints have been applied to `Optional`'s converting
constructors too in order to make the API more explicit.

This feature is not supported by Clang yet, so we use conditional
compilation so that Lagom can be built on macOS. Once Clang has P0848R3
support, these can be removed.
2021-07-04 07:24:41 +04:30
Daniel Bertalan 6c0b9919ce FileManager: Remove explicit T to Optional<T> conversion 2021-07-04 07:24:41 +04:30
Daniel Bertalan 9323d459b4 Tests: Add test for supported operation type traits 2021-07-04 07:24:41 +04:30
Daniel Bertalan 84ddecae8a AK: Add type traits describing supported operations
This will allow us to make `Optional`, `Variant`, and possibly other
data structures conditionally trivially constructible, destructible,
copyable or movable based on their type parameters.
2021-07-04 07:24:41 +04:30
Idan Horowitz e480d69130 LibJS: Bring ArrayCreate and ArrayConstructor closer to spec
Specifically, this now explicitly takes the length, adds missing
exceptions checks to calls with user-supplied lengths, takes and uses
the prototype argument, and fixes some spec non-conformance in
ArrayConstructor and its native functions around the use of ArrayCreate
2021-07-04 00:51:43 +01:00
Idan Horowitz 5ee1ae37b2 LibJS: Add the IteratorStep abstract iterator operation
As well as add 2 missing exception checks in the IteratorComplete and
IteratorValue abstract iterator operations.
2021-07-04 00:51:43 +01:00
Erik Biederstadt ba4d367dea HackStudio: Remove old form editing logic
In the past Hack Studio had the ability to design GUI widgets via `.frm`
files. We now use the GML playground for this purpose, and the old code
can be removed. `.frm` files are now treated as plain text files.

This commit also fixes a crash when opening `.frm` files.
`m_form_inner_container` was never instantiated, and caused a null
pointer dereference.
2021-07-04 01:14:54 +02:00
Gunnar Beutner e1ff30a360 Toolchain+Userland: Enable TLS for x86_64
This is not technically a toolchain change, but it does require
rebuilding the toolchain for x86_64 (and just that).
2021-07-04 01:07:28 +02:00
Gunnar Beutner 371c852fc0 LibELF: Swap the arguments for negative_offset_from_tls_block_end
Now that m_tls_offset points to the start of the TLS block the argument
order makes more sense this way.
2021-07-04 01:07:28 +02:00
Gunnar Beutner 251eaad8f0 LibELF: Fix relocation support for 'static __thread' variables 2021-07-04 01:07:28 +02:00
Gunnar Beutner 5f6ee4c539 LibELF: Save the negative TLS offset in m_tls_offset
This makes it unnecessary to track the symbol size which just isn't
available for unexported symbols (e.g. for 'static __thread').
2021-07-04 01:07:28 +02:00
Gunnar Beutner a0a38e1e84 LibELF: Implement TLS relocation support for x86_64 2021-07-04 01:07:28 +02:00
Gunnar Beutner c51b49a8cb Kernel: Implement TLS support for x86_64 2021-07-04 01:07:28 +02:00
Gunnar Beutner 04a912f68f Kernel: Hide the implementation detail that MSRs use two registers
When retrieving and setting x86 MSRs two registers are required. The
existing setter and getter for the MSR class made this implementation
detail visible to the caller. This changes the setter and getter to
use u64 instead.
2021-07-04 01:07:28 +02:00
Gunnar Beutner a09e6171a6 Kernel: Don't allow allocate_tls() if the process has multiple threads
We can't safely update the other threads' FS selector. This shouldn't
be a problem in practice because allocate_tls() is only used by the
loader.
2021-07-04 01:07:28 +02:00
Gunnar Beutner 5ca95b3957 Kernel: Replace some hard-coded memory addresses with macros 2021-07-04 01:07:28 +02:00
Gunnar Beutner e8a25f3795 DynamicLoader: Remove -fbuilding-libgcc hack
This won't be necessary anymore after a toolchain rebuild.
2021-07-04 00:35:35 +02:00
Gunnar Beutner 43e46df561 Ports: Remove obsolete patches for ninja 2021-07-04 00:35:35 +02:00
Gunnar Beutner ef4efce897 Ports: Remove obsolete patches for libexpat 2021-07-04 00:35:35 +02:00
Gunnar Beutner 27005fe846 Ports: Remove obsolete patches for cmake 2021-07-04 00:35:35 +02:00
Gunnar Beutner 12c98105bc Ports: Remove obsolete patches for chester 2021-07-04 00:35:35 +02:00
Gunnar Beutner 8c062e8bef Ports: Remove obsolete patches for bc 2021-07-04 00:35:35 +02:00
Gunnar Beutner 18ae608815 Ports: Remove obsolete patches for libicu 2021-07-04 00:35:35 +02:00
Gunnar Beutner f52bf15f8d Assistant: Make more of the classes final 2021-07-03 22:38:53 +02:00
Gunnar Beutner 52a3226f6d Assistant: Make the bitmap accessor pure virtual
Assistant looks broken when a result doesn't have an icon.
2021-07-03 22:38:53 +02:00
Gunnar Beutner 6af08f950a Assistant: Add missing bitmap accessor for terminal actions 2021-07-03 22:38:53 +02:00
Edwin Hoksberg a4b4397a10 Assistant: Skip URL provider if query is empty or provider specific 2021-07-03 22:38:40 +02:00
Andreas Kling c06f72c264 Assistant: Don't index the /proc and /sys directories
Roughly 20% of indexing time in a fresh install was spent on traversing
these kernel-generated directories. Let's just not. :^)
2021-07-03 22:14:09 +02:00
Andreas Kling 94def5ae9d Assistant: Avoid copying the result vectors when providers finish
Just move() them instead to cut down on the copying. :^)
2021-07-03 22:14:09 +02:00
Andreas Kling e4199beccc Assistant: Keep the set of providers in a Vector for easy iteration 2021-07-03 22:14:09 +02:00
Idan Horowitz ee991fa4e0 CI: Manually cleanup previous self-hosted test262 run workspace folder
Unlike the github hosted runners, github's software for self-hosted
runners does not do this automatically.
2021-07-03 19:45:04 +01:00
Idan Horowitz e9ab9ca5a0 Documentation: Add git to the list of self-hosted runner requirements
Github-hosted runners have this pre-installed, so our actions script
do not install it themselves.
2021-07-03 19:45:04 +01:00
Gunnar Beutner f2dca54bf0 Documentation: Increase recommended amount of RAM
The VM won't boot with 32MB because GRUB won't be able to load the
kernel which is about 114MB.
2021-07-03 20:08:54 +02:00
Gunnar Beutner 48f8dea28f Documentation: Update VirtualBox documentation for x86_64
The machine type "Other/Unknown (64-bit)" works for both the x86_64 as
well as the i686 build architecture.
2021-07-03 20:08:54 +02:00
Gunnar Beutner de152832be Meta: Add missing quotes in Meta/run.sh 2021-07-03 20:08:54 +02:00
Andreas Kling 4fce72a967 Assistant: Use fstatat() while building FileProvider path cache
Using fstatat() allows the kernel to do relative path resolution as
opposed to absolute path resolution, which is significantly faster
and allows us to build the path cache sooner. :^)
2021-07-03 20:03:53 +02:00
Andreas Kling 801f74362e Assistant: Use StringView more in FileProvider fuzzy matching code
By not allocating new String objects, the fuzzy matcher becomes a lot
faster and more responsive while typing. :^)
2021-07-03 20:03:53 +02:00
Andreas Kling d640031214 Assistant: Use FileIconProvider for FileProvider query results
Instead of showing the default "folder" icon for all file results,
we now show an appropriate icon for the given file. :^)
2021-07-03 20:03:53 +02:00
Andreas Kling 513e67e2eb Assistant: Make Result bitmaps virtual/lazy
Result classes now return their bitmap via a virtual Gfx::Bitmap*
getter. This effectively makes bitmap fetching lazier, since only
results that end up on screen actually get asked for their bitmap.

This drastically reduces the amount of work done by the FileProvider
background worker.
2021-07-03 20:03:53 +02:00
Idan Horowitz 1c29e2f3f7 CI: Run the test262 workflow on a self-hosted runner
This should speed it up quite a bit and give us more consistent
performance. (So this workflow could eventually be used for perf
regression testing as well)
2021-07-03 18:32:39 +01:00
Idan Horowitz 969b717e17 Documentation: Add instructions for setting up self-hosted runners 2021-07-03 18:32:39 +01:00
Idan Horowitz 0e35c50da3 Meta: Use virtualization acceleration if available in CI runs 2021-07-03 18:32:39 +01:00
Liav A 458ac9bbba Kernel/x86_64: Halt if we happen to boot on non-x86_64 machine 2021-07-03 18:40:37 +02:00
Marcus Nilsson e0cf6f3cf0 TextEditor: Reset editor width when disabling preview mode
When disabling preview mode, reset the fixed width of m_editor so that
it fills out the window again even after resizing the splitter.
2021-07-03 17:36:50 +02:00
Marcus Nilsson 2264de9921 LibGUI/TextEditor: Set cut and copy actions to disabled on init
We can presume that there is nothing to cut or copy on init since
nothing is selected yet.
2021-07-03 17:36:50 +02:00
Tristan Menke 9f117a79f6 Documentation: Add workaround for blackscreen using WSL+QEMU6.x
This workaround disables the in-kernel interrupt controller.
This impacts the VM performance and should probably be removed
when the workaround is no longer needed.

This workaround was posed by stelar7.
See #7523
2021-07-03 17:32:33 +02:00
Andreas Kling e4a55404f1 LibCore: Avoid duplicate '/' in DirIterator::next_full_path()
When the root path of a DirIterator ends with '/', we don't need to
add another '/' before appending the file name.

Fixes an issue where files found by Assistant had 2 leading slashes.
2021-07-03 16:43:08 +02:00
Liav A 70278d57ba Meta: Add a few more graphics devices to the Q35 for testing purposes 2021-07-03 16:28:49 +02:00
Liav A 00e4cc23cb Kernel/Graphics: Unblank the screen when initializing bochs display 2021-07-03 16:28:49 +02:00
Liav A 3fae7ca113 Kernel: Clarify and make it easy to not use raw numbers
Let's put the PCI IDs as enums in the PCI namespace so they're free to
pollute that namespace, but it's also more easier to use them.
2021-07-03 16:28:49 +02:00