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

Unified Diff: src/hydrogen-instructions.h

Issue 398053002: Introduce FLAG_vector_ics. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: REBASE. Created 6 years, 5 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/hydrogen.cc ('k') | src/ia32/builtins-ia32.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/hydrogen-instructions.h
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
index 77874b06834e978a6e96754932f26105355e3098..8f9a44b50bcdf9dacf97f45ef3b7cc15268028cc 100644
--- a/src/hydrogen-instructions.h
+++ b/src/hydrogen-instructions.h
@@ -12,6 +12,7 @@
#include "src/conversions.h"
#include "src/data-flow.h"
#include "src/deoptimizer.h"
+#include "src/feedback-slots.h"
#include "src/hydrogen-types.h"
#include "src/ostreams.h"
#include "src/small-pointer-list.h"
@@ -5433,6 +5434,17 @@ class HLoadGlobalGeneric V8_FINAL : public HTemplateInstruction<2> {
HValue* global_object() { return OperandAt(1); }
Handle<String> name() const { return name_; }
bool for_typeof() const { return for_typeof_; }
+ int slot() const {
+ ASSERT(FLAG_vector_ics &&
+ slot_ != FeedbackSlotInterface::kInvalidFeedbackSlot);
+ return slot_;
+ }
+ Handle<FixedArray> feedback_vector() const { return feedback_vector_; }
+ void SetVectorAndSlot(Handle<FixedArray> vector, int slot) {
+ ASSERT(FLAG_vector_ics);
+ feedback_vector_ = vector;
+ slot_ = slot;
+ }
virtual OStream& PrintDataTo(OStream& os) const V8_OVERRIDE; // NOLINT
@@ -5445,7 +5457,8 @@ class HLoadGlobalGeneric V8_FINAL : public HTemplateInstruction<2> {
private:
HLoadGlobalGeneric(HValue* context, HValue* global_object,
Handle<String> name, bool for_typeof)
- : name_(name), for_typeof_(for_typeof) {
+ : name_(name), for_typeof_(for_typeof),
+ slot_(FeedbackSlotInterface::kInvalidFeedbackSlot) {
SetOperandAt(0, context);
SetOperandAt(1, global_object);
set_representation(Representation::Tagged());
@@ -5454,6 +5467,8 @@ class HLoadGlobalGeneric V8_FINAL : public HTemplateInstruction<2> {
Handle<String> name_;
bool for_typeof_;
+ Handle<FixedArray> feedback_vector_;
+ int slot_;
};
@@ -6422,6 +6437,18 @@ class HLoadNamedGeneric V8_FINAL : public HTemplateInstruction<2> {
HValue* object() const { return OperandAt(1); }
Handle<Object> name() const { return name_; }
+ int slot() const {
+ ASSERT(FLAG_vector_ics &&
+ slot_ != FeedbackSlotInterface::kInvalidFeedbackSlot);
+ return slot_;
+ }
+ Handle<FixedArray> feedback_vector() const { return feedback_vector_; }
+ void SetVectorAndSlot(Handle<FixedArray> vector, int slot) {
+ ASSERT(FLAG_vector_ics);
+ feedback_vector_ = vector;
+ slot_ = slot;
+ }
+
virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
return Representation::Tagged();
}
@@ -6432,7 +6459,8 @@ class HLoadNamedGeneric V8_FINAL : public HTemplateInstruction<2> {
private:
HLoadNamedGeneric(HValue* context, HValue* object, Handle<Object> name)
- : name_(name) {
+ : name_(name),
+ slot_(FeedbackSlotInterface::kInvalidFeedbackSlot) {
SetOperandAt(0, context);
SetOperandAt(1, object);
set_representation(Representation::Tagged());
@@ -6440,6 +6468,8 @@ class HLoadNamedGeneric V8_FINAL : public HTemplateInstruction<2> {
}
Handle<Object> name_;
+ Handle<FixedArray> feedback_vector_;
+ int slot_;
};
@@ -6685,6 +6715,17 @@ class HLoadKeyedGeneric V8_FINAL : public HTemplateInstruction<3> {
HValue* object() const { return OperandAt(0); }
HValue* key() const { return OperandAt(1); }
HValue* context() const { return OperandAt(2); }
+ int slot() const {
+ ASSERT(FLAG_vector_ics &&
+ slot_ != FeedbackSlotInterface::kInvalidFeedbackSlot);
+ return slot_;
+ }
+ Handle<FixedArray> feedback_vector() const { return feedback_vector_; }
+ void SetVectorAndSlot(Handle<FixedArray> vector, int slot) {
+ ASSERT(FLAG_vector_ics);
+ feedback_vector_ = vector;
+ slot_ = slot;
+ }
virtual OStream& PrintDataTo(OStream& os) const V8_OVERRIDE; // NOLINT
@@ -6698,13 +6739,17 @@ class HLoadKeyedGeneric V8_FINAL : public HTemplateInstruction<3> {
DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric)
private:
- HLoadKeyedGeneric(HValue* context, HValue* obj, HValue* key) {
+ HLoadKeyedGeneric(HValue* context, HValue* obj, HValue* key)
+ : slot_(FeedbackSlotInterface::kInvalidFeedbackSlot) {
set_representation(Representation::Tagged());
SetOperandAt(0, obj);
SetOperandAt(1, key);
SetOperandAt(2, context);
SetAllSideEffects();
}
+
+ Handle<FixedArray> feedback_vector_;
+ int slot_;
};
« no previous file with comments | « src/hydrogen.cc ('k') | src/ia32/builtins-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698