• kaznacheev@chromium.org's avatar
    Prevent modification of cached normalized maps. · cfbc1eed
    kaznacheev@chromium.org authored
    Finally sovles the problem that r5342 attempted to solve.
    When adding a stub to a map's code cache we need to make
    sure that this map is not used by object that do not need
    this stub.
    
    Existing solution had 2 flaws:
    1. It checked that the map is cached by asking the current context.
    If the object escaped into another context then NormalizedMapCache::Contains
    returns false negative.
    
    2. If a map gets evicted from the cache we should not try to modify it
    even though Contains returns false.
    
    This patch implements much less fragile solution of the same problem:
    A map now has a flag (is_shared) that is set once the map is added
    to a cache, stays set even after the cache eviction, and is cleared
    if the object goes back to fast mode.
    
    Added a regression test.
    
    Review URL: http://codereview.chromium.org/3472006
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5518 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    cfbc1eed
Name
Last commit
Last update
..
SConscript Loading commit data...
cctest.cc Loading commit data...
cctest.h Loading commit data...
cctest.status 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...
test-accessors.cc Loading commit data...
test-alloc.cc Loading commit data...
test-api.cc Loading commit data...
test-assembler-arm.cc Loading commit data...
test-assembler-ia32.cc Loading commit data...
test-assembler-mips.cc Loading commit data...
test-assembler-x64.cc Loading commit data...
test-ast.cc Loading commit data...
test-circular-queue.cc Loading commit data...
test-compiler.cc Loading commit data...
test-conversions.cc Loading commit data...
test-cpu-profiler.cc Loading commit data...
test-dataflow.cc Loading commit data...
test-debug.cc Loading commit data...
test-decls.cc Loading commit data...
test-disasm-arm.cc Loading commit data...
test-disasm-ia32.cc Loading commit data...
test-diy-fp.cc Loading commit data...
test-double.cc Loading commit data...
test-fast-dtoa.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-hashmap.cc Loading commit data...
test-heap-profiler.cc Loading commit data...
test-heap.cc Loading commit data...
test-list.cc Loading commit data...
test-liveedit.cc Loading commit data...
test-lock.cc Loading commit data...
test-log-stack-tracer.cc Loading commit data...
test-log-utils.cc Loading commit data...
test-log.cc Loading commit data...
test-macro-assembler-x64.cc Loading commit data...
test-mark-compact.cc Loading commit data...
test-mips.cc Loading commit data...
test-parsing.cc Loading commit data...
test-platform-linux.cc Loading commit data...
test-platform-macos.cc Loading commit data...
test-platform-nullos.cc Loading commit data...
test-platform-win32.cc Loading commit data...
test-profile-generator.cc Loading commit data...
test-regexp.cc Loading commit data...
test-serialize.cc Loading commit data...
test-sockets.cc Loading commit data...
test-spaces.cc Loading commit data...
test-strings.cc Loading commit data...
test-thread-termination.cc Loading commit data...
test-threads.cc Loading commit data...
test-type-info.cc Loading commit data...
test-unbound-queue.cc Loading commit data...
test-utils.cc Loading commit data...
test-version.cc Loading commit data...
testcfg.py Loading commit data...