From: palfia@homejinni.com Date: Mon, 10 Jun 2013 18:14:15 +0000 (+0000) Subject: MIPS: Generator object "next" method takes optional send value. X-Git-Tag: upstream/4.7.83~13920 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eb7e2771a99f42f7212315082cf3ea5bc340556d;p=platform%2Fupstream%2Fv8.git MIPS: Generator object "next" method takes optional send value. Port r15028 (258a047) Original commit message: Update the generators implementation to make "next" also do the job of what was previously called "send" by taking an optional argument. Remove send, and do a bunch of renamings. BUG=v8:2355, v8:2715 Review URL: https://codereview.chromium.org/16735005 Patch from Balazs Kilvady . git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15049 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/mips/full-codegen-mips.cc b/src/mips/full-codegen-mips.cc index a818733..2d8c694 100644 --- a/src/mips/full-codegen-mips.cc +++ b/src/mips/full-codegen-mips.cc @@ -2036,10 +2036,10 @@ void FullCodeGenerator::VisitYield(Yield* expr) { // [sp + 1 * kPointerSize] iter // [sp + 0 * kPointerSize] g - Label l_catch, l_try, l_resume, l_send, l_call, l_loop; + Label l_catch, l_try, l_resume, l_next, l_call, l_loop; // Initial send value is undefined. __ LoadRoot(a0, Heap::kUndefinedValueRootIndex); - __ Branch(&l_send); + __ Branch(&l_next); // catch (e) { receiver = iter; f = iter.throw; arg = e; goto l_call; } __ bind(&l_catch); @@ -2074,15 +2074,15 @@ void FullCodeGenerator::VisitYield(Yield* expr) { __ bind(&l_resume); // received in a0 __ PopTryHandler(); - // receiver = iter; f = iter.send; arg = received; - __ bind(&l_send); + // receiver = iter; f = iter.next; arg = received; + __ bind(&l_next); __ lw(a3, MemOperand(sp, 1 * kPointerSize)); // iter __ push(a3); // iter __ push(a0); // received __ mov(a0, a3); // iter - __ LoadRoot(a2, Heap::ksend_stringRootIndex); // "send" - Handle send_ic = isolate()->builtins()->LoadIC_Initialize(); - CallIC(send_ic); // iter.send in a0 + __ LoadRoot(a2, Heap::knext_stringRootIndex); // "next" + Handle next_ic = isolate()->builtins()->LoadIC_Initialize(); + CallIC(next_ic); // iter.next in a0 __ mov(a0, v0); // result = f.call(receiver, arg); @@ -2187,7 +2187,7 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator, // If we are sending a value and there is no operand stack, we can jump back // in directly. - if (resume_mode == JSGeneratorObject::SEND) { + if (resume_mode == JSGeneratorObject::NEXT) { Label slow_resume; __ Branch(&slow_resume, ne, a3, Operand(zero_reg)); __ lw(a3, FieldMemOperand(t0, JSFunction::kCodeEntryOffset));