Merge remote-tracking branch 'origin/master' into jit 89/17389/3
Antoine ELIAS [Fri, 23 Oct 2015 15:59:08 +0000 (17:59 +0200)]
Conflicts:
scilab/configure
scilab/modules/ast/src/cpp/ast/run_CallExp.hpp
scilab/modules/javasci/Makefile.in

Change-Id: Icabdbaf194da4ba89ab194f92e2c1802721efddf

91 files changed:
1  2 
scilab/Makefile.am
scilab/Makefile.in
scilab/configure
scilab/configure.ac
scilab/contrib/Makefile.in
scilab/desktop/Makefile.in
scilab/desktop/images/icons/Makefile.in
scilab/modules/Makefile.in
scilab/modules/action_binding/Makefile.in
scilab/modules/api_scilab/Makefile.in
scilab/modules/arnoldi/Makefile.in
scilab/modules/ast/Makefile.in
scilab/modules/ast/includes/jit/base/multiplication.hxx
scilab/modules/ast/src/c/operations/matrix_power.c
scilab/modules/ast/src/cpp/ast/run_CallExp.hpp
scilab/modules/ast/src/cpp/ast/runvisitor.cpp
scilab/modules/ast/src/cpp/types/double.cpp
scilab/modules/atoms/Makefile.in
scilab/modules/boolean/Makefile.in
scilab/modules/cacsd/Makefile.in
scilab/modules/call_scilab/Makefile.in
scilab/modules/commons/Makefile.in
scilab/modules/compatibility_functions/Makefile.in
scilab/modules/completion/Makefile.in
scilab/modules/console/Makefile.in
scilab/modules/core/Makefile.in
scilab/modules/core/src/c/core.vcxproj
scilab/modules/data_structures/Makefile.in
scilab/modules/demo_tools/Makefile.in
scilab/modules/development_tools/Makefile.in
scilab/modules/development_tools/src/fake/Makefile.in
scilab/modules/differential_equations/Makefile.in
scilab/modules/dynamic_link/Makefile.in
scilab/modules/elementary_functions/Makefile.in
scilab/modules/external_objects/Makefile.in
scilab/modules/external_objects_java/Makefile.in
scilab/modules/fftw/Makefile.in
scilab/modules/fileio/Makefile.in
scilab/modules/functions/Makefile.in
scilab/modules/functions_manager/Makefile.in
scilab/modules/genetic_algorithms/Makefile.in
scilab/modules/graph/Makefile.in
scilab/modules/graphic_export/Makefile.in
scilab/modules/graphic_objects/Makefile.in
scilab/modules/graphics/Makefile.in
scilab/modules/gui/Makefile.in
scilab/modules/hdf5/Makefile.in
scilab/modules/helptools/Makefile.in
scilab/modules/history_browser/Makefile.in
scilab/modules/history_manager/Makefile.in
scilab/modules/integer/Makefile.in
scilab/modules/interpolation/Makefile.in
scilab/modules/io/Makefile.in
scilab/modules/jvm/Makefile.in
scilab/modules/linear_algebra/Makefile.in
scilab/modules/localization/Makefile.in
scilab/modules/m2sci/Makefile.in
scilab/modules/matio/Makefile.in
scilab/modules/mexlib/Makefile.in
scilab/modules/modules_manager/Makefile.in
scilab/modules/mpi/Makefile.in
scilab/modules/optimization/Makefile.in
scilab/modules/output_stream/Makefile.in
scilab/modules/overloading/Makefile.in
scilab/modules/parallel/Makefile.in
scilab/modules/parameters/Makefile.in
scilab/modules/polynomials/Makefile.in
scilab/modules/prebuildjava/Makefile.in
scilab/modules/preferences/Makefile.in
scilab/modules/randlib/Makefile.in
scilab/modules/renderer/Makefile.in
scilab/modules/scicos/Makefile.in
scilab/modules/scicos_blocks/Makefile.in
scilab/modules/scinotes/Makefile.in
scilab/modules/signal_processing/Makefile.in
scilab/modules/simulated_annealing/Makefile.in
scilab/modules/sound/Makefile.in
scilab/modules/sparse/Makefile.in
scilab/modules/special_functions/Makefile.in
scilab/modules/spreadsheet/Makefile.in
scilab/modules/statistics/Makefile.in
scilab/modules/string/Makefile.in
scilab/modules/tclsci/Makefile.in
scilab/modules/threads/Makefile.in
scilab/modules/time/Makefile.in
scilab/modules/types/Makefile.in
scilab/modules/ui_data/Makefile.in
scilab/modules/umfpack/Makefile.in
scilab/modules/windows_tools/Makefile.in
scilab/modules/xcos/Makefile.in
scilab/modules/xml/Makefile.in

Simple merge
Simple merge
@@@ -11805,7 -11673,7 +11794,7 @@@ $as_echo "$ac_java_classpath" >&6; 
  $as_echo_n "checking to see if the java compiler works... " >&6; }
  
      cat << \EOF > conftest.java
- // #line 11808 "configure"
 -// #line 11676 "configure"
++// #line 11797 "configure"
  import java.util.regex.Pattern;
  
  
@@@ -11892,7 -11760,7 +11881,7 @@@ $as_echo_n "checking type of jvm... " >
      if test "x$ac_java_jvm_name" = "x" ; then
  
      cat << \EOF > conftest.java
- // #line 11895 "configure"
 -// #line 11763 "configure"
++// #line 11884 "configure"
  import java.util.regex.Pattern;
  
  import gnu.java.io.EncodingManager;
@@@ -11976,7 -11844,7 +11965,7 @@@ $as_echo_n "checking java API version..
      # The class java.nio.charset.Charset is new to 1.4
  
      cat << \EOF > conftest.java
- // #line 11979 "configure"
 -// #line 11847 "configure"
++// #line 11968 "configure"
  import java.util.regex.Pattern;
  
  import java.nio.charset.Charset;
      # The class java.lang.StringBuilder is new to 1.5
  
      cat << \EOF > conftest.java
- // #line 12044 "configure"
 -// #line 11912 "configure"
++// #line 12033 "configure"
  import java.util.regex.Pattern;
  
  import java.lang.StringBuilder;
      # The class java.util.ArrayDeque is new to 1.6
  
      cat << \EOF > conftest.java
- // #line 12109 "configure"
 -// #line 11977 "configure"
++// #line 12098 "configure"
  import java.util.regex.Pattern;
  
  import java.util.ArrayDeque;
      # The class java.nio.file.Path is new to 1.7
  
      cat << \EOF > conftest.java
- // #line 12174 "configure"
 -// #line 12042 "configure"
++// #line 12163 "configure"
  import java.util.regex.Pattern;
  
  import java.nio.file.Path;
      # The class java.util.stream.DoubleStream is new to 1.8
  
      cat << \EOF > conftest.java
- // #line 12239 "configure"
 -// #line 12107 "configure"
++// #line 12228 "configure"
  import java.util.regex.Pattern;
  
  import java.util.stream.DoubleStream;
@@@ -13714,7 -13582,7 +13703,7 @@@ $as_echo_n "checking jgraphx... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 13717 "configure"
 -// #line 13585 "configure"
++// #line 13706 "configure"
  import java.util.regex.Pattern;
  
  import com.mxgraph.model.mxCell;
@@@ -13821,7 -13689,7 +13810,7 @@@ $as_echo_n "checking minimal version (2
     if test "x" == "x"; then
  
      cat << \EOF > conftest.java
- // #line 13824 "configure"
 -// #line 13692 "configure"
++// #line 13813 "configure"
  import java.util.regex.Pattern;
  
  import com.mxgraph.view.mxGraph;
     else
  
      cat << \EOF > conftest.java
- // #line 13896 "configure"
 -// #line 13764 "configure"
++// #line 13885 "configure"
  import java.util.regex.Pattern;
  
  import com.mxgraph.view.mxGraph;
@@@ -13987,7 -13855,7 +13976,7 @@@ $as_echo_n "checking scirenderer... " >
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 13990 "configure"
 -// #line 13858 "configure"
++// #line 13979 "configure"
  import java.util.regex.Pattern;
  
  import org.scilab.forge.scirenderer.PackageInfo;
@@@ -14094,7 -13962,7 +14083,7 @@@ $as_echo_n "checking minimal version (1
     if test "x" == "x"; then
  
      cat << \EOF > conftest.java
- // #line 14097 "configure"
 -// #line 13965 "configure"
++// #line 14086 "configure"
  import java.util.regex.Pattern;
  
  import org.scilab.forge.scirenderer.PackageInfo;
     else
  
      cat << \EOF > conftest.java
- // #line 14169 "configure"
 -// #line 14037 "configure"
++// #line 14158 "configure"
  import java.util.regex.Pattern;
  
  import org.scilab.forge.scirenderer.PackageInfo;
@@@ -14265,7 -14133,7 +14254,7 @@@ $as_echo_n "checking flexdock... " >&6
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 14268 "configure"
 -// #line 14136 "configure"
++// #line 14257 "configure"
  import java.util.regex.Pattern;
  
  import org.flexdock.docking.DockingManager;
@@@ -14372,7 -14240,7 +14361,7 @@@ $as_echo_n "checking minimal version (1
     if test "x" == "x"; then
  
      cat << \EOF > conftest.java
- // #line 14375 "configure"
 -// #line 14243 "configure"
++// #line 14364 "configure"
  import java.util.regex.Pattern;
  
  import org.flexdock.util.Utilities;
     else
  
      cat << \EOF > conftest.java
- // #line 14447 "configure"
 -// #line 14315 "configure"
++// #line 14436 "configure"
  import java.util.regex.Pattern;
  
  import org.flexdock.util.Utilities;
@@@ -14535,7 -14403,7 +14524,7 @@@ $as_echo_n "checking looks... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 14538 "configure"
 -// #line 14406 "configure"
++// #line 14527 "configure"
  import java.util.regex.Pattern;
  
  import com.jgoodies.looks.common.MenuItemRenderer;
@@@ -14652,7 -14520,7 +14641,7 @@@ $as_echo_n "checking jgoodies-looks... 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 14655 "configure"
 -// #line 14523 "configure"
++// #line 14644 "configure"
  import java.util.regex.Pattern;
  
  import com.jgoodies.looks.common.MenuItemRenderer;
@@@ -14770,7 -14638,7 +14759,7 @@@ $as_echo_n "checking skinlf... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 14773 "configure"
 -// #line 14641 "configure"
++// #line 14762 "configure"
  import java.util.regex.Pattern;
  
  import com.l2fprod.util.AccessUtils;
@@@ -14887,7 -14755,7 +14876,7 @@@ $as_echo_n "checking jogl2... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 14890 "configure"
 -// #line 14758 "configure"
++// #line 14879 "configure"
  import java.util.regex.Pattern;
  
  import javax.media.opengl.glu.GLUnurbs;
@@@ -14993,7 -14861,7 +14982,7 @@@ $as_echo_n "checking minimal version (S
      if test "x" == "x"; then
  
      cat << \EOF > conftest.java
- // #line 14996 "configure"
 -// #line 14864 "configure"
++// #line 14985 "configure"
  import java.util.regex.Pattern;
  
  import java.io.IOException;
      else
  
      cat << \EOF > conftest.java
- // #line 15073 "configure"
 -// #line 14941 "configure"
++// #line 15062 "configure"
  import java.util.regex.Pattern;
  
  import java.io.IOException;
@@@ -15272,7 -15140,7 +15261,7 @@@ $as_echo_n "checking gluegen2-rt... " >
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 15275 "configure"
 -// #line 15143 "configure"
++// #line 15264 "configure"
  import java.util.regex.Pattern;
  
  import jogamp.common.os.MachineDescriptionRuntime;
@@@ -15446,7 -15314,7 +15435,7 @@@ $as_echo_n "checking jhall... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 15449 "configure"
 -// #line 15317 "configure"
++// #line 15438 "configure"
  import java.util.regex.Pattern;
  
  import javax.help.JHelp;
@@@ -15561,7 -15429,7 +15550,7 @@@ $as_echo_n "checking javahelp2... " >&6
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 15564 "configure"
 -// #line 15432 "configure"
++// #line 15553 "configure"
  import java.util.regex.Pattern;
  
  import javax.help.JHelp;
@@@ -15679,7 -15547,7 +15668,7 @@@ $as_echo_n "checking jrosetta-API... " 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 15682 "configure"
 -// #line 15550 "configure"
++// #line 15671 "configure"
  import java.util.regex.Pattern;
  
  import com.artenum.rosetta.interfaces.core.ConsoleConfiguration;
@@@ -15793,7 -15661,7 +15782,7 @@@ $as_echo_n "checking jrosetta-api... " 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 15796 "configure"
 -// #line 15664 "configure"
++// #line 15785 "configure"
  import java.util.regex.Pattern;
  
  import com.artenum.rosetta.interfaces.core.ConsoleConfiguration;
@@@ -15911,7 -15779,7 +15900,7 @@@ $as_echo_n "checking jrosetta-engine..
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 15914 "configure"
 -// #line 15782 "configure"
++// #line 15903 "configure"
  import java.util.regex.Pattern;
  
  import com.artenum.rosetta.core.action.AbstractConsoleAction;
@@@ -16017,7 -15885,7 +16006,7 @@@ $as_echo_n "checking minimal version (1
     if test "x" == "x"; then
  
      cat << \EOF > conftest.java
- // #line 16020 "configure"
 -// #line 15888 "configure"
++// #line 16009 "configure"
  import java.util.regex.Pattern;
  
  import com.artenum.rosetta.util.ConfigurationBuilder;
     else
  
      cat << \EOF > conftest.java
- // #line 16092 "configure"
 -// #line 15960 "configure"
++// #line 16081 "configure"
  import java.util.regex.Pattern;
  
  import com.artenum.rosetta.util.ConfigurationBuilder;
@@@ -16182,7 -16050,7 +16171,7 @@@ $as_echo_n "checking jeuclid-core... " 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 16185 "configure"
 -// #line 16053 "configure"
++// #line 16174 "configure"
  import java.util.regex.Pattern;
  
  import net.sourceforge.jeuclid.LayoutContext;
@@@ -16301,7 -16169,7 +16290,7 @@@ $as_echo_n "checking fop... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 16304 "configure"
 -// #line 16172 "configure"
++// #line 16293 "configure"
  import java.util.regex.Pattern;
  
  import org.apache.fop.pdf.PDFInfo;
@@@ -16425,7 -16293,7 +16414,7 @@@ $as_echo_n "checking freehep-graphics2d
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 16428 "configure"
 -// #line 16296 "configure"
++// #line 16417 "configure"
  import java.util.regex.Pattern;
  
  import org.freehep.graphics2d.VectorGraphics;
@@@ -16542,7 -16410,7 +16531,7 @@@ $as_echo_n "checking freehep-graphicsio
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 16545 "configure"
 -// #line 16413 "configure"
++// #line 16534 "configure"
  import java.util.regex.Pattern;
  
  import org.freehep.graphicsio.emf.EMFGraphics2D;
@@@ -16659,7 -16527,7 +16648,7 @@@ $as_echo_n "checking freehep-graphicsio
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 16662 "configure"
 -// #line 16530 "configure"
++// #line 16651 "configure"
  import java.util.regex.Pattern;
  
  import org.freehep.graphicsio.VectorGraphicsIO;
@@@ -16776,7 -16644,7 +16765,7 @@@ $as_echo_n "checking freehep-io... " >&
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 16779 "configure"
 -// #line 16647 "configure"
++// #line 16768 "configure"
  import java.util.regex.Pattern;
  
  import org.freehep.util.io.XMLSequence;
@@@ -16893,7 -16761,7 +16882,7 @@@ $as_echo_n "checking freehep-util... " 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 16896 "configure"
 -// #line 16764 "configure"
++// #line 16885 "configure"
  import java.util.regex.Pattern;
  
  import org.freehep.util.StringUtilities;
@@@ -17011,7 -16879,7 +17000,7 @@@ $as_echo_n "checking batik-all... " >&6
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 17014 "configure"
 -// #line 16882 "configure"
++// #line 17003 "configure"
  import java.util.regex.Pattern;
  
  import org.apache.batik.parser.Parser;
@@@ -17128,7 -16996,7 +17117,7 @@@ $as_echo_n "checking batik... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 17131 "configure"
 -// #line 16999 "configure"
++// #line 17120 "configure"
  import java.util.regex.Pattern;
  
  import org.apache.batik.parser.Parser;
@@@ -17235,7 -17103,7 +17224,7 @@@ $as_echo_n "checking minimal version (1
     if test "x" == "x"; then
  
      cat << \EOF > conftest.java
- // #line 17238 "configure"
 -// #line 17106 "configure"
++// #line 17227 "configure"
  import java.util.regex.Pattern;
  
  import org.apache.batik.Version;
     else
  
      cat << \EOF > conftest.java
- // #line 17310 "configure"
 -// #line 17178 "configure"
++// #line 17299 "configure"
  import java.util.regex.Pattern;
  
  import org.apache.batik.Version;
@@@ -17398,7 -17266,7 +17387,7 @@@ $as_echo_n "checking commons-io... " >&
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 17401 "configure"
 -// #line 17269 "configure"
++// #line 17390 "configure"
  import java.util.regex.Pattern;
  
  import org.apache.commons.io.output.CountingOutputStream;
@@@ -17515,7 -17383,7 +17504,7 @@@ $as_echo_n "checking xmlgraphics-common
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 17518 "configure"
 -// #line 17386 "configure"
++// #line 17507 "configure"
  import java.util.regex.Pattern;
  
  import org.apache.xmlgraphics.util.Service;
@@@ -17632,7 -17500,7 +17621,7 @@@ $as_echo_n "checking avalon-framework..
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 17635 "configure"
 -// #line 17503 "configure"
++// #line 17624 "configure"
  import java.util.regex.Pattern;
  
  import org.apache.avalon.framework.configuration.ConfigurationException;
@@@ -17749,7 -17617,7 +17738,7 @@@ $as_echo_n "checking xml-apis-ext... " 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 17752 "configure"
 -// #line 17620 "configure"
++// #line 17741 "configure"
  import java.util.regex.Pattern;
  
  import org.w3c.dom.svg.SVGDocument;
@@@ -17866,7 -17734,7 +17855,7 @@@ $as_echo_n "checking xml-commons-apis-e
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 17869 "configure"
 -// #line 17737 "configure"
++// #line 17858 "configure"
  import java.util.regex.Pattern;
  
  import org.w3c.dom.svg.SVGDocument;
@@@ -17987,7 -17855,7 +17976,7 @@@ $as_echo_n "checking commons-logging..
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 17990 "configure"
 -// #line 17858 "configure"
++// #line 17979 "configure"
  import java.util.regex.Pattern;
  
  import org.apache.commons.logging.LogFactory;
@@@ -18104,7 -17972,7 +18093,7 @@@ $as_echo_n "checking jlatexmath... " >&
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 18107 "configure"
 -// #line 17975 "configure"
++// #line 18096 "configure"
  import java.util.regex.Pattern;
  
  import org.scilab.forge.jlatexmath.TeXFormula;
@@@ -18211,7 -18079,7 +18200,7 @@@ $as_echo_n "checking minimal version (1
     if test "x" == "x"; then
  
      cat << \EOF > conftest.java
- // #line 18214 "configure"
 -// #line 18082 "configure"
++// #line 18203 "configure"
  import java.util.regex.Pattern;
  
  import org.scilab.forge.jlatexmath.TeXFormula;
     else
  
      cat << \EOF > conftest.java
- // #line 18286 "configure"
 -// #line 18154 "configure"
++// #line 18275 "configure"
  import java.util.regex.Pattern;
  
  import org.scilab.forge.jlatexmath.TeXFormula;
@@@ -18374,7 -18242,7 +18363,7 @@@ $as_echo_n "checking jlatexmath-fop... 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 18377 "configure"
 -// #line 18245 "configure"
++// #line 18366 "configure"
  import java.util.regex.Pattern;
  
  import org.scilab.forge.jlatexmath.fop.JLaTeXMathObj;
@@@ -18497,7 -18365,7 +18486,7 @@@ $as_echo_n "checking checkstyle... " >&
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 18500 "configure"
 -// #line 18368 "configure"
++// #line 18489 "configure"
  import java.util.regex.Pattern;
  
  import com.puppycrawl.tools.checkstyle.CheckStyleTask;
@@@ -18614,7 -18482,7 +18603,7 @@@ $as_echo_n "checking commons-beanutils.
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 18617 "configure"
 -// #line 18485 "configure"
++// #line 18606 "configure"
  import java.util.regex.Pattern;
  
  import org.apache.commons.beanutils.Converter;
@@@ -18731,7 -18599,7 +18720,7 @@@ $as_echo_n "checking antlr... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 18734 "configure"
 -// #line 18602 "configure"
++// #line 18723 "configure"
  import java.util.regex.Pattern;
  
  import antlr.TokenStreamException;
@@@ -18848,7 -18716,7 +18837,7 @@@ $as_echo_n "checking junit4... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 18851 "configure"
 -// #line 18719 "configure"
++// #line 18840 "configure"
  import java.util.regex.Pattern;
  
  import org.junit.Assert;
@@@ -18962,7 -18830,7 +18951,7 @@@ $as_echo_n "checking junit... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 18965 "configure"
 -// #line 18833 "configure"
++// #line 18954 "configure"
  import java.util.regex.Pattern;
  
  import org.junit.Assert;
@@@ -19065,6 -18933,238 +19054,238 @@@ Unit tests (looking for package org.jun
          JUNIT4=$PACKAGE_JAR_FILE
  
  
+         # hamcrest (junit4 dependency)
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking hamcrest-all" >&5
+ $as_echo_n "checking hamcrest-all... " >&6; }
+     PACKAGE_JAR_FILE=
+     found_jar=no
+     saved_ac_java_classpath=$ac_java_classpath
+     DEFAULT_JAR_DIR="/usr/share/java /usr/lib/java /usr/share/java /usr/share/java/jar /opt/java/lib /usr/local/java /usr/local/java/jar /usr/local/share/java /usr/local/share/java/jar /usr/local/lib/java $(find /usr/share/java/ -maxdepth 1 -type d 2>/dev/null) $(find /usr/lib64/ -maxdepth 1 -type d 2>/dev/null) $(find  /usr/lib/ -maxdepth 1 -type d 2>/dev/null)  $(find /usr/share/*/lib -maxdepth 1 -type d 2>/dev/null)"
+     for jardir in "`pwd`/thirdparty" "`pwd`/jar" $DEFAULT_JAR_DIR; do
+       for jar in "$jardir/hamcrest-all.jar" "$jardir/libhamcrest-all.jar" "$jardir/libhamcrest-all-java.jar" "$jardir/hamcrest-all*.jar"; do
+ # TODO check the behaviour when spaces
+         jars_resolved=`ls $jar 2>/dev/null`
+         for jar_resolved in $jars_resolved; do # If several jars matches
+           if test -e "$jar_resolved"; then
+             export ac_java_classpath="$jar_resolved:$ac_java_classpath"
+     cat << \EOF > conftest.java
 -// #line 18954 "configure"
++// #line 19075 "configure"
+ import java.util.regex.Pattern;
+ import org.hamcrest.core.IsNull;
+ public class conftest {
+     public static void main(String[] argv) {
+     }
+     private static int compare(String v1, String v2) {
+         String s1 = normalisedVersion(v1);
+         String s2 = normalisedVersion(v2);
+         return s1.compareTo(s2);
+     }
+     private static String normalisedVersion(String version) {
+         return normalisedVersion(version, ".", 4);
+     }
+     private static String normalisedVersion(String version, String sep, int maxWidth) {
+         String[] split = Pattern.compile(sep, Pattern.LITERAL).split(version);
+         StringBuilder sb = new StringBuilder();
+         for (String s : split) {
+             sb.append(String.format("%" + maxWidth + 's', s));
+         }
+         return sb.toString();
+     }
+ }
+ EOF
+     CLASSPATH=$ac_java_classpath
+     export CLASSPATH
+     cmd="$JAVAC ${JAVAC_FLAGS} conftest.java"
+     if (echo $cmd >&5 ; eval $cmd >conftest.java.output 2>&5) ; then
+        if test ""no"" = "no"; then
+            echo "yes" >&5
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jar_resolved" >&5
+ $as_echo "$jar_resolved" >&6; }
+               found_jar=yes
+               PACKAGE_JAR_FILE=$jar_resolved
+               break 3
+        else
+               cmd="$JAVA conftest"
+               if (echo $cmd >&5 ; eval $cmd >conftest.java.output 2>&5); then
+                echo "yes" >&5
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jar_resolved" >&5
+ $as_echo "$jar_resolved" >&6; }
+               found_jar=yes
+               PACKAGE_JAR_FILE=$jar_resolved
+               break 3
+             else
+                 echo "configure: failed program was:" >&5
+                 cat conftest.java >&5
+                 if test -s conftest.java.output; then
+                    STDOUT=`cat conftest.java.output`
+                 fi
+                 echo "configure: CLASSPATH was $CLASSPATH" >&5
+             ac_java_classpath=$saved_ac_java_classpath
+                             fi
+         fi
+         if test -f conftest.java.output; then
+            rm conftest.java.output
+         fi
+     else
+         echo "configure: failed program was:" >&5
+         cat conftest.java >&5
+         echo "configure: CLASSPATH was $CLASSPATH" >&5
+             ac_java_classpath=$saved_ac_java_classpath
+             fi
+           fi
+         done
+       done
+     done
+     if test "$found_jar" = "no"; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+       if test ""yes"" = "yes"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find or use the Java package/jar hamcrest-all used by Hamcrest- library matchers (looking for package org.hamcrest.core.IsNull)" >&5
+ $as_echo "$as_me: WARNING: Could not find or use the Java package/jar hamcrest-all used by Hamcrest- library matchers (looking for package org.hamcrest.core.IsNull)" >&2;}
+       else
+           as_fn_error $? "Could not find or use the Java package/jar hamcrest-all used by Hamcrest- library matchers (looking for package org.hamcrest.core.IsNull)" "$LINENO" 5
+       fi
+     fi
+         if test -z "$PACKAGE_JAR_FILE"; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking hamcrest/all" >&5
+ $as_echo_n "checking hamcrest/all... " >&6; }
+     PACKAGE_JAR_FILE=
+     found_jar=no
+     saved_ac_java_classpath=$ac_java_classpath
+     DEFAULT_JAR_DIR="/usr/share/java /usr/lib/java /usr/share/java /usr/share/java/jar /opt/java/lib /usr/local/java /usr/local/java/jar /usr/local/share/java /usr/local/share/java/jar /usr/local/lib/java $(find /usr/share/java/ -maxdepth 1 -type d 2>/dev/null) $(find /usr/lib64/ -maxdepth 1 -type d 2>/dev/null) $(find  /usr/lib/ -maxdepth 1 -type d 2>/dev/null)  $(find /usr/share/*/lib -maxdepth 1 -type d 2>/dev/null)"
+     for jardir in "`pwd`/thirdparty" "`pwd`/jar" $DEFAULT_JAR_DIR; do
+       for jar in "$jardir/hamcrest/all.jar" "$jardir/libhamcrest/all.jar" "$jardir/libhamcrest/all-java.jar" "$jardir/hamcrest/all*.jar"; do
+ # TODO check the behaviour when spaces
+         jars_resolved=`ls $jar 2>/dev/null`
+         for jar_resolved in $jars_resolved; do # If several jars matches
+           if test -e "$jar_resolved"; then
+             export ac_java_classpath="$jar_resolved:$ac_java_classpath"
+     cat << \EOF > conftest.java
 -// #line 19068 "configure"
++// #line 19189 "configure"
+ import java.util.regex.Pattern;
+ import org.hamcrest.core.IsNull;
+ public class conftest {
+     public static void main(String[] argv) {
+     }
+     private static int compare(String v1, String v2) {
+         String s1 = normalisedVersion(v1);
+         String s2 = normalisedVersion(v2);
+         return s1.compareTo(s2);
+     }
+     private static String normalisedVersion(String version) {
+         return normalisedVersion(version, ".", 4);
+     }
+     private static String normalisedVersion(String version, String sep, int maxWidth) {
+         String[] split = Pattern.compile(sep, Pattern.LITERAL).split(version);
+         StringBuilder sb = new StringBuilder();
+         for (String s : split) {
+             sb.append(String.format("%" + maxWidth + 's', s));
+         }
+         return sb.toString();
+     }
+ }
+ EOF
+     CLASSPATH=$ac_java_classpath
+     export CLASSPATH
+     cmd="$JAVAC ${JAVAC_FLAGS} conftest.java"
+     if (echo $cmd >&5 ; eval $cmd >conftest.java.output 2>&5) ; then
+        if test ""no"" = "no"; then
+            echo "yes" >&5
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jar_resolved" >&5
+ $as_echo "$jar_resolved" >&6; }
+               found_jar=yes
+               PACKAGE_JAR_FILE=$jar_resolved
+               break 3
+        else
+               cmd="$JAVA conftest"
+               if (echo $cmd >&5 ; eval $cmd >conftest.java.output 2>&5); then
+                echo "yes" >&5
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jar_resolved" >&5
+ $as_echo "$jar_resolved" >&6; }
+               found_jar=yes
+               PACKAGE_JAR_FILE=$jar_resolved
+               break 3
+             else
+                 echo "configure: failed program was:" >&5
+                 cat conftest.java >&5
+                 if test -s conftest.java.output; then
+                    STDOUT=`cat conftest.java.output`
+                 fi
+                 echo "configure: CLASSPATH was $CLASSPATH" >&5
+             ac_java_classpath=$saved_ac_java_classpath
+                             fi
+         fi
+         if test -f conftest.java.output; then
+            rm conftest.java.output
+         fi
+     else
+         echo "configure: failed program was:" >&5
+         cat conftest.java >&5
+         echo "configure: CLASSPATH was $CLASSPATH" >&5
+             ac_java_classpath=$saved_ac_java_classpath
+             fi
+           fi
+         done
+       done
+     done
+     if test "$found_jar" = "no"; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+       if test ""yes"" = "yes"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find or use the Java package/jar hamcrest/all used by Hamcrest- library matchers (looking for package org.hamcrest.core.IsNull)" >&5
+ $as_echo "$as_me: WARNING: Could not find or use the Java package/jar hamcrest/all used by Hamcrest- library matchers (looking for package org.hamcrest.core.IsNull)" >&2;}
+       else
+           as_fn_error $? "Could not find or use the Java package/jar hamcrest/all used by Hamcrest- library matchers (looking for package org.hamcrest.core.IsNull)" "$LINENO" 5
+       fi
+     fi
+         fi
+         HAMCREST=$PACKAGE_JAR_FILE
          # Cobertura (java code coverage)
  
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking cobertura" >&5
@@@ -19083,7 -19183,7 +19304,7 @@@ $as_echo_n "checking cobertura... " >&6
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 19086 "configure"
 -// #line 19186 "configure"
++// #line 19307 "configure"
  import java.util.regex.Pattern;
  
  import net.sourceforge.cobertura.merge.Main;
@@@ -19200,7 -19300,7 +19421,7 @@@ $as_echo_n "checking asm3... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 19203 "configure"
 -// #line 19303 "configure"
++// #line 19424 "configure"
  import java.util.regex.Pattern;
  
  import org.objectweb.asm.Type;
@@@ -19314,7 -19414,7 +19535,7 @@@ $as_echo_n "checking asm... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 19317 "configure"
 -// #line 19417 "configure"
++// #line 19538 "configure"
  import java.util.regex.Pattern;
  
  import org.objectweb.asm.Type;
@@@ -19431,7 -19531,7 +19652,7 @@@ $as_echo_n "checking ecj... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 19434 "configure"
 -// #line 19534 "configure"
++// #line 19655 "configure"
  import java.util.regex.Pattern;
  
  import org.eclipse.jdt.core.compiler.batch.BatchCompiler;
@@@ -23697,7 -23797,7 +23918,7 @@@ CHK_EIGEN_MINOR=
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Eigen is version $CHK_EIGEN_WORLD.$CHK_EIGEN_MAJOR.$CHK_EIGEN_MINOR or later" >&5
  $as_echo_n "checking if Eigen is version $CHK_EIGEN_WORLD.$CHK_EIGEN_MAJOR.$CHK_EIGEN_MINOR or later... " >&6; }
  cat > conftest.$ac_ext <<EOF
- #line 23700 "configure"
 -#line 23800 "configure"
++#line 23921 "configure"
  #include "confdefs.h"
  
  #include "$PATH_TO_EIGEN/Eigen/Sparse"
@@@ -28288,7 -28388,7 +28509,7 @@@ CPPFLAGS="$CPPFLAGS -I$CHK_TCL_INCLUDE_
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if tcl is version $CHK_TCL_MAJOR.$CHK_TCL_MINOR or later" >&5
  $as_echo_n "checking if tcl is version $CHK_TCL_MAJOR.$CHK_TCL_MINOR or later... " >&6; }
  cat > conftest.$ac_ext <<EOF
- #line 28291 "configure"
 -#line 28391 "configure"
++#line 28512 "configure"
  #include "confdefs.h"
  
  #include "$CHK_TCL_INCLUDE_PATH/$CHK_TCL_INC_NAME"
@@@ -28599,7 -28699,7 +28820,7 @@@ CPPFLAGS="$CPPFLAGS $TCL_INC_PATH -I$CH
  $as_echo_n "checking if tk is version $CHK_TK_MAJOR.$CHK_TK_MINOR or later... " >&6; }
  
  cat > conftest.$ac_ext <<EOF
- #line 28602 "configure"
 -#line 28702 "configure"
++#line 28823 "configure"
  #include "confdefs.h"
  
  #include "$CHK_TK_INCLUDE_PATH/$CHK_TK_INC_NAME"
@@@ -29188,7 -29288,7 +29409,7 @@@ $as_echo_n "checking saxon9he... " >&6
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 29191 "configure"
 -// #line 29291 "configure"
++// #line 29412 "configure"
  import java.util.regex.Pattern;
  
  import net.sf.saxon.Version;
@@@ -29303,7 -29403,7 +29524,7 @@@ $as_echo_n "checking saxon... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 29306 "configure"
 -// #line 29406 "configure"
++// #line 29527 "configure"
  import java.util.regex.Pattern;
  
  import net.sf.saxon.Version;
@@@ -29419,7 -29519,7 +29640,7 @@@ $as_echo_n "checking saxon... " >&6; 
              export ac_java_classpath="$jar_resolved:$ac_java_classpath"
  
      cat << \EOF > conftest.java
- // #line 29422 "configure"
 -// #line 29522 "configure"
++// #line 29643 "configure"
  import java.util.regex.Pattern;
  
  import com.icl.saxon.Loader;
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 4d9a28f,0000000..41e12fc
mode 100644,000000..100644
--- /dev/null
@@@ -1,349 -1,0 +1,349 @@@
 +/*
 + *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 + *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
 + *
 + *  This file must be used under the terms of the CeCILL.
 + *  This source file is licensed as described in the file COPYING, which
 + *  you should have received as part of this distribution.  The terms
 + *  are also available at
 + *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 + *
 + */
 +
 +#ifndef __BASE_MULTIPLICATION_HXX__
 +#define __BASE_MULTIPLICATION_HXX__
 +
 +#include <cstdint>
 +#include <cstring>
 +
 +#include "base/tools.hxx"
 +
 +extern "C"
 +{
 +#include "elem_common.h"
 +
 +    extern int C2F(zgemm) (char *_pstTransA, char *_pstTransB, int *_piN, int *_piM, int *_piK, doublecomplex *_pdblAlpha, doublecomplex *_pdblA, int *_piLdA, doublecomplex *_pdblB, int *_piLdB, doublecomplex *_pdblBeta, doublecomplex *_pdblC, int *_piLdC);
 +}
 +
 +namespace jit
 +{
 +
-     namespace multiplication
-     {
++namespace multiplication
++{
 +
-         inline void DGEMM(const double * x, int & x_r, int & x_c, int & y_c, const double * y, double * o)
-         {
-             static char n = 'n';
-             static double zero = 0;
-             static double one = 1;
++inline void DGEMM(const double * x, int & x_r, int & x_c, int & y_c, const double * y, double * o)
++{
++    static char n = 'n';
++    static double zero = 0;
++    static double one = 1;
 +
-             C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &one, const_cast<double *>(x), &x_r, const_cast<double *>(y), &x_c, &zero, o, &x_r);
-         }
++    C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &one, const_cast<double *>(x), &x_r, const_cast<double *>(y), &x_c, &zero, o, &x_r);
++}
 +
-       inline void ZGEMM(const doublecomplex * x, int & x_r, int & x_c, int & y_c, const doublecomplex * y, doublecomplex * o)
-         {
-             static char n = 'n';
-             static doublecomplex zero = {0., 0.};
-             static doublecomplex one = {1., 0.};
++inline void ZGEMM(const doublecomplex * x, int & x_r, int & x_c, int & y_c, const doublecomplex * y, doublecomplex * o)
++{
++    static char n = 'n';
++    static doublecomplex zero = {0., 0.};
++    static doublecomplex one = {1., 0.};
 +
-             C2F(zgemm)(&n, &n, &x_r, &y_c, &x_c, &one, const_cast<doublecomplex *>(x), &x_r, const_cast<doublecomplex *>(y), &x_c, &zero, o, &x_r);
-         }
++    C2F(zgemm)(&n, &n, &x_r, &y_c, &x_c, &one, const_cast<doublecomplex *>(x), &x_r, const_cast<doublecomplex *>(y), &x_c, &zero, o, &x_r);
++}
 +
-       inline void ZGEMM(const cpx_t * x, int & x_r, int & x_c, int & y_c, const cpx_t * y, cpx_t * o)
-         {
-           ZGEMM(reinterpret_cast<const doublecomplex *>(x), x_r, x_c, y_c, reinterpret_cast<const doublecomplex *>(y), reinterpret_cast<doublecomplex *>(o));
-         }
++inline void ZGEMM(const cpx_t * x, int & x_r, int & x_c, int & y_c, const cpx_t * y, cpx_t * o)
++{
++    ZGEMM(reinterpret_cast<const doublecomplex *>(x), x_r, x_c, y_c, reinterpret_cast<const doublecomplex *>(y), reinterpret_cast<doublecomplex *>(o));
++}
 +
-       // complex * complex
-         inline void ZGEMM(const double * x_re, const double * x_im, int & x_r, int & x_c, int & y_c, const double * y_re, const double * y_im, double * o_re, double ** o_im)
-         {
-             static char n = 'n';
-             static double zero = 0;
-             static double one = 1;
-             static double m_one = -1;
-           const int o_size = x_r * y_c;
-             double * _x_re = const_cast<double *>(x_re);
-             double * _x_im = const_cast<double *>(x_im);
-             double * _y_re = const_cast<double *>(y_re);
-             double * _y_im = const_cast<double *>(y_im);
-             // o_re = x_re * y_re
-             C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &one, _x_re, &x_r, _y_re, &x_c, &zero, o_re, &x_r);
-             if (x_im)
-             {
-               if (!*o_im)
-               {
-                   *o_im = new double[o_size];
-               }
-                 if (y_im)
-                 {
-                     // o_re = -x_im * y_im + o_re
-                     C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &m_one, _x_im, &x_r, _y_im, &x_c, &one, o_re, &x_r);
-                     // o_im = x_re * y_im
-                     C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &one, _x_re, &x_r, _y_im, &x_c, &zero, *o_im, &x_r);
-                     // o_im = x_im * y_re + o_im
-                     C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &one, _x_im, &x_r, _y_re, &x_c, &one, *o_im, &x_r);
-                 }
-                 else
-                 {
-                     // o_im = x_im * y_re
-                     C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &one, _x_im, &x_r, _y_re, &x_c, &zero, *o_im, &x_r);
-                 }
-             }
-             else if (y_im)
-             {
-               if (!*o_im)
-               {
-                   *o_im = new double[o_size];
-               }
-                 // o_im = x_re * y_im
-                 C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &one, _x_re, &x_r, _y_im, &x_c, &zero, *o_im, &x_r);
-             }
-           else if (*o_im)
-           {
-               std::memset(*o_im, 0, sizeof(double) * o_size);
-           }
-         }
++// complex * complex
++inline void ZGEMM(const double * x_re, const double * x_im, int & x_r, int & x_c, int & y_c, const double * y_re, const double * y_im, double * o_re, double ** o_im)
++{
++    static char n = 'n';
++    static double zero = 0;
++    static double one = 1;
++    static double m_one = -1;
++
++    const int o_size = x_r * y_c;
++    double * _x_re = const_cast<double *>(x_re);
++    double * _x_im = const_cast<double *>(x_im);
++    double * _y_re = const_cast<double *>(y_re);
++    double * _y_im = const_cast<double *>(y_im);
 +
-         // double * int?
-         template<typename T>
-         inline void times(const int64_t x_r, const int64_t x_c, const int64_t y_c, const double * x, const T * y, T ** o)
++    // o_re = x_re * y_re
++    C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &one, _x_re, &x_r, _y_re, &x_c, &zero, o_re, &x_r);
++
++    if (x_im)
++    {
++        if (!*o_im)
 +        {
-             const int64_t x_size = x_r * x_c;
-             const int64_t y_size = x_c * y_c;
-             const int64_t o_size = x_r * y_c;
-             double * _x = new double[x_size];
-             double * _y = new double[y_size];
-             double * _o = new double[o_size];
-             for (int64_t i = 0; i < x_size; ++i)
-             {
-                 _x[i] = (double)((T)x[i]);
-             }
-             for (int64_t i = 0; i < y_size; ++i)
-             {
-                 _y[i] = (double)y[i];
-             }
-             int _x_r = x_r;
-             int _x_c = x_c;
-             int _y_c = y_c;
-             DGEMM(_x, _x_r, _x_c, _y_c, _y, _o);
-             delete[] _x;
-             delete[] _y;
-             T * __o;
-             if (*o)
-             {
-                 __o = *o;
-             }
-             else
-             {
-                 __o = new T[o_size];
-                 *o = __o;
-             }
-             for (int64_t i = 0; i < o_size; ++i)
-             {
-                 __o[i] = (T)_o[i];
-             }
-             delete[] _o;
++            *o_im = new double[o_size];
 +        }
++        if (y_im)
++        {
++            // o_re = -x_im * y_im + o_re
++            C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &m_one, _x_im, &x_r, _y_im, &x_c, &one, o_re, &x_r);
 +
-         // int? * double
-         template<typename T>
-         inline void times(const int64_t x_r, const int64_t x_c, const int64_t y_c, const T * x, const double * y, T ** o)
++            // o_im = x_re * y_im
++            C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &one, _x_re, &x_r, _y_im, &x_c, &zero, *o_im, &x_r);
++            // o_im = x_im * y_re + o_im
++            C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &one, _x_im, &x_r, _y_re, &x_c, &one, *o_im, &x_r);
++        }
++        else
 +        {
-             const int64_t x_size = x_r * x_c;
-             const int64_t y_size = x_c * y_c;
-             const int64_t o_size = x_r * y_c;
-             double * _x = new double[x_size];
-             double * _y = new double[y_size];
-             double * _o = new double[o_size];
-             for (int64_t i = 0; i < y_size; ++i)
-             {
-                 _y[i] = (double)((T)y[i]);
-             }
-             for (int64_t i = 0; i < y_size; ++i)
-             {
-                 _x[i] = (double)x[i];
-             }
-             int _x_r = x_r;
-             int _x_c = x_c;
-             int _y_c = y_c;
-             DGEMM(_x, _x_r, _x_c, _y_c, _y, _o);
-             delete[] _x;
-             delete[] _y;
-             T * __o;
-             if (*o)
-             {
-                 __o = *o;
-             }
-             else
-             {
-                 __o = new T[o_size];
-                 *o = __o;
-             }
-             for (int64_t i = 0; i < o_size; ++i)
-             {
-                 __o[i] = (T)_o[i];
-             }
-             delete[] _o;
++            // o_im = x_im * y_re
++            C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &one, _x_im, &x_r, _y_re, &x_c, &zero, *o_im, &x_r);
 +        }
-         // int? * int?
-         template<typename T, typename U, typename V>
-         inline void times(const int64_t x_r, const int64_t x_c, const int64_t y_c, const T * x, const U * y, V ** o)
++    }
++    else if (y_im)
++    {
++        if (!*o_im)
 +        {
-             const int64_t x_size = x_r * x_c;
-             const int64_t y_size = x_c * y_c;
-             const int64_t o_size = x_r * y_c;
-             double * _x = new double[x_size];
-             double * _y = new double[y_size];
-             double * _o = new double[o_size];
-             for (int64_t i = 0; i < x_size; ++i)
-             {
-                 _x[i] = (double)((V)x[i]);
-             }
-             for (int64_t i = 0; i < y_size; ++i)
-             {
-                 _y[i] = (double)((V)y[i]);
-             }
-             int _x_r = x_r;
-             int _x_c = x_c;
-             int _y_c = y_c;
-             DGEMM(_x, _x_r, _x_c, _y_c, _y, _o);
-             delete[] _x;
-             delete[] _y;
-             V * __o;
-             if (*o)
-             {
-                 __o = *o;
-             }
-             else
-             {
-                 __o = new V[o_size];
-                 *o = __o;
-             }
-             for (int64_t i = 0; i < o_size; ++i)
-             {
-                 __o[i] = (V)_o[i];
-             }
-             delete[] _o;
++            *o_im = new double[o_size];
 +        }
++        // o_im = x_re * y_im
++        C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &one, _x_re, &x_r, _y_im, &x_c, &zero, *o_im, &x_r);
++    }
++    else if (*o_im)
++    {
++        std::memset(*o_im, 0, sizeof(double) * o_size);
++    }
++}
 +
-         // double * double
-       template<>
-         inline void times<double, double, double>(const int64_t x_r, const int64_t x_c, const int64_t y_c, const double * x, const double * y, double ** o)
-         {
-             int _x_r = x_r;
-             int _x_c = x_c;
-             int _y_c = y_c;
++// double * int?
++template<typename T>
++inline void times(const int64_t x_r, const int64_t x_c, const int64_t y_c, const double * x, const T * y, T ** o)
++{
++    const int64_t x_size = x_r * x_c;
++    const int64_t y_size = x_c * y_c;
++    const int64_t o_size = x_r * y_c;
++    double * _x = new double[x_size];
++    double * _y = new double[y_size];
++    double * _o = new double[o_size];
++    for (int64_t i = 0; i < x_size; ++i)
++    {
++        _x[i] = (double)((T)x[i]);
++    }
++    for (int64_t i = 0; i < y_size; ++i)
++    {
++        _y[i] = (double)y[i];
++    }
 +
-             if (!*o)
-             {
-                 *o = new double[x_r * y_c];
-             }
++    int _x_r = x_r;
++    int _x_c = x_c;
++    int _y_c = y_c;
 +
-             DGEMM(x, _x_r, _x_c, _y_c, y, *o);
-         }
++    DGEMM(_x, _x_r, _x_c, _y_c, _y, _o);
 +
-         // complex * complex
-         inline void timesCC(const int64_t x_r, const int64_t x_c, const int64_t y_c, const double * x_re, const double * x_im, const double * y_re, const double * y_im, double ** o_re, double ** o_im)
-         {
-             int _x_r = x_r;
-             int _x_c = x_c;
-             int _y_c = y_c;
++    delete[] _x;
++    delete[] _y;
 +
-             if (!*o_re)
-             {
-                 *o_re = new double[x_r * y_c];
-             }
++    T * __o;
++    if (*o)
++    {
++        __o = *o;
++    }
++    else
++    {
++        __o = new T[o_size];
++        *o = __o;
++    }
 +
-             ZGEMM(x_re, x_im, _x_r, _x_c, _y_c, y_re, y_im, *o_re, o_im);
-         }
++    for (int64_t i = 0; i < o_size; ++i)
++    {
++        __o[i] = (T)_o[i];
++    }
++
++    delete[] _o;
++}
++
++// int? * double
++template<typename T>
++inline void times(const int64_t x_r, const int64_t x_c, const int64_t y_c, const T * x, const double * y, T ** o)
++{
++    const int64_t x_size = x_r * x_c;
++    const int64_t y_size = x_c * y_c;
++    const int64_t o_size = x_r * y_c;
++    double * _x = new double[x_size];
++    double * _y = new double[y_size];
++    double * _o = new double[o_size];
++    for (int64_t i = 0; i < y_size; ++i)
++    {
++        _y[i] = (double)((T)y[i]);
++    }
++    for (int64_t i = 0; i < y_size; ++i)
++    {
++        _x[i] = (double)x[i];
++    }
++
++    int _x_r = x_r;
++    int _x_c = x_c;
++    int _y_c = y_c;
++
++    DGEMM(_x, _x_r, _x_c, _y_c, _y, _o);
++
++    delete[] _x;
++    delete[] _y;
++
++    T * __o;
++    if (*o)
++    {
++        __o = *o;
++    }
++    else
++    {
++        __o = new T[o_size];
++        *o = __o;
++    }
++
++    for (int64_t i = 0; i < o_size; ++i)
++    {
++        __o[i] = (T)_o[i];
++    }
++
++    delete[] _o;
++}
++
++// int? * int?
++template<typename T, typename U, typename V>
++inline void times(const int64_t x_r, const int64_t x_c, const int64_t y_c, const T * x, const U * y, V ** o)
++{
++    const int64_t x_size = x_r * x_c;
++    const int64_t y_size = x_c * y_c;
++    const int64_t o_size = x_r * y_c;
++    double * _x = new double[x_size];
++    double * _y = new double[y_size];
++    double * _o = new double[o_size];
++    for (int64_t i = 0; i < x_size; ++i)
++    {
++        _x[i] = (double)((V)x[i]);
++    }
++    for (int64_t i = 0; i < y_size; ++i)
++    {
++        _y[i] = (double)((V)y[i]);
++    }
++
++    int _x_r = x_r;
++    int _x_c = x_c;
++    int _y_c = y_c;
++
++    DGEMM(_x, _x_r, _x_c, _y_c, _y, _o);
++
++    delete[] _x;
++    delete[] _y;
 +
-         // complex * double
-         inline void timesCD(const int64_t x_r, const int64_t x_c, const int64_t y_c, const double * x_re, const double * x_im, const double * y, double ** o_re, double ** o_im)
++    V * __o;
++    if (*o)
++    {
++        __o = *o;
++    }
++    else
++    {
++        __o = new V[o_size];
++        *o = __o;
++    }
++
++    for (int64_t i = 0; i < o_size; ++i)
++    {
++        __o[i] = (V)_o[i];
++    }
++
++    delete[] _o;
++}
++
++// double * double
++template<>
++inline void times<double, double, double>(const int64_t x_r, const int64_t x_c, const int64_t y_c, const double * x, const double * y, double ** o)
++{
++    int _x_r = x_r;
++    int _x_c = x_c;
++    int _y_c = y_c;
++
++    if (!*o)
++    {
++        *o = new double[x_r * y_c];
++    }
++
++    DGEMM(x, _x_r, _x_c, _y_c, y, *o);
++}
++
++// complex * complex
++inline void timesCC(const int64_t x_r, const int64_t x_c, const int64_t y_c, const double * x_re, const double * x_im, const double * y_re, const double * y_im, double ** o_re, double ** o_im)
++{
++    int _x_r = x_r;
++    int _x_c = x_c;
++    int _y_c = y_c;
++
++    if (!*o_re)
++    {
++        *o_re = new double[x_r * y_c];
++    }
++
++    ZGEMM(x_re, x_im, _x_r, _x_c, _y_c, y_re, y_im, *o_re, o_im);
++}
++
++// complex * double
++inline void timesCD(const int64_t x_r, const int64_t x_c, const int64_t y_c, const double * x_re, const double * x_im, const double * y, double ** o_re, double ** o_im)
++{
++    const int64_t o_size = x_r * y_c;
++    if (!*o_re)
++    {
++        *o_re = new double[o_size];
++    }
++
++    int _x_r = x_r;
++    int _x_c = x_c;
++    int _y_c = y_c;
++
++    // o_re = x_re * y
++    DGEMM(x_re, _x_r, _x_c, _y_c, y, *o_re);
++
++    if (x_im)
++    {
++        if (!*o_im)
 +        {
-           const int64_t o_size = x_r * y_c;
-             if (!*o_re)
-             {
-                 *o_re = new double[o_size];
-             }
-             int _x_r = x_r;
-             int _x_c = x_c;
-             int _y_c = y_c;
-             // o_re = x_re * y
-             DGEMM(x_re, _x_r, _x_c, _y_c, y, *o_re);
-             if (x_im)
-             {
-               if (!*o_im)
-               {
-                   *o_im = new double[o_size];
-               }
-                 // o_im = x_im * y
-                 DGEMM(x_im, _x_r, _x_c, _y_c, y, *o_im);
-             }
-           else if (*o_im)
-           {
-               std::memset(*o_im, 0, sizeof(double) * o_size);
-           }
++            *o_im = new double[o_size];
 +        }
++        // o_im = x_im * y
++        DGEMM(x_im, _x_r, _x_c, _y_c, y, *o_im);
++    }
++    else if (*o_im)
++    {
++        std::memset(*o_im, 0, sizeof(double) * o_size);
++    }
++}
++
++// double * complex
++inline void timesDC(const int64_t x_r, const int64_t x_c, const int64_t y_c, const double * x, const double * y_re, const double * y_im, double ** o_re, double ** o_im)
++{
++    const int64_t o_size = x_r * y_c;
++    if (!*o_re)
++    {
++        *o_re = new double[o_size];
++    }
 +
-         // double * complex
-         inline void timesDC(const int64_t x_r, const int64_t x_c, const int64_t y_c, const double * x, const double * y_re, const double * y_im, double ** o_re, double ** o_im)
++    int _x_r = x_r;
++    int _x_c = x_c;
++    int _y_c = y_c;
++
++    // o_re = x * y_re
++    DGEMM(x, _x_r, _x_c, _y_c, y_re, *o_re);
++
++    if (y_im)
++    {
++        if (!*o_im)
 +        {
-           const int64_t o_size = x_r * y_c;
-           if (!*o_re)
-             {
-                 *o_re = new double[o_size];
-             }
-             int _x_r = x_r;
-             int _x_c = x_c;
-             int _y_c = y_c;
-             // o_re = x * y_re
-             DGEMM(x, _x_r, _x_c, _y_c, y_re, *o_re);
-             if (y_im)
-             {
-               if (!*o_im)
-               {
-                   *o_im = new double[o_size];
-               }
-                 // o_im = x * y_im
-                 DGEMM(x, _x_r, _x_c, _y_c, y_im, *o_im);
-             }
-           else if (*o_im)
-           {
-               std::memset(*o_im, 0, sizeof(double) * o_size);
-           }
++            *o_im = new double[o_size];
 +        }
++        // o_im = x * y_im
++        DGEMM(x, _x_r, _x_c, _y_c, y_im, *o_im);
++    }
++    else if (*o_im)
++    {
++        std::memset(*o_im, 0, sizeof(double) * o_size);
++    }
++}
 +
-     } // namespace multiplication
++} // namespace multiplication
 +
 +} // namespace jit
 +
 +#endif // __BASE_MULTIPLICATION_HXX__
@@@ -35,6 -35,6 +35,8 @@@ C : comple
  + : >= 0
  - : <= 0
  */
++extern int C2F(zgemm) (char *_pstTransA, char *_pstTransB, int *_piN, int *_piM, int *_piK, double *_pdblAlpha, double *_pdblA, int *_piLdA,
++                       double *_pdblB, int *_piLdB, double *_pdblBeta, double *_pdblC, int *_piLdC);
  
  /*ddpowe*/
  int iPowerRealScalarByRealScalar(
@@@ -1,14 -1,14 +1,14 @@@
  /*
-- *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-- *  Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS
-- *
-- *  This file must be used under the terms of the CeCILL.
-- *  This source file is licensed as described in the file COPYING, which
-- *  you should have received as part of this distribution.  The terms
-- *  are also available at
-- *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
-- *
-- */
++*  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
++*  Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS
++*
++*  This file must be used under the terms of the CeCILL.
++*  This source file is licensed as described in the file COPYING, which
++*  you should have received as part of this distribution.  The terms
++*  are also available at
++*  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
++*
++*/
  
  //file included in runvisitor.cpp
  namespace ast {
  template<class T>
  void RunVisitorT<T>::visitprivate(const CallExp &e)
  {
 +    bool isJITCall = false;
 +    exps_t args;
 +    types::InternalType * pIT = nullptr;
 +    const Exp & name = e.getName();
 +    if (name.isSimpleVar() && static_cast<const SimpleVar &>(name).getSymbol().getName() == L"jit")
 +    {
-       const ast::exps_t _args = e.getArgs();
-       if (_args.size() == 1)
-       {
-           const ast::Exp & arg = *_args.back();
-           if (arg.isCallExp())
-           {
-               args = static_cast<const CallExp &>(arg).getArgs();
-               static_cast<const CallExp &>(arg).getName().accept(*this);
-               pIT = getResult();
-               isJITCall = true;
-           }
-       }
-     }
-     
-     if (!isJITCall)
-     {
-       name.accept(*this);
-       pIT = getResult();
++        const ast::exps_t _args = e.getArgs();
++        if (_args.size() == 1)
++        {
++            const ast::Exp & arg = *_args.back();
++            if (arg.isCallExp())
++            {
++                args = static_cast<const CallExp &>(arg).getArgs();
++                static_cast<const CallExp &>(arg).getName().accept(*this);
++                pIT = getResult();
++                isJITCall = true;
++            }
++        }
 +    }
 +
-     if (pIT != NULL)
-     {
-         //function call
-         types::typed_list out;
-         types::typed_list in;
-         types::optional_list opt;
+     types::typed_list outTmp;
+     types::typed_list inTmp;
+     std::vector<std::wstring> vectOptName;
+     std::vector<int> vectNbResult;
  
-         int iRetCount = getExpectedSize();
-         int iSaveExpectedSize = iRetCount;
+     int iRetCount = getExpectedSize();
+     int iSaveExpectedSize = iRetCount;
  
-         // manage case [a,b]=foo() where foo is defined as a=foo()
-         if (pIT->getInvokeNbOut() != -1 && pIT->getInvokeNbOut() < iRetCount)
-         {
-             clearResult();
-             std::wostringstream os;
-             os << _W("Wrong number of output arguments.\n") << std::endl;
-             throw ast::InternalError(os.str(), 999, e.getLocation());
-         }
+     //get function arguments
 -    exps_t args = e.getArgs();
++   
++    if (isJITCall == false)
++    {
++        args = e.getArgs();
++    }
 +
-         //get function arguments
-       if (!isJITCall)
-       {
-           args = e.getArgs();
-       }
-       
-         try
+     try
+     {
+         for (auto& arg : args)
          {
-             for (auto arg : args)
+             if (arg->isAssignExp())
              {
-                 if (arg->isAssignExp())
+                 AssignExp* pAssign = static_cast<AssignExp*>(arg);
+                 //optional parameter
+                 Exp* pL = &pAssign->getLeftExp();
+                 if (!pL->isSimpleVar())
                  {
-                     AssignExp* pAssign = static_cast<AssignExp*>(arg);
-                     //optional parameter
-                     Exp* pL = &pAssign->getLeftExp();
-                     if (!pL->isSimpleVar())
-                     {
-                         std::wostringstream os;
-                         os << _W("left side of optional parameter must be a variable") << std::endl;
-                         throw ast::InternalError(os.str(), 999, e.getLocation());
-                     }
+                     std::wostringstream os;
+                     os << _W("left side of optional parameter must be a variable") << std::endl;
+                     throw ast::InternalError(os.str(), 999, e.getLocation());
+                 }
  
-                     SimpleVar* pVar = pL->getAs<SimpleVar>();
-                     Exp* pR = &pAssign->getRightExp();
-                     pR->accept(*this);
-                     types::InternalType* pITR = getResult();
-                     // IncreaseRef to protect opt argument of scope_end delete
-                     // It will be deleted by clear_opt
-                     pITR->IncreaseRef();
+                 SimpleVar* pVar = pL->getAs<SimpleVar>();
+                 Exp* pR = &pAssign->getRightExp();
+                 pR->accept(*this);
+                 types::InternalType* pITR = getResult();
+                 // IncreaseRef to protect opt argument of scope_end delete
+                 // It will be deleted by clear_opt
+                 pITR->IncreaseRef();
  
-                     if (pIT->hasInvokeOption())
-                     {
-                         opt.push_back(std::pair<std::wstring, types::InternalType*>(pVar->getSymbol().getName(), pITR));
-                         //in case of macro/macrofile, we have to shift input param
-                         //so add NULL item in in list to keep initial order
-                         if (pIT->isMacro() || pIT->isMacroFile())
-                         {
-                             in.push_back(NULL);
-                         }
-                     }
-                     else
-                     {
-                         in.push_back(pITR);
-                     }
+                 vectOptName.push_back(pVar->getSymbol().getName());
+                 inTmp.push_back(pITR);
+                 vectNbResult.push_back(1);
  
-                     clearResult();
-                     continue;
-                 }
+                 clearResult();
+                 continue;
+             }
  
-                 int iSize = getExpectedSize();
-                 setExpectedSize(-1);
-                 arg->accept(*this);
-                 setExpectedSize(iSize);
+             int iSize = getExpectedSize();
+             setExpectedSize(-1);
+             arg->accept(*this);
+             setExpectedSize(iSize);
  
-                 if (getResult() == NULL)
-                 {
-                     //special case for empty extraction of list ( list()(:) )
-                     continue;
-                 }
+             if (getResult() == NULL)
+             {
+                 //special case for empty extraction of list ( list()(:) )
+                 vectNbResult.push_back(0);
+                 continue;
+             }
  
-                 //extract implicit list for call()
-                 if (pIT->isCallable() || pIT->isUserType())
+             if (isSingleResult())
+             {
+                 inTmp.push_back(getResult());
+                 getResult()->IncreaseRef();
+             }
+             else
+             {
+                 for (int i = 0; i < getResultSize(); i++)
                  {
-                     types::InternalType * pITArg = getResult();
-                     if (pITArg->isImplicitList())
-                     {
-                         types::ImplicitList* pIL = pITArg->getAs<types::ImplicitList>();
-                         if (pIL->isComputable())
-                         {
-                             setResult(pIL->extractFullMatrix());
-                             pITArg->killMe();
-                         }
-                     }
+                     types::InternalType * pITArg = getResult(i);
+                     pITArg->IncreaseRef();
+                     inTmp.push_back(pITArg);
                  }
+             }
+             vectNbResult.push_back(getResultSize());
+             clearResult();
+         }
+     }
+     catch (const InternalError& ie)
+     {
+         clearResult();
+         cleanIn(inTmp, outTmp);
+         throw ie;
+     }
 -    // get function/variable
 -    e.getName().accept(*this);
 -    types::InternalType* pIT = getResult();
++    if (isJITCall == false)
++    {
++        // get function/variable
++        e.getName().accept(*this);
++        pIT = getResult();
++    }
+     types::typed_list out;
+     types::typed_list in;
+     types::optional_list opt;
+     // manage case [a,b]=foo() where foo is defined as a=foo()
+     if (pIT->getInvokeNbOut() != -1 && pIT->getInvokeNbOut() < iRetCount)
+     {
+         clearResult();
+         std::wostringstream os;
+         os << _W("Wrong number of output arguments.\n") << std::endl;
+         throw ast::InternalError(os.str(), 999, e.getLocation());
+     }
+     // manage input according the function/variable
+     int iLoop = -1;
+     int iterIn = 0;
+     int iterOptName = 0;
+     for (auto& arg : args)
+     {
+         iLoop++;
+         //special case for empty extraction of list ( list()(:) )
+         if (vectNbResult[iLoop] == 0)
+         {
+             continue;
+         }
+         // management of optional input
+         if (arg->isAssignExp())
+         {
+             if (pIT->hasInvokeOption())
+             {
+                 opt.emplace_back(vectOptName[iterOptName++], inTmp[iterIn++]);
  
-                 if (isSingleResult())
+                 //in case of macro/macrofile, we have to shift input param
+                 //so add NULL item in in list to keep initial order
+                 if (pIT->isMacro() || pIT->isMacroFile())
                  {
-                     in.push_back(getResult());
-                     getResult()->IncreaseRef();
-                     clearResult();
+                     in.push_back(NULL);
                  }
-                 else
-                 {
-                     for (int i = 0 ; i < getResultSize() ; i++)
-                     {
-                         types::InternalType * pITArg = getResult(i);
-                         pITArg->IncreaseRef();
-                         in.push_back(pITArg);
-                     }
+             }
+             else
+             {
+                 in.push_back(inTmp[iterIn++]);
+             }
  
-                     clearResult();
+             continue;
+         }
+         //extract implicit list for call()
+         if (pIT->isCallable() || pIT->isUserType())
+         {
+             if (inTmp[iterIn]->isImplicitList())
+             {
+                 types::ImplicitList* pIL = inTmp[iterIn]->getAs<types::ImplicitList>();
+                 if (pIL->isComputable())
+                 {
+                     types::InternalType* pITExtract = pIL->extractFullMatrix();
+                     pITExtract->IncreaseRef();
+                     in.push_back(pITExtract);
+                     pIL->DecreaseRef();
+                     pIL->killMe();
+                     iterIn++;
+                     continue;
                  }
              }
          }
-         catch (const InternalError& ie)
+         // default case
 -        for(int i = 0; i < vectNbResult[iLoop]; i++, iterIn++)
++        for (int i = 0; i < vectNbResult[iLoop]; i++, iterIn++)
          {
-             clearResult();
-             cleanOpt(opt);
-             cleanIn(in, out);
-             throw ie;
+             in.push_back(inTmp[iterIn]);
          }
+     }
  
-         try
+     try
+     {
+         // Extraction with a List in input argument.
+         // This extraction must be a recursive extract.
+         int iLoopSize = 1;
+         types::List* pListArg = NULL;
+         if (pIT->isCallable() == false && in.size() == 1 && in[0]->isList())
          {
-             // Extraction with a List in input argument.
-             // This extraction must be a recursive extract.
-             int iLoopSize = 1;
-             types::List* pListArg = NULL;
-             if (pIT->isCallable() == false && in.size() == 1 && in[0]->isList())
-             {
-                 pListArg = in[0]->getAs<types::List>();
-                 iLoopSize = pListArg->getSize();
-                 cleanOpt(opt);
-             }
+             pListArg = in[0]->getAs<types::List>();
+             iLoopSize = pListArg->getSize();
+             cleanOpt(opt);
+         }
  
-             setExpectedSize(iSaveExpectedSize);
-             iRetCount = std::max(1, iRetCount);
+         setExpectedSize(iSaveExpectedSize);
+         iRetCount = std::max(1, iRetCount);
  
-             for (int i = 0; i < iLoopSize; i++)
+         for (int i = 0; i < iLoopSize; i++)
+         {
+             if (pListArg)
              {
-                 if (pListArg)
-                 {
-                     in[0] = pListArg->get(i);
+                 in[0] = pListArg->get(i);
  
-                     if (in[0]->isList())
+                 if (in[0]->isList())
+                 {
+                     if (pIT->isCallable())
                      {
-                         if (pIT->isCallable())
+                         // list used like "varargin"
+                         types::List* pLFuncArgs = in[0]->getAs<types::List>();
+                         types::typed_list input;
+                         for (int j = 0; j < pLFuncArgs->getSize(); j++)
                          {
-                             // list used like "varargin"
-                             types::List* pLFuncArgs = in[0]->getAs<types::List>();
-                             types::typed_list input;
-                             for (int j = 0; j < pLFuncArgs->getSize(); j++)
-                             {
-                                 input.push_back(pLFuncArgs->get(j));
-                                 input.back()->IncreaseRef();
-                             }
-                             in = input;
+                             input.push_back(pLFuncArgs->get(j));
+                             input.back()->IncreaseRef();
                          }
-                         else
-                         {
-                             pListArg->DecreaseRef();
-                             pListArg->killMe();
  
-                             std::wostringstream os;
-                             os << _W("Invalid index.\n");
-                             throw ast::InternalError(os.str(), 999, e.getFirstLocation());
-                         }
+                         in = input;
                      }
                      else
                      {
-                         in[0]->IncreaseRef();
+                         pListArg->DecreaseRef();
+                         pListArg->killMe();
+                         std::wostringstream os;
+                         os << _W("Invalid index.\n");
+                         throw ast::InternalError(os.str(), 999, e.getFirstLocation());
                      }
                  }
-                 bool ret = false;
-                 if(pIT->isInvokable() == false)
+                 else
                  {
-                     // call overload
-                     ret = Overload::call(L"%" + pIT->getShortTypeStr() + L"_e", in, iRetCount, out, this);
+                     in[0]->IncreaseRef();
                  }
-                 else
+             }
+             bool ret = false;
+             if (pIT->isInvokable() == false)
+             {
+                 // call overload
+                 ret = Overload::call(L"%" + pIT->getShortTypeStr() + L"_e", in, iRetCount, out, this);
+             }
+             else
+             {
 -                ret = pIT->invoke(in, opt, iRetCount, out, e);
++                if (isJITCall)
 +                {
-                   if (isJITCall)
-                   {
-                       ret = jit::Jitter::analyzeAndJIT(e, in, out);
-                       if (!ret)
-                       {
-                           ret = pIT->invoke(in, opt, iRetCount, out, e);
-                       }
-                   }
-                   else
-                   {
-                       ret = pIT->invoke(in, opt, iRetCount, out, e);
-                   }
-                     if(ret == false && pIT->isUserType())
++                    ret = jit::Jitter::analyzeAndJIT(e, in, out);
++                    if (!ret)
 +                    {
-                         // call overload
-                         ret = Overload::call(L"%" + pIT->getShortTypeStr() + L"_e", in, iRetCount, out, this);
++                        ret = pIT->invoke(in, opt, iRetCount, out, e);
 +                    }
 +                }
++                else
++                {
++                    ret = pIT->invoke(in, opt, iRetCount, out, e);
++                }
 +
-                 if (ret)
+                 if (ret == false && pIT->isUserType())
                  {
-                     if (iSaveExpectedSize != -1 && iSaveExpectedSize > out.size())
-                     {
-                         char szError[bsiz];
-                         if(pIT->isCallable())
-                         {
-                             char* strFName = wide_string_to_UTF8(pIT->getAs<types::Callable>()->getName().c_str());
-                             os_sprintf(szError, _("%s: Wrong number of output argument(s): %d expected.\n"), strFName, out.size());
-                             FREE(strFName);
-                         }
-                         else
-                         {
-                             os_sprintf(szError, _("%s: Wrong number of output argument(s): %d expected.\n"), "extract", out.size());
-                         }
+                     // call overload
+                     ret = Overload::call(L"%" + pIT->getShortTypeStr() + L"_e", in, iRetCount, out, this);
+                 }
+             }
  
-                         wchar_t* wError = to_wide_string(szError);
-                         std::wstring err(wError);
-                         FREE(wError);
-                         throw InternalError(err, 999, e.getLocation());
+             if (ret)
+             {
+                 if (iSaveExpectedSize != -1 && iSaveExpectedSize > out.size())
+                 {
+                     char szError[bsiz];
+                     if (pIT->isCallable())
+                     {
+                         char* strFName = wide_string_to_UTF8(pIT->getAs<types::Callable>()->getName().c_str());
+                         os_sprintf(szError, _("%s: Wrong number of output argument(s): %d expected.\n"), strFName, out.size());
+                         FREE(strFName);
                      }
-                     setExpectedSize(iSaveExpectedSize);
-                     setResult(out);
-                     cleanIn(in, out);
-                     cleanOpt(opt);
-                     // In case a.b(), getResult contain pIT ("b").
-                     // If out == pIT, do not delete it.
-                     if (getResult() != pIT)
+                     else
                      {
-                         // protect element of out in case where
-                         // out contain elements of pIT
-                         for (int i = 0; i < out.size(); i++)
-                         {
-                             out[i]->IncreaseRef();
-                         }
+                         os_sprintf(szError, _("%s: Wrong number of output argument(s): %d expected.\n"), "extract", out.size());
+                     }
  
-                         pIT->killMe();
+                     wchar_t* wError = to_wide_string(szError);
+                     std::wstring err(wError);
+                     FREE(wError);
+                     throw InternalError(err, 999, e.getLocation());
+                 }
  
-                         // unprotect
-                         for (int i = 0; i < out.size(); i++)
-                         {
-                             out[i]->DecreaseRef();
-                         }
+                 setExpectedSize(iSaveExpectedSize);
+                 setResult(out);
+                 cleanIn(in, out);
+                 cleanOpt(opt);
+                 // In case a.b(), getResult contain pIT ("b").
+                 // If out == pIT, do not delete it.
+                 if (getResult() != pIT)
+                 {
+                     // protect element of out in case where
+                     // out contain elements of pIT
+                     for (int i = 0; i < out.size(); i++)
+                     {
+                         out[i]->IncreaseRef();
                      }
  
-                     if (pListArg && i + 1 != iLoopSize)
+                     pIT->killMe();
+                     // unprotect
+                     for (int i = 0; i < out.size(); i++)
                      {
-                         pIT = out[0];
-                         out.clear();
-                         setResult(NULL);
+                         out[i]->DecreaseRef();
                      }
                  }
-                 else
+                 if (pListArg && i + 1 != iLoopSize)
                  {
-                     std::wostringstream os;
-                     os << _W("Invalid index.\n");
-                     throw ast::InternalError(os.str(), 999, e.getFirstLocation());
+                     pIT = out[0];
+                     out.clear();
+                     setResult(NULL);
                  }
              }
-             if (pListArg)
+             else
              {
-                 pListArg->DecreaseRef();
-                 pListArg->killMe();
+                 std::wostringstream os;
+                 os << _W("Invalid index.\n");
+                 throw ast::InternalError(os.str(), 999, e.getFirstLocation());
              }
          }
-         catch (InternalAbort & ia)
-         {
-             setExpectedSize(iSaveExpectedSize);
-             if(pIT != getResult())
-             {
-                 pIT->killMe();
-             }
-             clearResult();
-             cleanInOut(in, out);
-             cleanOpt(opt);
  
-             throw ia;
+         if (pListArg)
+         {
+             pListArg->DecreaseRef();
+             pListArg->killMe();
          }
-         catch (const InternalError& ie)
+     }
+     catch (InternalAbort & ia)
+     {
+         setExpectedSize(iSaveExpectedSize);
+         if (pIT != getResult())
          {
-             setExpectedSize(iSaveExpectedSize);
-             if(pIT != getResult())
-             {
-                 pIT->killMe();
-             }
+             pIT->killMe();
+         }
  
-             clearResult();
-             cleanInOut(in, out);
-             cleanOpt(opt);
+         clearResult();
+         cleanInOut(in, out);
+         cleanOpt(opt);
  
-             throw ie;
+         throw ia;
+     }
+     catch (const InternalError& ie)
+     {
+         setExpectedSize(iSaveExpectedSize);
+         if (pIT != getResult())
+         {
+             pIT->killMe();
          }
+         clearResult();
+         cleanInOut(in, out);
+         cleanOpt(opt);
+         throw ie;
      }
  }
  
@@@ -403,7 -403,7 +443,7 @@@ void RunVisitorT<T>::visitprivate(cons
  
  
              //clean pArgs return by GetArgumentList
--            for (int iArg = 0 ; iArg < (int)pArgs->size() ; iArg++)
++            for (int iArg = 0; iArg < (int)pArgs->size(); iArg++)
              {
                  (*pArgs)[iArg]->killMe();
              }
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge