| 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/globals.h" // Needed here to get TARGET_ARCH_IA32. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_IA32. |
| 6 #if defined(TARGET_ARCH_IA32) | 6 #if defined(TARGET_ARCH_IA32) |
| 7 | 7 |
| 8 #include "vm/flow_graph_compiler.h" | 8 #include "vm/flow_graph_compiler.h" |
| 9 | 9 |
| 10 #include "lib/error.h" | 10 #include "lib/error.h" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 EmitMaterializations(deopt_env_, builder); | 61 EmitMaterializations(deopt_env_, builder); |
| 62 | 62 |
| 63 // The real frame starts here. | 63 // The real frame starts here. |
| 64 builder->MarkFrameStart(); | 64 builder->MarkFrameStart(); |
| 65 | 65 |
| 66 // Callee's PC marker is not used anymore. Pass Function::null() to set to 0. | 66 // Callee's PC marker is not used anymore. Pass Function::null() to set to 0. |
| 67 builder->AddPcMarker(Function::Handle(), slot_ix++); | 67 builder->AddPcMarker(Function::Handle(), slot_ix++); |
| 68 | 68 |
| 69 // Current FP and PC. | 69 // Current FP and PC. |
| 70 builder->AddCallerFp(slot_ix++); | 70 builder->AddCallerFp(slot_ix++); |
| 71 builder->AddReturnAddress(current->function(), | 71 builder->AddReturnAddress(current->function(), deopt_id(), slot_ix++); |
| 72 deopt_id(), | |
| 73 slot_ix++); | |
| 74 | 72 |
| 75 // Emit all values that are needed for materialization as a part of the | 73 // Emit all values that are needed for materialization as a part of the |
| 76 // expression stack for the bottom-most frame. This guarantees that GC | 74 // expression stack for the bottom-most frame. This guarantees that GC |
| 77 // will be able to find them during materialization. | 75 // will be able to find them during materialization. |
| 78 slot_ix = builder->EmitMaterializationArguments(slot_ix); | 76 slot_ix = builder->EmitMaterializationArguments(slot_ix); |
| 79 | 77 |
| 80 // For the innermost environment, set outgoing arguments and the locals. | 78 // For the innermost environment, set outgoing arguments and the locals. |
| 81 for (intptr_t i = current->Length() - 1; | 79 for (intptr_t i = current->Length() - 1; |
| 82 i >= current->fixed_parameter_count(); | 80 i >= current->fixed_parameter_count(); |
| 83 i--) { | 81 i--) { |
| (...skipping 1868 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1952 __ movups(reg, Address(ESP, 0)); | 1950 __ movups(reg, Address(ESP, 0)); |
| 1953 __ addl(ESP, Immediate(kFpuRegisterSize)); | 1951 __ addl(ESP, Immediate(kFpuRegisterSize)); |
| 1954 } | 1952 } |
| 1955 | 1953 |
| 1956 | 1954 |
| 1957 #undef __ | 1955 #undef __ |
| 1958 | 1956 |
| 1959 } // namespace dart | 1957 } // namespace dart |
| 1960 | 1958 |
| 1961 #endif // defined TARGET_ARCH_IA32 | 1959 #endif // defined TARGET_ARCH_IA32 |
| OLD | NEW |