@@ -78,19 +78,34 @@ DEFINE_NATIVE_ENTRY(RegExp_getGroupCount, 1) {
7878}
7979
8080
81- DEFINE_NATIVE_ENTRY (RegExp_ExecuteMatch, 3 ) {
82- // This function is intrinsified. See Intrinsifier::RegExp_ExecuteMatch.
81+ static RawObject* ExecuteMatch (Zone* zone,
82+ NativeArguments* arguments,
83+ bool sticky) {
8384 const RegExp& regexp = RegExp::CheckedHandle (arguments->NativeArgAt (0 ));
8485 ASSERT (!regexp.IsNull ());
8586 GET_NON_NULL_NATIVE_ARGUMENT (String, subject, arguments->NativeArgAt (1 ));
8687 GET_NON_NULL_NATIVE_ARGUMENT (Smi, start_index, arguments->NativeArgAt (2 ));
8788
88- if (FLAG_interpret_irregexp || FLAG_precompiled_runtime ) {
89+ if (FLAG_interpret_irregexp) {
8990 return BytecodeRegExpMacroAssembler::Interpret (regexp, subject, start_index,
90- zone);
91+ /* sticky= */ sticky, zone);
9192 }
9293
93- return IRRegExpMacroAssembler::Execute (regexp, subject, start_index, zone);
94+ return IRRegExpMacroAssembler::Execute (regexp, subject, start_index,
95+ /* sticky=*/ sticky, zone);
9496}
9597
98+
99+ DEFINE_NATIVE_ENTRY (RegExp_ExecuteMatch, 3 ) {
100+ // This function is intrinsified. See Intrinsifier::RegExp_ExecuteMatch.
101+ return ExecuteMatch (zone, arguments, /* sticky=*/ false );
102+ }
103+
104+
105+ DEFINE_NATIVE_ENTRY (RegExp_ExecuteMatchSticky, 3 ) {
106+ // This function is intrinsified. See Intrinsifier::RegExp_ExecuteMatchSticky.
107+ return ExecuteMatch (zone, arguments, /* sticky=*/ true );
108+ }
109+
110+
96111} // namespace dart
0 commit comments