V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
allocation-site-scopes.h
1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_ALLOCATION_SITE_SCOPES_H_
6 #define V8_ALLOCATION_SITE_SCOPES_H_
7 
8 #include "src/handles.h"
9 #include "src/objects.h"
10 #include "src/objects/allocation-site.h"
11 #include "src/objects/map.h"
12 
13 namespace v8 {
14 namespace internal {
15 
16 // AllocationSiteContext is the base class for walking and copying a nested
17 // boilerplate with AllocationSite and AllocationMemento support.
19  public:
20  explicit AllocationSiteContext(Isolate* isolate) {
21  isolate_ = isolate;
22  }
23 
24  Handle<AllocationSite> top() { return top_; }
25  Handle<AllocationSite> current() { return current_; }
26 
27  bool ShouldCreateMemento(Handle<JSObject> object) { return false; }
28 
29  Isolate* isolate() { return isolate_; }
30 
31  protected:
32  void update_current_site(AllocationSite* site) {
33  *(current_.location()) = site->ptr();
34  }
35 
36  inline void InitializeTraversal(Handle<AllocationSite> site);
37 
38  private:
39  Isolate* isolate_;
41  Handle<AllocationSite> current_;
42 };
43 
44 
45 // AllocationSiteUsageContext aids in the creation of AllocationMementos placed
46 // behind some/all components of a copied object literal.
48  public:
50  bool activated)
51  : AllocationSiteContext(isolate),
52  top_site_(site),
53  activated_(activated) { }
54 
55  inline Handle<AllocationSite> EnterNewScope();
56 
57  inline void ExitScope(Handle<AllocationSite> scope_site,
58  Handle<JSObject> object);
59 
60  inline bool ShouldCreateMemento(Handle<JSObject> object);
61 
62  static const bool kCopying = true;
63 
64  private:
65  Handle<AllocationSite> top_site_;
66  bool activated_;
67 };
68 
69 
70 } // namespace internal
71 } // namespace v8
72 
73 #endif // V8_ALLOCATION_SITE_SCOPES_H_
Definition: libplatform.h:13