| #!/bin/bash |
| # |
| # Copyright (C) 2017 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Enable lock contention logging. |
| if [[ "x$ART_DEFAULT_GC_TYPE" = xGSS ]]; then |
| # NonMovingAlloc operations fail an assertion with the Generational |
| # Semi-Space (GSS) collector (see b/72738921); disable them for now |
| # by explicitly assigning frequencies to operations when the GSS |
| # collector is used. |
| # |
| # Note: The trick to use command substitution to have comments within |
| # a multi-line command is from https://stackoverflow.com/a/12797512. |
| ${RUN} --runtime-option -Xlockprofthreshold:10 "${@}" Main \ |
| -oom:0.005 `# 1/200` \ |
| -sigquit:0.095 `# 19/200` \ |
| -alloc:0.225 `# 45/200` \ |
| -largealloc:0.05 `# 10/200` \ |
| -nonmovingalloc:0.0 `# 0/200` \ |
| -stacktrace:0.1 `# 20/200` \ |
| -exit:0.225 `# 45/200` \ |
| -sleep:0.125 `# 25/200` \ |
| -timedwait:0.05 `# 10/200` \ |
| -wait:0.075 `# 15/200` \ |
| -queuedwait:0.05 `# 10/200` |
| else |
| ${RUN} --runtime-option -Xlockprofthreshold:10 "${@}" |
| fi |
| return_status1=$? |
| |
| # Run locks-only mode with stack-dump lock profiling. Reduce the number of total operations from |
| # the default 1000 to 100. |
| ${RUN} --runtime-option -Xlockprofthreshold:10 --runtime-option -Xstackdumplockprofthreshold:20 \ |
| "${@}" Main --locks-only -o 100 |
| return_status2=$? |
| |
| # Make sure we don't silently ignore an early failure. |
| (exit $return_status1) && (exit $return_status2) |