summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-12-11Everywhere: Fix -Winconsistent-missing-override warnings from ClangDaniel Bertalan
This option is already enabled when building Lagom, so let's enable it for the main build too. We will no longer be surprised by Lagom Clang CI builds failing while everything compiles locally. Furthermore, the stronger `-Wsuggest-override` warning is enabled in this commit, which enforces the use of the `override` keyword in all classes, not just those which already have some methods marked as `override`. This works with both GCC and Clang.
2021-12-11Kernel: Fix overly loose MemoryManager::kernel_region_from_vaddr()Andreas Kling
It's not enough to just find the largest-address-not-above the argument, we must also check that the found region actually contains the argument. Regressed in a23edd42b869a16e11f4d6ca9071d6b570dc219c, thanks to Idan for pointing this out.
2021-12-11Meta: Run QEMU with QMP socketAndreas Kling
This allows external connections to the QEMU monitor via QMP.
2021-12-11Kernel: Make PhysicalRegion::return_page() do arithmetic instead of loopAndreas Kling
Most of the time, we will be freeing physical pages within the full-sized zones. We can do some simple math to find the right zone immediately instead of looping through the zones, checking each one. We still do loop through the slack/remainder zones at the end. There's probably an even nicer way to solve this, but this is already a nice improvement. :^)
2021-12-11Kernel: Simplify 64-bit HPET reads on x86_64Andreas Kling
We don't have to worry about racy 32-bit reads when we're reading the 64-bit HPET value using a 64-bit CPU. :^)
2021-12-11Kernel: Store kernel memory regions in a RedBlackTreeAndreas Kling
We were already doing this for userspace memory regions (in the Memory::AddressSpace class), so let's do it for kernel regions as well. This gives a nice speed-up on test-js and probably basically everything else as well. :^)
2021-12-11Ports: Update Python to 3.10.1 :^)Linus Groh
This was released a couple of days ago, on 2021-12-06 and contains various changes that we previously needed custom patches for, so we are now able to remove those and compile more unchanged upstream sources. Thanks to Rodrigo for making that effort! :^)
2021-12-11LibUnicode: Generate unique unitsTimothy Flynn
2021-12-11LibUnicode: Generate unique number systemsTimothy Flynn
2021-12-11LibJS+LibUnicode: Generate unique numeric symbol listsTimothy Flynn
There are 443 number system objects generated, each of which held an array of number system symbols. Of those 443 arrays, only 39 are unique. To uniquely store these, this change moves the generated NumericSymbol enumeration to the public LibUnicode/NumberFormat.h header with a pre- defined set of symbols that we need. This is to ensure the generated, unique arrays are created in a known order with known symbols. While it is unfortunate to no longer discover these symbols at generation time, it does allow us to ignore unwanted symbols and perform less string-to- enumeration conversions at lookup time.
2021-12-11LibUnicode: Generate unique NumberFormat lists for each UnitTimothy Flynn
2021-12-11LibUnicode: Generate unique NumberFormat lists for each NumberSystemTimothy Flynn
2021-12-11LibUnicode: Support storing lists in UniqueStorage for code generatorsTimothy Flynn
The evolution of UniqueStorage has been as follows: 1. It was created as UniqueStringStorage to ensure only one copy of each unique string is generated. Interested parties stored an index into a unique string list, rather than the string itself. Commits: f9e605397c and 04e6b43f05 2. It became apparent that non-string structures could also be de- duplicated to reduce the size of libunicode.so. UniqueStringStorage was generalized to UniqueStorage for this purpose. Commit: d8e6beb14f It's now also apparent that there's heavy duplication of lists of structures. For example, the NumberFormat generator stores 4 lists of NumberFormat objects. In total, we currently generate nearly 2,000 lists of these objects, of which 275 are unique. This change updates UniqueStorage to support storing lists. The only change is how the storage is generated - we generate each stored list individually, then an array storing spans of those lists.
2021-12-11passwd: Remove redundant pledge()bugreport0
2021-12-10LibJS: Use AK::NaN<double> in Date::date_value() to fix build errorLinus Groh
This was not happening locally for me, neither when building Lagom on Linux nor with the SerenityOS toolchain... error: implicit conversion from ‘float’ to ‘double’ to match other result of conditional [-Werror=double-promotion]
2021-12-10LibJS: Implement the thisTimeValue() AO and use it where applicableLinus Groh
2021-12-10LibJS: Remove Object::value_of()Linus Groh
Being really close to Object.prototype.valueOf() name wise makes this unnecessarily confusing - while it sometimes serves as the implementation of a valueOf() function, it's an abstraction which the spec doesn't have. Use the appropriate getters to retrieve specific internal slots instead, most commonly [[FooData]] from the primitive wrapper objects. For the Object class specifically, use the Value(Object*) ctor instead.
2021-12-10LibJS: Add test case for locales which do not define day periodsTimothy Flynn
Some locales do not define morning, night, etc. day period ranges. TR-35 states they should fall back to the fixed day periods AM and PM. Add a test case for the "as" locale, which is one such locale, to ensure its AM/PM symbols are used.
2021-12-10LibJS: Use locale-aware day period time ranges to format period symbolsTimothy Flynn
For the test cases changed here, we now recognize "morning2" and "afternoon2" from the CLDR, so the expected results now match the specs and other engines.
2021-12-10LibUnicode: Parse and generate per-locale day period rangesTimothy Flynn
2021-12-10LibUnicode: Parse and generate secondary day period symbolsTimothy Flynn
Generate morning2, afternoon2, evening2, and night2 symbols.
2021-12-10LibJS+LibUnicode: Rename some Unicode::DayPeriod valuesTimothy Flynn
In the CLDR, there aren't "night" values, there are "night1" & "night2" values. This is for locales which use a different name for nighttime depending on the hour. For example, the ja locale uses "夜" between the hours of 19:00 and 23:00, and "夜中" between the hours of 23:00 and 04:00. Our CLDR parser is currently ignoring "night2", so this rename is to prepare for that. We could probably come up with better names, but in the end, the API in LibUnicode will be such that outside callers won't even see Night1, etc.
2021-12-10LibWeb: Implement AbortSignal.throwIfAbortedLuke Wilde
See: https://github.com/whatwg/dom/commit/cfe2f1e
2021-12-10LibWeb: Add support for AbortSignal.reasonLuke Wilde
2021-12-10Meta: Enable the "bugprone-dangling-handle" clang-tidy checkIdan Horowitz
This should catch (the trivial cases of) construction of StringViews from temporary Strings and the construction of Spans from temporary Vectors.
2021-12-10LibWeb: Fix off-by-one error when highlighting unquoted HTML attributesSam Atkins
This fixes #11166
2021-12-10LibJS: Implement ECMA-402 Date.prototype.toLocaleTimeStringTimothy Flynn
2021-12-10LibJS: Implement ECMA-402 Date.prototype.toLocaleDateStringTimothy Flynn
2021-12-10LibJS: Implement ECMA-402 Date.prototype.toLocaleStringTimothy Flynn
2021-12-09Kernel: Some clang-tidy fixes in Bus/VirtIOHendiadyoin1
2021-12-09Kernel: Some clang-tidy fixes in Bus/USBHendiadyoin1
2021-12-09Kernel: Mark USBTransfer's constructor as privateHendiadyoin1
We have a try_create method for that.
2021-12-09Kernel: Mark ACPI::Parser's empty destructor as defaultHendiadyoin1
2021-12-09Kernel: Fix some clang-tidy warnings in PCI::AccessHendiadyoin1
2021-12-09Kernel: Use AK:any_of in PCI::Device capability checksHendiadyoin1
This is equivalent to std::any_of as clang-tidy suggests.
2021-12-09Kernel: Construct PCIDeviceAttributeSysFSComponent with StringViewsHendiadyoin1
There is no use to create a temporary String of a char const* to just cast it to a StringView on SysFSComponent construction again. Also this could have lead to a UAF bug.
2021-12-09Kernel: Pass capabilities as const reference in PCI::AddressHendiadyoin1
2021-12-09Kernel: Mark PCI::Address as trivially copyableHendiadyoin1
2021-12-09Kernel: Add missing include to SlabAllocatorHendiadyoin1
2021-12-10Base: Add some Vai characters to font Katica Regular 10Lady Gegga
A5A8-A5D1 https://www.unicode.org/charts/PDF/UA500.pdf
2021-12-10Browser+LibWeb+WebContent: Add variables display to InspectorSam Atkins
This allows us to see which custom properties apply to a given element, which previously wasn't shown.
2021-12-09LibJS: Implement Intl.DateTimeFormat.prototype.formatRangeToPartsTimothy Flynn
2021-12-09LibJS: Implement Intl.DateTimeFormat.prototype.formatRangeTimothy Flynn
2021-12-09LibJS: Store range format patterns in the Intl.DateTimeFormat objectTimothy Flynn
Now that LibUnicode generates these patterns, the AO steps to retrieve them may be implemented.
2021-12-09LibJS: Do not return views into potentially freed memoryTimothy Flynn
In a future commit, the "part" view returned from FormatDateTimePattern may be a view into a string that goes out of scope. Ensure the AO only returns valid views. A similar approach is used in Intl.NumberFormat.
2021-12-09LibUnicode: Add method to combine two format pattern skeletonsTimothy Flynn
The fields of the generated elements must be in the same order as the table here: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table Further, only one field from each group of fields is allowed.
2021-12-09LibUnicode: Parse and generate date time range format patternsTimothy Flynn
2021-12-09LibUnicode: Parse and generate format pattern skeletonsTimothy Flynn
Pattern skeletons are more or less the "key" of format patterns. Every format pattern is assigned a skeleton. Interval patterns (which are not yet parsed) are also assigned a skeleton - this is used to match them to an "owning" format pattern. So we will use the skeleton generated here to match format patterns at runtime with their available interval patterns. An alternative approach would be to append interval patterns directly to their owning format pattern, but this has some draw backs: 1. Skeletons aren't totally unique. A skeleton may appear in both the "dateFormats" and "availableFormats" objects, in which case the same interval formats would be generated more than once. 2. Otherwise unique format patterns may only differ by the interval patterns assigned to them. This would cause the UniqueStorage for the format patterns to increase in size, impacting both compile times and libunicode.so size.
2021-12-09LibUnicode: Fix typo in format pattern parserTimothy Flynn
See: https://unicode.org/reports/tr35/tr35-dates.html#dfst-day
2021-12-09LibJS: Update spec comment in balance_duration_relative()Linus Groh
This is an editorial change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/665871e