| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/bootstrapper.h" | 5 #include "src/bootstrapper.h" |
| 6 | 6 |
| 7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
| 8 #include "src/api-natives.h" | 8 #include "src/api-natives.h" |
| 9 #include "src/base/ieee754.h" | 9 #include "src/base/ieee754.h" |
| 10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
| (...skipping 1856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1867 } | 1867 } |
| 1868 | 1868 |
| 1869 // Store the initial RegExp.prototype map. This is used in fast-path | 1869 // Store the initial RegExp.prototype map. This is used in fast-path |
| 1870 // checks. Do not alter the prototype after this point. | 1870 // checks. Do not alter the prototype after this point. |
| 1871 native_context()->set_regexp_prototype_map(prototype->map()); | 1871 native_context()->set_regexp_prototype_map(prototype->map()); |
| 1872 } | 1872 } |
| 1873 | 1873 |
| 1874 { | 1874 { |
| 1875 // RegExp getters and setters. | 1875 // RegExp getters and setters. |
| 1876 | 1876 |
| 1877 // TODO(jgruber): This should really be DONT_ENUM | DONT_DELETE. | |
| 1878 // However, that currently breaks layout test expectations. Note that | |
| 1879 // Firefox sets a couple of these as enumerable. | |
| 1880 // On the other hand, installing attributes as DONT_ENUM matches the draft | |
| 1881 // specification at | |
| 1882 // https://github.com/claudepache/es-regexp-legacy-static-properties. | |
| 1883 const PropertyAttributes no_enum = DONT_ENUM; | |
| 1884 | |
| 1885 SimpleInstallGetter(regexp_fun, | 1877 SimpleInstallGetter(regexp_fun, |
| 1886 factory->InternalizeUtf8String("[Symbol.species]"), | 1878 factory->InternalizeUtf8String("[Symbol.species]"), |
| 1887 factory->species_symbol(), | 1879 factory->species_symbol(), |
| 1888 Builtins::kRegExpPrototypeSpeciesGetter, false); | 1880 Builtins::kRegExpPrototypeSpeciesGetter, false); |
| 1889 | 1881 |
| 1890 // Static properties set by a successful match. | 1882 // Static properties set by a successful match. |
| 1891 | 1883 |
| 1884 const PropertyAttributes no_enum = DONT_ENUM; |
| 1892 SimpleInstallGetterSetter(regexp_fun, factory->input_string(), | 1885 SimpleInstallGetterSetter(regexp_fun, factory->input_string(), |
| 1893 Builtins::kRegExpInputGetter, | 1886 Builtins::kRegExpInputGetter, |
| 1894 Builtins::kRegExpInputSetter, DONT_DELETE); | 1887 Builtins::kRegExpInputSetter, no_enum); |
| 1895 SimpleInstallGetterSetter( | 1888 SimpleInstallGetterSetter( |
| 1896 regexp_fun, factory->InternalizeUtf8String("$_"), | 1889 regexp_fun, factory->InternalizeUtf8String("$_"), |
| 1897 Builtins::kRegExpInputGetter, Builtins::kRegExpInputSetter, no_enum); | 1890 Builtins::kRegExpInputGetter, Builtins::kRegExpInputSetter, no_enum); |
| 1898 | 1891 |
| 1899 SimpleInstallGetterSetter( | 1892 SimpleInstallGetterSetter( |
| 1900 regexp_fun, factory->InternalizeUtf8String("lastMatch"), | 1893 regexp_fun, factory->InternalizeUtf8String("lastMatch"), |
| 1901 Builtins::kRegExpLastMatchGetter, Builtins::kEmptyFunction, no_enum); | 1894 Builtins::kRegExpLastMatchGetter, Builtins::kEmptyFunction, no_enum); |
| 1902 SimpleInstallGetterSetter( | 1895 SimpleInstallGetterSetter( |
| 1903 regexp_fun, factory->InternalizeUtf8String("$&"), | 1896 regexp_fun, factory->InternalizeUtf8String("$&"), |
| 1904 Builtins::kRegExpLastMatchGetter, Builtins::kEmptyFunction, no_enum); | 1897 Builtins::kRegExpLastMatchGetter, Builtins::kEmptyFunction, no_enum); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1921 | 1914 |
| 1922 SimpleInstallGetterSetter(regexp_fun, | 1915 SimpleInstallGetterSetter(regexp_fun, |
| 1923 factory->InternalizeUtf8String("rightContext"), | 1916 factory->InternalizeUtf8String("rightContext"), |
| 1924 Builtins::kRegExpRightContextGetter, | 1917 Builtins::kRegExpRightContextGetter, |
| 1925 Builtins::kEmptyFunction, no_enum); | 1918 Builtins::kEmptyFunction, no_enum); |
| 1926 SimpleInstallGetterSetter(regexp_fun, | 1919 SimpleInstallGetterSetter(regexp_fun, |
| 1927 factory->InternalizeUtf8String("$'"), | 1920 factory->InternalizeUtf8String("$'"), |
| 1928 Builtins::kRegExpRightContextGetter, | 1921 Builtins::kRegExpRightContextGetter, |
| 1929 Builtins::kEmptyFunction, no_enum); | 1922 Builtins::kEmptyFunction, no_enum); |
| 1930 | 1923 |
| 1931 #define INSTALL_CAPTURE_GETTER(i) \ | 1924 #define INSTALL_CAPTURE_GETTER(i) \ |
| 1932 SimpleInstallGetterSetter(regexp_fun, \ | 1925 SimpleInstallGetterSetter( \ |
| 1933 factory->InternalizeUtf8String("$" #i), \ | 1926 regexp_fun, factory->InternalizeUtf8String("$" #i), \ |
| 1934 Builtins::kRegExpCapture##i##Getter, \ | 1927 Builtins::kRegExpCapture##i##Getter, Builtins::kEmptyFunction, no_enum) |
| 1935 Builtins::kEmptyFunction, DONT_DELETE) | |
| 1936 INSTALL_CAPTURE_GETTER(1); | 1928 INSTALL_CAPTURE_GETTER(1); |
| 1937 INSTALL_CAPTURE_GETTER(2); | 1929 INSTALL_CAPTURE_GETTER(2); |
| 1938 INSTALL_CAPTURE_GETTER(3); | 1930 INSTALL_CAPTURE_GETTER(3); |
| 1939 INSTALL_CAPTURE_GETTER(4); | 1931 INSTALL_CAPTURE_GETTER(4); |
| 1940 INSTALL_CAPTURE_GETTER(5); | 1932 INSTALL_CAPTURE_GETTER(5); |
| 1941 INSTALL_CAPTURE_GETTER(6); | 1933 INSTALL_CAPTURE_GETTER(6); |
| 1942 INSTALL_CAPTURE_GETTER(7); | 1934 INSTALL_CAPTURE_GETTER(7); |
| 1943 INSTALL_CAPTURE_GETTER(8); | 1935 INSTALL_CAPTURE_GETTER(8); |
| 1944 INSTALL_CAPTURE_GETTER(9); | 1936 INSTALL_CAPTURE_GETTER(9); |
| 1945 #undef INSTALL_CAPTURE_GETTER | 1937 #undef INSTALL_CAPTURE_GETTER |
| (...skipping 2626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4572 } | 4564 } |
| 4573 | 4565 |
| 4574 | 4566 |
| 4575 // Called when the top-level V8 mutex is destroyed. | 4567 // Called when the top-level V8 mutex is destroyed. |
| 4576 void Bootstrapper::FreeThreadResources() { | 4568 void Bootstrapper::FreeThreadResources() { |
| 4577 DCHECK(!IsActive()); | 4569 DCHECK(!IsActive()); |
| 4578 } | 4570 } |
| 4579 | 4571 |
| 4580 } // namespace internal | 4572 } // namespace internal |
| 4581 } // namespace v8 | 4573 } // namespace v8 |
| OLD | NEW |