| Index: src/builtins.cc
 | 
| diff --git a/src/builtins.cc b/src/builtins.cc
 | 
| index 7290a2cf1cef2611efc35a6943fc588bb9f70dc3..203488432e8299a9f4539c33105fcffa1dbb899b 100644
 | 
| --- a/src/builtins.cc
 | 
| +++ b/src/builtins.cc
 | 
| @@ -1588,30 +1588,30 @@ struct BuiltinDesc {
 | 
|    BuiltinExtraArguments extra_args;
 | 
|  };
 | 
|  
 | 
| +#define BUILTIN_FUNCTION_TABLE_INIT { V8_ONCE_INIT, {} }
 | 
| +
 | 
|  class BuiltinFunctionTable {
 | 
|   public:
 | 
| -  BuiltinFunctionTable() {
 | 
| -    Builtins::InitBuiltinFunctionTable();
 | 
| +  BuiltinDesc* functions() {
 | 
| +    CallOnce(&once_, &Builtins::InitBuiltinFunctionTable);
 | 
| +    return functions_;
 | 
|    }
 | 
|  
 | 
| -  static const BuiltinDesc* functions() { return functions_; }
 | 
| -
 | 
| - private:
 | 
| -  static BuiltinDesc functions_[Builtins::builtin_count + 1];
 | 
| +  OnceType once_;
 | 
| +  BuiltinDesc functions_[Builtins::builtin_count + 1];
 | 
|  
 | 
|    friend class Builtins;
 | 
|  };
 | 
|  
 | 
| -BuiltinDesc BuiltinFunctionTable::functions_[Builtins::builtin_count + 1];
 | 
| -
 | 
| -static const BuiltinFunctionTable builtin_function_table_init;
 | 
| +static BuiltinFunctionTable builtin_function_table =
 | 
| +    BUILTIN_FUNCTION_TABLE_INIT;
 | 
|  
 | 
|  // Define array of pointers to generators and C builtin functions.
 | 
|  // We do this in a sort of roundabout way so that we can do the initialization
 | 
|  // within the lexical scope of Builtins:: and within a context where
 | 
|  // Code::Flags names a non-abstract type.
 | 
|  void Builtins::InitBuiltinFunctionTable() {
 | 
| -  BuiltinDesc* functions = BuiltinFunctionTable::functions_;
 | 
| +  BuiltinDesc* functions = builtin_function_table.functions_;
 | 
|    functions[builtin_count].generator = NULL;
 | 
|    functions[builtin_count].c_code = NULL;
 | 
|    functions[builtin_count].s_name = NULL;
 | 
| @@ -1655,7 +1655,7 @@ void Builtins::SetUp(bool create_heap_objects) {
 | 
|    // Create a scope for the handles in the builtins.
 | 
|    HandleScope scope(isolate);
 | 
|  
 | 
| -  const BuiltinDesc* functions = BuiltinFunctionTable::functions();
 | 
| +  const BuiltinDesc* functions = builtin_function_table.functions();
 | 
|  
 | 
|    // For now we generate builtin adaptor code into a stack-allocated
 | 
|    // buffer, before copying it into individual code objects. Be careful
 | 
| 
 |