-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
USE_INTERPRETER returns incorrect results when running ExifTool. There are many fails in the ExifTool test suite. Here is one test case:
cd /path/to/exiftool-test-images
#perl
time exiftool -a -make -model -imagesize Canon.jpg Nikon.jpg Sony.jpg
======== Canon.jpg
Make : Canon
Camera Model Name : Canon EOS DIGITAL REBEL
Image Size : 8x8
======== Nikon.jpg
Make : NIKON
Camera Model Name : E775
Image Size : 8x8
======== Sony.jpg
Make : SONY
Make : SONY
Camera Model Name : DSC-F828
Camera Model Name : DSC-F828
Image Size : 8x8
3 image files read
real 0m0.226s
#jperl
time /path/to/jperl /path/to/exiftool -a -make -model -imagesize Canon.jpg Nikon.jpg Sony.jpg
...same correct results as above...
3 image files read
real 0m6.595s
#jperl force interpreter
export JPERL_INTERPRETER=1
time /path/to/jperl /path/to/exiftool -a -make -model -imagesize Canon.jpg Nikon.jpg Sony.jpg
======== Canon.jpg
======== Nikon.jpg
======== Sony.jpg
Make : SONY
Camera Model Name : DSC-F828
3 image files read
real 0m4.340s
Also, please note that the CompileOptions switch useInterpreter does not seem to "stick." I see breakpoints at PerlLanguageProvider.needsInterpreterFallback where the interpreter switch value is false.
CompilerOptions options = new CompilerOptions();
options.fileName = "<init>";
options.code = initScript;
options.useInterpreter = true;
PerlLanguageProvider.executePerlCode(options, true);
...
RuntimeScalar processImage = GlobalVariable.getGlobalCodeRef("main::process_image");
...
RuntimeList rlist = RuntimeCode.apply(processImage, args, RuntimeContextType.SCALAR);
Running this way I get correct results until I set
public static final boolean FORCE_INTERPRETER = true;
in RuntimeCode.java.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels