mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
convert new ZAM operations to use typed operands
This commit is contained in:
parent
3e1b536810
commit
3b6df1ab7f
1 changed files with 41 additions and 29 deletions
|
@ -55,23 +55,24 @@ direct-unary-op Record-Constructor ConstructRecord
|
||||||
direct-unary-op Rec-Construct-With-Rec ConstructRecordFromRecord
|
direct-unary-op Rec-Construct-With-Rec ConstructRecordFromRecord
|
||||||
|
|
||||||
macro ConstructRecordPost(lhs)
|
macro ConstructRecordPost(lhs)
|
||||||
auto& r = lhs.AsRecordRef();
|
Unref(lhs);
|
||||||
Unref(r);
|
lhs = new RecordVal(cast_intrusive<RecordType>(Z_TYPE), std::move(init_vals));
|
||||||
r = new RecordVal(cast_intrusive<RecordType>(Z_TYPE), std::move(init_vals));
|
|
||||||
|
|
||||||
op Construct-Direct-Record
|
op Construct-Direct-Record
|
||||||
class V
|
class V
|
||||||
|
op-types R
|
||||||
eval auto init_vals = Z_AUX->ToZValVec(frame);
|
eval auto init_vals = Z_AUX->ToZValVec(frame);
|
||||||
ConstructRecordPost($$)
|
ConstructRecordPost($$)
|
||||||
|
|
||||||
op Construct-Known-Record
|
op Construct-Known-Record
|
||||||
class V
|
class V
|
||||||
|
op-types R
|
||||||
eval auto init_vals = Z_AUX->ToZValVecWithMap(frame);
|
eval auto init_vals = Z_AUX->ToZValVecWithMap(frame);
|
||||||
ConstructRecordPost($$)
|
ConstructRecordPost($$)
|
||||||
|
|
||||||
macro AssignFromRec(lhs_full, rhs_full)
|
macro AssignFromRec(rhs)
|
||||||
/* The following is defined below, for use by Rec-Assign-Fields */
|
/* The following is defined below, for use by Rec-Assign-Fields */
|
||||||
SetUpRecFieldOps(lhs_full, rhs_full, lhs_map)
|
SetUpRecFieldOps(lhs_map)
|
||||||
auto is_managed = Z_AUX->is_managed;
|
auto is_managed = Z_AUX->is_managed;
|
||||||
for ( size_t i = 0U; i < n; ++i )
|
for ( size_t i = 0U; i < n; ++i )
|
||||||
{
|
{
|
||||||
|
@ -83,8 +84,9 @@ macro AssignFromRec(lhs_full, rhs_full)
|
||||||
|
|
||||||
op Construct-Known-Record-From
|
op Construct-Known-Record-From
|
||||||
class VV
|
class VV
|
||||||
|
op-types R R
|
||||||
eval auto init_vals = Z_AUX->ToZValVecWithMap(frame);
|
eval auto init_vals = Z_AUX->ToZValVecWithMap(frame);
|
||||||
AssignFromRec($$, $1)
|
AssignFromRec($1)
|
||||||
ConstructRecordPost($$)
|
ConstructRecordPost($$)
|
||||||
|
|
||||||
macro DoNetworkTimeInit(slot)
|
macro DoNetworkTimeInit(slot)
|
||||||
|
@ -92,49 +94,53 @@ macro DoNetworkTimeInit(slot)
|
||||||
|
|
||||||
op Construct-Known-Record-With-NT
|
op Construct-Known-Record-With-NT
|
||||||
class Vi
|
class Vi
|
||||||
|
op-types R I
|
||||||
eval auto init_vals = Z_AUX->ToZValVecWithMap(frame);
|
eval auto init_vals = Z_AUX->ToZValVecWithMap(frame);
|
||||||
DoNetworkTimeInit($1)
|
DoNetworkTimeInit($1)
|
||||||
ConstructRecordPost($$)
|
ConstructRecordPost($$)
|
||||||
|
|
||||||
op Construct-Known-Record-With-NT-From
|
op Construct-Known-Record-With-NT-From
|
||||||
class VVi
|
class VVi
|
||||||
|
op-types R R I
|
||||||
eval auto init_vals = Z_AUX->ToZValVecWithMap(frame);
|
eval auto init_vals = Z_AUX->ToZValVecWithMap(frame);
|
||||||
DoNetworkTimeInit($2)
|
DoNetworkTimeInit($2)
|
||||||
AssignFromRec($$, $1)
|
AssignFromRec($1)
|
||||||
ConstructRecordPost($$)
|
ConstructRecordPost($$)
|
||||||
|
|
||||||
macro GenInits()
|
macro GenInits()
|
||||||
auto init_vals = Z_AUX->ToZValVecWithMap(frame);
|
auto init_vals = Z_AUX->ToZValVecWithMap(frame);
|
||||||
for ( auto& fi : *z.aux->field_inits )
|
for ( auto& fi : *Z_AUX->field_inits )
|
||||||
init_vals[fi.first] = fi.second->Generate();
|
init_vals[fi.first] = fi.second->Generate();
|
||||||
|
|
||||||
op Construct-Known-Record-With-Inits
|
op Construct-Known-Record-With-Inits
|
||||||
class V
|
class V
|
||||||
|
op-types R
|
||||||
eval GenInits()
|
eval GenInits()
|
||||||
ConstructRecordPost($$)
|
ConstructRecordPost($$)
|
||||||
|
|
||||||
op Construct-Known-Record-With-Inits-From
|
op Construct-Known-Record-With-Inits-From
|
||||||
class VV
|
class VV
|
||||||
|
op-types R R
|
||||||
eval GenInits()
|
eval GenInits()
|
||||||
AssignFromRec($$, $1)
|
AssignFromRec($1)
|
||||||
ConstructRecordPost($$)
|
ConstructRecordPost($$)
|
||||||
|
|
||||||
op Construct-Known-Record-With-Inits-And-NT
|
op Construct-Known-Record-With-Inits-And-NT
|
||||||
class Vi
|
class Vi
|
||||||
|
op-types R I
|
||||||
eval GenInits()
|
eval GenInits()
|
||||||
DoNetworkTimeInit($1)
|
DoNetworkTimeInit($1)
|
||||||
ConstructRecordPost($$)
|
ConstructRecordPost($$)
|
||||||
|
|
||||||
op Construct-Known-Record-With-Inits-And-NT-From
|
op Construct-Known-Record-With-Inits-And-NT-From
|
||||||
class VVi
|
class VVi
|
||||||
|
op-types R R I
|
||||||
eval GenInits()
|
eval GenInits()
|
||||||
DoNetworkTimeInit($2)
|
DoNetworkTimeInit($2)
|
||||||
AssignFromRec($$, $1)
|
AssignFromRec($1)
|
||||||
ConstructRecordPost($$)
|
ConstructRecordPost($$)
|
||||||
|
|
||||||
macro SetUpRecFieldOps(lhs_full, rhs_full, which_lhs_map)
|
macro SetUpRecFieldOps(which_lhs_map)
|
||||||
auto lhs = lhs_full.AsRecordRef();
|
|
||||||
auto rhs = rhs_full.AsRecord();
|
|
||||||
auto& lhs_map = Z_AUX->which_lhs_map;
|
auto& lhs_map = Z_AUX->which_lhs_map;
|
||||||
auto& rhs_map = Z_AUX->rhs_map;
|
auto& rhs_map = Z_AUX->rhs_map;
|
||||||
auto n = rhs_map.size();
|
auto n = rhs_map.size();
|
||||||
|
@ -142,11 +148,12 @@ macro SetUpRecFieldOps(lhs_full, rhs_full, which_lhs_map)
|
||||||
op Rec-Assign-Fields
|
op Rec-Assign-Fields
|
||||||
op1-read
|
op1-read
|
||||||
class VV
|
class VV
|
||||||
eval SetUpRecFieldOps($1, $2, map)
|
op-types R R
|
||||||
|
eval SetUpRecFieldOps(map)
|
||||||
for ( size_t i = 0U; i < n; ++i )
|
for ( size_t i = 0U; i < n; ++i )
|
||||||
lhs->RawOptField(lhs_map[i]) = rhs->RawField(rhs_map[i]);
|
$1->RawOptField(lhs_map[i]) = $2->RawField(rhs_map[i]);
|
||||||
|
|
||||||
macro DoManagedRecAssign()
|
macro DoManagedRecAssign(lhs, rhs)
|
||||||
auto is_managed = Z_AUX->is_managed;
|
auto is_managed = Z_AUX->is_managed;
|
||||||
for ( size_t i = 0U; i < n; ++i )
|
for ( size_t i = 0U; i < n; ++i )
|
||||||
if ( is_managed[i] )
|
if ( is_managed[i] )
|
||||||
|
@ -164,17 +171,19 @@ macro DoManagedRecAssign()
|
||||||
op Rec-Assign-Fields-Managed
|
op Rec-Assign-Fields-Managed
|
||||||
op1-read
|
op1-read
|
||||||
class VV
|
class VV
|
||||||
eval SetUpRecFieldOps($1, $2, map)
|
op-types R R
|
||||||
DoManagedRecAssign()
|
eval SetUpRecFieldOps(map)
|
||||||
|
DoManagedRecAssign($1, $2)
|
||||||
|
|
||||||
op Rec-Assign-Fields-All-Managed
|
op Rec-Assign-Fields-All-Managed
|
||||||
op1-read
|
op1-read
|
||||||
class VV
|
class VV
|
||||||
eval SetUpRecFieldOps($1, $2, map)
|
op-types R R
|
||||||
|
eval SetUpRecFieldOps(map)
|
||||||
for ( size_t i = 0U; i < n; ++i )
|
for ( size_t i = 0U; i < n; ++i )
|
||||||
{
|
{
|
||||||
auto& lhs_i = lhs->RawOptField(lhs_map[i]);
|
auto& lhs_i = $1->RawOptField(lhs_map[i]);
|
||||||
auto rhs_i = rhs->RawField(rhs_map[i]);
|
auto rhs_i = $2->RawField(rhs_map[i]);
|
||||||
zeek::Ref(rhs_i.ManagedVal());
|
zeek::Ref(rhs_i.ManagedVal());
|
||||||
if ( lhs_i )
|
if ( lhs_i )
|
||||||
ZVal::DeleteManagedType(*lhs_i);
|
ZVal::DeleteManagedType(*lhs_i);
|
||||||
|
@ -184,26 +193,29 @@ eval SetUpRecFieldOps($1, $2, map)
|
||||||
op Rec-Add-Int-Fields
|
op Rec-Add-Int-Fields
|
||||||
op1-read
|
op1-read
|
||||||
class VV
|
class VV
|
||||||
eval SetUpRecFieldOps($1, $2, map)
|
op-types R R
|
||||||
|
eval SetUpRecFieldOps(map)
|
||||||
for ( size_t i = 0U; i < n; ++i )
|
for ( size_t i = 0U; i < n; ++i )
|
||||||
lhs->RawField(lhs_map[i]).AsIntRef() += rhs->RawField(rhs_map[i]).AsInt();
|
$1->RawField(lhs_map[i]).AsIntRef() += $2->RawField(rhs_map[i]).AsInt();
|
||||||
|
|
||||||
op Rec-Add-Double-Fields
|
op Rec-Add-Double-Fields
|
||||||
op1-read
|
op1-read
|
||||||
class VV
|
class VV
|
||||||
eval SetUpRecFieldOps($1, $2, map)
|
op-types R R
|
||||||
|
eval SetUpRecFieldOps(map)
|
||||||
for ( size_t i = 0U; i < n; ++i )
|
for ( size_t i = 0U; i < n; ++i )
|
||||||
lhs->RawField(lhs_map[i]).AsDoubleRef() += rhs->RawField(rhs_map[i]).AsDouble();
|
$1->RawField(lhs_map[i]).AsDoubleRef() += $2->RawField(rhs_map[i]).AsDouble();
|
||||||
|
|
||||||
op Rec-Add-Fields
|
op Rec-Add-Fields
|
||||||
op1-read
|
op1-read
|
||||||
class VV
|
class VV
|
||||||
eval SetUpRecFieldOps($1, $2, map)
|
op-types R R
|
||||||
|
eval SetUpRecFieldOps(map)
|
||||||
auto& types = Z_AUX->types;
|
auto& types = Z_AUX->types;
|
||||||
for ( size_t i = 0U; i < n; ++i )
|
for ( size_t i = 0U; i < n; ++i )
|
||||||
{
|
{
|
||||||
auto& lhs_i = lhs->RawField(lhs_map[i]);
|
auto& lhs_i = $1->RawField(lhs_map[i]);
|
||||||
auto rhs_i = rhs->RawField(rhs_map[i]);
|
auto rhs_i = $2->RawField(rhs_map[i]);
|
||||||
auto tag = types[i]->Tag();
|
auto tag = types[i]->Tag();
|
||||||
if ( tag == TYPE_INT )
|
if ( tag == TYPE_INT )
|
||||||
lhs_i.AsIntRef() += rhs_i.AsInt();
|
lhs_i.AsIntRef() += rhs_i.AsInt();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue