[25851] | 1 | #!/bin/bash
|
---|
| 2 | # $Id: pure_test.sh 69111 2017-10-17 14:26:02Z vboxsync $
|
---|
| 3 | ## @file
|
---|
| 4 | # pure_test.sh - test the effect of __attribute__((pure)) on a set of
|
---|
| 5 | # functions.
|
---|
| 6 | #
|
---|
| 7 | # Mark the functions with EXPERIMENT_PURE where the attribute normally would,
|
---|
| 8 | # go update this script so it points to the right header and execute it. At
|
---|
| 9 | # the end you'll get a pt-report.txt showing the fluctuations in the text size.
|
---|
| 10 | #
|
---|
| 11 |
|
---|
| 12 | #
|
---|
[69111] | 13 | # Copyright (C) 2010-2017 Oracle Corporation
|
---|
[25851] | 14 | #
|
---|
| 15 | # This file is part of VirtualBox Open Source Edition (OSE), as
|
---|
| 16 | # available from http://www.virtualbox.org. This file is free software;
|
---|
| 17 | # you can redistribute it and/or modify it under the terms of the GNU
|
---|
| 18 | # General Public License (GPL) as published by the Free Software
|
---|
| 19 | # Foundation, in version 2 as it comes in the "COPYING" file of the
|
---|
| 20 | # VirtualBox OSE distribution. VirtualBox OSE is distributed in the
|
---|
| 21 | # hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
|
---|
| 22 | #
|
---|
| 23 |
|
---|
| 24 | set -e
|
---|
| 25 | set -x
|
---|
| 26 |
|
---|
| 27 | BINDIR="../../../out/linux.amd64/release/bin/"
|
---|
| 28 | DLLEXT="so"
|
---|
| 29 | HEADER="../../../include/VBox/cpum.h"
|
---|
| 30 | REPORT="pt-report.txt"
|
---|
| 31 |
|
---|
| 32 | test -e ${HEADER}.bak || kmk_cp $HEADER ${HEADER}.bak
|
---|
| 33 | NAMES=`kmk_sed -e '/EXPERIMENT_PURE/!d' -e '/^#/d' -e 's/^[^()]*([^()]*)[[:space:]]*\([^() ]*\)(.*$/\1/' ${HEADER}.bak `
|
---|
| 34 | echo NAMES=$NAMES
|
---|
| 35 |
|
---|
| 36 |
|
---|
| 37 | #
|
---|
| 38 | # baseline
|
---|
| 39 | #
|
---|
| 40 | kmk_sed -e 's/EXPERIMENT_PURE//' ${HEADER}.bak --output ${HEADER}
|
---|
| 41 | kmk KBUILD_TYPE=release VBoxVMM VMMR0 VMMGC
|
---|
| 42 | size ${BINDIR}/VMMR0.r0 ${BINDIR}/VMMGC.gc ${BINDIR}/VBoxVMM.${DLLEXT} > pt-baseline.txt
|
---|
| 43 |
|
---|
| 44 | exec < "pt-baseline.txt"
|
---|
| 45 | read buf # ignore
|
---|
| 46 | read buf; baseline_r0=`echo $buf | kmk_sed -e 's/^[[:space:]]*\([^[[:space:]]*\).*$/\1/' `
|
---|
| 47 | read buf; baseline_rc=`echo $buf | kmk_sed -e 's/^[[:space:]]*\([^[[:space:]]*\).*$/\1/' `
|
---|
| 48 | read buf; baseline_r3=`echo $buf | kmk_sed -e 's/^[[:space:]]*\([^[[:space:]]*\).*$/\1/' `
|
---|
| 49 |
|
---|
| 50 | kmk_cp -f "pt-baseline.txt" "${REPORT}"
|
---|
| 51 | kmk_printf -- "\n" >> "${REPORT}"
|
---|
| 52 | kmk_printf -- "%7s %7s %7s Name\n" "VMMR0" "VMMGC" "VBoxVMM" >> "${REPORT}"
|
---|
| 53 | kmk_printf -- "-------------------------------\n" >> "${REPORT}"
|
---|
| 54 | kmk_printf -- "%7d %7d %7d baseline\n" ${baseline_r0} ${baseline_rc} ${baseline_r3} >> "${REPORT}"
|
---|
| 55 |
|
---|
| 56 | #
|
---|
| 57 | # Now, do each of the names.
|
---|
| 58 | #
|
---|
| 59 | for name in $NAMES;
|
---|
| 60 | do
|
---|
| 61 | kmk_sed \
|
---|
| 62 | -e '/'"${name}"'/s/EXPERIMENT_PURE/__attribute__((pure))/' \
|
---|
| 63 | -e 's/EXPERIMENT_PURE//' \
|
---|
| 64 | ${HEADER}.bak --output ${HEADER}
|
---|
| 65 | kmk KBUILD_TYPE=release VBoxVMM VMMR0 VMMGC
|
---|
| 66 | size ${BINDIR}/VMMR0.r0 ${BINDIR}/VMMGC.gc ${BINDIR}/VBoxVMM.${DLLEXT} > "pt-${name}.txt"
|
---|
| 67 |
|
---|
| 68 | exec < "pt-${name}.txt"
|
---|
| 69 | read buf # ignore
|
---|
| 70 | read buf; cur_r0=`echo $buf | kmk_sed -e 's/^[[:space:]]*\([^[[:space:]]*\).*$/\1/' `
|
---|
| 71 | read buf; cur_rc=`echo $buf | kmk_sed -e 's/^[[:space:]]*\([^[[:space:]]*\).*$/\1/' `
|
---|
| 72 | read buf; cur_r3=`echo $buf | kmk_sed -e 's/^[[:space:]]*\([^[[:space:]]*\).*$/\1/' `
|
---|
| 73 | kmk_printf -- "%7d %7d %7d ${name}\n" \
|
---|
| 74 | `kmk_expr ${baseline_r0} - ${cur_r0} ` \
|
---|
| 75 | `kmk_expr ${baseline_rc} - ${cur_rc} ` \
|
---|
| 76 | `kmk_expr ${baseline_r3} - ${cur_r3} ` \
|
---|
| 77 | >> "${REPORT}"
|
---|
| 78 | done
|
---|
| 79 |
|
---|
| 80 | # clean up
|
---|
| 81 | kmk_mv -f ${HEADER}.bak ${HEADER}
|
---|
| 82 |
|
---|
| 83 |
|
---|
| 84 |
|
---|