rust_jvm::vm::native::ARRAYCOPY [] [src]

const ARRAYCOPY: &'static Fn(Vec<Value>) -> Option<Value> = &(|args| {
    if let Value::ArrayReference(ref src_rc) = args[0] {
        if let Value::Int(Wrapping(src_offset)) = args[1] {
            if let Value::ArrayReference(ref dest_rc) = args[2] {
                if let Value::Int(Wrapping(dest_offset)) = args[3] {
                    if let Value::Int(Wrapping(len)) = args[4] {
                        let src = src_rc.borrow();
                        let mut dest = dest_rc.borrow_mut();
                        for i in 0..len {
                            let value = src.get(src_offset + i);
                            dest.put(dest_offset + i, value);
                        }
                    } else {
                        panic!("length must be an int");
                    }
                } else {
                    panic!("dest_offset must be an int");
                }
            } else {
                panic!("ArrayStoreException");
            }
        } else {
            panic!("src_offset must be an int");
        }
    } else {
        panic!("ArrayStoreException");
    }
    None
})