Ensure `String.prototype.normalize.length` is `0`
authormathias <mathias@qiwi.be>
Wed, 5 Aug 2015 15:11:10 +0000 (08:11 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 5 Aug 2015 15:13:45 +0000 (15:13 +0000)
TEST=test/intl/string/normalization
BUG=v8:4303
LOG=N

Review URL: https://codereview.chromium.org/1274653002

Cr-Commit-Position: refs/heads/master@{#30030}

src/i18n.js
src/string.js
test/intl/string/normalization.js

index 1028bbb07b3d70706290848f14110d4bee8d7dd5..53cc48714704169e6ac6d620a6299be8f206d827 100644 (file)
@@ -1995,14 +1995,16 @@ OverrideFunction(GlobalString.prototype, 'localeCompare', function(that) {
  * If the form is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw
  * a RangeError Exception.
  */
-OverrideFunction(GlobalString.prototype, 'normalize', function(form) {
+
+OverrideFunction(GlobalString.prototype, 'normalize', function() {
     if (%_IsConstructCall()) {
       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor);
     }
 
     CHECK_OBJECT_COERCIBLE(this, "String.prototype.normalize");
 
-    form = IS_UNDEFINED(form) ? 'NFC' : form;
+    var formArg = %_Arguments(0);
+    var form = IS_UNDEFINED(formArg) ? 'NFC' : TO_STRING_INLINE(formArg);
 
     var NORMALIZATION_FORMS = ['NFC', 'NFD', 'NFKC', 'NFKD'];
 
index b543a8e2a27b2848b6cd0e07a7ab8e4950b8eca3..dd2b9d7b9cae7c315279a8ba7ac9d02f68ed9025 100644 (file)
@@ -189,10 +189,11 @@ function StringMatchJS(regexp) {
 // For now we do nothing, as proper normalization requires big tables.
 // If Intl is enabled, then i18n.js will override it and provide the the
 // proper functionality.
-function StringNormalizeJS(form) {
+function StringNormalizeJS() {
   CHECK_OBJECT_COERCIBLE(this, "String.prototype.normalize");
 
-  var form = IS_UNDEFINED(form) ? 'NFC' : TO_STRING_INLINE(form);
+  var formArg = %_Arguments(0);
+  var form = IS_UNDEFINED(formArg) ? 'NFC' : TO_STRING_INLINE(formArg);
 
   var NORMALIZATION_FORMS = ['NFC', 'NFD', 'NFKC', 'NFKD'];
   var normalizationForm =
index 446d6277db174878de2a732cf0b0d449ed2f09f9..25d314ea287c8b173db367c04212311970f1cc51 100644 (file)
@@ -27,6 +27,8 @@
 
 // Tests the new String.prototype.normalize method.
 
+assertEquals(String.prototype.normalize.length, 0);
+assertEquals(String.prototype.propertyIsEnumerable("normalize"), false);
 
 // Common use case when searching for 'not very exact' match.
 // These are examples of data one might encounter in real use.