Это довольно старый, но, возможно, ответ поможет кому-то наткнуться на это. Ответ - да, если вы готовы изменить V8 и скомпилировать свою собственную версию.
Если это так, то в compiler.cc вы найдете место, где MakeCode вызывается повсюду MakeFunctionInfo , который преобразует AST, который хранится в переданном в Объект CompilationInfo в нативный код.
Вам нужно написать класс, который наследует от AstVisitor , затем вы можете проверить AST, вставив следующие строки перед вызовом MakeCode :
MyAstVisitor mAV;
// this will call VisitFunctionLiteral in your AST visitor
info->function()->Accept(mAV);
Поскольку V8 компилирует функции точно в срок, когда они на самом деле вызываются, в CompileLazy есть еще одно место, где вам придется делать то же самое, чтобы получать их AST во время выполнения вызывающих скриптов.
Из-за отложенной компиляции это, вероятно, не позволит вам выполнять статический анализ, потому что выполнение уже выполняется до того, как вы получите доступ к AST для лениво скомпилированных вещей. Но это как получить AST.