I'm doing research and using Frida for dynamic binary instrumentation v8 in Chromium. I'm interested in how the v8::String (or v8::internal::String) object is stored in memory. I call setTimeout("console.log ('12339');", 100); on the web page and I intercept the setTimeoutMethodCallback call at the interpreter level. After that I get access to the String object from FunctionCallbackInfo <v8 :: Value> args.
The first call the String object in memory looks like this:
You can see that there is a line through 23 bytes, and before it its length.
But already with the repeated call setTimeout ("console.log ('12339');", 100); the String object looks like this:
The length of the line is also visible, but the line itself is no longer visible. What is it? Is this caching? Is it a feature of v8 or Chromium? Why does this happen and what is the structure of the String object now? And where is the line now? Please help with research. I did not find the documentation for something like this.