| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/deopt_instructions.h" | 5 #include "vm/deopt_instructions.h" |
| 6 | 6 |
| 7 #include "vm/assembler.h" | 7 #include "vm/assembler.h" |
| 8 #include "vm/code_patcher.h" | 8 #include "vm/code_patcher.h" |
| 9 #include "vm/intermediate_language.h" | 9 #include "vm/intermediate_language.h" |
| 10 #include "vm/locations.h" | 10 #include "vm/locations.h" |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 | 184 |
| 185 | 185 |
| 186 static bool IsObjectInstruction(DeoptInstr::Kind kind) { | 186 static bool IsObjectInstruction(DeoptInstr::Kind kind) { |
| 187 switch (kind) { | 187 switch (kind) { |
| 188 case DeoptInstr::kConstant: | 188 case DeoptInstr::kConstant: |
| 189 case DeoptInstr::kStackSlot: | 189 case DeoptInstr::kStackSlot: |
| 190 case DeoptInstr::kDoubleStackSlot: | 190 case DeoptInstr::kDoubleStackSlot: |
| 191 case DeoptInstr::kInt64StackSlot: | 191 case DeoptInstr::kInt64StackSlot: |
| 192 case DeoptInstr::kFloat32x4StackSlot: | 192 case DeoptInstr::kFloat32x4StackSlot: |
| 193 case DeoptInstr::kInt32x4StackSlot: | 193 case DeoptInstr::kInt32x4StackSlot: |
| 194 case DeoptInstr::kFloat64x2StackSlot: |
| 194 case DeoptInstr::kPp: | 195 case DeoptInstr::kPp: |
| 195 case DeoptInstr::kCallerPp: | 196 case DeoptInstr::kCallerPp: |
| 196 case DeoptInstr::kMaterializedObjectRef: | 197 case DeoptInstr::kMaterializedObjectRef: |
| 197 return true; | 198 return true; |
| 198 | 199 |
| 199 case DeoptInstr::kRegister: | 200 case DeoptInstr::kRegister: |
| 200 case DeoptInstr::kFpuRegister: | 201 case DeoptInstr::kFpuRegister: |
| 201 case DeoptInstr::kInt64FpuRegister: | 202 case DeoptInstr::kInt64FpuRegister: |
| 202 case DeoptInstr::kFloat32x4FpuRegister: | 203 case DeoptInstr::kFloat32x4FpuRegister: |
| 203 case DeoptInstr::kInt32x4FpuRegister: | 204 case DeoptInstr::kInt32x4FpuRegister: |
| 205 case DeoptInstr::kFloat64x2FpuRegister: |
| 204 // TODO(turnidge): Sometimes we encounter a deopt instruction | 206 // TODO(turnidge): Sometimes we encounter a deopt instruction |
| 205 // with a register source while deoptimizing frames during | 207 // with a register source while deoptimizing frames during |
| 206 // debugging but we haven't saved our register set. This | 208 // debugging but we haven't saved our register set. This |
| 207 // happens specifically when using the VMService to inspect the | 209 // happens specifically when using the VMService to inspect the |
| 208 // stack. In that case, the register values will have been | 210 // stack. In that case, the register values will have been |
| 209 // saved before the StackOverflow runtime call but we do not | 211 // saved before the StackOverflow runtime call but we do not |
| 210 // actually keep track of which registers were saved and | 212 // actually keep track of which registers were saved and |
| 211 // restored. | 213 // restored. |
| 212 // | 214 // |
| 213 // It is possible to save this information at the point of the | 215 // It is possible to save this information at the point of the |
| (...skipping 1263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1477 Smi* offset, | 1479 Smi* offset, |
| 1478 DeoptInfo* info, | 1480 DeoptInfo* info, |
| 1479 Smi* reason) { | 1481 Smi* reason) { |
| 1480 intptr_t i = index * kEntrySize; | 1482 intptr_t i = index * kEntrySize; |
| 1481 *offset ^= table.At(i); | 1483 *offset ^= table.At(i); |
| 1482 *info ^= table.At(i + 1); | 1484 *info ^= table.At(i + 1); |
| 1483 *reason ^= table.At(i + 2); | 1485 *reason ^= table.At(i + 2); |
| 1484 } | 1486 } |
| 1485 | 1487 |
| 1486 } // namespace dart | 1488 } // namespace dart |
| OLD | NEW |