Commit 3a416133 authored by ricow@chromium.org's avatar ricow@chromium.org

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
parent 52b1457f
...@@ -247,16 +247,21 @@ function FormatMessage(message) { ...@@ -247,16 +247,21 @@ function FormatMessage(message) {
"redef_external_array_element", ["Cannot redefine a property of an object with external array elements"], "redef_external_array_element", ["Cannot redefine a property of an object with external array elements"],
]; ];
var messages = { __proto__ : null }; 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) { for (var i = 0; i < messagesDictionary.length; i += 2) {
var key = messagesDictionary[i]; var key = messagesDictionary[i];
var format = messagesDictionary[i + 1]; var format = messagesDictionary[i + 1];
ObjectFreeze(format);
desc.setValue(format); for (var j = 0; j < format.length; j++) {
DefineOwnProperty(messages, key, desc); %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); %PreventExtensions(messages);
%IgnoreAttributesAndSetProperty(builtins, "kMessages", %IgnoreAttributesAndSetProperty(builtins, "kMessages",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment