Commit d2f1e11f authored by John van Groningen's avatar John van Groningen
Browse files

add boxed records

parent e06dfbf7
......@@ -5,3 +5,6 @@ extern struct node_id_ref_count_list *new_node_id_ref_count (struct node_id_ref_
#ifdef TRANSFORM_PATTERNS_BEFORE_STRICTNESS_ANALYSIS
extern void determine_failing_cases_and_adjust_ref_counts_of_rule (RuleAltP first_alt);
#endif
#if BOXED_RECORDS
void set_global_reference_counts_and_exchange_record_update_marks (NodeP case_node);
#endif
......@@ -458,6 +458,30 @@ void set_global_reference_counts (NodeP case_node)
replace_local_ref_count_by_global_ref_count (case_node->node_node_id_ref_counts);
}
#if BOXED_RECORDS
void set_global_reference_counts_and_exchange_record_update_marks (NodeP case_node)
{
NodeIdRefCountListP node_id_ref_count_elem;
for_l (node_id_ref_count_elem,case_node->node_node_id_ref_counts,nrcl_next){
int local_ref_count;
NodeIdP node_id;
unsigned int node_id_mark2;
node_id=node_id_ref_count_elem->nrcl_node_id;
node_id_mark2=node_id->nid_mark2;
node_id->nid_mark2=(node_id_mark2 & ~NID_RECORD_USED_BY_NON_SELECTOR_OR_UPDATES) | node_id_ref_count_elem->nrcl_mark2;
node_id_ref_count_elem->nrcl_mark2=node_id_mark2 & NID_RECORD_USED_BY_NON_SELECTOR_OR_UPDATES;
local_ref_count=node_id->nid_refcount;
node_id->nid_refcount = local_ref_count + node_id_ref_count_elem->nrcl_ref_count;
node_id_ref_count_elem->nrcl_ref_count=local_ref_count;
}
}
#endif
static void merge_node_id_ref_count_lists (NodeIdRefCountListP *list1_p,NodeIdRefCountListP list2)
{
while (list2!=NULL){
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment