[PATCH 17/21] PR jit/63854: Fix leaking vec in jit

Jeff Law law@redhat.com
Wed Nov 19 17:14:00 GMT 2014


On 11/19/14 03:46, David Malcolm wrote:
> This fixes various leaks of vec buffers seen via valgrind within jit
> (both recording and playback).
>
> Various vec<> within jit::recording are converted to auto_vec<>.
>
> Various playback::wrapper subclasses containing vec<> gain a finalizer
> so they can release the vec when they are collected.
>
> gcc/jit/ChangeLog:
> 	PR jit/63854
> 	* jit-playback.c (gcc::jit::playback::compound_type::set_fields):
> 	Convert param from const vec<playback::field *> & to
> 	const auto_vec<playback::field *> *.
> 	(gcc::jit::playback::context::new_function_type): Convert param
> 	"param_types" from vec<type *> * to const auto_vec<type *> *.
> 	(gcc::jit::playback::context::new_function): Convert param
> 	"params" from vec<param *> * to const auto_vec<param *> *.
> 	(gcc::jit::playback::context::build_call): Convert param "args"
> 	from vec<rvalue *> to const auto_vec<rvalue *> *.
> 	(gcc::jit::playback::context::new_call): Likewise.
> 	(gcc::jit::playback::context::new_call_through_ptr): Likewise.
> 	(wrapper_finalizer): New function.
> 	(gcc::jit::playback::wrapper::operator new): Call the finalizer
> 	variant of ggc_internal_cleared_alloc, supplying
> 	wrapper_finalizer.
> 	(gcc::jit::playback::function::finalizer): New.
> 	(gcc::jit::playback::block::finalizer): New.
> 	(gcc::jit::playback::source_file::finalizer): New.
> 	(gcc::jit::playback::source_line::finalizer): New.
>
> 	* jit-playback.h
> 	(gcc::jit::playback::context::new_function_type): Convert param
> 	"param_types" from vec<type *> * to const auto_vec<type *> *.
> 	(gcc::jit::playback::context::new_function): Convert param
> 	"params" from vec<param *> * to const auto_vec<param *> *.
> 	(gcc::jit::playback::context::new_call): Convert param
> 	"args" from vec<rvalue *> to const auto_vec<rvalue *> *.
> 	(gcc::jit::playback::context::new_call_through_ptr): Likewise.
> 	(gcc::jit::playback::context::build_call): Likewise.
> 	(gcc::jit::playback::context): Convert fields "m_functions",
> 	"m_source_files", "m_cached_locations" from vec to auto_vec.
> 	(gcc::jit::playback::wrapper::finalizer): New virtual function.
> 	(gcc::jit::playback::compound_type::set_fields): Convert param fro
> 	const vec<playback::field *> & to
> 	const auto_vec<playback::field *> *.
> 	(gcc::jit::playback::function::finalizer): New.
> 	(gcc::jit::playback::block::finalizer): New.
> 	(gcc::jit::playback::source_file::finalizer): New.
> 	(gcc::jit::playback::source_line::finalizer): New.
>
> 	* jit-recording.c
> 	(gcc::jit::recording::function_type::replay_into): Convert local
> 	from a vec into an auto_vec.
> 	(gcc::jit::recording::fields::replay_into): Likewise.
> 	(gcc::jit::recording::function::replay_into): Likewise.
> 	(gcc::jit::recording::call::replay_into): Likewise.
> 	(gcc::jit::recording::call_through_ptr::replay_into): Likewise.
>
> 	* jit-recording.h (gcc::jit::recording::context): Convert fields
> 	"m_mementos", "m_compound_types", "m_functions" from vec<> to
> 	auto_vec <>.
> 	(gcc::jit::recording::function_type::get_param_types): Convert
> 	return type from vec<type *> to const vec<type *> &.
> 	(gcc::jit::recording::function_type): Convert field
> 	"m_param_types" from a vec<> to an auto_vec<>.
> 	(gcc::jit::recording::fields): Likewise for field "m_fields".
> 	(gcc::jit::recording::function::get_params): Convert return type
> 	from vec <param *> to const vec<param *> &.
> 	(gcc::jit::recording::function): Convert fields "m_params",
> 	"m_locals", "m_blocks" from vec<> to auto_vec<>.
> 	(gcc::jit::recording::block): Likewise for field "m_statements".
> 	vec<> to auto_vec<>.
> 	(gcc::jit::recording::call): Likewise for field "m_args".
> 	(gcc::jit::recording::call_through_ptr): Likewise.
OK.


Jeff



More information about the Gcc-patches mailing list