Loading ...
Sorry, an error occurred while loading the content.
 

Re: (patch) new regexp

Expand Messages
  • Antony Scriven
    ... Looks like a gcc extension to me. Compiling with with -Wall -Wextra -ansi -pedantic picks up this sort of thing. Why not use ?: for the macros? --Antony
    Message 1 of 15 , Apr 3, 2008
      On 03/04/2008, char101 <peacech@...> wrote:

      > On Apr 1, 3:53 pm, "Xiaozhou Liu" <sbb...@...> wrote:
      >
      > [...]
      >
      > The patch does not work with Visual C++ 9.0 2008. The
      > main problem is this macros
      >
      > +#define PUSH(s) { \
      > + if (stackp>= stack_end)\
      > + return NULL; \
      > + *stackp++ = s; \
      > + }
      > +
      > +#define POP() ({ \
      > + if (stackp <= stack) \
      > + return NULL; \
      > + *--stackp; \
      > + })

      Looks like a gcc extension to me. Compiling with with -Wall
      -Wextra -ansi -pedantic picks up this sort of thing. Why not
      use ?: for the macros? --Antony

      --~--~---------~--~----~------------~-------~--~----~
      You received this message from the "vim_dev" maillist.
      For more information, visit http://www.vim.org/maillist.php
      -~----------~----~----~----~------~----~------~--~---
    • char101
      ... After debugging the executable, it seems that the fault was 100% mine :D There is a compile error on regexp.c on this function which initial content was +
      Message 2 of 15 , Apr 3, 2008
        On Apr 3, 1:41 pm, char101 <peac...@...> wrote:
        > the resulting gvim executable seems to be losing its regex capability,
        > for example typing abc and then searching for a does not work.

        After debugging the executable, it seems that the fault was 100%
        mine :D

        There is a compile error on regexp.c on this function which initial
        content was

        + regprog_T *
        +vim_regcomp(expr, re_flags)
        + char_u *expr;
        + int re_flags;
        +{
        + regprog_T *prog = nfa_regengine.regcomp(expr, re_flags);
        +
        + return prog ? : bt_regengine.regcomp(expr, re_flags);
        +}

        and without much thought I just change it into

        return prog ? NULL : bt_regengine.regcomp(expr, re_flags);

        which should actually be

        return prog ? bt_regengine.regcomp(expr, re_flags) : NULL;

        So now the regexp works, but I got this error with tSkeleton plugin

        -------------------------------------------------------- Start of
        error
        Error detected while processing function
        tskeleton#PrepareBits..<SNR>23_Prepar
        eBuffer..<SNR>23_CollectFunctions..tskeleton#Initialize:

        line 3:

        E714: List required

        Error detected while processing function
        tskeleton#PrepareBits..<SNR>23_Prepar
        eBuffer..<SNR>23_CollectFunctions:

        line 4:

        E714: List required

        Error detected while processing function
        tskeleton#PrepareBits..<SNR>23_Prepar
        eBuffer..<SNR>23_CollectFunctions..tskeleton#Initialize:

        line 3:

        E714: List required

        Error detected while processing function
        tskeleton#PrepareBits..<SNR>23_Prepar
        eBuffer..<SNR>23_CollectFunctions:

        line 4:

        E714: List required
        -------------------------------------- End of error

        But I cannot look into tSkeleton file since I am having difficulty
        reading those error lines. Can anyone help translating those error
        messages, i.e. in which function does the error happens?

        ---
        Charles
        --~--~---------~--~----~------------~-------~--~----~
        You received this message from the "vim_dev" maillist.
        For more information, visit http://www.vim.org/maillist.php
        -~----------~----~----~----~------~----~------~--~---
      • James Vega
        ... Based on previous discussions on the list, I don t think that s the intended behavior either. I m pretty sure the logic is If NFA compiler worked, return
        Message 3 of 15 , Apr 3, 2008
          On Thu, Apr 03, 2008 at 06:16:32AM -0700, char101 wrote:
          >
          > On Apr 3, 1:41 pm, char101 <peac...@...> wrote:
          > > the resulting gvim executable seems to be losing its regex capability,
          > > for example typing abc and then searching for a does not work.
          >
          > After debugging the executable, it seems that the fault was 100%
          > mine :D
          >
          > There is a compile error on regexp.c on this function which initial
          > content was
          >
          > + regprog_T *
          > +vim_regcomp(expr, re_flags)
          > + char_u *expr;
          > + int re_flags;
          > +{
          > + regprog_T *prog = nfa_regengine.regcomp(expr, re_flags);
          > +
          > + return prog ? : bt_regengine.regcomp(expr, re_flags);
          > +}
          >
          > and without much thought I just change it into
          >
          > return prog ? NULL : bt_regengine.regcomp(expr, re_flags);
          >
          > which should actually be
          >
          > return prog ? bt_regengine.regcomp(expr, re_flags) : NULL;

          Based on previous discussions on the list, I don't think that's the
          intended behavior either. I'm pretty sure the logic is "If NFA compiler
          worked, return that otherwise return the BT compiled regex." This would
          translate to:

          return prog ? prog : bt_regengine.regcomp(expr, re_flags);

          --
          James
          GPG Key: 1024D/61326D40 2003-09-02 James Vega <jamessan@...>
        • char101
          ... Thanks James, I changed it, works fine now Benchmark result using ext-js.vim (507 849 Bytes javascript file) Try1: Gvim.exe: 11.1533138743 Gvim-re.exe:
          Message 4 of 15 , Apr 3, 2008
            On Apr 3, 8:48 pm, James Vega <james...@...> wrote:
            > Based on previous discussions on the list, I don't think that's the
            > intended behavior either.  I'm pretty sure the logic is "If NFA compiler
            > worked, return that otherwise return the BT compiled regex."  This would
            > translate to:
            >
            >   return prog ? prog : bt_regengine.regcomp(expr, re_flags);

            Thanks James, I changed it, works fine now

            Benchmark result using ext-js.vim (507 849 Bytes javascript file)

            Try1:
            Gvim.exe: 11.1533138743
            Gvim-re.exe: 39.4426857432

            Try2:
            Gvim.exe: 10.8661471241
            Gvim-re.exe: 39.3700461863

            Gvim-re is the one using the regexp patch.

            The benchmark script (in Python)

            import os
            from time import clock, sleep

            clock()
            os.system('gvim-re.exe -c "runtime plugin/tohtml.vim" -c "wq!" ext-
            all.js')
            t1 = clock()
            os.system('gvim.exe -c "runtime plugin/tohtml.vim" -c "wq!" ext-
            all.js')
            t2 = clock()

            # This is try2, for try1 I just swap those commands above
            print "Gvim.exe: ", t2-t1
            print "Gvim-re.exe: ", t1

            Try3:
            Gvim.exe: 10.9457255287
            Gvim-re.exe: 39.4854167767

            Try3 is just running gvim.exe -c "wq!" ext-all.js

            ---
            Charles
            --~--~---------~--~----~------------~-------~--~----~
            You received this message from the "vim_dev" maillist.
            For more information, visit http://www.vim.org/maillist.php
            -~----------~----~----~----~------~----~------~--~---
          • Nico Weber
            ... Have compiled both versions yourself or is gvim.exe the official build? ... How are the results if you just do `gvim[-re].exe -u NONE -U NONE -c wq!`? Nico
            Message 5 of 15 , Apr 4, 2008
              > Benchmark result using ext-js.vim (507 849 Bytes javascript file)
              >
              > Try1:
              > Gvim.exe: 11.1533138743
              > Gvim-re.exe: 39.4426857432

              Have compiled both versions yourself or is gvim.exe the official build?

              > Try3 is just running gvim.exe -c "wq!" ext-all.js

              How are the results if you just do `gvim[-re].exe -u NONE -U NONE -c
              wq!`?

              Nico

              --~--~---------~--~----~------------~-------~--~----~
              You received this message from the "vim_dev" maillist.
              For more information, visit http://www.vim.org/maillist.php
              -~----------~----~----~----~------~----~------~--~---
            • Charles
              ... I compiled both myself. Same settings, same compiler (VC++ 9). Optimization=MAXSPEED (with LTCG), processor=pentium4. Features included: OLE, Python, Mbyte
              Message 6 of 15 , Apr 4, 2008
                On Fri, Apr 4, 2008 at 3:43 PM, Nico Weber <nicolasweber@...> wrote:
                > Have compiled both versions yourself or is gvim.exe the official build?

                I compiled both myself. Same settings, same compiler (VC++ 9).
                Optimization=MAXSPEED (with LTCG), processor=pentium4. Features
                included: OLE, Python, Mbyte

                > How are the results if you just do `gvim[-re].exe -u NONE -U NONE -c
                > wq!`?

                gvim.exe 0.279026812268
                gvim-re.exe 0.263482935745

                test.py
                ---
                import os
                from time import clock

                clock()
                for i in range(0, 10):
                os.system('gvim.exe -u NONE -U NONE -c q')
                t1 = clock()
                for i in range(0, 10):
                os.system('gvim-re.exe -u NONE -U NONE -c q')
                t2 = clock()

                print "gvim.exe", t1/10
                print "gvim-re.exe", (t2-t1)/10

                --~--~---------~--~----~------------~-------~--~----~
                You received this message from the "vim_dev" maillist.
                For more information, visit http://www.vim.org/maillist.php
                -~----------~----~----~----~------~----~------~--~---
              • Charles
                ... Another interpretation of your command sample: Gvim.exe: 0.395710994776 Gvim-re.exe: 0.495461553009 This is just loading the ext-all.js without filetype
                Message 7 of 15 , Apr 4, 2008
                  On Fri, Apr 4, 2008 at 3:43 PM, Nico Weber <nicolasweber@...> wrote:
                  > How are the results if you just do `gvim[-re].exe -u NONE -U NONE -c
                  > wq!`?

                  Another interpretation of your command sample:

                  Gvim.exe: 0.395710994776
                  Gvim-re.exe: 0.495461553009

                  This is just loading the ext-all.js without filetype detection of
                  syntax highlighting

                  ---
                  os.system('gvim.exe -u NONE -U NONE -c "wq!" ext-all.js')
                  os.system('gvim-re.exe -u NONE -U NONE -c "wq!" ext-all.js')
                  ---

                  Gvim.exe: 5.40134745013
                  Gvim-re.exe: 19.7571365646

                  Loading with syntax highlighting independent of any (g)vimrc settings.

                  ---
                  os.system('gvim.exe -u NONE -U NONE --cmd "set guioptions+=M" --cmd
                  "filetype on" --cmd "syntax on" -c "wq!" ext-all.js')
                  os.system('gvim-re.exe -u NONE -U NONE --cmd "set guioptions+=M" --cmd
                  "filetype on" --cmd "syntax on" -c "wq!" ext-all.js')
                  ---

                  --~--~---------~--~----~------------~-------~--~----~
                  You received this message from the "vim_dev" maillist.
                  For more information, visit http://www.vim.org/maillist.php
                  -~----------~----~----~----~------~----~------~--~---
                • Xiaozhou Liu
                  ... Thanks for your testing! I will remove gcc extension in the code and check for what makes the new regexp so slow. - Xiaozhou
                  Message 8 of 15 , Apr 5, 2008
                    On Fri, Apr 4, 2008 at 5:23 PM, Charles <peacech@...> wrote:
                    >
                    > On Fri, Apr 4, 2008 at 3:43 PM, Nico Weber <nicolasweber@...> wrote:
                    >
                    > > How are the results if you just do `gvim[-re].exe -u NONE -U NONE -c
                    > > wq!`?
                    >
                    > Another interpretation of your command sample:
                    >
                    > Gvim.exe: 0.395710994776
                    > Gvim-re.exe: 0.495461553009
                    >
                    > This is just loading the ext-all.js without filetype detection of
                    > syntax highlighting
                    >
                    > ---
                    > os.system('gvim.exe -u NONE -U NONE -c "wq!" ext-all.js')
                    > os.system('gvim-re.exe -u NONE -U NONE -c "wq!" ext-all.js')
                    > ---
                    >
                    > Gvim.exe: 5.40134745013
                    > Gvim-re.exe: 19.7571365646
                    >
                    > Loading with syntax highlighting independent of any (g)vimrc settings.
                    >
                    > ---
                    > os.system('gvim.exe -u NONE -U NONE --cmd "set guioptions+=M" --cmd
                    > "filetype on" --cmd "syntax on" -c "wq!" ext-all.js')
                    > os.system('gvim-re.exe -u NONE -U NONE --cmd "set guioptions+=M" --cmd
                    > "filetype on" --cmd "syntax on" -c "wq!" ext-all.js')
                    > ---


                    Thanks for your testing!
                    I will remove gcc extension in the code and check for what
                    makes the new regexp so slow.

                    - Xiaozhou

                    --~--~---------~--~----~------------~-------~--~----~
                    You received this message from the "vim_dev" maillist.
                    For more information, visit http://www.vim.org/maillist.php
                    -~----------~----~----~----~------~----~------~--~---
                  Your message has been successfully submitted and would be delivered to recipients shortly.