Fix memory leak and add vpi_release_handle()
This commit is contained in:
parent
18f6dcb6ba
commit
d7c6d7ce76
|
|
@ -218,6 +218,11 @@ PLI_INT32 vpi_free_object(vpiHandle ref)
|
|||
assert(vpip_routines);
|
||||
return vpip_routines->free_object(ref);
|
||||
}
|
||||
PLI_INT32 vpi_release_handle(vpiHandle ref)
|
||||
{
|
||||
assert(vpip_routines);
|
||||
return vpip_routines->release_handle(ref);
|
||||
}
|
||||
PLI_INT32 vpi_get_vlog_info(p_vpi_vlog_info info)
|
||||
{
|
||||
assert(vpip_routines);
|
||||
|
|
|
|||
|
|
@ -207,6 +207,7 @@ void sdf_interconnect_delays(struct interconnect_port_s port1, struct interconne
|
|||
|
||||
if (!iter) {
|
||||
vpi_printf("SDF ERROR: %s:%d: Could not find vpiBit iterator for port1!\n", sdf_fname, sdf_lineno);
|
||||
return;
|
||||
}
|
||||
|
||||
while ((vpi_port_bit = vpi_scan(iter))) {
|
||||
|
|
@ -216,6 +217,7 @@ void sdf_interconnect_delays(struct interconnect_port_s port1, struct interconne
|
|||
if (port1.index == bit) {
|
||||
if (sdf_flag_inform) vpi_printf("SDF INFO: %s:%d: Substituting vpiPort with vpiPortBit for port1\n", sdf_fname, sdf_lineno);
|
||||
port1_handle = vpi_port_bit;
|
||||
vpi_release_handle(iter); // Free the iterator
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -228,6 +230,7 @@ void sdf_interconnect_delays(struct interconnect_port_s port1, struct interconne
|
|||
|
||||
if (!iter) {
|
||||
vpi_printf("SDF ERROR: %s:%d: Could not find vpiBit iterator for port2!\n", sdf_fname, sdf_lineno);
|
||||
return;
|
||||
}
|
||||
|
||||
while ((vpi_port_bit = vpi_scan(iter))) {
|
||||
|
|
@ -237,6 +240,7 @@ void sdf_interconnect_delays(struct interconnect_port_s port1, struct interconne
|
|||
if (port2.index == bit) {
|
||||
if (sdf_flag_inform) vpi_printf("SDF INFO: %s:%d: Substituting vpiPort with vpiPortBit for port2\n", sdf_fname, sdf_lineno);
|
||||
port2_handle = vpi_port_bit;
|
||||
vpi_release_handle(iter); // Free the iterator
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@ PLI_INT32 vpi_vprintf(const char*, va_list) { return 0; }
|
|||
PLI_INT32 vpi_chk_error(p_vpi_error_info) { return 0; }
|
||||
PLI_INT32 vpi_compare_objects(vpiHandle, vpiHandle) { return 0; }
|
||||
PLI_INT32 vpi_free_object(vpiHandle) { return 0; }
|
||||
PLI_INT32 vpi_release_handle(vpiHandle) { return 0; }
|
||||
PLI_INT32 vpi_get_vlog_info(p_vpi_vlog_info info)
|
||||
{
|
||||
info->argc = 0;
|
||||
|
|
|
|||
|
|
@ -567,6 +567,7 @@ extern vpiHandle vpi_put_value(vpiHandle obj, p_vpi_value value,
|
|||
p_vpi_time when, PLI_INT32 flags);
|
||||
|
||||
extern PLI_INT32 vpi_free_object(vpiHandle ref);
|
||||
extern PLI_INT32 vpi_release_handle(vpiHandle ref);
|
||||
extern PLI_INT32 vpi_get_vlog_info(p_vpi_vlog_info vlog_info_p);
|
||||
|
||||
/*
|
||||
|
|
@ -724,6 +725,7 @@ typedef struct {
|
|||
PLI_INT32 (*chk_error)(p_vpi_error_info);
|
||||
PLI_INT32 (*compare_objects)(vpiHandle, vpiHandle);
|
||||
PLI_INT32 (*free_object)(vpiHandle);
|
||||
PLI_INT32 (*release_handle)(vpiHandle);
|
||||
PLI_INT32 (*get_vlog_info)(p_vpi_vlog_info info) ;
|
||||
void (*vcontrol)(PLI_INT32, va_list);
|
||||
PLI_INT32 (*fopen)(const char*, const char*);
|
||||
|
|
|
|||
|
|
@ -291,6 +291,14 @@ PLI_INT32 vpi_free_object(vpiHandle ref)
|
|||
return rtn;
|
||||
}
|
||||
|
||||
PLI_INT32 vpi_release_handle(vpiHandle ref)
|
||||
{
|
||||
// Since SystemVerilog vpi_free_object() has been
|
||||
// renamed vpi_release_handle(), and thus
|
||||
// vpi_free_object() has been deprecated.
|
||||
return vpi_free_object(ref);
|
||||
}
|
||||
|
||||
static int vpip_get_global(int property)
|
||||
{
|
||||
switch (property) {
|
||||
|
|
@ -1575,7 +1583,7 @@ bool check_connected_to_concat8(vvp_net_t* current_net, vvp_net_t* net2)
|
|||
|
||||
// net2 is connected
|
||||
if (cur.ptr() == net2) {
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Next net in linked list
|
||||
|
|
@ -2002,6 +2010,7 @@ vpip_routines_s vpi_routines = {
|
|||
.chk_error = vpi_chk_error,
|
||||
.compare_objects = vpi_compare_objects,
|
||||
.free_object = vpi_free_object,
|
||||
.release_handle = vpi_release_handle,
|
||||
.get_vlog_info = vpi_get_vlog_info,
|
||||
.vcontrol = vpi_sim_vcontrol,
|
||||
.fopen = vpi_fopen,
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ vpi_put_userdata
|
|||
vpi_put_value
|
||||
vpi_register_cb
|
||||
vpi_register_systf
|
||||
vpi_release_handle
|
||||
vpi_remove_cb
|
||||
vpi_scan
|
||||
vpi_sim_control
|
||||
|
|
|
|||
Loading…
Reference in New Issue