summaryrefslogtreecommitdiff
path: root/deps/v8/src/compiler/processed-feedback.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/compiler/processed-feedback.h')
-rw-r--r--deps/v8/src/compiler/processed-feedback.h31
1 files changed, 30 insertions, 1 deletions
diff --git a/deps/v8/src/compiler/processed-feedback.h b/deps/v8/src/compiler/processed-feedback.h
index 17829863de..1d1ee538d8 100644
--- a/deps/v8/src/compiler/processed-feedback.h
+++ b/deps/v8/src/compiler/processed-feedback.h
@@ -18,7 +18,10 @@ class ElementAccessFeedback;
class ForInFeedback;
class GlobalAccessFeedback;
class InstanceOfFeedback;
+class LiteralFeedback;
class NamedAccessFeedback;
+class RegExpLiteralFeedback;
+class TemplateObjectFeedback;
class ProcessedFeedback : public ZoneObject {
public:
@@ -31,7 +34,10 @@ class ProcessedFeedback : public ZoneObject {
kForIn,
kGlobalAccess,
kInstanceOf,
+ kLiteral,
kNamedAccess,
+ kRegExpLiteral,
+ kTemplateObject,
};
Kind kind() const { return kind_; }
@@ -46,6 +52,9 @@ class ProcessedFeedback : public ZoneObject {
GlobalAccessFeedback const& AsGlobalAccess() const;
InstanceOfFeedback const& AsInstanceOf() const;
NamedAccessFeedback const& AsNamedAccess() const;
+ LiteralFeedback const& AsLiteral() const;
+ RegExpLiteralFeedback const& AsRegExpLiteral() const;
+ TemplateObjectFeedback const& AsTemplateObject() const;
protected:
ProcessedFeedback(Kind kind, FeedbackSlotKind slot_kind);
@@ -187,7 +196,9 @@ class SingleValueFeedback : public ProcessedFeedback {
(K == kBinaryOperation && slot_kind == FeedbackSlotKind::kBinaryOp) ||
(K == kCompareOperation && slot_kind == FeedbackSlotKind::kCompareOp) ||
(K == kForIn && slot_kind == FeedbackSlotKind::kForIn) ||
- (K == kInstanceOf && slot_kind == FeedbackSlotKind::kInstanceOf));
+ (K == kInstanceOf && slot_kind == FeedbackSlotKind::kInstanceOf) ||
+ ((K == kLiteral || K == kRegExpLiteral || K == kTemplateObject) &&
+ slot_kind == FeedbackSlotKind::kLiteral));
}
T value() const { return value_; }
@@ -202,6 +213,24 @@ class InstanceOfFeedback
using SingleValueFeedback::SingleValueFeedback;
};
+class LiteralFeedback
+ : public SingleValueFeedback<AllocationSiteRef,
+ ProcessedFeedback::kLiteral> {
+ using SingleValueFeedback::SingleValueFeedback;
+};
+
+class RegExpLiteralFeedback
+ : public SingleValueFeedback<JSRegExpRef,
+ ProcessedFeedback::kRegExpLiteral> {
+ using SingleValueFeedback::SingleValueFeedback;
+};
+
+class TemplateObjectFeedback
+ : public SingleValueFeedback<JSArrayRef,
+ ProcessedFeedback::kTemplateObject> {
+ using SingleValueFeedback::SingleValueFeedback;
+};
+
class BinaryOperationFeedback
: public SingleValueFeedback<BinaryOperationHint,
ProcessedFeedback::kBinaryOperation> {