v8  5.1.281 (node 6.17.1)
V8 is Google's open source JavaScript engine
v8-experimental.h
Go to the documentation of this file.
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  * This header contains a set of experimental V8 APIs. We hope these will
7  * become a part of standard V8, but they may also be removed if we deem the
8  * experiment to not be successul.
9  */
10 #ifndef V8_INCLUDE_V8_EXPERIMENTAL_H_
11 #define V8_INCLUDE_V8_EXPERIMENTAL_H_
12 
13 #include "v8.h" // NOLINT(build/include)
14 
15 namespace v8 {
16 namespace experimental {
17 
18 // Allow the embedder to construct accessors that V8 can compile and use
19 // directly, without jumping into the runtime.
21  public:
22  struct ValueId {
23  size_t value_id;
24  };
25  struct LabelId {
26  size_t label_id;
27  };
28 
29  static FastAccessorBuilder* New(Isolate* isolate);
30 
31  ValueId IntegerConstant(int int_constant);
33  ValueId LoadInternalField(ValueId value_id, int field_no);
34  ValueId LoadValue(ValueId value_id, int offset);
35  ValueId LoadObject(ValueId value_id, int offset);
36  void ReturnValue(ValueId value_id);
37  void CheckFlagSetOrReturnNull(ValueId value_id, int mask);
40  void SetLabel(LabelId label_id);
41  void CheckNotZeroOrJump(ValueId value_id, LabelId label_id);
42  ValueId Call(v8::FunctionCallback callback, ValueId value_id);
43 
44  private:
45  FastAccessorBuilder() = delete;
46  FastAccessorBuilder(const FastAccessorBuilder&) = delete;
47  ~FastAccessorBuilder() = delete;
48  void operator=(const FastAccessorBuilder&) = delete;
49 };
50 
51 } // namespace experimental
52 } // namespace v8
53 
54 #endif // V8_INCLUDE_V8_EXPERIMENTAL_H_