/*
* Copyright (c) 2006 Thomas Weise
*
* E-Mail : tweise@gmx.de
* Creation Date : 2006-07-03 09:40:46
* Original Filename: org.dgpf.gp.vm.instructions.arith.SetZeroFlagHandler.java
* Version : 1.0.0
* Last modification: 2006-07-03
* by: Thomas Weise
*
* License : GNU LESSER GENERAL PUBLIC LICENSE
* Version 2.1, February 1999
* You should have received a copy of this license along
* with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307, USA or download the license under
* http://www.gnu.org/copyleft/lesser.html.
*
* Warranty : This software is provided "as is" without any
* warranty; without even the implied warranty of
* merchantability or fitness for a particular purpose.
* See the Gnu Lesser General Public License for more
* details.
*/
package org.dgpf.gp.netvm.instructions;
import org.dgpf.gp.vm.base.IInstructionHandler;
import org.dgpf.gp.vm.base.Instruction;
import org.dgpf.gp.vm.base.VMContext;
import org.dgpf.gp.vm.instructions.base.NoMemInstrHandler;
import org.dgpf.gp.vm.mutation.MutationInfo;
/**
* The instruction handler for the set-zero-flag instruction.
*
* @author Thomas Weise
*/
public final class SendHandler extends NoMemInstrHandler
{
/**
* The serial version uid.
*/
private static final long serialVersionUID = 1;
/**
* The globally shared instance of the set zero flag handler.
*/
public static final IInstructionHandler INSTANCE =
new SendHandler();
/**
* Create a new set zero flag handler - you cannot do this, use the shared
* instance.
* @see #INSTANCE
*/
private SendHandler()
{
super();
}
/**
* Create a new randomized instance of this instruction.
* @param p_context The vm context to be used.
* @param p_info The information record holding the infos on the
* instruction to be created.
* @return The new instruction instance.
*/
public final Instruction create (final VMContext p_context,
final MutationInfo p_info)
{
return Send.INSTANCE;
}
/**
* Perform the mutation.
* @param p_source The source object to create a randomizedly altered
* copy of.
* @param p_context The context hosting the operation.
* @param p_info The information record.
* @return The new, randomizedly altered copy of the object
* p_source
or p_source
itself if no
* mutation was possible.
*/
public final Instruction mutate (final Instruction p_source,
final VMContext p_context,
final MutationInfo p_info)
{
return Send.INSTANCE;
}
/**
* This method tells if this instruction can be useful at the beginning of
* a procedure. A pop, for example, will never be useful, since the stack
* of a procedure is initially empty.
* @return true
if and only if an instruction is useful at the
* beginning of a procedure.
*/
@Override
public final boolean is_useful_at_begin()
{
return false;
}
}