v8/src/ia32
wingo@igalia.com 646a34e1e0 Generators: Avoid calling into runtime if operand stack is empty
This patch makes yield sites save the resume continuation and context
inline.  If the operand stack is empty, we can avoid a call into the
runtime.  This also makes the SuspendJSGeneratorObject runtime function
less magical: it just has to save the operand stack and stack handlers.

This speeds up the following case by a factor of 3 or so:

  function* until(n) {
    for (var i = 0; i < n; i++)
      yield i;
  }

  function sum(iter) {
    var sum = 0;
    for (var x of iter) sum += x;
    return sum;
  }

  for (var i = 0; i < 10000; i++) sum(until(1000))

Also, there is no more sentinel value as the generators will resume in
the right place already, allowing me to remove the hack added to the
--debug-code check in r14437.

R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/15990004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15240 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-20 12:59:45 +00:00
..
assembler-ia32-inl.h Separate Cell and PropertyCell spaces 2013-06-12 15:03:44 +00:00
assembler-ia32.cc Increase sanity of integer division handling on ARM 2013-06-11 10:47:44 +00:00
assembler-ia32.h Fix serialization tests and Mac build 2013-06-12 16:23:17 +00:00
builtins-ia32.cc Adapt hydrogen-based Array constructor to also support InternalArray and function call 2013-06-05 10:43:18 +00:00
code-stubs-ia32.cc Generators: Avoid calling into runtime if operand stack is empty 2013-06-20 12:59:45 +00:00
code-stubs-ia32.h Error found in test262 on ARM: BinaryOpStub could call out to a built-in and push parameters without an enclosing frame. This corrupted stackwalking. 2013-05-14 15:30:55 +00:00
codegen-ia32.cc Improve SeqStringSetChar implementation. 2013-05-23 09:51:06 +00:00
codegen-ia32.h Make (most of) --trace-codegen available in release mode. Better output. 2013-05-24 10:57:59 +00:00
cpu-ia32.cc Minor Native Client specific changes to files in src. 2013-04-09 15:11:45 +00:00
debug-ia32.cc Allow setting debugger breakpoints on CompareNilICs 2013-04-30 07:56:09 +00:00
deoptimizer-ia32.cc Make assertion scopes thread safe. 2013-06-03 15:32:22 +00:00
disasm-ia32.cc Added (dis-)assembler support for movmskps on ia32 and x64. 2012-12-21 13:47:08 +00:00
frames-ia32.cc Unify deoptimizer for JavaScript frames. 2013-05-17 08:27:56 +00:00
frames-ia32.h Move StackHandlerConstants to platform-independent frames.h 2013-04-08 11:17:32 +00:00
full-codegen-ia32.cc Generators: Avoid calling into runtime if operand stack is empty 2013-06-20 12:59:45 +00:00
ic-ia32.cc Install a generic handler whenever we fail to update the IC. 2013-06-14 11:21:34 +00:00
lithium-codegen-ia32.cc Lithium codegen should not pass around block_ids. Rather encapsulate the basic block to assembly label mapping in the LInstruction. 2013-06-20 11:50:50 +00:00
lithium-codegen-ia32.h Lithium codegen should not pass around block_ids. Rather encapsulate the basic block to assembly label mapping in the LInstruction. 2013-06-20 11:50:50 +00:00
lithium-gap-resolver-ia32.cc Update the gap resolver to support Smi constants. 2013-05-28 12:37:29 +00:00
lithium-gap-resolver-ia32.h Re-land Crankshaft-generated KeyedLoad stubs. 2012-12-18 16:25:45 +00:00
lithium-ia32.cc Revert r14930 and r14935 temporarily. 2013-06-20 10:48:14 +00:00
lithium-ia32.h Lithium codegen should not pass around block_ids. Rather encapsulate the basic block to assembly label mapping in the LInstruction. 2013-06-20 11:50:50 +00:00
macro-assembler-ia32.cc Notify CPU profiler when calling native getters 2013-06-13 19:16:35 +00:00
macro-assembler-ia32.h Notify CPU profiler when calling native getters 2013-06-13 19:16:35 +00:00
regexp-macro-assembler-ia32.cc Remove use of Isolate::Current in regexp macro assemblers. 2013-06-07 08:38:05 +00:00
regexp-macro-assembler-ia32.h RegExp macro assembler clean up. 2013-06-06 10:17:07 +00:00
simulator-ia32.cc Move backend specific files to separate directories. 2009-04-23 12:06:38 +00:00
simulator-ia32.h Implement loop for global regexps in regexp assembler. 2012-05-22 14:05:44 +00:00
stub-cache-ia32.cc Use type feedback for Array (non-constructor) call sites. 2013-06-19 09:25:24 +00:00