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

Side by Side Diff: src/frames-inl.h

Issue 14348003: Add support for yield expressions (Closed) Base URL: git://github.com/v8/v8.git@master
Patch Set: Fix formatting; add asserts; don't skip write barrier Created 7 years, 8 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
« no previous file with comments | « src/frames.h ('k') | src/runtime.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 int parameter_offset = (param_count - index - 1) * kPointerSize; 206 int parameter_offset = (param_count - index - 1) * kPointerSize;
207 return caller_sp() + parameter_offset; 207 return caller_sp() + parameter_offset;
208 } 208 }
209 209
210 210
211 Object* JavaScriptFrame::GetParameter(int index) const { 211 Object* JavaScriptFrame::GetParameter(int index) const {
212 return Memory::Object_at(GetParameterSlot(index)); 212 return Memory::Object_at(GetParameterSlot(index));
213 } 213 }
214 214
215 215
216 inline Address JavaScriptFrame::GetOperandSlot(int index) const {
217 Address base = fp() + JavaScriptFrameConstants::kLocal0Offset;
218 ASSERT(IsAddressAligned(base, kPointerSize));
219 ASSERT(type() == JAVA_SCRIPT);
220 ASSERT(index < ComputeOperandsCount());
221 // Operand stack grows down.
222 return base - index * kPointerSize;
223 }
224
225
226 inline Object* JavaScriptFrame::GetOperand(int index) const {
227 return Memory::Object_at(GetOperandSlot(index));
228 }
229
230
231 inline int JavaScriptFrame::ComputeOperandsCount() const {
232 Address base = fp() + JavaScriptFrameConstants::kLocal0Offset;
233 // Base points to low address of first operand and stack grows down, so add
234 // kPointerSize to get the actual stack size.
235 intptr_t stack_size_in_bytes = (base + kPointerSize) - sp();
236 ASSERT(IsAligned(stack_size_in_bytes, kPointerSize));
237 ASSERT(type() == JAVA_SCRIPT);
238 ASSERT(stack_size_in_bytes >= 0);
239 return stack_size_in_bytes >> kPointerSizeLog2;
240 }
241
242
216 inline Object* JavaScriptFrame::receiver() const { 243 inline Object* JavaScriptFrame::receiver() const {
217 return GetParameter(-1); 244 return GetParameter(-1);
218 } 245 }
219 246
220 247
221 inline void JavaScriptFrame::set_receiver(Object* value) { 248 inline void JavaScriptFrame::set_receiver(Object* value) {
222 Memory::Object_at(GetParameterSlot(-1)) = value; 249 Memory::Object_at(GetParameterSlot(-1)) = value;
223 } 250 }
224 251
225 252
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 template<typename Iterator> 356 template<typename Iterator>
330 void JavaScriptFrameIteratorTemp<Iterator>::Reset() { 357 void JavaScriptFrameIteratorTemp<Iterator>::Reset() {
331 iterator_.Reset(); 358 iterator_.Reset();
332 if (!done()) Advance(); 359 if (!done()) Advance();
333 } 360 }
334 361
335 362
336 } } // namespace v8::internal 363 } } // namespace v8::internal
337 364
338 #endif // V8_FRAMES_INL_H_ 365 #endif // V8_FRAMES_INL_H_
OLDNEW
« no previous file with comments | « src/frames.h ('k') | src/runtime.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698