From patchwork Sun Nov 7 18:58:44 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Carlini X-Patchwork-Id: 70368 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 7C6AAB70F6 for ; Mon, 8 Nov 2010 05:59:00 +1100 (EST) Received: (qmail 15993 invoked by alias); 7 Nov 2010 18:58:57 -0000 Received: (qmail 15976 invoked by uid 22791); 7 Nov 2010 18:58:56 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE X-Spam-Check-By: sourceware.org Received: from vsmtp3.tin.it (HELO vsmtp3.tin.it) (212.216.176.223) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 07 Nov 2010 18:58:52 +0000 Received: from [192.168.0.4] (79.25.196.7) by vsmtp3.tin.it (8.5.113) id 4BCE36060E82F01B; Sun, 7 Nov 2010 19:58:49 +0100 Message-ID: <4CD6F6E4.6080806@oracle.com> Date: Sun, 07 Nov 2010 19:58:44 +0100 From: Paolo Carlini User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.15) Gecko/20101026 SUSE/3.0.10 Thunderbird/3.0.10 MIME-Version: 1.0 To: "gcc-patches@gcc.gnu.org" CC: libstdc++ Subject: [v3] Add operator[](Key&&) to profile-mode unordered_map X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hi, tested x86_64-linux profile-mode, committed to mainline. Paolo. //////////////////////// 2010-11-07 Paolo Carlini * include/profile/unordered_map (unordered_map<>::operator[](_Key&&)): Add. Index: include/profile/unordered_map =================================================================== --- include/profile/unordered_map (revision 166416) +++ include/profile/unordered_map (working copy) @@ -232,18 +232,28 @@ _Base::insert(__first, __last); _M_profile_resize(__old_size, _Base::bucket_count()); } - - // operator [] + + // operator[] mapped_type& - operator[](const _Key& _k) + operator[](const _Key& __k) { size_type __old_size = _Base::bucket_count(); - mapped_type& __res = _M_base()[_k]; + mapped_type& __res = _M_base()[__k]; size_type __new_size = _Base::bucket_count(); _M_profile_resize(__old_size, _Base::bucket_count()); return __res; - } + } + mapped_type& + operator[](_Key&& __k) + { + size_type __old_size = _Base::bucket_count(); + mapped_type& __res = _M_base()[std::move(__k)]; + size_type __new_size = _Base::bucket_count(); + _M_profile_resize(__old_size, _Base::bucket_count()); + return __res; + } + void swap(unordered_map& __x) { _Base::swap(__x); }