From 3a416133409c342ce51d7609fa21e68c8c3aa8fe Mon Sep 17 00:00:00 2001 From: "ricow@chromium.org" Date: Mon, 7 Nov 2011 10:50:39 +0000 Subject: [PATCH] Optimize format message to not use DefineOwnProperty and freeze, do these inline Review URL: http://codereview.chromium.org/8494005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9893 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/messages.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/messages.js b/src/messages.js index e50f295..2df734c 100644 --- a/src/messages.js +++ b/src/messages.js @@ -247,16 +247,21 @@ function FormatMessage(message) { "redef_external_array_element", ["Cannot redefine a property of an object with external array elements"], ]; var messages = { __proto__ : null }; - var desc = new PropertyDescriptor(); - desc.setConfigurable(false); - desc.setEnumerable(false); - desc.setWritable(false); for (var i = 0; i < messagesDictionary.length; i += 2) { var key = messagesDictionary[i]; var format = messagesDictionary[i + 1]; - ObjectFreeze(format); - desc.setValue(format); - DefineOwnProperty(messages, key, desc); + + for (var j = 0; j < format.length; j++) { + %IgnoreAttributesAndSetProperty(format, %_NumberToString(j), format[j], + DONT_DELETE | READ_ONLY | DONT_ENUM); + } + %IgnoreAttributesAndSetProperty(format, 'length', format.length, + DONT_DELETE | READ_ONLY | DONT_ENUM); + %PreventExtensions(format); + %IgnoreAttributesAndSetProperty(messages, + key, + format, + DONT_DELETE | DONT_ENUM | READ_ONLY); } %PreventExtensions(messages); %IgnoreAttributesAndSetProperty(builtins, "kMessages", -- 2.7.4