aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/objects/allocation-site-scopes.h
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2019-08-01 08:38:30 +0200
committerMichaël Zasso <targos@protonmail.com>2019-08-01 12:53:56 +0200
commit2dcc3665abf57c3607cebffdeeca062f5894885d (patch)
tree4f560748132edcfb4c22d6f967a7e80d23d7ea2c /deps/v8/src/objects/allocation-site-scopes.h
parent1ee47d550c6de132f06110aa13eceb7551d643b3 (diff)
downloadandroid-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.h69
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_