OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved.7 | 1 // Copyright 2012 the V8 project authors. All rights reserved.7 |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 | 76 |
77 return GeneratePrologue() && GenerateBody() && GenerateDeferredCode() && | 77 return GeneratePrologue() && GenerateBody() && GenerateDeferredCode() && |
78 GenerateJumpTable() && GenerateSafepointTable(); | 78 GenerateJumpTable() && GenerateSafepointTable(); |
79 } | 79 } |
80 | 80 |
81 | 81 |
82 void LCodeGen::FinishCode(Handle<Code> code) { | 82 void LCodeGen::FinishCode(Handle<Code> code) { |
83 DCHECK(is_done()); | 83 DCHECK(is_done()); |
84 code->set_stack_slots(GetTotalFrameSlotCount()); | 84 code->set_stack_slots(GetTotalFrameSlotCount()); |
85 code->set_safepoint_table_offset(safepoints_.GetCodeOffset()); | 85 code->set_safepoint_table_offset(safepoints_.GetCodeOffset()); |
| 86 Handle<ByteArray> source_positions = |
| 87 source_position_table_builder_.ToSourcePositionTable(); |
| 88 code->set_source_position_table(*source_positions); |
86 PopulateDeoptimizationData(code); | 89 PopulateDeoptimizationData(code); |
87 } | 90 } |
88 | 91 |
89 | 92 |
90 void LCodeGen::SaveCallerDoubles() { | 93 void LCodeGen::SaveCallerDoubles() { |
91 DCHECK(info()->saves_caller_doubles()); | 94 DCHECK(info()->saves_caller_doubles()); |
92 DCHECK(NeedsEagerFrame()); | 95 DCHECK(NeedsEagerFrame()); |
93 Comment(";;; Save clobbered callee double registers"); | 96 Comment(";;; Save clobbered callee double registers"); |
94 int count = 0; | 97 int count = 0; |
95 BitVector* doubles = chunk()->allocated_double_registers(); | 98 BitVector* doubles = chunk()->allocated_double_registers(); |
(...skipping 769 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
865 | 868 |
866 | 869 |
867 void LCodeGen::RecordSafepointWithRegisters(LPointerMap* pointers, | 870 void LCodeGen::RecordSafepointWithRegisters(LPointerMap* pointers, |
868 int arguments, | 871 int arguments, |
869 Safepoint::DeoptMode deopt_mode) { | 872 Safepoint::DeoptMode deopt_mode) { |
870 RecordSafepoint( | 873 RecordSafepoint( |
871 pointers, Safepoint::kWithRegisters, arguments, deopt_mode); | 874 pointers, Safepoint::kWithRegisters, arguments, deopt_mode); |
872 } | 875 } |
873 | 876 |
874 | 877 |
875 void LCodeGen::RecordAndWritePosition(int position) { | |
876 if (position == RelocInfo::kNoPosition) return; | |
877 masm()->positions_recorder()->RecordPosition(position); | |
878 } | |
879 | |
880 | |
881 static const char* LabelType(LLabel* label) { | 878 static const char* LabelType(LLabel* label) { |
882 if (label->is_loop_header()) return " (loop header)"; | 879 if (label->is_loop_header()) return " (loop header)"; |
883 if (label->is_osr_entry()) return " (OSR entry)"; | 880 if (label->is_osr_entry()) return " (OSR entry)"; |
884 return ""; | 881 return ""; |
885 } | 882 } |
886 | 883 |
887 | 884 |
888 void LCodeGen::DoLabel(LLabel* label) { | 885 void LCodeGen::DoLabel(LLabel* label) { |
889 Comment(";;; <@%d,#%d> -------------------- B%d%s --------------------", | 886 Comment(";;; <@%d,#%d> -------------------- B%d%s --------------------", |
890 current_instruction_, | 887 current_instruction_, |
(...skipping 4653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5544 __ lw(result, FieldMemOperand(scratch, | 5541 __ lw(result, FieldMemOperand(scratch, |
5545 FixedArray::kHeaderSize - kPointerSize)); | 5542 FixedArray::kHeaderSize - kPointerSize)); |
5546 __ bind(deferred->exit()); | 5543 __ bind(deferred->exit()); |
5547 __ bind(&done); | 5544 __ bind(&done); |
5548 } | 5545 } |
5549 | 5546 |
5550 #undef __ | 5547 #undef __ |
5551 | 5548 |
5552 } // namespace internal | 5549 } // namespace internal |
5553 } // namespace v8 | 5550 } // namespace v8 |
OLD | NEW |