• chunyang.dai's avatar
    Fix the failure when enabling v8 profiler or vtune profiler in chromium. · 8ae236c0
    chunyang.dai authored
       When enabling the v8 profiler (Using the following command parameters: --js-flags=--prof)
       or vtune profiling in chromium. it will break. This failure is introduced by this CL:
       https://codereview.chromium.org/1218863002.
    
       The reason is that V8 will enable the JITted code logging if --prof is set for V8. And under
       this condition, the function Logger::LogCodeObjects() will be invoked and it will trigger a
       mark-compact GC when deserializing the snapshot. This GC will use MemoryReducer to post a
       delay task by invoking V8Platform::CallDelayedOnForegroundThread() function. But at this point
       V8 isolation is still under initialization and the PerIsolationData of this isolation has not
       been created. (isolation_holder.cc:39~40 line). This leads to V8Platform::CallDelayedOnForegroundThread()
       failure because of segment fault.
    
       According to my understanding, I proposed the following fix. If the heap deserialization has not
       be completed, it does not post the delay task for next GC.
    
    BUG=
    
    Review URL: https://codereview.chromium.org/1270493002
    
    Cr-Commit-Position: refs/heads/master@{#29937}
    8ae236c0
heap.cc 237 KB