Reviewers: jarin,

https://codereview.chromium.org/517323002/diff/20001/src/compiler/ast-graph-builder.h
File src/compiler/ast-graph-builder.h (right):

https://codereview.chromium.org/517323002/diff/20001/src/compiler/ast-graph-builder.h#newcode268
src/compiler/ast-graph-builder.h:268: Node* Checkpoint(BailoutId ast_id,
Node* parent);
On 2014/08/29 15:07:06, jarin wrote:
I believe we will always initially create framestates without parents,
so we
should not add the argument here. Instead, the Checkpoint method
should just
stick in the 'undefined' as the last input.

Done.

https://codereview.chromium.org/517323002/diff/20001/src/compiler/graph-builder.cc
File src/compiler/graph-builder.cc (right):

https://codereview.chromium.org/517323002/diff/20001/src/compiler/graph-builder.cc#newcode44
src/compiler/graph-builder.cc:44: if (!has_context && !has_framestate &&
!has_control && !has_effect) {
On 2014/08/29 15:07:07, jarin wrote:
Good catch! Thanks for fixing.

Done.

https://codereview.chromium.org/517323002/diff/20001/src/compiler/instruction-selector.cc
File src/compiler/instruction-selector.cc (right):

https://codereview.chromium.org/517323002/diff/20001/src/compiler/instruction-selector.cc#newcode1083
src/compiler/instruction-selector.cc:1083: if (descriptor->parent() !=
NULL) {
On 2014/08/29 15:07:07, jarin wrote:
Could you recurse first? (So that the outer guys are first in the
array.)

Done.

https://codereview.chromium.org/517323002/diff/20001/src/compiler/instruction.h
File src/compiler/instruction.h (right):

https://codereview.chromium.org/517323002/diff/20001/src/compiler/instruction.h#newcode706
src/compiler/instruction.h:706: FrameStateDescriptor* parent = NULL)
On 2014/08/29 15:07:07, jarin wrote:
Perhaps rename 'parent -> 'outer_state' (or 'outer'), so that it is
clear which
way the nesting goes.

Done.

https://codereview.chromium.org/517323002/diff/20001/test/compiler-unittests/instruction-selector-unittest.cc
File test/compiler-unittests/instruction-selector-unittest.cc (right):

https://codereview.chromium.org/517323002/diff/20001/test/compiler-unittests/instruction-selector-unittest.cc#newcode561
test/compiler-unittests/instruction-selector-unittest.cc:561:
EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(2)));
On 2014/08/29 15:07:07, jarin wrote:
Hmm, could we put the parent values first here?

Done.

Description:
Make FrameStates recursive (to be used for inlining).

- Changes FrameState node to require a 4th input
  (use undefined as sentinel).
- Makes FrameStateDescriptor have a parent pointer.
- Instruction selection dumps dependencies of FrameState chain
  into the instruction.
- Code generator builds the translation for rec. FrameStates.
  (will require further integration tests)


[email protected]

Please review this at https://codereview.chromium.org/517323002/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+217, -29 lines):
  M src/compiler/ast-graph-builder.h
  M src/compiler/ast-graph-builder.cc
  M src/compiler/code-generator.h
  M src/compiler/code-generator.cc
  M src/compiler/graph-builder.cc
  M src/compiler/instruction.h
  M src/compiler/instruction-selector.cc
  M src/compiler/operator-properties-inl.h
  M src/compiler/raw-machine-assembler.h
  M test/cctest/compiler/test-codegen-deopt.cc
  M test/compiler-unittests/instruction-selector-unittest.cc


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to