Lines Matching refs:Node
28 Node* RegExpBuiltinsAssembler::FastLoadLastIndex(Node* regexp) {
35 Node* RegExpBuiltinsAssembler::SlowLoadLastIndex(Node* context, Node* regexp) {
37 Node* const name = HeapConstant(isolate()->factory()->lastIndex_string());
42 Node* RegExpBuiltinsAssembler::LoadLastIndex(Node* context, Node* regexp,
50 void RegExpBuiltinsAssembler::FastStoreLastIndex(Node* regexp, Node* value) {
57 void RegExpBuiltinsAssembler::SlowStoreLastIndex(Node* context, Node* regexp,
58 Node* value) {
61 Node* const name = HeapConstant(isolate()->factory()->lastIndex_string());
62 Node* const language_mode = SmiConstant(Smi::FromInt(STRICT));
67 void RegExpBuiltinsAssembler::StoreLastIndex(Node* context, Node* regexp,
68 Node* value, bool is_fastpath) {
76 Node* RegExpBuiltinsAssembler::ConstructNewResultFromMatchInfo(
77 Node* const context, Node* const regexp, Node* const match_info,
78 Node* const string) {
81 Node* const num_indices = SmiUntag(LoadFixedArrayElement(
83 Node* const num_results = SmiTag(WordShr(num_indices, 1));
84 Node* const start =
86 Node* const end = LoadFixedArrayElement(
91 Node* const first = SubString(context, string, start, end);
93 Node* const result =
95 Node* const result_elements = LoadElements(result);
103 Node* const limit = IntPtrAdd(
118 Node* const from_cursor = var_from_cursor.value();
119 Node* const to_cursor = var_to_cursor.value();
120 Node* const start = LoadFixedArrayElement(match_info, from_cursor);
125 Node* const from_cursor_plus1 = IntPtrAdd(from_cursor, IntPtrConstant(1));
126 Node* const end = LoadFixedArrayElement(match_info, from_cursor_plus1);
128 Node* const capture = SubString(context, string, start, end);
150 Node* const data = LoadObjectField(regexp, JSRegExp::kDataOffset);
156 Node* const names =
164 Node* const native_context = LoadNativeContext(context);
165 Node* const map = LoadContextElement(
167 Node* const properties =
170 Node* const group_object = AllocateJSObjectFromMap(map, properties);
175 Node* const name = HeapConstant(isolate()->factory()->group_string());
183 Node* const names_length = LoadAndUntagFixedArrayBaseLength(names);
196 Node* const i = var_i.value();
197 Node* const i_plus_1 = IntPtrAdd(i, IntPtrConstant(1));
198 Node* const i_plus_2 = IntPtrAdd(i_plus_1, IntPtrConstant(1));
200 Node* const name = LoadFixedArrayElement(names, i);
201 Node* const index = LoadFixedArrayElement(names, i_plus_1);
202 Node* const capture =
224 Node* RegExpBuiltinsAssembler::RegExpPrototypeExecBodyWithoutResult(
225 Node* const context, Node* const regexp, Node* const string,
229 Node* const null = NullConstant();
230 Node* const int_zero = IntPtrConstant(0);
231 Node* const smi_zero = SmiConstant(Smi::kZero);
247 Node* const regexp_lastindex = LoadLastIndex(context, regexp, is_fastpath);
272 Node* const flags = LoadObjectField(regexp, JSRegExp::kFlagsOffset);
273 Node* const is_global_or_sticky = WordAnd(
275 Node* const should_update_last_index =
286 Node* const lastindex = var_lastindex.value();
290 Node* const string_length = LoadStringLength(string);
309 Node* match_indices;
314 Node* const native_context = LoadNativeContext(context);
315 Node* const last_match_info = LoadContextElement(
339 Node* const new_lastindex = LoadFixedArrayElement(
352 Node* RegExpBuiltinsAssembler::RegExpPrototypeExecBody(Node* const context,
353 Node* const regexp,
354 Node* const string,
356 Node* const null = NullConstant();
361 Node* const indices_or_null = RegExpPrototypeExecBodyWithoutResult(
366 Node* const match_indices = indices_or_null;
367 Node* const result =
383 Node* RegExpBuiltinsAssembler::ThrowIfNotJSReceiver(
384 Node* context, Node* maybe_receiver, MessageTemplate::Template msg_template,
393 Node* const value_instance_type = LoadMapInstanceType(var_value_map.value());
400 Node* const message_id = SmiConstant(Smi::FromInt(msg_template));
401 Node* const method_name_str = HeapConstant(
405 Node* const value_str = CallStub(callable, context, maybe_receiver);
416 Node* RegExpBuiltinsAssembler::IsInitialRegExpMap(Node* context, Node* object,
417 Node* map) {
421 Node* const native_context = LoadNativeContext(context);
422 Node* const regexp_fun =
424 Node* const initial_map =
426 Node* const has_initialmap = WordEqual(map, initial_map);
433 Node* const last_index = FastLoadLastIndex(object);
445 void RegExpBuiltinsAssembler::BranchIfFastRegExp(Node* const context,
446 Node* const object,
447 Node* const map,
455 Node* const native_context = LoadNativeContext(context);
456 Node* const regexp_fun =
458 Node* const initial_map =
460 Node* const has_initialmap = WordEqual(map, initial_map);
464 Node* const initial_proto_initial_map =
466 Node* const proto_map = LoadMap(LoadMapPrototype(map));
467 Node* const proto_has_initialmap =
474 Node* const last_index = FastLoadLastIndex(object);
478 Node* RegExpBuiltinsAssembler::IsFastRegExpMap(Node* const context,
479 Node* const object,
480 Node* const map) {
498 void RegExpBuiltinsAssembler::BranchIfFastRegExpResult(Node* context, Node* map,
501 Node* const native_context = LoadNativeContext(context);
502 Node* const initial_regexp_result_map =
512 Node* const maybe_receiver = Parameter(0);
513 Node* const maybe_string = Parameter(1);
514 Node* const context = Parameter(4);
519 Node* const receiver = maybe_receiver;
522 Node* const string = ToString(context, maybe_string);
530 Node* const result =
537 Node* const result =
543 Node* RegExpBuiltinsAssembler::FlagsGetter(Node* const context,
544 Node* const regexp,
548 Node* const int_zero = IntPtrConstant(0);
549 Node* const int_one = IntPtrConstant(1);
558 Node* const flags_smi = LoadObjectField(regexp, JSRegExp::kFlagsOffset);
559 Node* const flags_intptr = SmiUntag(flags_smi);
588 Node* const name = \
590 Node* const flag = CallStub(getproperty_callable, context, regexp, name); \
612 Node* const result = AllocateSeqOneByteString(context, var_length.value());
613 Node* const flags_intptr = var_flags.value();
623 Node* const value = Int32Constant(CHAR); \
643 Node* RegExpBuiltinsAssembler::IsRegExp(Node* const context,
644 Node* const maybe_receiver) {
652 Node* const receiver = maybe_receiver;
657 Node* const name = HeapConstant(isolate()->factory()->match_symbol());
658 Node* const value = CallStub(getproperty_callable, context, receiver, name);
680 Node* RegExpBuiltinsAssembler::RegExpInitialize(Node* const context,
681 Node* const regexp,
682 Node* const maybe_pattern,
683 Node* const maybe_flags) {
685 Node* const pattern =
691 Node* const flags =
703 Node* const maybe_receiver = Parameter(0);
704 Node* const context = Parameter(3);
706 Node* const map = ThrowIfNotJSReceiver(context, maybe_receiver,
709 Node* const receiver = maybe_receiver;
725 Node* const pattern = Parameter(1);
726 Node* const flags = Parameter(2);
727 Node* const new_target = Parameter(3);
728 Node* const context = Parameter(5);
736 Node* const native_context = LoadNativeContext(context);
737 Node* const regexp_function =
740 Node* const pattern_is_regexp = IsRegExp(context, pattern);
752 Node* const name = HeapConstant(isolate->factory()->constructor_string());
753 Node* const value = CallStub(getproperty_callable, context, pattern, name);
772 Node* const source = LoadObjectField(pattern, JSRegExp::kSourceOffset);
779 Node* const value = FlagsGetter(context, pattern, true);
794 Node* const name = HeapConstant(isolate->factory()->source_string());
795 Node* const value =
804 Node* const name = HeapConstant(isolate->factory()->flags_string());
805 Node* const value =
830 Node* const initial_map = LoadObjectField(
832 Node* const regexp = AllocateJSObjectFromMap(initial_map);
840 Node* const regexp = constructor_assembler.EmitFastNewObject(
849 Node* const result = RegExpInitialize(context, var_regexp.value(),
857 Node* const maybe_receiver = Parameter(0);
858 Node* const maybe_pattern = Parameter(1);
859 Node* const maybe_flags = Parameter(2);
860 Node* const context = Parameter(5);
864 Node* const receiver = maybe_receiver;
876 Node* const pattern = maybe_pattern;
883 Node* const message_id = SmiConstant(MessageTemplate::kRegExpFlags);
889 Node* const new_flags = FlagsGetter(context, pattern, true);
890 Node* const new_pattern = LoadObjectField(pattern, JSRegExp::kSourceOffset);
899 Node* const result = RegExpInitialize(context, receiver, var_pattern.value(),
906 Node* const receiver = Parameter(0);
907 Node* const context = Parameter(3);
918 Node* const source = LoadObjectField(receiver, JSRegExp::kSourceOffset);
925 Node* const native_context = LoadNativeContext(context);
926 Node* const regexp_fun =
928 Node* const initial_map =
930 Node* const initial_prototype = LoadMapPrototype(initial_map);
939 Node* const counter_smi = SmiConstant(counter);
942 Node* const result =
949 Node* const message_id =
951 Node* const method_name_str =
998 Node* RegExpBuiltinsAssembler::FastFlagGetter(Node* const regexp,
1000 Node* const smi_zero = SmiConstant(Smi::kZero);
1001 Node* const flags = LoadObjectField(regexp, JSRegExp::kFlagsOffset);
1002 Node* const mask = SmiConstant(Smi::FromInt(flag));
1003 Node* const is_flag_set = WordNotEqual(SmiAnd(flags, mask), smi_zero);
1009 Node* RegExpBuiltinsAssembler::SlowFlagGetter(Node* const context,
1010 Node* const regexp,
1017 Node* name;
1040 Node* const value = CallStub(getproperty_callable, context, regexp, name);
1061 Node* RegExpBuiltinsAssembler::FlagGetter(Node* const context,
1062 Node* const regexp,
1072 Node* const receiver = Parameter(0);
1073 Node* const context = Parameter(3);
1083 Node* const receiver_map = LoadMap(receiver);
1084 Node* const instance_type = LoadMapInstanceType(receiver_map);
1092 Node* const is_flag_set = FastFlagGetter(receiver, flag);
1098 Node* const native_context = LoadNativeContext(context);
1099 Node* const regexp_fun =
1101 Node* const initial_map =
1103 Node* const initial_prototype = LoadMapPrototype(initial_map);
1111 Node* const counter_smi = SmiConstant(Smi::FromInt(counter));
1118 Node* const message_id =
1120 Node* const method_name_str = HeapConstant(
1243 Node* RegExpBuiltinsAssembler::RegExpExec(Node* context, Node* regexp,
1244 Node* string) {
1247 Node* const null = NullConstant();
1252 Node* const map = LoadMap(regexp);
1257 Node* const result = RegExpPrototypeExecBody(context, regexp, string, true);
1268 Node* const name = HeapConstant(isolate->factory()->exec_string());
1270 Node* const exec = CallStub(getproperty_callable, context, regexp, name);
1277 Node* const exec_map = LoadMap(exec);
1283 Node* const result = CallJS(call_callable, context, exec, regexp, string);
1299 Node* const result =
1313 Node* const maybe_receiver = Parameter(0);
1314 Node* const maybe_string = Parameter(1);
1315 Node* const context = Parameter(4);
1321 Node* const receiver = maybe_receiver;
1324 Node* const string = ToString(context, maybe_string);
1344 Node* const match_indices = RegExpExec(context, receiver, string);
1347 Node* const result =
1353 Node* RegExpBuiltinsAssembler::AdvanceStringIndex(Node* const string,
1354 Node* const index,
1355 Node* const is_unicode,
1361 Node* const index_plus_one = NumberInc(index);
1388 Node* const string_length = LoadStringLength(string);
1391 Node* const lead = StringCharCodeAt(string, index);
1396 Node* const trail = StringCharCodeAt(string, index_plus_one);
1402 Node* const index_plus_two = NumberInc(index_plus_one);
1428 Node* length() const { return var_length_.value(); }
1434 void Push(Node* const value) {
1437 Node* const length = var_length_.value();
1438 Node* const capacity = var_capacity_.value();
1445 Node* const new_capacity = NewCapacity(a, capacity);
1446 Node* const new_array = ResizeFixedArray(length, new_capacity);
1455 Node* const array = var_array_.value();
1458 Node* const new_length = a->IntPtrAdd(length, a->IntPtrConstant(1));
1463 Node* ToJSArray(Node* const context) {
1468 Node* const native_context = a->LoadNativeContext(context);
1469 Node* const array_map = a->LoadJSArrayElementsMap(kind, native_context);
1475 Node* const length = var_length_.value();
1476 Node* const capacity = var_capacity_.value();
1480 Node* const array = ResizeFixedArray(length, length);
1488 Node* const result_length = a->SmiTag(length());
1489 Node* const result = a->AllocateUninitializedJSArrayWithoutElements(
1506 Node* const capacity = a->IntPtrConstant(kInitialArraySize);
1507 Node* const array = a->AllocateFixedArray(kind, capacity);
1517 Node* NewCapacity(CodeStubAssembler* a, Node* const current_capacity) {
1523 Node* const new_capacity = a->IntPtrAdd(
1532 Node* ResizeFixedArray(Node* const element_count, Node* const new_capacity) {
1545 Node* const from_array = var_array_.value();
1546 Node* const to_array =
1563 void RegExpBuiltinsAssembler::RegExpPrototypeMatchBody(Node* const context,
1564 Node* const regexp,
1565 Node* const string,
1569 Node* const null = NullConstant();
1570 Node* const int_zero = IntPtrConstant(0);
1571 Node* const smi_zero = SmiConstant(Smi::kZero);
1573 Node* const is_global =
1581 Node* const result =
1589 Node* const is_unicode =
1614 Node* const match_indices = RegExpPrototypeExecBodyWithoutResult(
1617 Node* const match_from = LoadFixedArrayElement(
1619 Node* const match_to = LoadFixedArrayElement(
1622 Node* match = SubString(context, string, match_from, match_to);
1628 Node* const result = RegExpExec(context, regexp, string);
1641 Node* const result_fixed_array = LoadElements(result);
1642 Node* const match = LoadFixedArrayElement(result_fixed_array, 0);
1654 Node* const name = smi_zero;
1656 Node* const match =
1674 Node* match = var_match.value();
1682 Node* const match_length = LoadStringLength(match);
1685 Node* last_index = LoadLastIndex(context, regexp, is_fastpath);
1693 Node* const new_last_index =
1714 Node* const result = array.ToJSArray(context);
1723 Node* const maybe_receiver = Parameter(0);
1724 Node* const maybe_string = Parameter(1);
1725 Node* const context = Parameter(4);
1731 Node* const receiver = maybe_receiver;
1734 Node* const string = ToString(context, maybe_string);
1748 Node* const context, Node* const regexp, Node* const string) {
1750 Node* const previous_last_index = FastLoadLastIndex(regexp);
1757 Node* const match_indices = RegExpPrototypeExecBodyWithoutResult(
1766 Node* const index = LoadFixedArrayElement(
1780 Node* const context, Node* const regexp, Node* const string) {
1783 Node* const smi_zero = SmiConstant(Smi::kZero);
1786 Node* const previous_last_index = SlowLoadLastIndex(context, regexp);
1799 Node* const exec_result = RegExpExec(context, regexp, string);
1804 Node* const current_last_index = SlowLoadLastIndex(context, regexp);
1830 Node* const index =
1837 Node* const name = HeapConstant(isolate->factory()->index_string());
1839 Node* const index =
1849 Node* const maybe_receiver = Parameter(0);
1850 Node* const maybe_string = Parameter(1);
1851 Node* const context = Parameter(4);
1857 Node* const receiver = maybe_receiver;
1860 Node* const string = ToString(context, maybe_string);
1875 void RegExpBuiltinsAssembler::RegExpPrototypeSplitBody(Node* const context,
1876 Node* const regexp,
1877 Node* const string,
1878 Node* const limit) {
1881 Node* const null = NullConstant();
1882 Node* const smi_zero = SmiConstant(0);
1883 Node* const int_zero = IntPtrConstant(0);
1884 Node* const int_limit = SmiUntag(limit);
1889 Node* const allocation_site = nullptr;
1890 Node* const native_context = LoadNativeContext(context);
1891 Node* const array_map = LoadJSArrayElementsMap(kind, native_context);
1902 Node* const string_length = LoadStringLength(string);
1912 Node* const last_match_info = LoadContextElement(
1916 Node* const match_indices = CallStub(exec_callable, context, regexp,
1925 Node* const length = SmiConstant(1);
1926 Node* const capacity = IntPtrConstant(1);
1927 Node* const result = AllocateJSArray(kind, array_map, capacity, length,
1930 Node* const fixed_array = LoadElements(result);
1959 Node* const next_search_from = var_next_search_from.value();
1960 Node* const last_matched_until = var_last_matched_until.value();
1972 Node* const last_match_info = LoadContextElement(
1976 Node* const match_indices = CallStub(exec_callable, context, regexp, string,
1986 Node* const match_from = LoadFixedArrayElement(
1996 Node* const match_to = LoadFixedArrayElement(
2006 Node* const is_unicode = FastFlagGetter(regexp, JSRegExp::kUnicode);
2007 Node* const new_next_search_from =
2017 Node* const from = last_matched_until;
2018 Node* const to = match_from;
2020 Node* const substr = SubString(context, string, from, to);
2028 Node* const num_registers = LoadFixedArrayElement(
2030 Node* const int_num_registers = SmiUntag(num_registers);
2044 Node* const reg = var_reg.value();
2045 Node* const from = LoadFixedArrayElement(
2048 Node* const to = LoadFixedArrayElement(
2059 Node* const substr = SubString(context, string, from, to);
2066 Node* const undefined = UndefinedConstant();
2076 Node* const new_reg = IntPtrAdd(reg, IntPtrConstant(2));
2094 Node* const from = var_last_matched_until.value();
2095 Node* const to = string_length;
2097 Node* const substr = SubString(context, string, from, to);
2105 Node* const result = array.ToJSArray(context);
2111 Node* const length = smi_zero;
2112 Node* const capacity = int_zero;
2113 Node* const result = AllocateJSArray(kind, array_map, capacity, length,
2123 Node* const regexp = Parameter(Descriptor::kReceiver);
2124 Node* const string = Parameter(Descriptor::kString);
2125 Node* const maybe_limit = Parameter(Descriptor::kLimit);
2126 Node* const context = Parameter(Descriptor::kContext);
2142 Node* const limit = ToUint32(context, maybe_limit);
2169 Node* const limit = var_limit.value();
2185 Node* const maybe_receiver = Parameter(0);
2186 Node* const maybe_string = Parameter(1);
2187 Node* const maybe_limit = Parameter(2);
2188 Node* const context = Parameter(5);
2194 Node* const receiver = maybe_receiver;
2197 Node* const string = ToString(context, maybe_string);
2211 Node* RegExpBuiltinsAssembler::ReplaceGlobalCallableFastPath(
2212 Node* context, Node* regexp, Node* string, Node* replace_callable) {
2218 Node* const null = NullConstant();
2219 Node* const undefined = UndefinedConstant();
2220 Node* const int_zero = IntPtrConstant(0);
2221 Node* const int_one = IntPtrConstant(1);
2222 Node* const smi_zero = SmiConstant(Smi::kZero);
2224 Node* const native_context = LoadNativeContext(context);
2233 Node* result_array;
2236 Node* const array_map = LoadJSArrayElementsMap(kind, native_context);
2237 Node* const capacity = IntPtrConstant(16);
2238 Node* const length = smi_zero;
2239 Node* const allocation_site = nullptr;
2247 Node* last_match_info =
2249 Node* const res = CallRuntime(Runtime::kRegExpExecMultiple, context, regexp,
2263 Node* const res_length = LoadJSArrayLength(res);
2264 Node* const res_elems = LoadElements(res);
2267 Node* const num_capture_registers = LoadFixedArrayElement(
2287 Node* const end = SmiUntag(res_length);
2296 Node* const i = var_i.value();
2299 Node* const elem = LoadFixedArrayElement(res_elems, i);
2313 Node* const int_elem = SmiUntag(elem);
2314 Node* const new_match_start =
2323 Node* const next_i = IntPtrAdd(i, int_one);
2326 Node* const next_elem = LoadFixedArrayElement(res_elems, next_i);
2328 Node* const new_match_start = SmiSub(next_elem, elem);
2339 Node* const replacement_obj =
2343 Node* const replacement_str = ToString(context, replacement_obj);
2346 Node* const elem_length = LoadStringLength(elem);
2347 Node* const new_match_start =
2364 Node* const from = int_zero;
2365 Node* const to = SmiUntag(res_length);
2371 replace_callable](Node* index) {
2372 Node* const elem = LoadFixedArrayElement(res_elems, index);
2384 Node* const reflect_apply =
2387 Node* const replacement_obj =
2394 Node* const replacement_str = ToString(context, replacement_obj);
2408 Node* const result = CallRuntime(Runtime::kStringBuilderConcat, context,
2418 Node* RegExpBuiltinsAssembler::ReplaceSimpleStringFastPath(
2419 Node* context, Node* regexp, Node* string, Node* replace_string) {
2425 Node* const int_zero = IntPtrConstant(0);
2426 Node* const smi_zero = SmiConstant(Smi::kZero);
2432 Node* const native_context = LoadNativeContext(context);
2433 Node* const last_match_info =
2438 Node* const flags = LoadObjectField(regexp, JSRegExp::kFlagsOffset);
2439 Node* const is_global =
2447 Node* const result =
2458 Node* const match_indices = RegExpPrototypeExecBodyWithoutResult(
2463 Node* const subject_start = smi_zero;
2464 Node* const match_start = LoadFixedArrayElement(
2466 Node* const match_end = LoadFixedArrayElement(
2468 Node* const subject_end = LoadStringLength(string);
2471 Node* const replace_length = LoadStringLength(replace_string);
2480 Node* const first_part =
2482 Node* const second_part =
2485 Node* const result = StringAdd(context, first_part, second_part);
2492 Node* const first_part =
2494 Node* const second_part = replace_string;
2495 Node* const third_part =
2498 Node* result = StringAdd(context, first_part, second_part);
2521 Node* const regexp = Parameter(Descriptor::kReceiver);
2522 Node* const string = Parameter(Descriptor::kString);
2523 Node* const replace_value = Parameter(Descriptor::kReplaceValue);
2524 Node* const context = Parameter(Descriptor::kContext);
2541 Node* const replace_string =
2554 Node* const dollar_string = HeapConstant(
2556 Node* const dollar_ix = CallStub(indexof_callable, context, replace_string,
2567 Node* const replace_fn = replace_value;
2572 Node* const is_global = FastFlagGetter(regexp, JSRegExp::kGlobal);
2591 Node* const maybe_receiver = Parameter(0);
2592 Node* const maybe_string = Parameter(1);
2593 Node* const replace_value = Parameter(2);
2594 Node* const context = Parameter(5);
2618 Node* const receiver = maybe_receiver;
2622 Node* const string = CallStub(tostring_callable, context, maybe_string);
2640 Node* const regexp = Parameter(1);
2641 Node* const string = Parameter(2);
2642 Node* const context = Parameter(5);
2644 Node* const null = NullConstant();
2645 Node* const smi_zero = SmiConstant(Smi::FromInt(0));
2647 Node* const native_context = LoadNativeContext(context);
2648 Node* const internal_match_info = LoadContextElement(
2652 Node* const match_indices = CallStub(exec_callable, context, regexp, string,
2663 Node* result =