This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] Use a std::vector instead of a std::map to hold Input_merge_map


A std::map is hardly the best data structure for a small map from
small integers.

The attached patch uses a std::vector<std::pair>> instead.

This simplifies the code and speeds up linking of chromium (see
attached perf logs).

Cheers,
Rafael

2015-04-23  Rafael Ãvila de EspÃndola <rafael.espindola@gmail.com>

* merge.cc (get_input_merge_map): Update for data structure change.
(get_or_make_input_merge_map): Update for data structure change.
* merge.h (Object_merge_map): Use a std::vector<std::pair>> instead of
a std::map.
 Performance counter stats for '/home/espindola/binutils/ld-master -pie --hash-style=gnu --no-add-needed --build-id --gc-sections --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o chrome /usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../lib64/Scrt1.o /usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.9.2/crtbeginS.o -L. -L/usr/lib/gcc/x86_64-redhat-linux/4.9.2 -L/usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../.. -L/home/espindola/llvm/build-227431/bin/../lib -L/lib -L/usr/lib -z now -z relro --fatal-warnings -z defs -z noexecstack --disable-new-dtags --export-dynamic -uIsHeapProfilerRunning -uProfilerStart -u_Z21InitialMallocHook_NewPKvj -u_Z22InitialMallocHook_MMapPKvS0_jiiix -u_Z22InitialMallocHook_SbrkPKvi -u_Z21InitialMallocHook_NewPKvm -u_Z22InitialMallocHook_MMapPKvS0_miiil -u_Z22InitialMallocHook_SbrkPKvl -u_ZN15HeapLeakChecker12IgnoreObjectEPKv -u_ZN15HeapLeakChecker14UnIgnoreObjectEPKv -O1 --as-needed --start-group obj/chrome/app/chrome_initial.chrome_exe_main_aura.o obj/content/public/common/chrome_initial.content_switches.o obj/chrome/app/chrome_initial.chrome_main.o obj/chrome/app/chrome_initial.chrome_main_delegate.o obj/chrome/libcommon.a obj/chrome/libbrowser.a obj/chrome/libdebugger.a obj/ppapi/libppapi_host.a obj/printing/libprinting.a obj/chrome/libservice.a obj/chrome/libplugin.a obj/chrome/librenderer.a obj/chrome/libutility.a obj/content/libcontent_gpu.a obj/content/libcontent_ppapi_plugin.a obj/components/nacl/renderer/plugin/libnacl_trusted_plugin.a obj/remoting/libremoting_client_plugin.a obj/content/libcontent_app_both.a obj/chrome/libinstaller_util.a obj/base/allocator/liballocator.a obj/components/libstartup_metric_utils.a obj/chrome/libcommon_net.a obj/base/libbase.a obj/base/libbase_static.a obj/base/allocator/liballocator_extension_thunks.a obj/third_party/modp_b64/libmodp_b64.a obj/base/third_party/dynamic_annotations/libdynamic_annotations.a obj/base/libsymbolize.a obj/base/libxdg_mime.a obj/third_party/libevent/libevent.a obj/components/libnetwork_hints_common.a obj/components/liberror_page_common.a obj/url/liburl_lib.a obj/third_party/icu/libicui18n.a obj/third_party/icu/libicuuc.a obj/third_party/icu/libicudata.a obj/crypto/libcrcrypto.a obj/net/third_party/nss/libcrssl.a obj/net/libnet.a obj/base/libbase_i18n.a obj/base/libbase_prefs.a obj/sdch/libsdch.a obj/third_party/zlib/libchrome_zlib.a obj/third_party/zlib/libzlib_x86_simd.a obj/build/linux/libgio.a obj/ui/base/libui_base.a obj/skia/libskia_library.a obj/skia/libskia_opts.a obj/skia/libskia_opts_ssse3.a obj/skia/libskia_opts_sse41.a obj/third_party/sfntly/libsfntly.a obj/skia/libskia_chrome.a obj/skia/libskia_chrome_opts.a obj/ui/events/libevents.a obj/ui/gfx/libgfx.a obj/third_party/libpng/libpng.a obj/ui/gfx/libgfx_geometry.a obj/third_party/libjpeg_turbo/libjpeg_turbo.a obj/ui/gfx/x/libgfx_x11.a obj/ui/events/libdom4_keycode_converter.a obj/ui/events/libevents_base.a obj/ui/events/libgesture_detection.a obj/ui/events/devices/libevents_devices.a obj/ui/events/platform/libevents_platform.a obj/ui/events/platform/x11/libx11_events_platform.a obj/gpu/libgpu_ipc.a obj/gpu/libcommand_buffer_common.a obj/gpu/command_buffer/libgles2_utils.a obj/ipc/libipc.a obj/chrome/libsafe_browsing_proto.a obj/third_party/protobuf/libprotobuf_lite.a obj/chrome/libcommon_constants.a obj/components/libbookmarks_common.a obj/components/libnacl_switches.a obj/components/libcloud_devices_common.a obj/google_apis/libgoogle_apis.a obj/third_party/libxml/libxml2.a obj/components/libcomponent_updater.a obj/components/libupdate_client.a obj/courgette/libcourgette_lib.a obj/third_party/lzma_sdk/liblzma_sdk.a obj/third_party/zlib/google/libzip.a obj/third_party/zlib/libminizip.a obj/components/libcrx_file.a obj/components/libcontent_settings_core_common.a obj/components/libjson_schema.a obj/third_party/re2/libre2.a obj/components/libmetrics.a obj/components/libcomponent_metrics_proto.a obj/components/libvariations.a obj/third_party/mt19937ar/libmt19937ar.a obj/components/libpolicy_component_common.a obj/components/libcloud_policy_proto.a obj/components/libpolicy.a obj/components/libcloud_policy_proto_generated_compile.a obj/components/libtranslate_core_common.a obj/content/libcontent_common.a obj/components/libtracing.a obj/ui/accessibility/libaccessibility.a obj/ui/accessibility/libax_gen.a obj/tools/json_schema_compiler/libapi_gen_util.a obj/ui/events/ipc/libevents_ipc.a obj/ui/gfx/ipc/libgfx_ipc.a obj/ui/shell_dialogs/libshell_dialogs.a obj/ui/aura/libaura.a obj/ui/compositor/libcompositor.a obj/cc/libcc.a obj/gpu/libcommand_buffer_client.a obj/gpu/libcommand_buffer_service.a obj/gpu/libdisk_cache_proto.a obj/third_party/smhasher/libcityhash.a obj/ui/gl/libgl_wrapper.a obj/third_party/angle/src/libtranslator.a obj/third_party/angle/src/libtranslator_lib.a obj/third_party/angle/src/libpreprocessor.a obj/third_party/angle/src/libangle_common.a obj/gpu/libgles2_cmd_helper.a obj/gpu/libgpu_config.a obj/build/linux/libpci.a obj/third_party/libXNVCtrl/libXNVCtrl.a obj/media/libmedia.a libyuv.a obj/third_party/opus/libopus.a obj/media/libshared_memory_support.a obj/third_party/ffmpeg/libffmpeg.a obj/third_party/libvpx/libvpx.a obj/third_party/libvpx/libvpx_intrinsics_mmx.a obj/third_party/libvpx/libvpx_intrinsics_sse2.a obj/third_party/libvpx/libvpx_intrinsics_ssse3.a obj/third_party/libvpx/libvpx_intrinsics_sse4_1.a obj/third_party/libvpx/libvpx_intrinsics_avx2.a obj/media/libmedia_asm.a obj/media/libmedia_sse2.a obj/cc/libcc_surfaces.a obj/gpu/blink/libgpu_blink.a obj/gpu/libgles2_c_lib.a obj/gpu/libgles2_implementation.a obj/gpu/libgl_in_process_context.a obj/gpu/skia_bindings/libgpu_skia_bindings.a obj/third_party/WebKit/Source/platform/libblink_common.a obj/third_party/WebKit/Source/wtf/libwtf.a obj/ipc/mojo/libipc_mojo.a obj/mojo/libmojo_environment_chromium.a obj/mojo/libmojo_environment_chromium_impl.a obj/mojo/libmojo_common_lib.a obj/third_party/mojo/libmojo_cpp_bindings.a obj/third_party/mojo/libmojo_system_impl.a obj/storage/libstorage_common.a obj/third_party/WebKit/Source/platform/libblink_platform.a obj/third_party/WebKit/Source/platform/libblink_heap_asm_stubs.a obj/third_party/libwebp/libwebp_dec.a obj/third_party/libwebp/libwebp_dsp.a obj/third_party/libwebp/libwebp_utils.a obj/third_party/libwebp/libwebp_demux.a obj/third_party/libwebp/libwebp_enc.a obj/third_party/ots/libots.a obj/third_party/brotli/libbrotli.a obj/third_party/qcms/libqcms.a obj/v8/tools/gyp/libv8_base.a obj/v8/tools/gyp/libv8_libbase.a obj/v8/tools/gyp/libv8_external_snapshot.a obj/third_party/iccjpeg/libiccjpeg.a obj/third_party/WebKit/Source/web/libblink_web.a obj/third_party/WebKit/Source/core/libwebcore_dom.a obj/third_party/libxslt/libxslt.a obj/third_party/sqlite/libsqlite3.a obj/third_party/WebKit/Source/core/libwebcore_html.a obj/third_party/WebKit/Source/core/libwebcore_remaining.a obj/third_party/WebKit/Source/core/libwebcore_rendering.a obj/third_party/WebKit/Source/core/libwebcore_svg.a obj/third_party/WebKit/Source/core/libwebcore_generated.a obj/gin/libgin.a obj/third_party/snappy/libsnappy.a obj/third_party/WebKit/Source/modules/libmodules.a obj/third_party/mojo/libmojo_application_bindings.a obj/webkit/common/gpu/libwebkit_gpu.a obj/ppapi/libppapi_shared.a obj/ui/surface/libsurface.a obj/third_party/libjingle/libjingle.a obj/third_party/webrtc/base/librtc_base.a obj/third_party/webrtc/base/librtc_base_approved.a obj/third_party/webrtc/libjingle/xmllite/librtc_xmllite.a obj/third_party/libjingle/libjingle_p2p_constants.a obj/device/usb/libdevice_usb.a obj/third_party/libusb/libusb.a obj/device/udev_linux/libudev_linux.a obj/build/linux/libudev.a obj/chrome/common/extensions/api/libchrome_api.a obj/extensions/common/api/libextensions_api.a obj/extensions/libextensions_common.a obj/components/liburl_matcher.a obj/device/bluetooth/libdevice_bluetooth.a obj/extensions/libextensions_common_constants.a obj/media/cast/libcast_net.a obj/media/cast/libcast_base.a obj/media/cast/libcast_logging_proto.a obj/components/libautofill_core_common.a obj/components/libautofill_content_common.a obj/components/libpassword_manager_core_common.a obj/components/libpassword_manager_content_common.a obj/components/libsignin_core_common.a obj/components/libtranslate_content_common.a obj/components/libtranslate_core_language_detection.a obj/components/libvisitedlink_common.a obj/components/libnacl_common.a obj/components/libprinting_common.a obj/chrome/libbrowser_ui.a obj/chrome/libcert_logger_proto.a obj/chrome/libbrowser_ui_views.a obj/ash/libash.a obj/components/libuser_manager.a obj/components/libwallpaper.a obj/content/libcontent_browser.a obj/device/vibration/libdevice_vibration.a obj/device/vibration/libdevice_vibration_mojo_bindings.a obj/device/battery/libdevice_battery.a obj/device/battery/libdevice_battery_mojo_bindings.a obj/dbus/libdbus.a obj/sql/libsql.a obj/ui/snapshot/libsnapshot.a obj/content/browser/service_worker/libservice_worker_proto.a obj/content/browser/speech/proto/libspeech_proto.a obj/content/libcontent_common_mojo_bindings.a obj/net/libhttp_server.a obj/storage/libstorage.a obj/third_party/leveldatabase/libleveldatabase.a obj/third_party/mojo/libmojo_js_bindings.a obj/ui/touch_selection/libui_touch_selection.a obj/sandbox/libsandbox_services.a obj/sandbox/libsuid_sandbox_client.a obj/sandbox/libseccomp_bpf.a obj/sandbox/libseccomp_bpf_helpers.a obj/jingle/libjingle_glue.a obj/third_party/libjingle/libjingle_webrtc.a obj/third_party/libjingle/libjingle_webrtc_common.a obj/third_party/libsrtp/libsrtp.a obj/third_party/webrtc/modules/libmedia_file.a obj/third_party/webrtc/system_wrappers/libsystem_wrappers.a obj/third_party/webrtc/modules/libvideo_capture_module_impl.a obj/third_party/webrtc/modules/libvideo_capture_module.a obj/third_party/webrtc/modules/libwebrtc_utility.a obj/third_party/webrtc/modules/libaudio_coding_module.a obj/third_party/webrtc/modules/libCNG.a obj/third_party/webrtc/common_audio/libcommon_audio.a obj/third_party/openmax_dl/dl/libopenmax_dl.a obj/third_party/webrtc/common_audio/libcommon_audio_sse2.a obj/third_party/webrtc/modules/libaudio_encoder_interface.a obj/third_party/webrtc/modules/libG711.a obj/third_party/webrtc/modules/libG722.a obj/third_party/webrtc/modules/libiLBC.a obj/third_party/webrtc/modules/libiSAC.a obj/third_party/webrtc/modules/libaudio_decoder_interface.a obj/third_party/webrtc/modules/libiSACFix.a obj/third_party/webrtc/modules/libPCM16B.a obj/third_party/webrtc/modules/libred.a obj/third_party/webrtc/modules/libwebrtc_opus.a obj/third_party/webrtc/modules/libneteq.a obj/third_party/webrtc/modules/libwebrtc_video_coding.a obj/third_party/webrtc/modules/libwebrtc_i420.a obj/third_party/webrtc/common_video/libcommon_video.a obj/third_party/webrtc/modules/video_coding/utility/libvideo_coding_utility.a obj/third_party/webrtc/modules/video_coding/codecs/vp8/libwebrtc_vp8.a obj/third_party/webrtc/modules/video_coding/codecs/vp9/libwebrtc_vp9.a obj/third_party/webrtc/modules/libvideo_render_module_impl.a obj/third_party/webrtc/modules/libvideo_render_module.a obj/third_party/usrsctp/libusrsctplib.a obj/third_party/webrtc/modules/libaudio_processing.a obj/third_party/webrtc/modules/libaudioproc_debug_proto.a obj/third_party/webrtc/modules/libaudio_processing_sse2.a obj/third_party/webrtc/modules/libdesktop_capture.a obj/third_party/webrtc/modules/libdesktop_capture_differ_sse2.a obj/sandbox/libc_urandom_override.a obj/ppapi/libppapi_ipc.a obj/third_party/flac/libflac.a obj/third_party/speex/libspeex.a obj/content/libcontent_child.a obj/content/libcontent_plugin.a obj/content/libcontent_renderer.a obj/cc/blink/libcc_blink.a obj/media/blink/libmedia_blink.a obj/third_party/mojo/libmojo_js_lib.a obj/ui/native_theme/libnative_theme.a obj/third_party/libjingle/libpeerconnection.a obj/third_party/webrtc/voice_engine/libvoice_engine.a obj/third_party/webrtc/modules/libaudio_conference_mixer.a obj/third_party/webrtc/modules/libaudio_device.a obj/third_party/webrtc/modules/libbitrate_controller.a obj/third_party/webrtc/modules/librtp_rtcp.a obj/third_party/webrtc/modules/libpaced_sender.a obj/third_party/webrtc/modules/libremote_bitrate_estimator.a obj/third_party/webrtc/libwebrtc.a obj/third_party/webrtc/libwebrtc_common.a obj/third_party/webrtc/video_engine/libvideo_engine_core.a obj/third_party/webrtc/modules/libvideo_processing.a obj/third_party/webrtc/modules/libvideo_processing_sse2.a obj/ppapi/libppapi_proxy.a obj/content/libcontent_utility.a obj/ui/accelerometer/libui_accelerometer.a obj/ui/app_list/libapp_list.a obj/components/libkeyed_service_core.a obj/ui/wm/libwm.a obj/ui/views/libviews.a obj/ui/display/libdisplay_util.a obj/ui/keyboard/libkeyboard.a obj/ui/message_center/libmessage_center.a obj/ui/views/controls/webview/libwebview.a obj/ui/content_accelerators/libui_content_accelerators.a obj/ui/web_dialogs/libweb_dialogs.a obj/components/libauto_login_parser.a obj/components/libdom_distiller_core.a obj/sync/libsync_core.a obj/sync/libattachment_store_proto.a obj/sync/libsync_proto.a obj/third_party/dom_distiller_js/libdom_distiller_js_proto.a obj/components/libleveldb_proto.a obj/components/libdistilled_page_proto.a obj/components/libpref_registry.a obj/components/libdom_distiller_webui.a obj/components/libfeedback_proto.a obj/components/libhistory_core_browser_proto.a obj/components/libinvalidation.a obj/jingle/libnotifier.a obj/third_party/cacheinvalidation/libcacheinvalidation.a obj/third_party/cacheinvalidation/libcacheinvalidation_proto_cpp.a obj/components/libgcm_driver.a obj/components/libos_crypt.a obj/google_apis/gcm/libgcm.a obj/components/libsignin_core_browser.a obj/components/libcontent_settings_core_browser.a obj/components/libwebdata_common.a obj/components/libonc_component.a obj/components/libpassword_manager_core_browser.a obj/components/libpassword_manager_core_browser_proto.a obj/components/libui_zoom.a obj/components/libapp_modal.a obj/components/libautofill_content_risk_proto.a obj/net/libnet_with_v8.a obj/native_client/src/trusted/service_runtime/libsel.a obj/native_client/src/trusted/service_runtime/libenv_cleanser.a obj/native_client/src/trusted/service_runtime/libnacl_error_code.a obj/native_client/src/shared/gio/libgio.a obj/native_client/src/shared/platform/libplatform.a obj/native_client/src/shared/srpc/libnonnacl_srpc.a obj/native_client/src/trusted/debug_stub/libdebug_stub.a obj/native_client/src/trusted/desc/libnrd_xfer.a obj/native_client/src/trusted/desc/libdesc_wrapper.a obj/native_client/src/shared/imc/libimc.a obj/native_client/src/trusted/nacl_base/libnacl_base.a obj/native_client/src/trusted/desc_cacheability/libdesc_cacheability.a obj/native_client/src/trusted/fault_injection/libnacl_fault_inject.a obj/native_client/src/trusted/interval_multiset/libnacl_interval.a obj/native_client/src/trusted/perf_counter/libnacl_perf_counter.a obj/native_client/src/trusted/platform_qualify/libplatform_qual_lib.a obj/native_client/src/trusted/cpu_features/libcpu_features.a obj/native_client/src/trusted/simple_service/libsimple_service.a obj/native_client/src/trusted/threading/libthread_interface.a obj/native_client/src/trusted/validator/libvalidation_cache.a obj/native_client/src/trusted/validator/libvalidators.a obj/native_client/src/trusted/service_runtime/arch/x86/libservice_runtime_x86_common.a obj/native_client/src/trusted/validator_ragel/libdfa_validate_x86_64.a obj/native_client/src/trusted/service_runtime/arch/x86_64/libservice_runtime_x86_64.a obj/native_client/src/trusted/validator_x86/libnccopy_x86_64.a obj/native_client/src/trusted/service_runtime/libnacl_signal.a obj/chrome/libsafe_browsing_chunk_proto.a obj/chrome/libsafe_browsing_report_proto.a obj/ash/libash_with_content.a obj/components/libconstrained_window.a obj/components/libweb_modal.a obj/extensions/components/libnative_app_window.a obj/extensions/libextensions_browser.a obj/components/libcopresence_endpoints.a obj/components/libkeyed_service_content.a obj/components/libuser_prefs.a obj/components/libsessions_content.a obj/components/libstorage_monitor.a obj/device/media_transfer_protocol/libdevice_media_transfer_protocol.a obj/device/media_transfer_protocol/libmtp_file_entry_proto.a obj/device/media_transfer_protocol/libmtp_storage_info_proto.a obj/components/libweb_cache_browser.a obj/components/libweb_cache_common.a obj/device/serial/libdevice_serial.a obj/extensions/browser/api/libextensions_api_registration.a obj/extensions/common/api/libcast_channel_proto.a obj/chrome/browser/ui/libgtk2ui/libgtk2ui.a obj/third_party/libaddressinput/libaddressinput.a obj/third_party/libaddressinput/libaddressinput_util.a obj/chrome/libbrowser_extensions.a obj/chrome/browser/extensions/api/libchrome_api_registration.a obj/components/libcopresence_proto.a obj/components/libcopresence.a obj/components/libproximity_auth.a obj/device/hid/libdevice_hid.a obj/device/core/libdevice_core.a obj/third_party/hunspell/libhunspell.a obj/extensions/components/libjavascript_dialog_extensions_client.a obj/chrome/libprobe_message_proto.a obj/components/libautofill_core_browser.a obj/third_party/fips181/libfips181.a obj/third_party/libphonenumber/libphonenumber.a obj/third_party/libphonenumber/libphonenumber_without_metadata.a obj/components/libinfobars_core.a obj/components/libbookmarks_browser.a obj/components/libfavicon_base.a obj/components/libquery_parser.a obj/components/libcaptive_portal.a obj/components/libdata_reduction_proxy_core_browser.a obj/components/libdata_reduction_proxy_core_common.a obj/components/libdomain_reliability.a obj/components/libenhanced_bookmarks.a obj/components/libenhanced_bookmarks_proto.a obj/components/libfavicon_core.a obj/components/libfeedback_component.a obj/components/libgoogle_core_browser.a obj/components/liburl_fixer.a obj/components/libhistory_core_browser.a obj/components/libhistory_core_common.a obj/components/libmetrics_gpu.a obj/components/libmetrics_net.a obj/components/libmetrics_profiler.a obj/components/libnavigation_metrics.a obj/components/libnetwork_time.a obj/components/libomnibox.a obj/components/libsearch.a obj/components/libsearch_engines.a obj/components/librappor.a obj/components/search_engines/libprepopulated_engines.a obj/components/libvariations_http_provider.a obj/components/libpolicy_component_browser.a obj/components/libprecache_core.a obj/components/libprecache_core_proto.a obj/components/librenderer_context_menu.a obj/components/libsearch_provider_logos.a obj/components/libsuggestions.a obj/components/libsync_driver.a obj/components/libtranslate_core_browser.a obj/components/liblanguage_usage_metrics.a obj/components/libwebdata_services.a obj/chrome/libapps.a obj/components/libautofill_content_browser.a obj/components/libdom_distiller_content.a obj/components/libhistory_content_browser.a obj/components/libnavigation_interception.a obj/components/libpacked_ct_ev_whitelist.a obj/components/libpassword_manager_content_browser.a obj/components/libpower.a obj/components/libprecache_content.a obj/components/libtranslate_content_browser.a obj/components/libvisitedlink_browser.a obj/components/libweb_resource.a obj/net/libnet_extras.a obj/testing/perf/libperf_test.a obj/chrome/libsync_file_system_drive_proto.a obj/components/libcryptauth.a obj/components/libcryptauth_proto.a obj/components/libnacl_browser.a obj/chrome/libpolicy_path_parser.a obj/components/libpdf_browser.a obj/components/libpdf_common.a obj/chrome/libsafe_browsing_metadata_proto.a obj/build/linux/libspeechd.a obj/components/libbreakpad_host.a obj/components/libcrash_component.a obj/components/libcrash_component_lib.a obj/breakpad/libbreakpad_client.a obj/components/libautofill_content_renderer.a obj/components/libcdm_renderer.a obj/components/libcdm_common.a obj/components/libnetwork_hints_renderer.a obj/components/liberror_page_renderer.a obj/components/libpassword_manager_content_renderer.a obj/components/libplugins_renderer.a obj/components/libtranslate_content_renderer.a obj/components/libvisitedlink_renderer.a obj/components/libweb_cache_renderer.a obj/components/libnacl.a obj/mojo/libmonacl_syscall.a obj/components/libnacl_renderer.a obj/native_client/src/trusted/nonnacl_util/libsel_ldr_launcher_base.a obj/native_client/src/shared/serialization/libserialization.a obj/ppapi/libppapi_cpp_objects.a obj/ppapi/libppapi_internal_module.a obj/third_party/jsoncpp/libjsoncpp.a obj/components/libpdf_renderer.a obj/third_party/smhasher/libmurmurhash3.a obj/extensions/libextensions_renderer.a obj/media/cast/libcast_sender.a obj/components/libprinting_renderer.a obj/extensions/libextensions_utility.a obj/third_party/cld_2/libcld2_static.a obj/remoting/libremoting_base.a obj/remoting/proto/libchromotocol_proto_lib.a obj/remoting/libremoting_client.a obj/remoting/libremoting_protocol.a --end-group -lrt -ldl -lgmodule-2.0 -lgobject-2.0 -lgthread-2.0 -lglib-2.0 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -lpthread -lgconf-2 -lgio-2.0 -lresolv -lfontconfig -lfreetype -lpangocairo-1.0 -lcairo -lpangoft2-1.0 -lpango-1.0 -lharfbuzz -lX11 -lXi -lXcursor -lXext -lXfixes -lXrender -lXss -lXcomposite -lasound -lm -lXdamage -lXtst -lXrandr -lexpat -lcups -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lz -lcrypt -ldbus-1 -lcap -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lstdc++ -lm -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-redhat-linux/4.9.2/crtendS.o /usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../lib64/crtn.o' (30 runs):

       6340.420328      task-clock (msec)         #    0.999 CPUs utilized            ( +-  0.24% )
                 3      context-switches          #    0.000 K/sec                    ( +-  5.87% )
                 0      cpu-migrations            #    0.000 K/sec                  
           266,965      page-faults               #    0.042 M/sec                  
    19,423,623,904      cycles                    #    3.063 GHz                      ( +-  0.05% )
     8,996,119,541      stalled-cycles-frontend   #   46.32% frontend cycles idle     ( +-  0.10% )
                 0      stalled-cycles-backend    #    0.00% backend  cycles idle   
    27,933,514,202      instructions              #    1.44  insns per cycle        
                                                  #    0.32  stalled cycles per insn  ( +-  0.00% )
     5,536,085,050      branches                  #  873.142 M/sec                    ( +-  0.00% )
        81,208,891      branch-misses             #    1.47% of all branches          ( +-  0.00% )

       6.344845173 seconds time elapsed                                          ( +-  0.24% )

 Performance counter stats for '/home/espindola/binutils/ld-patch2 -pie --hash-style=gnu --no-add-needed --build-id --gc-sections --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o chrome /usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../lib64/Scrt1.o /usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.9.2/crtbeginS.o -L. -L/usr/lib/gcc/x86_64-redhat-linux/4.9.2 -L/usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../.. -L/home/espindola/llvm/build-227431/bin/../lib -L/lib -L/usr/lib -z now -z relro --fatal-warnings -z defs -z noexecstack --disable-new-dtags --export-dynamic -uIsHeapProfilerRunning -uProfilerStart -u_Z21InitialMallocHook_NewPKvj -u_Z22InitialMallocHook_MMapPKvS0_jiiix -u_Z22InitialMallocHook_SbrkPKvi -u_Z21InitialMallocHook_NewPKvm -u_Z22InitialMallocHook_MMapPKvS0_miiil -u_Z22InitialMallocHook_SbrkPKvl -u_ZN15HeapLeakChecker12IgnoreObjectEPKv -u_ZN15HeapLeakChecker14UnIgnoreObjectEPKv -O1 --as-needed --start-group obj/chrome/app/chrome_initial.chrome_exe_main_aura.o obj/content/public/common/chrome_initial.content_switches.o obj/chrome/app/chrome_initial.chrome_main.o obj/chrome/app/chrome_initial.chrome_main_delegate.o obj/chrome/libcommon.a obj/chrome/libbrowser.a obj/chrome/libdebugger.a obj/ppapi/libppapi_host.a obj/printing/libprinting.a obj/chrome/libservice.a obj/chrome/libplugin.a obj/chrome/librenderer.a obj/chrome/libutility.a obj/content/libcontent_gpu.a obj/content/libcontent_ppapi_plugin.a obj/components/nacl/renderer/plugin/libnacl_trusted_plugin.a obj/remoting/libremoting_client_plugin.a obj/content/libcontent_app_both.a obj/chrome/libinstaller_util.a obj/base/allocator/liballocator.a obj/components/libstartup_metric_utils.a obj/chrome/libcommon_net.a obj/base/libbase.a obj/base/libbase_static.a obj/base/allocator/liballocator_extension_thunks.a obj/third_party/modp_b64/libmodp_b64.a obj/base/third_party/dynamic_annotations/libdynamic_annotations.a obj/base/libsymbolize.a obj/base/libxdg_mime.a obj/third_party/libevent/libevent.a obj/components/libnetwork_hints_common.a obj/components/liberror_page_common.a obj/url/liburl_lib.a obj/third_party/icu/libicui18n.a obj/third_party/icu/libicuuc.a obj/third_party/icu/libicudata.a obj/crypto/libcrcrypto.a obj/net/third_party/nss/libcrssl.a obj/net/libnet.a obj/base/libbase_i18n.a obj/base/libbase_prefs.a obj/sdch/libsdch.a obj/third_party/zlib/libchrome_zlib.a obj/third_party/zlib/libzlib_x86_simd.a obj/build/linux/libgio.a obj/ui/base/libui_base.a obj/skia/libskia_library.a obj/skia/libskia_opts.a obj/skia/libskia_opts_ssse3.a obj/skia/libskia_opts_sse41.a obj/third_party/sfntly/libsfntly.a obj/skia/libskia_chrome.a obj/skia/libskia_chrome_opts.a obj/ui/events/libevents.a obj/ui/gfx/libgfx.a obj/third_party/libpng/libpng.a obj/ui/gfx/libgfx_geometry.a obj/third_party/libjpeg_turbo/libjpeg_turbo.a obj/ui/gfx/x/libgfx_x11.a obj/ui/events/libdom4_keycode_converter.a obj/ui/events/libevents_base.a obj/ui/events/libgesture_detection.a obj/ui/events/devices/libevents_devices.a obj/ui/events/platform/libevents_platform.a obj/ui/events/platform/x11/libx11_events_platform.a obj/gpu/libgpu_ipc.a obj/gpu/libcommand_buffer_common.a obj/gpu/command_buffer/libgles2_utils.a obj/ipc/libipc.a obj/chrome/libsafe_browsing_proto.a obj/third_party/protobuf/libprotobuf_lite.a obj/chrome/libcommon_constants.a obj/components/libbookmarks_common.a obj/components/libnacl_switches.a obj/components/libcloud_devices_common.a obj/google_apis/libgoogle_apis.a obj/third_party/libxml/libxml2.a obj/components/libcomponent_updater.a obj/components/libupdate_client.a obj/courgette/libcourgette_lib.a obj/third_party/lzma_sdk/liblzma_sdk.a obj/third_party/zlib/google/libzip.a obj/third_party/zlib/libminizip.a obj/components/libcrx_file.a obj/components/libcontent_settings_core_common.a obj/components/libjson_schema.a obj/third_party/re2/libre2.a obj/components/libmetrics.a obj/components/libcomponent_metrics_proto.a obj/components/libvariations.a obj/third_party/mt19937ar/libmt19937ar.a obj/components/libpolicy_component_common.a obj/components/libcloud_policy_proto.a obj/components/libpolicy.a obj/components/libcloud_policy_proto_generated_compile.a obj/components/libtranslate_core_common.a obj/content/libcontent_common.a obj/components/libtracing.a obj/ui/accessibility/libaccessibility.a obj/ui/accessibility/libax_gen.a obj/tools/json_schema_compiler/libapi_gen_util.a obj/ui/events/ipc/libevents_ipc.a obj/ui/gfx/ipc/libgfx_ipc.a obj/ui/shell_dialogs/libshell_dialogs.a obj/ui/aura/libaura.a obj/ui/compositor/libcompositor.a obj/cc/libcc.a obj/gpu/libcommand_buffer_client.a obj/gpu/libcommand_buffer_service.a obj/gpu/libdisk_cache_proto.a obj/third_party/smhasher/libcityhash.a obj/ui/gl/libgl_wrapper.a obj/third_party/angle/src/libtranslator.a obj/third_party/angle/src/libtranslator_lib.a obj/third_party/angle/src/libpreprocessor.a obj/third_party/angle/src/libangle_common.a obj/gpu/libgles2_cmd_helper.a obj/gpu/libgpu_config.a obj/build/linux/libpci.a obj/third_party/libXNVCtrl/libXNVCtrl.a obj/media/libmedia.a libyuv.a obj/third_party/opus/libopus.a obj/media/libshared_memory_support.a obj/third_party/ffmpeg/libffmpeg.a obj/third_party/libvpx/libvpx.a obj/third_party/libvpx/libvpx_intrinsics_mmx.a obj/third_party/libvpx/libvpx_intrinsics_sse2.a obj/third_party/libvpx/libvpx_intrinsics_ssse3.a obj/third_party/libvpx/libvpx_intrinsics_sse4_1.a obj/third_party/libvpx/libvpx_intrinsics_avx2.a obj/media/libmedia_asm.a obj/media/libmedia_sse2.a obj/cc/libcc_surfaces.a obj/gpu/blink/libgpu_blink.a obj/gpu/libgles2_c_lib.a obj/gpu/libgles2_implementation.a obj/gpu/libgl_in_process_context.a obj/gpu/skia_bindings/libgpu_skia_bindings.a obj/third_party/WebKit/Source/platform/libblink_common.a obj/third_party/WebKit/Source/wtf/libwtf.a obj/ipc/mojo/libipc_mojo.a obj/mojo/libmojo_environment_chromium.a obj/mojo/libmojo_environment_chromium_impl.a obj/mojo/libmojo_common_lib.a obj/third_party/mojo/libmojo_cpp_bindings.a obj/third_party/mojo/libmojo_system_impl.a obj/storage/libstorage_common.a obj/third_party/WebKit/Source/platform/libblink_platform.a obj/third_party/WebKit/Source/platform/libblink_heap_asm_stubs.a obj/third_party/libwebp/libwebp_dec.a obj/third_party/libwebp/libwebp_dsp.a obj/third_party/libwebp/libwebp_utils.a obj/third_party/libwebp/libwebp_demux.a obj/third_party/libwebp/libwebp_enc.a obj/third_party/ots/libots.a obj/third_party/brotli/libbrotli.a obj/third_party/qcms/libqcms.a obj/v8/tools/gyp/libv8_base.a obj/v8/tools/gyp/libv8_libbase.a obj/v8/tools/gyp/libv8_external_snapshot.a obj/third_party/iccjpeg/libiccjpeg.a obj/third_party/WebKit/Source/web/libblink_web.a obj/third_party/WebKit/Source/core/libwebcore_dom.a obj/third_party/libxslt/libxslt.a obj/third_party/sqlite/libsqlite3.a obj/third_party/WebKit/Source/core/libwebcore_html.a obj/third_party/WebKit/Source/core/libwebcore_remaining.a obj/third_party/WebKit/Source/core/libwebcore_rendering.a obj/third_party/WebKit/Source/core/libwebcore_svg.a obj/third_party/WebKit/Source/core/libwebcore_generated.a obj/gin/libgin.a obj/third_party/snappy/libsnappy.a obj/third_party/WebKit/Source/modules/libmodules.a obj/third_party/mojo/libmojo_application_bindings.a obj/webkit/common/gpu/libwebkit_gpu.a obj/ppapi/libppapi_shared.a obj/ui/surface/libsurface.a obj/third_party/libjingle/libjingle.a obj/third_party/webrtc/base/librtc_base.a obj/third_party/webrtc/base/librtc_base_approved.a obj/third_party/webrtc/libjingle/xmllite/librtc_xmllite.a obj/third_party/libjingle/libjingle_p2p_constants.a obj/device/usb/libdevice_usb.a obj/third_party/libusb/libusb.a obj/device/udev_linux/libudev_linux.a obj/build/linux/libudev.a obj/chrome/common/extensions/api/libchrome_api.a obj/extensions/common/api/libextensions_api.a obj/extensions/libextensions_common.a obj/components/liburl_matcher.a obj/device/bluetooth/libdevice_bluetooth.a obj/extensions/libextensions_common_constants.a obj/media/cast/libcast_net.a obj/media/cast/libcast_base.a obj/media/cast/libcast_logging_proto.a obj/components/libautofill_core_common.a obj/components/libautofill_content_common.a obj/components/libpassword_manager_core_common.a obj/components/libpassword_manager_content_common.a obj/components/libsignin_core_common.a obj/components/libtranslate_content_common.a obj/components/libtranslate_core_language_detection.a obj/components/libvisitedlink_common.a obj/components/libnacl_common.a obj/components/libprinting_common.a obj/chrome/libbrowser_ui.a obj/chrome/libcert_logger_proto.a obj/chrome/libbrowser_ui_views.a obj/ash/libash.a obj/components/libuser_manager.a obj/components/libwallpaper.a obj/content/libcontent_browser.a obj/device/vibration/libdevice_vibration.a obj/device/vibration/libdevice_vibration_mojo_bindings.a obj/device/battery/libdevice_battery.a obj/device/battery/libdevice_battery_mojo_bindings.a obj/dbus/libdbus.a obj/sql/libsql.a obj/ui/snapshot/libsnapshot.a obj/content/browser/service_worker/libservice_worker_proto.a obj/content/browser/speech/proto/libspeech_proto.a obj/content/libcontent_common_mojo_bindings.a obj/net/libhttp_server.a obj/storage/libstorage.a obj/third_party/leveldatabase/libleveldatabase.a obj/third_party/mojo/libmojo_js_bindings.a obj/ui/touch_selection/libui_touch_selection.a obj/sandbox/libsandbox_services.a obj/sandbox/libsuid_sandbox_client.a obj/sandbox/libseccomp_bpf.a obj/sandbox/libseccomp_bpf_helpers.a obj/jingle/libjingle_glue.a obj/third_party/libjingle/libjingle_webrtc.a obj/third_party/libjingle/libjingle_webrtc_common.a obj/third_party/libsrtp/libsrtp.a obj/third_party/webrtc/modules/libmedia_file.a obj/third_party/webrtc/system_wrappers/libsystem_wrappers.a obj/third_party/webrtc/modules/libvideo_capture_module_impl.a obj/third_party/webrtc/modules/libvideo_capture_module.a obj/third_party/webrtc/modules/libwebrtc_utility.a obj/third_party/webrtc/modules/libaudio_coding_module.a obj/third_party/webrtc/modules/libCNG.a obj/third_party/webrtc/common_audio/libcommon_audio.a obj/third_party/openmax_dl/dl/libopenmax_dl.a obj/third_party/webrtc/common_audio/libcommon_audio_sse2.a obj/third_party/webrtc/modules/libaudio_encoder_interface.a obj/third_party/webrtc/modules/libG711.a obj/third_party/webrtc/modules/libG722.a obj/third_party/webrtc/modules/libiLBC.a obj/third_party/webrtc/modules/libiSAC.a obj/third_party/webrtc/modules/libaudio_decoder_interface.a obj/third_party/webrtc/modules/libiSACFix.a obj/third_party/webrtc/modules/libPCM16B.a obj/third_party/webrtc/modules/libred.a obj/third_party/webrtc/modules/libwebrtc_opus.a obj/third_party/webrtc/modules/libneteq.a obj/third_party/webrtc/modules/libwebrtc_video_coding.a obj/third_party/webrtc/modules/libwebrtc_i420.a obj/third_party/webrtc/common_video/libcommon_video.a obj/third_party/webrtc/modules/video_coding/utility/libvideo_coding_utility.a obj/third_party/webrtc/modules/video_coding/codecs/vp8/libwebrtc_vp8.a obj/third_party/webrtc/modules/video_coding/codecs/vp9/libwebrtc_vp9.a obj/third_party/webrtc/modules/libvideo_render_module_impl.a obj/third_party/webrtc/modules/libvideo_render_module.a obj/third_party/usrsctp/libusrsctplib.a obj/third_party/webrtc/modules/libaudio_processing.a obj/third_party/webrtc/modules/libaudioproc_debug_proto.a obj/third_party/webrtc/modules/libaudio_processing_sse2.a obj/third_party/webrtc/modules/libdesktop_capture.a obj/third_party/webrtc/modules/libdesktop_capture_differ_sse2.a obj/sandbox/libc_urandom_override.a obj/ppapi/libppapi_ipc.a obj/third_party/flac/libflac.a obj/third_party/speex/libspeex.a obj/content/libcontent_child.a obj/content/libcontent_plugin.a obj/content/libcontent_renderer.a obj/cc/blink/libcc_blink.a obj/media/blink/libmedia_blink.a obj/third_party/mojo/libmojo_js_lib.a obj/ui/native_theme/libnative_theme.a obj/third_party/libjingle/libpeerconnection.a obj/third_party/webrtc/voice_engine/libvoice_engine.a obj/third_party/webrtc/modules/libaudio_conference_mixer.a obj/third_party/webrtc/modules/libaudio_device.a obj/third_party/webrtc/modules/libbitrate_controller.a obj/third_party/webrtc/modules/librtp_rtcp.a obj/third_party/webrtc/modules/libpaced_sender.a obj/third_party/webrtc/modules/libremote_bitrate_estimator.a obj/third_party/webrtc/libwebrtc.a obj/third_party/webrtc/libwebrtc_common.a obj/third_party/webrtc/video_engine/libvideo_engine_core.a obj/third_party/webrtc/modules/libvideo_processing.a obj/third_party/webrtc/modules/libvideo_processing_sse2.a obj/ppapi/libppapi_proxy.a obj/content/libcontent_utility.a obj/ui/accelerometer/libui_accelerometer.a obj/ui/app_list/libapp_list.a obj/components/libkeyed_service_core.a obj/ui/wm/libwm.a obj/ui/views/libviews.a obj/ui/display/libdisplay_util.a obj/ui/keyboard/libkeyboard.a obj/ui/message_center/libmessage_center.a obj/ui/views/controls/webview/libwebview.a obj/ui/content_accelerators/libui_content_accelerators.a obj/ui/web_dialogs/libweb_dialogs.a obj/components/libauto_login_parser.a obj/components/libdom_distiller_core.a obj/sync/libsync_core.a obj/sync/libattachment_store_proto.a obj/sync/libsync_proto.a obj/third_party/dom_distiller_js/libdom_distiller_js_proto.a obj/components/libleveldb_proto.a obj/components/libdistilled_page_proto.a obj/components/libpref_registry.a obj/components/libdom_distiller_webui.a obj/components/libfeedback_proto.a obj/components/libhistory_core_browser_proto.a obj/components/libinvalidation.a obj/jingle/libnotifier.a obj/third_party/cacheinvalidation/libcacheinvalidation.a obj/third_party/cacheinvalidation/libcacheinvalidation_proto_cpp.a obj/components/libgcm_driver.a obj/components/libos_crypt.a obj/google_apis/gcm/libgcm.a obj/components/libsignin_core_browser.a obj/components/libcontent_settings_core_browser.a obj/components/libwebdata_common.a obj/components/libonc_component.a obj/components/libpassword_manager_core_browser.a obj/components/libpassword_manager_core_browser_proto.a obj/components/libui_zoom.a obj/components/libapp_modal.a obj/components/libautofill_content_risk_proto.a obj/net/libnet_with_v8.a obj/native_client/src/trusted/service_runtime/libsel.a obj/native_client/src/trusted/service_runtime/libenv_cleanser.a obj/native_client/src/trusted/service_runtime/libnacl_error_code.a obj/native_client/src/shared/gio/libgio.a obj/native_client/src/shared/platform/libplatform.a obj/native_client/src/shared/srpc/libnonnacl_srpc.a obj/native_client/src/trusted/debug_stub/libdebug_stub.a obj/native_client/src/trusted/desc/libnrd_xfer.a obj/native_client/src/trusted/desc/libdesc_wrapper.a obj/native_client/src/shared/imc/libimc.a obj/native_client/src/trusted/nacl_base/libnacl_base.a obj/native_client/src/trusted/desc_cacheability/libdesc_cacheability.a obj/native_client/src/trusted/fault_injection/libnacl_fault_inject.a obj/native_client/src/trusted/interval_multiset/libnacl_interval.a obj/native_client/src/trusted/perf_counter/libnacl_perf_counter.a obj/native_client/src/trusted/platform_qualify/libplatform_qual_lib.a obj/native_client/src/trusted/cpu_features/libcpu_features.a obj/native_client/src/trusted/simple_service/libsimple_service.a obj/native_client/src/trusted/threading/libthread_interface.a obj/native_client/src/trusted/validator/libvalidation_cache.a obj/native_client/src/trusted/validator/libvalidators.a obj/native_client/src/trusted/service_runtime/arch/x86/libservice_runtime_x86_common.a obj/native_client/src/trusted/validator_ragel/libdfa_validate_x86_64.a obj/native_client/src/trusted/service_runtime/arch/x86_64/libservice_runtime_x86_64.a obj/native_client/src/trusted/validator_x86/libnccopy_x86_64.a obj/native_client/src/trusted/service_runtime/libnacl_signal.a obj/chrome/libsafe_browsing_chunk_proto.a obj/chrome/libsafe_browsing_report_proto.a obj/ash/libash_with_content.a obj/components/libconstrained_window.a obj/components/libweb_modal.a obj/extensions/components/libnative_app_window.a obj/extensions/libextensions_browser.a obj/components/libcopresence_endpoints.a obj/components/libkeyed_service_content.a obj/components/libuser_prefs.a obj/components/libsessions_content.a obj/components/libstorage_monitor.a obj/device/media_transfer_protocol/libdevice_media_transfer_protocol.a obj/device/media_transfer_protocol/libmtp_file_entry_proto.a obj/device/media_transfer_protocol/libmtp_storage_info_proto.a obj/components/libweb_cache_browser.a obj/components/libweb_cache_common.a obj/device/serial/libdevice_serial.a obj/extensions/browser/api/libextensions_api_registration.a obj/extensions/common/api/libcast_channel_proto.a obj/chrome/browser/ui/libgtk2ui/libgtk2ui.a obj/third_party/libaddressinput/libaddressinput.a obj/third_party/libaddressinput/libaddressinput_util.a obj/chrome/libbrowser_extensions.a obj/chrome/browser/extensions/api/libchrome_api_registration.a obj/components/libcopresence_proto.a obj/components/libcopresence.a obj/components/libproximity_auth.a obj/device/hid/libdevice_hid.a obj/device/core/libdevice_core.a obj/third_party/hunspell/libhunspell.a obj/extensions/components/libjavascript_dialog_extensions_client.a obj/chrome/libprobe_message_proto.a obj/components/libautofill_core_browser.a obj/third_party/fips181/libfips181.a obj/third_party/libphonenumber/libphonenumber.a obj/third_party/libphonenumber/libphonenumber_without_metadata.a obj/components/libinfobars_core.a obj/components/libbookmarks_browser.a obj/components/libfavicon_base.a obj/components/libquery_parser.a obj/components/libcaptive_portal.a obj/components/libdata_reduction_proxy_core_browser.a obj/components/libdata_reduction_proxy_core_common.a obj/components/libdomain_reliability.a obj/components/libenhanced_bookmarks.a obj/components/libenhanced_bookmarks_proto.a obj/components/libfavicon_core.a obj/components/libfeedback_component.a obj/components/libgoogle_core_browser.a obj/components/liburl_fixer.a obj/components/libhistory_core_browser.a obj/components/libhistory_core_common.a obj/components/libmetrics_gpu.a obj/components/libmetrics_net.a obj/components/libmetrics_profiler.a obj/components/libnavigation_metrics.a obj/components/libnetwork_time.a obj/components/libomnibox.a obj/components/libsearch.a obj/components/libsearch_engines.a obj/components/librappor.a obj/components/search_engines/libprepopulated_engines.a obj/components/libvariations_http_provider.a obj/components/libpolicy_component_browser.a obj/components/libprecache_core.a obj/components/libprecache_core_proto.a obj/components/librenderer_context_menu.a obj/components/libsearch_provider_logos.a obj/components/libsuggestions.a obj/components/libsync_driver.a obj/components/libtranslate_core_browser.a obj/components/liblanguage_usage_metrics.a obj/components/libwebdata_services.a obj/chrome/libapps.a obj/components/libautofill_content_browser.a obj/components/libdom_distiller_content.a obj/components/libhistory_content_browser.a obj/components/libnavigation_interception.a obj/components/libpacked_ct_ev_whitelist.a obj/components/libpassword_manager_content_browser.a obj/components/libpower.a obj/components/libprecache_content.a obj/components/libtranslate_content_browser.a obj/components/libvisitedlink_browser.a obj/components/libweb_resource.a obj/net/libnet_extras.a obj/testing/perf/libperf_test.a obj/chrome/libsync_file_system_drive_proto.a obj/components/libcryptauth.a obj/components/libcryptauth_proto.a obj/components/libnacl_browser.a obj/chrome/libpolicy_path_parser.a obj/components/libpdf_browser.a obj/components/libpdf_common.a obj/chrome/libsafe_browsing_metadata_proto.a obj/build/linux/libspeechd.a obj/components/libbreakpad_host.a obj/components/libcrash_component.a obj/components/libcrash_component_lib.a obj/breakpad/libbreakpad_client.a obj/components/libautofill_content_renderer.a obj/components/libcdm_renderer.a obj/components/libcdm_common.a obj/components/libnetwork_hints_renderer.a obj/components/liberror_page_renderer.a obj/components/libpassword_manager_content_renderer.a obj/components/libplugins_renderer.a obj/components/libtranslate_content_renderer.a obj/components/libvisitedlink_renderer.a obj/components/libweb_cache_renderer.a obj/components/libnacl.a obj/mojo/libmonacl_syscall.a obj/components/libnacl_renderer.a obj/native_client/src/trusted/nonnacl_util/libsel_ldr_launcher_base.a obj/native_client/src/shared/serialization/libserialization.a obj/ppapi/libppapi_cpp_objects.a obj/ppapi/libppapi_internal_module.a obj/third_party/jsoncpp/libjsoncpp.a obj/components/libpdf_renderer.a obj/third_party/smhasher/libmurmurhash3.a obj/extensions/libextensions_renderer.a obj/media/cast/libcast_sender.a obj/components/libprinting_renderer.a obj/extensions/libextensions_utility.a obj/third_party/cld_2/libcld2_static.a obj/remoting/libremoting_base.a obj/remoting/proto/libchromotocol_proto_lib.a obj/remoting/libremoting_client.a obj/remoting/libremoting_protocol.a --end-group -lrt -ldl -lgmodule-2.0 -lgobject-2.0 -lgthread-2.0 -lglib-2.0 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -lpthread -lgconf-2 -lgio-2.0 -lresolv -lfontconfig -lfreetype -lpangocairo-1.0 -lcairo -lpangoft2-1.0 -lpango-1.0 -lharfbuzz -lX11 -lXi -lXcursor -lXext -lXfixes -lXrender -lXss -lXcomposite -lasound -lm -lXdamage -lXtst -lXrandr -lexpat -lcups -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lz -lcrypt -ldbus-1 -lcap -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lstdc++ -lm -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-redhat-linux/4.9.2/crtendS.o /usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../lib64/crtn.o' (30 runs):

       6265.451471      task-clock (msec)         #    0.999 CPUs utilized            ( +-  0.31% )
                 3      context-switches          #    0.000 K/sec                    ( +-  5.65% )
                 0      cpu-migrations            #    0.000 K/sec                    ( +- 59.45% )
           266,965      page-faults               #    0.043 M/sec                  
    19,264,462,653      cycles                    #    3.075 GHz                      ( +-  0.06% )
     8,994,737,627      stalled-cycles-frontend   #   46.69% frontend cycles idle     ( +-  0.13% )
                 0      stalled-cycles-backend    #    0.00% backend  cycles idle   
    27,938,050,652      instructions              #    1.45  insns per cycle        
                                                  #    0.32  stalled cycles per insn  ( +-  0.00% )
     5,541,198,567      branches                  #  884.405 M/sec                    ( +-  0.00% )
        80,496,503      branch-misses             #    1.45% of all branches          ( +-  0.00% )

       6.269855088 seconds time elapsed                                          ( +-  0.31% )

diff --git a/gold/merge.cc b/gold/merge.cc
index d395312..7e061af 100644
--- a/gold/merge.cc
+++ b/gold/merge.cc
@@ -49,13 +49,12 @@ const Object_merge_map::Input_merge_map*
 Object_merge_map::get_input_merge_map(unsigned int shndx) const
 {
   gold_assert(shndx != -1U);
-  if (shndx == this->first_shnum_)
-    return &this->first_map_;
-  if (shndx == this->second_shnum_)
-    return &this->second_map_;
-  Section_merge_maps::const_iterator p = this->section_merge_maps_.find(shndx);
-  if (p != this->section_merge_maps_.end())
-    return p->second;
+  const Section_merge_maps &maps = this->section_merge_maps_;
+  for (Section_merge_maps::const_iterator i = maps.begin(), e =maps.end();
+       i != e; ++i) {
+    if (i->first == shndx)
+      return i->second;
+  }
   return NULL;
 }
 
@@ -73,23 +72,10 @@ Object_merge_map::get_or_make_input_merge_map(
       return map;
     }
 
-  // We need to create a new entry.
-  if (this->first_shnum_ == -1U)
-    {
-      this->first_shnum_ = shndx;
-      this->first_map_.output_data = output_data;
-      return &this->first_map_;
-    }
-  if (this->second_shnum_ == -1U)
-    {
-      this->second_shnum_ = shndx;
-      this->second_map_.output_data = output_data;
-      return &this->second_map_;
-    }
-
   Input_merge_map* new_map = new Input_merge_map;
   new_map->output_data = output_data;
-  this->section_merge_maps_[shndx] = new_map;
+  Section_merge_maps &maps = this->section_merge_maps_;
+  maps.push_back(std::make_pair(shndx, new_map));
   return new_map;
 }
 
diff --git a/gold/merge.h b/gold/merge.h
index 54caed8..53846ee 100644
--- a/gold/merge.h
+++ b/gold/merge.h
@@ -42,9 +42,7 @@ class Object_merge_map
 {
  public:
   Object_merge_map()
-    : first_shnum_(-1U), first_map_(),
-      second_shnum_(-1U), second_map_(),
-      section_merge_maps_()
+    : section_merge_maps_()
   { }
 
   ~Object_merge_map();
@@ -152,7 +150,8 @@ class Object_merge_map
   };
 
   // Map input section indices to merge maps.
-  typedef std::map<unsigned int, Input_merge_map*> Section_merge_maps;
+  typedef std::vector<std::pair<unsigned int, Input_merge_map*> >
+      Section_merge_maps;
 
   // Return a pointer to the Input_merge_map to use for the input
   // section SHNDX, or NULL.
@@ -165,15 +164,6 @@ class Object_merge_map
                                              this)->get_input_merge_map(shndx));
   }
 
-  // Any given object file will normally only have a couple of input
-  // sections with mergeable contents.  So we keep the first two input
-  // section numbers inline, and push any further ones into a map.  A
-  // value of -1U in first_shnum_ or second_shnum_ means that we don't
-  // have a corresponding entry.
-  unsigned int first_shnum_;
-  Input_merge_map first_map_;
-  unsigned int second_shnum_;
-  Input_merge_map second_map_;
   Section_merge_maps section_merge_maps_;
 };
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]