@@ -600,20 +600,17 @@ class Interpreter {
600
600
601
601
/* * Auxiliary function.
602
602
*/
603
- IdHideMap objectFields (const HeapObject *obj_,
604
- unsigned &counter, unsigned skip)
603
+ IdHideMap objectFieldsAux (const HeapObject *obj_)
605
604
{
606
605
IdHideMap r;
607
606
if (auto *obj = dynamic_cast <const HeapSimpleObject*>(obj_)) {
608
- counter++;
609
- if (counter <= skip) return r;
610
607
for (const auto &f : obj->fields ) {
611
608
r[f.first ] = f.second .hide ;
612
609
}
613
610
614
611
} else if (auto *obj = dynamic_cast <const HeapExtendedObject*>(obj_)) {
615
- r = objectFields (obj->right , counter, skip );
616
- for (const auto &pair : objectFields (obj->left , counter, skip )) {
612
+ r = objectFieldsAux (obj->right );
613
+ for (const auto &pair : objectFieldsAux (obj->left )) {
617
614
auto it = r.find (pair.first );
618
615
if (it == r.end ()) {
619
616
// First time it is seen
@@ -625,8 +622,6 @@ class Interpreter {
625
622
}
626
623
627
624
} else if (auto *obj = dynamic_cast <const HeapComprehensionObject*>(obj_)) {
628
- counter++;
629
- if (counter <= skip) return r;
630
625
for (const auto &f : obj->compValues )
631
626
r[f.first ] = ObjectField::VISIBLE;
632
627
}
@@ -637,9 +632,8 @@ class Interpreter {
637
632
*/
638
633
std::set<const Identifier*> objectFields (const HeapObject *obj_, bool manifesting)
639
634
{
640
- unsigned counter = 0 ;
641
635
std::set<const Identifier*> r;
642
- for (const auto &pair : objectFields (obj_, counter, 0 )) {
636
+ for (const auto &pair : objectFieldsAux (obj_)) {
643
637
if (!manifesting || pair.second != ObjectField::HIDDEN) r.insert (pair.first );
644
638
}
645
639
return r;
0 commit comments