2

자바 스크립트 코드의 전체 AST (추상 구문 트리)를 가져와서 V8의 파서를 사용하기로 결정했습니다. V8을 사용하려고 시도한 후에, V8이 실행되지 않는 함수 (데드 코드)를 구문 분석하지 않는다는 것을 알게되었습니다. 내 가정은 V8이 실행될 때만 함수 구문 분석을 트리거하는 것입니다. 나는 그것을 게으른 컴파일이라고 부른다V8, 게으른 컴파일 문제에서 전체 AST 얻기

V8 내에서 실행될 가능성이없는 함수에 대해서도 전체 AST를 얻을 수있는 방법이 있습니까? V8이 완전 AST를 생성하도록 강제 할 수있는 플래그 설정이 있습니까?

답변

1

나는이 아이디어에 반대 할 것을 권고한다 - 내 reply에서 V8 사용자 목록과 비슷한 질문을한다. 게으른 파싱은 내가 지적한 것들 이외에 또 다른 이슈이다. V8은 특정 기능을 열심히 분석 할 수있는 몇 가지 손잡이가 있지만 일반적으로이 기능을 사용하는 것은 쉽지 않다.

+0

"복잡한"노브를 돌리는 사소한 부분에 대한 힌트가 있습니다. – Raks

+0

일반적인 경우에는 노브 이상을 돌려야합니다. 실제로 해킹해야합니다. 공유 할 수있는 쉬운 제조법이 없습니다. 시스템에 익숙하다 할지라도, 시스템의 여러 부분에서 매우 미묘한 암시 적 가정을 수행 할 수 있습니다. V8 파서는 단독으로 사용하도록 설계된 것이 아니며 시스템의 다른 부분과도 혼합되어 있습니다. –

+0

논리적으로 아직 컴파일되지 않은 함수가 실행시 CompileLazy가 트리거되어야합니다. 디버거를 실행하고 스택을 분석해 보았습니다. 그러나 작동중인 일부 메모리 주소 트릭이 있다고 생각합니다. V8 이론을 이해하도록 장려하는 몇 줄의 설명은 거의 없지만 전체 AST를 얻을 수는 없습니다. – Raks