1#!/bin/sh 2# 3# Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. 4# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5# 6# This code is free software; you can redistribute it and/or modify it 7# under the terms of the GNU General Public License version 2 only, as 8# published by the Free Software Foundation. 9# 10# This code is distributed in the hope that it will be useful, but WITHOUT 11# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13# version 2 for more details (a copy is included in the LICENSE file that 14# accompanied this code). 15# 16# You should have received a copy of the GNU General Public License version 17# 2 along with this work; if not, write to the Free Software Foundation, 18# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19# 20# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 21# or visit www.oracle.com if you need additional information or have any 22# questions. 23# 24 25########################################################################################### 26# This is a helper script to evaluate nashorn with optimistic types 27# it produces a flight recording for every run, and uses the best 28# known flags for performance for the current configration 29########################################################################################### 30 31# Flags to enable assertions, we need the system assertions too, since 32# this script runs Nashorn in the BCP to override any nashorn.jar that might 33# reside in your $JAVA_HOME/jre/lib/ext/nashorn.jar 34# 35ENABLE_ASSERTIONS_FLAGS="-ea -esa" 36 37# Flags to instrument lambdaform computation, caching, interpretation and compilation 38# Default compile threshold for lambdaforms is 30 39# 40#LAMBDAFORM_FLAGS="\ 41# -Djava.lang.invoke.MethodHandle.COMPILE_THRESHOLD=3 \ 42# -Djava.lang.invoke.MethodHandle.DUMP_CLASS_FILES=true \ 43# -Djava.lang.invoke.MethodHandle.TRACE_METHOD_LINKAGE=true \ 44# -Djava.lang.invoke.MethodHandle.TRACE_INTERPRETER=true" 45 46# Flags to run trusted tests from the Nashorn test suite 47# 48#TRUSTED_TEST_FLAGS="\ 49#-Djava.security.manager \ 50#-Djava.security.policy=../build/nashorn.policy -Dnashorn.debug" 51 52# Testing out new code optimizations using the generic hotspot "new code" parameter 53# 54#USE_NEW_CODE_FLAGS=-XX:+UnlockDiagnosticVMOptions -XX:+UseNewCode 55 56# 57#-Dnashorn.typeInfo.disabled=false \ 58# and for Nashorn options: 59# --class-cache-size=0 --persistent-code-cache=false 60 61# Unique timestamped file name for JFR recordings. For JFR, we also have to 62# crank up the stack cutoff depth to 1024, because of ridiculously long lambda form 63# stack traces. 64# 65# It is also recommended that you go into $JAVA_HOME/jre/lib/jfr/default.jfc and 66# set the "method-sampling-interval" Normal and Maximum sample time as low as you 67# can go (10 ms on most platforms). The default is normally higher. The increased 68# sampling overhead is usually negligible for Nashorn runs, but the data is better 69 70if [ -z $JFR_FILENAME ]; then 71 JFR_FILENAME="./nashorn_$(date|sed "s/ /_/g"|sed "s/:/_/g").jfr" 72fi 73 74# Flight recorder 75# 76# see above - already in place, copy the flags down here to disable 77ENABLE_FLIGHT_RECORDER_FLAGS="\ 78 -XX:+UnlockCommercialFeatures \ 79 -XX:+FlightRecorder \ 80 -XX:FlightRecorderOptions=defaultrecording=true,disk=true,dumponexit=true,dumponexitpath=$JFR_FILENAME,stackdepth=1024" 81 82# Type specialization and math intrinsic replacement should be enabled by default in 8u20 and nine, 83# keeping this flag around for experimental reasons. Replace + with - to switch it off 84# 85#ENABLE_TYPE_SPECIALIZATION_FLAGS=-XX:+UseTypeSpeculation 86 87# Same with math intrinsics. They should be enabled by default in 8u20 and 9, so 88# this disables them if needed 89# 90#DISABLE_MATH_INTRINSICS_FLAGS=-XX:-UseMathExactIntrinsics 91 92# Add timing to time the compilation phases. 93#ENABLE_TIME_FLAGS=--log=time 94 95# Add ShowHiddenFrames to get lambda form internals on the stack traces 96#ENABLE_SHOW_HIDDEN_FRAMES_FLAGS=-XX:+ShowHiddenFrames 97 98# Add print optoassembly to get an asm dump. This requires 1) a debug build, not product, 99# That tired compilation is switched off, for C2 only output and that the number of 100# compiler threads is set to 1 for determinsm. 101# 102#PRINT_ASM_FLAGS=-XX:+PrintOptoAssembly -XX:-TieredCompilation -XX:CICompilerCount=1 \ 103 104# Tier compile threasholds. Default value is 10. (1-100 is useful for experiments) 105#TIER_COMPILATION_THRESHOLD_FLAGS=-XX:IncreaseFirstTierCompileThresholdAt=10 106 107# Directory where to look for nashorn.jar in a dist folder. The default is "..", assuming 108# that we run the script from the make dir 109DIR=.. 110NASHORN_JAR=$DIR/dist/nashorn.jar 111 112 113# The built Nashorn jar is placed first in the bootclasspath to override the JDK 114# nashorn.jar in $JAVA_HOME/jre/lib/ext. Thus, we also need -esa, as assertions in 115# nashorn count as system assertions in this configuration 116 117# Type profiling default level is 111, 222 adds some compile time, but is faster 118 119$JAVA_HOME/bin/java \ 120$ENABLE_ASSERTIONS_FLAGS \ 121$LAMBDAFORM_FLAGS \ 122$TRUSTED_FLAGS \ 123$USE_NEW_CODE_FLAGS \ 124$ENABLE_SHOW_HIDDEN_FRAMES_FLAGS \ 125$ENABLE_FLIGHT_RECORDER_FLAGS \ 126$ENABLE_TYPE_SPECIALIZATION_FLAGS \ 127$TIERED_COMPILATION_THRESOLD_FLAGS \ 128$DISABLE_MATH_INTRINSICS_FLAGS \ 129$PRINT_ASM_FLAGS \ 130-Xbootclasspath/p:$NASHORN_JAR \ 131-Xms2G -Xmx2G \ 132-XX:TypeProfileLevel=222 \ 133-cp $CLASSPATH:../build/test/classes/ \ 134jdk.nashorn.tools.Shell $ENABLE_TIME_FLAGS ${@} 135 136 137