• Leszek Swirski's avatar
    [snapshot] Reland recent de/serializer related changes · 695d9b64
    Leszek Swirski authored
    This reverts commit 1aa9ab73.
    
    The reverted CL chain had an issue where ThinStrings could accidentally
    end up in compilation artifacts, causing issues down the line with ICs
    that expected direct internalized strings.
    
    The reason for this bug was that forward references to internalized
    strings were resolved before PostProcessNewObject. When this happened,
    the internalized string A would be written to the field where it was
    previously deferred, then PostProcessNewObject would change string A to
    string A', and update string A to a ThinString.  This means any _future_
    back references to A would see the ThinString and follow it to receive
    A', but any _past_ forward references would keep pointing to the
    ThinString A.
    
    This reland fixes this by preventing InternalizedString deferral, so
    that all references to InternalizedStrings are back references. It also
    adds some additional verification to the heap verifier that constant
    pools and object boilerplate descriptors aren't allowed to hold thin
    strings.
    
    This patch also fixes an additional bug in the original CL, where weak
    forward refs weren't being serialized with a weak prefix.
    
    Original change's description:
    > Revert recent de/serializer related changes
    >
    > They are suspected to be causing Canary crashes, confirmed through
    > local reverts and repro attempts.
    >
    > This reverts:
    > - "Reland "[serializer] Change deferring to use forward refs""
    >   commit 76d684cc.
    > - "Reland "[serializer] Remove new space""
    >   commit 81231c23.
    > - "[serializer] Clean-up and de-macro ReadDataCase"
    >   commit c06d24b9.
    > - "[serializer] DCHECK deserializer allocations are initialized"
    >   commit fbc1f32d.
    >
    > Bug: chromium:1128872
    > Change-Id: Id2bb3b8fac526fdf9ffb033222ae08cd423f8238
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2414220
    > Reviewed-by: Igor Sheludko <ishell@chromium.org>
    > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
    > Reviewed-by: Adam Klein <adamk@chromium.org>
    > Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#69955}
    
    Tbr: jgruber@chromium.org,dinfuehr@chromium.org
    Bug: chromium:1075999
    Bug: chromium:1127610
    Bug: chromium:1128848
    Bug: chromium:1128872
    Bug: chromium:1128957
    Change-Id: I8b7bbabf77eb8cb942a28316afbfaa5f9a0aa4cb
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2418101
    Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
    Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#69988}
    695d9b64
Name
Last commit
Last update
..
blink_tests Loading commit data...
cfi Loading commit data...
clusterfuzz Loading commit data...
cppgc Loading commit data...
debug_helper Loading commit data...
dev Loading commit data...
gcmole Loading commit data...
generate_shim_headers Loading commit data...
heap-stats Loading commit data...
ignition Loading commit data...
jsfunfuzz Loading commit data...
link_clicker.extension Loading commit data...
mb Loading commit data...
memory Loading commit data...
msan Loading commit data...
ninja Loading commit data...
node Loading commit data...
perf Loading commit data...
profview Loading commit data...
profviz Loading commit data...
release Loading commit data...
sanitizers Loading commit data...
snapshot Loading commit data...
system-analyzer Loading commit data...
testrunner Loading commit data...
toolchain Loading commit data...
torque Loading commit data...
tracing/proto-converter Loading commit data...
turbolizer Loading commit data...
ubsan Loading commit data...
unittests Loading commit data...
v8.xcodeproj Loading commit data...
v8windbg Loading commit data...
valgrind/asan Loading commit data...
vim Loading commit data...
visual_studio Loading commit data...
wasm Loading commit data...
wasm-compilation-hints Loading commit data...
zone-stats Loading commit data...
BUILD.gn Loading commit data...
DEPS Loading commit data...
Makefile.tags Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
SourceMap.js Loading commit data...
__init__.py Loading commit data...
adb-d8.py Loading commit data...
android-build.sh Loading commit data...
android-ll-prof.sh Loading commit data...
android-run.py Loading commit data...
android-sync.sh Loading commit data...
arguments.js Loading commit data...
avg.py Loading commit data...
bash-completion.sh Loading commit data...
bigint-tester.py Loading commit data...
callstats-from-telemetry.sh Loading commit data...
callstats.html Loading commit data...
callstats.py Loading commit data...
callstats.py.vpython Loading commit data...
callstats_groups.py Loading commit data...
check-inline-includes.sh Loading commit data...
check-static-initializers.sh Loading commit data...
check-unused-bailouts.sh Loading commit data...
check-unused-symbols.sh Loading commit data...
codemap.js Loading commit data...
collect_deprecation_stats.sh Loading commit data...
compare-table-gen.js Loading commit data...
compare_torque_output.py Loading commit data...
consarray.js Loading commit data...
cpu.sh Loading commit data...
cross_build_gcc.sh Loading commit data...
csvparser.js Loading commit data...
deprecation_stats.py Loading commit data...
detect-builtins.js Loading commit data...
disasm.py Loading commit data...
draw_instruction_graph.sh Loading commit data...
dump-cpp.py Loading commit data...
dumpcpp-driver.js Loading commit data...
dumpcpp.js Loading commit data...
eval_gc_nvp.py Loading commit data...
eval_gc_time.sh Loading commit data...
find-commit-for-patch.py Loading commit data...
find_depot_tools.py Loading commit data...
freebsd-tick-processor Loading commit data...
fuzz-harness.sh Loading commit data...
gc-nvp-to-csv.py Loading commit data...
gc-nvp-trace-processor.py Loading commit data...
gc_nvp_common.py Loading commit data...
gdb-v8-support.py Loading commit data...
gdbinit Loading commit data...
gen-inlining-tests.py Loading commit data...
gen-keywords-gen-h.py Loading commit data...
gen-postmortem-metadata.py Loading commit data...
generate-builtins-tests.py Loading commit data...
generate-header-include-checks.py Loading commit data...
generate-runtime-call-stats.py Loading commit data...
generate-ten-powers.scm Loading commit data...
get_landmines.py Loading commit data...
grokdump.py Loading commit data...
ic-explorer.html Loading commit data...
ic-processor Loading commit data...
ic-processor-driver.js Loading commit data...
ic-processor.js Loading commit data...
index.html Loading commit data...
inspect-d8.js Loading commit data...
linux-tick-processor Loading commit data...
ll_prof.py Loading commit data...
lldb_commands.py Loading commit data...
locs.py Loading commit data...
logreader.js Loading commit data...
mac-nm Loading commit data...
mac-tick-processor Loading commit data...
map-processor Loading commit data...
map-processor-driver.js Loading commit data...
map-processor.html Loading commit data...
map-processor.js Loading commit data...
objdump-v8 Loading commit data...
parse-processor Loading commit data...
parse-processor-driver.js Loading commit data...
parse-processor.html Loading commit data...
parse-processor.js Loading commit data...
perf-compare.py Loading commit data...
plot-timer-events Loading commit data...
predictable_wrapper.py Loading commit data...
profile.js Loading commit data...
profile_view.js Loading commit data...
regexp-sequences.py Loading commit data...
run-clang-tidy.py Loading commit data...
run-llprof.sh Loading commit data...
run-num-fuzzer.py Loading commit data...
run-perf.sh Loading commit data...
run-tests.py Loading commit data...
run-wasm-api-tests.py Loading commit data...
run.py Loading commit data...
run_perf.py Loading commit data...
shell-utils.h Loading commit data...
splaytree.js Loading commit data...
stats-viewer.py Loading commit data...
test262-results-parser.js Loading commit data...
tick-processor.html Loading commit data...
tickprocessor-driver.js Loading commit data...
tickprocessor.js Loading commit data...
trace-maps-processor.py Loading commit data...
try_perf.py Loading commit data...
turbolizer-perf.py Loading commit data...
update-object-macros-undef.py Loading commit data...
v8_presubmit.py Loading commit data...
v8heapconst.py Loading commit data...
whitespace.txt Loading commit data...
windbg.js Loading commit data...
windows-tick-processor.bat Loading commit data...