OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
699 SetLastCaptureCount(array, capture_register_count); | 699 SetLastCaptureCount(array, capture_register_count); |
700 SetLastSubject(array, *subject); | 700 SetLastSubject(array, *subject); |
701 SetLastInput(array, *subject); | 701 SetLastInput(array, *subject); |
702 return last_match_info; | 702 return last_match_info; |
703 } | 703 } |
704 | 704 |
705 | 705 |
706 RegExpImpl::GlobalCache::GlobalCache(Handle<JSRegExp> regexp, | 706 RegExpImpl::GlobalCache::GlobalCache(Handle<JSRegExp> regexp, |
707 Handle<String> subject, | 707 Handle<String> subject, |
708 bool is_global, | 708 bool is_global, |
709 Isolate* isolate) { | 709 Isolate* isolate) |
| 710 : register_array_(NULL), |
| 711 register_array_size_(0), |
| 712 regexp_(regexp), |
| 713 subject_(subject) { |
710 #ifdef V8_INTERPRETED_REGEXP | 714 #ifdef V8_INTERPRETED_REGEXP |
711 bool interpreted = true; | 715 bool interpreted = true; |
712 #else | 716 #else |
713 bool interpreted = false; | 717 bool interpreted = false; |
714 #endif // V8_INTERPRETED_REGEXP | 718 #endif // V8_INTERPRETED_REGEXP |
715 | 719 |
716 regexp_ = regexp; | |
717 subject_ = subject; | |
718 | |
719 if (regexp_->TypeTag() == JSRegExp::ATOM) { | 720 if (regexp_->TypeTag() == JSRegExp::ATOM) { |
720 static const int kAtomRegistersPerMatch = 2; | 721 static const int kAtomRegistersPerMatch = 2; |
721 registers_per_match_ = kAtomRegistersPerMatch; | 722 registers_per_match_ = kAtomRegistersPerMatch; |
722 // There is no distinction between interpreted and native for atom regexps. | 723 // There is no distinction between interpreted and native for atom regexps. |
723 interpreted = false; | 724 interpreted = false; |
724 } else { | 725 } else { |
725 registers_per_match_ = RegExpImpl::IrregexpPrepare(regexp_, subject_); | 726 registers_per_match_ = RegExpImpl::IrregexpPrepare(regexp_, subject_); |
726 if (registers_per_match_ < 0) { | 727 if (registers_per_match_ < 0) { |
727 num_matches_ = -1; // Signal exception. | 728 num_matches_ = -1; // Signal exception. |
728 return; | 729 return; |
(...skipping 5429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6158 } | 6159 } |
6159 | 6160 |
6160 return compiler.Assemble(¯o_assembler, | 6161 return compiler.Assemble(¯o_assembler, |
6161 node, | 6162 node, |
6162 data->capture_count, | 6163 data->capture_count, |
6163 pattern); | 6164 pattern); |
6164 } | 6165 } |
6165 | 6166 |
6166 | 6167 |
6167 }} // namespace v8::internal | 6168 }} // namespace v8::internal |
OLD | NEW |