< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/deopt/RethrowDeoptMaterializeTest.java

Print this page




  29 import org.graalvm.compiler.api.directives.GraalDirectives;
  30 import org.graalvm.compiler.core.test.GraalCompilerTest;
  31 import org.graalvm.compiler.nodes.FrameState;
  32 import org.junit.Test;
  33 
  34 public final class RethrowDeoptMaterializeTest extends GraalCompilerTest {
  35 
  36     private static final Object RETURN_VALUE = "1 2 3";
  37     private static final RuntimeException DUMMY_EXCEPTION = new RuntimeException();
  38 
  39     static class MyException extends RuntimeException {
  40         private static final long serialVersionUID = 0L;
  41 
  42         MyException(Throwable cause) {
  43             super(cause);
  44         }
  45 
  46         @SuppressWarnings("sync-override")
  47         @Override
  48         public final Throwable fillInStackTrace() {
  49             return null;
  50         }
  51     }
  52 
  53     public static Object executeDeoptRethrow(int action) {
  54 
  55         try {
  56             if (action != 0) {
  57                 throw new MyException(DUMMY_EXCEPTION);
  58             } else if (action == 1) {
  59                 throw new MyException(null);
  60             }
  61         } catch (RuntimeException t) {
  62             Throwable e = t.getCause();
  63             GraalDirectives.deoptimize();
  64             if (e != DUMMY_EXCEPTION) {
  65                 throw t;
  66             }
  67         }
  68         return RETURN_VALUE;
  69     }


  29 import org.graalvm.compiler.api.directives.GraalDirectives;
  30 import org.graalvm.compiler.core.test.GraalCompilerTest;
  31 import org.graalvm.compiler.nodes.FrameState;
  32 import org.junit.Test;
  33 
  34 public final class RethrowDeoptMaterializeTest extends GraalCompilerTest {
  35 
  36     private static final Object RETURN_VALUE = "1 2 3";
  37     private static final RuntimeException DUMMY_EXCEPTION = new RuntimeException();
  38 
  39     static class MyException extends RuntimeException {
  40         private static final long serialVersionUID = 0L;
  41 
  42         MyException(Throwable cause) {
  43             super(cause);
  44         }
  45 
  46         @SuppressWarnings("sync-override")
  47         @Override
  48         public final Throwable fillInStackTrace() {
  49             return this;
  50         }
  51     }
  52 
  53     public static Object executeDeoptRethrow(int action) {
  54 
  55         try {
  56             if (action != 0) {
  57                 throw new MyException(DUMMY_EXCEPTION);
  58             } else if (action == 1) {
  59                 throw new MyException(null);
  60             }
  61         } catch (RuntimeException t) {
  62             Throwable e = t.getCause();
  63             GraalDirectives.deoptimize();
  64             if (e != DUMMY_EXCEPTION) {
  65                 throw t;
  66             }
  67         }
  68         return RETURN_VALUE;
  69     }
< prev index next >