ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
resize.h File Reference
#include "global.h"
Include dependency graph for resize.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void kissat_decrease_size (struct kissat *solver)
 
void kissat_increase_size (struct kissat *, unsigned new_size)
 
void kissat_enlarge_variables (struct kissat *, unsigned new_vars)
 

Function Documentation

◆ kissat_decrease_size()

void kissat_decrease_size ( struct kissat * solver)

Definition at line 82 of file resize.c.

82 {
83 const unsigned old_size = solver->size;
84 const unsigned new_size = solver->vars;
85
86#ifdef METRICS
87 LOG ("%s before decreasing size from %u to %u",
88 FORMAT_BYTES (kissat_allocated (solver)), old_size, new_size);
89#endif
90
94
98
99 reallocate_trail (solver, old_size, new_size);
100 kissat_resize_heap (solver, SCORES, new_size);
101 kissat_decrease_phases (solver, new_size);
102
103 solver->size = new_size;
104
105#ifdef METRICS
106 LOG ("%s after decreasing size from %u to %u",
107 FORMAT_BYTES (kissat_allocated (solver)), old_size, new_size);
108#endif
109}
#define LOG(...)
ABC_NAMESPACE_IMPL_START typedef signed char value
#define FORMAT_BYTES(BYTES)
Definition format.h:31
void kissat_resize_heap(kissat *solver, heap *heap, unsigned new_size)
Definition heap.c:46
#define SCORES
Definition internal.h:262
#define solver
Definition kitten.c:211
void kissat_decrease_phases(kissat *solver, unsigned new_size)
Definition phases.c:31
#define NREALLOC_VARIABLE_INDEXED(TYPE, NAME)
Definition resize.c:33
#define NREALLOC_LITERAL_INDEXED(TYPE, NAME)
Definition resize.c:36
Definition flags.h:11
signed char mark
Definition value.h:8
vector watches
Definition watch.h:49
Here is the call graph for this function:
Here is the caller graph for this function:

◆ kissat_enlarge_variables()

void kissat_enlarge_variables ( struct kissat * solver,
unsigned new_vars )

Definition at line 111 of file resize.c.

111 {
112 if (solver->vars >= new_vars)
113 return;
114 KISSAT_assert (new_vars <= INTERNAL_MAX_VAR + 1);
115 LOG ("enlarging variables from %u to %u", solver->vars, new_vars);
116 const size_t old_size = solver->size;
117 if (old_size < new_vars) {
118 LOG ("old size %zu below requested new number of variables %u",
119 old_size, new_vars);
120 size_t new_size;
121 if (!old_size)
122 new_size = new_vars;
123 else {
124 if (kissat_is_power_of_two (old_size)) {
125 KISSAT_assert (old_size <= UINT_MAX / 2);
126 new_size = 2 * old_size;
127 } else {
128 KISSAT_assert (1 < old_size);
129 new_size = 2;
130 }
131 while (new_size < new_vars) {
132 KISSAT_assert (new_size <= UINT_MAX / 2);
133 new_size *= 2;
134 }
135 }
136 kissat_increase_size (solver, new_size);
137 }
138 solver->vars = new_vars;
139}
#define KISSAT_assert(ignore)
Definition global.h:13
void kissat_increase_size(kissat *solver, unsigned new_size)
Definition resize.c:52
#define INTERNAL_MAX_VAR
Definition literal.h:13
Here is the call graph for this function:

◆ kissat_increase_size()

void kissat_increase_size ( struct kissat * solver,
unsigned new_size )

Definition at line 52 of file resize.c.

52 {
53 KISSAT_assert (solver->vars <= new_size);
54 const unsigned old_size = solver->size;
55 if (old_size >= new_size)
56 return;
57
58#ifdef METRICS
59 LOG ("%s before increasing size from %u to %u",
60 FORMAT_BYTES (kissat_allocated (solver)), old_size, new_size);
61#endif
65
69
70 reallocate_trail (solver, old_size, new_size);
71 kissat_resize_heap (solver, SCORES, new_size);
73
74 solver->size = new_size;
75
76#ifdef METRICS
77 LOG ("%s after increasing size from %u to %u",
78 FORMAT_BYTES (kissat_allocated (solver)), old_size, new_size);
79#endif
80}
void kissat_increase_phases(kissat *solver, unsigned new_size)
Definition phases.c:22
#define CREALLOC_VARIABLE_INDEXED(TYPE, NAME)
Definition resize.c:39
#define CREALLOC_LITERAL_INDEXED(TYPE, NAME)
Definition resize.c:42
Here is the call graph for this function:
Here is the caller graph for this function: