[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:
parent
1e96221bbb
commit
f276c8d99f
@ -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));
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user