| Index: src/deoptimizer.cc
|
| diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc
|
| index e874122e133703715d1e5d7af654def060a2775a..c590d6630555a73e0336ac36a6cc43e851a5a2e8 100644
|
| --- a/src/deoptimizer.cc
|
| +++ b/src/deoptimizer.cc
|
| @@ -1622,17 +1622,18 @@ void Deoptimizer::DoComputeCompiledStubFrame(TranslationIterator* iterator,
|
|
|
| CHECK(compiled_code_->is_hydrogen_stub());
|
| int major_key = CodeStub::GetMajorKey(compiled_code_);
|
| - CodeStubInterfaceDescriptor* descriptor =
|
| - isolate_->code_stub_interface_descriptor(major_key);
|
| + CodeStubInterfaceDescriptor descriptor;
|
| + CodeStub::InitializeInterfaceDescriptor(isolate_, compiled_code_->stub_key(),
|
| + &descriptor);
|
| // Check that there is a matching descriptor to the major key.
|
| // This will fail if there has not been one installed to the isolate.
|
| - DCHECK_EQ(descriptor->MajorKey(), major_key);
|
| + DCHECK_EQ(descriptor.MajorKey(), major_key);
|
|
|
| // The output frame must have room for all pushed register parameters
|
| // and the standard stack frame slots. Include space for an argument
|
| // object to the callee and optionally the space to pass the argument
|
| // object to the stub failure handler.
|
| - int param_count = descriptor->GetEnvironmentParameterCount();
|
| + int param_count = descriptor.GetEnvironmentParameterCount();
|
| CHECK_GE(param_count, 0);
|
|
|
| int height_in_bytes = kPointerSize * param_count + sizeof(Arguments) +
|
| @@ -1730,7 +1731,7 @@ void Deoptimizer::DoComputeCompiledStubFrame(TranslationIterator* iterator,
|
| }
|
|
|
| intptr_t caller_arg_count = 0;
|
| - bool arg_count_known = !descriptor->stack_parameter_count().is_valid();
|
| + bool arg_count_known = !descriptor.stack_parameter_count().is_valid();
|
|
|
| // Build the Arguments object for the caller's parameters and a pointer to it.
|
| output_frame_offset -= kPointerSize;
|
| @@ -1782,8 +1783,7 @@ void Deoptimizer::DoComputeCompiledStubFrame(TranslationIterator* iterator,
|
| output_frame_offset -= kPointerSize;
|
| DoTranslateCommand(iterator, 0, output_frame_offset);
|
|
|
| - if (!arg_count_known &&
|
| - descriptor->IsEnvironmentParameterCountRegister(i)) {
|
| + if (!arg_count_known && descriptor.IsEnvironmentParameterCountRegister(i)) {
|
| arguments_length_offset = output_frame_offset;
|
| }
|
| }
|
| @@ -1822,11 +1822,11 @@ void Deoptimizer::DoComputeCompiledStubFrame(TranslationIterator* iterator,
|
| CopyDoubleRegisters(output_frame);
|
|
|
| // Fill registers containing handler and number of parameters.
|
| - SetPlatformCompiledStubRegisters(output_frame, descriptor);
|
| + SetPlatformCompiledStubRegisters(output_frame, &descriptor);
|
|
|
| // Compute this frame's PC, state, and continuation.
|
| Code* trampoline = NULL;
|
| - StubFunctionMode function_mode = descriptor->function_mode();
|
| + StubFunctionMode function_mode = descriptor.function_mode();
|
| StubFailureTrampolineStub(isolate_,
|
| function_mode).FindCodeInCache(&trampoline);
|
| DCHECK(trampoline != NULL);
|
|
|