summaryrefslogtreecommitdiff
path: root/src/eval/func.rs
diff options
context:
space:
mode:
authorSébastien d'Herbais de Thun <sebastien.d.herbais@gmail.com>2023-04-23 14:33:56 +0200
committerGitHub <noreply@github.com>2023-04-23 14:33:56 +0200
commit561ff979d574f496415c0499345d41da2e1f6e1e (patch)
tree037479ac000bd87a1cb2149e5389b28f08d24051 /src/eval/func.rs
parent2fbb14f712708188649181525813b3ac5a02e0fb (diff)
Add instrumentation (Part 1) (#761)
Diffstat (limited to 'src/eval/func.rs')
-rw-r--r--src/eval/func.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/eval/func.rs b/src/eval/func.rs
index 29b85f7a..489527ef 100644
--- a/src/eval/func.rs
+++ b/src/eval/func.rs
@@ -75,6 +75,12 @@ impl Func {
/// Call the function with the given arguments.
pub fn call_vm(&self, vm: &mut Vm, mut args: Args) -> SourceResult<Value> {
+ let _span = tracing::info_span!(
+ "call",
+ name = self.name().unwrap_or("<anon>"),
+ file = 0,
+ );
+
match &self.repr {
Repr::Native(native) => {
let value = (native.func)(vm, &mut args)?;
@@ -111,6 +117,7 @@ impl Func {
}
/// Call the function with a Vt.
+ #[tracing::instrument(skip_all)]
pub fn call_vt(
&self,
vt: &mut Vt,
@@ -281,6 +288,7 @@ pub enum Param {
impl Closure {
/// Call the function in the context with the arguments.
#[comemo::memoize]
+ #[tracing::instrument(skip_all)]
#[allow(clippy::too_many_arguments)]
fn call(
this: &Func,
@@ -399,6 +407,7 @@ impl<'a> CapturesVisitor<'a> {
}
/// Visit any node and collect all captured variables.
+ #[tracing::instrument(skip_all)]
pub fn visit(&mut self, node: &SyntaxNode) {
match node.cast() {
// Every identifier is a potential variable that we need to capture.