WebCrypto uses JSON as a key serialization format in a way that's not really tied to JavaScript. I had to store an ExecState pointer to perform the work, but that's somewhat ugly and unsafe. It would help a lot if there was a way to work with JSON as a pure data container, I'm imagining something like a DOM SAX interface for parsing.
Better to store a VM* or JSGlobalObject* than an ExecState*. ExecState* has no lifetime guarantee.