< prev index next >

test/jdk/java/foreign/TestAddressDereference.java

Print this page
*** 21,13 ***
   * questions.
   */
  
  /*
   * @test
-  * @enablePreview
   * @library ../ /test/lib
-  * @requires jdk.foreign.linker != "UNSUPPORTED"
   * @run testng/othervm --enable-native-access=ALL-UNNAMED TestAddressDereference
   */
  
  import java.lang.foreign.Arena;
  import java.lang.foreign.FunctionDescriptor;
--- 21,11 ---

*** 38,10 ***
--- 36,12 ---
  import java.lang.invoke.MethodHandle;
  import java.lang.invoke.MethodHandles;
  import java.lang.invoke.MethodType;
  import java.util.ArrayList;
  import java.util.List;
+ import java.util.regex.Matcher;
+ import java.util.regex.Pattern;
  
  import org.testng.annotations.*;
  
  import static org.testng.Assert.*;
  

*** 182,20 ***
  
          LayoutKind(ValueLayout segment) {
              this.layout = segment;
          }
  
          static LayoutKind parse(String layoutString) {
!             return switch (layoutString.charAt(0)) {
!                 case 'A','a' -> ADDRESS;
!                 case 'z','Z' -> BOOL;
!                 case 'c','C' -> CHAR;
!                 case 's','S' -> SHORT;
!                 case 'i','I' -> INT;
!                 case 'f','F' -> FLOAT;
!                 case 'j','J' -> LONG;
!                 case 'd','D' -> DOUBLE;
!                 default -> throw new AssertionError("Invalid layout string: " + layoutString);
!             };
          }
      }
  }
--- 182,25 ---
  
          LayoutKind(ValueLayout segment) {
              this.layout = segment;
          }
  
+         private static final Pattern LAYOUT_PATTERN = Pattern.compile("^(?<align>\\d+%)?(?<char>[azcsifjdAZCSIFJD])\\d+$");
+ 
          static LayoutKind parse(String layoutString) {
!             Matcher matcher = LAYOUT_PATTERN.matcher(layoutString);
!             if (matcher.matches()) {
!                 switch (matcher.group("char")) {
!                     case "A","a": return ADDRESS;
!                     case "z","Z": return BOOL;
!                     case "c","C": return CHAR;
!                     case "s","S": return SHORT;
!                     case "i","I": return INT;
!                     case "f","F": return FLOAT;
!                     case "j","J": return LONG;
!                     case "d","D": return DOUBLE;
+                 };
+             }
+             throw new AssertionError("Invalid layout string: " + layoutString);
          }
      }
  }
< prev index next >