// Copyright 2017 the V8 project authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file.// Flags: --allow-natives-syntaxfunctionf(){functiong(arg){returnarg;}// The closure contains a call IC slot.returnfunction(){returng(42);};}consta=Realm.create();constb=Realm.create();// Create two closures in different contexts sharing the same// SharedFunctionInfo (shared due to code caching).constx=Realm.eval(a,f.toString()+" f()");consty=Realm.eval(b,f.toString()+" f()");// Run the first closure to create SFI::code.x();// At this point, SFI::code is set and `x` has a feedback vector (`y` does not).// Enabling block code coverage deoptimizes all functions and triggers the// buggy code path in which we'd unconditionally replace JSFunction::code with// its SFI::code (but skip feedback vector setup).%DebugToggleBlockCoverage(true);// Still no feedback vector set on `y` but it now contains code. Run it to// trigger the crash when attempting to write into the non-existent feedback// vector.y();