public void perform() { TElement cgef, cgea; cgef = r0.value(); cgea = r1.value(); if( cgef.isConstant() || cgef.isXQualified() ) { setHandlerCode( CONSTANT_CODE ); popFunction(); } else { if( cgef.isYQualified() ) { setHandlerCode( RE_EXECUTE_HANDLER ); if( r1.isActive() ) { if( cgea.isXQualified() ) { writreHandlerLine(); cgef.makePlain(); startRestrictedRead(); } else { push(); } } else { popArgument(); } } else { if( cgef.isPointer() ) { out.print( " " ); // myDisplay.append( " " ); if( (r_mode == RESOLUTION_MODE) && !cgef.isHeapRef() ) { // This should handle the situation p_stack.push( r0.value() ); // where the right side in a r0.clear(); // restricted pair is a "normal" setHandlerCode( RE_EXECUTE_HANDLER ); // pointer. } // else { move( m_addr, cgef.value() ); r0.clear(); readFromMemory(); setHandlerCode( POINTER_CODE ); } } else { setHandlerCode( cgef ); out.print( cgef.primitive() + " " ); // myDisplay.append( cgef.primitive() + " " ); if( !isBinaryOp() ) { if( cgef.opCode() != NULL_SERVICE ) { writreHandlerLine(); } switch( cgef.opCode() ) { case A_SERVICE: handle_A(); break; case B_SERVICE: handle_B(); break; case C_SERVICE: handle_C(); break; case D_SERVICE: handle_D(); break; case E_SERVICE: handle_E(); break; case F_SERVICE: handle_F(); break; case G_SERVICE: handle_G(); break; case H_SERVICE: handle_H(); break; case I_SERVICE: handle_I(); break; case J_SERVICE: handle_J(); break; case K_SERVICE: handle_K(); break; case NULL_SERVICE: popFunction(); break; } } } } } }