140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz/* 240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * Licensed to the Apache Software Foundation (ASF) under one or more 340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * contributor license agreements. See the NOTICE file distributed with 440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * this work for additional information regarding copyright ownership. 540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * The ASF licenses this file to You under the Apache License, Version 2.0 640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * (the "License"); you may not use this file except in compliance with 740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * the License. You may obtain a copy of the License at 840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * 940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * http://www.apache.org/licenses/LICENSE-2.0 1040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * 1140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * Unless required by applicable law or agreed to in writing, software 1240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * distributed under the License is distributed on an "AS IS" BASIS, 1340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * 1540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * See the License for the specific language governing permissions and 1640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * limitations under the License. 1740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz */ 1840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 1940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertzpackage org.apache.harmony.jpda.tests.jdwp.StackFrame; 2040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 2140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertzimport org.apache.harmony.jpda.tests.framework.TestErrorException; 2240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertzimport org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer; 2340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertzimport org.apache.harmony.jpda.tests.share.SyncDebuggee; 2440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 2554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertzimport java.lang.reflect.InvocationTargetException; 2654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertzimport java.lang.reflect.Method; 2754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 2840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz/** 2940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz * Debuggee for GetValues002Test and SetValues002Test. 3040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz */ 3140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertzpublic class StackTrace002Debuggee extends SyncDebuggee { 3240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Signals to select which method the debuggee needs to call. 3340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String BOOLEAN_SIGNAL = "runBreakpointBoolean"; 3440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String BYTE_SIGNAL = "runBreakpointByte"; 3540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String CHAR_SIGNAL = "runBreakpointChar"; 3640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String SHORT_SIGNAL = "runBreakpointShort"; 3740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String INT_SIGNAL = "runBreakpointInt"; 3840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String INT_METHOD2_SIGNAL = "runBreakpointInt2"; 3954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz static final String INT_CONSTANT_METHOD_SIGNAL = "runBreakpointIntConstant"; 4054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz static final String INT_TWO_CONSTANTS_METHOD_SIGNAL = "runBreakpointIntTwoConstants"; 4154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz static final String INT_CONSTANT_METHOD_WITH_EXCEPTION_SIGNAL = 4254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz "runBreakpointIntConstantWithException"; 4354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz static final String INT_CONSTANT_METHOD_WITH_EXCEPTION_IN_CALLEE_SIGNAL = 4454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz "runBreakpointIntConstantWithExceptionInCallee"; 4554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz static final String INT_CONSTANT_METHOD_WITH_EXCEPTION_IN_CALLER_SIGNAL = 4654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz "runBreakpointIntConstantWithExceptionInCaller"; 4754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz static final String INT_CONSTANT_METHOD_WITH_EXCEPTION_FROM_NATIVE_SIGNAL = 4854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz "runBreakpointIntConstantWithExceptionAndNativeTransition"; 4940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String LONG_METHOD_SIGNAL = "runBreakpointLong"; 5040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String FLOAT_METHOD = "runBreakpointFloat"; 5140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String DOUBLE_METHOD = "runBreakpointDouble"; 5240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String OBJECT_SIGNAL = "runBreakpointObject"; 5354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz static final String OBJECT_WITH_EXCEPTION_SIGNAL = "runBreakpointObjectWithException"; 5454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz static final String OBJECT_METHOD_WITH_EXCEPTION_IN_CALLEE_SIGNAL = 5554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz "runBreakpointObjectWithExceptionInCallee"; 5654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz static final String OBJECT_METHOD_WITH_EXCEPTION_IN_CALLER_SIGNAL = 5754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz "runBreakpointObjectWithExceptionInCaller"; 5854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz static final String OBJECT_METHOD_WITH_EXCEPTION_FROM_NATIVE_SIGNAL = 5954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz "runBreakpointObjectWithExceptionAndNativeTransition"; 6040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String ARRAY_SIGNAL = "runBreakpointArray"; 6140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String CLASS_SIGNAL = "runBreakpointClass"; 6240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String CLASS_LOADER_SIGNAL = "runBreakpointClassLoader"; 6340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String STRING_SIGNAL = "runBreakpointString"; 6440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String THREAD_SIGNAL = "runBreakpointThread"; 6540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String THREAD_GROUP_SIGNAL = "runBreakpointThreadGroup"; 6640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String ARRAY_AS_OBJECT_SIGNAL = "runBreakpointArrayAsObject"; 6740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String CLASS_AS_OBJECT_SIGNAL = "runBreakpointClassAsObject"; 6840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String CLASS_LOADER_AS_OBJECT_SIGNAL = "runBreakpointClassLoaderAsObject"; 6940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String STRING_AS_OBJECT_SIGNAL = "runBreakpointStringAsObject"; 7040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String THREAD_AS_OBJECT_SIGNAL = "runBreakpointThreadAsObject"; 7140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String THREAD_GROUP_AS_OBJECT_SIGNAL = "runBreakpointThreadGroupAsObject"; 7240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 7340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Values used to check StackFrame.GetValues. 7440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final boolean BOOLEAN_PARAM_VALUE = true; 7540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final byte BYTE_PARAM_VALUE = 123; 7640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final char CHAR_PARAM_VALUE = '@'; 7740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final short SHORT_PARAM_VALUE = 12345; 7840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final int INT_PARAM_VALUE = 123456789; 7940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final long LONG_PARAM_VALUE = 102030405060708090L; 8040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final float FLOAT_PARAM_VALUE = 123.456f; 8140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final double DOUBLE_PARAM_VALUE = 0.123456789; 8240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final Object OBJECT_PARAM_VALUE = new Object(); 8340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final int[] ARRAY_PARAM_VALUE = new int[]{1, 2, 3, 4, 5}; 8440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final Class<?> CLASS_PARAM_VALUE = StackTrace002Debuggee.class; 8540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final ClassLoader CLASS_LOADER_PARAM_VALUE = CLASS_PARAM_VALUE.getClassLoader(); 8640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String STRING_PARAM_VALUE = "this is a string object"; 8740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final Thread THREAD_PARAM_VALUE = new Thread("this is a thread"); 8840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final ThreadGroup THREAD_GROUP_PARAM_VALUE = THREAD_PARAM_VALUE.getThreadGroup(); 8940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 9040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Values used to check StackFrame.SetValues. 9140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final boolean BOOLEAN_PARAM_VALUE_TO_SET = !BOOLEAN_PARAM_VALUE; 9240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final byte BYTE_PARAM_VALUE_TO_SET = -BYTE_PARAM_VALUE; 9340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final char CHAR_PARAM_VALUE_TO_SET = '%'; 9440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final short SHORT_PARAM_VALUE_TO_SET = -SHORT_PARAM_VALUE; 9540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final int INT_PARAM_VALUE_TO_SET = -INT_PARAM_VALUE; 9640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final long LONG_PARAM_VALUE_TO_SET = -LONG_PARAM_VALUE; 9740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final float FLOAT_PARAM_VALUE_TO_SET = -FLOAT_PARAM_VALUE; 9840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final double DOUBLE_PARAM_VALUE_TO_SET = -DOUBLE_PARAM_VALUE; 9940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final Object OBJECT_PARAM_VALUE_TO_SET = new Object(); 10040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final int[] ARRAY_PARAM_VALUE_TO_SET = new int[]{5, 4, 3, 2, 1}; 10140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final Class<?> CLASS_PARAM_VALUE_TO_SET = Object.class; 10240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final ClassLoader CLASS_LOADER_PARAM_VALUE_TO_SET = 10340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz CLASS_PARAM_VALUE_TO_SET.getClassLoader(); 10440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final String STRING_PARAM_VALUE_TO_SET = "this is another string object"; 10540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final Thread THREAD_PARAM_VALUE_TO_SET = new Thread("this is another thread"); 10640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static final ThreadGroup THREAD_GROUP_PARAM_VALUE_TO_SET = 10740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz THREAD_PARAM_VALUE_TO_SET.getThreadGroup(); 10840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 10940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // A reference to 'this' debuggee. 11040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz static Object THIS_OBJECT; 11140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 11254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz private static class TestException extends Exception { 11354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 11454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 11540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public static void main(String[] args) { 11640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runDebuggee(StackTrace002Debuggee.class); 11740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 11840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 11940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz @Override 12040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void run() { 12140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz THIS_OBJECT = this; 12240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 12340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY); 12440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 12540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Wait for test setup. 12640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz String signal = synchronizer.receiveMessage(); 12740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 12840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Invoke the method requested by the test. 12940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz switch (signal) { 13040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case BOOLEAN_SIGNAL: 13140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointBoolean(BOOLEAN_PARAM_VALUE); 13240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 13340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case BYTE_SIGNAL: 13440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointByte(BYTE_PARAM_VALUE); 13540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 13640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case CHAR_SIGNAL: 13740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointChar(CHAR_PARAM_VALUE); 13840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 13940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case SHORT_SIGNAL: 14040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointShort(SHORT_PARAM_VALUE); 14140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 14240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case INT_SIGNAL: 14340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointInt(INT_PARAM_VALUE); 14440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 14540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case INT_METHOD2_SIGNAL: 14640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointInt2(INT_PARAM_VALUE); 14740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 14854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz case INT_CONSTANT_METHOD_SIGNAL: 14954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointIntConstant(); 15054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz break; 15154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz case INT_TWO_CONSTANTS_METHOD_SIGNAL: 15254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointIntTwoConstants(); 15354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz break; 15454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz case INT_CONSTANT_METHOD_WITH_EXCEPTION_SIGNAL: 15554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointIntConstantWithException(); 15654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz break; 15754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz case INT_CONSTANT_METHOD_WITH_EXCEPTION_IN_CALLEE_SIGNAL: 15854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointIntConstantWithExceptionInCallee(); 15954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz break; 16054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz case INT_CONSTANT_METHOD_WITH_EXCEPTION_IN_CALLER_SIGNAL: 16154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointIntConstantWithExceptionInCaller(); 16254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz break; 16354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz case INT_CONSTANT_METHOD_WITH_EXCEPTION_FROM_NATIVE_SIGNAL: 16454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointIntConstantWithExceptionAndNativeTransition(); 16554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz break; 16640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case LONG_METHOD_SIGNAL: 16740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointLong(LONG_PARAM_VALUE); 16840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 16940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case FLOAT_METHOD: 17040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointFloat(FLOAT_PARAM_VALUE); 17140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 17240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case DOUBLE_METHOD: 17340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointDouble(DOUBLE_PARAM_VALUE); 17440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 17540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case OBJECT_SIGNAL: 17640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointObject(OBJECT_PARAM_VALUE); 17740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 17854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz case OBJECT_WITH_EXCEPTION_SIGNAL: 17954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointObjectWithException(); 18054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz break; 18154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz case OBJECT_METHOD_WITH_EXCEPTION_IN_CALLEE_SIGNAL: 18254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointObjectWithExceptionInCallee(); 18354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz break; 18454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz case OBJECT_METHOD_WITH_EXCEPTION_IN_CALLER_SIGNAL: 18554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointObjectWithExceptionInCaller(); 18654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz break; 18754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz case OBJECT_METHOD_WITH_EXCEPTION_FROM_NATIVE_SIGNAL: 18854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointObjectWithExceptionAndNativeTransition(); 18954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz break; 19040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case ARRAY_SIGNAL: 19140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointArray(ARRAY_PARAM_VALUE); 19240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 19340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case CLASS_SIGNAL: 19440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointClass(CLASS_PARAM_VALUE); 19540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 19640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case CLASS_LOADER_SIGNAL: 19740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointClassLoader(CLASS_LOADER_PARAM_VALUE); 19840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 19940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case STRING_SIGNAL: 20040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointString(STRING_PARAM_VALUE); 20140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 20240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case THREAD_SIGNAL: 20340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointThread(THREAD_PARAM_VALUE); 20440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 20540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case THREAD_GROUP_SIGNAL: 20640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointThreadGroup(THREAD_GROUP_PARAM_VALUE); 20740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 20840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case ARRAY_AS_OBJECT_SIGNAL: 20940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointObject(ARRAY_PARAM_VALUE); 21040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 21140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case CLASS_AS_OBJECT_SIGNAL: 21240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointObject(CLASS_PARAM_VALUE); 21340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 21440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case CLASS_LOADER_AS_OBJECT_SIGNAL: 21540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointObject(CLASS_LOADER_PARAM_VALUE); 21640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 21740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case STRING_AS_OBJECT_SIGNAL: 21840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointObject(STRING_PARAM_VALUE); 21940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 22040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case THREAD_AS_OBJECT_SIGNAL: 22140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointObject(THREAD_PARAM_VALUE); 22240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 22340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz case THREAD_GROUP_AS_OBJECT_SIGNAL: 22440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz runBreakpointObject(THREAD_GROUP_PARAM_VALUE); 22540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz break; 22640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz default: 22740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz throw new TestErrorException("Unexpected signal \"" + signal + "\""); 22840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 22940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 23040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 23140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 23240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test boolean type. 23340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointBoolean(boolean param) { 23440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointBoolean(param); 23540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointBoolean(param); 23640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 23740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 23840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointBoolean(boolean param) { 23940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointBoolean(param=" + param + ")"); 24054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 24140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 24240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 24340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test byte type. 24440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointByte(byte param) { 24540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointByte(param); 24640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointByte(param); 24740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 24840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 24940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointByte(byte param) { 25040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointByte(param=" + param + ")"); 25154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 25240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 25340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 25440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test char type. 25540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointChar(char param) { 25640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointChar(param); 25740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointChar(param); 25840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 25940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 26040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointChar(char param) { 26140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointChar(param=" + param + ")"); 26254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 26340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 26440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 26540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test short type. 26640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointShort(short param) { 26740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointShort(param); 26840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointShort(param); 26940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 27040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 27140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointShort(short param) { 27240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointShort(param=" + param + ")"); 27354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 27440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 27540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 27640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test int type. 27740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointInt(int param) { 27840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointInt(param); 27940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointInt(param); 28040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 28140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 28240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointInt(int param) { 28340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointInt(param=" + param + ")"); 28454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 28540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 28640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 28740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointInt2(int param) { 28840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz int local = param; 28940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointInt2(local); 29040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz local = local + param; 29140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointInt2(local); 29240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 29340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 29440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointInt2(int param) { 29540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointInt2(param=" + param + ")"); 29654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 29754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 29854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 29954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Test int type with a constant. 30054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void runBreakpointIntConstant() { 30154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz int local = INT_PARAM_VALUE; 30254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointIntConstant(local); 30354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointIntConstant(local); 30454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 30554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 30654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void breakpointIntConstant(int param) { 30754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz logWriter.println("breakpointIntConstant(param=" + param + ")"); 30854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 30954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 31054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 31154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Test int type with two constants in the same frame. 31254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void runBreakpointIntTwoConstants() { 31354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz int local1 = INT_PARAM_VALUE; 31454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz int local2 = -INT_PARAM_VALUE; 31554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointIntTwoConstants(local1, local2); 31654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointIntTwoConstants(local1, local2); 31754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 31854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 31954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void breakpointIntTwoConstants(int param1, int param2) { 32054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz logWriter.println("breakpointIntTwoConstants(param1=" + param1 + 32154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz ", param2=" + param2 + ")"); 32254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 32354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 32454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 32554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Test setting a variable with a caught exception. 32654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void runBreakpointIntConstantWithException() { 32754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz int local = INT_PARAM_VALUE; 32854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 32954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointIntConstantWithException(local); 33054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 33154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 33254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 33354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointIntConstantWithException(local); 33454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 33554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 33654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 33754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 33854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Test setting a variable with a caught exception in the callee. 33954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void runBreakpointIntConstantWithExceptionInCallee() { 34054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz int local = INT_PARAM_VALUE; 34154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointIntConstantWithCaughtException(local); 34254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointIntConstantWithCaughtException(local); 34354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 34454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 34554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Test setting a variable with a caught exception in the caller. Because the frame will 34654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // be unwound after throwing the exception, setting the variable has no effect. 34754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void runBreakpointIntConstantWithExceptionInCaller() { 34854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Call twice to remain compatible with the test expecting 2 suspensions. 34954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 35054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointIntConstantWithExceptionInCallerImpl(); 35154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 35254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 35354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 35454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointIntConstantWithExceptionInCallerImpl(); 35554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 35654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 35754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 35854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 35954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void runBreakpointIntConstantWithExceptionInCallerImpl() throws TestException { 36054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz int local = INT_PARAM_VALUE; 36154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // We're going to throw in the callee and the exception is caught in our caller so we 36254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // won't execute the current frame anymore. 36354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointIntConstantWithException(local); 36454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 36554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 36654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz private void breakpointIntConstantWithCaughtException(int param) { 36754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 36854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointIntConstantWithException(param); 36954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 37054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 37154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 37254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 37354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void breakpointIntConstantWithException(int param) throws TestException { 37454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz logWriter.println("breakpointIntConstantWithException(param=" + param + ")"); 37554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 37654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz throw new TestException(); 37754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 37854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 37954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Test setting a variable with a caught exception with a native transition (using reflect). 38054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void runBreakpointIntConstantWithExceptionAndNativeTransition() { 38154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz int local = INT_PARAM_VALUE; 38254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 38354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointIntConstantWithExceptionAndNativeTransition(local); 38454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 38554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 38654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 38754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointIntConstantWithExceptionAndNativeTransition(local); 38854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 38954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 39054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 39154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 39254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz private void breakpointIntConstantWithExceptionAndNativeTransition(int local) throws TestException { 39354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 39454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz Method suspensionMethod = 39554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz StackTrace002Debuggee.class.getDeclaredMethod("breakpointIntConstantWithException", 39654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz new Class<?>[]{int.class}); 39754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz suspensionMethod.invoke(this, local); 39854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException e) { 39954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz throw new TestErrorException(e); 40054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (InvocationTargetException e) { 40154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz if (e.getTargetException() instanceof TestException) { 40254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz throw (TestException) e.getTargetException(); 40354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } else { 40454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz throw new TestErrorException(e); 40554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 40654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 40740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 40840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 40940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test long type. 41040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointLong(long param) { 41140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointLong(param); 41240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointLong(param); 41340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 41440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 41540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointLong(long param) { 41640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointLong(param=" + param + ")"); 41754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 41840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 41940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 42040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test float type. 42140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointFloat(float param) { 42240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointFloat(param); 42340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointFloat(param); 42440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 42540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 42640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointFloat(float param) { 42740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointFloat(param=" + param + ")"); 42854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 42940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 43040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 43140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test double type. 43240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointDouble(double param) { 43340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointDouble(param); 43440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointDouble(param); 43540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 43640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 43740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointDouble(double param) { 43840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointDouble(param=" + param + ")"); 43954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 44040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 44140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 44240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test java.lang.Object type. 44340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointObject(Object param) { 44440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointObject(param); 44540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointObject(param); 44640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 44740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 44840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointObject(Object param) { 44940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointObject(param=\"" + param + "\")"); 45054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 45154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 45254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 45354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Test setting a java.lang.Object variable with a caught exception. 45454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void runBreakpointObjectWithException() { 45554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz Object local = OBJECT_PARAM_VALUE; 45654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 45754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointObjectWithException(local); 45854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 45954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 46054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 46154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointObjectWithException(local); 46254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 46354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 46454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 46554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 46654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void breakpointObjectWithException(Object param) throws TestException { 46754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz logWriter.println("breakpointObjectWithException(param=" + param + ")"); 46854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 46954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz throw new TestException(); 47054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 47154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 47254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Test setting a java.lang.Object variable with a caught exception in the callee. 47354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void runBreakpointObjectWithExceptionInCallee() { 47454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz Object local = OBJECT_PARAM_VALUE; 47554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointObjectWithCaughtException(local); 47654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointObjectWithCaughtException(local); 47754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 47854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 47954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Test setting a java.lang.Object variable with a caught exception in the caller. 48054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Because the frame will be unwound after throwing the exception, setting the 48154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // variable has no effect. 48254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void runBreakpointObjectWithExceptionInCaller() { 48354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Call twice to remain compatible with the test expecting 2 suspensions. 48454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 48554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointObjectWithExceptionInCallerImpl(); 48654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 48754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 48854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 48954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz runBreakpointObjectWithExceptionInCallerImpl(); 49054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 49154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 49254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 49354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 49454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void runBreakpointObjectWithExceptionInCallerImpl() throws TestException { 49554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz Object local = OBJECT_PARAM_VALUE; 49654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // We're going to throw in the callee and the exception is caught in our caller so we 49754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // won't execute the current frame anymore. 49854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointObjectWithException(local); 49954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 50054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 50154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz private void breakpointObjectWithCaughtException(Object param) { 50254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 50354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointObjectWithException(param); 50454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 50554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 50654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 50754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 50854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Test setting a java.lang.Object variable with a caught exception with a native 50954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // transition (using reflect). 51054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz public void runBreakpointObjectWithExceptionAndNativeTransition() { 51154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz Object local = OBJECT_PARAM_VALUE; 51254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 51354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointObjectWithExceptionAndNativeTransition(local); 51454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 51554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 51654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 51754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz breakpointObjectWithExceptionAndNativeTransition(local); 51854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (TestException expected) { 51954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 52054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 52154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 52254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz private void breakpointObjectWithExceptionAndNativeTransition(Object local) 52354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz throws TestException { 52454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz try { 52554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz Method suspensionMethod = 52654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz StackTrace002Debuggee.class.getDeclaredMethod("breakpointObjectWithException", 52754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz new Class<?>[]{Object.class}); 52854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz suspensionMethod.invoke(this, local); 52954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException e) { 53054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz throw new TestErrorException(e); 53154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } catch (InvocationTargetException e) { 53254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz if (e.getTargetException() instanceof TestException) { 53354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz throw (TestException) e.getTargetException(); 53454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } else { 53554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz throw new TestErrorException(e); 53654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 53754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 53840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 53940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 54040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test array type. 54140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointArray(int[] param) { 54240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointArray(param); 54340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointArray(param); 54440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 54540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 54640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointArray(int[] param) { 54740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointArray(param=\"" + param + "\")"); 54854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 54940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 55040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 55140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test java.lang.Class type. 55240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointClass(Class<?> param) { 55340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointClass(param); 55440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointClass(param); 55540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 55640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 55740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointClass(Class<?> param) { 55840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointClass(param=\"" + param + "\")"); 55954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 56040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 56140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 56240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test java.lang.ClassLoader type. 56340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointClassLoader(ClassLoader param) { 56440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointClassLoader(param); 56540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointClassLoader(param); 56640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 56740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 56840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointClassLoader(ClassLoader param) { 56940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointClassLoader(param=\"" + param + "\")"); 57054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 57140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 57240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 57340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test java.lang.String type. 57440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointString(String param) { 57540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointString(param); 57640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointString(param); 57740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 57840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 57940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointString(String param) { 58040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointString(param=\"" + param + "\")"); 58154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 58240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 58340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 58440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test java.lang.Thread type. 58540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointThread(Thread param) { 58640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointThread(param); 58740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointThread(param); 58840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 58940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 59040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointThread(Thread param) { 59140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointThread(param=\"" + param + "\")"); 59254d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 59340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 59440b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 59540b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz // Test java.lang.ThreadGroup type. 59640b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void runBreakpointThreadGroup(ThreadGroup param) { 59740b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointThreadGroup(param); 59840b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz breakpointThreadGroup(param); 59940b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 60040b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz 60140b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz public void breakpointThreadGroup(ThreadGroup param) { 60240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz logWriter.println("breakpointThreadGroup(param=\"" + param + "\")"); 60354d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizeWithTest(); 60454d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz } 60554d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 60654d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz private void synchronizeWithTest() { 60754d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Sends thread's name so the test can find its thread id. 60854d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizer.sendMessage(Thread.currentThread().getName()); 60954d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz 61054d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz // Wait for the test to signal us after its checks. 61154d7f328676ce7f8ad8d9c916c032ccc309ad136Sebastien Hertz synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE); 61240b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz } 61340b8281a8c24db9614ed79c32e296a67abb31786Sebastien Hertz}