| // Copyright 2019 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // The following RegExp regression case from |
| // https://bugs.chromium.org/p/chromium/issues/detail?id=977003 |
| let g = "[\\t\\n\\f ]"; |
| let W = g + "*"; |
| let h = "[\\ud800-\\udbff][\\udc00-\\udfff]"; |
| let k = "[\\u0080-\\ud7ff\\ue000-\\ufffd]|" + h; |
| let U = "[0-9a-fA-F]{1,6}" + g + "?"; |
| let E = "(?:" + U + "|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|" + h + ")"; |
| let m = "\\\\" + E; |
| let o = "(?:[\\t\\x21\\x23-\\x26\\x28-\\x5b\\x5d-\\x7e]|" + k + "|" + m + ")"; |
| let p = '[^\'"\\n\\f\\\\]|\\\\[\\s\\S]'; |
| let q = '"(?:\'|' + p + ')*"' + '|\'(?:\"|' + p + ')*\''; |
| let r = "[-+]?(?:[0-9]+(?:[.][0-9]+)?|[.][0-9]+)"; |
| let t = "(?:[a-zA-Z_]|" + k + "|" + m + ")"; |
| let u = "(?:[a-zA-Z0-9_-]|" + k + "|" + m + ")"; |
| let v = u + "+"; |
| let I = "-?" + t + u + "*"; |
| let x = "(?:@?-?" + t + "|#)" + u + "*"; |
| let y = r + "(?:%|" + I + ")?"; |
| let z = "url[(]" + W + "(?:" + q + "|" + o + "*)" + W + "[)]"; |
| let B = "U[+][0-9A-F?]{1,6}(?:-[0-9A-F]{1,6})?"; |
| let C = "<\!--"; |
| let F = "-->"; |
| let S = g + "+"; |
| let G = "/(?:[*][^*]*[*]+(?:[^/][^*]*[*]+)*/|/[^\\n\\f]*)"; |
| let J = "(?!url[(])" + I + "[(]"; |
| let R = "[~|^$*]="; |
| let T = '[^"\'\\\\/]|/(?![/*])'; |
| let V = "\\uFEFF"; |
| let Y = [V, B, z, J, x, q, y, C, F, S, G, R, T].join("|"); |
| |
| function ComplexGlobalCaseInsensitiveMatch() { |
| // keep the RegExp in the measurement but not string concat nor join. |
| let X = new RegExp(Y, "gi"); |
| "abcſABCβκς".match(X); |
| "color:".match(X); |
| } |
| |
| benchmarks = [ [ComplexGlobalCaseInsensitiveMatch, () => {}], |
| ]; |
| |
| createBenchmarkSuite("ComplexCaseInsensitiveTest"); |