private RValue [ ] executeExpressions ( Tuple < Expr > expressions , CallStack frame ) { RValue [ ] [ ] results = new RValue [ expressions . size ( ) ] [ ] ; int count = 0 ; for ( int i = 0 ; i != expressions . size ( ) ; ++ i ) { results [ i ] = executeMultiReturnExpression ( expressions . get ( i ) , frame ) ; count += results [ i ] . length ; } RValue [ ] rs = new RValue [ count ] ; int j = 0 ; for ( int i = 0 ; i != expressions . size ( ) ; ++ i ) { Object [ ] r = results [ i ] ; System . arraycopy ( r , 0 , rs , j , r . length ) ; j += r . length ; } return rs ; }
Execute one or more expressions . This is slightly more complex than for the single expression case because of the potential to encounter positional operands . That is severals which arise from executing the same expression .