Make sure we register extensions only once. Removed unused member variable.
V8::Initialize() can be called from various threads simultaneously, so everything should be done only once per process or within the Isolate. For registering extensions, we do the former now. R=dslomov@chromium.org Review URL: https://codereview.chromium.org/15564002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14730 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
8743661682
commit
4a7ed948fe
@ -149,12 +149,10 @@ class RegisteredExtension {
|
|||||||
static void UnregisterAll();
|
static void UnregisterAll();
|
||||||
Extension* extension() { return extension_; }
|
Extension* extension() { return extension_; }
|
||||||
RegisteredExtension* next() { return next_; }
|
RegisteredExtension* next() { return next_; }
|
||||||
RegisteredExtension* next_auto() { return next_auto_; }
|
|
||||||
static RegisteredExtension* first_extension() { return first_extension_; }
|
static RegisteredExtension* first_extension() { return first_extension_; }
|
||||||
private:
|
private:
|
||||||
Extension* extension_;
|
Extension* extension_;
|
||||||
RegisteredExtension* next_;
|
RegisteredExtension* next_;
|
||||||
RegisteredExtension* next_auto_;
|
|
||||||
static RegisteredExtension* first_extension_;
|
static RegisteredExtension* first_extension_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -95,6 +95,10 @@ Handle<String> Bootstrapper::NativesSourceLookup(int index) {
|
|||||||
|
|
||||||
void Bootstrapper::Initialize(bool create_heap_objects) {
|
void Bootstrapper::Initialize(bool create_heap_objects) {
|
||||||
extensions_cache_.Initialize(create_heap_objects);
|
extensions_cache_.Initialize(create_heap_objects);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Bootstrapper::InitializeOncePerProcess() {
|
||||||
GCExtension::Register();
|
GCExtension::Register();
|
||||||
ExternalizeStringExtension::Register();
|
ExternalizeStringExtension::Register();
|
||||||
StatisticsExtension::Register();
|
StatisticsExtension::Register();
|
||||||
|
@ -88,6 +88,8 @@ class SourceCodeCache BASE_EMBEDDED {
|
|||||||
// context.
|
// context.
|
||||||
class Bootstrapper {
|
class Bootstrapper {
|
||||||
public:
|
public:
|
||||||
|
static void InitializeOncePerProcess();
|
||||||
|
|
||||||
// Requires: Heap::SetUp has been called.
|
// Requires: Heap::SetUp has been called.
|
||||||
void Initialize(bool create_heap_objects);
|
void Initialize(bool create_heap_objects);
|
||||||
void TearDown();
|
void TearDown();
|
||||||
|
@ -281,6 +281,7 @@ void V8::InitializeOncePerProcessImpl() {
|
|||||||
LOperand::SetUpCaches();
|
LOperand::SetUpCaches();
|
||||||
SetUpJSCallerSavedCodeData();
|
SetUpJSCallerSavedCodeData();
|
||||||
ExternalReference::SetUp();
|
ExternalReference::SetUp();
|
||||||
|
Bootstrapper::InitializeOncePerProcess();
|
||||||
}
|
}
|
||||||
|
|
||||||
void V8::InitializeOncePerProcess() {
|
void V8::InitializeOncePerProcess() {
|
||||||
|
Loading…
Reference in New Issue
Block a user