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

Side by Side Diff: src/virtual-frame-ia32.h

Issue 42602: Simplify the way the code generator handles calls to IC stubs. Before... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 9 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
OLDNEW
1 // Copyright 2008 the V8 project authors. All rights reserved. 1 // Copyright 2008 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 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 // removed from) the top of the physical frame. 254 // removed from) the top of the physical frame.
255 Result CallRuntime(Runtime::Function* f, int frame_arg_count); 255 Result CallRuntime(Runtime::Function* f, int frame_arg_count);
256 Result CallRuntime(Runtime::FunctionId id, int frame_arg_count); 256 Result CallRuntime(Runtime::FunctionId id, int frame_arg_count);
257 257
258 // Invoke a builtin, given the number of arguments it expects on (and 258 // Invoke a builtin, given the number of arguments it expects on (and
259 // removes from) the top of the physical frame. 259 // removes from) the top of the physical frame.
260 Result InvokeBuiltin(Builtins::JavaScript id, 260 Result InvokeBuiltin(Builtins::JavaScript id,
261 InvokeFlag flag, 261 InvokeFlag flag,
262 int frame_arg_count); 262 int frame_arg_count);
263 263
264 // Call into a JS code object, given the number of arguments it 264 // Call into a call IC or a JS code object given the number of
265 // removes from the top of the physical frame. 265 // arguments it drops from the top of the stack. Arguments passed
266 // Register arguments are passed as results and consumed by the call. 266 // in registers are given as results and invalidated by the call.
267 // are passed as results and consumed by the call.
267 Result CallCodeObject(Handle<Code> ic, 268 Result CallCodeObject(Handle<Code> ic,
268 RelocInfo::Mode rmode, 269 RelocInfo::Mode rmode,
269 int dropped_args); 270 int dropped_args);
270 Result CallCodeObject(Handle<Code> ic, 271 Result CallCodeObject(Handle<Code> ic,
271 RelocInfo::Mode rmode, 272 RelocInfo::Mode rmode,
272 Result* arg,
273 int dropped_args);
274 Result CallCodeObject(Handle<Code> ic,
275 RelocInfo::Mode rmode,
276 Result* arg0, 273 Result* arg0,
277 Result* arg1, 274 Result* arg1,
278 int dropped_args); 275 int dropped_args);
279 276
277 // Call load IC. Name and receiver are found on top of the frame.
278 // Receiver is not dropped.
279 Result CallLoadIC(RelocInfo::Mode mode);
280
281 // Call keyed load IC. Key and receiver are found on top of the
282 // frame. They are not dropped.
283 Result CallKeyedLoadIC(RelocInfo::Mode mode);
284
285 // Call store IC. Name, value, and receiver are found on top of the
286 // frame. Receiver is not dropped.
287 Result CallStoreIC();
288
289 // Call keyed store IC. Value, key, and receiver are found on top
290 // of the frame. Key and receiver are not dropped.
291 Result CallKeyedStoreIC();
292
280 // Drop a number of elements from the top of the expression stack. May 293 // Drop a number of elements from the top of the expression stack. May
281 // emit code to affect the physical frame. Does not clobber any registers 294 // emit code to affect the physical frame. Does not clobber any registers
282 // excepting possibly the stack pointer. 295 // excepting possibly the stack pointer.
283 void Drop(int count); 296 void Drop(int count);
284 297
285 // Drop one element. 298 // Drop one element.
286 void Drop() { Drop(1); } 299 void Drop() { Drop(1); }
287 300
288 // Duplicate the top element of the frame. 301 // Duplicate the top element of the frame.
289 void Dup() { PushFrameSlotAt(elements_.length() - 1); } 302 void Dup() { PushFrameSlotAt(elements_.length() - 1); }
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 Result RawCallCodeObject(Handle<Code> code, RelocInfo::Mode rmode); 473 Result RawCallCodeObject(Handle<Code> code, RelocInfo::Mode rmode);
461 474
462 bool Equals(VirtualFrame* other); 475 bool Equals(VirtualFrame* other);
463 476
464 friend class JumpTarget; 477 friend class JumpTarget;
465 }; 478 };
466 479
467 } } // namespace v8::internal 480 } } // namespace v8::internal
468 481
469 #endif // V8_VIRTUAL_FRAME_IA32_H_ 482 #endif // V8_VIRTUAL_FRAME_IA32_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698