package gov.nasa.jpf.vm;
import cmu.conditional.Conditional;
import cmu.conditional.One;
import de.fosd.typechef.featureexpr.FeatureExpr;
import gov.nasa.jpf.annotation.MJI;
/**
* Shortcut for java.util.Arrays
*
* @author Jens Meinicke
*
*/
public class JPF_java_util_Arrays extends NativePeer {
@MJI
public void fill___3II__V(MJIEnv env, int __, Conditional<Integer> arrayRef, Conditional<Integer> value, FeatureExpr ctx) {
final int reference = arrayRef.getValue();
((ArrayFields) env.heap.getModifiable(reference).fields).fill(ctx, value);
}
@MJI
public void fill___3BIIB__V(MJIEnv env, int __, int arrayRef, int fromIndex, int toIndex, byte value, FeatureExpr ctx) {
if (fromIndex > toIndex) {
throw new IllegalArgumentException("fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")");
}
if (fromIndex < 0) {
throw new ArrayIndexOutOfBoundsException(fromIndex);
}
if (toIndex > env.getArrayLength(ctx, arrayRef)) {
throw new ArrayIndexOutOfBoundsException(toIndex);
}
((ArrayFields) env.heap.getModifiable(arrayRef).fields).fill(ctx, fromIndex, toIndex, One.valueOf(value));
}
@MJI
public void fill___3CC__V(MJIEnv env, int __, Conditional<Integer> arrayRef, Conditional<Character> value, FeatureExpr ctx) {
final int reference = arrayRef.getValue();
((ArrayFields) env.heap.getModifiable(reference).fields).fill(ctx, value);
}
@MJI
public void fill___3Ljava_lang_Object_2Ljava_lang_Object_2__V(MJIEnv env, int __, int arrayRef, int val, FeatureExpr ctx) {
((ArrayFields) env.heap.getModifiable(arrayRef).fields).fill(ctx, One.valueOf(val));
}
@MJI
public void fill___3ZZ__V(MJIEnv env, int __, Conditional<Integer> arrayRef, Conditional<Boolean> value, FeatureExpr ctx) {
arrayRef.mapf(ctx, (x, ref) -> {
((ArrayFields) env.heap.getModifiable(ref).fields).fill(x, value);
});
}
}