summaryrefslogtreecommitdiff
path: root/deps/v8/src/builtins/builtins-data-view-gen.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/builtins/builtins-data-view-gen.h')
-rw-r--r--deps/v8/src/builtins/builtins-data-view-gen.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/deps/v8/src/builtins/builtins-data-view-gen.h b/deps/v8/src/builtins/builtins-data-view-gen.h
new file mode 100644
index 0000000000..6c755c4d08
--- /dev/null
+++ b/deps/v8/src/builtins/builtins-data-view-gen.h
@@ -0,0 +1,67 @@
+// Copyright 2018 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.
+
+#ifndef V8_BUILTINS_BUILTINS_DATA_VIEW_GEN_H_
+#define V8_BUILTINS_BUILTINS_DATA_VIEW_GEN_H_
+
+#include "src/elements-kind.h"
+#include "src/objects/bigint.h"
+#include "torque-generated/builtins-base-from-dsl-gen.h"
+
+namespace v8 {
+namespace internal {
+
+class DataViewBuiltinsAssembler : public BaseBuiltinsFromDSLAssembler {
+ public:
+ explicit DataViewBuiltinsAssembler(compiler::CodeAssemblerState* state)
+ : BaseBuiltinsFromDSLAssembler(state) {}
+
+ TNode<Number> LoadDataViewByteOffset(TNode<JSDataView> data_view) {
+ return CAST(LoadObjectField(data_view, JSDataView::kByteOffsetOffset));
+ }
+
+ TNode<Number> LoadDataViewByteLength(TNode<JSDataView> data_view) {
+ return CAST(LoadObjectField(data_view, JSDataView::kByteLengthOffset));
+ }
+
+ TNode<Int32T> LoadUint8(TNode<RawPtrT> data_pointer, TNode<IntPtrT> offset) {
+ return UncheckedCast<Int32T>(
+ Load(MachineType::Uint8(), data_pointer, offset));
+ }
+
+ TNode<Int32T> LoadInt8(TNode<RawPtrT> data_pointer, TNode<IntPtrT> offset) {
+ return UncheckedCast<Int32T>(
+ Load(MachineType::Int8(), data_pointer, offset));
+ }
+
+ void StoreWord8(TNode<RawPtrT> data_pointer, TNode<IntPtrT> offset,
+ TNode<Word32T> value) {
+ StoreNoWriteBarrier(MachineRepresentation::kWord8, data_pointer, offset,
+ value);
+ }
+
+ int32_t DataViewElementSize(ElementsKind elements_kind) {
+ return ElementsKindToByteSize(elements_kind);
+ }
+
+ TNode<IntPtrT> DataViewEncodeBigIntBits(bool sign, int32_t digits) {
+ return IntPtrConstant(BigInt::SignBits::encode(sign) |
+ BigInt::LengthBits::encode(digits));
+ }
+
+ TNode<UintPtrT> DataViewDecodeBigIntLength(TNode<BigInt> value) {
+ TNode<WordT> bitfield = LoadBigIntBitfield(value);
+ return DecodeWord<BigIntBase::LengthBits>(bitfield);
+ }
+
+ TNode<UintPtrT> DataViewDecodeBigIntSign(TNode<BigInt> value) {
+ TNode<WordT> bitfield = LoadBigIntBitfield(value);
+ return DecodeWord<BigIntBase::SignBits>(bitfield);
+ }
+};
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_BUILTINS_BUILTINS_DATA_VIEW_GEN_H_