Sha256: bf2e2c7560838e4b7bc8a318e69e2bf842e524367ec23c8ded633445f57dd948

Contents?: true

Size: 1.64 KB

Versions: 25

Compression:

Stored size: 1.64 KB

Contents

// 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);
  ValueId Call(v8::FunctionCallback callback, ValueId value_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_

Version data entries

25 entries across 25 versions & 2 rubygems

Version Path
libv8-5.0.71.48.1beta2-x86-linux vendor/v8/include/v8-experimental.h
libv8-5.0.71.48.1beta2-x86_64-linux vendor/v8/include/v8-experimental.h
libv8-5.0.71.48.1beta2-x86_64-darwin-14 vendor/v8/include/v8-experimental.h
libv8-5.0.71.48.1beta2-x86_64-darwin-15 vendor/v8/include/v8-experimental.h
libv8-5.0.71.48.1beta2-universal-darwin-15 vendor/v8/include/v8-experimental.h