Line data Source code
1 : #ifndef V8_TORQUE_ARRAY_FROM_DSL_BASE_H__
2 : #define V8_TORQUE_ARRAY_FROM_DSL_BASE_H__
3 :
4 : #include "src/compiler/code-assembler.h"
5 : #include "src/code-stub-assembler.h"
6 : #include "src/utils.h"
7 : #include "torque-generated/class-definitions-from-dsl.h"
8 :
9 : namespace v8 {
10 : namespace internal {
11 :
12 13496 : class ArrayBuiltinsFromDSLAssembler {
13 : public:
14 13496 : explicit ArrayBuiltinsFromDSLAssembler(compiler::CodeAssemblerState* state) : state_(state), ca_(state) { USE(state_, ca_); }
15 : void EnsureWriteableFastElements(compiler::TNode<Context> p_context, compiler::TNode<JSArray> p_array);
16 : compiler::TNode<BoolT> IsJSArray(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
17 : compiler::TNode<Object> LoadElementOrUndefined(compiler::TNode<FixedArray> p_a, compiler::TNode<Smi> p_i);
18 : compiler::TNode<Object> LoadElementOrUndefined(compiler::TNode<FixedDoubleArray> p_a, compiler::TNode<Smi> p_i);
19 : void StoreArrayHole(compiler::TNode<FixedDoubleArray> p_elements, compiler::TNode<Smi> p_k);
20 : void StoreArrayHole(compiler::TNode<FixedArray> p_elements, compiler::TNode<Smi> p_k);
21 : void CopyArrayElement(compiler::TNode<FixedArray> p_elements, compiler::TNode<FixedArray> p_newElements, compiler::TNode<Smi> p_from, compiler::TNode<Smi> p_to);
22 : void CopyArrayElement(compiler::TNode<FixedDoubleArray> p_elements, compiler::TNode<FixedDoubleArray> p_newElements, compiler::TNode<Smi> p_from, compiler::TNode<Smi> p_to);
23 : compiler::TNode<Object> FastArrayEvery(compiler::TNode<Context> p_context, compiler::TNode<JSReceiver> p_o, compiler::TNode<Number> p_len, compiler::TNode<JSReceiver> p_callbackfn, compiler::TNode<Object> p_thisArg, compiler::CodeAssemblerLabel* label_Bailout, compiler::TypedCodeAssemblerVariable<Smi>* label_Bailout_parameter_0);
24 : compiler::TNode<Object> FastArrayReduce(compiler::TNode<Context> p_context, compiler::TNode<JSReceiver> p_o, compiler::TNode<Number> p_len, compiler::TNode<JSReceiver> p_callbackfn, compiler::TNode<Object> p_initialAccumulator, compiler::CodeAssemblerLabel* label_Bailout, compiler::TypedCodeAssemblerVariable<Number>* label_Bailout_parameter_0, compiler::TypedCodeAssemblerVariable<Object>* label_Bailout_parameter_1);
25 : compiler::TNode<Object> FastArrayReduceRight(compiler::TNode<Context> p_context, compiler::TNode<JSReceiver> p_o, compiler::TNode<Number> p_len, compiler::TNode<JSReceiver> p_callbackfn, compiler::TNode<Object> p_initialAccumulator, compiler::CodeAssemblerLabel* label_Bailout, compiler::TypedCodeAssemblerVariable<Number>* label_Bailout_parameter_0, compiler::TypedCodeAssemblerVariable<Object>* label_Bailout_parameter_1);
26 : compiler::TNode<Object> FastArraySome(compiler::TNode<Context> p_context, compiler::TNode<JSReceiver> p_o, compiler::TNode<Number> p_len, compiler::TNode<JSReceiver> p_callbackfn, compiler::TNode<Object> p_thisArg, compiler::CodeAssemblerLabel* label_Bailout, compiler::TypedCodeAssemblerVariable<Smi>* label_Bailout_parameter_0);
27 : compiler::TNode<FixedArray> NewSortState(compiler::TNode<Context> p_context, compiler::TNode<JSReceiver> p_receiver, compiler::TNode<HeapObject> p_comparefn, compiler::TNode<Number> p_initialReceiverLength, compiler::TNode<Smi> p_sortLength, bool p_forceGeneric);
28 : compiler::TNode<Smi> kFailure();
29 : compiler::TNode<Smi> kSuccess();
30 : int31_t kMaxMergePending();
31 : int31_t kMinGallopWins();
32 : compiler::TNode<Smi> kSortStateTempSize();
33 : compiler::TNode<Smi> GetPendingRunsSize(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState);
34 : compiler::TNode<Smi> GetPendingRunBase(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_pendingRuns, compiler::TNode<Smi> p_run);
35 : void SetPendingRunBase(compiler::TNode<FixedArray> p_pendingRuns, compiler::TNode<Smi> p_run, compiler::TNode<Smi> p_value);
36 : compiler::TNode<Smi> GetPendingRunLength(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_pendingRuns, compiler::TNode<Smi> p_run);
37 : void SetPendingRunLength(compiler::TNode<FixedArray> p_pendingRuns, compiler::TNode<Smi> p_run, compiler::TNode<Smi> p_value);
38 : void PushRun(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState, compiler::TNode<Smi> p_base, compiler::TNode<Smi> p_length);
39 : compiler::TNode<FixedArray> GetTempArray(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState, compiler::TNode<Smi> p_requestedSize);
40 : void EnsureSuccess(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState, compiler::CodeAssemblerLabel* label_Bailout);
41 : compiler::TNode<Smi> Failure(compiler::TNode<FixedArray> p_sortState);
42 : compiler::TNode<Object> CallLoad(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState, compiler::TNode<BuiltinPtr> p_load, compiler::TNode<Smi> p_index, compiler::CodeAssemblerLabel* label_Bailout);
43 : void CallStore(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState, compiler::TNode<BuiltinPtr> p_store, compiler::TNode<Smi> p_index, compiler::TNode<Object> p_value, compiler::CodeAssemblerLabel* label_Bailout);
44 : void BinaryInsertionSort(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState, compiler::TNode<Smi> p_low, compiler::TNode<Smi> p_startArg, compiler::TNode<Smi> p_high);
45 : compiler::TNode<Smi> CountAndMakeRun(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState, compiler::TNode<Smi> p_lowArg, compiler::TNode<Smi> p_high);
46 : void ReverseRange(compiler::TNode<FixedArray> p_array, compiler::TNode<Smi> p_from, compiler::TNode<Smi> p_to);
47 : void MergeLow(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState, compiler::TNode<Smi> p_baseA, compiler::TNode<Smi> p_lengthAArg, compiler::TNode<Smi> p_baseB, compiler::TNode<Smi> p_lengthBArg);
48 : void MergeHigh(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState, compiler::TNode<Smi> p_baseA, compiler::TNode<Smi> p_lengthAArg, compiler::TNode<Smi> p_baseB, compiler::TNode<Smi> p_lengthBArg);
49 : compiler::TNode<Smi> ComputeMinRunLength(compiler::TNode<Smi> p_nArg);
50 : compiler::TNode<BoolT> RunInvariantEstablished(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_pendingRuns, compiler::TNode<Smi> p_n);
51 : void MergeCollapse(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState);
52 : void MergeForceCollapse(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState);
53 : void ArrayTimSortImpl(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState, compiler::TNode<Smi> p_length);
54 : void CopyReceiverElementsToWorkArray(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState, compiler::TNode<Smi> p_length);
55 : void CopyWorkArrayToReceiver(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_sortState, compiler::TNode<Smi> p_length);
56 : compiler::TNode<JSReceiver> LoadSortStateReceiver(compiler::TNode<FixedArray> p_o);
57 : void StoreSortStateReceiver(compiler::TNode<FixedArray> p_o, compiler::TNode<JSReceiver> p_v);
58 : compiler::TNode<Map> LoadSortStateInitialReceiverMap(compiler::TNode<FixedArray> p_o);
59 : void StoreSortStateInitialReceiverMap(compiler::TNode<FixedArray> p_o, compiler::TNode<Map> p_v);
60 : compiler::TNode<Number> LoadSortStateInitialReceiverLength(compiler::TNode<FixedArray> p_o);
61 : void StoreSortStateInitialReceiverLength(compiler::TNode<FixedArray> p_o, compiler::TNode<Number> p_v);
62 : compiler::TNode<HeapObject> LoadSortStateUserCmpFn(compiler::TNode<FixedArray> p_o);
63 : void StoreSortStateUserCmpFn(compiler::TNode<FixedArray> p_o, compiler::TNode<HeapObject> p_v);
64 : compiler::TNode<BuiltinPtr> LoadSortStateSortComparePtr(compiler::TNode<FixedArray> p_o);
65 : void StoreSortStateSortComparePtr(compiler::TNode<FixedArray> p_o, compiler::TNode<BuiltinPtr> p_v);
66 : compiler::TNode<BuiltinPtr> LoadSortStateLoadFn(compiler::TNode<FixedArray> p_o);
67 : void StoreSortStateLoadFn(compiler::TNode<FixedArray> p_o, compiler::TNode<BuiltinPtr> p_v);
68 : compiler::TNode<BuiltinPtr> LoadSortStateStoreFn(compiler::TNode<FixedArray> p_o);
69 : void StoreSortStateStoreFn(compiler::TNode<FixedArray> p_o, compiler::TNode<BuiltinPtr> p_v);
70 : compiler::TNode<BuiltinPtr> LoadSortStateCanUseSameAccessorFn(compiler::TNode<FixedArray> p_o);
71 : void StoreSortStateCanUseSameAccessorFn(compiler::TNode<FixedArray> p_o, compiler::TNode<BuiltinPtr> p_v);
72 : compiler::TNode<Smi> LoadSortStateBailoutStatus(compiler::TNode<FixedArray> p_o);
73 : void StoreSortStateBailoutStatus(compiler::TNode<FixedArray> p_o, compiler::TNode<Smi> p_v);
74 : compiler::TNode<Smi> LoadSortStateMinGallop(compiler::TNode<FixedArray> p_o);
75 : void StoreSortStateMinGallop(compiler::TNode<FixedArray> p_o, compiler::TNode<Smi> p_v);
76 : compiler::TNode<Smi> LoadSortStatePendingRunsSize(compiler::TNode<FixedArray> p_o);
77 : void StoreSortStatePendingRunsSize(compiler::TNode<FixedArray> p_o, compiler::TNode<Smi> p_v);
78 : compiler::TNode<FixedArray> LoadSortStatePendingRuns(compiler::TNode<FixedArray> p_o);
79 : void StoreSortStatePendingRuns(compiler::TNode<FixedArray> p_o, compiler::TNode<FixedArray> p_v);
80 : compiler::TNode<FixedArray> LoadSortStateWorkArray(compiler::TNode<FixedArray> p_o);
81 : void StoreSortStateWorkArray(compiler::TNode<FixedArray> p_o, compiler::TNode<FixedArray> p_v);
82 : compiler::TNode<FixedArray> LoadSortStateTempArray(compiler::TNode<FixedArray> p_o);
83 : void StoreSortStateTempArray(compiler::TNode<FixedArray> p_o, compiler::TNode<FixedArray> p_v);
84 : compiler::TNode<Number> _method_SortState_Compare(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_this, compiler::TNode<Object> p_x, compiler::TNode<Object> p_y);
85 : void _method_SortState_CheckAccessor(compiler::TNode<Context> p_context, compiler::TNode<FixedArray> p_this, compiler::CodeAssemblerLabel* label_Bailout);
86 : void _method_SortState_ResetToGenericAccessor(compiler::TNode<FixedArray> p_this);
87 : private:
88 : compiler::CodeAssemblerState* const state_;
89 : compiler::CodeAssembler ca_;
90 : };
91 :
92 : } // namespace internal
93 : } // namespace v8
94 :
95 : #endif // V8_TORQUE_ARRAY_FROM_DSL_BASE_H__
|