Reviewers: christian.plesner.hansen,

Message:
Code review, please.


Description:
Calling native irregexp now returns captures correctly.
Reduces failing tests in native mode to 2(!)

Please review this at http://codereview.chromium.org/10419

Affected files:
   M src/jsregexp.cc


Index: src/jsregexp.cc
diff --git a/src/jsregexp.cc b/src/jsregexp.cc
index  
3fecb75ca1634c88b5035247ec07d4659a204fd5..01a411074c7bf16e95c924cd797eb2bf3d7b53f6
  
100644
--- a/src/jsregexp.cc
+++ b/src/jsregexp.cc
@@ -507,19 +507,18 @@ Handle<Object>  
RegExpImpl::IrregexpExecOnce(Handle<JSRegExp> regexp,
    switch (tag) {
      case RegExpMacroAssembler::kIA32Implementation: {
        Code* code = Code::cast(irregexp->get(kIrregexpCodeIndex));
-      SmartPointer<int> captures(NewArray<int>((num_captures + 1) * 2));
        Address start_addr =
             
Handle<SeqTwoByteString>::cast(two_byte_subject)->GetCharsAddress();
-      int start_offset =
+      int string_offset =
            start_addr - reinterpret_cast<Address>(*two_byte_subject);
-      int end_offset =
-          start_offset + (two_byte_subject->length() - previous_index) * 2;
+      int start_offset = string_offset + previous_index * 2;
+      int end_offset = string_offset + two_byte_subject->length() * 2;
        typedef bool testfunc(String**, int, int, int*);
        testfunc* test = FUNCTION_CAST<testfunc*>(code->entry());
        rc = test(two_byte_subject.location(),
                  start_offset,
                  end_offset,
-                *captures);
+                offsets_vector);
        if (rc) {
          // Capture values are relative to start_offset only.
          for (int i = 0; i < offsets_vector_length; i++) {



--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to