Commit graph

23551 commits

Author SHA1 Message Date
Ali Mohammad Pur
5636f8143d LibWasm: Allow overflow in normal 64-bit arithmetic instructions 2021-07-06 17:55:00 +04:30
Ali Mohammad Pur
c4d4c657d0 LibWasm: Limit module memory to 65536 pages
The spec mentions this, and anything past that can't be correctly
addressed by the 32-bit indices anyhow.
2021-07-06 17:55:00 +04:30
Ali Mohammad Pur
03fe50d5e7 LibWasm: Fix data section initialization bounds checking 2021-07-06 17:55:00 +04:30
Ali Mohammad Pur
d2212a1f51 LibWasm: Jump to the default label in br_table with negative values
Also adds a forgotten Wasm::Printer implementation for printing table
branch arguments.
2021-07-06 17:55:00 +04:30
Ali Mohammad Pur
f5d4e26ff7 Meta+LibWasm: Correctly parse the invokee name in toplevel invokes 2021-07-06 17:55:00 +04:30
Ali Mohammad Pur
0b08392e54 LibWasm: Use the number of bytes when comparing memory limits
...instead of comparing page count with byte count.
2021-07-06 17:55:00 +04:30
Ali Mohammad Pur
4bdb0ad132 LibWasm: Guard stack accesses with checks
If the stack is empty, let's just trap.
2021-07-06 17:55:00 +04:30
Ali Mohammad Pur
963f5e69e0 Meta+LibWasm: Generate calls to functions when they don't have results 2021-07-06 17:55:00 +04:30
Idan Horowitz
e3ef241108 LibJS: Remove the non-standard put helper and replace it's usages
This removes all usages of the non-standard put helper method and
replaces all of it's usages with the specification required alternative
or with define_direct_property where appropriate.
2021-07-06 14:20:30 +01:00
Idan Horowitz
53f70e5208 LibJS: Remove the default length & attributes from define_native_*
These are usually incorrect, and people sometimes forget to add the
correct values as a result of them being optional, so they should just
be specified explicitly.
2021-07-06 14:20:30 +01:00
Idan Horowitz
a6b8291a9b LibJS: Add define_direct_property and remove the define_property helper
This removes all usages of the non-standard define_property helper
method and replaces all it's usages with the specification required
alternative or with define_direct_property where appropriate.
2021-07-06 14:20:30 +01:00
Idan Horowitz
e915155ca4 LibJS: Remove impossible check from Array's native length getter/setter
Since the object rewrite native property getters/setters are always
called with the owning object as the this_value, which in this case is
an Array object, and as such this checks are always false.
2021-07-06 14:20:30 +01:00
Idan Horowitz
6787e86a3a LibJS: Add and use the CreateNonEnumerableDataPropertyOrThrow AO 2021-07-06 14:20:30 +01:00
Idan Horowitz
6da7f43580 LibJS: Bring String.prototype.split closer to the specification
Specifically, add a couple of missing exception checks and use the
CreateDataPropertyOrThrow abstract operation.
2021-07-06 14:20:30 +01:00
Idan Horowitz
28172fde10 LibJS: Add missing exception check to the ArraySpeciesCreate AO 2021-07-06 14:20:30 +01:00
Luke
d89f539d16 LibJS: Add %TypedArray%.prototype.reverse
This fixes 13 test262 cases.
2021-07-06 13:40:27 +01:00
Luke
275092bb03 LibJS: Fix byteOffset copy-paste error in TypedArray buffer test 2021-07-06 13:40:19 +01:00
Luke
c8db607c00 LibJS: Fix byteOffset copy-paste error in TypedArray byteLength test 2021-07-06 13:40:19 +01:00
Luke
651becbfb1 LibJS: Use Number instead of parseInt in TypedArray forEach BigInt tests
The Number constructor previously didn't support converting BigInts to
regular numbers, so I used parseInt as a workaround.

Since it now supports this, this workaround is no longer needed.
2021-07-06 13:40:19 +01:00
Luke
8244d7916e LibJS: Add Uint8ClampedArray to TypedArray tests 2021-07-06 13:40:19 +01:00
Linus Groh
3faeabf1dc Revert "LibJS: Don't hoist functions under certain circumstances"
This reverts commit 3411d50737.

It was causing LeakSanitizer on CI to fail, possibly due to a circular
reference.
2021-07-06 13:25:37 +01:00
Andreas Kling
73183ee5c4 PixelPaint: Paint the area around the image with ColorRole::Tray
It didn't really make sense for the transparency grid to extend
infinitely around the image. Now the grid is only visible underneath
the image, which matches how most other editors behave.
2021-07-06 12:24:51 +02:00
Andreas Kling
b650bb602a PixelPaint: Don't repaint area outside image when image itself changed 2021-07-06 12:24:51 +02:00
Andreas Kling
e7b8f6fe48 LibGfx: Make Painter::fill_rect_with_checkerboard() faster
We now divide each scanline into prologue, aligned run, and epilogue.
Basically, we draw enough pixels one-by-one until we reach a grid
intersection. Then we draw full grid cell slices using fast memory
fills. Finally we go back to one-by-one for the epilogue.

This is roughly 2.5x faster in a microbenchmark and no longer dominates
the ImageViewer and PixelPaint resizing profiles.
2021-07-06 12:24:51 +02:00
Andreas Kling
7e4bc04057 Kernel: Don't remap BochsGraphicsAdapter MMIO registers on every access
We were creating a new memory mapping every time WindowServer performed
a buffer flip. This was very visible in whole-system profiles, as the
mapping and unmapping of MMIO registers caused quite a bit of kmalloc()
and kfree() churn.

Avoid this problem by simply keeping the MMIO registers mapped.
2021-07-06 12:24:51 +02:00
Ali Mohammad Pur
eda5ab2d0f Kernel: Fix method name load_kernel_{sybols => symbols}_from_data() 2021-07-06 14:43:31 +04:30
Luke
99cb54670f LibJS: Add missing exception check in internalize_json_property
The call to enumerable_own_property_names in the non-array case was
missing an exception check.

Fixes 1 test262 case (JSON/parse/reviver-object-own-keys-err.js)
2021-07-06 01:33:52 +01:00
Gunnar Beutner
5c3f781031 Meta: Fix building Lagom on Linux 2021-07-06 02:10:37 +02:00
Hendi
3411d50737 LibJS: Don't hoist functions under certain circumstances
When a lexical declaration with the same name as a function exists,
the function is not hoisted (annex B).
2021-07-06 00:15:37 +01:00
Hendi
c194afd17c LibJS: Fix runaway let scope when parsing for-in/of statements
This requires variables that should be exported to the script host
or to other scripts to be declared as var (such as in test-common.js),
since lexically-scoped variables won't be visible.
2021-07-06 00:15:37 +01:00
Hendi
793e1bf28a LibJS: Fix variable scoping issues in two tests 2021-07-06 00:15:37 +01:00
Hendi
38fd980b0c LibJS: Improve function hoisting across blocks
The parser now keeps track of a scope chain so that it can hoist
function declarations to the closest function scope.
2021-07-06 00:15:37 +01:00
Hendi
72f8d90dc5 LibJS: Remove variables from FunctionNode
They weren't consumed anywhere outside the AST and went
against the usual concept of having declaration in ScopeNode.
2021-07-06 00:15:37 +01:00
Timothy Flynn
e0c9f58b0c LibJS: Implement and use the GetSubstitution abstract operation
Used by String.prototype.replace, String.prototype.replaceAll, and
RegExp.prototype [ @@replace ].
2021-07-05 23:26:41 +01:00
Timothy Flynn
4985d3ef42 LibJS: Fix linked specification of String.prototype.concat 2021-07-05 23:26:41 +01:00
Hendiadyoin1
b583726deb LibM: Use assembly for all atan versions 2021-07-06 00:16:45 +02:00
Hendiadyoin1
119f280f34 LibM: Use fcos for cosine
For some reason we were using sin(x+M_PI_2) instead
2021-07-06 00:16:45 +02:00
Jean-Baptiste Boric
fdb5367da1 Kernel: Promote various integers to 64 bits in storage layer 2021-07-06 00:16:22 +02:00
Gunnar Beutner
f3a3a63b68 LibThread: Fix formatting that was broken by the previous commit 2021-07-06 00:14:19 +02:00
Gunnar Beutner
01db5205ab LibThreading: Fix building the library on macOS 2021-07-06 00:06:32 +02:00
Andreas Kling
565796ae4e Kernel+LibC: Remove sys$donate()
This was an old SerenityOS-specific syscall for donating the remainder
of the calling thread's time-slice to another thread within the same
process.

Now that Threading::Lock uses a pthread_mutex_t internally, we no
longer need this syscall, which allows us to get rid of a surprising
amount of unnecessary scheduler logic. :^)
2021-07-05 23:30:15 +02:00
Andreas Kling
c40780d404 LibThreading: Reimplement Lock in terms of pthread_mutex_t
This class was previously a spinlock that would call sys$donate()
to donate its timeslice to whichever thread was holding the lock.

Now that pthread_mutex_t has a fast path, let's implement Lock on top
of that instead and get rid of the last remaining user of sys$donate().
2021-07-05 23:30:15 +02:00
Andreas Kling
a6f0861c7b Assistant: Add missing <unistd.h> include 2021-07-05 23:30:15 +02:00
Andreas Kling
90e5fd5b53 LibC+LibPthread: Add PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
This is a common but non-standard way of initializing a pthread_mutex_t
in recursive mode.
2021-07-05 23:30:15 +02:00
Tom
908f86b061 Kernel: Print region name+offset for user addresses in thread backtrace
This provides more crucial information to be able to do an addr2line
lookup on a backtrace captured with Thread::backtrace.

Also change the offset to hexadecimal as this is what is require for
addr2line.
2021-07-05 22:59:14 +02:00
Luke
85bd454b48 LibWeb: Use is_nullish instead of is_null for nullable types
As according to: https://heycam.github.io/webidl/#es-nullable-type
Both null and undefined are treated as IDL null, but we were only
treating null as IDL null.
2021-07-05 21:36:45 +02:00
Linus Groh
339ccba354 LibJS: Make Object.prototype.toString() fully spec compliant
- Fix evaluation order: IsArray(O) should always be called and before
  Get(O, @@toStringTag), previously it was the other way around and
  IsArray would only be called if @@toStringTag is not a string
- Add missing exception checks to both function calls
- Add missing builtin tag for arguments object

Also, while we're here:
- Update variable names to match spec
- Add spec step comments
2021-07-05 20:21:26 +01:00
Marcus Nilsson
e1906d74b8 PixelPaint: Make move_selection() cycle through layers
Previously move_selection() did not work as expected. Instead store the
selected layer index in a member variable and continue to cycle through
the layers when you come to the start/end. Also use it to scroll into
view. Lastly rename the function to cycle_through_selection() to make it
clearer what it does.
2021-07-05 20:39:30 +02:00
Marcus Nilsson
8d205ae62e PixelPaint: Use layer menu as context menu in LayerListWidget
This enables the layer menu as a context menu in LayerListWidget,
setting the clicked layer as active for now, but in the future it
would be nice to have custom menu applying to the clicked layer instead
of the active layer.
2021-07-05 20:39:30 +02:00
Marcus Nilsson
9df3550e58 PixelPaint: Change color of disabled layers in LayerListWidget 2021-07-05 20:39:30 +02:00