MarpaX-Java-ClassFile
view release on metacpan or search on metacpan
lib/MarpaX/Java/ClassFile/Struct/OpCode.pm view on Meta::CPAN
use strict;
use warnings FATAL => 'all';
package MarpaX::Java::ClassFile::Struct::OpCode;
use MarpaX::Java::ClassFile::Struct::_Base
-tiny => [qw/_constant_pool offset relativeOffset mnemonic code parameters/],
-oneLineDescription => 1,
'""' => [
[ sub { '{Offset, RelativeOffset, Code}' } => sub { '{' . join(', ', $_[0]->offset, $_[0]->relativeOffset, join(' ', $_[0]->mnemonic, @{$_[0]->parameters})) . '}' } ]
];
# The operand of each ldc instruction and each ldc_w instruction must be a valid index into the constant_pool table.
# The constant pool entry referenced by that index must be of type:
sub _around_when_first_param_is_and_index {
my ($orig, $self) = @_;
my $list = $self->$orig;
#
# Deep copy what is necessary
#
my @copy = @{$list};
#
# Change the "y" part of x => y in the description of the first field
#
my $firstParam = $copy[0];
my $x = $firstParam->[0];
my $y = $firstParam->[1];
my $newy = sub { $y->(@_) . ' // ' . $_[0]->_constant_pool->[$_[0]->parameters->[0]] };
$copy[0] = [ $x, $newy ];
\@copy
}
# ABSTRACT: Op code
our $VERSION = '0.009'; # VERSION
our $AUTHORITY = 'cpan:JDDPAUSE'; # AUTHORITY
use MarpaX::Java::ClassFile::Struct::_Types qw/U1/;
use Types::Standard qw/Str ArrayRef/;
use Types::Common::Numeric qw/PositiveOrZeroInt/;
has _constant_pool => ( is => 'rw', required => 1, isa => ArrayRef);
has offset => ( is => 'ro', required => 1, isa => PositiveOrZeroInt );
has relativeOffset => ( is => 'ro', required => 1, isa => PositiveOrZeroInt );
has mnemonic => ( is => 'ro', required => 1, isa => Str );
has code => ( is => 'ro', required => 1, isa => U1 );
has parameters => ( is => 'ro', required => 1, isa => ArrayRef );
#
# Do the per-opcode detail in this package
#
package MarpaX::Java::ClassFile::Struct::OpCode::Aaload;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Aastore;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Aconst_null;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Aload;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Aload_0;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Aload_1;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Aload_2;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Aload_3;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Anewarray;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
use Class::Method::Modifiers qw/around/;
around stringifySetup => sub { goto &MarpaX::Java::ClassFile::Struct::OpCode::_around_when_first_param_is_and_index };
package MarpaX::Java::ClassFile::Struct::OpCode::Areturn;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Arraylength;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Astore;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Astore_0;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Astore_1;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Astore_2;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Astore_3;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Athrow;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
package MarpaX::Java::ClassFile::Struct::OpCode::Baload;
use parent 'MarpaX::Java::ClassFile::Struct::OpCode';
( run in 0.494 second using v1.01-cache-2.11-cpan-39bf76dae61 )