Index: runtime/lib/regexp.cc |
diff --git a/runtime/lib/regexp.cc b/runtime/lib/regexp.cc |
index 7a50561109244c8f55282b3aedc2d02edff0e1f0..ad82af8778963702064beb92c4c3f61d97827560 100644 |
--- a/runtime/lib/regexp.cc |
+++ b/runtime/lib/regexp.cc |
@@ -87,10 +87,29 @@ DEFINE_NATIVE_ENTRY(RegExp_ExecuteMatch, 3) { |
if (FLAG_interpret_irregexp || FLAG_precompiled_runtime) { |
return BytecodeRegExpMacroAssembler::Interpret(regexp, subject, start_index, |
- zone); |
+ /*sticky=*/false, zone); |
} |
- return IRRegExpMacroAssembler::Execute(regexp, subject, start_index, zone); |
+ return IRRegExpMacroAssembler::Execute(regexp, subject, start_index, |
+ /*sticky=*/false, zone); |
} |
+ |
+DEFINE_NATIVE_ENTRY(RegExp_ExecuteMatchSticky, 3) { |
+ // This function is intrinsified. See Intrinsifier::RegExp_ExecuteMatch. |
rmacnak
2016/11/17 00:49:52
MatchSticky
Vyacheslav Egorov (Google)
2016/11/17 16:51:33
Done.
|
+ const RegExp& regexp = RegExp::CheckedHandle(arguments->NativeArgAt(0)); |
+ ASSERT(!regexp.IsNull()); |
+ GET_NON_NULL_NATIVE_ARGUMENT(String, subject, arguments->NativeArgAt(1)); |
+ GET_NON_NULL_NATIVE_ARGUMENT(Smi, start_index, arguments->NativeArgAt(2)); |
+ |
+ if (FLAG_interpret_irregexp || FLAG_precompiled_runtime) { |
+ return BytecodeRegExpMacroAssembler::Interpret(regexp, subject, start_index, |
+ /*sticky=*/true, zone); |
+ } |
+ |
+ return IRRegExpMacroAssembler::Execute(regexp, subject, start_index, |
+ /*sticky=*/true, zone); |
+} |
+ |
+ |
} // namespace dart |