Chromium Code Reviews

Side by Side Diff: Source/core/xml/XPathParser.cpp

Issue 698923002: Enable Oilpan for core/xml/ (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Non-Oilpan fixes Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
« no previous file with comments | « Source/core/xml/XPathParser.h ('k') | Source/core/xml/XPathPath.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2005 Maksim Orlovich <maksim@kde.org> 2 * Copyright 2005 Maksim Orlovich <maksim@kde.org>
3 * Copyright (C) 2006 Apple Computer, Inc. 3 * Copyright (C) 2006 Apple Computer, Inc.
4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 9 *
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
(...skipping 447 matching lines...)
458 if (namespaceURI.isNull()) 458 if (namespaceURI.isNull())
459 return false; 459 return false;
460 localName = AtomicString(qName.substring(colon + 1)); 460 localName = AtomicString(qName.substring(colon + 1));
461 } else { 461 } else {
462 localName = AtomicString(qName); 462 localName = AtomicString(qName);
463 } 463 }
464 464
465 return true; 465 return true;
466 } 466 }
467 467
468 PassOwnPtrWillBeRawPtr<Expression> Parser::parseStatement(const String& statemen t, PassRefPtrWillBeRawPtr<XPathNSResolver> resolver, ExceptionState& exceptionSt ate) 468 Expression* Parser::parseStatement(const String& statement, XPathNSResolver* res olver, ExceptionState& exceptionState)
469 { 469 {
470 reset(statement); 470 reset(statement);
471 471
472 m_resolver = resolver; 472 m_resolver = resolver;
473 473
474 Parser* oldParser = currentParser; 474 Parser* oldParser = currentParser;
475 currentParser = this; 475 currentParser = this;
476 int parseError = xpathyyparse(this); 476 int parseError = xpathyyparse(this);
477 currentParser = oldParser; 477 currentParser = oldParser;
478 478
479 if (parseError) { 479 if (parseError) {
480 #if !ENABLE(OILPAN)
481 while (!m_parseNodes.isEmpty())
482 delete m_parseNodes.takeAny();
483
484 HashSet<Vector<OwnPtr<Predicate> >*>::iterator pend = m_predicateVectors .end();
485 for (HashSet<Vector<OwnPtr<Predicate> >*>::iterator it = m_predicateVect ors.begin(); it != pend; ++it)
486 delete *it;
487 m_predicateVectors.clear();
488
489 HashSet<Vector<OwnPtr<Expression> >*>::iterator eend = m_expressionVecto rs.end();
490 for (HashSet<Vector<OwnPtr<Expression> >*>::iterator it = m_expressionVe ctors.begin(); it != eend; ++it)
491 delete *it;
492 m_expressionVectors.clear();
493
494 m_nodeTests.clear();
495 #endif
496
497 m_strings.clear(); 480 m_strings.clear();
498 481
499 m_topExpr = nullptr; 482 m_topExpr = nullptr;
500 483
501 if (m_gotNamespaceError) 484 if (m_gotNamespaceError)
502 exceptionState.throwDOMException(NamespaceError, "The string '" + st atement + "' contains unresolvable namespaces."); 485 exceptionState.throwDOMException(NamespaceError, "The string '" + st atement + "' contains unresolvable namespaces.");
503 else 486 else
504 exceptionState.throwDOMException(SyntaxError, "The string '" + state ment + "' is not a valid XPath expression."); 487 exceptionState.throwDOMException(SyntaxError, "The string '" + state ment + "' is not a valid XPath expression.");
505 return nullptr; 488 return nullptr;
506 } 489 }
507 ASSERT(m_strings.size() == 0); 490 ASSERT(m_strings.size() == 0);
508 #if !ENABLE(OILPAN)
509 ASSERT(m_parseNodes.size() == 1);
510 ASSERT(*m_parseNodes.begin() == m_topExpr);
511 ASSERT(m_expressionVectors.size() == 0);
512 ASSERT(m_predicateVectors.size() == 0);
513 ASSERT(m_nodeTests.size() == 0);
514 m_parseNodes.clear();
515 #endif
516
517 Expression* result = m_topExpr; 491 Expression* result = m_topExpr;
518 m_topExpr = nullptr; 492 m_topExpr = nullptr;
519 493
520 return adoptPtrWillBeNoop(result); 494 return result;
521 }
522
523 void Parser::registerParseNode(ParseNode* node)
524 {
525 #if !ENABLE(OILPAN)
526 if (node == 0)
527 return;
528
529 ASSERT(!m_parseNodes.contains(node));
530
531 m_parseNodes.add(node);
532 #endif
533 }
534
535 void Parser::unregisterParseNode(ParseNode* node)
536 {
537 #if !ENABLE(OILPAN)
538 if (node == 0)
539 return;
540
541 ASSERT(m_parseNodes.contains(node));
542
543 m_parseNodes.remove(node);
544 #endif
545 }
546
547 void Parser::registerPredicateVector(WillBeHeapVector<OwnPtrWillBeMember<Predica te> >* vector)
548 {
549 #if !ENABLE(OILPAN)
550 if (vector == 0)
551 return;
552
553 ASSERT(!m_predicateVectors.contains(vector));
554
555 m_predicateVectors.add(vector);
556 #endif
557 }
558
559 void Parser::deletePredicateVector(WillBeHeapVector<OwnPtrWillBeMember<Predicate > >* vector)
560 {
561 #if !ENABLE(OILPAN)
562 if (vector == 0)
563 return;
564
565 ASSERT(m_predicateVectors.contains(vector));
566
567 m_predicateVectors.remove(vector);
568 delete vector;
569 #endif
570 }
571
572
573 void Parser::registerExpressionVector(WillBeHeapVector<OwnPtrWillBeMember<Expres sion> >* vector)
574 {
575 #if !ENABLE(OILPAN)
576 if (vector == 0)
577 return;
578
579 ASSERT(!m_expressionVectors.contains(vector));
580
581 m_expressionVectors.add(vector);
582 #endif
583 }
584
585 void Parser::deleteExpressionVector(WillBeHeapVector<OwnPtrWillBeMember<Expressi on> >* vector)
586 {
587 #if !ENABLE(OILPAN)
588 if (vector == 0)
589 return;
590
591 ASSERT(m_expressionVectors.contains(vector));
592
593 m_expressionVectors.remove(vector);
594 delete vector;
595 #endif
596 } 495 }
597 496
598 void Parser::registerString(String* s) 497 void Parser::registerString(String* s)
599 { 498 {
600 if (s == 0) 499 if (s == 0)
601 return; 500 return;
602 501
603 ASSERT(!m_strings.contains(s)); 502 ASSERT(!m_strings.contains(s));
604 503
605 m_strings.add(adoptPtr(s)); 504 m_strings.add(adoptPtr(s));
606 } 505 }
607 506
608 void Parser::deleteString(String* s) 507 void Parser::deleteString(String* s)
609 { 508 {
610 if (s == 0) 509 if (s == 0)
611 return; 510 return;
612 511
613 ASSERT(m_strings.contains(s)); 512 ASSERT(m_strings.contains(s));
614 513
615 m_strings.remove(s); 514 m_strings.remove(s);
616 } 515 }
617
618 void Parser::registerNodeTest(Step::NodeTest* t)
619 {
620 #if !ENABLE(OILPAN)
621 if (t == 0)
622 return;
623
624 ASSERT(!m_nodeTests.contains(t));
625
626 m_nodeTests.add(adoptPtr(t));
627 #endif
628 }
629
630 void Parser::deleteNodeTest(Step::NodeTest* t)
631 {
632 #if !ENABLE(OILPAN)
633 if (t == 0)
634 return;
635
636 ASSERT(m_nodeTests.contains(t));
637
638 m_nodeTests.remove(t);
639 #endif
640 }
641
OLDNEW
« no previous file with comments | « Source/core/xml/XPathParser.h ('k') | Source/core/xml/XPathPath.h » ('j') | no next file with comments »

Powered by Google App Engine