< prev index next >

test/jdk/java/foreign/stackwalk/TestStackWalk.java

Print this page
*** 23,10 ***
--- 23,11 ---
  
  /*
   * @test id=default_gc
   * @requires ((os.arch == "amd64" | os.arch == "x86_64") & sun.arch.data.model == "64") | os.arch == "aarch64"
   * @library /test/lib
+  * @library ../
   * @build sun.hotspot.WhiteBox
   * @run driver jdk.test.lib.helpers.ClassFileInstaller sun.hotspot.WhiteBox
   *
   * @run main/othervm
   *   -Xbootclasspath/a:.

*** 50,10 ***
--- 51,11 ---
  /*
   * @test id=zgc
   * @requires (((os.arch == "amd64" | os.arch == "x86_64") & sun.arch.data.model == "64") | os.arch == "aarch64")
   * @requires vm.gc.Z
   * @library /test/lib
+  * @library ../
   * @build sun.hotspot.WhiteBox
   * @run driver jdk.test.lib.helpers.ClassFileInstaller sun.hotspot.WhiteBox
   *
   * @run main/othervm
   *   -Xbootclasspath/a:.

*** 78,10 ***
--- 80,11 ---
  /*
   * @test id=shenandoah
   * @requires (((os.arch == "amd64" | os.arch == "x86_64") & sun.arch.data.model == "64") | os.arch == "aarch64")
   * @requires vm.gc.Shenandoah
   * @library /test/lib
+  * @library ../
   * @build sun.hotspot.WhiteBox
   * @run driver jdk.test.lib.helpers.ClassFileInstaller sun.hotspot.WhiteBox
   *
   * @run main/othervm
   *   -Xbootclasspath/a:.

*** 104,10 ***
--- 107,11 ---
   *   TestStackWalk
   */
  
  import jdk.incubator.foreign.CLinker;
  import jdk.incubator.foreign.FunctionDescriptor;
+ import jdk.incubator.foreign.NativeSymbol;
  import jdk.incubator.foreign.SymbolLookup;
  import jdk.incubator.foreign.MemoryAddress;
  
  import java.lang.invoke.MethodHandle;
  import java.lang.invoke.MethodType;

*** 115,27 ***
  
  import jdk.incubator.foreign.ResourceScope;
  import sun.hotspot.WhiteBox;
  
  import static java.lang.invoke.MethodHandles.lookup;
- import static jdk.incubator.foreign.CLinker.C_POINTER;
  
! public class TestStackWalk {
      static final WhiteBox WB = WhiteBox.getWhiteBox();
  
!     static final CLinker linker = CLinker.getInstance();
  
      static final MethodHandle MH_foo;
      static final MethodHandle MH_m;
  
      static {
          try {
              System.loadLibrary("StackWalk");
              SymbolLookup lookup = SymbolLookup.loaderLookup();
              MH_foo = linker.downcallHandle(
                      lookup.lookup("foo").get(),
-                     MethodType.methodType(void.class, MemoryAddress.class),
                      FunctionDescriptor.ofVoid(C_POINTER));
              MH_m = lookup().findStatic(TestStackWalk.class, "m", MethodType.methodType(void.class));
          } catch (ReflectiveOperationException e) {
              throw new RuntimeException(e);
          }
--- 119,25 ---
  
  import jdk.incubator.foreign.ResourceScope;
  import sun.hotspot.WhiteBox;
  
  import static java.lang.invoke.MethodHandles.lookup;
  
! public class TestStackWalk extends NativeTestHelper {
      static final WhiteBox WB = WhiteBox.getWhiteBox();
  
!     static final CLinker linker = CLinker.systemCLinker();
  
      static final MethodHandle MH_foo;
      static final MethodHandle MH_m;
  
      static {
          try {
              System.loadLibrary("StackWalk");
              SymbolLookup lookup = SymbolLookup.loaderLookup();
              MH_foo = linker.downcallHandle(
                      lookup.lookup("foo").get(),
                      FunctionDescriptor.ofVoid(C_POINTER));
              MH_m = lookup().findStatic(TestStackWalk.class, "m", MethodType.methodType(void.class));
          } catch (ReflectiveOperationException e) {
              throw new RuntimeException(e);
          }

*** 143,11 ***
  
      static boolean armed;
  
      public static void main(String[] args) throws Throwable {
          try (ResourceScope scope = ResourceScope.newConfinedScope()) {
!             MemoryAddress stub = linker.upcallStub(MH_m, FunctionDescriptor.ofVoid(), scope);
              MemoryAddress stubAddress = stub.address();
              armed = false;
              for (int i = 0; i < 20_000; i++) {
                  payload(stubAddress); // warmup
              }
--- 145,11 ---
  
      static boolean armed;
  
      public static void main(String[] args) throws Throwable {
          try (ResourceScope scope = ResourceScope.newConfinedScope()) {
!             NativeSymbol stub = linker.upcallStub(MH_m, FunctionDescriptor.ofVoid(), scope);
              MemoryAddress stubAddress = stub.address();
              armed = false;
              for (int i = 0; i < 20_000; i++) {
                  payload(stubAddress); // warmup
              }

*** 156,11 ***
              payload(stubAddress); // test
          }
      }
  
      static void payload(MemoryAddress cb) throws Throwable {
!         MH_foo.invokeExact(cb);
          Reference.reachabilityFence(cb); // keep oop alive across call
      }
  
      static void m() {
          if (armed) {
--- 158,11 ---
              payload(stubAddress); // test
          }
      }
  
      static void payload(MemoryAddress cb) throws Throwable {
!         MH_foo.invoke(cb);
          Reference.reachabilityFence(cb); // keep oop alive across call
      }
  
      static void m() {
          if (armed) {
< prev index next >