| 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); | 
| } | 
|  |