Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(302)

Side by Side Diff: src/jump-target.cc

Issue 115564: Size reduction of VirtualFrame objects. Remove the code generator and... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/ia32/virtual-frame-ia32.cc ('k') | src/virtual-frame.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 114
115 element = element->Combine(&reaching_frames_[j]->elements_[i]); 115 element = element->Combine(&reaching_frames_[j]->elements_[i]);
116 } 116 }
117 elements[i] = element; 117 elements[i] = element;
118 } 118 }
119 } 119 }
120 120
121 // Build the new frame. A freshly allocated frame has memory elements 121 // Build the new frame. A freshly allocated frame has memory elements
122 // for the parameters and some platform-dependent elements (e.g., 122 // for the parameters and some platform-dependent elements (e.g.,
123 // return address). Replace those first. 123 // return address). Replace those first.
124 entry_frame_ = new VirtualFrame(cgen()); 124 entry_frame_ = new VirtualFrame();
125 int index = 0; 125 int index = 0;
126 for (; index < entry_frame_->elements_.length(); index++) { 126 for (; index < entry_frame_->elements_.length(); index++) {
127 FrameElement* target = elements[index]; 127 FrameElement* target = elements[index];
128 // If the element is determined, set it now. Count registers. Mark 128 // If the element is determined, set it now. Count registers. Mark
129 // elements as copied exactly when they have a copy. Undetermined 129 // elements as copied exactly when they have a copy. Undetermined
130 // elements are initially recorded as if in memory. 130 // elements are initially recorded as if in memory.
131 if (target != NULL) { 131 if (target != NULL) {
132 entry_frame_->elements_[index] = *target; 132 entry_frame_->elements_[index] = *target;
133 InitializeEntryElement(index, target); 133 InitializeEntryElement(index, target);
134 } 134 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 entry_frame_->elements_[i] = 208 entry_frame_->elements_[i] =
209 FrameElement::RegisterElement(reg, 209 FrameElement::RegisterElement(reg,
210 FrameElement::NOT_SYNCED); 210 FrameElement::NOT_SYNCED);
211 if (is_copied) entry_frame_->elements_[i].set_copied(); 211 if (is_copied) entry_frame_->elements_[i].set_copied();
212 entry_frame_->elements_[i].set_static_type(type); 212 entry_frame_->elements_[i].set_static_type(type);
213 entry_frame_->register_locations_[best_reg_code] = i; 213 entry_frame_->register_locations_[best_reg_code] = i;
214 } 214 }
215 } 215 }
216 } 216 }
217 217
218 // Fill in the other fields of the entry frame.
219 entry_frame_->local_count_ = initial_frame->local_count_;
220 entry_frame_->frame_pointer_ = initial_frame->frame_pointer_;
221
222 // The stack pointer is at the highest synced element or the base of 218 // The stack pointer is at the highest synced element or the base of
223 // the expression stack. 219 // the expression stack.
224 int stack_pointer = length - 1; 220 int stack_pointer = length - 1;
225 while (stack_pointer >= entry_frame_->expression_base_index() && 221 while (stack_pointer >= entry_frame_->expression_base_index() &&
226 !entry_frame_->elements_[stack_pointer].is_synced()) { 222 !entry_frame_->elements_[stack_pointer].is_synced()) {
227 stack_pointer--; 223 stack_pointer--;
228 } 224 }
229 entry_frame_->stack_pointer_ = stack_pointer; 225 entry_frame_->stack_pointer_ = stack_pointer;
230 } 226 }
231 227
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 temp.CopyTo(this); 600 temp.CopyTo(this);
605 temp.Unuse(); 601 temp.Unuse();
606 602
607 #ifdef DEBUG 603 #ifdef DEBUG
608 is_shadowing_ = false; 604 is_shadowing_ = false;
609 #endif 605 #endif
610 } 606 }
611 607
612 608
613 } } // namespace v8::internal 609 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/ia32/virtual-frame-ia32.cc ('k') | src/virtual-frame.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698