Lines Matching full:compiler

10 #include "src/compiler/code-assembler.h"
43 // without modifying files in the compiler directory (and requiring a review
44 // from a compiler directory OWNER).
45 class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler {
81 compiler::Node* UntagParameter(compiler::Node* value, ParameterMode mode) { in UntagParameter()
86 compiler::Node* TagParameter(compiler::Node* value, ParameterMode mode) { in TagParameter()
91 compiler::Node* NoContextConstant();
92 #define HEAP_CONSTANT_ACCESSOR(rootName, name) compiler::Node* name##Constant();
97 compiler::Node* Is##name(compiler::Node* value);
101 compiler::Node* HashSeed();
102 compiler::Node* StaleRegisterConstant();
104 compiler::Node* IntPtrOrSmiConstant(int value, ParameterMode mode);
106 compiler::Node* IntPtrAddFoldConstants(compiler::Node* left,
107 compiler::Node* right);
108 compiler::Node* IntPtrSubFoldConstants(compiler::Node* left,
109 compiler::Node* right);
111 compiler::Node* IntPtrRoundUpToPowerOfTwo32(compiler::Node* value);
112 compiler::Node* IntPtrMax(compiler::Node* left, compiler::Node* right);
115 compiler::Node* Float64Ceil(compiler::Node* x);
116 compiler::Node* Float64Floor(compiler::Node* x);
117 compiler::Node* Float64Round(compiler::Node* x);
118 compiler::Node* Float64RoundToEven(compiler::Node* x);
119 compiler::Node* Float64Trunc(compiler::Node* x);
122 compiler::Node* SmiTag(compiler::Node* value);
124 compiler::Node* SmiUntag(compiler::Node* value);
127 compiler::Node* SmiToFloat64(compiler::Node* value);
128 compiler::Node* SmiFromWord(compiler::Node* value) { return SmiTag(value); } in SmiFromWord()
129 compiler::Node* SmiFromWord32(compiler::Node* value);
130 compiler::Node* SmiToWord(compiler::Node* value) { return SmiUntag(value); } in SmiToWord()
131 compiler::Node* SmiToWord32(compiler::Node* value);
134 compiler::Node* SmiAdd(compiler::Node* a, compiler::Node* b);
135 compiler::Node* SmiSub(compiler::Node* a, compiler::Node* b);
136 compiler::Node* SmiEqual(compiler::Node* a, compiler::Node* b);
137 compiler::Node* SmiAbove(compiler::Node* a, compiler::Node* b);
138 compiler::Node* SmiAboveOrEqual(compiler::Node* a, compiler::Node* b);
139 compiler::Node* SmiBelow(compiler::Node* a, compiler::Node* b);
140 compiler::Node* SmiLessThan(compiler::Node* a, compiler::Node* b);
141 compiler::Node* SmiLessThanOrEqual(compiler::Node* a, compiler::Node* b);
142 compiler::Node* SmiMax(compiler::Node* a, compiler::Node* b);
143 compiler::Node* SmiMin(compiler::Node* a, compiler::Node* b);
145 compiler::Node* SmiMod(compiler::Node* a, compiler::Node* b);
147 compiler::Node* SmiMul(compiler::Node* a, compiler::Node* b);
148 compiler::Node* SmiOr(compiler::Node* a, compiler::Node* b) { in SmiOr()
154 compiler::Node* NumberInc(compiler::Node* value);
157 compiler::Node* Allocate(compiler::Node* size, AllocationFlags flags = kNone);
158 compiler::Node* Allocate(int size, AllocationFlags flags = kNone);
159 compiler::Node* InnerAllocate(compiler::Node* previous, int offset);
160 compiler::Node* InnerAllocate(compiler::Node* previous,
161 compiler::Node* offset);
162 compiler::Node* IsRegularHeapObjectSize(compiler::Node* size);
164 typedef std::function<compiler::Node*()> ConditionBody;
169 compiler::Node* TaggedIsSmi(compiler::Node* a);
171 compiler::Node* WordIsPositiveSmi(compiler::Node* a);
173 compiler::Node* WordIsWordAligned(compiler::Node* word);
174 compiler::Node* WordIsPowerOfTwo(compiler::Node* value);
176 void BranchIfSmiEqual(compiler::Node* a, compiler::Node* b, Label* if_true, in BranchIfSmiEqual()
181 void BranchIfSmiLessThan(compiler::Node* a, compiler::Node* b, Label* if_true, in BranchIfSmiLessThan()
186 void BranchIfSmiLessThanOrEqual(compiler::Node* a, compiler::Node* b, in BranchIfSmiLessThanOrEqual()
191 void BranchIfFloat64IsNaN(compiler::Node* value, Label* if_true, in BranchIfFloat64IsNaN()
198 void BranchIfToBooleanIsTrue(compiler::Node* value, Label* if_true,
201 void BranchIfSimd128Equal(compiler::Node* lhs, compiler::Node* lhs_map,
202 compiler::Node* rhs, compiler::Node* rhs_map,
204 void BranchIfSimd128Equal(compiler::Node* lhs, compiler::Node* rhs, in BranchIfSimd128Equal()
210 void BranchIfJSReceiver(compiler::Node* object, Label* if_true,
212 void BranchIfJSObject(compiler::Node* object, Label* if_true,
214 void BranchIfFastJSArray(compiler::Node* object, compiler::Node* context,
218 compiler::Node* LoadFromFrame(int offset,
221 compiler::Node* LoadFromParentFrame(
225 compiler::Node* LoadBufferObject(compiler::Node* buffer, int offset,
228 compiler::Node* LoadObjectField(compiler::Node* object, int offset,
230 compiler::Node* LoadObjectField(compiler::Node* object,
231 compiler::Node* offset,
234 compiler::Node* LoadAndUntagObjectField(compiler::Node* object, int offset);
236 compiler::Node* LoadAndUntagToWord32ObjectField(compiler::Node* object,
239 compiler::Node* LoadAndUntagSmi(compiler::Node* base, int index);
241 compiler::Node* LoadAndUntagToWord32Root(Heap::RootListIndex root_index);
244 compiler::Node* LoadHeapNumberValue(compiler::Node* object);
246 compiler::Node* LoadMap(compiler::Node* object);
248 compiler::Node* LoadInstanceType(compiler::Node* object);
250 compiler::Node* HasInstanceType(compiler::Node* object, InstanceType type);
252 compiler::Node* LoadProperties(compiler::Node* object);
254 compiler::Node* LoadElements(compiler::Node* object);
256 compiler::Node* LoadJSArrayLength(compiler::Node* array);
258 compiler::Node* LoadFixedArrayBaseLength(compiler::Node* array);
260 compiler::Node* LoadAndUntagFixedArrayBaseLength(compiler::Node* array);
262 compiler::Node* LoadMapBitField(compiler::Node* map);
264 compiler::Node* LoadMapBitField2(compiler::Node* map);
266 compiler::Node* LoadMapBitField3(compiler::Node* map);
268 compiler::Node* LoadMapInstanceType(compiler::Node* map);
270 compiler::Node* LoadMapElementsKind(compiler::Node* map);
272 compiler::Node* LoadMapDescriptors(compiler::Node* map);
274 compiler::Node* LoadMapPrototype(compiler::Node* map);
277 compiler::Node* LoadMapPrototypeInfo(compiler::Node* map,
280 compiler::Node* LoadMapInstanceSize(compiler::Node* map);
282 compiler::Node* LoadMapInobjectProperties(compiler::Node* map);
284 compiler::Node* LoadMapConstructorFunctionIndex(compiler::Node* map);
286 compiler::Node* LoadMapConstructor(compiler::Node* map);
288 compiler::Node* IsDictionaryMap(compiler::Node* map);
291 compiler::Node* LoadNameHashField(compiler::Node* name);
295 compiler::Node* LoadNameHash(compiler::Node* name,
299 compiler::Node* LoadStringLength(compiler::Node* object);
301 compiler::Node* LoadJSValueValue(compiler::Node* object);
303 compiler::Node* LoadWeakCellValueUnchecked(compiler::Node* weak_cell);
304 compiler::Node* LoadWeakCellValue(compiler::Node* weak_cell,
308 compiler::Node* LoadFixedArrayElement(
309 compiler::Node* object, compiler::Node* index, int additional_offset = 0,
312 compiler::Node* LoadAndUntagToWord32FixedArrayElement(
313 compiler::Node* object, compiler::Node* index, int additional_offset = 0,
316 compiler::Node* LoadFixedDoubleArrayElement(
317 compiler::Node* object, compiler::Node* index, MachineType machine_type,
325 compiler::Node* LoadDoubleWithHoleCheck(
326 compiler::Node* base, compiler::Node* offset, Label* if_hole,
328 compiler::Node* LoadFixedTypedArrayElement(
329 compiler::Node* data_pointer, compiler::Node* index_node,
334 compiler::Node* LoadContextElement(compiler::Node* context, int slot_index);
335 compiler::Node* LoadContextElement(compiler::Node* context,
336 compiler::Node* slot_index);
337 compiler::Node* StoreContextElement(compiler::Node* context, int slot_index,
338 compiler::Node* value);
339 compiler::Node* StoreContextElement(compiler::Node* context,
340 compiler::Node* slot_index,
341 compiler::Node* value);
342 compiler::Node* LoadNativeContext(compiler::Node* context);
344 compiler::Node* LoadJSArrayElementsMap(ElementsKind kind,
345 compiler::Node* native_context);
348 compiler::Node* StoreHeapNumberValue(compiler::Node* object,
349 compiler::Node* value);
351 compiler::Node* StoreObjectField(
352 compiler::Node* object, int offset, compiler::Node* value);
353 compiler::Node* StoreObjectField(compiler::Node* object,
354 compiler::Node* offset,
355 compiler::Node* value);
356 compiler::Node* StoreObjectFieldNoWriteBarrier(
357 compiler::Node* object, int offset, compiler::Node* value,
359 compiler::Node* StoreObjectFieldNoWriteBarrier(
360 compiler::Node* object, compiler::Node* offset, compiler::Node* value,
363 compiler::Node* StoreMapNoWriteBarrier(compiler::Node* object,
364 compiler::Node* map);
365 compiler::Node* StoreObjectFieldRoot(compiler::Node* object, int offset,
368 compiler::Node* StoreFixedArrayElement(
369 compiler::Node* object, int index, compiler::Node* value,
376 compiler::Node* StoreFixedArrayElement(
377 compiler::Node* object, compiler::Node* index, compiler::Node* value,
381 compiler::Node* StoreFixedDoubleArrayElement(
382 compiler::Node* object, compiler::Node* index, compiler::Node* value,
385 void StoreFieldsNoWriteBarrier(compiler::Node* start_address,
386 compiler::Node* end_address,
387 compiler::Node* value);
390 compiler::Node* AllocateHeapNumber(MutableMode mode = IMMUTABLE);
392 compiler::Node* AllocateHeapNumberWithValue(compiler::Node* value,
395 compiler::Node* AllocateSeqOneByteString(int length,
397 compiler::Node* AllocateSeqOneByteString(
398 compiler::Node* context, compiler::Node* length,
401 compiler::Node* AllocateSeqTwoByteString(int length,
403 compiler::Node* AllocateSeqTwoByteString(
404 compiler::Node* context, compiler::Node* length,
409 compiler::Node* AllocateSlicedOneByteString(compiler::Node* length,
410 compiler::Node* parent,
411 compiler::Node* offset);
414 compiler::Node* AllocateSlicedTwoByteString(compiler::Node* length,
415 compiler::Node* parent,
416 compiler::Node* offset);
421 compiler::Node* AllocateOneByteConsString(compiler::Node* length,
422 compiler::Node* first,
423 compiler::Node* second,
428 compiler::Node* AllocateTwoByteConsString(compiler::Node* length,
429 compiler::Node* first,
430 compiler::Node* second,
435 compiler::Node* NewConsString(compiler::Node* context, compiler::Node* length,
436 compiler::Node* left, compiler::Node* right,
443 compiler::Node* AllocateRegExpResult(compiler::Node* context,
444 compiler::Node* length,
445 compiler::Node* index,
446 compiler::Node* input);
448 compiler::Node* AllocateNameDictionary(int capacity);
449 compiler::Node* AllocateNameDictionary(compiler::Node* capacity);
451 compiler::Node* AllocateJSObjectFromMap(compiler::Node* map,
452 compiler::Node* properties = nullptr,
453 compiler::Node* elements = nullptr);
455 void InitializeJSObjectFromMap(compiler::Node* object, compiler::Node* map,
456 compiler::Node* size,
457 compiler::Node* properties = nullptr,
458 compiler::Node* elements = nullptr);
460 void InitializeJSObjectBody(compiler::Node* object, compiler::Node* map,
461 compiler::Node* size,
465 compiler::Node* AllocateUninitializedJSArrayWithoutElements(
466 ElementsKind kind, compiler::Node* array_map, compiler::Node* length,
467 compiler::Node* allocation_site);
471 std::pair<compiler::Node*, compiler::Node*>
473 ElementsKind kind, compiler::Node* array_map, compiler::Node* length,
474 compiler::Node* allocation_site, compiler::Node* capacity,
478 compiler::Node* AllocateJSArray(
479 ElementsKind kind, compiler::Node* array_map, compiler::Node* capacity,
480 compiler::Node* length, compiler::Node* allocation_site = nullptr,
483 compiler::Node* AllocateFixedArray(ElementsKind kind,
484 compiler::Node* capacity,
489 compiler::Node* CreateArrayIterator(compiler::Node* array,
490 compiler::Node* array_map,
491 compiler::Node* array_type,
492 compiler::Node* context,
495 compiler::Node* AllocateJSArrayIterator(compiler::Node* array,
496 compiler::Node* array_map,
497 compiler::Node* map);
499 void FillFixedArrayWithValue(ElementsKind kind, compiler::Node* array,
500 compiler::Node* from_index,
501 compiler::Node* to_index,
508 ElementsKind kind, compiler::Node* from_array, compiler::Node* to_array,
509 compiler::Node* length,
519 ElementsKind from_kind, compiler::Node* from_array, ElementsKind to_kind,
520 compiler::Node* to_array, compiler::Node* element_count,
521 compiler::Node* capacity,
533 void CopyStringCharacters(compiler::Node* from_string,
534 compiler::Node* to_string,
535 compiler::Node* from_index,
536 compiler::Node* to_index,
537 compiler::Node* character_count,
545 compiler::Node* LoadElementAndPrepareForStore(compiler::Node* array,
546 compiler::Node* offset,
551 compiler::Node* CalculateNewElementsCapacity(
552 compiler::Node* old_capacity, ParameterMode mode = INTEGER_PARAMETERS);
556 compiler::Node* TryGrowElementsCapacity(compiler::Node* object,
557 compiler::Node* elements,
559 compiler::Node* key, Label* bailout);
564 compiler::Node* TryGrowElementsCapacity(compiler::Node* object,
565 compiler::Node* elements,
567 compiler::Node* key,
568 compiler::Node* capacity,
572 compiler::Node* GrowElementsCapacity(
573 compiler::Node* object, compiler::Node* elements, ElementsKind from_kind,
574 ElementsKind to_kind, compiler::Node* capacity,
575 compiler::Node* new_capacity, ParameterMode mode, Label* bailout);
578 void InitializeAllocationMemento(compiler::Node* base_allocation,
580 compiler::Node* allocation_site);
582 compiler::Node* TryTaggedToFloat64(compiler::Node* value,
584 compiler::Node* TruncateTaggedToFloat64(compiler::Node* context,
585 compiler::Node* value);
586 compiler::Node* TruncateTaggedToWord32(compiler::Node* context,
587 compiler::Node* value);
589 compiler::Node* TruncateHeapNumberValueToWord32(compiler::Node* object);
592 compiler::Node* ChangeFloat64ToTagged(compiler::Node* value);
593 compiler::Node* ChangeInt32ToTagged(compiler::Node* value);
594 compiler::Node* ChangeUint32ToTagged(compiler::Node* value);
599 compiler::Node* ToThisString(compiler::Node* context, compiler::Node* value,
604 compiler::Node* ToThisValue(compiler::Node* context, compiler::Node* value,
610 compiler::Node* ThrowIfNotInstanceType(compiler::Node* context,
611 compiler::Node* value,
618 compiler::Node* IsSpecialReceiverMap(compiler::Node* map);
619 compiler::Node* IsSpecialReceiverInstanceType(compiler::Node* instance_type);
620 compiler::Node* IsStringInstanceType(compiler::Node* instance_type);
621 compiler::Node* IsString(compiler::Node* object);
622 compiler::Node* IsJSObject(compiler::Node* object);
623 compiler::Node* IsJSGlobalProxy(compiler::Node* object);
624 compiler::Node* IsJSReceiverInstanceType(compiler::Node* instance_type);
625 compiler::Node* IsJSReceiver(compiler::Node* object);
626 compiler::Node* IsMap(compiler::Node* object);
627 compiler::Node* IsCallableMap(compiler::Node* map);
628 compiler::Node* IsName(compiler::Node* object);
629 compiler::Node* IsJSValue(compiler::Node* object);
630 compiler::Node* IsJSArray(compiler::Node* object);
631 compiler::Node* IsNativeContext(compiler::Node* object);
632 compiler::Node* IsWeakCell(compiler::Node* object);
633 compiler::Node* IsFixedDoubleArray(compiler::Node* object);
634 compiler::Node* IsHashTable(compiler::Node* object);
635 compiler::Node* IsDictionary(compiler::Node* object);
636 compiler::Node* IsUnseededNumberDictionary(compiler::Node* object);
639 compiler::Node* IsFastElementsKind(compiler::Node* elements_kind);
640 compiler::Node* IsHoleyFastElementsKind(compiler::Node* elements_kind);
644 compiler::Node* StringCharCodeAt(compiler::Node* string,
645 compiler::Node* smi_index);
647 compiler::Node* StringFromCharCode(compiler::Node* code);
650 compiler::Node* SubString(compiler::Node* context, compiler::Node* string,
651 compiler::Node* from, compiler::Node* to);
654 compiler::Node* StringAdd(compiler::Node* context, compiler::Node* first,
655 compiler::Node* second,
662 compiler::Node* StringIndexOfChar(compiler::Node* context,
663 compiler::Node* string,
664 compiler::Node* needle_char,
665 compiler::Node* from);
667 compiler::Node* StringFromCodePoint(compiler::Node* codepoint,
672 compiler::Node* StringToNumber(compiler::Node* context,
673 compiler::Node* input);
674 compiler::Node* NumberToString(compiler::Node* context,
675 compiler::Node* input);
677 compiler::Node* ToName(compiler::Node* context, compiler::Node* input);
679 compiler::Node* NonNumberToNumber(compiler::Node* context,
680 compiler::Node* input);
682 compiler::Node* ToNumber(compiler::Node* context, compiler::Node* input);
685 compiler::Node* ToString(compiler::Node* context, compiler::Node* input);
688 compiler::Node* JSReceiverToPrimitive(compiler::Node* context,
689 compiler::Node* input);
692 compiler::Node* FlattenString(compiler::Node* string);
700 compiler::Node* ToInteger(compiler::Node* context, compiler::Node* input,
706 compiler::Node* DecodeWord32(compiler::Node* word32) { in DecodeWord32()
713 compiler::Node* DecodeWord(compiler::Node* word) { in DecodeWord()
720 compiler::Node* DecodeWordFromWord32(compiler::Node* word32) { in DecodeWordFromWord32()
725 compiler::Node* DecodeWord32(compiler::Node* word32, uint32_t shift,
729 compiler::Node* DecodeWord(compiler::Node* word, uint32_t shift,
734 compiler::Node* IsSetWord32(compiler::Node* word32) { in IsSetWord32()
739 compiler::Node* IsSetWord32(compiler::Node* word32, uint32_t mask) { in IsSetWord32()
746 compiler::Node* IsSetWord(compiler::Node* word) { in IsSetWord()
761 void TryToName(compiler::Node* key, Label* if_keyisindex, Variable* var_index,
767 compiler::Node* EntryToIndex(compiler::Node* entry, int field_index);
769 compiler::Node* EntryToIndex(compiler::Node* entry) { in EntryToIndex()
773 compiler::Node* HashTableComputeCapacity(compiler::Node* at_least_space_for);
781 void NameDictionaryLookup(compiler::Node* dictionary,
782 compiler::Node* unique_name, Label* if_found,
786 compiler::Node* ComputeIntegerHash(compiler::Node* key, compiler::Node* seed);
789 void NumberDictionaryLookup(compiler::Node* dictionary,
790 compiler::Node* intptr_index, Label* if_found,
794 void TryHasOwnProperty(compiler::Node* object, compiler::Node* map,
795 compiler::Node* instance_type,
796 compiler::Node* unique_name, Label* if_found,
802 void TryGetOwnProperty(compiler::Node* context, compiler::Node* receiver,
803 compiler::Node* object, compiler::Node* map,
804 compiler::Node* instance_type,
805 compiler::Node* unique_name, Label* if_found,
809 void LoadPropertyFromFastObject(compiler::Node* object, compiler::Node* map,
810 compiler::Node* descriptors,
811 compiler::Node* name_index,
814 void LoadPropertyFromNameDictionary(compiler::Node* dictionary,
815 compiler::Node* entry,
819 void LoadPropertyFromGlobalDictionary(compiler::Node* dictionary,
820 compiler::Node* entry,
836 void TryLookupProperty(compiler::Node* object, compiler::Node* map,
837 compiler::Node* instance_type,
838 compiler::Node* unique_name, Label* if_found_fast,
843 void TryLookupElement(compiler::Node* object, compiler::Node* map,
844 compiler::Node* instance_type,
845 compiler::Node* intptr_index, Label* if_found,
851 typedef std::function<void(compiler::Node* receiver, compiler::Node* holder,
852 compiler::Node* map, compiler::Node* instance_type,
853 compiler::Node* key, Label* next_holder,
863 void TryPrototypeChainLookup(compiler::Node* receiver, compiler::Node* key,
870 compiler::Node* OrdinaryHasInstance(compiler::Node* context,
871 compiler::Node* callable,
872 compiler::Node* object);
876 LoadICParameters(compiler::Node* context, compiler::Node* receiver, in LoadICParameters()
877 compiler::Node* name, compiler::Node* slot, in LoadICParameters()
878 compiler::Node* vector) in LoadICParameters()
885 compiler::Node* context;
886 compiler::Node* receiver;
887 compiler::Node* name;
888 compiler::Node* slot;
889 compiler::Node* vector;
893 StoreICParameters(compiler::Node* context, compiler::Node* receiver, in StoreICParameters()
894 compiler::Node* name, compiler::Node* value, in StoreICParameters()
895 compiler::Node* slot, compiler::Node* vector) in StoreICParameters()
898 compiler::Node* value;
902 compiler::Node* LoadTypeFeedbackVectorForStub();
905 void UpdateFeedback(compiler::Node* feedback,
906 compiler::Node* type_feedback_vector,
907 compiler::Node* slot_id);
909 compiler::Node* LoadReceiverMap(compiler::Node* receiver);
912 compiler::Node* TryMonomorphicCase(compiler::Node* slot,
913 compiler::Node* vector,
914 compiler::Node* receiver_map,
917 void HandlePolymorphicCase(compiler::Node* receiver_map,
918 compiler::Node* feedback, Label* if_handler,
921 void HandleKeyedStorePolymorphicCase(compiler::Node* receiver_map,
922 compiler::Node* feedback,
928 compiler::Node* StubCachePrimaryOffset(compiler::Node* name,
929 compiler::Node* map);
931 compiler::Node* StubCacheSecondaryOffset(compiler::Node* name,
932 compiler::Node* seed);
939 compiler::Node* entry_offset,
940 compiler::Node* name, compiler::Node* map,
944 void TryProbeStubCache(StubCache* stub_cache, compiler::Node* receiver,
945 compiler::Node* name, Label* if_handler,
949 void ExtendPropertiesBackingStore(compiler::Node* object);
951 compiler::Node* PrepareValueForWrite(compiler::Node* value,
955 void StoreNamedField(compiler::Node* object, FieldIndex index,
956 Representation representation, compiler::Node* value,
959 void StoreNamedField(compiler::Node* object, compiler::Node* offset,
961 compiler::Node* value, bool transition_to_field);
964 compiler::Node* LoadKeyedSloppyArguments(compiler::Node* receiver, in LoadKeyedSloppyArguments()
965 compiler::Node* key, in LoadKeyedSloppyArguments()
971 void StoreKeyedSloppyArguments(compiler::Node* receiver, compiler::Node* key, in StoreKeyedSloppyArguments()
972 compiler::Node* value, Label* bailout) { in StoreKeyedSloppyArguments()
978 compiler::Node* LoadScriptContext(compiler::Node* context, int context_index);
980 compiler::Node* Int32ToUint8Clamped(compiler::Node* int32_value);
981 compiler::Node* Float64ToUint8Clamped(compiler::Node* float64_value);
983 compiler::Node* PrepareValueForWriteToTypedArray(compiler::Node* key,
988 void StoreElement(compiler::Node* elements, ElementsKind kind,
989 compiler::Node* index, compiler::Node* value,
992 void EmitElementStore(compiler::Node* object, compiler::Node* key,
993 compiler::Node* value, bool is_jsarray,
997 compiler::Node* CheckForCapacityGrow(compiler::Node* object,
998 compiler::Node* elements,
1000 compiler::Node* length,
1001 compiler::Node* key, ParameterMode mode,
1004 compiler::Node* CopyElementsOnWrite(compiler::Node* object,
1005 compiler::Node* elements,
1006 ElementsKind kind, compiler::Node* length,
1010 void LoadICProtoArray(const LoadICParameters* p, compiler::Node* handler);
1017 void TransitionElementsKind(compiler::Node* object, compiler::Node* map,
1021 void TrapAllocationMemento(compiler::Node* object, Label* memento_found);
1023 compiler::Node* PageFromAddress(compiler::Node* address);
1026 compiler::Node* EnumLength(compiler::Node* map);
1030 void CheckEnumCache(compiler::Node* receiver,
1036 compiler::Node* CreateWeakCellInFeedbackVector(
1037 compiler::Node* feedback_vector, compiler::Node* slot,
1038 compiler::Node* value);
1041 compiler::Node* CreateAllocationSiteInFeedbackVector(
1042 compiler::Node* feedback_vector, compiler::Node* slot);
1048 compiler::Node* start_index, compiler::Node* end_index,
1049 std::function<void(CodeStubAssembler* assembler, compiler::Node* index)>
1054 MachineRepresentation index_rep, compiler::Node* start_index,
1055 compiler::Node* end_index,
1056 std::function<void(CodeStubAssembler* assembler, compiler::Node* index)>
1066 compiler::Node* fixed_array, ElementsKind kind,
1067 compiler::Node* first_element_inclusive,
1068 compiler::Node* last_element_exclusive,
1070 compiler::Node* fixed_array, compiler::Node* offset)>
1075 compiler::Node* GetArrayAllocationSize(compiler::Node* element_count, in GetArrayAllocationSize()
1081 compiler::Node* GetFixedArrayAllocationSize(compiler::Node* element_count, in GetFixedArrayAllocationSize()
1095 compiler::Node* RelationalComparison(RelationalComparisonMode mode,
1096 compiler::Node* lhs, compiler::Node* rhs,
1097 compiler::Node* context);
1100 compiler::Node* lhs,
1101 compiler::Node* rhs, Label* if_true,
1104 void GotoUnlessNumberLessThan(compiler::Node* lhs, compiler::Node* rhs,
1109 compiler::Node* Equal(ResultMode mode, compiler::Node* lhs,
1110 compiler::Node* rhs, compiler::Node* context);
1112 compiler::Node* StrictEqual(ResultMode mode, compiler::Node* lhs,
1113 compiler::Node* rhs, compiler::Node* context);
1120 compiler::Node* SameValue(compiler::Node* lhs, compiler::Node* rhs,
1121 compiler::Node* context);
1123 compiler::Node* HasProperty(
1124 compiler::Node* object, compiler::Node* key, compiler::Node* context,
1126 compiler::Node* ForInFilter(compiler::Node* key, compiler::Node* object,
1127 compiler::Node* context);
1129 compiler::Node* Typeof(compiler::Node* value, compiler::Node* context);
1131 compiler::Node* InstanceOf(compiler::Node* object, compiler::Node* callable,
1132 compiler::Node* context);
1135 compiler::Node* IsDetachedBuffer(compiler::Node* buffer);
1137 compiler::Node* ElementOffsetFromIndex(compiler::Node* index,
1143 compiler::Node* handler, Label* miss);
1150 void DescriptorLookupLinear(compiler::Node* unique_name,
1151 compiler::Node* descriptors, compiler::Node* nof,
1154 compiler::Node* CallGetterIfAccessor(compiler::Node* value,
1155 compiler::Node* details,
1156 compiler::Node* context,
1157 compiler::Node* receiver,
1161 const LoadICParameters* p, compiler::Node* handler, Label* miss,
1165 compiler::Node* holder,
1166 compiler::Node* smi_handler, Label* miss,
1170 compiler::Node* handler, Variable* var_holder,
1174 compiler::Node* EmitLoadICProtoArrayCheck(const LoadICParameters* p,
1175 compiler::Node* handler,
1176 compiler::Node* handler_length,
1177 compiler::Node* handler_flags,
1180 void CheckPrototype(compiler::Node* prototype_cell, compiler::Node* name,
1183 void NameDictionaryNegativeLookup(compiler::Node* object,
1184 compiler::Node* name, Label* miss);
1188 void HandleStoreFieldAndReturn(compiler::Node* handler_word,
1189 compiler::Node* holder,
1191 compiler::Node* value,
1192 compiler::Node* transition, Label* miss);
1196 void HandleStoreICSmiHandlerCase(compiler::Node* handler_word,
1197 compiler::Node* holder,
1198 compiler::Node* value,
1199 compiler::Node* transition, Label* miss);
1202 compiler::Node* handler, Label* miss);
1204 compiler::Node* TryToIntptr(compiler::Node* key, Label* miss);
1205 void EmitFastElementsBoundsCheck(compiler::Node* object,
1206 compiler::Node* elements,
1207 compiler::Node* intptr_index,
1208 compiler::Node* is_jsarray_condition,
1210 void EmitElementLoad(compiler::Node* object, compiler::Node* elements,
1211 compiler::Node* elements_kind, compiler::Node* key,
1212 compiler::Node* is_jsarray_condition, Label* if_hole,
1216 void BranchIfPrototypesHaveNoElements(compiler::Node* receiver_map,
1220 compiler::Node* AllocateRawAligned(compiler::Node* size_in_bytes,
1222 compiler::Node* top_address,
1223 compiler::Node* limit_address);
1224 compiler::Node* AllocateRawUnaligned(compiler::Node* size_in_bytes,
1226 compiler::Node* top_adddress,
1227 compiler::Node* limit_address);
1230 compiler::Node* AllocateUninitializedJSArray(ElementsKind kind,
1231 compiler::Node* array_map,
1232 compiler::Node* length,
1233 compiler::Node* allocation_site,
1234 compiler::Node* size_in_bytes);
1236 compiler::Node* SmiShiftBitsConstant();
1240 compiler::Node* EmitKeyedSloppyArguments(compiler::Node* receiver,
1241 compiler::Node* key,
1242 compiler::Node* value,
1245 compiler::Node* AllocateSlicedString(Heap::RootListIndex map_root_index,
1246 compiler::Node* length,
1247 compiler::Node* parent,
1248 compiler::Node* offset);
1250 compiler::Node* AllocateConsString(Heap::RootListIndex map_root_index,
1251 compiler::Node* length,
1252 compiler::Node* first,
1253 compiler::Node* second,
1263 CodeStubArguments(CodeStubAssembler* assembler, compiler::Node* argc,
1267 compiler::Node* GetReceiver();
1270 compiler::Node* AtIndex(compiler::Node* index,
1274 compiler::Node* AtIndex(int index);
1276 typedef std::function<void(CodeStubAssembler* assembler, compiler::Node* arg)>
1280 void ForEach(ForEachBodyFunction body, compiler::Node* first = nullptr,
1281 compiler::Node* last = nullptr,
1290 ForEachBodyFunction body, compiler::Node* first = nullptr,
1291 compiler::Node* last = nullptr,
1295 void PopAndReturn(compiler::Node* value);
1298 compiler::Node* GetArguments();
1301 compiler::Node* argc_;
1302 compiler::Node* arguments_;
1303 compiler::Node* fp_;