#!/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 new-gen-rank|old-gen-rank max|avg logfile" exit 1 } if [ $# -ne 3 ]; then print_usage_and_die fi case $1 in new-gen-rank|old-gen-rank) OP=$1 ;; *) print_usage_and_die esac case $2 in max|avg) RANK_MODE=$2 ;; *) print_usage_and_die esac LOGFILE=$3 GENERAL_INTERESTING_KEYS="\ pause \ " INTERESTING_NEW_GEN_KEYS="\ ${GENERAL_INTERESTING_KEYS} \ scavenge \ weak \ roots \ old_new \ code \ semispace \ object_groups \ " INTERESTING_OLD_GEN_KEYS="\ ${GENERAL_INTERESTING_KEYS} \ external \ mark \ mark_inc \ mark_prepcodeflush \ mark_root \ mark_topopt \ mark_retainmaps \ mark_weakclosure \ mark_stringtable \ mark_weakrefs \ mark_globalhandles \ mark_codeflush \ mark_optimizedcodemaps \ store_buffer_clear \ slots_buffer_clear \ sweep \ sweepns \ sweepos \ sweepcode \ sweepcell \ sweepmap \ sweepaborted \ evacuate \ new_new \ old_new \ root_new \ compaction_ptrs \ intracompaction_ptrs \ misc_compaction \ inc_weak_closure \ weakcollection_process \ weakcollection_clear \ weakcollection_abort \ weakcells \ nonlive_refs \ " 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 \ ${INTERESTING_NEW_GEN_KEYS} ;; old-gen-rank) cat $LOGFILE | grep "gc=ms" | grep "reduce_memory=0" | grep -v "steps=0" \ | $BASE_DIR/eval_gc_nvp.py \ --no-histogram \ --rank $RANK_MODE \ ${INTERESTING_OLD_GEN_KEYS} ;; *) ;; esac