[turbofan] Turn slow case for stack check into deferred code.

R=dcarney@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#24918}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24918 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
bmeurer@chromium.org 2014-10-28 08:33:03 +00:00
parent 1e96221bbb
commit f276c8d99f
4 changed files with 6 additions and 7 deletions

View File

@ -2113,7 +2113,7 @@ Node* AstGraphBuilder::BuildStackCheck() {
jsgraph()->ZeroConstant());
Node* stack = NewNode(jsgraph()->machine()->LoadStackPointer());
Node* tag = NewNode(jsgraph()->machine()->UintLessThan(), limit, stack);
stack_check.If(tag);
stack_check.If(tag, BranchHint::kTrue);
stack_check.Then();
stack_check.Else();
Node* guard = NewNode(javascript()->CallRuntime(Runtime::kStackGuard, 0));

View File

@ -9,8 +9,8 @@ namespace internal {
namespace compiler {
void IfBuilder::If(Node* condition) {
builder_->NewBranch(condition);
void IfBuilder::If(Node* condition, BranchHint hint) {
builder_->NewBranch(condition, hint);
else_environment_ = environment()->CopyForConditional();
}

View File

@ -14,7 +14,6 @@ namespace v8 {
namespace internal {
namespace compiler {
// Base class for all control builders. Also provides a common interface for
// control builders to handle 'break' and 'continue' statements when they are
// used to model breakable statements.
@ -49,7 +48,7 @@ class IfBuilder : public ControlBuilder {
else_environment_(NULL) {}
// Primitive control commands.
void If(Node* condition);
void If(Node* condition, BranchHint hint = BranchHint::kNone);
void Then();
void Else();
void End();

View File

@ -99,8 +99,8 @@ class StructuredGraphBuilder : public GraphBuilder {
Node* NewIfFalse() { return NewNode(common()->IfFalse()); }
Node* NewMerge() { return NewNode(common()->Merge(1), true); }
Node* NewLoop() { return NewNode(common()->Loop(1), true); }
Node* NewBranch(Node* condition) {
return NewNode(common()->Branch(), condition);
Node* NewBranch(Node* condition, BranchHint hint = BranchHint::kNone) {
return NewNode(common()->Branch(hint), condition);
}
protected: