< prev index next >

src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/CallingSequence.java

Print this page
*** 24,10 ***
--- 24,11 ---
  
  import jdk.incubator.foreign.FunctionDescriptor;
  
  import java.lang.invoke.MethodType;
  import java.util.List;
+ import java.util.stream.IntStream;
  import java.util.stream.Stream;
  
  public class CallingSequence {
      private final MethodType mt;
      private final FunctionDescriptor desc;

*** 41,25 ***
          this.desc = desc;
          this.returnBindings = returnBindings;
          this.argumentBindings = argumentBindings;
      }
  
!     public Stream<Binding.Move> moveBindings() {
          return argumentBindings.stream()
                  .flatMap(List::stream)
                  .filter(Binding.Move.class::isInstance)
                  .map(Binding.Move.class::cast);
      }
  
      public int argumentCount() {
          return argumentBindings.size();
      }
  
      public List<Binding> argumentBindings(int i) {
          return argumentBindings.get(i);
      }
  
      public List<Binding> returnBindings() {
          return returnBindings;
      }
  
      public String asString() {
--- 42,36 ---
          this.desc = desc;
          this.returnBindings = returnBindings;
          this.argumentBindings = argumentBindings;
      }
  
!     public Stream<Binding.Move> argMoveBindings() {
          return argumentBindings.stream()
                  .flatMap(List::stream)
                  .filter(Binding.Move.class::isInstance)
                  .map(Binding.Move.class::cast);
      }
  
+     public Stream<Binding.Move> retMoveBindings() {
+         return returnBindings()
+             .stream()
+             .filter(Binding.Move.class::isInstance)
+             .map(Binding.Move.class::cast);
+     }
+ 
      public int argumentCount() {
          return argumentBindings.size();
      }
  
      public List<Binding> argumentBindings(int i) {
          return argumentBindings.get(i);
      }
  
+     public Stream<Binding> argumentBindings() {
+         return argumentBindings.stream().flatMap(List::stream);
+     }
+ 
      public List<Binding> returnBindings() {
          return returnBindings;
      }
  
      public String asString() {
< prev index next >