Excellent, thanks for the useful information! I tried the scenario again 
with --js-flags=--no-isolate-script-cache-ageing and still see a bunch of 
duplicated BytecodeArrays in a heap snapshot, so something else must be 
preventing this script from using the Isolate script cache. I'll continue 
investigating; thanks again for pointing me in the right direction.

On Wednesday, February 23, 2022 at 12:03:39 AM UTC-8 [email protected] 
wrote:

> On Wed, Feb 23, 2022 at 1:26 AM '[email protected]' via v8-dev <
> [email protected]> wrote:
>
>> Hello all,
>>
>> An idea came up recently which I imagine some of you have probably 
>> already considered at some point, so I'd love to hear any thoughts you 
>> have, or summaries of past discussions you'd be willing to share. Or if 
>> this idea is fundamentally infeasible, I'd love to hear that too.
>>
>> The scenario: we've been investigating a case where many open tabs all 
>> embed the same cross-site iframe, and all of those iframes get put into the 
>> same process due to the heuristics described in 899838 - Improve process 
>> reuse policies - chromium 
>> <https://bugs.chromium.org/p/chromium/issues/detail?id=899838>. Ignoring 
>> for the moment whether those heuristics are optimal, the result is a single 
>> Isolate with many NativeContexts, where each NativeContext loads mostly the 
>> same scripts.
>>
>> The idea: could V8 share bytecode and/or Sparkplug code for functions in 
>> those scripts? I know that TurboFan code is native context dependent, but 
>> as far as I know, both bytecode and Sparkplug code are native context 
>> independent. If V8 could avoid generating duplicates, then this scenario 
>> would use substantially less memory, plus tabs after the first wouldn't 
>> have to wait on tiering up to Sparkplug.
>>
>
> I think this already happens, at least to some extent. SharedFunctionInfos 
> are shared between native contexts through the compilation cache 
> <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/compilation-cache-table.h;l=90;drc=a2d4701bea545269ad3f5fe6e111adb65c46b8da>,
>  
> and bytecode/baseline code hangs off the SFI 
> <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/shared-function-info.h;l=340;drc=a2d4701bea545269ad3f5fe6e111adb65c46b8da>.
>  
> It's not 100% reliable since the cache is aged. Is the cache not hit in 
> your scenario?
>  
>
>>
>> Thanks,
>> Seth
>>
>> -- 
>> -- 
>> v8-dev mailing list
>> [email protected]
>> http://groups.google.com/group/v8-dev
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "v8-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/v8-dev/bbeb2a47-a26c-4623-81a5-7cad2c0dfec1n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/v8-dev/bbeb2a47-a26c-4623-81a5-7cad2c0dfec1n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-dev/47532fe3-2c32-4a07-aaeb-6537035ec8c0n%40googlegroups.com.

Reply via email to