Lines Matching refs:TNode

42 TNode<Smi> RegExpBuiltinsAssembler::SmiZero() { return SmiConstant(0); }
44 TNode<IntPtrT> RegExpBuiltinsAssembler::IntPtrZero() {
50 TNode<RawPtrT> RegExpBuiltinsAssembler::LoadCodeObjectEntry(TNode<CodeT> code) {
60 TNode<Int32T> builtin_index =
75 TNode<IntPtrT> builtin_entry_offset_from_isolate_root =
94 TNode<JSRegExpResult> RegExpBuiltinsAssembler::AllocateRegExpResult(
95 TNode<Context> context, TNode<Smi> length, TNode<Smi> index,
96 TNode<String> input, TNode<JSRegExp> regexp, TNode<Number> last_index,
97 TNode<BoolT> has_indices, TNode<FixedArray>* elements_out) {
106 base::Optional<TNode<AllocationSite>> no_gc_site = base::nullopt;
107 TNode<IntPtrT> length_intptr = SmiUntag(length);
116 TNode<Map> map = CAST(LoadContextElement(LoadNativeContext(context),
127 TNode<Map> map =
142 TNode<JSRegExpResult> result =
146 TNode<Oddball> undefined_value = UncheckedCast<Oddball>(
162 TNode<Smi> last_index_smi = Select<Smi>(
191 TNode<Object> RegExpBuiltinsAssembler::FastLoadLastIndexBeforeSmiCheck(
192 TNode<JSRegExp> regexp) {
199 TNode<Object> RegExpBuiltinsAssembler::SlowLoadLastIndex(TNode<Context> context,
200 TNode<Object> regexp) {
206 void RegExpBuiltinsAssembler::FastStoreLastIndex(TNode<JSRegExp> regexp,
207 TNode<Smi> value) {
214 void RegExpBuiltinsAssembler::SlowStoreLastIndex(TNode<Context> context,
215 TNode<Object> regexp,
216 TNode<Object> value) {
217 TNode<String> name = HeapConstant(isolate()->factory()->lastIndex_string());
221 TNode<JSRegExpResult> RegExpBuiltinsAssembler::ConstructNewResultFromMatchInfo(
222 TNode<Context> context, TNode<JSRegExp> regexp,
223 TNode<RegExpMatchInfo> match_info, TNode<String> string,
224 TNode<Number> last_index) {
227 TNode<IntPtrT> num_indices = SmiUntag(CAST(UnsafeLoadFixedArrayElement(
229 TNode<Smi> num_results = SmiTag(WordShr(num_indices, 1));
230 TNode<Smi> start = CAST(UnsafeLoadFixedArrayElement(
232 TNode<Smi> end = CAST(UnsafeLoadFixedArrayElement(
238 TNode<String> first =
242 const TNode<Smi> flags =
244 const TNode<BoolT> has_indices = IsSetSmi(flags, JSRegExp::kHasIndices);
245 TNode<FixedArray> result_elements;
246 TNode<JSRegExpResult> result =
256 TNode<IntPtrT> limit = IntPtrAdd(
268 TNode<IntPtrT> from_cursor = var_from_cursor.value();
269 TNode<IntPtrT> to_cursor = var_to_cursor.value();
270 TNode<Smi> start_cursor =
276 TNode<IntPtrT> from_cursor_plus1 =
278 TNode<Smi> end_cursor =
281 TNode<String> capture = CAST(CallBuiltin(Builtin::kSubString, context,
300 TNode<FixedArray> data =
315 TNode<Object> maybe_names =
321 TNode<FixedArray> names = CAST(maybe_names);
322 TNode<IntPtrT> names_length = LoadAndUntagFixedArrayBaseLength(names);
332 TNode<IntPtrT> num_properties = WordSar(names_length, 1);
333 TNode<NativeContext> native_context = LoadNativeContext(context);
334 TNode<Map> map = LoadSlowObjectWithNullPrototypeMap(native_context);
335 TNode<HeapObject> properties;
343 TNode<JSObject> group_object = AllocateJSObjectFromMap(map, properties);
353 TNode<IntPtrT> i = var_i.value();
354 TNode<IntPtrT> i_plus_1 = IntPtrAdd(i, IntPtrConstant(1));
355 TNode<IntPtrT> i_plus_2 = IntPtrAdd(i_plus_1, IntPtrConstant(1));
357 TNode<String> name = CAST(LoadFixedArrayElement(names, i));
358 TNode<Smi> index = CAST(LoadFixedArrayElement(names, i_plus_1));
359 TNode<HeapObject> capture =
396 const TNode<Object> maybe_names =
398 const TNode<JSRegExpResultIndices> indices =
412 TNode<RawPtrT> string_data, TNode<IntPtrT> offset,
413 TNode<IntPtrT> last_index, TNode<IntPtrT> string_length,
423 TNode<IntPtrT> from_offset =
428 TNode<IntPtrT> to_offset =
433 TNode<HeapObject> RegExpBuiltinsAssembler::RegExpExecInternal(
434 TNode<Context> context, TNode<JSRegExp> regexp, TNode<String> string,
435 TNode<Number> last_index, TNode<RegExpMatchInfo> match_info,
444 TNode<ExternalReference> isolate_address =
446 TNode<ExternalReference> static_offsets_vector_address = ExternalConstant(
460 TNode<IntPtrT> int_string_length = LoadStringLengthAsWord(string);
461 TNode<IntPtrT> int_last_index = SmiUntag(CAST(last_index));
466 TNode<FixedArray> data = CAST(LoadObjectField(regexp, JSRegExp::kDataOffset));
471 TNode<Int32T> tag = LoadAndUntagToWord32FixedArrayElement(
492 TNode<Smi> capture_count = CAST(UnsafeLoadFixedArrayElement(
514 TNode<RawPtrT> direct_string_data = to_direct.PointerToData(&runtime);
562 TNode<CodeT> code = CAST(var_code.value());
579 TNode<String> arg0 = string;
583 TNode<Int32T> arg1 = TruncateIntPtrToInt32(int_last_index);
588 TNode<RawPtrT> arg2 = var_string_start.value();
593 TNode<RawPtrT> arg3 = var_string_end.value();
597 TNode<ExternalReference> arg4 = static_offsets_vector_address;
602 TNode<Smi> capture_count = CAST(UnsafeLoadFixedArrayElement(
607 TNode<Smi> register_count =
611 TNode<Int32T> arg5 = SmiToInt32(register_count);
615 TNode<Int32T> arg6 = Int32Constant(RegExp::CallOrigin::kFromJs);
619 TNode<ExternalReference> arg7 = isolate_address;
624 TNode<JSRegExp> arg8 = regexp;
626 TNode<RawPtrT> code_entry = LoadCodeObjectEntry(code);
632 TNode<Int32T> result =
643 TNode<IntPtrT> int_result = ChangeInt32ToIntPtr(result);
667 TNode<IntPtrT> value = ChangeInt32ToIntPtr(UncheckedCast<Int32T>(
676 TNode<Smi> available_slots =
679 TNode<Smi> capture_count = CAST(UnsafeLoadFixedArrayElement(
682 TNode<Smi> register_count =
696 TNode<IntPtrT> limit_offset =
699 TNode<IntPtrT> to_offset = ElementOffsetFromIndex(
707 [&](TNode<IntPtrT> offset) {
708 TNode<Int32T> value = UncheckedCast<Int32T>(Load(
710 TNode<Smi> smi_value = SmiFromInt32(value);
732 TNode<ExternalReference> pending_exception_address =
776 TNode<BoolT> RegExpBuiltinsAssembler::IsFastRegExpNoPrototype(
777 TNode<Context> context, TNode<Object> object, TNode<Map> map) {
786 const TNode<NativeContext> native_context = LoadNativeContext(context);
787 const TNode<HeapObject> regexp_fun =
789 const TNode<Object> initial_map =
791 const TNode<BoolT> has_initialmap = TaggedEqual(map, initial_map);
798 TNode<Object> last_index = FastLoadLastIndexBeforeSmiCheck(CAST(object));
806 TNode<BoolT> RegExpBuiltinsAssembler::IsFastRegExpNoPrototype(
807 TNode<Context> context, TNode<Object> object) {
813 TNode<Context> context, TNode<HeapObject> object, TNode<Map> map,
825 TNode<NativeContext> native_context = LoadNativeContext(context);
826 TNode<JSFunction> regexp_fun =
828 TNode<Map> initial_map = CAST(
830 TNode<BoolT> has_initialmap = TaggedEqual(map, initial_map);
836 TNode<Object> last_index = FastLoadLastIndexBeforeSmiCheck(CAST(object));
841 TNode<Map> initial_proto_initial_map = CAST(
858 TNode<HeapObject> prototype = LoadMapPrototype(map);
863 TNode<Context> context, TNode<HeapObject> object, Label* if_isunmodified,
875 TNode<Context> context, TNode<HeapObject> object, Label* if_isunmodified,
887 TNode<Context> context, TNode<HeapObject> object, Label* if_isunmodified,
895 TNode<Context> context, TNode<HeapObject> object, Label* if_isunmodified,
902 void RegExpBuiltinsAssembler::BranchIfRegExpResult(const TNode<Context> context,
903 const TNode<Object> object,
907 const TNode<Map> map = LoadReceiverMap(object);
909 const TNode<NativeContext> native_context = LoadNativeContext(context);
910 const TNode<Object> initial_regexp_result_map =
921 const TNode<Object> initial_regexp_result_with_indices_map =
941 TNode<FixedArray> data = CAST(LoadObjectField(regexp, JSRegExp::kDataOffset));
952 const TNode<String> needle_string =
963 const TNode<Smi> match_from =
979 const TNode<Smi> match_to =
1014 TNode<String> RegExpBuiltinsAssembler::FlagsGetter(TNode<Context> context,
1015 TNode<Object> regexp,
1025 const TNode<IntPtrT> int_one = IntPtrConstant(1);
1035 const TNode<Smi> flags_smi =
1059 const TNode<Object> flag = GetProperty( \
1082 TNode<Word32T> flag_value = UncheckedCast<Word32T>( \
1087 const TNode<Object> flag = GetProperty( \
1109 const TNode<String> string = AllocateSeqOneByteString(var_length.value());
1118 const TNode<Int32T> value = Int32Constant(Char); \
1154 TNode<Object> RegExpBuiltinsAssembler::RegExpInitialize(
1155 const TNode<Context> context, const TNode<JSRegExp> regexp,
1156 const TNode<Object> maybe_pattern, const TNode<Object> maybe_flags) {
1158 const TNode<Object> pattern = Select<Object>(
1163 const TNode<Object> flags = Select<Object>(
1187 TNode<NativeContext> native_context = LoadNativeContext(context);
1188 TNode<JSFunction> regexp_function =
1191 TNode<BoolT> pattern_is_regexp = IsRegExp(context, pattern);
1202 TNode<Object> value =
1222 TNode<Object> source =
1272 const TNode<Map> initial_map = CAST(LoadObjectField(
1289 const TNode<Object> result = RegExpInitialize(
1304 const TNode<JSRegExp> receiver = CAST(maybe_receiver);
1326 const TNode<JSRegExp> pattern = CAST(maybe_pattern);
1327 const TNode<String> new_flags = FlagsGetter(context, pattern, true);
1328 const TNode<Object> new_pattern =
1338 const TNode<Object> result = RegExpInitialize(
1344 TNode<BoolT> RegExpBuiltinsAssembler::FastFlagGetter(TNode<JSRegExp> regexp,
1346 TNode<Smi> flags = CAST(LoadObjectField(regexp, JSRegExp::kFlagsOffset));
1347 TNode<Smi> mask = SmiConstant(flag);
1354 TNode<BoolT> RegExpBuiltinsAssembler::SlowFlagGetter(TNode<Context> context,
1355 TNode<Object> regexp,
1362 TNode<Word32T> flag_value = UncheckedCast<Word32T>(Load(
1383 TNode<Object> value = GetProperty(context, regexp, name);
1398 TNode<BoolT> RegExpBuiltinsAssembler::FlagGetter(TNode<Context> context,
1399 TNode<Object> regexp,
1406 TNode<Number> RegExpBuiltinsAssembler::AdvanceStringIndex(
1407 TNode<String> string, TNode<Number> index, TNode<BoolT> is_unicode,
1415 TNode<Number> index_plus_one = NumberInc(index);
1445 TNode<UintPtrT> string_length = Unsigned(LoadStringLengthAsWord(string));
1446 TNode<UintPtrT> untagged_plus_one =
1450 TNode<Int32T> lead =
1456 TNode<Int32T> trail = StringCharCodeAt(string, untagged_plus_one);
1462 TNode<Number> index_plus_two = NumberInc(index_plus_one);
1474 TNode<Object> RegExpMatchAllAssembler::CreateRegExpStringIterator(
1475 TNode<NativeContext> native_context, TNode<Object> regexp,
1476 TNode<String> string, TNode<BoolT> global, TNode<BoolT> full_unicode) {
1477 TNode<Map> map = CAST(LoadContextElement(
1484 TNode<HeapObject> iterator = Allocate(JSRegExpStringIterator::kHeaderSize);
1503 TNode<Int32T> global_flag =
1506 TNode<Int32T> unicode_flag =
1509 TNode<Int32T> iterator_flags = Word32Or(global_flag, unicode_flag);
1518 TNode<JSArray> RegExpBuiltinsAssembler::RegExpPrototypeSplitBody(
1519 TNode<Context> context, TNode<JSRegExp> regexp, TNode<String> string,
1520 const TNode<Smi> limit) {
1524 const TNode<IntPtrT> int_limit = SmiUntag(limit);
1528 const TNode<NativeContext> native_context = LoadNativeContext(context);
1529 TNode<Map> array_map = LoadJSArrayElementsMap(kind, native_context);
1542 const TNode<Smi> string_length = LoadStringLengthAsSmi(string);
1552 const TNode<Object> last_match_info = LoadContextElement(
1555 const TNode<Object> match_indices =
1565 TNode<Smi> length = SmiConstant(1);
1566 TNode<IntPtrT> capacity = IntPtrConstant(1);
1567 base::Optional<TNode<AllocationSite>> allocation_site = base::nullopt;
1571 TNode<FixedArray> fixed_array = CAST(LoadElements(var_result.value()));
1595 const TNode<Smi> next_search_from = var_next_search_from.value();
1596 const TNode<Smi> last_matched_until = var_last_matched_until.value();
1608 const TNode<Object> last_match_info = LoadContextElement(
1611 const TNode<HeapObject> match_indices_ho = RegExpExecInternal(
1622 TNode<FixedArray> match_indices = CAST(match_indices_ho);
1623 const TNode<Smi> match_from = CAST(UnsafeLoadFixedArrayElement(
1625 const TNode<Smi> match_to = CAST(UnsafeLoadFixedArrayElement(
1636 const TNode<BoolT> is_unicode =
1638 const TNode<Number> new_next_search_from =
1648 const TNode<Smi> from = last_matched_until;
1649 const TNode<Smi> to = match_from;
1656 const TNode<Smi> num_registers = CAST(LoadFixedArrayElement(
1658 const TNode<IntPtrT> int_num_registers = SmiUntag(num_registers);
1670 const TNode<IntPtrT> reg = var_reg.value();
1671 const TNode<Object> from = LoadFixedArrayElement(
1674 const TNode<Smi> to = CAST(LoadFixedArrayElement(
1701 const TNode<IntPtrT> new_reg = IntPtrAdd(reg, IntPtrConstant(2));
1719 const TNode<Smi> from = var_last_matched_until.value();
1720 const TNode<Smi> to = string_length;
1733 TNode<Smi> length = SmiZero();
1734 TNode<IntPtrT> capacity = IntPtrZero();
1735 base::Optional<TNode<AllocationSite>> allocation_site = base::nullopt;