| Index: src/safepoint-table.cc
|
| ===================================================================
|
| --- src/safepoint-table.cc (revision 6955)
|
| +++ src/safepoint-table.cc (working copy)
|
| @@ -128,6 +128,7 @@
|
| 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);
|
| @@ -144,6 +145,7 @@
|
| 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));
|
| @@ -151,6 +153,22 @@
|
| }
|
|
|
|
|
| +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_;
|
| @@ -230,6 +248,7 @@
|
| 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;
|
| }
|
|
|
|
|