From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28139 invoked by alias); 19 Nov 2014 17:06:41 -0000 Mailing-List: contact jit-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Subscribe: Sender: jit-owner@gcc.gnu.org Received: (qmail 28119 invoked by uid 89); 19 Nov 2014 17:06:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.98.4 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-Spam-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: X-Spam-User: qpsmtpd, 2 recipients X-HELO: mx1.redhat.com Message-ID: <546CCE1B.6000203@redhat.com> Date: Wed, 01 Jan 2014 00:00:00 -0000 From: Jeff Law User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: David Malcolm , gcc-patches@gcc.gnu.org, jit@gcc.gnu.org Subject: Re: [PATCH 17/21] PR jit/63854: Fix leaking vec in jit References: <1416393981-39626-1-git-send-email-dmalcolm@redhat.com> <1416393981-39626-18-git-send-email-dmalcolm@redhat.com> In-Reply-To: <1416393981-39626-18-git-send-email-dmalcolm@redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-SW-Source: 2014-q4/txt/msg00184.txt.bz2 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 & to > const auto_vec *. > (gcc::jit::playback::context::new_function_type): Convert param > "param_types" from vec * to const auto_vec *. > (gcc::jit::playback::context::new_function): Convert param > "params" from vec * to const auto_vec *. > (gcc::jit::playback::context::build_call): Convert param "args" > from vec to const auto_vec *. > (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 * to const auto_vec *. > (gcc::jit::playback::context::new_function): Convert param > "params" from vec * to const auto_vec *. > (gcc::jit::playback::context::new_call): Convert param > "args" from vec to const auto_vec *. > (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 & to > const auto_vec *. > (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 to const vec &. > (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 to const vec &. > (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