| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index f223b0fc9461a138fb0abd67d7bee22fcdea85b1..b6e0eaca94a8871cc780adea4225941fb672709c 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -7933,17 +7933,11 @@ Object* AccessorPair::GetComponent(AccessorComponent component) {
|
|
|
|
|
| Handle<DeoptimizationInputData> DeoptimizationInputData::New(
|
| - Isolate* isolate, int deopt_entry_count, int return_patch_address_count,
|
| - PretenureFlag pretenure) {
|
| - DCHECK(deopt_entry_count + return_patch_address_count > 0);
|
| - Handle<FixedArray> deoptimization_data =
|
| - Handle<FixedArray>::cast(isolate->factory()->NewFixedArray(
|
| - LengthFor(deopt_entry_count, return_patch_address_count), pretenure));
|
| - deoptimization_data->set(kDeoptEntryCountIndex,
|
| - Smi::FromInt(deopt_entry_count));
|
| - deoptimization_data->set(kReturnAddressPatchEntryCountIndex,
|
| - Smi::FromInt(return_patch_address_count));
|
| - return Handle<DeoptimizationInputData>::cast(deoptimization_data);
|
| + Isolate* isolate, int deopt_entry_count, PretenureFlag pretenure) {
|
| + DCHECK(deopt_entry_count > 0);
|
| + return Handle<DeoptimizationInputData>::cast(
|
| + isolate->factory()->NewFixedArray(LengthFor(deopt_entry_count),
|
| + pretenure));
|
| }
|
|
|
|
|
| @@ -10291,26 +10285,7 @@ int Code::SourceStatementPosition(Address pc) {
|
|
|
| SafepointEntry Code::GetSafepointEntry(Address pc) {
|
| SafepointTable table(this);
|
| - SafepointEntry entry = table.FindEntry(pc);
|
| - if (entry.is_valid() || !is_turbofanned()) {
|
| - return entry;
|
| - }
|
| -
|
| - // If the code is turbofanned, we might be looking for
|
| - // an address that was patched by lazy deoptimization.
|
| - // In that case look through the patch table, try to
|
| - // lookup the original address there, and then use this
|
| - // to find the safepoint entry.
|
| - DeoptimizationInputData* deopt_data =
|
| - DeoptimizationInputData::cast(deoptimization_data());
|
| - intptr_t offset = pc - instruction_start();
|
| - for (int i = 0; i < deopt_data->ReturnAddressPatchCount(); i++) {
|
| - if (deopt_data->PatchedAddressPc(i)->value() == offset) {
|
| - int original_offset = deopt_data->ReturnAddressPc(i)->value();
|
| - return table.FindEntry(instruction_start() + original_offset);
|
| - }
|
| - }
|
| - return SafepointEntry();
|
| + return table.FindEntry(pc);
|
| }
|
|
|
|
|
| @@ -10863,19 +10838,6 @@ void DeoptimizationInputData::DeoptimizationInputDataPrint(
|
| os << "\n";
|
| }
|
| }
|
| -
|
| - int return_address_patch_count = ReturnAddressPatchCount();
|
| - if (return_address_patch_count != 0) {
|
| - os << "Return address patch data (count = " << return_address_patch_count
|
| - << ")\n";
|
| - os << " index pc patched_pc\n";
|
| - }
|
| - for (int i = 0; i < return_address_patch_count; i++) {
|
| - Vector<char> buf = Vector<char>::New(128);
|
| - SNPrintF(buf, "%6d %6d %12d\n", i, ReturnAddressPc(i)->value(),
|
| - PatchedAddressPc(i)->value());
|
| - os << buf.start();
|
| - }
|
| }
|
|
|
|
|
| @@ -11006,6 +10968,13 @@ void Code::Disassemble(const char* name, OStream& os) { // NOLINT
|
| } else {
|
| os << "<none>";
|
| }
|
| + if (entry.deoptimization_pc() != Safepoint::kNoDeoptimizationPc) {
|
| + Vector<char> buf2 = Vector<char>::New(30);
|
| + SNPrintF(buf2, "%6d", entry.deoptimization_pc());
|
| + os << buf2.start();
|
| + } else {
|
| + os << "<none>";
|
| + }
|
| if (entry.argument_count() > 0) {
|
| os << " argc: " << entry.argument_count();
|
| }
|
|
|