changeset 50827:4fac3c99487d

8199255: [TESTBUG] Open source VM testbase default methods tests Summary: Open sourced default method tests Reviewed-by: ccheung, iignatyev, erikj
author mseledtsov
date Wed, 23 May 2018 17:09:49 -0700
parents 9a87afc49148
children 317a8688db78
files make/test/JtregNativeHotspot.gmk test/hotspot/jtreg/TEST.groups test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/AccessibilityFlagsTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/BasicTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/ConflictingDefaultsTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/DefaultVsAbstractTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/MethodResolutionTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/ObjectMethodOverridesTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/PrivateMethodsTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/README test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/RedefineTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/StaticMethodsTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/StressTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/SuperCallTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/AccessibilityFlags_v52_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v49_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v50_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v51_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Basic_v52_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v49_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v50_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v51_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ConflictingDefaults_v52_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v49_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v50_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v51_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/DefaultVsAbstract_v52_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v49_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v50_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v51_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/MethodResolution_v52_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ObjectMethodOverrides_v52_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ObjectMethodOverrides_v52_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ObjectMethodOverrides_v52_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ObjectMethodOverrides_v52_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ObjectMethodOverrides_v52_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/ObjectMethodOverrides_v52_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v49_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v50_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v51_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/PrivateMethods_v52_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v49_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v50_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v51_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Redefine_v52_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v49_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v50_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v51_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/StaticMethods_v52_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Stress_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/Stress_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_none_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_none_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_none_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_none_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_none_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_none_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_strict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_strict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_strict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_strict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_strict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_strict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_sync_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_sync_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_sync_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_sync_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_sync_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_sync_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_syncstrict_direct_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_syncstrict_direct_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_syncstrict_invoke_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_syncstrict_invoke_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_syncstrict_reflect_noredefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/scenarios/SuperCall_v52_syncstrict_reflect_redefine/TestDescription.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/BuildJar.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/ClassFileGenerator.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/Constants.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/DefMethTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/DefMethTestFailure.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/ExecutionMode.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/MemoryClassLoader.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/Printer.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/TestContext.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/Util.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/annotation/Crash.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/annotation/KnownFailure.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/annotation/NotApplicableFor.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/annotation/NotTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/builder/AccessFlag.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/builder/Builder.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/builder/ClassBuilder.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/builder/ClassMethodBuilder.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/builder/ConcreteClassBuilder.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/builder/InterfaceBuilder.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/builder/MethodBuilder.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/builder/MethodType.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/builder/TestBuilder.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/builder/TestBuilderFactory.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/builder/TestExecutor.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/builder/TesterBuilder.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/AbstractVisitor.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/Clazz.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/ClazzImpl.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/ClazzLazyAdapter.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/ConcreteClass.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/ConcreteClassImpl.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/ConcreteClassLazyAdapter.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/Element.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/Interface.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/InterfaceImpl.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/InterfaceLazyAdapter.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/ParamValueExtractor.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/Tester.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/Visitor.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/AbstractMethod.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/ConcreteMethod.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/DefaultMethod.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/Method.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/body/CallMethod.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/body/EmptyBody.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/body/MethodBody.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/body/ReturnIntBody.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/body/ReturnNewInstanceBody.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/body/ReturnNullBody.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/body/ThrowExBody.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/param/DoubleParam.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/param/FloatParam.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/param/IntParam.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/param/LongParam.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/param/NewInstanceParam.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/param/NullParam.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/param/Param.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/param/StringParam.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/result/IntResult.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/result/Result.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/result/ResultIgnore.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/data/method/result/ThrowExResult.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/executor/AbstractReflectionTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/executor/GeneratedTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/executor/MHInvokeWithArgsTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/executor/ReflectionTest.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/executor/TestExecutor.java test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/libredefineClasses.c test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/redefineClasses.c test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/shared/retransform.mf
diffstat 781 files changed, 44946 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/make/test/JtregNativeHotspot.gmk	Thu May 24 07:20:10 2018 +0800
+++ b/make/test/JtregNativeHotspot.gmk	Wed May 23 17:09:49 2018 -0700
@@ -74,6 +74,11 @@
     -I$(VM_TESTBASE_DIR)/nsk/share/native \
     -I$(VM_TESTBASE_DIR)/nsk/share/jni
 
+RUNTIME_DEFMETH_INCLUDES := \
+    -I$(TOPDIR)/test/hotspot/jtreg/vmTestbase/nsk/share/jni \
+    -I$(TOPDIR)/test/hotspot/jtreg/vmTestbase/nsk/share/native \
+    -I$(TOPDIR)/test/hotspot/jtreg/vmTestbase/nsk/share/jvmti
+
 NSK_SHARE_LOCKS_INCLUDES := \
     -I$(VM_TESTBASE_DIR)/nsk/share/native \
     -I$(VM_TESTBASE_DIR)/nsk/share/locks
@@ -124,6 +129,8 @@
 BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libLockingThreads := $(NSK_MONITORING_INCLUDES)
 BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libStackTraceController := $(NSK_MONITORING_INCLUDES)
 
+BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libredefineClasses := $(RUNTIME_DEFMETH_INCLUDES)
+
 BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libforceEarlyReturn005a := $(NSK_JDI_INCLUDES)
 
 BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libMonitorEnterExecutor := $(NSK_SHARE_JDI_INCLUDES)
@@ -183,6 +190,7 @@
     BUILD_HOTSPOT_JTREG_LIBRARIES_LDFLAGS_libtest-rwx := -z execstack
     BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libstepBreakPopReturn := -lpthread
     BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libIndyRedefineClass := -lpthread
+    BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libredefineClasses := -lpthread
     BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exeinvoke := -ljvm -lpthread
     BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exestack-gap := -ljvm -lpthread
     BUILD_TEST_exeinvoke_exeinvoke.c_OPTIMIZATION := NONE
--- a/test/hotspot/jtreg/TEST.groups	Thu May 24 07:20:10 2018 +0800
+++ b/test/hotspot/jtreg/TEST.groups	Wed May 23 17:09:49 2018 -0700
@@ -588,6 +588,12 @@
   vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/noAllocationTest_proxy_default/TestDescription.java \
   vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes/noAllocationTest_proxy_custom/TestDescription.java
 
+
+# Tests for default method implementation
+vmTestbase_vm_defmeth = \
+  vmTestbase/vm/runtime/defmeth
+
+
 # JDI tests
 vmTestbase_nsk_jdi = \
   vmTestbase/nsk/jdi
@@ -1283,4 +1289,3 @@
 # JDB tests
 vmTestbase_nsk_jdb = \
   vmTestbase/nsk/jdb
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/AccessibilityFlagsTest.java	Wed May 23 17:09:49 2018 -0700
@@ -0,0 +1,408 @@
+/*
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package vm.runtime.defmeth;
+
+import nsk.share.test.TestBase;
+import static jdk.internal.org.objectweb.asm.Opcodes.*;
+import vm.runtime.defmeth.shared.DefMethTest;
+import vm.runtime.defmeth.shared.data.*;
+import vm.runtime.defmeth.shared.data.method.body.EmptyBody;
+import vm.runtime.defmeth.shared.builder.TestBuilder;
+
+/*
+ * Test allowed combinations of access flags on methods in interfaces.
+ * Based on assertions from JVMS8.
+ */
+public class AccessibilityFlagsTest extends DefMethTest {
+    public static void main(String[] args) {
+        TestBase.runTest(new AccessibilityFlagsTest(), args);
+    }
+
+    /* ====================================================================== */
+
+    // Methods of interfaces may set any of the flags in Table 4.5 except
+    // ACC_PROTECTED, ACC_FINAL, ACC_NATIVE, and ACC_SYNCHRONIZED (9.4);
+
+    /**
+     * interface I { protected void m(); }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     */
+    public void testProtectedMethodAbstract() {
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_PROTECTED));
+
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_PROTECTED | ACC_PUBLIC));
+
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_PROTECTED | ACC_PRIVATE));
+
+    }
+
+    /**
+     * interface I { protected void m() default {}; }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     */
+    public void testProtectedMethodDefault() {
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_PROTECTED));
+
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_PROTECTED | ACC_PUBLIC));
+
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_PROTECTED | ACC_PRIVATE));
+    }
+
+    /**
+     * interface I { final void m() default {}; }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     */
+    public void testFinalMethodDefault() {
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_FINAL));
+
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_FINAL | ACC_PUBLIC));
+
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_FINAL | ACC_PRIVATE));
+    }
+
+    /**
+     * interface I { native void m() default {}; }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     */
+    public void testNativeMethodDefault() {
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_NATIVE));
+
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_NATIVE | ACC_PUBLIC));
+
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_NATIVE | ACC_PRIVATE));
+    }
+
+
+    /**
+     * interface I { synchronized void m(); }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     */
+    public void testSynchronizedMethodAbstract() {
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_SYNCHRONIZED));
+
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_SYNCHRONIZED | ACC_PUBLIC));
+
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_SYNCHRONIZED | ACC_PRIVATE));
+    }
+
+    /**
+     * interface I { synchronized void m() default {}; }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     */
+    public void testSynchronizedMethodDefault() {
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_SYNCHRONIZED));
+
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_SYNCHRONIZED | ACC_PUBLIC));
+
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_SYNCHRONIZED | ACC_PRIVATE));
+    }
+
+    /* ===================================================================== */
+
+    // [methods of interfaces] must have exactly one of the ACC_PUBLIC or ACC_PRIVATE flags set.
+
+    /**
+     * interface I { private void m() default {}; }
+     *
+     * TEST: ClassLoader.loadClass("I") == succeeds
+    */
+    public void testPrivateMethodDefault() {
+        loadClass(
+                createDefaultMethodInterface(ACC_PRIVATE));
+    }
+
+    /**
+     * interface I { public void m(); }
+     *
+     * TEST: ClassLoader.loadClass("I") == succeeds
+     */
+    public void testPublicMethodAbstract() {
+        loadClass(
+                createAbstractMethodInterface(ACC_PUBLIC));
+    }
+
+    /**
+     * interface I { public void m() default {}; }
+     *
+     */
+    public void testPublicMethodDefault() {
+        loadClass(
+                createDefaultMethodInterface(ACC_PUBLIC));
+    }
+
+    /**
+     * interface I { private public void m(); }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     */
+    public void testPrivatePublicMethodAbstract() {
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_PUBLIC | ACC_PRIVATE));
+    }
+
+    /**
+     * interface I { private public void m() default {}; }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     */
+    public void testPrivatePublicMethodDefault() {
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_PUBLIC | ACC_PRIVATE));
+    }
+
+    /* ===================================================================== */
+
+    // Methods of classes may set any of the flags in Table 4.5 except
+    // ACC_PROTECTED, ACC_FINAL, ACC_NATIVE, and ACC_SYNCHRONIZED (9.4);
+    // they must have exactly one of the ACC_PUBLIC or ACC_PRIVATE flags set.
+    //
+    // The following flags are allowed:
+    //    ACC_PUBLIC    0x0001  Declared public; may be accessed from outside its package.
+    //    ACC_PRIVATE   0x0002  Declared private; accessible only within the defining class.
+    //    ACC_STATIC    0x0008  Declared static.
+    //    ACC_BRIDGE    0x0040  A bridge method, generated by the compiler.
+    //    ACC_VARARGS   0x0080  Declared with variable number of arguments.
+    //    ACC_STRICT    0x0800  Declared strictfp; floating-point mode is FP-strict.
+    //    ACC_SYNTHETIC 0x1000  Declared synthetic; not present in the source code.
+
+    /**
+     * interface I { static void m() default {}; }
+     *
+     * TEST: ClassLoader.loadClass("I") == succeeds
+    */
+    public void testStaticMethodDefault() {
+        loadClass(
+                createDefaultMethodInterface(ACC_STATIC | ACC_PUBLIC));
+        loadClass(
+                createDefaultMethodInterface(ACC_STATIC | ACC_PRIVATE));
+    }
+
+    /**
+     * interface I { strictfp void m() default {}; }
+     *
+     * TEST: ClassLoader.loadClass("I") == succeeds
+     */
+    public void testStrictFPMethodDefault() {
+        loadClass(
+                createDefaultMethodInterface(ACC_STRICT | ACC_PUBLIC));
+        loadClass(
+                createDefaultMethodInterface(ACC_STRICT | ACC_PRIVATE));
+    }
+
+    /* =============================================================================== */
+
+    // If a specific method of a class or interface has its ACC_ABSTRACT flag set,
+    // it must not have any of its ACC_FINAL, ACC_NATIVE, ACC_PRIVATE, ACC_STATIC, ACC_STRICT,
+    // or ACC_SYNCHRONIZED flags set (8.4.3.1, 8.4.3.3, 8.4.3.4).
+
+    /**
+     * interface I      {          final void m(); }
+     * abstract class C { abstract final void m(); }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     * TEST: ClassLoader.loadClass("C") ==> ClassFormatError
+     */
+    public void testFinalMethodAbstract() {
+        /* interface I */
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_FINAL));
+
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_FINAL | ACC_PUBLIC));
+
+        /* abstract class C */
+        expectClassFormatError(
+                createAbstractMethodClass(ACC_FINAL));
+    }
+
+    /**
+     * interface I      { native void m(); }
+     * interface K      { native void m() default {}; }
+     * abstract class C { abstract native m(); }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     * TEST: ClassLoader.loadClass("K") ==> ClassFormatError
+     * TEST: ClassLoader.loadClass("C") ==> ClassFormatError
+     */
+    public void testNativeMethodAbstract() {
+        /* interface I */
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_NATIVE));
+
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_NATIVE | ACC_PUBLIC));
+
+        /* interface K */
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_NATIVE));
+
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_NATIVE | ACC_PUBLIC));
+
+        /* abstract class C */
+        expectClassFormatError(
+                createAbstractMethodClass(ACC_NATIVE));
+    }
+
+    /**
+     * interface I      {          private void m(); }
+     * abstract class C { abstract private void m(); }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     * TEST: ClassLoader.loadClass("C") ==> ClassFormatError
+     */
+    public void testPrivateMethodAbstract() {
+        /* interface I */
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_PRIVATE));
+
+        /* abstract class C */
+        expectClassFormatError(
+                createAbstractMethodClass(ACC_PRIVATE));
+    }
+
+    /**
+     * interface I      {          static void m(); }
+     * abstract class C { abstract static void m(); }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     * TEST: ClassLoader.loadClass("C") ==> ClassFormatError
+     */
+    public void testStaticMethodAbstract() {
+        /* interface I */
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_STATIC));
+
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_STATIC | ACC_PUBLIC));
+
+        /* abstract class C */
+        expectClassFormatError(
+                createAbstractMethodClass(ACC_STATIC));
+    }
+
+    /**
+     * interface I      {          strictfp void m(); }
+     * abstract class C { abstract strictfp void m(); }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     * TEST: ClassLoader.loadClass("C") ==> ClassFormatError
+     */
+    public void testStrictFPMethodAbstract() {
+        /* interface I */
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_STRICT));
+
+        expectClassFormatError(
+                createAbstractMethodInterface(ACC_STRICT | ACC_PUBLIC));
+
+        /* abstract class C */
+        expectClassFormatError(
+                createAbstractMethodClass(ACC_STRICT));
+    }
+
+    /* =============================================================================== */
+
+    /**
+     * interface I { abstract void m() default {}; }
+     *
+     * TEST: ClassLoader.loadClass("I") ==> ClassFormatError
+     */
+    public void testAbstractMethodDefault() {
+        expectClassFormatError(
+                createDefaultMethodInterface(ACC_ABSTRACT));
+    }
+
+    /* ====================================================================== */
+
+    // Helper methods
+    private Interface createAbstractMethodInterface(int acc) {
+        return factory.getBuilder()
+            .intf("I")
+                .abstractMethod("m", "()V").flags(acc)
+                .build()
+            .build();
+    }
+
+    private Clazz createAbstractMethodClass(int acc) {
+        return factory.getBuilder()
+            .clazz("I")
+                .abstractMethod("m", "()V").flags(acc)
+                .build()
+            .build();
+    }
+
+    private Interface createDefaultMethodInterface(int acc) {
+        return factory.getBuilder()
+            .intf("I")
+                .defaultMethod("m", "()V").flags(acc)
+                    .body(new EmptyBody())
+                .build()
+            .build();
+    }
+
+    private void expectException(Clazz clz, Class<? extends Throwable> exc) {
+        TestBuilder b = factory.getBuilder()
+                .register(clz);
+
+        b.test().loadClass(clz).throws_(exc).done()
+        .run();
+    }
+
+    private void loadClass(Clazz clz) {
+        TestBuilder b = factory.getBuilder()
+                .register(clz);
+
+        b.test().loadClass(clz).ignoreResult().done()
+        .run();
+    }
+
+    private void expectClassFormatError(Clazz clz) {
+        expectException(clz, ClassFormatError.class);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/BasicTest.java	Wed May 23 17:09:49 2018 -0700
@@ -0,0 +1,381 @@
+/*
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package vm.runtime.defmeth;
+
+import nsk.share.TestFailure;
+import nsk.share.test.TestBase;
+import vm.runtime.defmeth.shared.MemoryClassLoader;
+import vm.runtime.defmeth.shared.annotation.KnownFailure;
+import vm.runtime.defmeth.shared.annotation.NotApplicableFor;
+import vm.runtime.defmeth.shared.builder.TestBuilder;
+import vm.runtime.defmeth.shared.data.*;
+import static jdk.internal.org.objectweb.asm.Opcodes.*;
+import vm.runtime.defmeth.shared.DefMethTest;
+
+import java.util.Map;
+
+import static vm.runtime.defmeth.shared.ExecutionMode.*;
+
+/**
+ * Basic tests on some of the assertions from JVMS.
+ */
+public class BasicTest extends DefMethTest {
+
+    public static void main(String[] args) {
+        TestBase.runTest(new BasicTest(), args);
+    }
+
+    /*
+     * JVMS 6.5 invokevirtual
+     *
+     * ...
+     *
+     * Runtime Exceptions
+     *
+     * Otherwise, if the resolved method is not signature polymorphic:
+     *
+     */
+
+    /*
+     * ...
+     *
+     * If the resolved method is declared in an interface and the class of
+     * objectref does not implement the resolved interface, invokevirtual throws
+     * an IncompatibleClassChangeError.
+     */
+    @KnownFailure(modes = {
+        REFLECTION,                           // throws IAE
+        INVOKE_GENERIC, INVOKE_WITH_ARGS})    // throws ClassCastException
+    public void testInterfaceNotImplemented() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()V").emptyBody().build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").build();
+
+        Class expectedClass;
+        if (factory.getExecutionMode().equals("REFLECTION")) {
+            expectedClass = IllegalArgumentException.class;
+        } else if (factory.getExecutionMode().equals("INVOKE_WITH_ARGS")) {
+            // Notes from JDK-8029926 which details reasons behind CCE.
+        // The code below demonstrates the use of a MethodHandle
+            // of kind REF_invokeInterface pointing to method I.m.
+            // Because 'invoke' is called, this MethodHandle is effectively
+            // wrapped in the type adaptations necessary to accept a C
+            // as the first argument. ***Before we even get to the point
+            // of the invokeinterface call to I.m***, the adaptation
+            // code must run, and that is where the ClassCastException occurs.
+            // This exception can be thrown from code that is cleanly
+            // compiled and does no bytecode generation, so an ICCE would
+        // be inappropriate since no classes are changed.
+            expectedClass = ClassCastException.class;
+        } else {
+            expectedClass = IncompatibleClassChangeError.class;
+        }
+
+        b.test().callSite(I, C, "m", "()V").throws_(expectedClass).done()
+
+        .run();
+    }
+
+    /*
+     * ...
+     *
+     * Otherwise, if no method matching the resolved name and descriptor is
+     * selected, invokevirtual throws an NoSuchMethodError.
+     *
+     * ...
+     */
+    @KnownFailure(modes = {
+        DIRECT, REFLECTION, INVOKE_WITH_ARGS, // NSME, instead of AME
+        INVOKE_EXACT, INVOKE_GENERIC, INDY})        // IncompatibleClassChangeError, instead of AME
+    public void testNoMatch() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "(Ljava/lang/Object;)V").emptyBody().build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().callSite(C, C, "m",  "()I").throws_(NoSuchMethodError.class).done()
+         .test().callSite(C, C, "m1", "()V").throws_(NoSuchMethodError.class).done()
+         .test().callSite(C, C, "m", "(I)V").throws_(NoSuchMethodError.class).done()
+
+        .run();
+    }
+
+    /*
+     * ...
+     *
+     * 8025604: Updated specification text for both 5.4.3.3 and 5.4.4.4
+     * "Otherwise, if any superinterface of C declares a method with the name and
+     * descriptor specified by the method reference that has set neither
+     * its ACC_PRIVATE flag nor its ACC_STATIC flag, one of these is arbitrarily
+     * chosen and method lookup succeeds."
+     * If method lookup fails, method resolution throws a NoSuchMethodError
+     *
+     * ...
+     */
+    public void testNonPublic() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m1", "()V").private_().emptyBody().build()
+                .defaultMethod("m2", "()I").private_().returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().callSite(C, C, "m1",  "()V").throws_(NoSuchMethodError.class).done()
+         .test().callSite(C, C, "m2",  "()I").throws_(NoSuchMethodError.class).done()
+
+        .run();
+    }
+
+    /*
+     * Default method override w/ non-public concrete method
+     *
+     * interface I { void m() default {} }
+     * class C implements I {
+     *   [private/package-private/protected]
+     *   void m() {}
+     * }
+     *
+     */
+    @KnownFailure(modes = {INVOKE_EXACT, INVOKE_GENERIC, INVOKE_WITH_ARGS, INDY}) // NPE, instead of IAE
+    public void testNonPublicOverride() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m","()V").emptyBody().build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I)
+                .concreteMethod("m", "()V").private_().emptyBody().build()
+            .build();
+
+        ConcreteClass D = b.clazz("D").implement(I)
+                .concreteMethod("m", "()V").protected_().emptyBody().build()
+            .build();
+
+         ConcreteClass E = b.clazz("E").implement(I)
+                .concreteMethod("m", "()V").package_private().emptyBody().build()
+            .build();
+
+        b.test().callSite(I, C, "m", "()V").throws_(IllegalAccessError.class).done()
+         .test().callSite(I, D, "m", "()V").throws_(IllegalAccessError.class).done()
+         .test().callSite(I, E, "m", "()V").throws_(IllegalAccessError.class).done()
+
+        .run();
+    }
+
+
+    /**
+     * interface I {
+     *   static { throw new RE()}
+     *   public default void m() {}
+     * }
+     *
+     * class C implements I {}
+     *
+     * TEST: C c = new C(); ==> LinkageError
+     * Static initialization of class C will trigger
+     * I's static initialization due to I's default method.
+     */
+    public void testStaticInit() throws ClassNotFoundException {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("<clinit>", "()V")
+                    .flags(ACC_STATIC)
+                    .throw_(RuntimeException.class)
+                    .build()
+
+                .defaultMethod("m", "()V")
+                    .emptyBody().build()
+                .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().callSite(I, C, "m", "()V").throws_(LinkageError.class).done()
+
+        .run();
+    }
+
+    /**
+     * interface I {
+     *   static { throw new RE()}
+     *   private default void m() {}
+     * }
+     *
+     * class C implements I {}
+     *
+     * TEST: C c = new C(); ==> LinkageError
+     * Static initialization of class C will trigger
+     * I's static initialization due to I's private concrete method.
+     */
+    public void testStaticInitPrivate() throws ClassNotFoundException {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("<clinit>", "()V")
+                    .flags(ACC_STATIC)
+                    .throw_(RuntimeException.class)
+                    .build()
+
+                .defaultMethod("m", "()V")
+                    .flags(ACC_PRIVATE)
+                    .emptyBody().build()
+                .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        Class expectedClass;
+        if (factory.getExecutionMode().equals("REFLECTION")) {
+            expectedClass = NoSuchMethodException.class;
+        } else {
+            expectedClass = LinkageError.class;
+        }
+        b.test().callSite(I, C, "m", "()V").throws_(expectedClass).done()
+
+        .run();
+    }
+
+    /**
+     * interface I {
+     *   static { throw new RE()}
+     * }
+     * interface J {
+     *   public default int m() { return 1}
+     *
+     * class C implements I,J {}
+     *
+     * TEST: C c = new C()
+     *       c.m() returns 1
+     * Static initialization of class C will not trigger
+     * I's static initialization since I has no concrete methods.
+     */
+    public void testNotStaticInitNoDefault() throws ClassNotFoundException {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("<clinit>", "()V")
+                    .flags(ACC_STATIC)
+                    .throw_(RuntimeException.class)
+                    .build()
+                 .build();
+
+        Interface J = b.intf("J")
+                .defaultMethod("m", "()I")
+                    .returns(1).build()
+                .build();
+
+        ConcreteClass C = b.clazz("C").implement(I,J).build();
+
+        b.test().callSite(C, C, "m", "()I").returns(1).done()
+
+        .run();
+    }
+
+    /*
+     * Example A.10
+     *
+     * Let L1 and L2 be class loaders with different interpretations of the type "A".
+     *
+     * Loaded by L1:
+     * public interface I { public default A m() { return null; } }
+     *
+     * Loaded by L2:
+     * public class C implements I {}
+     *
+     * TEST: I o = new C(); o.m() ==> LinkageError;
+     * TEST: C o = new C(); o.m() ==> LinkageError;
+     */
+    // disabling this test for REFLECTION and INVOKE for now until
+    // loader constraint issue associated with those modes has been resolved
+    @NotApplicableFor(modes = { REFLECTION, INVOKE_WITH_ARGS, INVOKE_EXACT, INVOKE_GENERIC, INDY })
+    public void testLoaderConstraint() throws Exception{
+        TestBuilder b = factory.getBuilder();
+
+        ConcreteClass A = b.clazz("A").build();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()LA;").returnsNewInstance(A).build()
+                .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().callSite(I, C, "m", "()LA;").throws_(LinkageError.class).done()
+         .test().callSite(C, C, "m", "()LA;").throws_(LinkageError.class).done()
+
+         .prepare(new TestBuilder.LoaderConstructor() {
+                @Override
+                public MemoryClassLoader construct(Map<String, byte[]> classFiles) {
+                    final byte[] cfI = classFiles.get("I");
+                    final byte[] cfC = classFiles.get("C");
+                    final byte[] cfA = classFiles.get("A");
+                    final byte[] cfT1 = classFiles.get("Test1_I_C_m");
+                    final byte[] cfT2 = classFiles.get("Test2_C_C_m");
+
+                    final ClassLoader l1 = new ClassLoader() {
+                        @Override
+                        protected Class<?> findClass(String name) throws ClassNotFoundException {
+                            switch (name) {
+                                case "I":
+                                    return defineClass(name, cfI, 0, cfI.length);
+                                case "A":
+                                    return defineClass(name, cfA, 0, cfA.length);
+                                default:
+                                    throw new ClassNotFoundException(name);
+                            }
+                        }
+                    };
+
+                    final MemoryClassLoader l2 = new MemoryClassLoader(classFiles) {
+                        @Override
+                        public Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
+                            if ("I".equals(name)) {
+                                return l1.loadClass(name);
+                            } else {
+                                return super.loadClass(name, resolve);
+                            }
+                        }
+                    };
+
+                    try {
+                        // Need to preload classes, otherwise A will be resolved in the same loader
+                        l1.loadClass("A"); l1.loadClass("I");
+                        l2.loadClass("A"); l2.loadClass("C");
+                    } catch (ClassNotFoundException e) {
+                        throw new TestFailure(e);
+                    }
+
+                    return l2;
+                }
+            }).run();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/ConflictingDefaultsTest.java	Wed May 23 17:09:49 2018 -0700
@@ -0,0 +1,590 @@
+/*
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package vm.runtime.defmeth;
+
+import nsk.share.test.TestBase;
+import vm.runtime.defmeth.shared.DefMethTest;
+import vm.runtime.defmeth.shared.annotation.KnownFailure;
+import vm.runtime.defmeth.shared.annotation.NotApplicableFor;
+import vm.runtime.defmeth.shared.data.*;
+import static vm.runtime.defmeth.shared.data.method.body.CallMethod.Invoke.*;
+import static vm.runtime.defmeth.shared.data.method.body.CallMethod.IndexbyteOp.*;
+import vm.runtime.defmeth.shared.builder.TestBuilder;
+import static vm.runtime.defmeth.shared.ExecutionMode.*;
+
+/**
+ * Tests on conflicting defaults.
+ *
+ * It is allowable to inherit a default through multiple paths (such as
+ * through a diamond-shaped interface hierarchy), but the resolution procedure
+ * is looking for a unique, most specific default-providing interface.
+ *
+ * If one default shadows  another (where a subinterface provides a different
+ * default for an extension method declared in a superinterface), then the less
+ * specific interface is pruned from consideration no matter where it appears
+ * in the inheritance hierarchy.  If two or more extended interfaces provide
+ * default implementations, and one is not a superinterface of the other, then
+ * neither is used and a linkage exception is thrown indicating conflicting
+ * default implementations.
+ */
+public class ConflictingDefaultsTest extends DefMethTest {
+    public static void main(String[] args) {
+        TestBase.runTest(new ConflictingDefaultsTest(), args);
+    }
+
+    /*
+     * Conflict
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J { int m() default { return 2; } }
+     * class C implements I, J {}
+     *
+     * TEST: C c = new C(); c.m() ==> ICCE
+     */
+    public void testConflict() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J")
+                .defaultMethod("m", "()I").returns(2).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I,J).build();
+
+        b.test().callSite(C, C, "m","()I")
+                .throws_(IncompatibleClassChangeError.class)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * Maximally-specific Default (0.6.3 spec change)
+     *
+     * interface I { int m(); }
+     * interface J { int m() default { return 2; } }
+     * class C implements I, J {}
+     *
+     * TEST: C c = new C(); c.m() return 2
+     */
+    public void testMaximallySpecificDefault() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        Interface J = b.intf("J")
+                .defaultMethod("m", "()I").returns(2).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I,J).build();
+
+        b.test().callSite(C, C, "m","()I")
+                .returns(2)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * Reabstract
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J extends I { int m(); }
+     * class C implements J {}
+     *
+     * TEST: C c = new C(); c.m() ==> AME
+     */
+    public void testReabstract() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J").extend(I)
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(J).build();
+
+        b.test().callSite(C, C, "m","()I")
+                .throws_(AbstractMethodError.class)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * Reabstract2
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J extends I { int m(); }
+     * class C implements J {}
+     * class D extends C { callSuper C.m}
+     *
+     * TEST: C c = new C(); c.m() ==> AME
+     * TEST: J j = new C(); j.m() ==> AME
+     * TEST: I i = new C(); i.m() ==> AME
+     * TEST: D d = new D(); d.m() ==> callSuper C.m ==> AME
+     */
+    public void testReabstract2() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J").extend(I)
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(J).build();
+        ConcreteClass D = b.clazz("D").extend(C)
+                .concreteMethod("m", "()I").callSuper(C, "m", "()I").build()
+            .build();
+
+        b.test().callSite(C, C, "m","()I")
+                .throws_(AbstractMethodError.class)
+            .done()
+         .test().callSite(J, C, "m","()I")
+                .throws_(AbstractMethodError.class)
+            .done()
+         .test().callSite(I, C, "m","()I")
+                .throws_(AbstractMethodError.class)
+            .done()
+         .test().callSite(D, D, "m","()I")
+                .throws_(AbstractMethodError.class)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * ReabstractConflictingDefaults
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J { int m() default { return 2; } }
+     * interface K extends I,J { int m(); }
+     * class A implements I,J {}
+     * class C extends A implements K {}
+     *
+     * TEST: A c = new C(); c.m() ==> AME
+     */
+    public void testReabstractConflictingDefaults() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J")
+                .defaultMethod("m", "()I").returns(2).build()
+            .build();
+
+        Interface K = b.intf("K").extend(I,J)
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        ConcreteClass A = b.clazz("A").implement(I,J).build();
+        ConcreteClass C = b.clazz("C").extend(A).implement(K).build();
+
+        b.test().callSite(A, C, "m","()I")
+                .throws_(AbstractMethodError.class)
+            .done()
+
+        .run();
+    }
+
+
+    /*
+     * ReabstractConflictingDefaultsInvokeInterface
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J { int m() default { return 2; } }
+     * interface K extends I,J { int m(); }
+     * interface L extends K { }
+     * class A implements I,J {}
+     * class C extends A implements K {}
+     * class D extends C implements L {}
+     *
+     * TEST: I i = new A(); i.m() ==> ICCE
+     * TEST: K k = new C(); k.m() ==> AME
+     * TEST: L l = new D(); l.m() ==> AME
+     */
+    public void testReabstractConflictingDefaultsInvokeInterface() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J")
+                .defaultMethod("m", "()I").returns(2).build()
+            .build();
+
+        Interface K = b.intf("K").extend(I,J)
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        Interface L = b.intf("L").extend(K)
+            .build();
+
+        ConcreteClass A = b.clazz("A").implement(I,J).build();
+        ConcreteClass C = b.clazz("C").extend(A).implement(K).build();
+        ConcreteClass D = b.clazz("D").extend(C).implement(L).build();
+
+        b.test().callSite(I, A, "m","()I")
+                .throws_(IncompatibleClassChangeError.class)
+            .done()
+         .test().callSite(K, C, "m","()I")
+                .throws_(AbstractMethodError.class)
+            .done()
+         .test().callSite(L, D, "m","()I")
+                .throws_(AbstractMethodError.class)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * ReabstractConflictingDefaultsSuper
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J { int m() default { return 2; } }
+     * interface K extends I,J { int m(); }
+     * interface L extends K { }
+     * class A implements I,J {}
+     * class C extends A implements K {}
+     * class D extends C implements L {int m() {callSuper A.m }
+     *
+     * TEST: I i = new A(); i.m() ==> ICCE
+     * TEST: K k = new C(); CallSuper k.m() ==> AME
+     * TEST: L l = new D(); l.m() ==> AME
+     */
+    public void testReabstractConflictingDefaultsSuper() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J")
+                .defaultMethod("m", "()I").returns(2).build()
+            .build();
+
+        Interface K = b.intf("K").extend(I,J)
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        Interface L = b.intf("L").extend(K)
+            .build();
+
+        ConcreteClass A = b.clazz("A").implement(I,J).build();
+        ConcreteClass C = b.clazz("C").extend(A).implement(K).build();
+        ConcreteClass D = b.clazz("D").extend(C).implement(L)
+                .concreteMethod("m", "()I").callSuper(A, "m", "()I").build()
+            .build();
+
+        b.test().callSite(I, A, "m","()I")
+                .throws_(IncompatibleClassChangeError.class)
+            .done()
+         .test().callSite(L, D, "m","()I")
+                .throws_(AbstractMethodError.class)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * testReabstractResolveMethod00705m2
+     *
+     * Test case for JDK-8027804: JCK resolveMethod test fails expecting AME
+     *
+     * This test is an extension of the JCK test resolveMethod00705m2
+     * with additional invoke* bytecodes specified for testing purposes.
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J implements I { int m(); }
+     * class A implements J,I {}
+     * class C extends A {}
+     *
+     * TEST: A a = new C(); a.m() ==> AME (invokevirtual)
+     *       C c = new C(); c.m() ==> AME (invokevirtual)
+     *       J j = new C(); j.m() ==> AME (invokeinterface)
+     *       I i = new C(); i.m() ==> AME (invokeinterface)
+     *       c.test_Cmethod_ISMR(); c.super.m() ==> AME (invokespecial MR)
+     *       a.test_Amethod_ISIMR(); j.super.m() ==> AME (invokespecial IMR)
+     *
+     *       For ver > 49, error will be AME
+     *       For ver = 49, error will be VE
+     */
+
+    @NotApplicableFor(modes = { REDEFINITION }) // Can't redefine a class that gets error during loading
+    public void testReabstractResolveMethod00705m2() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J").extend(I)
+            .abstractMethod("m", "()I").build()
+            .build();
+
+        ConcreteClass A = b.clazz("A").implement(J,I)
+                .concreteMethod("test_Amethod_ISIMR", "()V")
+                    .invoke(SPECIAL, b.clazzByName("J"), b.clazzByName("A"),
+                         "m", "()I", INTERFACEMETHODREF)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").extend(A)
+                .concreteMethod("test_Cmethod_ISMR", "()V")
+                    .invoke(SPECIAL, b.clazzByName("C"), b.clazzByName("C"),
+                         "m", "()I", CALLSITE)
+                .build()
+            .build();
+
+        Class expectedError1, expectedError2;
+        if (factory.getVer() >=52) {
+            expectedError1 = expectedError2 = AbstractMethodError.class;
+        } else {
+            expectedError1 = expectedError2 = VerifyError.class;
+        }
+
+         b.test().callSite(A, C, "m", "()I")
+                 .throws_(expectedError2)
+             .done()
+          .test().callSite(C, C, "m", "()I")
+                 .throws_(expectedError2)
+             .done()
+          .test().callSite(J, C, "m", "()I")
+                 .throws_(expectedError1)
+             .done()
+          .test().callSite(I, C, "m", "()I")
+                 .throws_(expectedError1)
+             .done()
+          .test().callSite(C, C, "test_Cmethod_ISMR", "()V")
+                 .throws_(expectedError2)
+             .done()
+          .test().callSite(A, C, "test_Amethod_ISIMR", "()V")
+                 .throws_(expectedError2)
+             .done()
+
+         .run();
+    }
+
+    /*
+     * Shadow
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J extends I { int m() default { return 2; } }
+     * class C implements J {}
+     *
+     * TEST: [I|J|C] c = new C(); c.m() == 2;
+     */
+    public void testShadow() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J").extend(I)
+                .defaultMethod("m", "()I").returns(2).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(J).build();
+
+        b.test().callSite(I, C, "m","()I")
+                .returns(2)
+            .done()
+        .test()
+                .callSite(J, C, "m","()I")
+                .returns(2)
+            .done()
+        .test()
+                .callSite(C, C, "m","()I")
+                .returns(2)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * Disqualified
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J extends I { int m() default { return 2; } }
+     * class C implements I, J {}
+     *
+     * TEST: [I|J|C] c = new C(); c.m() == 2;
+     */
+    public void testDisqualified() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J").extend(I)
+                .defaultMethod("m", "()I").returns(2).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I,J).build();
+
+        b.test()
+                .callSite(I, C, "m","()I")
+                .returns(2)
+            .done()
+        .test()
+                .callSite(J, C, "m","()I")
+                .returns(2)
+            .done()
+        .test()
+                .callSite(C, C, "m","()I")
+                .returns(2)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * Mixed arity
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J { int m(int i) default { return 2; } }
+     * class C implements I, J {}
+     *
+     * TEST: I i = new C(); i.m() == 1; i.m(0) ==> NSME
+     * TEST: J j = new C(); j.m() ==> NSME; j.m(0) == 2
+     * TEST: C c = new C(); c.m() == 1; c.m(0) == 2
+     */
+    @KnownFailure(modes = { INVOKE_EXACT, INVOKE_GENERIC, INDY }) // IncompatibleClassChangeError instead of NoSuchMethodError
+    public void testMixedArity1() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J")
+                .defaultMethod("m", "(I)I").returns(2).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I,J).build();
+
+        // I i = new C(); ...
+        b.test()
+                .callSite(I, C, "m","()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(I, C, "m","(I)I")
+                .params(0)
+                .throws_(NoSuchMethodError.class)
+            .done()
+
+        // J j = new C(); ...
+        .test()
+                .callSite(J, C, "m","()I")
+                .throws_(NoSuchMethodError.class)
+            .done()
+        .test()
+                .callSite(J, C, "m","(I)I")
+                .params(0)
+                .returns(2)
+            .done()
+
+        // C c = new C(); ...
+        .test()
+                .callSite(C, C, "m","()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(C, C, "m","(I)I")
+                .params(0)
+                .returns(2)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * Mixed arity
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J { int m() default { return 2; } }
+     * class C implements I, J { int m(int i) { return 3; }}
+     *
+     * TEST: I i = new C(); i.m() ==> ICCE
+     * TEST: J j = new C(); j.m() ==> ICCE
+     * TEST: C c = new C(); c.m() ==> ICCE; c.m(0) == 3
+     */
+    public void testMixedArity2() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J")
+                .defaultMethod("m", "()I").returns(2).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I,J)
+                .concreteMethod("m", "(I)I").returns(3).build()
+            .build();
+
+        // I i = new C(); ...
+        b.test()
+                .callSite(I, C, "m","()I")
+                .throws_(IncompatibleClassChangeError.class)
+            .done()
+
+        // J j = new C(); ...
+        .test()
+                .callSite(J, C, "m","()I")
+                .throws_(IncompatibleClassChangeError.class)
+            .done()
+
+        // C c = new C(); ...
+        .test()
+                .callSite(C, C, "m","()I")
+                .throws_(IncompatibleClassChangeError.class)
+            .done()
+        .test()
+                .callSite(C, C, "m","(I)I")
+                .params(0)
+                .returns(3)
+            .done()
+
+        .run();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/DefaultVsAbstractTest.java	Wed May 23 17:09:49 2018 -0700
@@ -0,0 +1,526 @@
+/*
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package vm.runtime.defmeth;
+
+import nsk.share.test.TestBase;
+import vm.runtime.defmeth.shared.DefMethTest;
+import vm.runtime.defmeth.shared.annotation.KnownFailure;
+import vm.runtime.defmeth.shared.data.*;
+import vm.runtime.defmeth.shared.data.method.param.NewInstanceParam;
+import vm.runtime.defmeth.shared.builder.TestBuilder;
+import static vm.runtime.defmeth.shared.ExecutionMode.*;
+import static vm.runtime.defmeth.shared.data.method.body.CallMethod.Invoke.*;
+import static vm.runtime.defmeth.shared.data.method.body.CallMethod.IndexbyteOp.*;
+
+/**
+ * Tests on interaction of default methods with abstract methods
+ *
+ * The rule: "the superclass always wins."
+ *
+ * In searching the superclass hierarchy, a declaration in a superclass is
+ * preferred to a default in an interface. This preference includes abstract
+ * methods in superclasses as well; the defaults are only considered when
+ * the entire implementation hierarchy is silent on the status of the method
+ * in question.
+ */
+public class DefaultVsAbstractTest extends DefMethTest {
+
+    public static void main(String[] args) {
+        TestBase.runTest(new DefaultVsAbstractTest(), args);
+    }
+
+    /*
+     * interface I          { public int m() default { return 1; } }
+     * class C implements I { public abstract int m(); }
+     *
+     * TEST: new C() throws InstantiationError
+     */
+    public void test0() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I)
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        b.test()
+            .callSite(I, C, "m", "()I")
+            .throws_(InstantiationError.class)
+            .done()
+        .run();
+    }
+
+    /*
+     * interface I          {
+     *     public int m() default { return 1; }
+     * }
+     * class C implements I {
+     *     public abstract int m();
+     * }
+     * class D extends C {}
+     *
+     * TEST: I i = new D(); i.m() ==> AME
+     * TEST: C c = new D(); c.m() ==> AME
+     * TEST: D d = new D(); d.m() ==> AME
+     */
+    @KnownFailure(modes = {INVOKE_EXACT, INVOKE_GENERIC, INVOKE_WITH_ARGS, INDY }) // Test1_I_D_m: NPE instead of AME
+                                                                                   // Test3_D_D_m: AME => IAE => ICCE instead of AME
+    public void test1() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I)
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        ConcreteClass D = b.clazz("D").extend(C).build();
+
+        b.test()
+            .callSite(I, D, "m",  "()I")
+            .throws_(AbstractMethodError.class)
+            .done()
+        .test()
+            .callSite(C, D, "m", "()I")
+            .throws_(AbstractMethodError.class)
+            .done()
+        .test()
+            .callSite(D, D, "m", "()I")
+            .throws_(AbstractMethodError.class)
+            .done()
+        .run();
+    }
+
+    /*
+     * interface I {
+     *     default  public int m() { return 1; }
+     * }
+     * class C     {
+     *     abstract public int m();
+     * }
+     * class D extends C implements I {}
+     *
+     * TEST: I o = new D(); o.m()I throws AME
+     * TEST: C o = new D(); o.m()I throws AME
+     * TEST: D o = new D(); o.m()I throws AME
+     */
+    @KnownFailure(modes = { INVOKE_EXACT, INVOKE_GENERIC, INVOKE_WITH_ARGS, INDY }) // Test1_I_D_m: NPE instead of AME
+                                                                                    // Test3_D_D_m: AME => IAE => ICCE instead of AME
+    public void test2() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C")
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        ConcreteClass D = b.clazz("D").extend(C).implement(I).build();
+
+        b.test()
+            .callSite(I, D, "m", "()I")
+            .throws_(AbstractMethodError.class)
+            .done()
+        .test()
+            .callSite(C, D, "m", "()I")
+            .throws_(AbstractMethodError.class)
+            .done()
+        .test()
+            .callSite(D, D, "m", "()I")
+            .throws_(AbstractMethodError.class)
+            .done()
+        .run();
+    }
+
+    /*
+     * interface I {
+     *     default public int m() { return 1; }
+     * }
+     * class C {
+     *     abstract public int m();
+     * }
+     * class D extends C implements I {
+     *     public int m()  { return 2; }
+     * }
+     *
+     * TEST: I o = new D(); o.m()I == 2
+     * TEST: C o = new D(); o.m()I == 2
+     * TEST: D o = new D(); o.m()I == 2
+     */
+    public void test3() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C")
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        ConcreteClass D = b.clazz("D").extend(C).implement(I)
+                .concreteMethod("m", "()I").returns(2)
+                .build()
+            .build();
+
+        b.test() // I i = new D(); ...
+            .callSite(I, D, "m", "()I").returns(2)
+            .done()
+        .test()  // C c = new D(); ...
+            .callSite(C, D, "m", "()I").returns(2)
+            .done()
+        .test()  // D d = new C(); ...
+            .callSite(D, D, "m", "()I").returns(2)
+            .done()
+        .run();
+    }
+
+    /*
+     * interface I {
+     *     default public int m() { return 1; }
+     * }
+     * class E {
+     *     abstract public int m();
+     * }
+     * class D extends E {}
+     * class C extends D implements I {}
+     *
+     * TEST: I o = new C(); o.m()I throws AME
+     * TEST: E o = new C(); o.m()I throws AME
+     * TEST: D o = new C(); o.m()I throws AME
+     * TEST: C o = new C(); o.m()I throws AME
+     */
+    @KnownFailure(modes = {
+        INVOKE_EXACT, INVOKE_GENERIC, INVOKE_WITH_ARGS, INDY // Test1_I_C_m: NPE instead of AME
+                                                             // Test3_D_C_m: AME => IAE => ICCE instead of AME
+                                                             // Test4_C_C_m: AME => IAE => ICCE instead of AME
+    })
+    public void test4() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+                .build();
+
+        ConcreteClass E = b.clazz("E")
+                .abstractMethod("m", "()I").build()
+                .build();
+
+        ConcreteClass D = b.clazz("D").extend(E).build();
+
+        ConcreteClass C = b.clazz("C").extend(D).implement(I).build();
+
+        b.test() // I i = new C(); ...
+            .callSite(I, C, "m", "()I")
+            .throws_(AbstractMethodError.class)
+            .done()
+        .test() // E e = new C(); ...
+            .callSite(E, C, "m", "()I")
+            .throws_(AbstractMethodError.class)
+            .done()
+        .test() // D d = new C(); ...
+            .callSite(D, C, "m", "()I")
+            .throws_(AbstractMethodError.class)
+            .done()
+        .test() // C c = new C(); ...
+            .callSite(C, C, "m", "()I")
+            .throws_(AbstractMethodError.class)
+            .done()
+        .run();
+    }
+
+    /*
+     * interface I {
+     *     default public int m() { return 1; }
+     * }
+     * class E {
+     *     abstract public int m();
+     * }
+     * class D extends E {
+     *     public int m()  { return 2; }
+     * }
+     * class C extends D implements I {}
+     *
+     * TEST: I o = new C(); o.m()I == 2
+     * TEST: I o = new C(); o.m()I == 2
+     * TEST: I o = new C(); o.m()I == 2
+     * TEST: I o = new C(); o.m()I == 2
+     */
+    public void test5() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        ConcreteClass E = b.clazz("E")
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        ConcreteClass D = b.clazz("D").extend(E)
+                .concreteMethod("m", "()I").returns(2).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").extend(D).implement(I).build();
+
+        b.test() // I i = new C(); ...
+            .callSite(I, C, "m", "()I")
+            .returns(2)
+            .done()
+        .test() // E e = new C(); ...
+            .callSite(I, C, "m", "()I")
+            .returns(2)
+            .done()
+        .test() // D d = new C(); ...
+            .callSite(I, C, "m", "()I")
+            .returns(2)
+            .done()
+        .test() // C c = new C(); ...
+            .callSite(I, C, "m", "()I")
+            .returns(2)
+            .done()
+        .run();
+    }
+
+    /*
+     * interface I {
+     *     default public int m() { return 1; }
+     * }
+     * interface J {
+     *     default public int m() { return 2; }
+     * }
+     * class E {
+     *     abstract public int m();
+     * }
+     * class D extends E {
+     *     public int m()  { return 3; }
+     * }
+     * class C extends D implements I, J {}
+     *
+     * TEST: I o = new C(); o.m()I == 3
+     * TEST: J o = new C(); o.m()I == 3
+     * TEST: E o = new C(); o.m()I == 3
+     * TEST: D o = new C(); o.m()I == 3
+     * TEST: J o = new C(); o.m()I == 3
+     */
+    public void test6() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J")
+                .defaultMethod("m", "()I").returns(2).build()
+            .build();
+
+        ConcreteClass E = b.clazz("E")
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        ConcreteClass D = b.clazz("D").extend(E)
+                .concreteMethod("m", "()I").returns(3).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").extend(D).implement(I, J).build();
+
+
+        b.test() // I i = new C(); ...
+            .callSite(I, C, "m", "()I").returns(3)
+            .done()
+        .test() // J j = new C(); ...
+            .callSite(J, C, "m", "()I").returns(3)
+            .done()
+        .test()  // E e = new C(); ...
+            .callSite(E, C, "m", "()I").returns(3)
+            .done()
+        .test()  // D d = new C(); ...
+            .callSite(D, C, "m", "()I").returns(3)
+            .done()
+        .test() // C c = new C(); ...
+            .callSite(J, C, "m", "()I").returns(3)
+            .done()
+        .run();
+    }
+
+    /*
+     * interface I {
+     *     abstract public int m();
+     * }
+     *
+     * interface J {
+     *     default public int m() { return 1; }
+     * }
+     *
+     * class A implements I;
+     *
+     * class B extends A implements J;
+     *
+     * TEST: A o = new B(); o.m()I
+     *                returns 1 for REFLECTION and INVOKE_WITH_ARGS
+     *                ICCE for other modes
+     */
+    public void testInvokeInterfaceClassDefaultMethod() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+            .abstractMethod("m", "()I").build()
+            .build();
+
+        Interface J = b.intf("J")
+            .extend(I)
+            .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        ConcreteClass A = b.clazz("A").implement(I).build();
+
+        ConcreteClass B = b.clazz("B").extend(A).implement(J).build();
+
+        String exeMode = factory.getExecutionMode();
+
+        // the test passes in the reflection mode because there's no way to
+        // express invokeinterface on a class using Reflection API
+        // In the test generator, vm.runtime.defmeth.shared.executor.ReflectionTest,
+        // the invokeinterface is switched to invokevirtual.
+        //
+        // the test passes in the INVOKE_WITH_ARGS mode due to the fix for
+        // JDK-8032010 to conform with the removal of the following check
+        // during method resolution in JVMS-5.4.3.3 Method Resolution
+        // "If method lookup succeeds and the method is abstract, but C is not
+        // abstract, method resolution throws an AbstractMethodError."
+        if (exeMode.equals("REFLECTION") ||
+            exeMode.equals("INVOKE_WITH_ARGS")) {
+            b.test().interfaceCallSite(A, B, "m", "()I")
+             .returns(1).done()
+             .run();
+        } else {
+            // ICCE in other modes due to
+            // JVMS-5.4.3.4. Interface Method Resolution
+            //   When resolving an interface method reference:
+            //     If C is not an interface, interface method resolution throws an IncompatibleClassChangeError.
+            b.test().interfaceCallSite(A, B, "m", "()I")
+             .throws_(IncompatibleClassChangeError.class).done()
+             .run();
+        }
+    }
+
+    /*
+     * interface I {
+     *     abstract public int m();
+     * }
+     *
+     * interface J {
+     *     abstract public int m();
+     * }
+     *
+     * class A implements I;
+     *
+     * class B extends A implements J;
+     *
+     * TEST: A o = new B(); o.m()I
+     *                ICCE for DIRECT mode
+     *                AME for REFLECTION and INVOKE_WITH_ARGS modes
+     *                IAE for other modes
+     */
+    public void testInvokeInterfaceClassAbstractMethod() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+            .abstractMethod("m", "()I").build()
+            .build();
+
+        Interface J = b.intf("J")
+            .abstractMethod("m", "()I").build()
+            .build();
+
+        ConcreteClass A = b.clazz("A").implement(I).build();
+
+        ConcreteClass B = b.clazz("B").extend(A).implement(J).build();
+
+        String exeMode = factory.getExecutionMode();
+
+        // ICCE in direct mode due to
+        // JVMS-5.4.3.4. Interface Method Resolution
+        //   When resolving an interface method reference:
+        //     If C is not an interface, interface method resolution throws an IncompatibleClassChangeError.
+        Class expectedError = IncompatibleClassChangeError.class;;
+
+        b.test().interfaceCallSite(A, B, "m", "()I")
+         .throws_(expectedError).done()
+         .run();
+
+    }
+
+    /*
+     * interface I {
+     *     public int m() default { return 1; }
+     * }
+     *
+     * interface J {
+     *     public int m() default { return 1; }
+     * }
+     *
+     * class A implements I;
+     *
+     * class B extends A implements J;
+     *
+     * TEST: A o = new B(); o.m()I
+     *                ICCE for all modes
+     */
+    public void testInvokeInterfaceMultipleDefinedClassDefaultMethod() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+            .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J")
+            .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        ConcreteClass A = b.clazz("A").implement(I).build();
+
+        ConcreteClass B = b.clazz("B").extend(A).implement(J).build();
+
+        String exeMode = factory.getExecutionMode();
+
+        // ICCE in direct mode due to
+        // JVMS-5.4.3.4. Interface Method Resolution
+        //   When resolving an interface method reference:
+        //     If C is not an interface, interface method resolution throws an IncompatibleClassChangeError.
+        Class expectedError = IncompatibleClassChangeError.class;
+
+        b.test().interfaceCallSite(A, B, "m", "()I")
+         .throws_(expectedError).done()
+         .run();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/MethodResolutionTest.java	Wed May 23 17:09:49 2018 -0700
@@ -0,0 +1,904 @@
+/*
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package vm.runtime.defmeth;
+
+import nsk.share.test.TestBase;
+import vm.runtime.defmeth.shared.annotation.KnownFailure;
+import vm.runtime.defmeth.shared.data.*;
+import vm.runtime.defmeth.shared.data.method.param.*;
+import static jdk.internal.org.objectweb.asm.Opcodes.*;
+import vm.runtime.defmeth.shared.DefMethTest;
+import vm.runtime.defmeth.shared.builder.TestBuilder;
+import static vm.runtime.defmeth.shared.ExecutionMode.*;
+
+/**
+ * Tests on method resolution in presence of default methods in the hierarchy.
+ *
+ * Because default methods reside in interfaces, and interfaces do not have
+ * the constraint of being single-inheritance, it is possible to inherit
+ * multiple conflicting default methods, or even inherit the same default method
+ * from many different inheritance paths.
+ *
+ * There is an algorithm to select which method to use in the case that a
+ * concrete class does not provide an implementation. Informally, the algorithm
+ * works as follows:
+ *
+ * (1) If there is a adequate implementation in the class itself or in a
+ *     superclass (not an interface), then that implementation should be used
+ *     (i.e., class methods always "win").
+ *
+ * (2) Failing that, create the set of methods consisting of all methods in the
+ *     type hierarchy which satisfy the slot to be filled, where in this case
+ *     'satisfy' means that the methods have the same name, the same language-
+ *     level representation of the parameters, and covariant return values. Both
+ *     default methods and abstract methods will be part of this set.
+ *
+ * (3) Remove from this set, any method which has a "more specific" version
+ *     anywhere in the hierarchy.  That is, if C implements I,J and I extends J,
+ *     then if both I and J have a suitable methods, J's method is eliminated
+ *     from the set since I is a subtype of J -- there exist a more specific
+ *     method than J's method, so that is eliminated.
+ *
+ * (4) If the remaining set contains only a single entry, then that method is
+ *     selected. Note that the method may be abstract, in which case an
+ *     IncompatibleClassChangeError is thrown when/if the method is called. If there are
+ *     multiple entries in the set, or no entries, then this also results in an
+ *     IncompatibleClassChangeError when called.
+ */
+public class MethodResolutionTest extends DefMethTest {
+
+    public static void main(String[] args) {
+        TestBase.runTest(new MethodResolutionTest(), args);
+    }
+
+    /*
+     * Basic
+     *
+     * interface I { int m(); }
+     * class C implements I { public int m() { return 1; } }
+     *
+     * TEST: C c = new C(); c.m() == 1;
+     * TEST: I i = new C(); i.m() == 1;
+     */
+    public void testBasic() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I =
+            b.intf("I")
+                .abstractMethod("m", "()I").build()
+             .build();
+
+        ConcreteClass C =
+             b.clazz("C").implement(I)
+                .concreteMethod("m", "()I").returns(1).build()
+              .build();
+
+        b.test()
+                .callSite(I, C, "m", "()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(C, C, "m", "()I")
+                .returns(1)
+            .done()
+        .run();
+    }
+
+    /*
+     * Basic Default
+     *
+     * interface I { int m() default { return 1; } }
+     * class C implements I {}
+     *
+     * TEST: C c = new C(); c.m() == 1;
+     * TEST: I i = new C(); i.m() == 1;
+     */
+    public void testBasicDefault() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I =
+            b.intf("I")
+                .defaultMethod("m", "()I").returns(1)
+                .build()
+             .build();
+
+        ConcreteClass C =
+             b.clazz("C").implement(I)
+              .build();
+
+        b.test()
+                .callSite(I, C, "m", "()I")
+                .returns(1)
+            .done()
+        .test().callSite(C, C, "m", "()I")
+                .returns(1)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * Far Default
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J extends I {}
+     * interface K extends J {}
+     * class C implements K {}
+     *
+     * TEST: [I|J|K|C] i = new C(); i.m() == 1;
+     */
+    @KnownFailure(modes = { INVOKE_EXACT, INVOKE_GENERIC, INVOKE_WITH_ARGS, INDY }) // Test2_J_C_m, Test3_K_C_m: AME => IAE => ICCE instead of successful call
+    public void testFarDefault() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I =
+            b.intf("I")
+                .defaultMethod("m", "()I").returns(1)
+                .build()
+             .build();
+
+        Interface J = b.intf("J").extend(I).build();
+        Interface K = b.intf("K").extend(J).build();
+
+        ConcreteClass C =
+             b.clazz("C").implement(K)
+              .build();
+
+        b.test()
+                .callSite(I, C, "m", "()I")
+                .returns(1)
+            .done()
+        .test().callSite(J, C, "m", "()I")
+                .returns(1)
+            .done()
+        .test().callSite(K, C, "m", "()I")
+                .returns(1)
+            .done()
+        .test().callSite(C, C, "m", "()I")
+                .returns(1)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * Override Abstract
+     *
+     * interface I { int m(); }
+     * interface J extends I { int m() default { return 1; } }
+     * interface K extends J {}
+     * class C implements K {}
+     *
+     * TEST: C c = new C(); c.m() == 1;
+     * TEST: K k = new C(); k.m() == 1;
+     */
+    @KnownFailure(modes = { INVOKE_EXACT, INVOKE_GENERIC, INVOKE_WITH_ARGS, INDY }) // Test3_K_C_m: AME => IAE => ICCE instead of successful call
+    public void testOverrideAbstract() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        Interface J = b.intf("J").extend(I)
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface K = b.intf("K").extend(J).build();
+
+        ConcreteClass C = b.clazz("C").implement(K).build();
+
+        b.test()
+                .callSite(I, C, "m", "()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(J, C, "m", "()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(K, C, "m", "()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(C, C, "m", "()I")
+                .returns(1)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * Default vs Concrete
+     *
+     * interface I { int m() default { return 1; } }
+     * class C implements I { public int m() { return 2; } }
+     *
+     * TEST: [C|I] c = new C(); c.m() == 2;
+     */
+    public void testDefaultVsConcrete() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I)
+                .concreteMethod("m", "()I").returns(2).build()
+            .build();
+
+        b.test()
+                .callSite(I, C, "m", "()I")
+                .returns(2)
+            .done()
+        .test()
+                .callSite(C, C, "m", "()I")
+                .returns(2)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * InheritedDefault
+     *
+     * interface I { int m() default { return 1; } }
+     * class B implements I {}
+     * class C extends B {}
+     *
+     * TEST: [I|B|C] v = new C(); v.m() == 1;
+     */
+    public void testInheritedDefault() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        ConcreteClass B = b.clazz("B").implement(I).build();
+        ConcreteClass C = b.clazz("C").extend(B).build();
+
+        b.test()
+                .callSite(I, C, "m","()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(B, C, "m","()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(C, C, "m","()I")
+                .returns(1)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * ExistingInherited
+     *
+     * interface I { int m() default { return 1; } }
+     * class B { public int m() { return 2; } }
+     * class C extends B implements I {}
+     *
+     * TEST: [I|B|C] v = new C(); v.m() == 2;
+     */
+    public void testExistingInherited() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        ConcreteClass B = b.clazz("B")
+                .concreteMethod("m", "()I").returns(2).build()
+                .build();
+
+        ConcreteClass C = b.clazz("C").extend(B).implement(I).build();
+
+        b.test()
+                .callSite(I, C, "m","()I")
+                .returns(2)
+            .done()
+        .test()
+                .callSite(B, C, "m","()I")
+                .returns(2)
+            .done()
+        .test()
+                .callSite(C, C, "m","()I")
+                .returns(2)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * ExistingInheritedOverride
+     *
+     * interface I { int m() default { return 1; } }
+     * class B implements I { public int m() { return 2; } }
+     * class C extends B { public int m() { return 3; } }
+     *
+     * TEST: [I|B|D] v = new C(); v.m() == 3;
+     */
+    public void testExistingInheritedOverride() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        ConcreteClass B = b.clazz("B").implement(I)
+                .concreteMethod("m", "()I").returns(2).build()
+                .build();
+
+        ConcreteClass C = b.clazz("C").extend(B)
+                .concreteMethod("m", "()I").returns(3).build()
+                .build();
+
+        b.test()
+                .callSite(I, C, "m","()I")
+                .returns(3)
+            .done()
+        .test()
+                .callSite(B, C, "m","()I")
+                .returns(3)
+            .done()
+        .test()
+                .callSite(C, C, "m","()I")
+                .returns(3)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * ExistingInheritedPlusDefault
+     *
+     * interface I { int m() default { return 11; } }
+     * interface J { int m() default { return 12; } }
+     * class C implements I { public int m() { return 21; } }
+     * class D extends C { public int m() { return 22; } }
+     * class E extends D implements J {}
+     *
+     * TEST: [I|J|C|D|J] v = new E(); v.m() == 22;
+     */
+    public void testExistingInheritedPlusDefault() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(11).build()
+            .build();
+
+        Interface J = b.intf("J")
+                .defaultMethod("m", "()I").returns(12).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I)
+                .concreteMethod("m","()I").returns(21).build()
+            .build();
+
+        ConcreteClass D = b.clazz("D").extend(C)
+                .concreteMethod("m", "()I").returns(22).build()
+            .build();
+
+        ConcreteClass E = b.clazz("E").extend(D).implement(J)
+                .build();
+
+        b.test()
+                .callSite(I, E, "m","()I")
+                .returns(22)
+            .done()
+        .test()
+                .callSite(J, E, "m","()I")
+                .returns(22)
+            .done()
+        .test()
+                .callSite(C, E, "m","()I")
+                .returns(22)
+            .done()
+        .test()
+                .callSite(D, E, "m","()I")
+                .returns(22)
+            .done()
+        .test()
+                .callSite(E, E, "m","()I")
+                .returns(22)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * InheritedWithConcrete
+     *
+     * interface I { int m() default { return 1; } }
+     * class B implements I {}
+     * class C extends B { public int m() { return 2; } }
+     *
+     * TEST: [I|B|C] v = new C(); v.m() == 2;
+     */
+    public void testInheritedWithConcrete() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        ConcreteClass B = b.clazz("B").implement(I).build();
+
+        ConcreteClass C = b.clazz("C").extend(B)
+                .concreteMethod("m", "()I").returns(2).build()
+                .build();
+
+        b.test()
+                .callSite(I, C, "m","()I")
+                .returns(2)
+            .done()
+        .test()
+                .callSite(B, C, "m","()I")
+                .returns(2)
+            .done()
+        .test()
+                .callSite(C, C, "m","()I")
+                .returns(2)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * InheritedWithConcreteAndImpl
+     *
+     * interface I { int m() default { return 1; } }
+     * class B implements I {}
+     * class C extends B implements I { public int m() { return 2; } }
+     *
+     * TEST: [I|B|C] v = new C(); v.m() == 2;
+     */
+    public void testInheritedWithConcreteAndImpl() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        ConcreteClass B = b.clazz("B").implement(I).build();
+
+        ConcreteClass C = b.clazz("C").extend(B)
+                .concreteMethod("m", "()I").returns(2).build()
+            .build();
+
+        b.test()
+                .callSite(I, C, "m","()I")
+                .returns(2)
+            .done()
+        .test()
+                .callSite(B, C, "m","()I")
+                .returns(2)
+            .done()
+        .test()
+                .callSite(C, C, "m","()I")
+                .returns(2)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * Diamond
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J extends I {}
+     * interface K extends I {}
+     * class C implements J, K {}
+     *
+     * TEST: [I|J|K|C] c = new C(); c.m() == 99
+     */
+    @KnownFailure(modes = { INVOKE_EXACT, INVOKE_GENERIC, INVOKE_WITH_ARGS, INDY }) // Test2_J_C_m, Test3_K_C_m: AME => IAE => ICCE instead of successful call
+    public void testDiamond() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J").extend(I).build();
+        Interface K = b.intf("K").extend(I).build();
+
+        ConcreteClass C = b.clazz("C").implement(J,K)
+            .build();
+
+        b.test()
+                .callSite(I, C, "m","()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(J, C, "m","()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(K, C, "m","()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(C, C, "m","()I")
+                .returns(1)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * ExpandedDiamond
+     *
+     * interface I { int m() default { return 1; } }
+     * interface J extends I {}
+     * interface K extends I {}
+     * interface L extends I {}
+     * interface M extends I {}
+     * class C implements J, K, L, M {}
+     *
+     * TEST: [I|J|K|L|M|C] c = new C(); c.m() == 1
+     */
+    @KnownFailure(modes = { INVOKE_EXACT, INVOKE_GENERIC, INVOKE_WITH_ARGS, INDY }) // Test2_J_C_m, Test3_K_C_m, Test4_L_C_m, Test5_M_C_m:
+                                                                                    // AME => IAE => ICCE instead of successful call
+    public void testExpandedDiamond() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1).build()
+            .build();
+
+        Interface J = b.intf("J").extend(I).build();
+        Interface K = b.intf("K").extend(I).build();
+        Interface L = b.intf("L").extend(I).build();
+        Interface M = b.intf("M").extend(I).build();
+
+        ConcreteClass C = b.clazz("C").implement(J,K,L,M)
+            .build();
+
+        b.test()
+                .callSite(I, C, "m","()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(J, C, "m","()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(K, C, "m","()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(L, C, "m","()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(M, C, "m","()I")
+                .returns(1)
+            .done()
+        .test()
+                .callSite(C, C, "m","()I")
+                .returns(1)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * SelfFill w/ explicit bridge
+     *
+     * interface I<T> { int m(T t) default { return 1; } }
+     * class C implements I<C> {
+     *   public int m(C s) { return 2; }
+     *   public int m(Object o) { ... }
+     * }
+     *
+     * TEST: I i = new C(); i.m((Object)null) == 2;
+     * TEST: C c = new C(); c.m((Object)null) == 2;
+     * TEST: C c = new C(); c.m((C)null) == 2;
+     */
+    public void testSelfFillWithExplicitBridge() {
+        TestBuilder b = factory.getBuilder();
+
+        /* interface I<T> { ... */
+        Interface I = b.intf("I").sig("<T:Ljava/lang/Object;>Ljava/lang/Object;")
+                    /* default int m(T t) { return 1; } */
+                    .defaultMethod("m", "(Ljava/lang/Object;)I")
+                        .sig("(TT;)I")
+                        .returns(1)
+                        .build()
+                .build();
+
+        /* class C implements I<C> { ... */
+        ConcreteClass C = b.clazz("C").implement(I)
+                .sig("Ljava/lang/Object;LI<LC;>;")
+
+                /* public int m(I i) { return 2; } */
+                .concreteMethod("m","(LC;)I").returns(2).build()
+
+                /* bridge method for m(LI;)I */
+                .concreteMethod("m","(Ljava/lang/Object;)I")
+                    .flags(ACC_PUBLIC | ACC_BRIDGE | ACC_SYNTHETIC)
+                    .returns(2)
+                .build()
+            .build();
+
+        // I i = new C(); ...
+        b.test()
+                .callSite(I, C, "m", "(Ljava/lang/Object;)I")
+                .params(new NullParam())
+                .returns(2)
+            .done()
+        // C c = new C(); ...
+        .test()
+                .callSite(C, C, "m", "(Ljava/lang/Object;)I")
+                .params(new NullParam())
+                .returns(2)
+            .done()
+        .test()
+                .callSite(C, C, "m", "(LC;)I")
+                .params(new NullParam())
+                .returns(2)
+            .done()
+
+        .run();
+    }
+
+    /*
+     * interface I { int m() default { return 1; } }
+     * class C implements I { int m(int i) { return 2; } }
+     *
+     * TEST: C c = new C(); c.m(0) == 2;
+     * TEST: I i = new C(); i.m() == 1;
+     */
+    public void testMixedArity() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I =
+            b.intf("I")
+                .defaultMethod("m", "()I").returns(1)
+                .build()
+             .build();
+
+        ConcreteClass C =
+             b.clazz("C").implement(I)
+                .concreteMethod("m", "(I)I").returns(2)
+                .build()
+              .build();
+
+        b.test().callSite(I, C, "m", "()I")
+                .returns(1)
+            .build();
+        b.test().callSite(C, C, "m", "(I)I").params(ICONST_0)
+                .returns(2)
+            .build();
+
+        b.run();
+    }
+
+    /*
+     * interface I { int m() default { return 1; } }
+     * interface J { int m(int i) default { return 2; } }
+     * class C implements I, J {}
+     *
+     * TEST: I i = new C(); i.m() == 1;     i.m(0) ==> NSME
+     * TEST: J j = new C(); j.m() ==> NSME; j.m(0) == 2
+     * TEST: C c = new C(); c.m() == 1;     c.m(0) == 2
+     */
+    @KnownFailure(modes = { INVOKE_EXACT, INVOKE_GENERIC, INDY }) //Test2_I_C_m, Test3_J_C_m: NSMError => NSMException => ICCE instead of NSME
+    public void testConflictingDefaultMixedArity1() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1)
+                .build()
+            .build();
+
+        Interface J = b.intf("J")
+                .defaultMethod("m", "(I)I").returns(2)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I,J).build();
+
+
+        // I i = new C(); ...
+        b.test().callSite(I, C, "m", "()I")
+                .returns(1)
+            .build();
+        b.test().callSite(I, C, "m", "(I)I").params(ICONST_0)
+                .throws_(NoSuchMethodError.class)
+            .build();
+
+        // J j = new C(); ...
+        b.test().callSite(J, C, "m", "()I")
+                .throws_(NoSuchMethodError.class)
+            .build();
+        b.test().callSite(J, C, "m", "(I)I").params(ICONST_0)
+                .returns(2)
+            .build();
+
+        // C c = new C(); ...
+        b.test().callSite(C, C, "m", "()I")
+                .returns(1)
+            .build();
+        b.test().callSite(C, C, "m", "(I)I").params(ICONST_0)
+                .returns(2)
+            .build();
+
+        b.run();
+    }
+
+    /*
+     * interface I { int m() default { return 1; } }
+     * interface J { int m() default { return 2; } }
+     * class C implements I, J {
+     *   int m(int i) { return 3; }
+     * }
+     *
+     * TEST: I i = new C(); i.m(0) ==> ICCE
+     * TEST: J j = new C(); j.m(0) ==> ICCE
+     * TEST: C c = new C(); c.m() ==> ICCE; c.m(0) == 3
+     */
+    @KnownFailure(modes = { INVOKE_EXACT, INVOKE_GENERIC, INDY })
+    //Test2_I_C_m, Test3_J_C_m: NSMError => NSMException => ICCE instead of NSME
+    public void testConflictingDefaultMixedArity2() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").returns(1)
+                .build()
+            .build();
+
+        Interface J = b.intf("J")
+                .defaultMethod("m", "()I").returns(2)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I, J)
+                .concreteMethod("m", "(I)I").returns(3)
+                .build()
+            .build();
+
+        // I i = new C(); ...
+        b.test().callSite(I, C, "m", "()I")
+                .throws_(IncompatibleClassChangeError.class)
+            .build();
+        b.test().callSite(I, C, "m", "(I)I").params(ICONST_0)
+                .throws_(NoSuchMethodError.class)
+            .build();
+
+        // J j = new C(); ...
+        b.test().callSite(J, C, "m", "()I")
+                .throws_(IncompatibleClassChangeError.class)
+            .build();
+        b.test().callSite(J, C, "m", "(I)I").params(ICONST_0)
+                .throws_(NoSuchMethodError.class)
+            .build();
+
+        // C c = new C(); ...
+        b.test().callSite(C, C, "m", "()I")
+                .throws_(IncompatibleClassChangeError.class)
+            .build();
+        b.test().callSite(C, C, "m", "(I)I").params(ICONST_0)
+                .returns(3)
+            .build();
+
+        b.run();
+    }
+
+    /* In package1:
+     * package p1;
+     * interface I {
+     *     default int m() { return 10; };
+     * }
+     * public interface J extends I {};
+     *
+     * In package2:
+     * class A implements p1.J {}
+     * A myA = new A;
+     * myA.m();  // should return 10 except for reflect mode,
+     *           // throw IllegalAccessException with reflect mode
+     * B myB = new B;  // not related
+     */
+
+    public void testMethodResolvedInDifferentPackage() {
+        TestBuilder b = factory.getBuilder();
+        Interface I = b.intf("p1.I").flags(~ACC_PUBLIC & ACC_PUBLIC) // make it package private
+                .defaultMethod("m", "()I").returns(10)
+                .build()
+            .build();
+
+        Interface J = b.intf("p1.J").extend(I)
+            .build();
+
+        ConcreteClass myA = b.clazz("p2.A").implement(J)
+            .build();
+        if (!factory.getExecutionMode().equals("REFLECTION")) {
+            b.test()
+                .callSite(myA, myA, "m", "()I")
+                .returns(10)
+                .done()
+            .run();
+         // -mode reflect will fail with IAE as expected
+         } else {
+            b.test()
+                .callSite(myA, myA, "m", "()I")
+                .throws_(IllegalAccessException.class)
+                .done()
+            .run();
+         }
+
+        ConcreteClass myB = b.clazz("p2.B").build();
+    }
+
+    /* In package p1:
+     * package p1;
+     * interface I {
+     *   public default int m() { return 12; };
+     * }
+     *
+     * public class A implements I {}
+     *
+     * In package p2:
+     * package p2;
+     * public interface J { int m(); }
+     *
+     * public class B extends p1.A implements J {
+     *   public int m() { return 13; }
+     * }
+     *
+     * Then:
+     *   A myA = new B;
+     *   myA.m();  // should return 13, not throw IllegalAccessError
+     */
+
+    public void testMethodResolvedInLocalFirst() {
+        TestBuilder b = factory.getBuilder();
+        Interface I = b.intf("p1.I")
+                .defaultMethod("m", "()I").returns(12)
+                .build()
+            .build();
+
+        ConcreteClass myA = b.clazz("p1.A").implement(I)
+            .build();
+
+        Interface J = b.intf("p2.J").abstractMethod("m", "()I")
+                .build()
+            .build();
+
+        ConcreteClass myB = b.clazz("p2.B").extend(myA).implement(J)
+                 .concreteMethod("m", "()I").returns(13)
+                 .build()
+            .build();
+
+        b.test()
+                .callSite(myB, myB, "m", "()I")
+                .returns(13)
+                .done()
+            .run();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/ObjectMethodOverridesTest.java	Wed May 23 17:09:49 2018 -0700
@@ -0,0 +1,246 @@
+/*
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package vm.runtime.defmeth;
+
+import nsk.share.TestFailure;
+import nsk.share.test.TestBase;
+import vm.runtime.defmeth.shared.DefMethTest;
+import vm.runtime.defmeth.shared.data.*;
+import static vm.runtime.defmeth.shared.data.method.body.CallMethod.Invoke.*;
+import static vm.runtime.defmeth.shared.data.method.body.CallMethod.IndexbyteOp.*;
+import vm.runtime.defmeth.shared.data.method.body.*;
+import vm.runtime.defmeth.shared.builder.TestBuilder;
+
+/**
+ * Test that default methods don't override methods inherited from Object class.
+ */
+public class ObjectMethodOverridesTest extends DefMethTest {
+
+    public static void main(String[] args) {
+        TestBase.runTest(new ObjectMethodOverridesTest(), args);
+    }
+
+    /* protected Object clone() */
+    public void testClone() throws Exception {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("clone", "()Ljava/lang/Object;")
+                    .throw_(TestFailure.class)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I)
+                .concreteMethod("m", "()V")
+                    // force an invokevirtual MR
+                    .invoke(CallMethod.Invoke.VIRTUAL,
+                            b.clazzByName("C"), b.clazzByName("C"),
+                            "clone", "()Ljava/lang/Object;", METHODREF)
+                .build()
+            .build();
+
+        b.test().callSite(C, C, "m", "()V")
+                .throws_(CloneNotSupportedException.class)
+                .done()
+
+        .run();
+    }
+
+    /* boolean equals(Object obj) */
+    public void testEquals() throws Exception {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("equals", "(Ljava/lang/Object;)Z")
+                    .throw_(TestFailure.class)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        ClassLoader cl = b.build();
+        Object c = cl.loadClass("C").newInstance();
+
+        c.equals(this);
+    }
+
+    /* void finalize() */
+    public void testFinalize() throws Exception {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("finalize", "()V")
+                    .throw_(TestFailure.class)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I)
+                .concreteMethod("m", "()V")
+                    // force an invokevirtual MR
+                    .invoke(CallMethod.Invoke.VIRTUAL,
+                            b.clazzByName("C"), b.clazzByName("C"), "finalize", "()V", METHODREF)
+                .build()
+            .build();
+
+        b.test().callSite(C, C, "m", "()V")
+                .ignoreResult()
+                .done()
+
+        .run();
+    }
+
+    /* final Class<?> getClass() */
+    public void testGetClass() throws Exception {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("getClass", "()Ljava/lang/Class;")
+                    .sig("()Ljava/lang/Class<*>;")
+                    .throw_(TestFailure.class)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().loadClass(I).throws_(VerifyError.class).done()
+        .run();
+    }
+
+    /* int hashCode() */
+    public void testHashCode() throws Exception {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("hashCode", "()I")
+                    .throw_(TestFailure.class)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        ClassLoader cl = b.build();
+        Object c = cl.loadClass("C").newInstance();
+
+        c.hashCode();
+    }
+
+
+    /* final void notify() */
+    public void testNotify() throws Exception {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("notify", "()V")
+                    .throw_(TestFailure.class)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().loadClass(I).throws_(VerifyError.class).done()
+        .run();
+    }
+
+    /* void notifyAll() */
+    public void testNotifyAll() throws Exception {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("notifyAll", "()V")
+                    .throw_(TestFailure.class)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().loadClass(I).throws_(VerifyError.class).done()
+        .run();
+    }
+
+    /* String toString() */
+    public void testToString() throws Exception {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("toString()", "()Ljava/lang/String;")
+                    .throw_(TestFailure.class)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        ClassLoader cl = b.build();
+        Object c = cl.loadClass("C").newInstance();
+
+        c.toString();
+    }
+
+    /* final void wait() */
+    public void testWait() throws Exception {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("wait", "()V")
+                    .throw_(TestFailure.class)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().loadClass(I).throws_(VerifyError.class).done()
+        .run();
+    }
+
+    /* final void wait(long timeout) */
+    public void testTimedWait() throws Exception {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("wait", "(J)V")
+                    .throw_(TestFailure.class)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().loadClass(I).throws_(VerifyError.class).done()
+        .run();
+    }
+
+    /* final void wait(long timeout, int nanos) */
+    public void testTimedWait1() throws Exception {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("wait", "(JI)V")
+                    .throw_(TestFailure.class)
+                .build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().loadClass(I).throws_(VerifyError.class).done()
+        .run();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/PrivateMethodsTest.java	Wed May 23 17:09:49 2018 -0700
@@ -0,0 +1,814 @@
+/*
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package vm.runtime.defmeth;
+
+import nsk.share.test.TestBase;
+import vm.runtime.defmeth.shared.DefMethTest;
+import vm.runtime.defmeth.shared.annotation.Crash;
+import vm.runtime.defmeth.shared.annotation.KnownFailure;
+import vm.runtime.defmeth.shared.annotation.NotApplicableFor;
+import vm.runtime.defmeth.shared.data.*;
+import static vm.runtime.defmeth.shared.data.method.body.CallMethod.Invoke.*;
+import static vm.runtime.defmeth.shared.data.method.body.CallMethod.IndexbyteOp.*;
+import vm.runtime.defmeth.shared.builder.TestBuilder;
+import static vm.runtime.defmeth.shared.ExecutionMode.*;
+
+/**
+ * Scenarios on private methods in interfaces.
+ */
+public class PrivateMethodsTest extends DefMethTest {
+
+    public static void main(String[] args) {
+        TestBase.runTest(new PrivateMethodsTest(), args);
+    }
+
+    // invokevirtual & invokeinterface from same/subintf
+    // Spec change July 2013 to not allow invokevirtual or invokeinterface
+    // to even see an interface private method
+    // Throw ICCE if method resolution returns interface private method
+
+    /*
+     * testPrivateInvokeVirtual
+     *
+     * interface I {
+     *   default private int privateM() { return 1; }
+     *   default public  int m()        { return (I)this.privateM(); } // invokevirtual
+     * }
+     * class C implements I {}
+     *
+     * TEST: I o = new C(); o.m()I throws VerifyError
+     * TEST: C o = new C(); o.m()I throws VerifyError
+     */
+    @NotApplicableFor(modes = { REDEFINITION }) // Can't redefine a class that gets error during loading
+    public void testPrivateInvokeVirtual() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("privateM", "()I")
+                    .private_().returns(1).build()
+
+                // force an invokevirtual of an IMR to test verification code
+                .defaultMethod("m", "()I")
+                    .invoke(VIRTUAL, b.intfByName("I"), null, "privateM", "()I", INTERFACEMETHODREF).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().callSite(I, C, "m", "()I").throws_(VerifyError.class).done()
+         .test().callSite(C, C, "m", "()I").throws_(VerifyError.class).done()
+
+        .run();
+    }
+
+    /*
+     * testPrivateInvokeIntf
+     *
+     * interface I {
+     *   default private int privateM() { return 1; }
+     *   default public  int m()        { return (I)this.privateM(); } // invokeinterface
+     * }
+     * class C implements I {}
+     *
+     * TEST: I o = new C(); o.m()I throws IncompatibleClassChangeError
+     * TEST: C o = new C(); o.m()I throws IncompatibleClassChangeError
+     */
+    public void testPrivateInvokeIntf() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("privateM", "()I")
+                    .private_().returns(1).build()
+                .defaultMethod("m", "()I")
+                    .invoke(INTERFACE, b.intfByName("I"), null, "privateM", "()I", CALLSITE).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().callSite(I, C, "m", "()I").throws_(IncompatibleClassChangeError.class).done()
+         .test().callSite(C, C, "m", "()I").throws_(IncompatibleClassChangeError.class).done()
+
+        .run();
+    }
+
+    /*
+     * testPrivateInvokeStatic
+     *
+     * interface I {
+     *   default private int privateM() { return 1; }
+     *   default public  int m()        { return I.privateM(); } // invokestatic
+     * }
+     * class C implements I {}
+     *
+     * TEST: I o = new C(); o.m()I throws LinkageError
+     * TEST: C o = new C(); o.m()I throws LinkageError
+     */
+    public void testPrivateInvokeStatic() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("privateM", "()I")
+                    .private_().returns(1).build()
+                .defaultMethod("m", "()I")
+                    .invoke(STATIC, b.intfByName("I"), null, "privateM", "()I", CALLSITE).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().callSite(I, C, "m", "()I").throws_(LinkageError.class).done()
+         .test().callSite(C, C, "m", "()I").throws_(LinkageError.class).done()
+
+        .run();
+    }
+
+    // call from another default method in the same interface
+    /*
+     * testPrivateCallSameClass
+     *
+     * interface I {
+     *   default private privateM()I { return 1; }
+     *   default public int m() { return I.super.privateM(); }
+     * }
+     * class C implements I {}
+     *
+     * TEST: { I o = new C(); o.m()I  == 1; }
+     * TEST: { C o = new C(); o.m()I  == 1; }
+     */
+    public void testPrivateCallSameClass() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("privateM", "()I")
+                    .private_().returns(1).build()
+                .defaultMethod("m", "()I")
+                    .invokeSpecial(b.intfByName("I"), "privateM", "()I").build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().callSite(I, C, "m", "()I").returns(1).done()
+         .test().callSite(C, C, "m", "()I").returns(1).done()
+
+        .run();
+    }
+
+    /*
+     * testPrivateCallSubIntf
+     *
+     * Attempt to call from subinterface fails
+
+     * interface I {
+     *   default private privateM()I { return 1; }
+     * }
+     * J, K, L use invokespecial
+     * interface J extends I {
+     *   default public int m() { return I.super.privateM(); }
+     * }
+     * interface K extends I {
+     *   default public int m() { return K.super.privateM(); }
+     * }
+     * interface L extends J {
+     *   default public int m() { return I.super.privateM(); }
+     * }
+     * class C implements J {}
+     * class D implements K {}
+     * class E implements L {}
+     *
+     * TEST: { J o = new C(); o.m()I throws IAE; }
+     * TEST: { C o = new C(); o.m()I throws IAE; }
+     * TEST: { K o = new D(); o.m()I throws NSME; } // does not see
+     * TEST: { D o = new D(); o.m()I throws NSME; }
+     * TEST: { L o = new E(); o.m()I throws VerifyError; } // VerifyError intfmethodref
+     * TEST: { E o = new E(); o.m()I throws VerifyError; }
+     */
+    @NotApplicableFor(modes = { REDEFINITION }) // Can't redefine a class that gets error during loading
+    public void testPrivateCallSubIntf() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("privateM", "()I")
+                    .private_().returns(1).build()
+            .build();
+
+        Interface J = b.intf("J").extend(I)
+                .defaultMethod("m", "()I")
+                    .invokeSpecial(I, "privateM", "()I").build()
+            .build();
+
+        Interface K = b.intf("K").extend(J)
+                .defaultMethod("m", "()I")
+                    .invokeSpecial(b.intfByName("K"), "privateM", "()I").build()
+            .build();
+
+        // L.privateM -> J -> L (I.privateM call)
+        Interface L = b.intf("L").extend(J)
+                .defaultMethod("m", "()I")
+                    .invokeSpecial(I, "privateM", "()I").build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(J).build();
+
+        ConcreteClass D = b.clazz("D").implement(K).build();
+
+        ConcreteClass E = b.clazz("E").implement(L).build();
+
+        b.test().callSite(J, C, "m", "()I").throws_(IllegalAccessError.class).done()
+         .test().callSite(C, C, "m", "()I").throws_(IllegalAccessError.class).done()
+
+         .test().callSite(K, D, "m", "()I").throws_(NoSuchMethodError.class).done()
+         .test().callSite(D, D, "m", "()I").throws_(NoSuchMethodError.class).done()
+
+         .test().callSite(L, E, "m", "()I").throws_(VerifyError.class).done()
+         .test().callSite(E, E, "m", "()I").throws_(VerifyError.class).done()
+
+        .run();
+    }
+
+    /*
+     * Attempt to call from subclass fails
+     *
+     * interface I {
+     *   default private privateM()I { return 1; }
+     * }
+     * class C implements I {
+     *   public int m() { return I.super.privateM(); }
+     * }
+     * class D extends C {
+     *   public int m() { return I.super.privateM(); }
+     * }
+     * class E extends C {
+     *   public int m() { return C.super.privateM(); }
+     * }
+     *
+     * TEST: { C o = new C(); o.m()I throws LinkageError }
+     * TEST: { D o = new D(); o.m()I throws LinkageError }
+     * TEST: { E o = new E(); o.m()I throws NoSuchMethodError; }
+     */
+    @NotApplicableFor(modes = { REDEFINITION }) // Can't redefine a class that gets error during loading
+    public void testPrivateCallImplClass() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("privateM", "()I")
+                    .private_().returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I)
+                .concreteMethod("m", "()I")
+                    .invokeSpecial(I, "privateM", "()I").build()
+            .build();
+
+        ConcreteClass D = b.clazz("D").extend(C)
+                .concreteMethod("m", "()I")
+                    .invokeSpecial(I, "privateM", "()I").build()
+            .build();
+
+        ConcreteClass E = b.clazz("E").extend(C)
+                .concreteMethod("m", "()I")
+                    .invokeSpecial(C, "privateM", "()I").build()
+            .build();
+
+        Class eeExpectedClass;
+        if (factory.getVer() >= 52) {
+            eeExpectedClass = NoSuchMethodError.class;
+        } else {
+            // The test gets a VerifyError in this case due to an
+            // invokespecial IMR bytecode.  This was not allowed
+            // until class file version 52.  (See 8030249.)
+            eeExpectedClass = VerifyError.class;
+        }
+        b.test().callSite(C, C, "m", "()I").throws_(LinkageError.class).done()
+         .test().callSite(D, D, "m", "()I").throws_(LinkageError.class).done()
+         .test().callSite(E, E, "m", "()I").throws_(eeExpectedClass).done()
+
+        .run();
+    }
+
+    // doesn't participate in default method analysis
+    //   method overriding
+
+    /*
+     * testPrivateDefault
+     *
+     * interface I {
+     *   default private int m() { return 1; }
+     * }
+     * class C implements I {}
+     *
+     * TEST: { I o = new C(); o.m()I throws IllegalAccessError; }
+     *                 -mode reflect throws NoSuchMethodException
+     * TEST: { C o = new C(); o.m()I throws java/lang/NoSuchMethodError; }
+     */
+    public void testPrivateDefault() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I")
+                    .private_().returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        Class expectedClass;
+        if (factory.getExecutionMode().equals("REFLECTION")) {
+            expectedClass = NoSuchMethodException.class;
+        } else {
+            expectedClass = IllegalAccessError.class;
+        }
+
+        b.test().callSite(I, C, "m", "()I").throws_(expectedClass).done()
+         .test().callSite(C, C, "m", "()I").throws_(NoSuchMethodError.class).done()
+
+        .run();
+    }
+
+    /*
+     * testPrivateDefaultVsConcrete
+     *
+     * interface I {
+     *   default private int m() { return 1; }
+     * }
+     * class C implements I {
+     *   public int m() { return 2; }
+     * }
+     *
+     * TEST: { I o = new C(); o.m()I  == IllegalAccessError; }
+     *                 -mode reflect throws NoSuchMethodException
+     * TEST: { C o = new C(); o.m()I  == 2; }
+     */
+    public void testPrivateDefaultVsConcrete() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I")
+                    .private_().returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I)
+                .concreteMethod("m", "()I").returns(2).build()
+            .build();
+
+        Class expectedClass;
+        if (factory.getExecutionMode().equals("REFLECTION")) {
+            expectedClass = NoSuchMethodException.class;
+        } else {
+            expectedClass = IllegalAccessError.class;
+        }
+
+        b.test().callSite(I, C, "m", "()I").throws_(expectedClass).done()
+         .test().callSite(C, C, "m", "()I").returns(2).done()
+
+        .run();
+    }
+
+    /*
+     * testPublicOverridePrivate
+     *
+     * interface I {
+     *   default private int m() { return 1; }
+     * }
+     * interface J extends I {
+     *   default public int m() { return 2; }
+     * }
+     * class C implements J {}
+     *
+     * TEST: { I o = new C(); o.m()I throws IllegalAccessError; }
+     *                 -mode reflect throws NoSuchMethodException
+     * TEST: { J o = new C(); o.m()I  == 2; }
+     * TEST: { C o = new C(); o.m()I  == 2; }
+     */
+    public void testPublicOverridePrivate() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I")
+                    .private_().returns(1).build()
+            .build();
+
+        Interface J = b.intf("J").extend(I)
+                .defaultMethod("m", "()I")
+                    .returns(2).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(J).build();
+
+        Class expectedClass;
+        if (factory.getExecutionMode().equals("REFLECTION")) {
+            expectedClass = NoSuchMethodException.class;
+        } else {
+            expectedClass = IllegalAccessError.class;
+        }
+
+        b.test().callSite(I, C, "m", "()I").throws_(expectedClass).done()
+         .test().callSite(J, C, "m", "()I").returns(2).done()
+         .test().callSite(C, C, "m", "()I").returns(2).done()
+
+        .run();
+    }
+
+    /*
+     * testPrivateOverrideDefault
+     *
+     * interface I {
+     *   default public int m() { return 1; }
+     * }
+     * interface J extends I {
+     *   default private int m() { return 2; }
+     * }
+     * class C implements J {}
+     *
+     * TEST: { I o = new C(); o.m()I  == 1; }
+     * TEST: { J o = new C(); o.m()I  == IllegalAccessError; } II J.m priv
+     * TEST: { C o = new C(); o.m()I  == 1; }
+     */
+    /*
+
+        REFLECTION:
+  Test2_J_C_m                   : FAILED
+    nsk.share.TestFailure: Caught exception as expected, but its type is wrong:
+      expected: java.lang.IllegalAccessError;
+      actual: java.lang.NoSuchMethodException.
+     */
+    public void testPrivateOverrideDefault() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I")
+                    .returns(1).build()
+            .build();
+
+        Interface J = b.intf("J").extend(I)
+                .defaultMethod("m", "()I")
+                    .private_().returns(2).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(J).build();
+
+        b.test().callSite(I, C, "m", "()I").returns(1).done()
+         .test().privateCallSite(J, C, "m", "()I").throws_(IllegalAccessError.class).done()
+         .test().callSite(C, C, "m", "()I").returns(1).done()
+
+        .run();
+    }
+
+    /*
+     * testPrivateReabstract
+     *
+     * interface I {
+     *   default private int m() { return 1; }
+     * }
+     * interface J extends I {
+     *   abstract public int m();
+     * }
+     * class C implements J {}
+     *
+     * TEST: { I o = new C(); o.m()I throws IllegalAccessError; } II I.m
+     *                 -mode reflect throws NoSuchMethodException
+     * TEST: { J o = new C(); o.m()I throws java/lang/AbstractMethodError; }
+     * TEST: { C o = new C(); o.m()I throws java/lang/AbstractMethodError; }
+     */
+    public void testPrivateReabstract() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I")
+                    .private_().returns(1).build()
+            .build();
+
+        Interface J = b.intf("J").extend(I)
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(J).build();
+
+        Class expectedClass;
+        if (factory.getExecutionMode().equals("REFLECTION")) {
+            expectedClass = NoSuchMethodException.class;
+        } else {
+            expectedClass = IllegalAccessError.class;
+        }
+
+        b.test().callSite(I, C, "m", "()I").throws_(expectedClass).done()
+         .test().callSite(J, C, "m", "()I").throws_(AbstractMethodError.class).done()
+         .test().callSite(C, C, "m", "()I").throws_(AbstractMethodError.class).done()
+
+        .run();
+    }
+
+    /*
+     * testPrivateOverrideAbstract
+     *
+     * interface I {
+     *   abstract public int m();
+     * }
+     * interface J extends I {
+     *   default private int m() { return 1; }
+     * }
+     * class C implements J {}
+     *
+     * TEST: { I o = new C(); o.m()I throws AbstractMethodError }
+     * TEST: { J o = new C(); o.m()I throws IncompatibleClassChangeError }
+     * TEST: { C o = new C(); o.m()I throws AbstractMethodError }
+     */
+    /*
+         REFLECTION:
+  Test1_I_C_m                   : FAILED
+    nsk.share.TestFailure: No exception was thrown: java.lang.AbstractMethodError
+  Test2_J_C_m                   : FAILED
+    nsk.share.TestFailure: No exception was thrown: java.lang.AbstractMethodError
+  Test3_C_C_m                   : FAILED
+    nsk.share.TestFailure: No exception was thrown: java.lang.AbstractMethodError
+     */
+    public void testPrivateOverrideAbstract() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .abstractMethod("m", "()I").build()
+            .build();
+
+        Interface J = b.intf("J").extend(I)
+                .defaultMethod("m", "()I")
+                    .private_().returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(J).build();
+
+        Class expectedClass;
+        if (factory.getExecutionMode().equals("REFLECTION")) {
+            expectedClass = IllegalAccessException.class;
+        } else {
+            expectedClass = IncompatibleClassChangeError.class;
+        }
+
+        b.test().callSite(I, C, "m", "()I").throws_(AbstractMethodError.class).done()
+         .test().privateCallSite(J, C, "m", "()I").throws_(expectedClass).done()
+         .test().callSite(C, C, "m", "()I").throws_(AbstractMethodError.class).done()
+         .run();
+    }
+
+    /*
+     * testPrivateInheritedDefault
+     *
+     * interface I {
+     *   default private int m() { return 1; }
+     * }
+     * class B implements I {}
+     * class C extends B {}
+     *
+     * TEST: { I o = new C(); o.m()I throws IllegalAccessError } II I.m
+     *                 -mode reflect throws NoSuchMethodException
+     * TEST: { B o = new C(); o.m()I throws NoSuchMethodError }
+     * TEST: { C o = new C(); o.m()I throws NoSuchMethodError }
+     */
+    public void testPrivateInheritedDefault() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I")
+                    .private_().returns(1).build()
+            .build();
+
+        ConcreteClass B = b.clazz("B").implement(I).build();
+        ConcreteClass C = b.clazz("C").extend(B).build();
+
+        Class expectedClass;
+        if (factory.getExecutionMode().equals("REFLECTION")) {
+            expectedClass = NoSuchMethodException.class;
+        } else {
+            expectedClass = IllegalAccessError.class;
+        }
+
+        b.test().callSite(I, C, "m","()I").throws_(expectedClass).done()
+         .test().callSite(B, C, "m","()I").throws_(NoSuchMethodError.class).done()
+         .test().callSite(C, C, "m","()I").throws_(NoSuchMethodError.class).done()
+
+        .run();
+
+    }
+
+    /*
+     * testPrivateDefaultVsConcreteInherited
+     *
+     * interface I {
+     *    default private int m() { return 1; }
+     * }
+     * class B {
+     *   public int m() { return 2; }
+     * }
+     * class C extends B implements I {}
+     *
+     * TEST: { I o = new C(); o.m()I  == throws IllegalAccessError; }
+     *                     -mode reflect throws NoSuchMethodException
+     * TEST: { B o = new C(); o.m()I  == 2; }
+     * TEST: { C o = new C(); o.m()I  == 2; }
+     */
+    public void testPrivateDefaultVsConcreteInherited() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I")
+                    .private_().returns(1).build()
+            .build();
+
+        ConcreteClass B = b.clazz("B")
+                .concreteMethod("m", "()I").returns(2).build()
+                .build();
+
+        ConcreteClass C = b.clazz("C").extend(B).implement(I).build();
+
+        Class expectedClass;
+        if (factory.getExecutionMode().equals("REFLECTION")) {
+            expectedClass = NoSuchMethodException.class;
+        } else {
+            expectedClass = IllegalAccessError.class;
+        }
+
+        b.test().callSite(I, C, "m","()I").throws_(expectedClass).done()
+         .test().callSite(B, C, "m","()I").returns(2).done()
+         .test().callSite(C, C, "m","()I").returns(2).done()
+
+        .run();
+    }
+
+    /*
+     * testPrivateConflict
+     *
+     * Conflicting default methods
+     *
+     * interface I {
+     *   default private int m() { return 1; }
+     * }
+     * interface J {
+     *   default public int m() { return 2; }
+     * }
+     * class C implements I, J {}
+     *
+     * TEST: { I o = new C(); o.m()I throws IllegalAccessError; }
+     *                 -mode reflect throws NoSuchMethodException
+     * TEST: { J o = new C(); o.m()I  == 2; }
+     * TEST: { C o = new C(); o.m()I  == 2; }
+     */
+    public void testPrivateConflict() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").private_().returns(1).build()
+            .build();
+
+        Interface J = b.intf("J")
+                .defaultMethod("m", "()I").returns(2).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I,J).build();
+
+        Class expectedClass;
+        if (factory.getExecutionMode().equals("REFLECTION")) {
+            expectedClass = NoSuchMethodException.class;
+        } else {
+            expectedClass = IllegalAccessError.class;
+        }
+
+        b.test().callSite(I, C, "m", "()I").throws_(expectedClass).done()
+         .test().callSite(J, C, "m", "()I").returns(2).done()
+         .test().callSite(C, C, "m", "()I").returns(2).done()
+
+        .run();
+    }
+    /*
+     * testPrivateSuperClassMethodNoDefaultMethod
+     *
+     * interface I {
+     *  public int m();
+     * }
+     *
+     * public class A {
+     *  private int m() { return 1; }
+     * }
+     *
+     * public class B extends A implements I {}
+     *
+     * public class C extends B {
+     *  public int m() { return 2; }
+     * }
+     *
+     * TEST: { B b = new C(); b.m()I throws IllegalAccessError; }
+     */
+    public void testPrivateSuperClassMethodNoDefaultMethod() {
+        TestBuilder b = factory.getBuilder();
+
+        ConcreteClass A = b.clazz("A")
+                .concreteMethod("m", "()I").private_().returns(1).build()
+                .build();
+
+        Interface I = b.intf("I")
+                .abstractMethod("m", "()I").public_().build()
+                .build();
+
+        ConcreteClass B = b.clazz("B").extend(A).implement(I).build();
+
+        ConcreteClass C = b.clazz("C").extend(B)
+                .concreteMethod("m", "()I").public_().returns(2).build()
+                .build();
+
+        b.test().privateCallSite(B, C, "m", "()I").throws_(IllegalAccessError.class).done()
+        .run();
+
+    }
+
+    /*
+     * testPrivateSuperClassMethodDefaultMethod
+     *
+     * interface I {
+     *  public default int m() { return 3; }
+     * }
+     *
+     * public class A {
+     *  private int m() { return 1; }
+     * }
+     *
+     * public class B extends A implements I {}
+     *
+     * public class C extends B {
+     *  public int m() { return 2; }
+     * }
+     *
+     * TEST: { B b = new C(); b.m()I throws IllegalAccessError; }
+     */
+    public void testPrivateSuperClassMethodDefaultMethod() {
+        TestBuilder b = factory.getBuilder();
+
+        ConcreteClass A = b.clazz("A")
+                .concreteMethod("m", "()I").private_().returns(1).build()
+                .build();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").public_().returns(3).build()
+                .build();
+
+        ConcreteClass B = b.clazz("B").extend(A).implement(I).build();
+
+        ConcreteClass C = b.clazz("C").extend(B)
+                .concreteMethod("m", "()I").public_().returns(2).build()
+                .build();
+
+        b.test().privateCallSite(B, C, "m", "()I").throws_(IllegalAccessError.class).done()
+        .run();
+    }
+
+    /*
+     * testPrivateSuperClassMethodDefaultMethodNoOverride
+     *
+     * interface I {
+     *  public default int m() { return 3; }
+     * }
+     *
+     * public class A {
+     *  private int m() { return 1; }
+     * }
+     *
+     * public class B extends A implements I {}
+     *
+     * public class C extends B { }
+     *
+     * TEST: { B b = new C(); b.m()I throws IllegalAccessError; }
+     */
+    public void testPrivateSuperClassMethodDefaultMethodNoOverride() {
+        TestBuilder b = factory.getBuilder();
+
+        ConcreteClass A = b.clazz("A")
+                .concreteMethod("m", "()I").private_().returns(1).build()
+                .build();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I").public_().returns(3).build()
+                .build();
+
+        ConcreteClass B = b.clazz("B").extend(A).implement(I).build();
+
+        ConcreteClass C = b.clazz("C").extend(B).build();
+
+        b.test().privateCallSite(B, C, "m", "()I").throws_(IllegalAccessError.class).done()
+        .run();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/README	Wed May 23 17:09:49 2018 -0700
@@ -0,0 +1,261 @@
+Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+This code is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License version 2 only, as
+published by the Free Software Foundation.
+
+This code is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+version 2 for more details (a copy is included in the LICENSE file that
+accompanied this code).
+
+You should have received a copy of the GNU General Public License version
+2 along with this work; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
+
+
+ABOUT
+
+    Once published, it is impossible to add methods to an interface without
+    breaking existing implementations (specifically, adding a method to an
+    interface is not a source-compatible change). The longer the time since a
+    library has been published, the more likely it is that this restriction will
+    cause grief for its maintainers.
+
+    The addition of closures to the Java language in JDK 8 place additional stress
+    on the aging Collection interfaces; one of the most significant benefits of
+    closures is that it enables the development of more powerful libraries. It
+    would be disappointing to add a language feature that enables better libraries
+    while at the same time not extending the core libraries to take advantage of
+    that feature.
+
+    A mechanism for adding new methods to existing interfaces is proposed, which is
+    called virtual extension (or default) methods. Existing interfaces can be
+    augmented without compromising backward compatibility by adding extension
+    methods to the interface, whose declaration would contain instructions for
+    finding the default implementation in the event that implementers do not
+    provide a method body. A key characteristic of extension methods is that they
+    are virtual methods just like other interface methods, but provide a default
+    implementation in the event that the implementing class does not provide a
+    method body.
+
+    VM support is necessary to implement virtual extension methods.
+
+
+OVERVIEW
+
+    The test suite is organized in the following manner.
+
+    The tests rely on a framework to generate class hierarchies and tests
+    directly in bytecode from a pseudo-code in Java. Pseudo-code is written
+    using builder pattern and fluent coding style.
+
+    The framework is located in src/vm/runtime/defmeth/shared and divided into
+    /data and /builder sections.
+
+    As an example, the following code:
+
+            TestBuilder b = factory.getBuilder();
+
+            Interface I = b.intf("I")
+                    .defaultMethod("m", "()I").returns(1).build()
+                .build();
+
+            ConcreteClass C = b.clazz("C").implement(I)
+                    .concreteMethod("m", "()I").returns(2).build()
+                .build();
+
+            b.test().callSite(I, C, "m", "()I").returns(2).done()
+             .test().callSite(C, C, "m", "()I").returns(2).done()
+
+            .run();
+
+        translates into bytecode equivalent of:
+
+            2-class hierarchy:
+
+                interface I {
+                    int m() default { return 1; }
+                }
+
+                class C implements I {
+                    public int m() { return 2; }
+                }
+
+            and 2 tests:
+
+                Test1_I_C_m {
+                    static void test() {
+                        I i = new C();
+                        if (i.m() != 2) throw new TestFailure();
+                    }
+                }
+
+                Test2_C_C_m {
+                    static void test() {
+                        C c = new C();
+                        if (c.m() != 2) throw new TestFailure();
+                    }
+                }
+
+    TestBuilder.run() calls Test1_I_C_m.test() and Test2_C_C_m.test() and
+    performs failure reporting, if necessary.
+
+    All tests are located in src/vm/runtime/defmeth and are grouped according
+    to the area they excercise. The test groups are:
+        - AccessibilityFlagsTest
+        - BasicTest
+        - ConflictingDefaultsTest
+        - DefaultVsAbstractTest
+        - MethodResolutionTest
+        - ObjectMethodOverridesTest
+        - PrivateMethodsTest
+        - RedefineTest
+        - StaticMethodsTest
+        - StressTest
+        - SuperCallTest
+
+    Each test group can be executed in different modes. For each mode there's a
+    corresponding scenario in src/vm/runtime/defmeth/scenarios.
+
+    Scenarios are organized in the following manner:
+
+        .../scenarios/[test_group]_[majorVer]_[methodFlags]_[invocationType]_[shouldRedefine]
+
+    where
+
+        majorVer - major version of class files for generated concrete classes
+            values: ver49, ver50, ver51, ver52
+
+        methodFlags - additional access flags for methods in generated classes
+            values:
+                none == no additional flags
+                sync == ACC_SYNCHRONIZED
+                strict == ACC_STRICT
+                syncstrict == ACC_SYNCHRONIZED | ACC_STRICT
+
+        invocationType - how methods in test hiearchies are invoked during testing
+            values:
+                direct - using invoke* bytecodes
+                reflect - using Reflection API
+                invoke - using invokedynamic & java.lang.invoke API (MethodHandles/JSR292)
+
+        redefine - whether to preload and redefine classes before running individual tests
+            values: redefine, noredefine
+
+        testGroup - name of test group being used
+            values: BasicTests/BridgeMethod/etc
+
+
+STRESS TESTING
+
+    Stress test differs from other scenarios - it has only 2 modes: redefine and noredefine.
+
+    Stress scenario is the following:
+        - in multiple threads (5 by default)...
+        - ... continuously run random vm.runtime.defmeth.* tests ...
+        - ... in random configurations ...
+        - ... until predefined period of time is over...
+        - ... or any failures occured.
+
+
+HOW TO RUN
+
+    Directly from command-line:
+
+    $ java -cp ${VMTESTBASE}/bin/classes vm.runtime.defmeth.shared.DefMethTest
+
+    Specify testing mode:
+        -flags <int>
+              additional access flags on default methods (default: 0)
+
+        -ver <int>
+              class file major version (default: 52)
+
+        -redefine <boolean>
+              redefine classes during execution (default: false)
+
+        -mode [direct|reflect|invoke]
+              specify method invocation mechanism (default: direct):
+                  - direct - invoke* instructions in bytecode
+                  - reflect - Reflection API
+                  - invoke - invokedynamic & MethodHandle.invoke*
+
+        -execMode [DIRECT|REFLECTION|INVOKE_EXACT|INVOKE_GENERIC|INVOKE_WITH_ARGS|INDY]
+              specify concrete execution mode
+
+    Execution-specific flags:
+        -list <boolean>
+            list available tests
+
+        -filter <regex>
+            filter tests by name
+            (default: .* )
+
+    If you run tests directly from command line, in order to make "-redefine true",
+    StressTest or RedefineTest work, additional steps are necessary:
+        add -agentlib:redefineClasses to JVM options
+        set correct LD_LIBRARY_PATH:
+            LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${VM_TESTBASE}/bin/lib/${PLATFORM}/vm/runtime/defmeth/shared/
+
+    Also, it is possible to run any test group directly:
+
+    $ java -cp ${VMTESTBASE}/bin/classes vm.runtime.defmeth.BasicTest
+
+    StressTest has some specific options:
+        -stressTime <long>
+            Stress execution time in seconds (default: 60)
+
+        -stressThreadsFactor <int>
+              Stress threads factor (default: 1)
+
+        -seed <int>
+              force deterministic behavior (default: 0)
+
+        -redefine <boolean>
+              use scenarios w/ class redefinition (default: false)
+
+        -ver <int>
+              minimum class file version to be used in the tests (default: 49)
+
+        -ignoreTestFailures
+              ignore failures of individual tests
+
+    To simplify failure analysis, the framework has some additional flags to produce
+    diagnostics output:
+
+        -Dvm.runtime.defmeth.printTests
+            print pseudo-code for each test;
+
+        -Dvm.runtime.defmeth.printAssembly
+            print bytecode assembly for all generated class files;
+
+        -Dvm.runtime.defmeth.printASMify
+            print "asmified" version of generated class files;
+            very useful when preparing reduced test cases.
+
+        -Dvm.runtime.defmeth.dumpClasses
+            dump class files under DUMP_CLASS_FILES in <test_name> folder
+
+        -Dvm.runtime.defmeth.printStackTrace
+            print full stack traces for all errors and test failures
+
+        -Dvm.runtime.defmeth.traceClassRedefinition
+            trace class redefinition during testing
+
+LINKS
+
+    [1] "Design and Implementation of Default Methods in Hotspot JVM", by Keith McGuigan, 09/18/2012
+        http://cr.openjdk.java.net/~kamg/default_methods_in_hotspot.txt
+
+    [2] "Featherweight Defenders: A formal model for virtual extension methods in Java", by Brian Goetz, Robert Field, 03/27/2012
+        http://cr.openjdk.java.net/~briangoetz/lambda/featherweight-defenders.pdf
+
+    [3] "Interface evolution via virtual extension methods", by Brian Goetz, 4th draft, 06/2011
+        http://cr.openjdk.java.net/~briangoetz/lambda/Defender%20Methods%20v4.pdf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/RedefineTest.java	Wed May 23 17:09:49 2018 -0700
@@ -0,0 +1,235 @@
+/*
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package vm.runtime.defmeth;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import nsk.share.Pair;
+import nsk.share.TestFailure;
+import nsk.share.test.TestBase;
+import vm.runtime.defmeth.shared.DefMethTest;
+import vm.runtime.defmeth.shared.DefMethTestFailure;
+import vm.runtime.defmeth.shared.MemoryClassLoader;
+import vm.runtime.defmeth.shared.annotation.NotApplicableFor;
+import vm.runtime.defmeth.shared.builder.TestBuilder;
+import vm.runtime.defmeth.shared.executor.TestExecutor;
+import vm.runtime.defmeth.shared.data.Clazz;
+import vm.runtime.defmeth.shared.data.ConcreteClass;
+import vm.runtime.defmeth.shared.data.Interface;
+import vm.runtime.defmeth.shared.data.Tester;
+import static vm.runtime.defmeth.shared.ExecutionMode.*;
+
+/*
+ * Basic scenarios on class redefinition.
+ */
+public class RedefineTest extends DefMethTest {
+
+    public static void main(String[] args) {
+        TestBase.runTest(new RedefineTest(), args);
+    }
+
+    @Override
+    protected void configure() {
+        // There are no testers being generated for reflection-based scenarios,
+        // so scenarios on class redefinition don't work
+        String mode = factory.getExecutionMode();
+        if ( "REFLECTION".equals(mode) || "INVOKE_WITH_ARGS".equals(mode)) {
+            throw new TestFailure("RedefineTest isn't applicable to reflection-based execution scenario " +
+                    "(REDEFINE & INVOKE_WITH_ARGS).");
+        }
+    }
+
+    /**
+     * Run test {@code b1} w/ redefined {@code classes} from {@code b2}.
+     *
+     * @param b1
+     * @param b2
+     * @param classes
+     */
+    private void redefineAndRun(TestBuilder b1, TestBuilder b2, Clazz... classes) {
+        TestExecutor executor = b1.prepare();
+
+        getLog().info("Before");
+        List<Pair<Tester,Throwable>> errorsBefore =
+                executor.run(); // run b1
+
+        // redefine in b1
+        MemoryClassLoader cl = executor.getLoader(); // b1.cl
+        Map<String,byte[]> cf = b2.produce(); //
+        Map<String,byte[]> forRedef = new HashMap<>();
+        for (Clazz clz : classes) {
+            String name = clz.name();
+            forRedef.put(name, cf.get(name));
+        }
+
+        cl.modifyClasses(forRedef, factory.isRetransformClasses());
+
+        getLog().info("After");
+        List<Pair<Tester,Throwable>> errorsAfter =
+                executor.run();
+
+        if (!errorsBefore.isEmpty()) {
+            throw new DefMethTestFailure(errorsBefore);
+        }
+
+        if (!errorsAfter.isEmpty()) {
+            throw new DefMethTestFailure(errorsAfter);
+        }
+    }
+
+    /*
+     * Before redefinition:
+     *   interface I { public int m() { return 1; } }
+     *   class C extends I { public int m() { return 2; } }
+     *
+     * TEST: I i = new C(); i.m() == 2
+     * TEST: C c = new C(); c.m() == 2
+     *
+     * After redefinition:
+     *   interface I { public int m() { return 1; } }
+     *   class C extends I { public int m() { return 3; } }
+     *
+     * TEST: I i = new C(); i.m() == 3
+     * TEST: C c = new C(); c.m() == 3
+     */
+    @NotApplicableFor(modes = { REFLECTION, INVOKE_WITH_ARGS }) // reflection-based scenarios rely on checks in bytecode
+    public void testRedefineConcreteMethod() {
+        TestBuilder before = factory.getBuilder();
+        { // Before redefinition
+            Interface I = before.intf("I")
+                    .defaultMethod("m", "()I").returns(1).build()
+                .build();
+            ConcreteClass C = before.clazz("C").implement(I)
+                    .concreteMethod("m", "()I").returns(2).build()
+                .build();
+
+            before.test().callSite(I, C, "m", "()I").returns(2).done()
+                  .test().callSite(C, C, "m", "()I").returns(2).done();
+        }
+
+        { // After redefinition
+            TestBuilder after = factory.getBuilder();
+
+            Interface I = after.intf("I")
+                    .defaultMethod("m", "()I").returns(1).build()
+                .build();
+            ConcreteClass C = after.clazz("C").implement(I)
+                    .concreteMethod("m", "()I").returns(3).build()
+                .build();
+
+            Tester T1 = after.test().callSite(I, C, "m", "()I").returns(3).build();
+            Tester T2 = after.test().callSite(C, C, "m", "()I").returns(3).build();
+
+            redefineAndRun(before, after, C, T1, T2);
+        }
+    }
+
+    /*
+     * Before redefinition:
+     *   interface I { public int m() { return 1; } }
+     *   class C extends I { public int m() { return 2; } }
+     *
+     * TEST: I i = new C(); i.m() == 2
+     * TEST: C c = new C(); c.m() == 2
+     *
+     * After redefinition:
+     *   interface I { public int m() { return 3; } }
+     *   class C extends I { public int m() { return 2; } }
+     *
+     * TEST: I i = new C(); i.m() == 2
+     * TEST: C c = new C(); c.m() == 2
+     */
+    @NotApplicableFor(modes = { REFLECTION, INVOKE_WITH_ARGS }) // reflection-based scenarios rely on checks in bytecode
+    public void testRedefineDefaultMethod() {
+        TestBuilder before = factory.getBuilder();
+        { // Before redefinition
+            Interface I = before.intf("I")
+                    .defaultMethod("m", "()I").returns(1).build()
+                .build();
+            ConcreteClass C = before.clazz("C").implement(I)
+                    .concreteMethod("m", "()I").returns(2).build()
+                .build();
+
+            before.test().callSite(I, C, "m", "()I").returns(2).done()
+                  .test().callSite(C, C, "m", "()I").returns(2).done();
+        }
+
+        { // After redefinition
+            TestBuilder after = factory.getBuilder();
+
+            Interface I = after.intf("I")
+                    .defaultMethod("m", "()I").returns(3).build()
+                .build();
+            ConcreteClass C = after.clazz("C").implement(I)
+                    .concreteMethod("m", "()I").returns(2).build()
+                .build();
+
+            redefineAndRun(before, after, C);
+        }
+    }
+
+    /*
+     * Before redefinition:
+     *   interface I { public int m() { return 1; } }
+     *   class C extends I {}
+     *
+     * TEST: I i = new C(); i.m() == 1
+     * TEST: C c = new C(); c.m() == 1
+     *
+     * After redefinition:
+     *   interface I { public int m() { return 2; } }
+     *   class C extends I {}
+     *
+     * TEST: I i = new C(); i.m() == 2
+     * TEST: C c = new C(); c.m() == 2
+     */
+    @NotApplicableFor(modes = { REFLECTION, INVOKE_WITH_ARGS }) // reflection-based scenarios rely on checks in bytecode
+    public void testRedefineDefMethInConcreteClass() {
+        TestBuilder before = factory.getBuilder();
+        { // Before redefinition
+            Interface I = before.intf("I")
+                    .defaultMethod("m", "()I").returns(1).build()
+                .build();
+            ConcreteClass C = before.clazz("C").implement(I).build();
+
+            before.test().callSite(I, C, "m", "()I").returns(1).done()
+                  .test().callSite(C, C, "m", "()I").returns(1).done();
+        }
+
+        { // After redefinition
+            TestBuilder after = factory.getBuilder();
+
+            Interface I = after.intf("I")
+                    .defaultMethod("m", "()I").returns(2).build()
+                .build();
+            ConcreteClass C = after.clazz("C").implement(I).build();
+
+            Tester T1 = after.test().callSite(I, C, "m", "()I").returns(2).build();
+            Tester T2 = after.test().callSite(C, C, "m", "()I").returns(2).build();
+
+            redefineAndRun(before, after, I, T1, T2);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/StaticMethodsTest.java	Wed May 23 17:09:49 2018 -0700
@@ -0,0 +1,838 @@
+/*
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package vm.runtime.defmeth;
+
+import nsk.share.test.TestBase;
+import vm.runtime.defmeth.shared.DefMethTest;
+import vm.runtime.defmeth.shared.annotation.Crash;
+import vm.runtime.defmeth.shared.data.*;
+import vm.runtime.defmeth.shared.builder.TestBuilder;
+import vm.runtime.defmeth.shared.annotation.NotApplicableFor;
+import static vm.runtime.defmeth.shared.data.method.body.CallMethod.Invoke.*;
+import static vm.runtime.defmeth.shared.data.method.body.CallMethod.IndexbyteOp.*;
+import static vm.runtime.defmeth.shared.ExecutionMode.*;
+
+/*
+ * Scenarios on static methods in interfaces.
+ */
+public class StaticMethodsTest extends DefMethTest {
+
+    public static void main(String[] args) {
+        TestBase.runTest(new StaticMethodsTest(), args);
+    }
+
+    // static method in interface
+    /*
+     * testStaticMethod
+     *
+     * interface I {
+     *  default static public int m() { return 1; }
+     * }
+     *
+     * class C implements I {}
+     */
+    public void testStaticMethod() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I")
+                    .static_().public_().returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().staticCallSite(I, "m", "()I").returns(1).done()
+
+        .run();
+    }
+
+    // invoke[virtual|interface|special] from same/subintf
+    /*
+     * testInvokeVirtual
+     *
+     * interface I {
+     *  default static public int staticM() { return 1; }
+     *  default public int m() { return ((I)this).staticM(); }
+     * }
+     *
+     * class C implements I {}
+     */
+    public void testInvokeVirtual() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("staticM", "()I")
+                    .static_().public_().returns(1).build()
+
+                // force an invokevirtual MR of staticM()
+                .defaultMethod("m", "()I")
+                    .invoke(VIRTUAL, b.intfByName("I"), null, "staticM", "()I", METHODREF).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().staticCallSite(I, "staticM", "()I").returns(1).done()
+
+         .test().callSite(I, C, "m", "()I").throws_(IncompatibleClassChangeError.class).done()
+         .test().callSite(C, C, "m", "()I").throws_(IncompatibleClassChangeError.class).done()
+
+        .run();
+    }
+
+    /*
+     * testInvokeIntf
+     *
+     * interface I {
+     *  default static public int staticM() { return 1; }
+     *  default public int m() { return ((I)this).staticM(); }
+     * }
+     *
+     * class C implements I {}
+     */
+    public void testInvokeIntf() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("staticM", "()I")
+                    .static_().public_().returns(1).build()
+
+                .defaultMethod("m", "()I")
+                    .invoke(INTERFACE, b.intfByName("I"), null, "staticM", "()I", CALLSITE).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().staticCallSite(I, "staticM", "()I").returns(1).done()
+
+         .test().callSite(I, C, "m", "()I").throws_(IncompatibleClassChangeError.class).done()
+         .test().callSite(C, C, "m", "()I").throws_(IncompatibleClassChangeError.class).done()
+
+        .run();
+    }
+
+    /*
+     * testInvokeSpecial
+     *
+     * interface I {
+     *  default static public int staticM() { return 1; }
+     *  default public int m() { return I.super.staticM(); }
+     * }
+     *
+     * class C implements I {}
+     */
+    public void testInvokeSpecial() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("staticM", "()I")
+                    .static_().public_().returns(1).build()
+
+                .defaultMethod("m", "()I")
+                    .invoke(SPECIAL, b.intfByName("I"), null, "staticM", "()I", CALLSITE).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().staticCallSite(I, "staticM", "()I").returns(1).done()
+
+         .test().callSite(I, C, "m", "()I").throws_(IncompatibleClassChangeError.class).done()
+         .test().callSite(C, C, "m", "()I").throws_(IncompatibleClassChangeError.class).done()
+
+        .run();
+    }
+
+    /*
+     * testStaticVsDefault
+     *
+     * interface I {
+     *  default static public int m() { return 1; }
+     *  default public int m() { return 2; }
+     * }
+     *
+     * class C implements I {}
+     */
+    public void testStaticVsDefault() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I")
+                    .static_().public_().returns(1).build()
+                .defaultMethod("m", "()I")
+                    .public_().returns(2).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        b.test().staticCallSite(I, "m", "()I").throws_(ClassFormatError.class).done()
+
+         // FIXME: throws exception during an attempt to lookup Test2.test() method
+
+         // Invalid test. ClassFormatError is thrown at verification time, rather
+         // than execution time.
+         // .test().callSite(I, C, "m", "()I").throws_(ClassFormatError.class).done()
+         .test().callSite(C, C, "m", "()I").throws_(ClassFormatError.class).done()
+
+        .run();
+    }
+
+    // call static method from default method
+    /*
+     * testInvokeFromDefaultMethod
+     *
+     * interface I {
+     *  default static public int staticPublicM() { return 1; }
+     *  default public int invokePublic() { return I.staticPublicM(); }
+     *  default static private int staticPrivateM() { return 1; }
+     *  default public int invokePrivate() { return I.staticPrivateM(); }
+     * }
+     *
+     * class C implements I {}
+     */
+    public void testInvokeFromDefaultMethod() throws Exception {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("staticPublicM", "()I")
+                    .static_().public_().returns(1).build()
+                .defaultMethod("invokePublic", "()I")
+                    .invokeStatic(b.intfByName("I"), "staticPublicM", "()I").build()
+
+                .defaultMethod("staticPrivateM", "()I")
+                    .static_().private_().returns(1).build()
+                .defaultMethod("invokePrivate", "()I")
+                    .invokeStatic(b.intfByName("I"), "staticPrivateM", "()I").build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        Class expectedClass;
+        if (factory.getExecutionMode().equals("REFLECTION")) {
+            expectedClass = NoSuchMethodException.class;
+        } else {
+            expectedClass = IllegalAccessError.class;
+        }
+
+        // call static method from another class
+        b.test().staticCallSite(I, "staticPublicM", "()I").returns(1).done()
+         .test().staticCallSite(I, "staticPrivateM", "()I").throws_(expectedClass).done()
+
+         // call public static method from default method
+         .test().callSite(I, C, "invokePublic", "()I").returns(1).done()
+         .test().callSite(C, C, "invokePublic", "()I").returns(1).done()
+
+         // call private static method from default method
+         .test().callSite(I, C, "invokePrivate", "()I").returns(1).done()
+         .test().callSite(C, C, "invokePrivate", "()I").returns(1).done()
+
+        .run();
+    }
+
+    // call static method from implementing subclass
+    /*
+     * testInvokeFromSubclass
+     *
+     * interface I {
+     *  default static public int staticPublicM() { return 1; }
+     *  default static private int staticPrivateM() { return 1; }
+     * }
+     *
+     * class C implements I {
+     *  public int invokePublic() { return I.staticPublicM(); }
+     *  public int invokePrivate() { return I.staticPublicM(); }
+     *
+     * I.staticPublicM();  ==> returns 1;
+     * I.staticPrivateM(); ==> Either NSME or IAE depending on execution mode
+     * C c = new C(); c.invokePublic(); ==> returns 1 or if -ver < 52 IAE or VerifyError
+     * C c = new C(); c.invokePrivate() ==> IAE or if -ver < 52, IAE or VerifyError
+     * }
+     */
+
+    @NotApplicableFor(modes = { REDEFINITION }) // Can't redefine a class that gets error during loading
+    public void testInvokeFromSubclass() throws Exception {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("staticPublicM", "()I")
+                    .static_().public_().returns(1).build()
+
+                .defaultMethod("staticPrivateM", "()I")
+                    .static_().private_().returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I)
+                .concreteMethod("invokePublic", "()I")
+                    .invokeStatic(b.intfByName("I"), "staticPublicM", "()I").build()
+                .concreteMethod("invokePrivate", "()I")
+                    .invokeStatic(b.intfByName("I"), "staticPrivateM", "()I").build()
+            .build();
+
+        Class expectedError1;
+        if (factory.getExecutionMode().equals("REFLECTION")) {
+            expectedError1 = NoSuchMethodException.class;
+        } else {
+            expectedError1 = IllegalAccessError.class;
+        }
+
+        // Adjust for -ver < 52
+        if (factory.getVer() >=52) {
+            // call static method from another class
+            b.test().staticCallSite(I, "staticPublicM", "()I").returns(1).done()
+             .test().staticCallSite(I, "staticPrivateM", "()I").throws_(expectedError1).done()
+
+            // call static method from implementing subclass
+             .test().callSite(C, C, "invokePublic", "()I").returns(1).done()
+             .test().callSite(C, C, "invokePrivate", "()I").throws_(IllegalAccessError.class).done()
+
+            .run();
+        } else {
+            // call static method from another class
+            b.test().staticCallSite(I, "staticPublicM", "()I").returns(1).done()
+             .test().staticCallSite(I, "staticPrivateM", "()I").throws_(expectedError1).done()
+
+            // call static method from implementing subclass
+            // invokestatic IMR - not supported for ver < 52
+             .test().callSite(C, C, "invokePublic",  "()I").throws_(VerifyError.class).done()
+             .test().callSite(C, C, "invokePrivate", "()I").throws_(VerifyError.class).done()
+
+            .run();
+        }
+    }
+
+    // static method doesn't participate in default method analysis:
+    //   method overriding
+    /*
+     * testNotInherited
+     *
+     * interface I {
+     *  default static public int m() { return 1; }
+     * }
+     *
+     * class C implements I {}
+     */
+    public void testNotInherited() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I")
+                    .static_().public_().returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I).build();
+
+        if (!factory.getExecutionMode().equals("REFLECTION")) {
+            b.test().staticCallSite(I, "m", "()I").returns(1).done()
+              // invokeinterface to static method ==> ICCE
+              .test().callSite(I, C, "m", "()I").throws_(IncompatibleClassChangeError.class).done()
+             .test().callSite(C, C, "m", "()I").throws_(NoSuchMethodError.class).done()
+            .run();
+        } else {
+            b.test().staticCallSite(I, "m", "()I").returns(1).done()
+             .test().callSite(I, C, "m", "()I").returns(1).done()
+             .test().callSite(C, C, "m", "()I").throws_(NoSuchMethodError.class).done()
+            .run();
+        }
+    }
+
+    /*
+     * testDefaultVsConcrete
+     *
+     * interface I {
+     *  default static public int m() { return 1; }
+     * }
+     *
+     * class C implements I {
+     *  public int m() { return 2; }
+     * }
+     * TEST: I o = new C(); o.m()I throws ICCE
+     * TEST: C o = new C(); o.m()I == 2
+     */
+    public void testDefaultVsConcrete() {
+        TestBuilder b = factory.getBuilder();
+
+        Interface I = b.intf("I")
+                .defaultMethod("m", "()I")
+                    .static_().public_().returns(1).build()
+            .build();
+
+        ConcreteClass C = b.clazz("C").implement(I)
+                .concreteMethod("m", "()I").returns(2).build()
+            .build();
+
+        if (!factory.getExecutionMode().equals("REFLECTION")) {
+            // invokeinterface to static method ==> ICCE
+            b.test().callSite(I, C, "m", "()I").throws_(IncompatibleClassChangeError.class).done()
+             .test().callSite(C, C, "m", "()I").returns(2).done().run();
+        } else {
+            b.test().callSite(I, C, "m", "()I").returns(1).done()
+             .test().callSite(C, C, "m", "()I").returns(2).done().run();
+        }
+