serenity/Meta
Andreas Kling 68452c749a LibWeb: Prevent GC from running during intrinsics allocation
Due to the way we lazily construct prototypes and constructors for web
platform interfaces, it's possible for nested GC allocation to occur
while GC objects have been allocated but not fully constructed.

If the garbage collector ends up running in this state, it may attempt
to call JS::Cell::visit_edges() on an object whose vtable pointer hasn't
been set up yet.

This patch works around the issue by deferring GC while intrinsics are
being brought up. Furthermore, we also create a dummy global object for
the internal realm, and populate it with intrinsics. This works around
the same issue happening when allocating something (like the default UA
stylesheets) in the internal realm.

These solutions are pretty hacky and sad, so I've left FIXMEs about
finding a nicer way.
2022-10-20 15:16:23 +02:00
..
Azure Toolchain: Move the binutils patch into its own folder 2022-10-01 18:43:29 +01:00
CMake LibTimeZone+LibJS: Update to TZDB version 2022e 2022-10-18 16:01:44 +02:00
HeaderCheck HeaderCheck: Also check AK for broken headers 2022-09-18 13:27:24 -04:00
Lagom LibWeb: Prevent GC from running during intrinsics allocation 2022-10-20 15:16:23 +02:00
Screenshots
ShellCompletions/zsh
Websites
.shell_include.sh Meta: Start moving common shell definitions into a common file 2022-10-16 23:39:45 +02:00
analyze-qemu-coverage.sh Meta: Make x86-64 target the default 2022-10-03 11:14:53 +02:00
bochsrc
build-image-extlinux.sh Meta: Start moving common shell definitions into a common file 2022-10-16 23:39:45 +02:00
build-image-grub.sh Meta: Start moving common shell definitions into a common file 2022-10-16 23:39:45 +02:00
build-image-limine.sh Meta: Start moving common shell definitions into a common file 2022-10-16 23:39:45 +02:00
build-image-qemu.sh Meta: Start moving common shell definitions into a common file 2022-10-16 23:39:45 +02:00
build-manpages-website.sh
build-native-partition.sh Meta: Start moving common shell definitions into a common file 2022-10-16 23:39:45 +02:00
build-root-filesystem.sh Meta: Get rid of /res/version.ini 2022-10-14 13:45:33 +02:00
check-ak-test-files.sh
check-debug-flags.sh Meta: Only check changed files in check-debug-flags during pre-commit 2022-09-18 18:45:25 -07:00
check-emoji.py Meta: Rewrite pre-commit script check-emoji in python 2022-09-18 18:45:25 -07:00
check-markdown.sh
check-newlines-at-eof.py Meta: Only check changed files in check-newlines-at-eof 2022-09-18 18:45:25 -07:00
check-png-sizes.sh
check-style.py LibJS: Add JS::SafeFunction, like Function but protects captures from GC 2022-09-24 12:23:29 +02:00
check-symbols.sh Meta: Make x86-64 target the default 2022-10-03 11:14:53 +02:00
convert-markdown-links.lua
debug-kernel.sh Meta: Make x86-64 target the default 2022-10-03 11:14:53 +02:00
export-argsparser-manpages.sh Meta: Make x86-64 target the default 2022-10-03 11:14:53 +02:00
extlinux.conf
generate-embedded-resource-assembly.sh
generate-emoji-txt.sh
generate-libwasm-spec-test.py
generate-libwasm-spec-test.sh
grub-ebr.cfg
grub-gpt.cfg
grub-mbr.cfg
install-ports-tree.sh
limine.cfg
lint-ci.sh Meta: Remove 'time' invocation in lint-ci 2022-09-22 00:45:10 +02:00
lint-clang-format.sh
lint-commit.sh Meta: Revise lint-commit.sh regex for the title 2022-09-15 13:55:32 +01:00
lint-executable-resources.sh
lint-gml-format.sh Meta: Only check changed files in lint-gml-format.sh 2022-09-18 18:45:25 -07:00
lint-keymaps.py
lint-ports.py
lint-prettier.sh
lint-python.sh
lint-shell-scripts.sh Meta: Allow shellcheck to search sourced files in the script directory 2022-10-16 23:39:45 +02:00
new-project.sh
refresh-serenity-qtcreator.sh
run.sh Meta: Force -machine pc-i440fx-7.0 when using QEMU >= 7.1 2022-10-03 09:57:45 +01:00
serenity.sh Meta: Print error if cmake does not exist 2022-10-16 17:49:18 +02:00
serenity_gdb.py
text-to-cpp-string.sh
tweet-commits.js