diff options
Diffstat (limited to 'deps/v8/include/v8-experimental.h')
-rw-r--r-- | deps/v8/include/v8-experimental.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/deps/v8/include/v8-experimental.h b/deps/v8/include/v8-experimental.h new file mode 100644 index 0000000000..f988e14054 --- /dev/null +++ b/deps/v8/include/v8-experimental.h @@ -0,0 +1,53 @@ +// Copyright 2015 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. + +/** + * This header contains a set of experimental V8 APIs. We hope these will + * become a part of standard V8, but they may also be removed if we deem the + * experiment to not be successul. + */ +#ifndef V8_INCLUDE_V8_EXPERIMENTAL_H_ +#define V8_INCLUDE_V8_EXPERIMENTAL_H_ + +#include "include/v8.h" + +namespace v8 { +namespace experimental { + +// Allow the embedder to construct accessors that V8 can compile and use +// directly, without jumping into the runtime. +class V8_EXPORT FastAccessorBuilder { + public: + struct ValueId { + size_t value_id; + }; + struct LabelId { + size_t label_id; + }; + + static FastAccessorBuilder* New(Isolate* isolate); + + ValueId IntegerConstant(int int_constant); + ValueId GetReceiver(); + ValueId LoadInternalField(ValueId value_id, int field_no); + ValueId LoadValue(ValueId value_id, int offset); + ValueId LoadObject(ValueId value_id, int offset); + void ReturnValue(ValueId value_id); + void CheckFlagSetOrReturnNull(ValueId value_id, int mask); + void CheckNotZeroOrReturnNull(ValueId value_id); + LabelId MakeLabel(); + void SetLabel(LabelId label_id); + void CheckNotZeroOrJump(ValueId value_id, LabelId label_id); + + private: + FastAccessorBuilder() = delete; + FastAccessorBuilder(const FastAccessorBuilder&) = delete; + ~FastAccessorBuilder() = delete; + void operator=(const FastAccessorBuilder&) = delete; +}; + +} // namespace experimental +} // namespace v8 + +#endif // V8_INCLUDE_V8_EXPERIMENTAL_H_ |