| 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 1855 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1866 bit ^= 1; | 1866 bit ^= 1; |
| 1867 for (int i = start_index; i < end_index; i++) { | 1867 for (int i = start_index; i < end_index; i++) { |
| 1868 for (j = (ranges->at(i) & kMask); j < (ranges->at(i + 1) & kMask); j++) { | 1868 for (j = (ranges->at(i) & kMask); j < (ranges->at(i + 1) & kMask); j++) { |
| 1869 templ[j] = bit; | 1869 templ[j] = bit; |
| 1870 } | 1870 } |
| 1871 bit ^= 1; | 1871 bit ^= 1; |
| 1872 } | 1872 } |
| 1873 for (int i = j; i < kSize; i++) { | 1873 for (int i = j; i < kSize; i++) { |
| 1874 templ[i] = bit; | 1874 templ[i] = bit; |
| 1875 } | 1875 } |
| 1876 Factory* factory = Isolate::Current()->factory(); |
| 1876 // TODO(erikcorry): Cache these. | 1877 // TODO(erikcorry): Cache these. |
| 1877 Handle<ByteArray> ba = FACTORY->NewByteArray(kSize, TENURED); | 1878 Handle<ByteArray> ba = factory->NewByteArray(kSize, TENURED); |
| 1878 for (int i = 0; i < kSize; i++) { | 1879 for (int i = 0; i < kSize; i++) { |
| 1879 ba->set(i, templ[i]); | 1880 ba->set(i, templ[i]); |
| 1880 } | 1881 } |
| 1881 masm->CheckBitInTable(ba, on_bit_set); | 1882 masm->CheckBitInTable(ba, on_bit_set); |
| 1882 if (on_bit_clear != fall_through) masm->GoTo(on_bit_clear); | 1883 if (on_bit_clear != fall_through) masm->GoTo(on_bit_clear); |
| 1883 } | 1884 } |
| 1884 | 1885 |
| 1885 | 1886 |
| 1886 static void CutOutRange(RegExpMacroAssembler* masm, | 1887 static void CutOutRange(RegExpMacroAssembler* masm, |
| 1887 ZoneList<int>* ranges, | 1888 ZoneList<int>* ranges, |
| (...skipping 1932 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3820 &cont); | 3821 &cont); |
| 3821 } else { | 3822 } else { |
| 3822 masm->CheckCharacter(single_character, &cont); | 3823 masm->CheckCharacter(single_character, &cont); |
| 3823 } | 3824 } |
| 3824 masm->AdvanceCurrentPosition(lookahead_width); | 3825 masm->AdvanceCurrentPosition(lookahead_width); |
| 3825 masm->GoTo(&again); | 3826 masm->GoTo(&again); |
| 3826 masm->Bind(&cont); | 3827 masm->Bind(&cont); |
| 3827 return true; | 3828 return true; |
| 3828 } | 3829 } |
| 3829 | 3830 |
| 3830 Handle<ByteArray> boolean_skip_table = | 3831 Factory* factory = Isolate::Current()->factory(); |
| 3831 FACTORY->NewByteArray(kSize, TENURED); | 3832 Handle<ByteArray> boolean_skip_table = factory->NewByteArray(kSize, TENURED); |
| 3832 int skip_distance = GetSkipTable( | 3833 int skip_distance = GetSkipTable( |
| 3833 min_lookahead, max_lookahead, boolean_skip_table); | 3834 min_lookahead, max_lookahead, boolean_skip_table); |
| 3834 ASSERT(skip_distance != 0); | 3835 ASSERT(skip_distance != 0); |
| 3835 | 3836 |
| 3836 Label cont, again; | 3837 Label cont, again; |
| 3837 masm->Bind(&again); | 3838 masm->Bind(&again); |
| 3838 masm->LoadCurrentCharacter(max_lookahead, &cont, true); | 3839 masm->LoadCurrentCharacter(max_lookahead, &cont, true); |
| 3839 masm->CheckBitInTable(boolean_skip_table, &cont); | 3840 masm->CheckBitInTable(boolean_skip_table, &cont); |
| 3840 masm->AdvanceCurrentPosition(skip_distance); | 3841 masm->AdvanceCurrentPosition(skip_distance); |
| 3841 masm->GoTo(&again); | 3842 masm->GoTo(&again); |
| (...skipping 2280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6122 } | 6123 } |
| 6123 | 6124 |
| 6124 return compiler.Assemble(¯o_assembler, | 6125 return compiler.Assemble(¯o_assembler, |
| 6125 node, | 6126 node, |
| 6126 data->capture_count, | 6127 data->capture_count, |
| 6127 pattern); | 6128 pattern); |
| 6128 } | 6129 } |
| 6129 | 6130 |
| 6130 | 6131 |
| 6131 }} // namespace v8::internal | 6132 }} // namespace v8::internal |
| OLD | NEW |