Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index 7d8dae78aa910de0c9561c08786abef380f1f9fc..632e7d4acd989f14705acc5c6c495fd53776572a 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -440,7 +440,8 @@ const int kVariableSizeSentinel = 0; |
V(SCRIPT, Script, script) \ |
V(CODE_CACHE, CodeCache, code_cache) \ |
V(POLYMORPHIC_CODE_CACHE, PolymorphicCodeCache, polymorphic_code_cache) \ |
- V(TYPE_FEEDBACK_INFO, TypeFeedbackInfo, type_feedback_info) |
+ V(TYPE_FEEDBACK_INFO, TypeFeedbackInfo, type_feedback_info) \ |
+ V(ALIASED_ARGUMENTS_ENTRY, AliasedArgumentsEntry, aliased_arguments_entry) |
#ifdef ENABLE_DEBUGGER_SUPPORT |
#define STRUCT_LIST_DEBUGGER(V) \ |
@@ -596,6 +597,7 @@ enum InstanceType { |
CODE_CACHE_TYPE, |
POLYMORPHIC_CODE_CACHE_TYPE, |
TYPE_FEEDBACK_INFO_TYPE, |
+ ALIASED_ARGUMENTS_ENTRY_TYPE, |
// The following two instance types are only used when ENABLE_DEBUGGER_SUPPORT |
// is defined. However as include/v8.h contain some of the instance type |
// constants always having them avoids them getting different numbers |
@@ -6435,6 +6437,39 @@ class TypeFeedbackInfo: public Struct { |
}; |
+// Representation of a slow alias as part of a non-strict arguments objects. |
+// For fast aliases (if HasNonStrictArgumentsElements()): |
+// - the parameter map contains an index into the context |
+// - all attributes of the element have default values |
+// For slow aliases (if HasDictionaryArgumentsElements()): |
+// - the parameter map contains no fast alias mapping (i.e. the hole) |
+// - this struct (in the slow backing store) contains an index into the context |
+// - all attributes are available as part if the property details |
+class AliasedArgumentsEntry: public Struct { |
+ public: |
+ inline int aliased_context_slot(); |
+ inline void set_aliased_context_slot(int count); |
+ |
+ static inline AliasedArgumentsEntry* cast(Object* obj); |
+ |
+#ifdef OBJECT_PRINT |
+ inline void AliasedArgumentsEntryPrint() { |
+ AliasedArgumentsEntryPrint(stdout); |
+ } |
+ void AliasedArgumentsEntryPrint(FILE* out); |
+#endif |
+#ifdef DEBUG |
+ void AliasedArgumentsEntryVerify(); |
+#endif |
+ |
+ static const int kAliasedContextSlot = HeapObject::kHeaderSize; |
+ static const int kSize = kAliasedContextSlot + kPointerSize; |
+ |
+ private: |
+ DISALLOW_IMPLICIT_CONSTRUCTORS(AliasedArgumentsEntry); |
+}; |
+ |
+ |
enum AllowNullsFlag {ALLOW_NULLS, DISALLOW_NULLS}; |
enum RobustnessFlag {ROBUST_STRING_TRAVERSAL, FAST_STRING_TRAVERSAL}; |