mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 22:58:20 +00:00
inlining of Zeek script functions
This commit is contained in:
parent
3c39f11726
commit
c42586af2c
63 changed files with 21807 additions and 171 deletions
14
src/Frame.cc
14
src/Frame.cc
|
@ -30,6 +30,8 @@ Frame::Frame(int arg_size, const ScriptFunc* func, const zeek::Args* fn_args)
|
|||
delayed = false;
|
||||
|
||||
closure = nullptr;
|
||||
|
||||
current_offset = 0;
|
||||
}
|
||||
|
||||
Frame::~Frame()
|
||||
|
@ -68,12 +70,16 @@ void Frame::SetElement(int n, Val* v)
|
|||
|
||||
void Frame::SetElement(int n, ValPtr v)
|
||||
{
|
||||
n += current_offset;
|
||||
|
||||
ClearElement(n);
|
||||
frame[n] = {std::move(v), false};
|
||||
}
|
||||
|
||||
void Frame::SetElementWeak(int n, Val* v)
|
||||
{
|
||||
n += current_offset;
|
||||
|
||||
ClearElement(n);
|
||||
frame[n] = {{AdoptRef{}, v}, true};
|
||||
}
|
||||
|
@ -120,10 +126,10 @@ const ValPtr& Frame::GetElementByID(const ID* id) const
|
|||
{
|
||||
auto where = offset_map->find(std::string(id->Name()));
|
||||
if ( where != offset_map->end() )
|
||||
return frame[where->second].val;
|
||||
return frame[where->second + current_offset].val;
|
||||
}
|
||||
|
||||
return frame[id->Offset()].val;
|
||||
return frame[id->Offset() + current_offset].val;
|
||||
}
|
||||
|
||||
void Frame::Reset(int startIdx)
|
||||
|
@ -142,7 +148,7 @@ void Frame::Reset(int startIdx)
|
|||
functions_with_closure_frame_reference.reset();
|
||||
}
|
||||
|
||||
for ( int i = startIdx; i < size; ++i )
|
||||
for ( int i = startIdx + current_offset; i < size; ++i )
|
||||
ClearElement(i);
|
||||
}
|
||||
|
||||
|
@ -244,7 +250,7 @@ Frame* Frame::SelectiveClone(const IDPList& selection, ScriptFunc* func) const
|
|||
}
|
||||
}
|
||||
|
||||
if ( ! frame[id->Offset()].val )
|
||||
if ( ! frame[id->Offset() + current_offset].val )
|
||||
reporter->InternalError("Attempted to clone an id ('%s') with no associated value.", id->Name());
|
||||
|
||||
CloneNonFuncElement(id->Offset(), func, other);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue