Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(759)

Side by Side Diff: src/api-experimental.cc

Issue 1474543004: Implement Fast Accessor Builder (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Review feedback. Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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 /**
6 * Implementation for v8-experimental.h.
7 */
8
9 #include "src/api-experimental.h"
10
11 #include "include/v8.h"
12 #include "include/v8-experimental.h"
13 #include "src/api.h"
14 #include "src/compiler/fast-accessor-assembler.h"
15
16
17 namespace v8 {
18 namespace internal {
19 namespace experimental {
20
21
22 v8::internal::MaybeHandle<v8::internal::Code> BuildCodeFromFastAccessorBuilder(
epertoso 2015/12/04 09:56:32 You're already in v8::internal, there's no need to
vogelheim 2015/12/08 12:52:56 Done.
23 v8::experimental::FastAccessorBuilder* fast_handler) {
24 i::MaybeHandle<i::Code> code;
25 if (fast_handler != nullptr) {
26 auto faa = *reinterpret_cast<internal::compiler::FastAccessorAssembler**>(
27 fast_handler);
28 code = faa->Build();
29 CHECK(!code.is_null());
30 delete fast_handler;
31 }
32 return code;
33 }
34
35 } // namespace experimental
36 } // namespace internal
37
38 namespace experimental {
39
40
41 FastAccessorBuilder::FastAccessorBuilder() : impl_(nullptr) {}
42
43
44 FastAccessorBuilder::~FastAccessorBuilder() {
45 CHECK_NOT_NULL(impl_);
46 delete reinterpret_cast<internal::compiler::FastAccessorAssembler*>(impl_);
47 }
48
49
50 FastAccessorBuilder* FastAccessorBuilder::New(Isolate* isolate) {
51 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
52 internal::compiler::FastAccessorAssembler* faa =
53 new internal::compiler::FastAccessorAssembler(i_isolate);
54 FastAccessorBuilder* fab = new FastAccessorBuilder;
55 fab->impl_ = faa;
56 return fab;
57 }
58
59 FastAccessorBuilder::ValueId FastAccessorBuilder::IntegerConstant(
60 int const_value) {
61 return reinterpret_cast<internal::compiler::FastAccessorAssembler*>(impl_)
62 ->IntegerConstant(const_value);
63 }
64
65
66 FastAccessorBuilder::ValueId FastAccessorBuilder::GetReceiver() {
67 return reinterpret_cast<internal::compiler::FastAccessorAssembler*>(impl_)
68 ->GetReceiver();
69 }
70
71 FastAccessorBuilder::ValueId FastAccessorBuilder::LoadInternalField(
72 ValueId value, int field_no) {
73 return reinterpret_cast<internal::compiler::FastAccessorAssembler*>(impl_)
74 ->LoadInternalField(value, field_no);
75 }
76
77
78 FastAccessorBuilder::ValueId FastAccessorBuilder::LoadValue(ValueId value_id,
79 int offset) {
80 return reinterpret_cast<internal::compiler::FastAccessorAssembler*>(impl_)
81 ->LoadValue(value_id, offset);
82 }
83
84
85 FastAccessorBuilder::ValueId FastAccessorBuilder::LoadObject(ValueId value_id,
86 int offset) {
87 return reinterpret_cast<internal::compiler::FastAccessorAssembler*>(impl_)
88 ->LoadObject(value_id, offset);
89 }
90
91
92 void FastAccessorBuilder::ReturnValue(ValueId value) {
93 reinterpret_cast<internal::compiler::FastAccessorAssembler*>(impl_)
94 ->ReturnValue(value);
95 }
96
97
98 void FastAccessorBuilder::CheckFlagSetOrReturnNull(ValueId value_id, int mask) {
99 reinterpret_cast<internal::compiler::FastAccessorAssembler*>(impl_)
100 ->CheckFlagSetOrReturnNull(value_id, mask);
101 }
102
103
104 void FastAccessorBuilder::CheckNotZeroOrReturnNull(ValueId value_id) {
105 reinterpret_cast<internal::compiler::FastAccessorAssembler*>(impl_)
106 ->CheckNotZeroOrReturnNull(value_id);
107 }
108
109
110 FastAccessorBuilder::LabelId FastAccessorBuilder::MakeLabel() {
111 return reinterpret_cast<internal::compiler::FastAccessorAssembler*>(impl_)
112 ->MakeLabel();
113 }
114
115
116 void FastAccessorBuilder::SetLabel(LabelId label_id) {
117 reinterpret_cast<internal::compiler::FastAccessorAssembler*>(impl_)
118 ->SetLabel(label_id);
119 }
120
121
122 void FastAccessorBuilder::CheckNotZeroOrJump(ValueId value_id,
123 LabelId label_id) {
124 reinterpret_cast<internal::compiler::FastAccessorAssembler*>(impl_)
125 ->CheckNotZeroOrJump(value_id, label_id);
126 }
127
128 } // namespace experimental
129 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698