X-Git-Url: http://git.imager.perl.org/imager.git/blobdiff_plain/8f22b8d8b861725641f4a244c4a22ff7c1c1f3a5..333d74854bf4b789a43a77c53d620913bd922db0:/regops.perl diff --git a/regops.perl b/regops.perl index dad20856..fd4f32e7 100644 --- a/regops.perl +++ b/regops.perl @@ -44,9 +44,34 @@ while () { } } print OUT "\n\@EXPORT = qw(@ops);\n\n"; -my $dumper = Data::Dumper->new([\%attr],["*Attr"]); -$dumper->Sortkeys(1); -print OUT $dumper->Dump; +# previously we used Data::Dumper, with Sortkeys() +# to make sure the generated code only changed when the data +# changed. Unfortunately Sortkeys isn't supported in some versions of +# perl we try to support, so we now generate this manually +print OUT "%Attr =\n (\n"; +for my $opname (sort keys %attr) { + my $op = $attr{$opname}; + print OUT " '$opname' =>\n {\n"; + for my $attrname (sort keys %$op) { + my $attr = $op->{$attrname}; + print OUT " '$attrname' => "; + if (defined $attr) { + if ($attr =~ /^\d+$/) { + print OUT $attr; + } + else { + print OUT "'$attr'"; + } + } + else { + print OUT "undef"; + } + + print OUT ",\n"; + } + print OUT " },\n"; +} +print OUT " );\n"; print OUT "\$MaxOperands = $max_opr;\n"; print OUT qq/\$PackCode = "$reg_pack";\n/; print OUT <<'EOS';