On Sat, May 12, 2018 at 6:42 AM, Jane Chen <jxche...@gmail.com> wrote: > Thanks Ben. > > I want to re-use my context for performance reasons, but some JavaScript > programs have constant global variables that cannot be re-defined, such as > those declared with let or const. To work around this, I thought I could > just evaluate each program in a closure by artificially enclosing the script > with {}. Do you see any issue with doing it?
I don't see anything wrong with that but if you reuse the context, you have to scrub globals introduced with `var`, undo any monkey-patching of builtins, figure out how to cancel pending promises, etc. Using a new context is probably a lot simpler and robuster. > Is there any better way to do so? You could compile your code as an es6 module or with v8::ScriptCompiler::CompileFunctionInContext() but you'd probably have to upgrade first. Modules don't exist in V8 5.3 and CompileFunctionInContext() has a bug where the line and column in stack traces are wrong. Modules and functions have different run-time semantics than a top-level script, of course, so they might not be a good fit if backwards compatibility is a concern. -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.