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:
parent
850487401d
commit
1bc9d4857e
@ -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!"));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user