Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
internal_call_stack_manager.cpp
Go to the documentation of this file.
1
#include "
barretenberg/vm2/simulation/internal_call_stack_manager.hpp
"
2
3
namespace
bb::avm2::simulation
{
4
5
void
InternalCallStackManager::push
(
PC
return_pc)
6
{
7
// Add the current call id & return_pc to the stack
8
internal_call_stack
.push({ .return_id =
current_return_call_id
, .return_pc = return_pc });
9
10
internal_call_stack_events
.emit(
InternalCallStackEvent
{
11
.
context_id
=
context_id
,
12
.entered_call_id =
next_internal_call_id
,
13
.id =
current_internal_call_id
,
14
.return_id =
current_return_call_id
,
15
.return_pc = return_pc,
16
});
17
18
// Update id values
19
current_return_call_id
=
current_internal_call_id
;
20
current_internal_call_id
=
next_internal_call_id
;
21
next_internal_call_id
++;
22
}
23
24
PC
InternalCallStackManager::pop
()
25
{
26
if
(
internal_call_stack
.empty()) {
27
throw
std::runtime_error(
"Internal call stack is empty. Cannot pop."
);
28
}
29
// We need to restore the call ptr info to the previous call
30
InternalCallPtr
prev_call_ptr =
internal_call_stack
.top();
31
32
// Reset the id values
33
current_internal_call_id
=
current_return_call_id
;
34
current_return_call_id
= prev_call_ptr.
return_id
;
35
36
internal_call_stack
.pop();
37
38
// Return the next pc of the previous call
39
return
prev_call_ptr.
return_pc
;
40
}
41
42
InternalCallId
InternalCallStackManager::get_next_call_id
()
const
43
{
44
return
next_internal_call_id
;
45
}
46
47
InternalCallId
InternalCallStackManager::get_call_id
()
const
48
{
49
return
current_internal_call_id
;
50
}
51
52
InternalCallId
InternalCallStackManager::get_return_call_id
()
const
53
{
54
return
current_return_call_id
;
55
}
56
57
}
// namespace bb::avm2::simulation
bb::avm2::internal_call_stack
Definition
internal_call_stack.hpp:33
bb::avm2::simulation::InternalCallStackManager::get_call_id
InternalCallId get_call_id() const override
Definition
internal_call_stack_manager.cpp:47
bb::avm2::simulation::InternalCallStackManager::get_next_call_id
InternalCallId get_next_call_id() const override
Definition
internal_call_stack_manager.cpp:42
bb::avm2::simulation::InternalCallStackManager::internal_call_stack_events
EventEmitterInterface< InternalCallStackEvent > & internal_call_stack_events
Definition
internal_call_stack_manager.hpp:52
bb::avm2::simulation::InternalCallStackManager::push
void push(PC return_pc) override
Definition
internal_call_stack_manager.cpp:5
bb::avm2::simulation::InternalCallStackManager::get_return_call_id
InternalCallId get_return_call_id() const override
Definition
internal_call_stack_manager.cpp:52
bb::avm2::simulation::InternalCallStackManager::context_id
uint32_t context_id
Definition
internal_call_stack_manager.hpp:49
bb::avm2::simulation::InternalCallStackManager::pop
PC pop() override
Definition
internal_call_stack_manager.cpp:24
bb::avm2::simulation::InternalCallStackManager::next_internal_call_id
InternalCallId next_internal_call_id
Definition
internal_call_stack_manager.hpp:45
bb::avm2::simulation::InternalCallStackManager::current_internal_call_id
InternalCallId current_internal_call_id
Definition
internal_call_stack_manager.hpp:46
bb::avm2::simulation::InternalCallStackManager::current_return_call_id
InternalCallId current_return_call_id
Definition
internal_call_stack_manager.hpp:47
internal_call_stack_manager.hpp
bb::avm2::simulation
Definition
address_derivation.cpp:8
bb::avm2::PC
uint32_t PC
Definition
aztec_types.hpp:13
bb::avm2::InternalCallId
uint32_t InternalCallId
Definition
aztec_types.hpp:34
bb::avm2::simulation::InternalCallPtr
Definition
internal_call_stack_manager.hpp:13
bb::avm2::simulation::InternalCallPtr::return_pc
PC return_pc
Definition
internal_call_stack_manager.hpp:15
bb::avm2::simulation::InternalCallPtr::return_id
InternalCallId return_id
Definition
internal_call_stack_manager.hpp:14
bb::avm2::simulation::InternalCallStackEvent
Definition
internal_call_stack_event.hpp:9
bb::avm2::simulation::InternalCallStackEvent::context_id
uint32_t context_id
Definition
internal_call_stack_event.hpp:10
src
barretenberg
vm2
simulation
internal_call_stack_manager.cpp
Generated by
1.9.8