diff options
author | Michaël Zasso <targos@protonmail.com> | 2019-08-01 08:38:30 +0200 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2019-08-01 12:53:56 +0200 |
commit | 2dcc3665abf57c3607cebffdeeca062f5894885d (patch) | |
tree | 4f560748132edcfb4c22d6f967a7e80d23d7ea2c /deps/v8/src/objects/allocation-site-scopes.h | |
parent | 1ee47d550c6de132f06110aa13eceb7551d643b3 (diff) | |
download | android-node-v8-2dcc3665abf57c3607cebffdeeca062f5894885d.tar.gz android-node-v8-2dcc3665abf57c3607cebffdeeca062f5894885d.tar.bz2 android-node-v8-2dcc3665abf57c3607cebffdeeca062f5894885d.zip |
deps: update V8 to 7.6.303.28
PR-URL: https://github.com/nodejs/node/pull/28016
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Refael Ackermann (רפאל פלחי) <refack@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Diffstat (limited to 'deps/v8/src/objects/allocation-site-scopes.h')
-rw-r--r-- | deps/v8/src/objects/allocation-site-scopes.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/deps/v8/src/objects/allocation-site-scopes.h b/deps/v8/src/objects/allocation-site-scopes.h new file mode 100644 index 0000000000..8f5fb42986 --- /dev/null +++ b/deps/v8/src/objects/allocation-site-scopes.h @@ -0,0 +1,69 @@ +// Copyright 2013 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef V8_OBJECTS_ALLOCATION_SITE_SCOPES_H_ +#define V8_OBJECTS_ALLOCATION_SITE_SCOPES_H_ + +#include "src/handles/handles.h" +#include "src/objects/allocation-site.h" +#include "src/objects/map.h" +#include "src/objects/objects.h" + +namespace v8 { +namespace internal { + +// AllocationSiteContext is the base class for walking and copying a nested +// boilerplate with AllocationSite and AllocationMemento support. +class AllocationSiteContext { + public: + explicit AllocationSiteContext(Isolate* isolate) { isolate_ = isolate; } + + Handle<AllocationSite> top() { return top_; } + Handle<AllocationSite> current() { return current_; } + + bool ShouldCreateMemento(Handle<JSObject> object) { return false; } + + Isolate* isolate() { return isolate_; } + + protected: + void update_current_site(AllocationSite site) { + *(current_.location()) = site.ptr(); + } + + inline void InitializeTraversal(Handle<AllocationSite> site); + + private: + Isolate* isolate_; + Handle<AllocationSite> top_; + Handle<AllocationSite> current_; +}; + +// AllocationSiteUsageContext aids in the creation of AllocationMementos placed +// behind some/all components of a copied object literal. +class AllocationSiteUsageContext : public AllocationSiteContext { + public: + AllocationSiteUsageContext(Isolate* isolate, Handle<AllocationSite> site, + bool activated) + : AllocationSiteContext(isolate), + top_site_(site), + activated_(activated) {} + + inline Handle<AllocationSite> EnterNewScope(); + + inline void ExitScope(Handle<AllocationSite> scope_site, + Handle<JSObject> object); + + inline bool ShouldCreateMemento(Handle<JSObject> object); + + static const bool kCopying = true; + + private: + Handle<AllocationSite> top_site_; + bool activated_; +}; + +} // namespace internal +} // namespace v8 + +#endif // V8_OBJECTS_ALLOCATION_SITE_SCOPES_H_ |