protected int deref(int a)
    {
        // tag, value <- STORE[a]
        int addr = a;
        int tmp = data.get(a);
        derefTag = (byte) (tmp >>> TSHIFT);
        derefVal = tmp & AMASK;

        // while tag = REF and value != a
        while ((derefTag == WAMInstruction.REF))
        {
            // tag, value <- STORE[a]
            addr = derefVal;
            tmp = data.get(derefVal);
            derefTag = (byte) (tmp >>> TSHIFT);
            tmp = tmp & AMASK;

            // Break on free var.
            if (derefVal == tmp)
            {
                break;
            }

            derefVal = tmp;
        }

        return addr;
    }
protected int deref(int a)
    {
        
        int addr = a;
        int tmp = data.get(a);
        derefTag = (byte) (tmp >>> TSHIFT);
        derefVal = tmp & AMASK;

        
        while ((derefTag == WAMInstruction.REF))
        {
            
            addr = derefVal;
            tmp = data.get(derefVal);
            derefTag = (byte) (tmp >>> TSHIFT);
            tmp = tmp & AMASK;

            
            if (derefVal == tmp)
            {
                break;
            }

            derefVal = tmp;
        }

        return addr;
    }
protected int deref ( int a ) { // tag, value <- STORE[a] int addr = a ; int tmp = data . get ( a ) ; derefTag = ( byte ) ( tmp >>> TSHIFT ) ; derefVal = tmp & AMASK ; // while tag = REF and value != a while ( ( derefTag == WAMInstruction . REF ) ) { // tag, value <- STORE[a] addr = derefVal ; tmp = data . get ( derefVal ) ; derefTag = ( byte ) ( tmp >>> TSHIFT ) ; tmp = tmp & AMASK ; // Break on free var. if ( derefVal == tmp ) { break ; } derefVal = tmp ; } return addr ; }
{@inheritDoc}
{