Skip to content

Commit

Permalink
perf(semantic): do not record ast nodes for cfg if cfg disabled (#4263)
Browse files Browse the repository at this point in the history
Control flow graph builder records AST node IDs in a temp structure `ast_node_records`. Disable this if CFG is disabled.
  • Loading branch information
overlookmotel committed Jul 15, 2024
1 parent da69076 commit 23743db
Showing 1 changed file with 13 additions and 5 deletions.
18 changes: 13 additions & 5 deletions crates/oxc_semantic/src/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -250,18 +250,26 @@ impl<'a> SemanticBuilder<'a> {
}

fn record_ast_nodes(&mut self) {
self.ast_node_records.push(AstNodeId::dummy());
if self.cfg.is_some() {
self.ast_node_records.push(AstNodeId::dummy());
}
}

#[allow(clippy::unnecessary_wraps)]
fn retrieve_recorded_ast_node(&mut self) -> Option<AstNodeId> {
Some(self.ast_node_records.pop().expect("there is no ast node record to stop."))
if self.cfg.is_some() {
Some(self.ast_node_records.pop().expect("there is no ast node record to stop."))
} else {
None
}
}

fn record_ast_node(&mut self) {
if let Some(record) = self.ast_node_records.last_mut() {
if *record == AstNodeId::dummy() {
*record = self.current_node_id;
if self.cfg.is_some() {
if let Some(record) = self.ast_node_records.last_mut() {
if *record == AstNodeId::dummy() {
*record = self.current_node_id;
}
}
}
}
Expand Down

0 comments on commit 23743db

Please sign in to comment.