private boolean internalCall_1(int numPerms)
    {
        int pn = setupCall_1();

        if (pn == -1)
        {
            return false;
        }

        // Make the call.
        // STACK[E + 2] <- numPerms
        data.put(ep + 2, numPerms);

        // CP <- P + instruction_size(P)
        cp = ip + 7;

        /*trace.fine(ip + ": (CALL) " + pn + ", " + numPerms + " (cp = " + cp + ")]");*/

        // B0 <- B
        b0 = bp;

        // P <- @(p/n)
        ip = pn;

        return true;
    }
private boolean internalCall_1(int numPerms)
    {
        int pn = setupCall_1();

        if (pn == -1)
        {
            return false;
        }

        
        
        data.put(ep + 2, numPerms);

        
        cp = ip + 7;

        

        
        b0 = bp;

        
        ip = pn;

        return true;
    }
private boolean internalCall_1 ( int numPerms ) { int pn = setupCall_1 ( ) ; if ( pn == - 1 ) { return false ; } // Make the call. // STACK[E + 2] <- numPerms data . put ( ep + 2 , numPerms ) ; // CP <- P + instruction_size(P) cp = ip + 7 ; /*trace.fine(ip + ": (CALL) " + pn + ", " + numPerms + " (cp = " + cp + ")]");*/ // B0 <- B b0 = bp ; // P <- @(p/n) ip = pn ; return true ; }
Implements the 'call/1' predicate.

@param  numPerms The number of permanent variables remaining in the environment.

@return <tt>true</tt> if the call succeeded, and <tt>false</tt> if it failed.
Implements the call / 1 predicate .