Index: src/regexp/regexp-utils.cc |
diff --git a/src/regexp/regexp-utils.cc b/src/regexp/regexp-utils.cc |
index 963bb68b7f9749ac47893415352afcad6b2da6ed..1c05201cc7b5171571aa5a3f173e87f80bacbeba 100644 |
--- a/src/regexp/regexp-utils.cc |
+++ b/src/regexp/regexp-utils.cc |
@@ -12,67 +12,24 @@ |
namespace v8 { |
namespace internal { |
-// Constants for accessing RegExpLastMatchInfo. |
-// TODO(jgruber): Currently, RegExpLastMatchInfo is still a JSObject maintained |
-// and accessed from JS. This is a crutch until all RegExp logic is ported, then |
-// we can take care of RegExpLastMatchInfo. |
- |
-Handle<Object> RegExpUtils::GetLastMatchField(Isolate* isolate, |
- Handle<JSObject> match_info, |
- int index) { |
- return JSReceiver::GetElement(isolate, match_info, index).ToHandleChecked(); |
-} |
- |
-void RegExpUtils::SetLastMatchField(Isolate* isolate, |
- Handle<JSObject> match_info, int index, |
- Handle<Object> value) { |
- JSReceiver::SetElement(isolate, match_info, index, value, SLOPPY) |
- .ToHandleChecked(); |
-} |
- |
-int RegExpUtils::GetLastMatchNumberOfCaptures(Isolate* isolate, |
- Handle<JSObject> match_info) { |
- Handle<Object> obj = |
- GetLastMatchField(isolate, match_info, RegExpImpl::kLastCaptureCount); |
- return Handle<Smi>::cast(obj)->value(); |
-} |
- |
-Handle<String> RegExpUtils::GetLastMatchSubject(Isolate* isolate, |
- Handle<JSObject> match_info) { |
- return Handle<String>::cast( |
- GetLastMatchField(isolate, match_info, RegExpImpl::kLastSubject)); |
-} |
- |
-Handle<Object> RegExpUtils::GetLastMatchInput(Isolate* isolate, |
- Handle<JSObject> match_info) { |
- return GetLastMatchField(isolate, match_info, RegExpImpl::kLastInput); |
-} |
- |
-int RegExpUtils::GetLastMatchCapture(Isolate* isolate, |
- Handle<JSObject> match_info, int i) { |
- Handle<Object> obj = |
- GetLastMatchField(isolate, match_info, RegExpImpl::kFirstCapture + i); |
- return Handle<Smi>::cast(obj)->value(); |
-} |
- |
-Handle<String> RegExpUtils::GenericCaptureGetter(Isolate* isolate, |
- Handle<JSObject> match_info, |
- int capture, bool* ok) { |
+Handle<String> RegExpUtils::GenericCaptureGetter( |
+ Isolate* isolate, Handle<RegExpMatchInfo> match_info, int capture, |
+ bool* ok) { |
const int index = capture * 2; |
- if (index >= GetLastMatchNumberOfCaptures(isolate, match_info)) { |
+ if (index >= match_info->NumberOfCaptureRegisters()) { |
if (ok != nullptr) *ok = false; |
return isolate->factory()->empty_string(); |
} |
- const int match_start = GetLastMatchCapture(isolate, match_info, index); |
- const int match_end = GetLastMatchCapture(isolate, match_info, index + 1); |
+ const int match_start = match_info->Capture(index); |
+ const int match_end = match_info->Capture(index + 1); |
if (match_start == -1 || match_end == -1) { |
if (ok != nullptr) *ok = false; |
return isolate->factory()->empty_string(); |
} |
if (ok != nullptr) *ok = true; |
- Handle<String> last_subject = GetLastMatchSubject(isolate, match_info); |
+ Handle<String> last_subject(match_info->LastSubject()); |
return isolate->factory()->NewSubString(last_subject, match_start, match_end); |
} |