aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2018-05-31 11:11:57 +0200
committerMyles Borins <mylesborins@google.com>2018-06-01 09:58:27 +0200
commit352a525eb984b8fa2d6f0f6fd68395e6a080bba4 (patch)
treea105ae93f8fd8f533cce19a429f1b6e95d6e11ca /deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp
parentfaf449ca0490f5371dc6cbbc94a87eb697b00fcc (diff)
downloadandroid-node-v8-352a525eb984b8fa2d6f0f6fd68395e6a080bba4.tar.gz
android-node-v8-352a525eb984b8fa2d6f0f6fd68395e6a080bba4.tar.bz2
android-node-v8-352a525eb984b8fa2d6f0f6fd68395e6a080bba4.zip
deps: update V8 to 6.7.288.43
PR-URL: https://github.com/nodejs/node/pull/19989 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Matheus Marchini <matheus@sthima.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp')
-rw-r--r--deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp b/deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp
new file mode 100644
index 0000000000..ec72b4eea5
--- /dev/null
+++ b/deps/v8/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp
@@ -0,0 +1,80 @@
+/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
+ * Use of this file is governed by the BSD 3-clause license that
+ * can be found in the LICENSE.txt file in the project root.
+ */
+
+#include "atn/EmptyPredictionContext.h"
+
+#include "atn/SingletonPredictionContext.h"
+
+using namespace antlr4::atn;
+
+SingletonPredictionContext::SingletonPredictionContext(
+ Ref<PredictionContext> const& parent, size_t returnState)
+ : PredictionContext(parent ? calculateHashCode(parent, returnState)
+ : calculateEmptyHashCode()),
+ parent(parent),
+ returnState(returnState) {
+ assert(returnState != ATNState::INVALID_STATE_NUMBER);
+}
+
+SingletonPredictionContext::~SingletonPredictionContext() {}
+
+Ref<SingletonPredictionContext> SingletonPredictionContext::create(
+ Ref<PredictionContext> const& parent, size_t returnState) {
+ if (returnState == EMPTY_RETURN_STATE && parent) {
+ // someone can pass in the bits of an array ctx that mean $
+ return std::dynamic_pointer_cast<SingletonPredictionContext>(EMPTY);
+ }
+ return std::make_shared<SingletonPredictionContext>(parent, returnState);
+}
+
+size_t SingletonPredictionContext::size() const { return 1; }
+
+Ref<PredictionContext> SingletonPredictionContext::getParent(
+ size_t index) const {
+ assert(index == 0);
+ ((void)(index)); // Make Release build happy.
+ return parent;
+}
+
+size_t SingletonPredictionContext::getReturnState(size_t index) const {
+ assert(index == 0);
+ ((void)(index)); // Make Release build happy.
+ return returnState;
+}
+
+bool SingletonPredictionContext::operator==(const PredictionContext& o) const {
+ if (this == &o) {
+ return true;
+ }
+
+ const SingletonPredictionContext* other =
+ dynamic_cast<const SingletonPredictionContext*>(&o);
+ if (other == nullptr) {
+ return false;
+ }
+
+ if (this->hashCode() != other->hashCode()) {
+ return false; // can't be same if hash is different
+ }
+
+ if (returnState != other->returnState) return false;
+
+ if (!parent && !other->parent) return true;
+ if (!parent || !other->parent) return false;
+
+ return *parent == *other->parent;
+}
+
+std::string SingletonPredictionContext::toString() const {
+ // std::string up = !parent.expired() ? parent.lock()->toString() : "";
+ std::string up = parent != nullptr ? parent->toString() : "";
+ if (up.length() == 0) {
+ if (returnState == EMPTY_RETURN_STATE) {
+ return "$";
+ }
+ return std::to_string(returnState);
+ }
+ return std::to_string(returnState) + " " + up;
+}