• Ulan Degenbaev's avatar
    [heap] Fix black allocation. · 97b2a814
    Ulan Degenbaev authored
    This patch ensures that an object returned by AllocateRaw is marked
    black if black allocation starts during the object allocation.
    
    This fixes the following issue:
    1) Generated code requests allocation of size N for folded allocation.
    2) Runtime gets a free list node at address A of size N+M and sets up
       a linear allocation area with top = A+N and limit = A+N+M.
    3) Runtime invokes the allocation observer that starts incremental marking
       and start black allocation. The area [A+N, A+N+M) is marked black.
    4) Runtime returns a white object at address A as the allocation result.
    5) Generated code moves the top pointer to A and does bump pointer
       allocations of white objects from A to A+N+M.
    6) Object allocated new A+N can have the impossible marbit pattern.
    
    Bug: chromium:694255
    Change-Id: I09ceebc97a510fa5fe4ff20706bc46a99f8b7cf4
    Reviewed-on: https://chromium-review.googlesource.com/638338
    Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
    Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#48005}
    97b2a814
Name
Last commit
Last update
..
compiler Loading commit data...
ffi Loading commit data...
heap Loading commit data...
interpreter Loading commit data...
libplatform Loading commit data...
libsampler Loading commit data...
parsing Loading commit data...
wasm Loading commit data...
BUILD.gn Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...
cctest.cc Loading commit data...
cctest.gyp Loading commit data...
cctest.h Loading commit data...
cctest.isolate Loading commit data...
cctest.status Loading commit data...
cctest_exe.isolate Loading commit data...
expression-type-collector-macros.h Loading commit data...
gay-fixed.cc Loading commit data...
gay-fixed.h Loading commit data...
gay-precision.cc Loading commit data...
gay-precision.h Loading commit data...
gay-shortest.cc Loading commit data...
gay-shortest.h Loading commit data...
log-eq-of-logging-and-traversal.js Loading commit data...
print-extension.cc Loading commit data...
print-extension.h Loading commit data...
profiler-extension.cc Loading commit data...
profiler-extension.h Loading commit data...
scope-test-helper.h Loading commit data...
setup-isolate-for-tests.cc Loading commit data...
setup-isolate-for-tests.h Loading commit data...
test-access-checks.cc Loading commit data...
test-accessor-assembler.cc Loading commit data...
test-accessors.cc Loading commit data...
test-allocation.cc Loading commit data...
test-api-accessors.cc Loading commit data...
test-api-interceptors.cc Loading commit data...
test-api.cc Loading commit data...
test-api.h Loading commit data...
test-array-list.cc Loading commit data...
test-assembler-arm.cc Loading commit data...
test-assembler-arm64.cc Loading commit data...
test-assembler-ia32.cc Loading commit data...
test-assembler-mips.cc Loading commit data...
test-assembler-mips64.cc Loading commit data...
test-assembler-ppc.cc Loading commit data...
test-assembler-s390.cc Loading commit data...
test-assembler-x64.cc Loading commit data...
test-atomicops.cc Loading commit data...
test-bignum-dtoa.cc Loading commit data...
test-bignum.cc Loading commit data...
test-bit-vector.cc Loading commit data...
test-circular-queue.cc Loading commit data...
test-code-cache.cc Loading commit data...
test-code-layout.cc Loading commit data...
test-code-stub-assembler.cc Loading commit data...
test-code-stubs-arm.cc Loading commit data...
test-code-stubs-arm64.cc Loading commit data...
test-code-stubs-ia32.cc Loading commit data...
test-code-stubs-mips.cc Loading commit data...
test-code-stubs-mips64.cc Loading commit data...
test-code-stubs-x64.cc Loading commit data...
test-code-stubs.cc Loading commit data...
test-code-stubs.h Loading commit data...
test-compiler.cc Loading commit data...
test-constantpool.cc Loading commit data...
test-conversions.cc Loading commit data...
test-cpu-profiler.cc Loading commit data...
test-date.cc Loading commit data...
test-debug.cc Loading commit data...
test-decls.cc Loading commit data...
test-deoptimization.cc Loading commit data...
test-dictionary.cc Loading commit data...
test-disasm-arm.cc Loading commit data...
test-disasm-arm64.cc Loading commit data...
test-disasm-ia32.cc Loading commit data...
test-disasm-mips.cc Loading commit data...
test-disasm-mips64.cc Loading commit data...
test-disasm-ppc.cc Loading commit data...
test-disasm-s390.cc Loading commit data...
test-disasm-x64.cc Loading commit data...
test-diy-fp.cc Loading commit data...
test-double.cc Loading commit data...
test-dtoa.cc Loading commit data...
test-elements-kind.cc Loading commit data...
test-experimental-extra.js Loading commit data...
test-extra.js Loading commit data...
test-fast-dtoa.cc Loading commit data...
test-feedback-vector.cc Loading commit data...
test-feedback-vector.h Loading commit data...
test-field-type-tracking.cc Loading commit data...
test-fixed-dtoa.cc Loading commit data...
test-flags.cc Loading commit data...
test-func-name-inference.cc Loading commit data...
test-fuzz-arm64.cc Loading commit data...
test-global-handles.cc Loading commit data...
test-global-object.cc Loading commit data...
test-hashcode.cc Loading commit data...
test-hashmap.cc Loading commit data...
test-heap-profiler.cc Loading commit data...
test-identity-map.cc Loading commit data...
test-inobject-slack-tracking.cc Loading commit data...
test-intl.cc Loading commit data...
test-javascript-arm64.cc Loading commit data...
test-js-arm64-variables.cc Loading commit data...
test-list.cc Loading commit data...
test-liveedit.cc Loading commit data...
test-lockers.cc Loading commit data...
test-log-stack-tracer.cc Loading commit data...
test-log.cc Loading commit data...
test-macro-assembler-arm.cc Loading commit data...
test-macro-assembler-mips.cc Loading commit data...
test-macro-assembler-mips64.cc Loading commit data...
test-macro-assembler-x64.cc Loading commit data...
test-managed.cc Loading commit data...
test-mementos.cc Loading commit data...
test-modules.cc Loading commit data...
test-object.cc Loading commit data...
test-orderedhashtable.cc Loading commit data...
test-parsing.cc Loading commit data...
test-platform-linux.cc Loading commit data...
test-platform-win32.cc Loading commit data...
test-platform.cc Loading commit data...
test-profile-generator.cc Loading commit data...
test-random-number-generator.cc Loading commit data...
test-regexp.cc Loading commit data...
test-representation.cc Loading commit data...
test-run-wasm-relocation-arm.cc Loading commit data...
test-run-wasm-relocation-arm64.cc Loading commit data...
test-run-wasm-relocation-ia32.cc Loading commit data...
test-run-wasm-relocation-x64.cc Loading commit data...
test-sampler-api.cc Loading commit data...
test-serialize.cc Loading commit data...
test-simulator-arm.cc Loading commit data...
test-simulator-arm64.cc Loading commit data...
test-strings.cc Loading commit data...
test-strtod.cc Loading commit data...
test-symbols.cc Loading commit data...
test-thread-termination.cc Loading commit data...
test-threads.cc Loading commit data...
test-trace-event.cc Loading commit data...
test-traced-value.cc Loading commit data...
test-transitions.cc Loading commit data...
test-transitions.h Loading commit data...
test-typedarrays.cc Loading commit data...
test-types.cc Loading commit data...
test-unbound-queue.cc Loading commit data...
test-unboxed-doubles.cc Loading commit data...
test-unscopables-hidden-prototype.cc Loading commit data...
test-usecounters.cc Loading commit data...
test-utils-arm64.cc Loading commit data...
test-utils-arm64.h Loading commit data...
test-utils.cc Loading commit data...
test-version.cc Loading commit data...
test-weakmaps.cc Loading commit data...
test-weaksets.cc Loading commit data...
testcfg.py Loading commit data...
trace-extension.cc Loading commit data...
trace-extension.h Loading commit data...
types-fuzz.h Loading commit data...
unicode-helpers.h Loading commit data...