| Index: src/safepoint-table.cc
|
| diff --git a/src/safepoint-table.cc b/src/safepoint-table.cc
|
| index 39b211cd925e4d52ad66aa7c8d56c9b9f98ad700..e79dcff09a2ccb9504cac4fc3cefc496456d5527 100644
|
| --- a/src/safepoint-table.cc
|
| +++ b/src/safepoint-table.cc
|
| @@ -125,6 +125,7 @@ Safepoint SafepointTableBuilder::DefineSafepoint(Assembler* assembler,
|
| pc_and_deoptimization_index.deoptimization_index = deoptimization_index;
|
| pc_and_deoptimization_index.pc_after_gap = assembler->pc_offset();
|
| pc_and_deoptimization_index.arguments = 0;
|
| + pc_and_deoptimization_index.has_doubles = false;
|
| deoptimization_info_.Add(pc_and_deoptimization_index);
|
| indexes_.Add(new ZoneList<int>(8));
|
| registers_.Add(NULL);
|
| @@ -141,6 +142,7 @@ Safepoint SafepointTableBuilder::DefineSafepointWithRegisters(
|
| pc_and_deoptimization_index.deoptimization_index = deoptimization_index;
|
| pc_and_deoptimization_index.pc_after_gap = assembler->pc_offset();
|
| pc_and_deoptimization_index.arguments = arguments;
|
| + pc_and_deoptimization_index.has_doubles = false;
|
| deoptimization_info_.Add(pc_and_deoptimization_index);
|
| indexes_.Add(new ZoneList<int>(8));
|
| registers_.Add(new ZoneList<int>(4));
|
| @@ -148,6 +150,22 @@ Safepoint SafepointTableBuilder::DefineSafepointWithRegisters(
|
| }
|
|
|
|
|
| +Safepoint SafepointTableBuilder::DefineSafepointWithRegistersAndDoubles(
|
| + Assembler* assembler, int arguments, int deoptimization_index) {
|
| + ASSERT(deoptimization_index != -1);
|
| + ASSERT(arguments >= 0);
|
| + DeoptimizationInfo pc_and_deoptimization_index;
|
| + pc_and_deoptimization_index.pc = assembler->pc_offset();
|
| + pc_and_deoptimization_index.deoptimization_index = deoptimization_index;
|
| + pc_and_deoptimization_index.pc_after_gap = assembler->pc_offset();
|
| + pc_and_deoptimization_index.arguments = arguments;
|
| + pc_and_deoptimization_index.has_doubles = true;
|
| + deoptimization_info_.Add(pc_and_deoptimization_index);
|
| + indexes_.Add(new ZoneList<int>(8));
|
| + registers_.Add(new ZoneList<int>(4));
|
| + return Safepoint(indexes_.last(), registers_.last());
|
| +}
|
| +
|
| unsigned SafepointTableBuilder::GetCodeOffset() const {
|
| ASSERT(emitted_);
|
| return offset_;
|
| @@ -227,6 +245,7 @@ uint32_t SafepointTableBuilder::EncodeExceptPC(const DeoptimizationInfo& info) {
|
| uint32_t encoding = SafepointEntry::DeoptimizationIndexField::encode(index);
|
| encoding |= SafepointEntry::GapCodeSizeField::encode(gap_size);
|
| encoding |= SafepointEntry::ArgumentsField::encode(info.arguments);
|
| + encoding |= SafepointEntry::SaveDoublesField::encode(info.has_doubles);
|
| return encoding;
|
| }
|
|
|
|
|