dbertoni    2004/11/01 21:34:44

  Modified:    c/src/xalanc/XPath XPath.cpp XPath.hpp
  Log:
  Don't bother executing the initial op code of an XPath expression.
  
  Revision  Changes    Path
  1.17      +6 -30     xml-xalan/c/src/xalanc/XPath/XPath.cpp
  
  Index: XPath.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XPath/XPath.cpp,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- XPath.cpp 12 Apr 2004 00:37:06 -0000      1.16
  +++ XPath.cpp 2 Nov 2004 05:34:44 -0000       1.17
  @@ -124,7 +124,7 @@
   
        return executeMore(
               context,
  -            m_expression.getInitialOpCodePosition(),
  +            getInitialOpCodePosition(),
               executionContext);
   }
   
  @@ -151,7 +151,7 @@
   
        executeMore(
               context,
  -            m_expression.getInitialOpCodePosition(),
  +            getInitialOpCodePosition(),
               executionContext,
               result);
   }
  @@ -179,7 +179,7 @@
   
        executeMore(
               context,
  -            m_expression.getInitialOpCodePosition(),
  +            getInitialOpCodePosition(),
               executionContext,
               result);
   }
  @@ -207,7 +207,7 @@
   
        executeMore(
               context,
  -            m_expression.getInitialOpCodePosition(),
  +            getInitialOpCodePosition(),
               executionContext,
               result);
   }
  @@ -236,7 +236,7 @@
   
        executeMore(
               context,
  -            m_expression.getInitialOpCodePosition(),
  +            getInitialOpCodePosition(),
               executionContext,
               formatterListener,
               function);
  @@ -266,7 +266,7 @@
   
        return executeMore(
               context,
  -            m_expression.getInitialOpCodePosition(),
  +            getInitialOpCodePosition(),
               executionContext,
               result);
   }
  @@ -281,10 +281,6 @@
   {
        switch(m_expression.getOpCodeMapValue(opPos))
        {
  -     case XPathExpression::eOP_XPATH:
  -             return executeMore(context, opPos + 2, executionContext);
  -             break;
  -
        case XPathExpression::eOP_OR:
                return 
executionContext.getXObjectFactory().createBoolean(Or(context, opPos, 
executionContext));
                break;
  @@ -476,10 +472,6 @@
   {
        switch(m_expression.getOpCodeMapValue(opPos))
        {
  -     case XPathExpression::eOP_XPATH:
  -             executeMore(context, opPos + 2, executionContext, result);
  -             break;
  -
        case XPathExpression::eOP_OR:
                result = Or(context, opPos, executionContext);
                break;
  @@ -661,10 +653,6 @@
   {
        switch(m_expression.getOpCodeMapValue(opPos))
        {
  -     case XPathExpression::eOP_XPATH:
  -             executeMore(context, opPos + 2, executionContext, result);
  -             break;
  -
        case XPathExpression::eOP_OR:
                result = XObject::number(Or(context, opPos, executionContext));
                break;
  @@ -846,10 +834,6 @@
   {
        switch(m_expression.getOpCodeMapValue(opPos))
        {
  -     case XPathExpression::eOP_XPATH:
  -             executeMore(context, opPos + 2, executionContext, result);
  -             break;
  -
        case XPathExpression::eOP_OR:
                XObject::string(Or(context, opPos, executionContext), result);
                break;
  @@ -1043,10 +1027,6 @@
   {
        switch(m_expression.getOpCodeMapValue(opPos))
        {
  -     case XPathExpression::eOP_XPATH:
  -             executeMore(context, opPos + 2, executionContext, 
formatterListener, function);
  -             break;
  -
        case XPathExpression::eOP_OR:
                XObject::string(
                                Or(context, opPos, executionContext),
  @@ -1254,10 +1234,6 @@
   
        switch(m_expression.getOpCodeMapValue(opPos))
        {
  -     case XPathExpression::eOP_XPATH:
  -             theXObject = executeMore(context, opPos + 2, executionContext, 
result);
  -             break;
  -
        case XPathExpression::eOP_OR:
        case XPathExpression::eOP_AND:
        case XPathExpression::eOP_NOTEQUALS:
  
  
  
  1.12      +24 -12    xml-xalan/c/src/xalanc/XPath/XPath.hpp
  
  Index: XPath.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XPath/XPath.hpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- XPath.hpp 31 Jul 2004 06:05:06 -0000      1.11
  +++ XPath.hpp 2 Nov 2004 05:34:44 -0000       1.12
  @@ -454,7 +454,7 @@
   
                return executeMore(
                   executionContext.getCurrentNode(),
  -                m_expression.getInitialOpCodePosition(),
  +                getInitialOpCodePosition(),
                   executionContext);
        }
   
  @@ -477,7 +477,7 @@
   
                executeMore(
                   executionContext.getCurrentNode(),
  -                m_expression.getInitialOpCodePosition(),
  +                getInitialOpCodePosition(),
                   executionContext,
                   result);
        }
  @@ -501,7 +501,7 @@
   
                executeMore(
                   executionContext.getCurrentNode(),
  -                m_expression.getInitialOpCodePosition(),
  +                getInitialOpCodePosition(),
                   executionContext,
                   result);
        }
  @@ -526,7 +526,7 @@
   
                executeMore(
                   executionContext.getCurrentNode(),
  -                m_expression.getInitialOpCodePosition(),
  +                getInitialOpCodePosition(),
                   executionContext,
                   result);
        }
  @@ -552,7 +552,7 @@
   
                executeMore(
                   executionContext.getCurrentNode(),
  -                m_expression.getInitialOpCodePosition(),
  +                getInitialOpCodePosition(),
                   executionContext,
                   formatterListener,
                   function);
  @@ -588,7 +588,7 @@
   
                return executeMore(
                   executionContext.getCurrentNode(),
  -                m_expression.getInitialOpCodePosition(),
  +                getInitialOpCodePosition(),
                   executionContext,
                   result);
        }
  @@ -617,7 +617,7 @@
   
                return executeMore(
                   executionContext.getCurrentNode(),
  -                m_expression.getInitialOpCodePosition(),
  +                getInitialOpCodePosition(),
                   executionContext);
        }
   
  @@ -646,7 +646,7 @@
   
                executeMore(
                   executionContext.getCurrentNode(),
  -                m_expression.getInitialOpCodePosition(),
  +                getInitialOpCodePosition(),
                   executionContext,
                   result);
        }
  @@ -676,7 +676,7 @@
   
                executeMore(
                   executionContext.getCurrentNode(),
  -                m_expression.getInitialOpCodePosition(),
  +                getInitialOpCodePosition(),
                   executionContext,
                   result);
        }
  @@ -707,7 +707,7 @@
   
                executeMore(
                   executionContext.getCurrentNode(),
  -                m_expression.getInitialOpCodePosition(),
  +                getInitialOpCodePosition(),
                   executionContext,
                   result);
        }
  @@ -736,7 +736,7 @@
   
                executeMore(
                   executionContext.getCurrentNode(),
  -                m_expression.getInitialOpCodePosition(),
  +                getInitialOpCodePosition(),
                   executionContext,
                   formatterListener,
                   function);
  @@ -778,7 +778,7 @@
   
                return executeMore(
                   executionContext.getCurrentNode(),
  -                m_expression.getInitialOpCodePosition(),
  +                getInitialOpCodePosition(),
                   executionContext,
                   result);
        }
  @@ -2382,6 +2382,18 @@
        {
                eDefaultTargetDataSize = 5
        };
  +
  +    OpCodeMapPositionType
  +    getInitialOpCodePosition() const
  +    {
  +#if defined(XALAN_XPATH_EXPRESSION_USE_ITERATORS)
  +        assert(m_expression.getOpCodeMapValue(0) == 
XPathExpression::eOP_XPATH);
  +#else
  +        assert(m_expression.getOpCodeMapValue(
  +                    m_expression.getInitialOpCodePosition()) == 
XPathExpression::eOP_XPATH);
  +#endif
  +        return m_expression.getInitialOpCodePosition() + 2;
  +    }
   
        eMatchScore
        locationPathPattern(
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to