Line data Source code
1 : #ifndef V8_TORQUE_BASE_FROM_DSL_BASE_H__
2 : #define V8_TORQUE_BASE_FROM_DSL_BASE_H__
3 :
4 : #include "src/compiler/code-assembler.h"
5 : #include "src/utils.h"
6 : #include "torque-generated/class-definitions-from-dsl.h"
7 :
8 : namespace v8 {
9 : namespace internal {
10 :
11 670705 : class BaseBuiltinsFromDSLAssembler {
12 : public:
13 670705 : explicit BaseBuiltinsFromDSLAssembler(compiler::CodeAssemblerState* state) : state_(state), ca_(state) { USE(state_, ca_); }
14 : compiler::TNode<Oddball> Hole();
15 : compiler::TNode<Oddball> Null();
16 : compiler::TNode<Oddball> Undefined();
17 : compiler::TNode<Oddball> True();
18 : compiler::TNode<Oddball> False();
19 : compiler::TNode<String> kEmptyString();
20 : compiler::TNode<String> kLengthString();
21 : compiler::TNode<BoolT> ElementsKindNotEqual(compiler::TNode<Int32T> p_k1, compiler::TNode<Int32T> p_k2);
22 : compiler::TNode<BoolT> IsNumberEqual(compiler::TNode<Number> p_a, compiler::TNode<Number> p_b);
23 : compiler::TNode<BoolT> IsNumberNotEqual(compiler::TNode<Number> p_a, compiler::TNode<Number> p_b);
24 : compiler::TNode<Number> Min(compiler::TNode<Number> p_x, compiler::TNode<Number> p_y);
25 : compiler::TNode<Number> Max(compiler::TNode<Number> p_x, compiler::TNode<Number> p_y);
26 : compiler::TNode<Smi> Cast5ATSmi(compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
27 : compiler::TNode<Smi> Cast13ATPositiveSmi(compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
28 : compiler::TNode<Number> Cast22UT12ATHeapNumber5ATSmi(compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
29 : compiler::TNode<HeapObject> Cast10HeapObject(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
30 : compiler::TNode<FixedArray> Cast10FixedArray(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
31 : compiler::TNode<FixedDoubleArray> Cast16FixedDoubleArray(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
32 : compiler::TNode<FixedArray> Cast23SloppyArgumentsElements(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
33 : compiler::TNode<JSDataView> Cast12ATJSDataView(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
34 : compiler::TNode<JSTypedArray> Cast12JSTypedArray(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
35 : compiler::TNode<JSReceiver> Cast41UT9ATJSProxy15JSBoundFunction10JSFunction(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
36 : compiler::TNode<HeapObject> Cast54UT9ATJSProxy11ATUndefined15JSBoundFunction10JSFunction(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
37 : compiler::TNode<JSArray> Cast7JSArray(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
38 : compiler::TNode<JSArrayBuffer> Cast13JSArrayBuffer(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
39 : compiler::TNode<Context> Cast9ATContext(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
40 : compiler::TNode<JSObject> Cast8JSObject(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
41 : compiler::TNode<NumberDictionary> Cast18ATNumberDictionary(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
42 : compiler::TNode<FixedTypedArrayBase> Cast21ATFixedTypedArrayBase(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
43 : compiler::TNode<String> Cast8ATString(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
44 : compiler::TNode<String> Cast14ATDirectString(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
45 : compiler::TNode<JSReceiver> Cast13ATConstructor(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
46 : compiler::TNode<HeapNumber> Cast12ATHeapNumber(compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
47 : compiler::TNode<Map> Cast5ATMap(compiler::TNode<Context> p_context, compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
48 : compiler::TNode<JSArgumentsObjectWithLength> Cast27JSArgumentsObjectWithLength(compiler::TNode<Context> p_context, compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
49 : compiler::TNode<JSArray> Cast13ATFastJSArray(compiler::TNode<Context> p_context, compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
50 : struct FastJSArrayWitness {
51 : compiler::TNode<JSArray> stable;
52 : compiler::TNode<JSArray> unstable;
53 : compiler::TNode<Map> map;
54 :
55 : std::tuple<compiler::TNode<JSArray>, compiler::TNode<JSArray>, compiler::TNode<Map>> Flatten() const {
56 : return std::tuple_cat(std::make_tuple(stable), std::make_tuple(unstable), std::make_tuple(map));
57 : }
58 : };
59 : compiler::TNode<JSArray> Cast20ATFastJSArrayForCopy(compiler::TNode<Context> p_context, compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
60 : compiler::TNode<JSArray> Cast34ATFastJSArrayWithNoCustomIteration(compiler::TNode<Context> p_context, compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
61 : compiler::TNode<JSReceiver> Cast10JSReceiver(compiler::TNode<Context> p_context, compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
62 : compiler::TNode<JSFunction> Cast10JSFunction(compiler::TNode<Context> p_context, compiler::TNode<HeapObject> p_o, compiler::CodeAssemblerLabel* label_CastError);
63 : compiler::TNode<Int32T> FromConstexpr7ATint3117ATconstexpr_int31(int31_t p_i);
64 : compiler::TNode<Int32T> FromConstexpr7ATint3217ATconstexpr_int31(int31_t p_i);
65 : compiler::TNode<Int32T> FromConstexpr7ATint3217ATconstexpr_int32(int32_t p_i);
66 : compiler::TNode<IntPtrT> FromConstexpr8ATintptr17ATconstexpr_int31(int31_t p_i);
67 : compiler::TNode<IntPtrT> FromConstexpr8ATintptr17ATconstexpr_int32(int32_t p_i);
68 : compiler::TNode<IntPtrT> FromConstexpr8ATintptr18ATconstexpr_intptr(intptr_t p_i);
69 : compiler::TNode<UintPtrT> FromConstexpr9ATuintptr19ATconstexpr_uintptr(uintptr_t p_i);
70 : compiler::TNode<Smi> FromConstexpr5ATSmi17ATconstexpr_int31(int31_t p_i);
71 : compiler::TNode<Smi> FromConstexpr13ATPositiveSmi17ATconstexpr_int31(int31_t p_i);
72 : compiler::TNode<String> FromConstexpr8ATString18ATconstexpr_string(const char* p_s);
73 : compiler::TNode<Number> FromConstexpr22UT12ATHeapNumber5ATSmi18ATconstexpr_uint32(uint32_t p_i);
74 : compiler::TNode<Number> FromConstexpr22UT12ATHeapNumber5ATSmi17ATconstexpr_int32(int32_t p_i);
75 : compiler::TNode<Number> FromConstexpr22UT12ATHeapNumber5ATSmi19ATconstexpr_float64(double p_f);
76 : compiler::TNode<Number> FromConstexpr22UT12ATHeapNumber5ATSmi17ATconstexpr_int31(int31_t p_i);
77 : compiler::TNode<Number> FromConstexpr22UT12ATHeapNumber5ATSmi15ATconstexpr_Smi(Smi p_s);
78 : compiler::TNode<Smi> FromConstexpr5ATSmi15ATconstexpr_Smi(Smi p_s);
79 : compiler::TNode<Uint32T> FromConstexpr8ATuint3217ATconstexpr_int31(int31_t p_i);
80 : compiler::TNode<UintPtrT> FromConstexpr9ATuintptr17ATconstexpr_int31(int31_t p_i);
81 : compiler::TNode<Float64T> FromConstexpr9ATfloat6417ATconstexpr_int31(int31_t p_i);
82 : compiler::TNode<Float64T> FromConstexpr9ATfloat6419ATconstexpr_float64(double p_i);
83 : compiler::TNode<BoolT> FromConstexpr6ATbool16ATconstexpr_bool(bool p_b);
84 : compiler::TNode<Smi> FromConstexpr14ATLanguageMode24ATconstexpr_LanguageMode(LanguageMode p_m);
85 : compiler::TNode<Int32T> FromConstexpr14ATElementsKind24ATconstexpr_ElementsKind(ElementsKind p_e);
86 : compiler::TNode<Object> FromConstexpr20UT5ATSmi10HeapObject18ATconstexpr_string(const char* p_s);
87 : compiler::TNode<IntPtrT> FromConstexpr19ATNativeContextSlot29ATconstexpr_NativeContextSlot(int32_t p_c);
88 : compiler::TNode<Int32T> Convert7ATint3214ATElementsKind(compiler::TNode<Int32T> p_elementsKind);
89 : compiler::TNode<Number> Convert22UT12ATHeapNumber5ATSmi7ATint32(compiler::TNode<Int32T> p_i);
90 : compiler::TNode<IntPtrT> Convert8ATintptr7ATint32(compiler::TNode<Int32T> p_i);
91 : compiler::TNode<Smi> Convert5ATSmi7ATint32(compiler::TNode<Int32T> p_i);
92 : compiler::TNode<Number> Convert22UT12ATHeapNumber5ATSmi8ATuint32(compiler::TNode<Uint32T> p_ui);
93 : compiler::TNode<Smi> Convert5ATSmi8ATuint32(compiler::TNode<Uint32T> p_ui);
94 : compiler::TNode<UintPtrT> Convert9ATuintptr8ATuint32(compiler::TNode<Uint32T> p_ui);
95 : compiler::TNode<Int32T> Convert7ATint327ATuint8(compiler::TNode<Uint32T> p_i);
96 : compiler::TNode<Int32T> Convert7ATint328ATuint16(compiler::TNode<Uint32T> p_i);
97 : compiler::TNode<Int32T> Convert7ATint328ATuint31(compiler::TNode<Uint32T> p_i);
98 : compiler::TNode<Int32T> Convert7ATint328ATintptr(compiler::TNode<IntPtrT> p_i);
99 : compiler::TNode<Smi> Convert5ATSmi8ATintptr(compiler::TNode<IntPtrT> p_i);
100 : compiler::TNode<Uint32T> Convert8ATuint329ATuintptr(compiler::TNode<UintPtrT> p_ui);
101 : compiler::TNode<IntPtrT> Convert8ATintptr5ATSmi(compiler::TNode<Smi> p_s);
102 : compiler::TNode<IntPtrT> Convert8ATintptr9ATuintptr(compiler::TNode<UintPtrT> p_ui);
103 : compiler::TNode<Int32T> Convert7ATint325ATSmi(compiler::TNode<Smi> p_s);
104 : compiler::TNode<Float64T> Convert9ATfloat6412ATHeapNumber(compiler::TNode<HeapNumber> p_h);
105 : compiler::TNode<Float64T> Convert9ATfloat6422UT12ATHeapNumber5ATSmi(compiler::TNode<Number> p_n);
106 : compiler::TNode<UintPtrT> Convert9ATuintptr22UT12ATHeapNumber5ATSmi(compiler::TNode<Number> p_n);
107 : compiler::TNode<Float64T> Convert9ATfloat649ATfloat32(compiler::TNode<Float32T> p_f);
108 : compiler::TNode<Number> Convert22UT12ATHeapNumber5ATSmi9ATfloat64(compiler::TNode<Float64T> p_d);
109 : compiler::TNode<Float64T> Convert9ATfloat649ATuintptr(compiler::TNode<UintPtrT> p_ui);
110 : compiler::TNode<Number> Convert22UT12ATHeapNumber5ATSmi9ATuintptr(compiler::TNode<UintPtrT> p_ui);
111 : compiler::TNode<UintPtrT> Convert9ATuintptr9ATfloat64(compiler::TNode<Float64T> p_d);
112 : compiler::TNode<UintPtrT> Convert9ATuintptr8ATintptr(compiler::TNode<IntPtrT> p_i);
113 : compiler::TNode<UintPtrT> Convert9ATuintptr8ATRawPtr(compiler::TNode<RawPtrT> p_r);
114 : compiler::TNode<IntPtrT> Convert8ATintptr8ATRawPtr(compiler::TNode<RawPtrT> p_r);
115 : compiler::TNode<BInt> Convert6ATbint7ATint32(compiler::TNode<Int32T> p_v);
116 : compiler::TNode<BInt> Convert6ATbint8ATintptr(compiler::TNode<IntPtrT> p_v);
117 : compiler::TNode<BInt> Convert6ATbint5ATSmi(compiler::TNode<Smi> p_v);
118 : compiler::TNode<Object> UnsafeCast20UT5ATSmi10HeapObject(compiler::TNode<Object> p_o);
119 : compiler::TNode<Map> kCOWMap();
120 : compiler::TNode<FixedArray> kEmptyFixedArray();
121 : void StoreFixedDoubleArrayElementSmi(compiler::TNode<FixedDoubleArray> p_a, compiler::TNode<Smi> p_i, compiler::TNode<Number> p_n);
122 : void StoreFixedDoubleArrayDirect(compiler::TNode<FixedDoubleArray> p_a, compiler::TNode<Smi> p_i, compiler::TNode<Number> p_v);
123 : void StoreFixedArrayDirect(compiler::TNode<FixedArray> p_a, compiler::TNode<Smi> p_i, compiler::TNode<Object> p_v);
124 : compiler::TNode<Int32T> FastHoleyElementsKind(compiler::TNode<Int32T> p_kind);
125 : compiler::TNode<Int32T> AllowDoubleElements(compiler::TNode<Int32T> p_kind);
126 : compiler::TNode<Int32T> AllowNonNumberElements(compiler::TNode<Int32T> p_kind);
127 : compiler::TNode<JSFunction> GetObjectFunction(compiler::TNode<Context> p_context);
128 : compiler::TNode<JSReceiver> GetArrayBufferFunction(compiler::TNode<Context> p_context);
129 : compiler::TNode<JSFunction> GetArrayBufferNoInitFunction(compiler::TNode<Context> p_context);
130 : compiler::TNode<Map> GetFastPackedSmiElementsJSArrayMap(compiler::TNode<Context> p_context);
131 : void TorqueMoveElements(compiler::TNode<FixedArray> p_elements, compiler::TNode<IntPtrT> p_dstIndex, compiler::TNode<IntPtrT> p_srcIndex, compiler::TNode<IntPtrT> p_count);
132 : void TorqueMoveElements(compiler::TNode<FixedDoubleArray> p_elements, compiler::TNode<IntPtrT> p_dstIndex, compiler::TNode<IntPtrT> p_srcIndex, compiler::TNode<IntPtrT> p_count);
133 : void TorqueCopyElements(compiler::TNode<FixedArray> p_dstElements, compiler::TNode<IntPtrT> p_dstIndex, compiler::TNode<FixedArray> p_srcElements, compiler::TNode<IntPtrT> p_srcIndex, compiler::TNode<IntPtrT> p_count);
134 : void TorqueCopyElements(compiler::TNode<FixedDoubleArray> p_dstElements, compiler::TNode<IntPtrT> p_dstIndex, compiler::TNode<FixedDoubleArray> p_srcElements, compiler::TNode<IntPtrT> p_srcIndex, compiler::TNode<IntPtrT> p_count);
135 : compiler::TNode<Object> LoadElementNoHole10FixedArray(compiler::TNode<Context> p_context, compiler::TNode<JSArray> p_a, compiler::TNode<Smi> p_index, compiler::CodeAssemblerLabel* label_IfHole);
136 : compiler::TNode<Object> LoadElementNoHole16FixedDoubleArray(compiler::TNode<Context> p_context, compiler::TNode<JSArray> p_a, compiler::TNode<Smi> p_index, compiler::CodeAssemblerLabel* label_IfHole);
137 : compiler::TNode<BoolT> NumberIsNaN(compiler::TNode<Number> p_number);
138 : compiler::TNode<BoolT> ToBoolean(compiler::TNode<Object> p_obj);
139 : compiler::TNode<Number> ToIndex(compiler::TNode<Object> p_input, compiler::TNode<Context> p_context, compiler::CodeAssemblerLabel* label_RangeError);
140 : compiler::TNode<Number> GetLengthProperty(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
141 : struct KeyValuePair {
142 : compiler::TNode<Object> key;
143 : compiler::TNode<Object> value;
144 :
145 280 : std::tuple<compiler::TNode<Object>, compiler::TNode<Object>> Flatten() const {
146 280 : return std::tuple_cat(std::make_tuple(key), std::make_tuple(value));
147 : }
148 : };
149 : compiler::TNode<BoolT> IsFastJSArray(compiler::TNode<Object> p_o, compiler::TNode<Context> p_context);
150 : void BranchIfFastJSArray(compiler::TNode<Object> p_o, compiler::TNode<Context> p_context, compiler::CodeAssemblerLabel* label_True, compiler::CodeAssemblerLabel* label_False);
151 : void BranchIfNotFastJSArray(compiler::TNode<Object> p_o, compiler::TNode<Context> p_context, compiler::CodeAssemblerLabel* label_True, compiler::CodeAssemblerLabel* label_False);
152 : void BranchIfFastJSArrayForCopy(compiler::TNode<Object> p_o, compiler::TNode<Context> p_context, compiler::CodeAssemblerLabel* label_True, compiler::CodeAssemblerLabel* label_False);
153 : compiler::TNode<BoolT> IsFastJSArrayWithNoCustomIteration(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
154 : compiler::TNode<Smi> FromConstexpr11ATFrameType21ATconstexpr_FrameType(StackFrame::Type p_t);
155 : compiler::TNode<Smi> Cast11ATFrameType(compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
156 : compiler::TNode<Object> LoadObjectFromFrame(compiler::TNode<RawPtrT> p_f, int32_t p_o);
157 : compiler::TNode<RawPtrT> LoadPointerFromFrame(compiler::TNode<RawPtrT> p_f, int32_t p_o);
158 : compiler::TNode<Smi> LoadSmiFromFrame(compiler::TNode<RawPtrT> p_f, int32_t p_o);
159 : compiler::TNode<JSFunction> LoadFunctionFromFrame(compiler::TNode<RawPtrT> p_f);
160 : compiler::TNode<RawPtrT> LoadCallerFromFrame(compiler::TNode<RawPtrT> p_f);
161 : compiler::TNode<Object> Cast25UT9ATContext11ATFrameType(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
162 : compiler::TNode<Object> LoadContextOrFrameTypeFromFrame(compiler::TNode<Context> p_context, compiler::TNode<RawPtrT> p_f);
163 : compiler::TNode<Smi> LoadLengthFromAdapterFrame(compiler::TNode<Context> p_context, compiler::TNode<RawPtrT> p_f);
164 : compiler::TNode<BoolT> FrameTypeEquals(compiler::TNode<Smi> p_f1, compiler::TNode<Smi> p_f2);
165 : compiler::TNode<RawPtrT> Cast15ATStandardFrame(compiler::TNode<Context> p_context, compiler::TNode<RawPtrT> p_f, compiler::CodeAssemblerLabel* label_CastError);
166 : compiler::TNode<RawPtrT> Cast23ATArgumentsAdaptorFrame(compiler::TNode<Context> p_context, compiler::TNode<RawPtrT> p_f, compiler::CodeAssemblerLabel* label_CastError);
167 : compiler::TNode<JSFunction> LoadTargetFromFrame();
168 : struct _ThisStructHeapObject {
169 : compiler::TNode<Map> map;
170 :
171 : std::tuple<compiler::TNode<Map>> Flatten() const {
172 : return std::tuple_cat(std::make_tuple(map));
173 : }
174 : };
175 : compiler::TNode<Map> LoadHeapObjectMap(compiler::TNode<HeapObject> p_o);
176 : void StoreHeapObjectMap(compiler::TNode<HeapObject> p_o, compiler::TNode<Map> p_v);
177 : struct _ThisStructFixedArrayBase {
178 : BaseBuiltinsFromDSLAssembler::_ThisStructHeapObject _super;
179 : compiler::TNode<Smi> length;
180 :
181 : std::tuple<compiler::TNode<Map>, compiler::TNode<Smi>> Flatten() const {
182 : return std::tuple_cat(_super.Flatten(), std::make_tuple(length));
183 : }
184 : };
185 : compiler::TNode<Smi> LoadFixedArrayBaseLength(compiler::TNode<FixedArrayBase> p_o);
186 : void StoreFixedArrayBaseLength(compiler::TNode<FixedArrayBase> p_o, compiler::TNode<Smi> p_v);
187 : struct _ThisStructFixedArray {
188 : BaseBuiltinsFromDSLAssembler::_ThisStructFixedArrayBase _super;
189 :
190 : std::tuple<compiler::TNode<Map>, compiler::TNode<Smi>> Flatten() const {
191 : return std::tuple_cat(_super.Flatten());
192 : }
193 : };
194 : struct _ThisStructFixedDoubleArray {
195 : BaseBuiltinsFromDSLAssembler::_ThisStructFixedArrayBase _super;
196 :
197 : std::tuple<compiler::TNode<Map>, compiler::TNode<Smi>> Flatten() const {
198 : return std::tuple_cat(_super.Flatten());
199 : }
200 : };
201 : struct _ThisStructJSReceiver {
202 : BaseBuiltinsFromDSLAssembler::_ThisStructHeapObject _super;
203 : compiler::TNode<Object> properties_or_hash;
204 :
205 : std::tuple<compiler::TNode<Map>, compiler::TNode<Object>> Flatten() const {
206 : return std::tuple_cat(_super.Flatten(), std::make_tuple(properties_or_hash));
207 : }
208 : };
209 : compiler::TNode<Object> LoadJSReceiverPropertiesOrHash(compiler::TNode<JSReceiver> p_o);
210 : void StoreJSReceiverPropertiesOrHash(compiler::TNode<JSReceiver> p_o, compiler::TNode<Object> p_v);
211 : struct _ThisStructJSObject {
212 : BaseBuiltinsFromDSLAssembler::_ThisStructJSReceiver _super;
213 : compiler::TNode<FixedArrayBase> elements;
214 :
215 : std::tuple<compiler::TNode<Map>, compiler::TNode<Object>, compiler::TNode<FixedArrayBase>> Flatten() const {
216 : return std::tuple_cat(_super.Flatten(), std::make_tuple(elements));
217 : }
218 : };
219 : compiler::TNode<FixedArrayBase> LoadJSObjectElements(compiler::TNode<JSObject> p_o);
220 : void StoreJSObjectElements(compiler::TNode<JSObject> p_o, compiler::TNode<FixedArrayBase> p_v);
221 : struct _ThisStructJSArgumentsObjectWithLength {
222 : BaseBuiltinsFromDSLAssembler::_ThisStructJSObject _super;
223 : compiler::TNode<Object> length;
224 :
225 : std::tuple<compiler::TNode<Map>, compiler::TNode<Object>, compiler::TNode<FixedArrayBase>, compiler::TNode<Object>> Flatten() const {
226 : return std::tuple_cat(_super.Flatten(), std::make_tuple(length));
227 : }
228 : };
229 : compiler::TNode<Object> LoadJSArgumentsObjectWithLengthLength(compiler::TNode<JSArgumentsObjectWithLength> p_o);
230 : void StoreJSArgumentsObjectWithLengthLength(compiler::TNode<JSArgumentsObjectWithLength> p_o, compiler::TNode<Object> p_v);
231 : struct _ThisStructJSArray {
232 : BaseBuiltinsFromDSLAssembler::_ThisStructJSObject _super;
233 : compiler::TNode<Number> length;
234 :
235 : std::tuple<compiler::TNode<Map>, compiler::TNode<Object>, compiler::TNode<FixedArrayBase>, compiler::TNode<Number>> Flatten() const {
236 : return std::tuple_cat(_super.Flatten(), std::make_tuple(length));
237 : }
238 : };
239 : compiler::TNode<Number> LoadJSArrayLength(compiler::TNode<JSArray> p_o);
240 : void StoreJSArrayLength(compiler::TNode<JSArray> p_o, compiler::TNode<Number> p_v);
241 : compiler::TNode<BoolT> _method_JSArray_IsEmpty(compiler::TNode<JSArray> p_this);
242 : struct _ThisStructSharedFunctionInfo {
243 : BaseBuiltinsFromDSLAssembler::_ThisStructHeapObject _super;
244 : compiler::TNode<Object> function_data;
245 : compiler::TNode<Object> name_or_scope_info;
246 : compiler::TNode<HeapObject> outer_scope_info_or_feedback_metadata;
247 : compiler::TNode<HeapObject> script_or_debug_info;
248 : compiler::TNode<Int32T> length;
249 : compiler::TNode<Uint32T> formal_parameter_count;
250 : compiler::TNode<Int32T> expected_nof_properties;
251 : compiler::TNode<Int32T> builtin_function_id;
252 : compiler::TNode<Int32T> function_token_offset;
253 : compiler::TNode<Int32T> flags;
254 :
255 : std::tuple<compiler::TNode<Map>, compiler::TNode<Object>, compiler::TNode<Object>, compiler::TNode<HeapObject>, compiler::TNode<HeapObject>, compiler::TNode<Int32T>, compiler::TNode<Uint32T>, compiler::TNode<Int32T>, compiler::TNode<Int32T>, compiler::TNode<Int32T>, compiler::TNode<Int32T>> Flatten() const {
256 : return std::tuple_cat(_super.Flatten(), std::make_tuple(function_data), std::make_tuple(name_or_scope_info), std::make_tuple(outer_scope_info_or_feedback_metadata), std::make_tuple(script_or_debug_info), std::make_tuple(length), std::make_tuple(formal_parameter_count), std::make_tuple(expected_nof_properties), std::make_tuple(builtin_function_id), std::make_tuple(function_token_offset), std::make_tuple(flags));
257 : }
258 : };
259 : compiler::TNode<Object> LoadSharedFunctionInfoFunctionData(compiler::TNode<SharedFunctionInfo> p_o);
260 : void StoreSharedFunctionInfoFunctionData(compiler::TNode<SharedFunctionInfo> p_o, compiler::TNode<Object> p_v);
261 : compiler::TNode<Object> LoadSharedFunctionInfoNameOrScopeInfo(compiler::TNode<SharedFunctionInfo> p_o);
262 : void StoreSharedFunctionInfoNameOrScopeInfo(compiler::TNode<SharedFunctionInfo> p_o, compiler::TNode<Object> p_v);
263 : compiler::TNode<HeapObject> LoadSharedFunctionInfoOuterScopeInfoOrFeedbackMetadata(compiler::TNode<SharedFunctionInfo> p_o);
264 : void StoreSharedFunctionInfoOuterScopeInfoOrFeedbackMetadata(compiler::TNode<SharedFunctionInfo> p_o, compiler::TNode<HeapObject> p_v);
265 : compiler::TNode<HeapObject> LoadSharedFunctionInfoScriptOrDebugInfo(compiler::TNode<SharedFunctionInfo> p_o);
266 : void StoreSharedFunctionInfoScriptOrDebugInfo(compiler::TNode<SharedFunctionInfo> p_o, compiler::TNode<HeapObject> p_v);
267 : compiler::TNode<Int32T> LoadSharedFunctionInfoLength(compiler::TNode<SharedFunctionInfo> p_o);
268 : void StoreSharedFunctionInfoLength(compiler::TNode<SharedFunctionInfo> p_o, compiler::TNode<Int32T> p_v);
269 : compiler::TNode<Uint32T> LoadSharedFunctionInfoFormalParameterCount(compiler::TNode<SharedFunctionInfo> p_o);
270 : void StoreSharedFunctionInfoFormalParameterCount(compiler::TNode<SharedFunctionInfo> p_o, compiler::TNode<Uint32T> p_v);
271 : compiler::TNode<Int32T> LoadSharedFunctionInfoExpectedNofProperties(compiler::TNode<SharedFunctionInfo> p_o);
272 : void StoreSharedFunctionInfoExpectedNofProperties(compiler::TNode<SharedFunctionInfo> p_o, compiler::TNode<Int32T> p_v);
273 : compiler::TNode<Int32T> LoadSharedFunctionInfoBuiltinFunctionId(compiler::TNode<SharedFunctionInfo> p_o);
274 : void StoreSharedFunctionInfoBuiltinFunctionId(compiler::TNode<SharedFunctionInfo> p_o, compiler::TNode<Int32T> p_v);
275 : compiler::TNode<Int32T> LoadSharedFunctionInfoFunctionTokenOffset(compiler::TNode<SharedFunctionInfo> p_o);
276 : void StoreSharedFunctionInfoFunctionTokenOffset(compiler::TNode<SharedFunctionInfo> p_o, compiler::TNode<Int32T> p_v);
277 : compiler::TNode<Int32T> LoadSharedFunctionInfoFlags(compiler::TNode<SharedFunctionInfo> p_o);
278 : void StoreSharedFunctionInfoFlags(compiler::TNode<SharedFunctionInfo> p_o, compiler::TNode<Int32T> p_v);
279 : struct _ThisStructSharedFunctionInfoWithID {
280 : BaseBuiltinsFromDSLAssembler::_ThisStructSharedFunctionInfo _super;
281 : compiler::TNode<Int32T> unique_id;
282 :
283 : std::tuple<compiler::TNode<Map>, compiler::TNode<Object>, compiler::TNode<Object>, compiler::TNode<HeapObject>, compiler::TNode<HeapObject>, compiler::TNode<Int32T>, compiler::TNode<Uint32T>, compiler::TNode<Int32T>, compiler::TNode<Int32T>, compiler::TNode<Int32T>, compiler::TNode<Int32T>, compiler::TNode<Int32T>> Flatten() const {
284 : return std::tuple_cat(_super.Flatten(), std::make_tuple(unique_id));
285 : }
286 : };
287 : compiler::TNode<Int32T> LoadSharedFunctionInfoWithIDUniqueId(compiler::TNode<SharedFunctionInfoWithID> p_o);
288 : void StoreSharedFunctionInfoWithIDUniqueId(compiler::TNode<SharedFunctionInfoWithID> p_o, compiler::TNode<Int32T> p_v);
289 : struct _ThisStructJSFunction {
290 : BaseBuiltinsFromDSLAssembler::_ThisStructJSObject _super;
291 : compiler::TNode<SharedFunctionInfo> shared_function_info;
292 : compiler::TNode<Context> context;
293 : compiler::TNode<Smi> feedback_cell;
294 : compiler::TNode<Code> code;
295 : compiler::TNode<HeapObject> prototype_or_initial_map;
296 :
297 : std::tuple<compiler::TNode<Map>, compiler::TNode<Object>, compiler::TNode<FixedArrayBase>, compiler::TNode<SharedFunctionInfo>, compiler::TNode<Context>, compiler::TNode<Smi>, compiler::TNode<Code>, compiler::TNode<HeapObject>> Flatten() const {
298 : return std::tuple_cat(_super.Flatten(), std::make_tuple(shared_function_info), std::make_tuple(context), std::make_tuple(feedback_cell), std::make_tuple(code), std::make_tuple(prototype_or_initial_map));
299 : }
300 : };
301 : compiler::TNode<SharedFunctionInfo> LoadJSFunctionSharedFunctionInfo(compiler::TNode<JSFunction> p_o);
302 : void StoreJSFunctionSharedFunctionInfo(compiler::TNode<JSFunction> p_o, compiler::TNode<SharedFunctionInfo> p_v);
303 : compiler::TNode<Context> LoadJSFunctionContext(compiler::TNode<JSFunction> p_o);
304 : void StoreJSFunctionContext(compiler::TNode<JSFunction> p_o, compiler::TNode<Context> p_v);
305 : compiler::TNode<Smi> LoadJSFunctionFeedbackCell(compiler::TNode<JSFunction> p_o);
306 : void StoreJSFunctionFeedbackCell(compiler::TNode<JSFunction> p_o, compiler::TNode<Smi> p_v);
307 : compiler::TNode<Code> LoadJSFunctionCode(compiler::TNode<JSFunction> p_o);
308 : void StoreJSFunctionCode(compiler::TNode<JSFunction> p_o, compiler::TNode<Code> p_v);
309 : compiler::TNode<HeapObject> LoadJSFunctionPrototypeOrInitialMap(compiler::TNode<JSFunction> p_o);
310 : void StoreJSFunctionPrototypeOrInitialMap(compiler::TNode<JSFunction> p_o, compiler::TNode<HeapObject> p_v);
311 : struct _ThisStructJSBoundFunction {
312 : BaseBuiltinsFromDSLAssembler::_ThisStructJSObject _super;
313 : compiler::TNode<JSReceiver> bound_target_function;
314 : compiler::TNode<Object> bound_this;
315 : compiler::TNode<FixedArray> bound_arguments;
316 :
317 : std::tuple<compiler::TNode<Map>, compiler::TNode<Object>, compiler::TNode<FixedArrayBase>, compiler::TNode<JSReceiver>, compiler::TNode<Object>, compiler::TNode<FixedArray>> Flatten() const {
318 : return std::tuple_cat(_super.Flatten(), std::make_tuple(bound_target_function), std::make_tuple(bound_this), std::make_tuple(bound_arguments));
319 : }
320 : };
321 : compiler::TNode<JSReceiver> LoadJSBoundFunctionBoundTargetFunction(compiler::TNode<JSBoundFunction> p_o);
322 : void StoreJSBoundFunctionBoundTargetFunction(compiler::TNode<JSBoundFunction> p_o, compiler::TNode<JSReceiver> p_v);
323 : compiler::TNode<Object> LoadJSBoundFunctionBoundThis(compiler::TNode<JSBoundFunction> p_o);
324 : void StoreJSBoundFunctionBoundThis(compiler::TNode<JSBoundFunction> p_o, compiler::TNode<Object> p_v);
325 : compiler::TNode<FixedArray> LoadJSBoundFunctionBoundArguments(compiler::TNode<JSBoundFunction> p_o);
326 : void StoreJSBoundFunctionBoundArguments(compiler::TNode<JSBoundFunction> p_o, compiler::TNode<FixedArray> p_v);
327 : struct _ThisStructSloppyArgumentsElements {
328 : BaseBuiltinsFromDSLAssembler::_ThisStructFixedArray _super;
329 :
330 : std::tuple<compiler::TNode<Map>, compiler::TNode<Smi>> Flatten() const {
331 : return std::tuple_cat(_super.Flatten());
332 : }
333 : };
334 : struct _ThisStructJSArrayBuffer {
335 : BaseBuiltinsFromDSLAssembler::_ThisStructJSObject _super;
336 : compiler::TNode<UintPtrT> byte_length;
337 : compiler::TNode<RawPtrT> backing_store;
338 :
339 : std::tuple<compiler::TNode<Map>, compiler::TNode<Object>, compiler::TNode<FixedArrayBase>, compiler::TNode<UintPtrT>, compiler::TNode<RawPtrT>> Flatten() const {
340 : return std::tuple_cat(_super.Flatten(), std::make_tuple(byte_length), std::make_tuple(backing_store));
341 : }
342 : };
343 : compiler::TNode<UintPtrT> LoadJSArrayBufferByteLength(compiler::TNode<JSArrayBuffer> p_o);
344 : void StoreJSArrayBufferByteLength(compiler::TNode<JSArrayBuffer> p_o, compiler::TNode<UintPtrT> p_v);
345 : compiler::TNode<RawPtrT> LoadJSArrayBufferBackingStore(compiler::TNode<JSArrayBuffer> p_o);
346 : void StoreJSArrayBufferBackingStore(compiler::TNode<JSArrayBuffer> p_o, compiler::TNode<RawPtrT> p_v);
347 : struct _ThisStructJSArrayBufferView {
348 : BaseBuiltinsFromDSLAssembler::_ThisStructJSObject _super;
349 : compiler::TNode<JSArrayBuffer> buffer;
350 : compiler::TNode<UintPtrT> byte_offset;
351 : compiler::TNode<UintPtrT> byte_length;
352 :
353 : std::tuple<compiler::TNode<Map>, compiler::TNode<Object>, compiler::TNode<FixedArrayBase>, compiler::TNode<JSArrayBuffer>, compiler::TNode<UintPtrT>, compiler::TNode<UintPtrT>> Flatten() const {
354 : return std::tuple_cat(_super.Flatten(), std::make_tuple(buffer), std::make_tuple(byte_offset), std::make_tuple(byte_length));
355 : }
356 : };
357 : compiler::TNode<JSArrayBuffer> LoadJSArrayBufferViewBuffer(compiler::TNode<JSArrayBufferView> p_o);
358 : void StoreJSArrayBufferViewBuffer(compiler::TNode<JSArrayBufferView> p_o, compiler::TNode<JSArrayBuffer> p_v);
359 : compiler::TNode<UintPtrT> LoadJSArrayBufferViewByteOffset(compiler::TNode<JSArrayBufferView> p_o);
360 : void StoreJSArrayBufferViewByteOffset(compiler::TNode<JSArrayBufferView> p_o, compiler::TNode<UintPtrT> p_v);
361 : compiler::TNode<UintPtrT> LoadJSArrayBufferViewByteLength(compiler::TNode<JSArrayBufferView> p_o);
362 : void StoreJSArrayBufferViewByteLength(compiler::TNode<JSArrayBufferView> p_o, compiler::TNode<UintPtrT> p_v);
363 : struct _ThisStructJSTypedArray {
364 : BaseBuiltinsFromDSLAssembler::_ThisStructJSArrayBufferView _super;
365 :
366 : std::tuple<compiler::TNode<Map>, compiler::TNode<Object>, compiler::TNode<FixedArrayBase>, compiler::TNode<JSArrayBuffer>, compiler::TNode<UintPtrT>, compiler::TNode<UintPtrT>> Flatten() const {
367 : return std::tuple_cat(_super.Flatten());
368 : }
369 : };
370 : compiler::TNode<Uint32T> Convert8ATuint327ATuint8(compiler::TNode<Uint32T> p_i);
371 : compiler::TNode<Uint32T> Convert8ATuint328ATuint16(compiler::TNode<Uint32T> p_i);
372 : compiler::TNode<Uint32T> Convert8ATuint328ATuint31(compiler::TNode<Uint32T> p_i);
373 : compiler::TNode<JSFunction> UnsafeCast10JSFunction(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
374 : compiler::TNode<JSReceiver> UnsafeCast13ATConstructor(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
375 : compiler::TNode<Map> UnsafeCast5ATMap(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
376 : compiler::TNode<JSArray> Cast7JSArray(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
377 : compiler::TNode<JSArgumentsObjectWithLength> Cast27JSArgumentsObjectWithLength(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
378 : compiler::TNode<BoolT> Is13ATFastJSArray20UT5ATSmi10HeapObject(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
379 : void BranchIf13ATFastJSArray20UT5ATSmi10HeapObject(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_True, compiler::CodeAssemblerLabel* label_False);
380 : void BranchIfNot13ATFastJSArray20UT5ATSmi10HeapObject(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_True, compiler::CodeAssemblerLabel* label_False);
381 : void BranchIf20ATFastJSArrayForCopy20UT5ATSmi10HeapObject(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_True, compiler::CodeAssemblerLabel* label_False);
382 : compiler::TNode<BoolT> Is34ATFastJSArrayWithNoCustomIteration20UT5ATSmi10HeapObject(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
383 : compiler::TNode<Context> Cast9ATContext(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
384 : compiler::TNode<Object> UnsafeCast25UT9ATContext11ATFrameType(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
385 : compiler::TNode<HeapObject> Cast10HeapObject(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
386 : compiler::TNode<JSReceiver> Cast10JSReceiver(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
387 : compiler::TNode<JSReceiver> Cast41UT9ATJSProxy15JSBoundFunction10JSFunction(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
388 : compiler::TNode<JSArray> UnsafeCast7JSArray(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
389 : compiler::TNode<NumberDictionary> UnsafeCast18ATNumberDictionary(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
390 : compiler::TNode<FixedArray> UnsafeCast10FixedArray(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
391 : compiler::TNode<Smi> UnsafeCast5ATSmi(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
392 : compiler::TNode<FixedDoubleArray> UnsafeCast16FixedDoubleArray(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
393 : compiler::TNode<JSTypedArray> UnsafeCast12JSTypedArray(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
394 : compiler::TNode<String> Cast8ATString(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
395 : compiler::TNode<HeapObject> UnsafeCast10HeapObject(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
396 : compiler::TNode<JSReceiver> Cast13ATConstructor(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
397 : compiler::TNode<JSArray> Cast13ATFastJSArray(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
398 : compiler::TNode<FixedArray> Cast10FixedArray(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
399 : compiler::TNode<Context> UnsafeCast9ATContext(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
400 : compiler::TNode<JSArray> Cast20ATFastJSArrayForCopy(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
401 : compiler::TNode<Smi> Convert5ATSmi17ATconstexpr_int31(int31_t p_i);
402 : compiler::TNode<JSDataView> Cast12ATJSDataView(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
403 : compiler::TNode<JSArray> Cast34ATFastJSArrayWithNoCustomIteration(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
404 : compiler::TNode<BoolT> Is10JSReceiver20UT5ATSmi10HeapObject(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
405 : compiler::TNode<Map> Cast5ATMap(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
406 : compiler::TNode<JSArrayBuffer> Cast13JSArrayBuffer(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
407 : compiler::TNode<IntPtrT> Convert8ATintptr17ATconstexpr_int31(int31_t p_i);
408 : compiler::TNode<JSObject> UnsafeCast8JSObject(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
409 : compiler::TNode<HeapNumber> UnsafeCast12ATHeapNumber(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
410 : compiler::TNode<JSReceiver> UnsafeCast41UT9ATJSProxy15JSBoundFunction10JSFunction(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
411 : compiler::TNode<JSReceiver> UnsafeCast10JSReceiver(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
412 : compiler::TNode<HeapObject> Cast54UT9ATJSProxy11ATUndefined15JSBoundFunction10JSFunction(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_CastError);
413 : void BranchIf34ATFastJSArrayWithNoCustomIteration20UT5ATSmi10HeapObject(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_True, compiler::CodeAssemblerLabel* label_False);
414 : compiler::TNode<Number> UnsafeCast22UT12ATHeapNumber5ATSmi(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
415 : void BranchIf10JSReceiver20UT5ATSmi10HeapObject(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o, compiler::CodeAssemblerLabel* label_True, compiler::CodeAssemblerLabel* label_False);
416 : compiler::TNode<FixedTypedArrayBase> UnsafeCast21ATFixedTypedArrayBase(compiler::TNode<Context> p_context, compiler::TNode<Object> p_o);
417 : private:
418 : compiler::CodeAssemblerState* const state_;
419 : compiler::CodeAssembler ca_;};
420 :
421 : } // namespace internal
422 : } // namespace v8
423 :
424 : #endif // V8_TORQUE_BASE_FROM_DSL_BASE_H__
|