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.
18
class
AllocationSiteContext
{
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_;
40
Handle<AllocationSite>
top_;
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.
47
class
AllocationSiteUsageContext
:
public
AllocationSiteContext
{
48
public
:
49
AllocationSiteUsageContext
(
Isolate
* isolate,
Handle<AllocationSite>
site,
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_
v8::internal::AllocationSiteUsageContext
Definition:
allocation-site-scopes.h:47
v8::internal::AllocationSite
Definition:
allocation-site.h:18
v8
Definition:
libplatform.h:13
v8::internal::Handle
Definition:
accessors.h:19
v8::internal::AllocationSiteContext
Definition:
allocation-site-scopes.h:18
v8::internal::Isolate
Definition:
isolate.h:516
v8
src
allocation-site-scopes.h
Generated on Tue Dec 25 2018 14:37:56 by
1.8.14