< prev index next >

test/testlibrary/jittester/src/jdk/test/lib/jittester/arrays/ArrayExtraction.java

Print this page




  23 
  24 package jdk.test.lib.jittester.arrays;
  25 
  26 import java.util.ArrayList;
  27 import java.util.List;
  28 import java.util.stream.Collectors;
  29 import jdk.test.lib.jittester.IRNode;
  30 import jdk.test.lib.jittester.Literal;
  31 import jdk.test.lib.jittester.LocalVariable;
  32 import jdk.test.lib.jittester.types.TypeArray;
  33 import jdk.test.lib.jittester.visitors.Visitor;
  34 
  35 
  36 /*
  37 Array extraction produces and array with N dimentions from an array with M
  38 dimentions, where N < M.
  39  */
  40 public class ArrayExtraction extends IRNode {
  41     private final List<Byte> dims;
  42     public ArrayExtraction(IRNode array, ArrayList<IRNode> dimensionExpressions) {

  43         addChild(array);
  44         addChildren(dimensionExpressions);
  45         if (array instanceof ArrayCreation) {
  46             dims = new ArrayList<>();
  47             ArrayCreation ac = (ArrayCreation) array;
  48             for (int i = dimensionExpressions.size(); i < ac.getDimensionsCount(); ++i) {
  49                 dims.add(ac.getDimensionSize(i));
  50             }
  51         } else if (array instanceof ArrayExtraction) {
  52             dims = new ArrayList<>();
  53             ArrayExtraction ae = (ArrayExtraction) array;
  54             for (int i = dimensionExpressions.size(); i < ae.getDimsNumber(); ++i) {
  55                 dims.add(ae.getDim(i));
  56             }
  57         } else if (array instanceof LocalVariable) {
  58             LocalVariable loc = (LocalVariable) array;
  59             TypeArray type = (TypeArray) loc.get().type;
  60             dims = type.getDims();
  61             for (int i = dimensionExpressions.size(); i < type.dimensions; ++i) {
  62                 dims.add(type.getDims().get(i));
  63             }
  64         } else {
  65             dims = dimensionExpressions.stream()
  66                 .map(d -> {
  67                     if (d instanceof Literal) {
  68                         Literal n = (Literal) d;
  69                         return (Byte)n.getValue();
  70                     }
  71                     return (byte)0;
  72                 })
  73                 .collect(Collectors.toList());
  74         }
  75     }
  76 
  77     @Override
  78     public<T> T accept(Visitor<T> v) {
  79         return v.visit(this);


  23 
  24 package jdk.test.lib.jittester.arrays;
  25 
  26 import java.util.ArrayList;
  27 import java.util.List;
  28 import java.util.stream.Collectors;
  29 import jdk.test.lib.jittester.IRNode;
  30 import jdk.test.lib.jittester.Literal;
  31 import jdk.test.lib.jittester.LocalVariable;
  32 import jdk.test.lib.jittester.types.TypeArray;
  33 import jdk.test.lib.jittester.visitors.Visitor;
  34 
  35 
  36 /*
  37 Array extraction produces and array with N dimentions from an array with M
  38 dimentions, where N < M.
  39  */
  40 public class ArrayExtraction extends IRNode {
  41     private final List<Byte> dims;
  42     public ArrayExtraction(IRNode array, ArrayList<IRNode> dimensionExpressions) {
  43         super(array.getResultType());
  44         addChild(array);
  45         addChildren(dimensionExpressions);
  46         if (array instanceof ArrayCreation) {
  47             dims = new ArrayList<>();
  48             ArrayCreation ac = (ArrayCreation) array;
  49             for (int i = dimensionExpressions.size(); i < ac.getDimensionsCount(); ++i) {
  50                 dims.add(ac.getDimensionSize(i));
  51             }
  52         } else if (array instanceof ArrayExtraction) {
  53             dims = new ArrayList<>();
  54             ArrayExtraction ae = (ArrayExtraction) array;
  55             for (int i = dimensionExpressions.size(); i < ae.getDimsNumber(); ++i) {
  56                 dims.add(ae.getDim(i));
  57             }
  58         } else if (array instanceof LocalVariable) {
  59             LocalVariable loc = (LocalVariable) array;
  60             TypeArray type = (TypeArray) loc.getVariableInfo().type;
  61             dims = type.getDims();
  62             for (int i = dimensionExpressions.size(); i < type.dimensions; ++i) {
  63                 dims.add(type.getDims().get(i));
  64             }
  65         } else {
  66             dims = dimensionExpressions.stream()
  67                 .map(d -> {
  68                     if (d instanceof Literal) {
  69                         Literal n = (Literal) d;
  70                         return (Byte)n.getValue();
  71                     }
  72                     return (byte)0;
  73                 })
  74                 .collect(Collectors.toList());
  75         }
  76     }
  77 
  78     @Override
  79     public<T> T accept(Visitor<T> v) {
  80         return v.visit(this);
< prev index next >