OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
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 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 if (!elements_[index].is_copy()) { | 156 if (!elements_[index].is_copy()) { |
157 info = elements_[index].number_info(); | 157 info = elements_[index].number_info(); |
158 } else { | 158 } else { |
159 info = elements_[elements_[index].index()].number_info(); | 159 info = elements_[elements_[index].index()].number_info(); |
160 } | 160 } |
161 // The element is now in memory. Its copied flag is preserved. | 161 // The element is now in memory. Its copied flag is preserved. |
162 FrameElement new_element = FrameElement::MemoryElement(info); | 162 FrameElement new_element = FrameElement::MemoryElement(info); |
163 if (elements_[index].is_copied()) { | 163 if (elements_[index].is_copied()) { |
164 new_element.set_copied(); | 164 new_element.set_copied(); |
165 } | 165 } |
| 166 if (elements_[index].is_untagged_int32()) { |
| 167 new_element.set_untagged_int32(true); |
| 168 } |
166 if (elements_[index].is_register()) { | 169 if (elements_[index].is_register()) { |
167 Unuse(elements_[index].reg()); | 170 Unuse(elements_[index].reg()); |
168 } | 171 } |
169 elements_[index] = new_element; | 172 elements_[index] = new_element; |
170 } | 173 } |
171 | 174 |
172 | 175 |
173 // Clear the dirty bit for the element at a given index. | 176 // Clear the dirty bit for the element at a given index. |
174 void VirtualFrame::SyncElementAt(int index) { | 177 void VirtualFrame::SyncElementAt(int index) { |
175 if (index <= stack_pointer_) { | 178 if (index <= stack_pointer_) { |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 // Specialization of List::ResizeAdd to non-inlined version for FrameElements. | 333 // Specialization of List::ResizeAdd to non-inlined version for FrameElements. |
331 // The function ResizeAdd becomes a real function, whose implementation is the | 334 // The function ResizeAdd becomes a real function, whose implementation is the |
332 // inlined ResizeAddInternal. | 335 // inlined ResizeAddInternal. |
333 template <> | 336 template <> |
334 void List<FrameElement, | 337 void List<FrameElement, |
335 FreeStoreAllocationPolicy>::ResizeAdd(const FrameElement& element) { | 338 FreeStoreAllocationPolicy>::ResizeAdd(const FrameElement& element) { |
336 ResizeAddInternal(element); | 339 ResizeAddInternal(element); |
337 } | 340 } |
338 | 341 |
339 } } // namespace v8::internal | 342 } } // namespace v8::internal |
OLD | NEW |