Everywhere: Fix a variety of typos

Spelling fixes found by `codespell`.
This commit is contained in:
Brian Gianforcaro 2022-09-09 14:53:53 -07:00
parent 63c727a4a3
commit d0a1775369
Notes: sideshowbarker 2024-07-18 01:43:16 +09:00
30 changed files with 38 additions and 38 deletions

View file

@ -225,7 +225,7 @@
// Spinning gradient demo/test // Spinning gradient demo/test
backgroundAnimateDemo("gradient-spin", angle => `linear-gradient(${angle}deg, red 0%, black 20%, yellow 60%, cyan 100%)`) backgroundAnimateDemo("gradient-spin", angle => `linear-gradient(${angle}deg, red 0%, black 20%, yellow 60%, cyan 100%)`)
// Transistion hints demo // Transition hints demo
backgroundAnimateDemo("gradient-hints", t => `linear-gradient(to right, hotpink, ${((Math.sin(t/4)+1)*50)|0}%, rebeccapurple)`) backgroundAnimateDemo("gradient-hints", t => `linear-gradient(to right, hotpink, ${((Math.sin(t/4)+1)*50)|0}%, rebeccapurple)`)
updateLabels(); updateLabels();

View file

@ -8,7 +8,7 @@
Promise.reject(new Error('Success!')); Promise.reject(new Error('Success!'));
window.timer = setTimeout(() => { window.timer = setTimeout(() => {
const element = document.createElement('p'); const element = document.createElement('p');
element.innerText = 'Did not receieve unhandledrejection event in 100ms.'; element.innerText = 'Did not receive unhandledrejection event in 100ms.';
element.style.color = 'red'; element.style.color = 'red';
document.body.appendChild(element); document.body.appendChild(element);
}, 100) }, 100)

View file

@ -12,4 +12,4 @@ $ Calculator
## Description ## Description
`Calculator` is a graphical calculator application. It supports basic arithmetic calculations in addition to special operations. It also has convenient shortcuts for mathmatical constants such as Pi. `Calculator` is a graphical calculator application. It supports basic arithmetic calculations in addition to special operations. It also has convenient shortcuts for mathematical constants such as Pi.

View file

@ -63,7 +63,7 @@ The main workspace has three partitions:
- The ***left section*** contains the glyph editor window. This window has three different zoom factors for ease of use and for your viewing comfort. They are 500%, 1000% and 1500%. You can freely switch to any zoom level at anytime while creating your font. Don't let the size of the glyph editor window fool you. This is where you will spend about 95% of the time. And the task is that of shaping each glyph by left+clicking on the mouse. You can form a dot, a line, or a complete glyph just by connecting the dots. If you need to undo a certain location with a black dot, you can right+click on top of the target area and it will revert back to empty. Each grid area can hold any of the three states: 1) on or black 2) off or white 3) empty or gray. On state is displayed as black by default. Off state is displayed as white by default. Empty state is displayed as gray by default. Off state or white is relevant most specially if the font is fixed-width as it dictates the distance a glyph will have from left, center or right. Empty state or gray is important for variable-width font as it affects the overall width of the glyph. For variable width fonts, you move the glyph flushed left on the glyph editor window and remove any extra empty grids by decrementing the present column counter located right under the glyph editor window and thereby leaving only the entire glyph all by itself. Below the glyph editor is the glyph tool which contains the following: pen icon for creating glyph itself, move icon to enable the entire glyph move to top, down, left or right from within the glyph editor window. Below the glyph tool are the transform icons which are flip horizontal, flip vertical, rotate counter-clockwise 90°and rotate clockwise 90°. Transform tools are most helpful when copying over existing glyphs and transforming them to form a new glyph. A becomes V, M becomes W, c becomes e, n becomes u, etcetera. - The ***left section*** contains the glyph editor window. This window has three different zoom factors for ease of use and for your viewing comfort. They are 500%, 1000% and 1500%. You can freely switch to any zoom level at anytime while creating your font. Don't let the size of the glyph editor window fool you. This is where you will spend about 95% of the time. And the task is that of shaping each glyph by left+clicking on the mouse. You can form a dot, a line, or a complete glyph just by connecting the dots. If you need to undo a certain location with a black dot, you can right+click on top of the target area and it will revert back to empty. Each grid area can hold any of the three states: 1) on or black 2) off or white 3) empty or gray. On state is displayed as black by default. Off state is displayed as white by default. Empty state is displayed as gray by default. Off state or white is relevant most specially if the font is fixed-width as it dictates the distance a glyph will have from left, center or right. Empty state or gray is important for variable-width font as it affects the overall width of the glyph. For variable width fonts, you move the glyph flushed left on the glyph editor window and remove any extra empty grids by decrementing the present column counter located right under the glyph editor window and thereby leaving only the entire glyph all by itself. Below the glyph editor is the glyph tool which contains the following: pen icon for creating glyph itself, move icon to enable the entire glyph move to top, down, left or right from within the glyph editor window. Below the glyph tool are the transform icons which are flip horizontal, flip vertical, rotate counter-clockwise 90°and rotate clockwise 90°. Transform tools are most helpful when copying over existing glyphs and transforming them to form a new glyph. A becomes V, M becomes W, c becomes e, n becomes u, etcetera.
- The ***middle section*** contains two parts: the upper part which holds the entire glyph content of the font, or lack thereof if you are making a new one. And the lower part which contains ***Metadata*** information such as name, family, weight, slope, presentation size, mean line, baseline, glyph spacing and if the font is either fixed-width or variable-width. You can still further tweak your font paramaters via the Metadata section. The ` Fixed width ` toggle located at the right side next to Glyph spacing is of special note. It applies to the entire font file. It does not only apply to a single glyph or group of glyphs. It is the differentiating factor that informs the system if the font is or is not fixed-width. Fixed-width fonts are mostly used for Terminals and for displaying program source codes. - The ***middle section*** contains two parts: the upper part which holds the entire glyph content of the font, or lack thereof if you are making a new one. And the lower part which contains ***Metadata*** information such as name, family, weight, slope, presentation size, mean line, baseline, glyph spacing and if the font is either fixed-width or variable-width. You can still further tweak your font parameters via the Metadata section. The ` Fixed width ` toggle located at the right side next to Glyph spacing is of special note. It applies to the entire font file. It does not only apply to a single glyph or group of glyphs. It is the differentiating factor that informs the system if the font is or is not fixed-width. Fixed-width fonts are mostly used for Terminals and for displaying program source codes.
- The ***right section*** which displays both search input for unicode blocks and the unicode block selection list. - The ***right section*** which displays both search input for unicode blocks and the unicode block selection list.
Metadata and unicode blocks can be turned on or off via ` Menu -> View ` option. Unicode block filters only what to display contained within the range of the block. Basic Latin covers 000-007F, Latin-1 Supplement covers 0080-00FF, Latin Extended-A covers 0100-017F and so on and so forth. Global search for a glyph is affected when a certain block is currently selected. Only by selecting ` Show All ` will the global glyph search work as expected. So make it a habit of confirming that Show All is active before searching for a glyph. Metadata and unicode blocks can be turned on or off via ` Menu -> View ` option. Unicode block filters only what to display contained within the range of the block. Basic Latin covers 000-007F, Latin-1 Supplement covers 0080-00FF, Latin Extended-A covers 0100-017F and so on and so forth. Global search for a glyph is affected when a certain block is currently selected. Only by selecting ` Show All ` will the global glyph search work as expected. So make it a habit of confirming that Show All is active before searching for a glyph.

View file

@ -1,6 +1,6 @@
## Name ## Name
GML Vertical Seperator Widget GML Vertical Separator Widget
## Description ## Description

View file

@ -15,7 +15,7 @@ On a lower level, this is what happens:
- On `exec()`, the event loop enters the event loop stack. Then, the event loop is pumped repeatedly. - On `exec()`, the event loop enters the event loop stack. Then, the event loop is pumped repeatedly.
- Each `pump()` first puts the event loop to sleep with `wait_for_event()`, then handles all events. - Each `pump()` first puts the event loop to sleep with `wait_for_event()`, then handles all events.
- `wait_for_event()` uses the `select(2)` function to wait until one of the prepared file descriptors becomes writeable or readable, or until a timeout expires. This means that while an event loop has nothing to do, the kernel keeps the thread at sleep. That's also the reason you'll see most GUI applications being listed with a "Selecting" state in SystemMonitor. After `select(2)` returns, it immediately dispatches signals to all signal handlers. Other new events (expired timers, file notifications) are put into the event queue. - `wait_for_event()` uses the `select(2)` function to wait until one of the prepared file descriptors becomes writeable or readable, or until a timeout expires. This means that while an event loop has nothing to do, the kernel keeps the thread at sleep. That's also the reason you'll see most GUI applications being listed with a "Selecting" state in SystemMonitor. After `select(2)` returns, it immediately dispatches signals to all signal handlers. Other new events (expired timers, file notifications) are put into the event queue.
- The specific file descriptors are the file notifiers the event loop has registered (this is the original purpose of `select(2)`) as well as the wake pipe. This pipe is responsible for two things: Once a POSIX signal is recieved which the event loop has a handler for (this might happen at any time, on any thread), `handle_signal()` is entered, which writes the handler number to the pipe. But second, the `wake()` function just writes 0 (not a valid signal number) to the wake pipe, which is used to trigger an event loop wake from other threads. - The specific file descriptors are the file notifiers the event loop has registered (this is the original purpose of `select(2)`) as well as the wake pipe. This pipe is responsible for two things: Once a POSIX signal is received which the event loop has a handler for (this might happen at any time, on any thread), `handle_signal()` is entered, which writes the handler number to the pipe. But second, the `wake()` function just writes 0 (not a valid signal number) to the wake pipe, which is used to trigger an event loop wake from other threads.
- The timeout of the `select(2)` call might be infinite if there's no time-based wake condition. If there are timers, however, the `select(2)` timeout is the minimum of all timer timeouts. If there are available events before `select(2)` is even called, the timeout is zero, leading to a `select(2)` which immediately returns. - The timeout of the `select(2)` call might be infinite if there's no time-based wake condition. If there are timers, however, the `select(2)` timeout is the minimum of all timer timeouts. If there are available events before `select(2)` is even called, the timeout is zero, leading to a `select(2)` which immediately returns.
- Event handling from the event queue happens by invoking associated callbacks. Remember that the event queue has two primary sources of events: `deferred_invoke()` adds an event immediately and signals a wake, while after returning from `select(2)` new events are created based on timers and notifications. - Event handling from the event queue happens by invoking associated callbacks. Remember that the event queue has two primary sources of events: `deferred_invoke()` adds an event immediately and signals a wake, while after returning from `select(2)` new events are created based on timers and notifications.
- If the event loop's exit was requested (checked while handling events), it returns the pending events to the queue so that the next-lower event loop can handle them. The assumption is that that event loop will resume running shortly. The return value of `exec()` has comparable purpose to a process return code, which is why the pattern `return app.exec()` is so common in GUI applications (`GUI::Application::exec()` just runs an event loop under the hood). In any case, even if the event loop's exit doesn't mean program exit, it is removed from the event loop stack. - If the event loop's exit was requested (checked while handling events), it returns the pending events to the queue so that the next-lower event loop can handle them. The assumption is that that event loop will resume running shortly. The return value of `exec()` has comparable purpose to a process return code, which is why the pattern `return app.exec()` is so common in GUI applications (`GUI::Application::exec()` just runs an event loop under the hood). In any case, even if the event loop's exit doesn't mean program exit, it is removed from the event loop stack.

View file

@ -289,5 +289,5 @@ Note that `Span<type>` differs from all of these types in that it provides a *vi
* C-style arrays are generally discouraged (and this also holds for pointer+size-style arrays when passing them around). They are only used for the implementation of other collections or in specific circumstances. * C-style arrays are generally discouraged (and this also holds for pointer+size-style arrays when passing them around). They are only used for the implementation of other collections or in specific circumstances.
* `Array` is a thin wrapper around C-style arrays similar to `std::array`, where the template arguments include the size of the array. It allocates its data inline, just as arrays do, and never does any dynamic allocations. * `Array` is a thin wrapper around C-style arrays similar to `std::array`, where the template arguments include the size of the array. It allocates its data inline, just as arrays do, and never does any dynamic allocations.
* `Vector` is similar to `std::vector` and represents a dynamic resizeable array. For most basic use cases of lists, this is the go-to collection. It has an optional inline capacity (the second template argument) which will allocate inline as the name suggests, but this is not always used. If the contents outgrow the inline capacity, Vector will automatically switch to the standard out-of-line storage. This is allocated on the heap, and the space is automatically resized and moved when more (or less) space is needed. * `Vector` is similar to `std::vector` and represents a dynamic resizable array. For most basic use cases of lists, this is the go-to collection. It has an optional inline capacity (the second template argument) which will allocate inline as the name suggests, but this is not always used. If the contents outgrow the inline capacity, Vector will automatically switch to the standard out-of-line storage. This is allocated on the heap, and the space is automatically resized and moved when more (or less) space is needed.
* `FixedArray` is essentially a runtime-sized `Array`. It can't resize like `Vector`, but it's ideal for circumstances where the size is not known at compile time but doesn't need to change once the collection is initialized. `FixedArray` guarantees to not allocate or deallocate except for its constructor and destructor. * `FixedArray` is essentially a runtime-sized `Array`. It can't resize like `Vector`, but it's ideal for circumstances where the size is not known at compile time but doesn't need to change once the collection is initialized. `FixedArray` guarantees to not allocate or deallocate except for its constructor and destructor.

View file

@ -15,7 +15,7 @@ namespace Kernel {
struct TrapFrame { struct TrapFrame {
u64 x[31]; // Saved general purpose registers u64 x[31]; // Saved general purpose registers
u64 spsr_el1; // Save Processor Status Register, EL1 u64 spsr_el1; // Save Processor Status Register, EL1
u64 elr_el1; // Exception Link Reigster, EL1 u64 elr_el1; // Exception Link Register, EL1
u64 tpidr_el1; // EL0 thread ID u64 tpidr_el1; // EL0 thread ID
u64 sp_el0; // EL0 stack pointer u64 sp_el0; // EL0 stack pointer
}; };

View file

@ -112,7 +112,7 @@ UNMAP_AFTER_INIT ErrorOr<void> I8042Controller::detect_devices()
// Note: The default BIOS on the QEMU microvm machine type (qboot) doesn't // Note: The default BIOS on the QEMU microvm machine type (qboot) doesn't
// behave like SeaBIOS, which means it doesn't set first port scan code translation. // behave like SeaBIOS, which means it doesn't set first port scan code translation.
// Howerver we rely on compatbility feature of the i8042 to send scan codes of set 1. // However we rely on compatibility feature of the i8042 to send scan codes of set 1.
// To ensure that the controller is always outputting correct scan codes, set it // To ensure that the controller is always outputting correct scan codes, set it
// to scan code 2 (because SeaBIOS on regular QEMU machine does this for us) and enable // to scan code 2 (because SeaBIOS on regular QEMU machine does this for us) and enable
// first port translation to ensure all scan codes are translated to scan code set 1. // first port translation to ensure all scan codes are translated to scan code set 1.

View file

@ -149,7 +149,7 @@ public:
return; return;
filepath_string_index = registered_result.value(); filepath_string_index = registered_result.value();
} else { } else {
auto invalid_path_string = KString::try_create("<INVALID_FILE_PATH>"sv); // TODO: Performance, unecessary allocations. auto invalid_path_string = KString::try_create("<INVALID_FILE_PATH>"sv); // TODO: Performance, unnecessary allocations.
if (invalid_path_string.is_error()) if (invalid_path_string.is_error())
return; return;
auto registered_result = event_buffer->register_string(move(invalid_path_string.value())); auto registered_result = event_buffer->register_string(move(invalid_path_string.value()));

View file

@ -100,7 +100,7 @@ private:
// Note: This data member should be used with LUNAddress target_id and disk_id. // Note: This data member should be used with LUNAddress target_id and disk_id.
// LUNs are agnostic system-wide addresses, so they are assigned without caring about the specific hardware interfaces. // LUNs are agnostic system-wide addresses, so they are assigned without caring about the specific hardware interfaces.
// This class member on the other side, is meant to be assigned *per hardware type*, // This class member on the other side, is meant to be assigned *per hardware type*,
// which means in constrast to the LUNAddress controller_id struct member, we take the index of the hardware // which means in contrast to the LUNAddress controller_id struct member, we take the index of the hardware
// controller among its fellow controllers of the same hardware type in the system. // controller among its fellow controllers of the same hardware type in the system.
u32 const m_hardware_relative_controller_id { 0 }; u32 const m_hardware_relative_controller_id { 0 };

View file

@ -236,7 +236,7 @@ NEVER_INLINE void syscall_handler(TrapFrame* trap)
// Check if we're supposed to return to userspace or just die. // Check if we're supposed to return to userspace or just die.
current_thread->die_if_needed(); current_thread->die_if_needed();
// Crash any processes which have commited a promise violation during syscall handling. // Crash any processes which have committed a promise violation during syscall handling.
if (result.is_error() && result.error().code() == EPROMISEVIOLATION) { if (result.is_error() && result.error().code() == EPROMISEVIOLATION) {
VERIFY(current_thread->is_promise_violation_pending()); VERIFY(current_thread->is_promise_violation_pending());
current_thread->set_promise_violation_pending(false); current_thread->set_promise_violation_pending(false);

View file

@ -606,7 +606,7 @@ ErrorOr<FlatPtr> Process::sys$msync(Userspace<void*> address, size_t size, int f
return address_space().with([&](auto& space) -> ErrorOr<FlatPtr> { return address_space().with([&](auto& space) -> ErrorOr<FlatPtr> {
auto regions = TRY(space->find_regions_intersecting(Memory::VirtualRange { address.vaddr(), rounded_size })); auto regions = TRY(space->find_regions_intersecting(Memory::VirtualRange { address.vaddr(), rounded_size }));
// All regions from address upto address+size shall be mapped // All regions from address up to address+size shall be mapped
if (regions.is_empty()) if (regions.is_empty())
return ENOMEM; return ENOMEM;

View file

@ -245,7 +245,7 @@ extern "C" [[noreturn]] UNMAP_AFTER_INIT void init(BootInfo const& boot_info)
if (APIC::initialized() && APIC::the().enabled_processor_count() > 1) { if (APIC::initialized() && APIC::the().enabled_processor_count() > 1) {
// We must set up the AP boot environment before switching to a kernel process, // We must set up the AP boot environment before switching to a kernel process,
// as pages below address USER_RANGE_BASE are only accesible through the kernel // as pages below address USER_RANGE_BASE are only accessible through the kernel
// page directory. // page directory.
APIC::the().setup_ap_boot_environment(); APIC::the().setup_ap_boot_environment();
} }

View file

@ -259,7 +259,7 @@ build_target() {
cmake -S "$SERENITY_SOURCE_DIR/Meta/Lagom" -B "$BUILD_DIR" -DBUILD_LAGOM=ON cmake -S "$SERENITY_SOURCE_DIR/Meta/Lagom" -B "$BUILD_DIR" -DBUILD_LAGOM=ON
fi fi
# Get either the environement MAKEJOBS or all processors via CMake # Get either the environment MAKEJOBS or all processors via CMake
[ -z "$MAKEJOBS" ] && MAKEJOBS=$(cmake -P "$SERENITY_SOURCE_DIR/Meta/CMake/processor-count.cmake" 2>&1) [ -z "$MAKEJOBS" ] && MAKEJOBS=$(cmake -P "$SERENITY_SOURCE_DIR/Meta/CMake/processor-count.cmake" 2>&1)
# With zero args, we are doing a standard "build" # With zero args, we are doing a standard "build"

View file

@ -51,7 +51,7 @@ TEST_CASE(move)
TEST_CASE(no_allocation) TEST_CASE(no_allocation)
{ {
FixedArray<int> array = FixedArray<int>::must_create_but_fixme_should_propagate_errors(5); FixedArray<int> array = FixedArray<int>::must_create_but_fixme_should_propagate_errors(5);
EXPECT_NO_CRASH("Assigments", [&] { EXPECT_NO_CRASH("Assignments", [&] {
NoAllocationGuard guard; NoAllocationGuard guard;
array[0] = 0; array[0] = 0;
array[1] = 1; array[1] = 1;

View file

@ -12,7 +12,7 @@
TEST_CASE(malloc_limits) TEST_CASE(malloc_limits)
{ {
EXPECT_NO_CRASH("Allocation of 0 size should succed at allocation and release", [] { EXPECT_NO_CRASH("Allocation of 0 size should succeed at allocation and release", [] {
errno = 0; errno = 0;
void* ptr = malloc(0); void* ptr = malloc(0);
EXPECT_EQ(errno, 0); EXPECT_EQ(errno, 0);

View file

@ -502,7 +502,7 @@ static bool verify_test(Result<void, TestError>& result, TestMetadata const& met
// has one. // has one.
// The third test is the same as the second, upper module is fine but // The third test is the same as the second, upper module is fine but
// import a module with SyntaxError, however here the phase is runtime. // import a module with SyntaxError, however here the phase is runtime.
// In conclusion all the test which would cause the inital module to not // In conclusion all the test which would cause the initial module to not
// be evaluated !should! have '$DONOTEVALUATE();' at the top causing a // be evaluated !should! have '$DONOTEVALUATE();' at the top causing a
// Reference error, meaning we just ignore the phase in the SyntaxError case. // Reference error, meaning we just ignore the phase in the SyntaxError case.
return error.type == metadata.type; return error.type == metadata.type;
@ -587,7 +587,7 @@ int main(int argc, char** argv)
} }
if (timeout <= 0) { if (timeout <= 0) {
warnln("timeout must be atleast 1"); warnln("timeout must be at least 1");
return 2; return 2;
} }

View file

@ -51,7 +51,7 @@ void TerminalResult::activate() const
{ {
// FIXME: This should be a GUI::Process::spawn_or_show_error(), however this is a // FIXME: This should be a GUI::Process::spawn_or_show_error(), however this is a
// Assistant::Result object, which does not have access to the application's GUI::Window* pointer // Assistant::Result object, which does not have access to the application's GUI::Window* pointer
// (which spawn_or_show_error() needs incase it has to open a error message box). // (which spawn_or_show_error() needs in case it has to open a error message box).
(void)Core::Process::spawn("/bin/Terminal"sv, Array { "-k", "-e", title().characters() }); (void)Core::Process::spawn("/bin/Terminal"sv, Array { "-k", "-e", title().characters() });
} }

View file

@ -1006,7 +1006,7 @@ NonnullRefPtr<GUI::Action> HackStudioWidget::create_debug_action()
m_terminal_wrapper->clear_including_history(); m_terminal_wrapper->clear_including_history();
// The debugger calls wait() on the debugee, so the TerminalWrapper can't do that. // The debugger calls wait() on the debuggee, so the TerminalWrapper can't do that.
auto ptm_res = m_terminal_wrapper->setup_master_pseudoterminal(TerminalWrapper::WaitForChildOnExit::No); auto ptm_res = m_terminal_wrapper->setup_master_pseudoterminal(TerminalWrapper::WaitForChildOnExit::No);
if (ptm_res.is_error()) { if (ptm_res.is_error()) {
perror("setup_master_pseudoterminal"); perror("setup_master_pseudoterminal");

View file

@ -24,7 +24,7 @@ void SoftVPU::LDMXCSR(X86::Instruction const& insn)
VERIFY((m_mxcsr.mxcsr & 0xFFFF'0000) == 0); VERIFY((m_mxcsr.mxcsr & 0xFFFF'0000) == 0);
// Just let the host's SSE (or if not available x87) handle the rounding for us // Just let the host's SSE (or if not available x87) handle the rounding for us
// We do not want to accedentally raise an FP-Exception on the host, so we // We do not want to accidentally raise an FP-Exception on the host, so we
// mask all exceptions // mask all exceptions
#ifdef __SSE__ #ifdef __SSE__
AK::MXCSR temp = m_mxcsr; AK::MXCSR temp = m_mxcsr;
@ -99,7 +99,7 @@ void SoftVPU::MOVLPS_xmm1_xmm2m64(X86::Instruction const& insn)
m_xmm[xmm1].puqw[0] = m_xmm[insn.modrm().rm()].puqw[1]; m_xmm[xmm1].puqw[0] = m_xmm[insn.modrm().rm()].puqw[1];
} else { } else {
// FIXME: Shadows // FIXME: Shadows
// Note: Technically we are transfereing two packed floats not a quad word // Note: Technically we are transferring two packed floats not a quad word
m_xmm[xmm1].puqw[0] = insn.modrm().read64(m_cpu, insn).value(); m_xmm[xmm1].puqw[0] = insn.modrm().read64(m_cpu, insn).value();
} }
} }
@ -108,7 +108,7 @@ void SoftVPU::MOVLPS_m64_xmm2(X86::Instruction const& insn)
u8 xmm2 = insn.modrm().reg(); u8 xmm2 = insn.modrm().reg();
// FIXME: This might not hold true for SSE2 or later // FIXME: This might not hold true for SSE2 or later
VERIFY(!insn.modrm().is_register()); VERIFY(!insn.modrm().is_register());
// Note: Technically we are transfereing two packed floats not a quad word // Note: Technically we are transferring two packed floats not a quad word
insn.modrm().write64(m_cpu, insn, ValueWithShadow<u64>::create_initialized(m_xmm[xmm2].puqw[0])); insn.modrm().write64(m_cpu, insn, ValueWithShadow<u64>::create_initialized(m_xmm[xmm2].puqw[0]));
} }
@ -166,7 +166,7 @@ void SoftVPU::MOVHPS_xmm1_xmm2m64(X86::Instruction const& insn)
m_xmm[xmm1].puqw[1] = m_xmm[insn.modrm().rm()].puqw[0]; m_xmm[xmm1].puqw[1] = m_xmm[insn.modrm().rm()].puqw[0];
} else { } else {
// FIXME: Shadows // FIXME: Shadows
// Note: Technically we are transfereing two packed floats not a quad word // Note: Technically we are transferring two packed floats not a quad word
m_xmm[xmm1].puqw[1] = insn.modrm().read64(m_cpu, insn).value(); m_xmm[xmm1].puqw[1] = insn.modrm().read64(m_cpu, insn).value();
} }
} }
@ -174,7 +174,7 @@ void SoftVPU::MOVHPS_m64_xmm2(X86::Instruction const& insn)
{ {
u8 xmm1 = insn.modrm().reg(); u8 xmm1 = insn.modrm().reg();
VERIFY(!insn.modrm().is_register()); VERIFY(!insn.modrm().is_register());
// Note: Technically we are transfereing two packed floats not a quad word // Note: Technically we are transferring two packed floats not a quad word
insn.modrm().write64(m_cpu, insn, ValueWithShadow<u64>::create_initialized(m_xmm[xmm1].puqw[1])); insn.modrm().write64(m_cpu, insn, ValueWithShadow<u64>::create_initialized(m_xmm[xmm1].puqw[1]));
} }
void SoftVPU::MOVAPS_xmm1_xmm2m128(X86::Instruction const& insn) void SoftVPU::MOVAPS_xmm1_xmm2m128(X86::Instruction const& insn)
@ -202,7 +202,7 @@ void SoftVPU::MOVAPS_xmm1m128_xmm2(X86::Instruction const& insn)
void SoftVPU::CVTPI2PS_xmm1_mm2m64(X86::Instruction const& insn) void SoftVPU::CVTPI2PS_xmm1_mm2m64(X86::Instruction const& insn)
{ {
// FIXME: Raise Precission // FIXME: Raise Precision
// FIXME: Honor Rounding control // FIXME: Honor Rounding control
u8 xmm1 = insn.modrm().reg(); u8 xmm1 = insn.modrm().reg();
if (insn.modrm().is_register()) { if (insn.modrm().is_register()) {
@ -218,7 +218,7 @@ void SoftVPU::CVTPI2PS_xmm1_mm2m64(X86::Instruction const& insn)
} }
void SoftVPU::CVTSI2SS_xmm1_rm32(X86::Instruction const& insn) void SoftVPU::CVTSI2SS_xmm1_rm32(X86::Instruction const& insn)
{ {
// FIXME: Raise Precission // FIXME: Raise Precision
// FIXME: Shadows // FIXME: Shadows
// FIXME: Honor Rounding Control // FIXME: Honor Rounding Control
m_xmm[insn.modrm().reg()].ps[0] = (i32)insn.modrm().read32(m_cpu, insn).value(); m_xmm[insn.modrm().reg()].ps[0] = (i32)insn.modrm().read32(m_cpu, insn).value();

View file

@ -238,7 +238,7 @@ double UnsignedBigInteger::to_double(UnsignedBigInteger::RoundingMode rounding_m
u8 bits_dropped_from_final_word = 0; u8 bits_dropped_from_final_word = 0;
if (bits_written < bits_to_read && last_word_index > 0) { if (bits_written < bits_to_read && last_word_index > 0) {
// Second word can always just cleanly be shifted upto the final bit of the first word // Second word can always just cleanly be shifted up to the final bit of the first word
// since the first has at most BIT_IN_WORD - 1, 31 // since the first has at most BIT_IN_WORD - 1, 31
u64 next_word = m_words[last_word_index - 1]; u64 next_word = m_words[last_word_index - 1];
VERIFY((mantissa & (next_word << (bits_in_u64 - bits_written - BITS_IN_WORD))) == 0); VERIFY((mantissa & (next_word << (bits_in_u64 - bits_written - BITS_IN_WORD))) == 0);

View file

@ -289,7 +289,7 @@ void AntiAliasingPainter::draw_ellipse(IntRect const& a_rect, Color color, int t
{ {
// FIXME: Come up with an allocation-free version of this! // FIXME: Come up with an allocation-free version of this!
// Using draw_line() for segments of an ellipse was attempted but gave really poor results :^( // Using draw_line() for segments of an ellipse was attempted but gave really poor results :^(
// There probably is a way to adjust the fill of draw_ellipse_part() to do this, but gettting it rendering correctly is tricky. // There probably is a way to adjust the fill of draw_ellipse_part() to do this, but getting it rendering correctly is tricky.
// The outline of the steps required to paint it efficiently is: // The outline of the steps required to paint it efficiently is:
// - Paint the outer ellipse without the fill (from the fill() lambda in draw_ellipse_part()) // - Paint the outer ellipse without the fill (from the fill() lambda in draw_ellipse_part())
// - Paint the inner ellipse, but in the set_pixel() invert the alpha values // - Paint the inner ellipse, but in the set_pixel() invert the alpha values

View file

@ -23,7 +23,7 @@ describe("normal behavior", () => {
expect(new Intl.Locale("ar", { hourCycle: "h24" }).hourCycles).toEqual(["h24"]); expect(new Intl.Locale("ar", { hourCycle: "h24" }).hourCycles).toEqual(["h24"]);
// Invalid hourCycles also take precedence when specified in the locale string. Unlike other // Invalid hourCycles also take precedence when specified in the locale string. Unlike other
// properties, Locale("en", { hourCycle: "ladybird" }) will explictly throw. // properties, Locale("en", { hourCycle: "ladybird" }) will explicitly throw.
expect(new Intl.Locale("en-u-hc-ladybird").hourCycles).toEqual(["ladybird"]); expect(new Intl.Locale("en-u-hc-ladybird").hourCycles).toEqual(["ladybird"]);
}); });
}); });

View file

@ -106,7 +106,7 @@ describe("tagged template literal functionality", () => {
expect(raw[1]).toBe("\\nbar"); expect(raw[1]).toBe("\\nbar");
}); });
test("invalid escapes give undefined cooked values but can be accesed in raw form", () => { test("invalid escapes give undefined cooked values but can be accessed in raw form", () => {
let calls = 0; let calls = 0;
let lastValue = null; let lastValue = null;
function noCookedButRaw(values) { function noCookedButRaw(values) {

View file

@ -2477,7 +2477,7 @@ RefPtr<StyleValue> Parser::parse_linear_gradient_function(ComponentValue const&
if (side_a.has_value() && !side_b.has_value()) { if (side_a.has_value() && !side_b.has_value()) {
gradient_direction = *side_a; gradient_direction = *side_a;
} else if (side_a.has_value() && side_b.has_value()) { } else if (side_a.has_value() && side_b.has_value()) {
// Covert two sides to a corner // Convert two sides to a corner
if (to_underlying(*side_b) < to_underlying(*side_a)) if (to_underlying(*side_b) < to_underlying(*side_a))
swap(side_a, side_b); swap(side_a, side_b);
if (side_a == SideOrCorner::Top && side_b == SideOrCorner::Left) if (side_a == SideOrCorner::Top && side_b == SideOrCorner::Left)

View file

@ -158,7 +158,7 @@ DOM::ExceptionOr<String> serialize_node_to_xml_string_impl(JS::NonnullGCPtr<DOM:
// - The require well-formed flag // - The require well-formed flag
// The XML serialization algorithm produces an XML serialization of an arbitrary DOM node node based on the node's interface type. // The XML serialization algorithm produces an XML serialization of an arbitrary DOM node node based on the node's interface type.
// Each referenced algorithm is to be passed the arguments as they were recieved by the caller and return their result to the caller. // Each referenced algorithm is to be passed the arguments as they were received by the caller and return their result to the caller.
// Re-throw any exceptions. // Re-throw any exceptions.
// If node's interface is: // If node's interface is:

View file

@ -53,7 +53,7 @@ void StackingContext::sort()
static PaintPhase to_paint_phase(StackingContext::StackingContextPaintPhase phase) static PaintPhase to_paint_phase(StackingContext::StackingContextPaintPhase phase)
{ {
// There are not a fully correct mapping since some stacking context phases are combind. // There are not a fully correct mapping since some stacking context phases are combined.
switch (phase) { switch (phase) {
case StackingContext::StackingContextPaintPhase::Floats: case StackingContext::StackingContextPaintPhase::Floats:
case StackingContext::StackingContextPaintPhase::BackgroundAndBordersForInlineLevelAndReplaced: case StackingContext::StackingContextPaintPhase::BackgroundAndBordersForInlineLevelAndReplaced:

View file

@ -2223,14 +2223,14 @@ void Instruction::to_string_internal(StringBuilder& builder, u32 origin, SymbolP
append_mnemonic_space(); append_mnemonic_space();
append_xmm(); append_xmm();
append(','); append(',');
append_mmrm32(); // FIXME: No Memmory append_mmrm32(); // FIXME: No Memory
break; break;
case OP_mm1_xmm2m128: case OP_mm1_xmm2m128:
case OP_mm_xmm: case OP_mm_xmm:
append_mnemonic_space(); append_mnemonic_space();
append_mm(); append_mm();
append(','); append(',');
append_xmmrm32(); // FIXME: No Memmory append_xmmrm32(); // FIXME: No Memory
break; break;
case OP_xmm1_imm8: case OP_xmm1_imm8:
append_mnemonic_space(); append_mnemonic_space();

View file

@ -16,7 +16,7 @@ fn(a) { echo $a }
if not test "$(fn 1)" = 1 { fail cannot invoke "'fn 1'" with explicit names } if not test "$(fn 1)" = 1 { fail cannot invoke "'fn 1'" with explicit names }
if not test "$(fn 1 2)" = 1 { fail cannot invoke "'fn 1 2'" with explicit names and extra arguments } if not test "$(fn 1 2)" = 1 { fail cannot invoke "'fn 1 2'" with explicit names and extra arguments }
# FIXME: Reenable this when we have something akin to 'try' # FIXME: Re-enable this when we have something akin to 'try'
# or when not-enough-args isn't a hard failure. # or when not-enough-args isn't a hard failure.
# Can it fail? # Can it fail?
# if fn 2>/dev/null { # if fn 2>/dev/null {