Commit 2e08515d authored by vegorov@chromium.org's avatar vegorov@chromium.org

Check the depth of the constructed HEnvironment.

Temporary check to catch 1727 on the reliability bot.

R=fschneider@chromium.org
BUG=v8:1727

Review URL: http://codereview.chromium.org/8055010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9452 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 8581ac21
......@@ -6472,6 +6472,7 @@ void HEnvironment::Initialize(const HEnvironment* other) {
pop_count_ = other->pop_count_;
push_count_ = other->push_count_;
ast_id_ = other->ast_id_;
CheckDepth();
}
......
......@@ -448,6 +448,23 @@ class HEnvironment: public ZoneObject {
private:
explicit HEnvironment(const HEnvironment* other);
void CheckDepth() {
// Verify that we are not trying to create an
// impossibly deeply nested environment.
if (!FLAG_limit_inlining) return;
static const int kMaxDepth = 4;
int cnt = 0;
for (HEnvironment* env = this;
env != NULL && cnt <= kMaxDepth; // Check cnt to avoid infinite loop.
env = env->outer()) {
cnt++;
}
CHECK(cnt <= kMaxDepth);
}
// True if index is included in the expression stack part of the environment.
bool HasExpressionAt(int index) const;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment