|  | #!/bin/bash | 
|  | # | 
|  | # Copyright 2015 the V8 project authors. All rights reserved. | 
|  | # Use of this source code is governed by a BSD-style license that can be | 
|  | # found in the LICENSE file. | 
|  |  | 
|  | # Convenience Script used to rank GC NVP output. | 
|  |  | 
|  | print_usage_and_die() { | 
|  | echo "Usage: $0 [OPTIONS]" | 
|  | echo "" | 
|  | echo "OPTIONS" | 
|  | echo  "  -r|--rank new-gen-rank|old-gen-rank    GC mode to profile" | 
|  | echo  "                                         (default: old-gen-rank)" | 
|  | echo  "  -s|--sort avg|max                      sorting mode (default: max)" | 
|  | echo  "  -t|--top-level                         include top-level categories" | 
|  | echo  "  -c|--csv                               provide csv output" | 
|  | echo  "  -f|--file FILE                         profile input in a file" | 
|  | echo  "                                         (default: stdin)" | 
|  | echo  "  -p|--percentiles                       comma separated percentiles" | 
|  | exit 1 | 
|  | } | 
|  |  | 
|  | OP=old-gen-rank | 
|  | RANK_MODE=max | 
|  | TOP_LEVEL=no | 
|  | CSV="" | 
|  | LOGFILE=/dev/stdin | 
|  | PERCENTILES="" | 
|  |  | 
|  | while [[ $# -ge 1 ]] | 
|  | do | 
|  | key="$1" | 
|  | case $key in | 
|  | -r|--rank) | 
|  | case $2 in | 
|  | new-gen-rank|old-gen-rank) | 
|  | OP="$2" | 
|  | ;; | 
|  | *) | 
|  | print_usage_and_die | 
|  | esac | 
|  | shift | 
|  | ;; | 
|  | -s|--sort) | 
|  | case $2 in | 
|  | max|avg) | 
|  | RANK_MODE=$2 | 
|  | ;; | 
|  | *) | 
|  | print_usage_and_die | 
|  | esac | 
|  | shift | 
|  | ;; | 
|  | -t|--top-level) | 
|  | TOP_LEVEL=yes | 
|  | ;; | 
|  | -c|--csv) | 
|  | CSV=" --csv " | 
|  | ;; | 
|  | -f|--file) | 
|  | LOGFILE=$2 | 
|  | shift | 
|  | ;; | 
|  | -p|--percentiles) | 
|  | PERCENTILES="--percentiles=$2" | 
|  | shift | 
|  | ;; | 
|  | *) | 
|  | break | 
|  | ;; | 
|  | esac | 
|  | shift | 
|  | done | 
|  |  | 
|  | if [[ $# -ne 0 ]]; then | 
|  | echo "Unknown option(s): $@" | 
|  | echo "" | 
|  | print_usage_and_die | 
|  | fi | 
|  |  | 
|  | INTERESTING_NEW_GEN_KEYS="\ | 
|  | scavenge \ | 
|  | weak \ | 
|  | roots \ | 
|  | old_new \ | 
|  | semispace \ | 
|  | " | 
|  |  | 
|  | INTERESTING_OLD_GEN_KEYS="\ | 
|  | clear.dependent_code \ | 
|  | clear.global_handles \ | 
|  | clear.maps \ | 
|  | clear.slots_buffer \ | 
|  | clear.store_buffer \ | 
|  | clear.string_table \ | 
|  | clear.weak_cells \ | 
|  | clear.weak_collections \ | 
|  | clear.weak_lists \ | 
|  | evacuate.candidates \ | 
|  | evacuate.clean_up \ | 
|  | evacuate.copy \ | 
|  | evacuate.update_pointers \ | 
|  | evacuate.update_pointers.to_evacuated \ | 
|  | evacuate.update_pointers.to_new \ | 
|  | evacuate.update_pointers.weak \ | 
|  | external.mc_prologue \ | 
|  | external.mc_epilogue \ | 
|  | external.mc_incremental_prologue \ | 
|  | external.mc_incremental_epilogue \ | 
|  | external.weak_global_handles \ | 
|  | mark.finish_incremental \ | 
|  | mark.roots \ | 
|  | mark.weak_closure \ | 
|  | mark.weak_closure.ephemeral \ | 
|  | mark.weak_closure.weak_handles \ | 
|  | mark.weak_closure.weak_roots \ | 
|  | mark.weak_closure.harmony \ | 
|  | sweep.code \ | 
|  | sweep.map \ | 
|  | sweep.old \ | 
|  | " | 
|  |  | 
|  | if [[ "$TOP_LEVEL" = "yes" ]]; then | 
|  | INTERESTING_OLD_GEN_KEYS="\ | 
|  | ${INTERESTING_OLD_GEN_KEYS} \ | 
|  | clear \ | 
|  | evacuate \ | 
|  | finish \ | 
|  | incremental_finalize \ | 
|  | mark \ | 
|  | pause | 
|  | sweep \ | 
|  | " | 
|  | INTERESTING_NEW_GEN_KEYS="\ | 
|  | ${INTERESTING_NEW_GEN_KEYS} \ | 
|  | " | 
|  | fi | 
|  |  | 
|  | BASE_DIR=$(dirname $0) | 
|  |  | 
|  | case $OP in | 
|  | new-gen-rank) | 
|  | cat $LOGFILE | grep "gc=s" \ | 
|  | | $BASE_DIR/eval_gc_nvp.py \ | 
|  | --no-histogram \ | 
|  | --rank $RANK_MODE \ | 
|  | $CSV \ | 
|  | $PERCENTILES \ | 
|  | ${INTERESTING_NEW_GEN_KEYS} | 
|  | ;; | 
|  | old-gen-rank) | 
|  | cat $LOGFILE | grep "gc=ms" \ | 
|  | | $BASE_DIR/eval_gc_nvp.py \ | 
|  | --no-histogram \ | 
|  | --rank $RANK_MODE \ | 
|  | $CSV \ | 
|  | $PERCENTILES \ | 
|  | ${INTERESTING_OLD_GEN_KEYS} | 
|  | ;; | 
|  | *) | 
|  | ;; | 
|  | esac |