From 4d765fa25bcc2a3a6966e1dec91255922897b830 Mon Sep 17 00:00:00 2001 From: Leonardo de Moura Date: Mon, 13 Feb 2017 16:12:25 -0800 Subject: [PATCH] fix(library/vm): profiler was not including builtin functions --- src/library/vm/vm.cpp | 12 ++++++++++++ src/library/vm/vm.h | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/library/vm/vm.cpp b/src/library/vm/vm.cpp index ed205b87f1..3e122d4cc8 100644 --- a/src/library/vm/vm.cpp +++ b/src/library/vm/vm.cpp @@ -2692,6 +2692,18 @@ void vm_state::invoke_global(vm_decl const & d) { #endif } +void vm_state::invoke_cfun(vm_decl const & d) { + if (m_profiling) { + unique_lock lk(m_call_stack_mtx); + push_frame_core(0, 0, d.get_idx()); + } + invoke_fn(d.get_cfn(), d.get_arity()); + if (m_profiling) { + unique_lock lk(m_call_stack_mtx); + m_call_stack.pop_back(); + } +} + void vm_state::invoke(vm_decl const & d) { switch (d.kind()) { case vm_decl_kind::Bytecode: diff --git a/src/library/vm/vm.h b/src/library/vm/vm.h index 54dacca545..8c4db2e44e 100644 --- a/src/library/vm/vm.h +++ b/src/library/vm/vm.h @@ -636,7 +636,7 @@ class vm_state { unsigned pop_frame(); void invoke_builtin(vm_decl const & d); void invoke_fn(vm_cfunction fn, unsigned arity); - void invoke_cfun(vm_decl const & d) { invoke_fn(d.get_cfn(), d.get_arity()); } + void invoke_cfun(vm_decl const & d); void invoke_global(vm_decl const & d); void invoke(vm_decl const & d); void run();