| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index a4a5c24c3126f6be75c1cb352949abcc9192271b..6cba11ea643f8829f756a92cb937f3655d8312ac 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -863,7 +863,8 @@ enum CompareResult {
|
|
|
| class AccessorPair;
|
| class AllocationSite;
|
| -class AllocationSiteContext;
|
| +class AllocationSiteCreationContext;
|
| +class AllocationSiteUsageContext;
|
| class DictionaryElementsAccessor;
|
| class ElementsAccessor;
|
| class Failure;
|
| @@ -2562,13 +2563,17 @@ class JSObject: public JSReceiver {
|
| static void SetObserved(Handle<JSObject> object);
|
|
|
| // Copy object.
|
| - static Handle<JSObject> Copy(Handle<JSObject> object,
|
| - Handle<AllocationSite> site);
|
| + enum DeepCopyHints {
|
| + kNoHints = 0,
|
| + kObjectIsShallowArray = 1
|
| + };
|
| +
|
| static Handle<JSObject> Copy(Handle<JSObject> object);
|
| static Handle<JSObject> DeepCopy(Handle<JSObject> object,
|
| - AllocationSiteContext* site_context);
|
| + AllocationSiteUsageContext* site_context,
|
| + DeepCopyHints hints = kNoHints);
|
| static Handle<JSObject> DeepWalk(Handle<JSObject> object,
|
| - AllocationSiteContext* site_context);
|
| + AllocationSiteCreationContext* site_context);
|
|
|
| // Casting.
|
| static inline JSObject* cast(Object* obj);
|
| @@ -5095,6 +5100,7 @@ class Code: public HeapObject {
|
| // [relocation_info]: Code relocation information
|
| DECL_ACCESSORS(relocation_info, ByteArray)
|
| void InvalidateRelocation();
|
| + void InvalidateEmbeddedObjects();
|
|
|
| // [handler_table]: Fixed array containing offsets of exception handlers.
|
| DECL_ACCESSORS(handler_table, FixedArray)
|
| @@ -5182,6 +5188,7 @@ class Code: public HeapObject {
|
| // [major_key]: For kind STUB or BINARY_OP_IC, the major key.
|
| inline int major_key();
|
| inline void set_major_key(int value);
|
| + inline bool has_major_key();
|
|
|
| // For kind STUB or ICs, tells whether or not a code object was generated by
|
| // the optimizing compiler (but it may not be an optimized function).
|
| @@ -6237,6 +6244,16 @@ class Map: public HeapObject {
|
| bool IsJSObjectMap() {
|
| return instance_type() >= FIRST_JS_OBJECT_TYPE;
|
| }
|
| + bool IsJSGlobalProxyMap() {
|
| + return instance_type() == JS_GLOBAL_PROXY_TYPE;
|
| + }
|
| + bool IsJSGlobalObjectMap() {
|
| + return instance_type() == JS_GLOBAL_OBJECT_TYPE;
|
| + }
|
| + bool IsGlobalObjectMap() {
|
| + const InstanceType type = instance_type();
|
| + return type == JS_GLOBAL_OBJECT_TYPE || type == JS_BUILTINS_OBJECT_TYPE;
|
| + }
|
|
|
| // Fires when the layout of an object with a leaf map changes.
|
| // This includes adding transitions to the leaf map or changing
|
| @@ -6547,7 +6564,6 @@ class Script: public Struct {
|
| V(Math, exp, MathExp) \
|
| V(Math, sqrt, MathSqrt) \
|
| V(Math, pow, MathPow) \
|
| - V(Math, random, MathRandom) \
|
| V(Math, max, MathMax) \
|
| V(Math, min, MathMin) \
|
| V(Math, imul, MathImul)
|
| @@ -8151,6 +8167,9 @@ class AllocationSite: public Struct {
|
| // walked in a particular order. So [[1, 2], 1, 2] will have one
|
| // nested_site, but [[1, 2], 3, [4]] will have a list of two.
|
| DECL_ACCESSORS(nested_site, Object)
|
| + DECL_ACCESSORS(memento_found_count, Smi)
|
| + DECL_ACCESSORS(memento_create_count, Smi)
|
| + DECL_ACCESSORS(pretenure_decision, Smi)
|
| DECL_ACCESSORS(dependent_code, DependentCode)
|
| DECL_ACCESSORS(weak_next, Object)
|
|
|
| @@ -8218,7 +8237,13 @@ class AllocationSite: public Struct {
|
|
|
| static const int kTransitionInfoOffset = HeapObject::kHeaderSize;
|
| static const int kNestedSiteOffset = kTransitionInfoOffset + kPointerSize;
|
| - static const int kDependentCodeOffset = kNestedSiteOffset + kPointerSize;
|
| + static const int kMementoFoundCountOffset = kNestedSiteOffset + kPointerSize;
|
| + static const int kMementoCreateCountOffset =
|
| + kMementoFoundCountOffset + kPointerSize;
|
| + static const int kPretenureDecisionOffset =
|
| + kMementoCreateCountOffset + kPointerSize;
|
| + static const int kDependentCodeOffset =
|
| + kPretenureDecisionOffset + kPointerSize;
|
| static const int kWeakNextOffset = kDependentCodeOffset + kPointerSize;
|
| static const int kSize = kWeakNextOffset + kPointerSize;
|
|
|
| @@ -9661,6 +9686,9 @@ class JSArrayBuffer: public JSObject {
|
| inline bool is_external();
|
| inline void set_is_external(bool value);
|
|
|
| + inline bool should_be_freed();
|
| + inline void set_should_be_freed(bool value);
|
| +
|
| // [weak_next]: linked list of array buffers.
|
| DECL_ACCESSORS(weak_next, Object)
|
|
|
| @@ -9690,6 +9718,7 @@ class JSArrayBuffer: public JSObject {
|
| private:
|
| // Bit position in a flag
|
| static const int kIsExternalBit = 0;
|
| + static const int kShouldBeFreed = 1;
|
|
|
| DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBuffer);
|
| };
|
|
|