Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(834)

Unified Diff: src/parsing/expression-classifier.h

Issue 1712203002: Revert of Non-pattern rewriting revisited (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/interpreter/bytecode-generator.cc ('k') | src/parsing/parser.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/parsing/expression-classifier.h
diff --git a/src/parsing/expression-classifier.h b/src/parsing/expression-classifier.h
index fa1a2f97a486895482bcc6e88b851f8331347131..96ccf871f4c36399c1228f408d60aca2881e042d 100644
--- a/src/parsing/expression-classifier.h
+++ b/src/parsing/expression-classifier.h
@@ -13,7 +13,6 @@
namespace internal {
-template <typename Traits>
class ExpressionClassifier {
public:
struct Error {
@@ -56,25 +55,15 @@
enum FunctionProperties { NonSimpleParameter = 1 << 0 };
- explicit ExpressionClassifier(const Traits* t)
- : zone_(t->zone()),
- non_patterns_to_rewrite_(t->GetNonPatternList()),
- invalid_productions_(0),
+ ExpressionClassifier()
+ : invalid_productions_(0),
function_properties_(0),
- duplicate_finder_(nullptr) {
- non_pattern_begin_ = non_patterns_to_rewrite_->length();
- }
-
- ExpressionClassifier(const Traits* t, DuplicateFinder* duplicate_finder)
- : zone_(t->zone()),
- non_patterns_to_rewrite_(t->GetNonPatternList()),
- invalid_productions_(0),
+ duplicate_finder_(nullptr) {}
+
+ explicit ExpressionClassifier(DuplicateFinder* duplicate_finder)
+ : invalid_productions_(0),
function_properties_(0),
- duplicate_finder_(duplicate_finder) {
- non_pattern_begin_ = non_patterns_to_rewrite_->length();
- }
-
- ~ExpressionClassifier() { Discard(); }
+ duplicate_finder_(duplicate_finder) {}
bool is_valid(unsigned productions) const {
return (invalid_productions_ & productions) == 0;
@@ -292,14 +281,12 @@
assignment_pattern_error_ = Error();
}
- void Accumulate(ExpressionClassifier* inner,
- unsigned productions = StandardProductions,
- bool merge_non_patterns = true) {
- if (merge_non_patterns) MergeNonPatterns(inner);
+ void Accumulate(const ExpressionClassifier& inner,
+ unsigned productions = StandardProductions) {
// Propagate errors from inner, but don't overwrite already recorded
// errors.
unsigned non_arrow_inner_invalid_productions =
- inner->invalid_productions_ & ~ArrowFormalParametersProduction;
+ inner.invalid_productions_ & ~ArrowFormalParametersProduction;
if (non_arrow_inner_invalid_productions == 0) return;
unsigned non_arrow_productions =
productions & ~ArrowFormalParametersProduction;
@@ -309,27 +296,27 @@
if (errors != 0) {
invalid_productions_ |= errors;
if (errors & ExpressionProduction)
- expression_error_ = inner->expression_error_;
+ expression_error_ = inner.expression_error_;
if (errors & FormalParameterInitializerProduction)
formal_parameter_initializer_error_ =
- inner->formal_parameter_initializer_error_;
+ inner.formal_parameter_initializer_error_;
if (errors & BindingPatternProduction)
- binding_pattern_error_ = inner->binding_pattern_error_;
+ binding_pattern_error_ = inner.binding_pattern_error_;
if (errors & AssignmentPatternProduction)
- assignment_pattern_error_ = inner->assignment_pattern_error_;
+ assignment_pattern_error_ = inner.assignment_pattern_error_;
if (errors & DistinctFormalParametersProduction)
duplicate_formal_parameter_error_ =
- inner->duplicate_formal_parameter_error_;
+ inner.duplicate_formal_parameter_error_;
if (errors & StrictModeFormalParametersProduction)
strict_mode_formal_parameter_error_ =
- inner->strict_mode_formal_parameter_error_;
+ inner.strict_mode_formal_parameter_error_;
if (errors & StrongModeFormalParametersProduction)
strong_mode_formal_parameter_error_ =
- inner->strong_mode_formal_parameter_error_;
+ inner.strong_mode_formal_parameter_error_;
if (errors & LetPatternProduction)
- let_pattern_error_ = inner->let_pattern_error_;
+ let_pattern_error_ = inner.let_pattern_error_;
if (errors & CoverInitializedNameProduction)
- cover_initialized_name_error_ = inner->cover_initialized_name_error_;
+ cover_initialized_name_error_ = inner.cover_initialized_name_error_;
}
// As an exception to the above, the result continues to be a valid arrow
@@ -338,31 +325,16 @@
is_valid_arrow_formal_parameters()) {
// Also copy function properties if expecting an arrow function
// parameter.
- function_properties_ |= inner->function_properties_;
-
- if (!inner->is_valid_binding_pattern()) {
+ function_properties_ |= inner.function_properties_;
+
+ if (!inner.is_valid_binding_pattern()) {
invalid_productions_ |= ArrowFormalParametersProduction;
- arrow_formal_parameters_error_ = inner->binding_pattern_error_;
+ arrow_formal_parameters_error_ = inner.binding_pattern_error_;
}
}
}
- V8_INLINE int GetNonPatternBegin() const { return non_pattern_begin_; }
-
- V8_INLINE void Discard() {
- DCHECK_LE(non_pattern_begin_, non_patterns_to_rewrite_->length());
- non_patterns_to_rewrite_->Rewind(non_pattern_begin_);
- }
-
- V8_INLINE void MergeNonPatterns(ExpressionClassifier* inner) {
- DCHECK_LE(non_pattern_begin_, inner->non_pattern_begin_);
- inner->non_pattern_begin_ = inner->non_patterns_to_rewrite_->length();
- }
-
private:
- Zone* zone_;
- ZoneList<typename Traits::Type::Expression>* non_patterns_to_rewrite_;
- int non_pattern_begin_;
unsigned invalid_productions_;
unsigned function_properties_;
Error expression_error_;
@@ -378,7 +350,6 @@
DuplicateFinder* duplicate_finder_;
};
-
} // namespace internal
} // namespace v8
« no previous file with comments | « src/interpreter/bytecode-generator.cc ('k') | src/parsing/parser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698