Index: src/isolate.cc |
diff --git a/src/isolate.cc b/src/isolate.cc |
index a1fa8b040c65cc529deb60ccf51256dab8f1f5c7..bc24b71a678b0c6b3d24ba57ed35c6c9b46c4ec4 100644 |
--- a/src/isolate.cc |
+++ b/src/isolate.cc |
@@ -1550,6 +1550,7 @@ Isolate::Isolate() |
regexp_stack_(NULL), |
date_cache_(NULL), |
code_stub_interface_descriptors_(NULL), |
+ call_descriptors_(NULL), |
// TODO(bmeurer) Initialized lazily because it depends on flags; can |
// be fixed once the default isolate cleanup is done. |
random_number_generator_(NULL), |
@@ -1758,6 +1759,9 @@ Isolate::~Isolate() { |
delete[] code_stub_interface_descriptors_; |
code_stub_interface_descriptors_ = NULL; |
+ delete[] call_descriptors_; |
+ call_descriptors_ = NULL; |
+ |
delete regexp_stack_; |
regexp_stack_ = NULL; |
@@ -1948,6 +1952,8 @@ bool Isolate::Init(Deserializer* des) { |
date_cache_ = new DateCache(); |
code_stub_interface_descriptors_ = |
new CodeStubInterfaceDescriptor[CodeStub::NUMBER_OF_IDS]; |
+ call_descriptors_ = |
+ new CallInterfaceDescriptor[NUMBER_OF_CALL_DESCRIPTORS]; |
cpu_profiler_ = new CpuProfiler(this); |
heap_profiler_ = new HeapProfiler(heap()); |
@@ -2109,6 +2115,8 @@ bool Isolate::Init(Deserializer* des) { |
NewStringAddStub::InstallDescriptors(this); |
} |
+ CallDescriptors::InitializeForIsolate(this); |
+ |
initialized_from_snapshot_ = (des != NULL); |
return true; |
@@ -2286,6 +2294,13 @@ CodeStubInterfaceDescriptor* |
} |
+CallInterfaceDescriptor* |
+ Isolate::call_descriptor(CallDescriptorKey index) { |
+ ASSERT(0 <= index && index < NUMBER_OF_CALL_DESCRIPTORS); |
+ return &call_descriptors_[index]; |
+} |
+ |
+ |
Object* Isolate::FindCodeObject(Address a) { |
return inner_pointer_to_code_cache()->GcSafeFindCodeForInnerPointer(a); |
} |