Made rethrow test not depend on stack overflow behavior.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3202 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
christian.plesner.hansen@gmail.com 2009-11-03 09:52:06 +00:00
parent 850487401d
commit 1bc9d4857e

View File

@ -8674,17 +8674,29 @@ static v8::Handle<Value> SpaghettiIncident(const v8::Arguments& args) {
}
// Test that a stack overflow can be propagated down through a spaghetti
// Test that an exception can be propagated down through a spaghetti
// stack using ReThrow.
THREADED_TEST(SpaghettiStackOverflow) {
THREADED_TEST(SpaghettiStackReThrow) {
v8::HandleScope scope;
LocalContext context;
context->Global()->Set(
v8::String::New("s"),
v8::FunctionTemplate::New(SpaghettiIncident)->GetFunction());
v8::TryCatch try_catch;
CompileRun("var o = {toString: function () {return s(o);}}; s(o);");
CompileRun(
"var i = 0;"
"var o = {"
" toString: function () {"
" if (i == 10) {"
" throw 'Hey!';"
" } else {"
" i++;"
" return s(o);"
" }"
" }"
"};"
"s(o);");
CHECK(try_catch.HasCaught());
v8::String::Utf8Value value(try_catch.Exception());
CHECK_NE(0, strstr(*value, "RangeError"));
CHECK_EQ(0, strcmp(*value, "Hey!"));
}