Reviewers: Dmitry Lomov (chromium),

Message:
dslomov, can you please take a look. Not high priority, just random cleanup.

And git cl did the formatting. :-/

Description:
Avoid repeating code when creating builtins.

InstallBuiltinFunctionIds stood out when looking at code that grew
strangely when compiled with default optimizations.

This change from repeated code to a loop saves 6-7 KB of machine code.
I suspect it's faster but I also suspect it's fast enough either way so
that is not really a factor. Machine code reduction seen below.

Code formatted with git cl format.

clang x64:
Total change: -5985 bytes
-------------------------------------------
 +517 - Source: ?? - (gained 744, lost 227)
-------------------------------------------
  New symbols:
       +744: v8::internal::Genesis::InstallBuiltinFunctionIds()::builtins
type=d, size=744 bytes
  Removed symbols:
         -4: .L.str98 type=r, size=4 bytes
... [stripped 30 similar lines]
        -19: .L.str100 type=r, size=19 bytes

----------------------------------------------------------------------------------------------
-6502 - Source: /home/bratell/src/chromium/src/v8/src/bootstrapper.cc - (gained
0, lost 6502)
----------------------------------------------------------------------------------------------
  Removed symbols:
      -1135:
v8::internal::ResolveBuiltinIdHolder(v8::internal::Handle<v8::internal::Context>,
char const*) type=t, size=1135 bytes
  Shrunk symbols:
      -5367: v8::internal::Genesis::InstallBuiltinFunctionIds() type=t, (was
7105 bytes, now 1738 bytes)

BUG=

Please review this at https://codereview.chromium.org/918303005/

Base URL: https://chromium.googlesource.com/v8/v8.git@master

Affected files (+16, -7 lines):
  M src/bootstrapper.cc


Index: src/bootstrapper.cc
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
index 31d6e3e00c2cc355bc8b2caaface11a6989d55bd..c60e3023df1854d8c4d9a7645b2f6edb37bd6695 100644
--- a/src/bootstrapper.cc
+++ b/src/bootstrapper.cc
@@ -2267,15 +2267,24 @@ static void InstallBuiltinFunctionId(Handle<JSObject> holder,

 void Genesis::InstallBuiltinFunctionIds() {
   HandleScope scope(isolate());
+  struct BuiltinFunctionIds {
+    const char* holder_expr;
+    const char* fun_name;
+    BuiltinFunctionId id;
+  };
+
 #define INSTALL_BUILTIN_ID(holder_expr, fun_name, name) \
-  {                                                     \
-    Handle<JSObject> holder = ResolveBuiltinIdHolder(   \
-        native_context(), #holder_expr);                \
-    BuiltinFunctionId id = k##name;                     \
-    InstallBuiltinFunctionId(holder, #fun_name, id);    \
-  }
-  FUNCTIONS_WITH_ID_LIST(INSTALL_BUILTIN_ID)
+  { #holder_expr, #fun_name, k##name }                  \
+  ,
+  const BuiltinFunctionIds builtins[] = {
+      FUNCTIONS_WITH_ID_LIST(INSTALL_BUILTIN_ID)};
 #undef INSTALL_BUILTIN_ID
+
+  for (const BuiltinFunctionIds& builtin : builtins) {
+    Handle<JSObject> holder =
+        ResolveBuiltinIdHolder(native_context(), builtin.holder_expr);
+    InstallBuiltinFunctionId(holder, builtin.fun_name, builtin.id);
+  }
 }




--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to