Class StoreToArrayAgent

  • All Implemented Interfaces:
    DecompilationAgent

    public final class StoreToArrayAgent
    extends Object
    implements DecompilationAgent
    Store to array instruction handler. Store a reference in an array Opcodes: aastore Stack [before]->[after]: "arrayref, index, value →"
    Since:
    0.1
    To do:
    #277:90min Conflict between StoreToArrayAgent and DupAgent. We have a strange conflict between these two agents. - StoreToArrayAgent is supposed to leave stack empty, or at least do not push anything, but it pushes a new StoreArray object. Which is wrong. - DupAgent is supposed to push a new object, but it does not push anything. However both this bugs compensate each other somehow and our transformations work as expected. But this is not a good practice. We should adhere to bytecode specification for both agents: DupAgent should push a new object and StoreToArrayAgent should not push anything.
    • Constructor Detail

      • StoreToArrayAgent

        public StoreToArrayAgent()
    • Method Detail

      • appropriate

        public boolean appropriate​(DecompilerState state)
        Description copied from interface: DecompilationAgent
        Check if the agent is suitable for the current state.
        Specified by:
        appropriate in interface DecompilationAgent
        Parameters:
        state - Current state.
        Returns:
        True if the agent is suitable for the current state.
      • supported

        public org.eolang.opeo.decompilation.agents.Supported supported()
        Description copied from interface: DecompilationAgent
        Supported opcodes.
        Specified by:
        supported in interface DecompilationAgent
        Returns:
        Supported opcodes.