Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: test/cctest/test-api.cc

Issue 206373003: Remove outdated OOM tests. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « test/cctest/cctest.status ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 4461 matching lines...) Expand 10 before | Expand all | Expand 10 after
4472 CHECK(r7->IsNull()); 4472 CHECK(r7->IsNull());
4473 Local<v8::Value> r8 = ReturnThisStrict->Call(v8_num(42), 0, NULL); 4473 Local<v8::Value> r8 = ReturnThisStrict->Call(v8_num(42), 0, NULL);
4474 CHECK(r8->StrictEquals(v8_num(42))); 4474 CHECK(r8->StrictEquals(v8_num(42)));
4475 Local<v8::Value> r9 = ReturnThisStrict->Call(v8_str("hello"), 0, NULL); 4475 Local<v8::Value> r9 = ReturnThisStrict->Call(v8_str("hello"), 0, NULL);
4476 CHECK(r9->StrictEquals(v8_str("hello"))); 4476 CHECK(r9->StrictEquals(v8_str("hello")));
4477 Local<v8::Value> r10 = ReturnThisStrict->Call(v8::True(isolate), 0, NULL); 4477 Local<v8::Value> r10 = ReturnThisStrict->Call(v8::True(isolate), 0, NULL);
4478 CHECK(r10->StrictEquals(v8::True(isolate))); 4478 CHECK(r10->StrictEquals(v8::True(isolate)));
4479 } 4479 }
4480 4480
4481 4481
4482 static const char* js_code_causing_out_of_memory =
4483 "var a = new Array(); while(true) a.push(a);";
4484
4485
4486 // These tests run for a long time and prevent us from running tests
4487 // that come after them so they cannot run in parallel.
4488 TEST(OutOfMemory) {
4489 // It's not possible to read a snapshot into a heap with different dimensions.
4490 if (i::Snapshot::IsEnabled()) return;
4491 // Set heap limits.
4492 static const int K = 1024;
4493 v8::ResourceConstraints constraints;
4494 constraints.set_max_young_space_size(256 * K);
4495 constraints.set_max_old_space_size(5 * K * K);
4496 v8::SetResourceConstraints(CcTest::isolate(), &constraints);
4497
4498 // Execute a script that causes out of memory.
4499 LocalContext context;
4500 v8::HandleScope scope(context->GetIsolate());
4501 v8::V8::IgnoreOutOfMemoryException();
4502 Local<Value> result = CompileRun(js_code_causing_out_of_memory);
4503
4504 // Check for out of memory state.
4505 CHECK(result.IsEmpty());
4506 CHECK(context->HasOutOfMemoryException());
4507 }
4508
4509
4510 void ProvokeOutOfMemory(const v8::FunctionCallbackInfo<v8::Value>& args) {
4511 ApiTestFuzzer::Fuzz();
4512
4513 LocalContext context;
4514 v8::HandleScope scope(context->GetIsolate());
4515 Local<Value> result = CompileRun(js_code_causing_out_of_memory);
4516
4517 // Check for out of memory state.
4518 CHECK(result.IsEmpty());
4519 CHECK(context->HasOutOfMemoryException());
4520
4521 args.GetReturnValue().Set(result);
4522 }
4523
4524
4525 TEST(OutOfMemoryNested) {
4526 // It's not possible to read a snapshot into a heap with different dimensions.
4527 if (i::Snapshot::IsEnabled()) return;
4528 // Set heap limits.
4529 static const int K = 1024;
4530 v8::ResourceConstraints constraints;
4531 constraints.set_max_young_space_size(256 * K);
4532 constraints.set_max_old_space_size(5 * K * K);
4533 v8::Isolate* isolate = CcTest::isolate();
4534 v8::SetResourceConstraints(isolate, &constraints);
4535
4536 v8::HandleScope scope(isolate);
4537 Local<ObjectTemplate> templ = ObjectTemplate::New(isolate);
4538 templ->Set(v8_str("ProvokeOutOfMemory"),
4539 v8::FunctionTemplate::New(isolate, ProvokeOutOfMemory));
4540 LocalContext context(0, templ);
4541 v8::V8::IgnoreOutOfMemoryException();
4542 Local<Value> result = CompileRun(
4543 "var thrown = false;"
4544 "try {"
4545 " ProvokeOutOfMemory();"
4546 "} catch (e) {"
4547 " thrown = true;"
4548 "}");
4549 // Check for out of memory state.
4550 CHECK(result.IsEmpty());
4551 CHECK(context->HasOutOfMemoryException());
4552 }
4553
4554
4555 void OOMCallback(const char* location, const char* message) {
4556 exit(0);
4557 }
4558
4559
4560 TEST(HugeConsStringOutOfMemory) {
4561 // It's not possible to read a snapshot into a heap with different dimensions.
4562 if (i::Snapshot::IsEnabled()) return;
4563 // Set heap limits.
4564 static const int K = 1024;
4565 v8::ResourceConstraints constraints;
4566 constraints.set_max_young_space_size(256 * K);
4567 constraints.set_max_old_space_size(4 * K * K);
4568 v8::SetResourceConstraints(CcTest::isolate(), &constraints);
4569
4570 // Execute a script that causes out of memory.
4571 v8::V8::SetFatalErrorHandler(OOMCallback);
4572
4573 LocalContext context;
4574 v8::HandleScope scope(context->GetIsolate());
4575
4576 // Build huge string. This should fail with out of memory exception.
4577 CompileRun(
4578 "var str = Array.prototype.join.call({length: 513}, \"A\").toUpperCase();"
4579 "for (var i = 0; i < 22; i++) { str = str + str; }");
4580
4581 CHECK(false); // Should not return.
4582 }
4583
4584
4585 THREADED_TEST(ConstructCall) { 4482 THREADED_TEST(ConstructCall) {
4586 LocalContext context; 4483 LocalContext context;
4587 v8::Isolate* isolate = context->GetIsolate(); 4484 v8::Isolate* isolate = context->GetIsolate();
4588 v8::HandleScope scope(isolate); 4485 v8::HandleScope scope(isolate);
4589 CompileRun( 4486 CompileRun(
4590 "function Foo() {" 4487 "function Foo() {"
4591 " var result = [];" 4488 " var result = [];"
4592 " for (var i = 0; i < arguments.length; i++) {" 4489 " for (var i = 0; i < arguments.length; i++) {"
4593 " result.push(arguments[i]);" 4490 " result.push(arguments[i]);"
4594 " }" 4491 " }"
(...skipping 17799 matching lines...) Expand 10 before | Expand all | Expand 10 after
22394 TEST(ThrowOnJavascriptExecution) { 22291 TEST(ThrowOnJavascriptExecution) {
22395 LocalContext context; 22292 LocalContext context;
22396 v8::Isolate* isolate = context->GetIsolate(); 22293 v8::Isolate* isolate = context->GetIsolate();
22397 v8::HandleScope scope(isolate); 22294 v8::HandleScope scope(isolate);
22398 v8::TryCatch try_catch; 22295 v8::TryCatch try_catch;
22399 v8::Isolate::DisallowJavascriptExecutionScope throw_js( 22296 v8::Isolate::DisallowJavascriptExecutionScope throw_js(
22400 isolate, v8::Isolate::DisallowJavascriptExecutionScope::THROW_ON_FAILURE); 22297 isolate, v8::Isolate::DisallowJavascriptExecutionScope::THROW_ON_FAILURE);
22401 CompileRun("1+1"); 22298 CompileRun("1+1");
22402 CHECK(try_catch.HasCaught()); 22299 CHECK(try_catch.HasCaught());
22403 } 22300 }
OLDNEW
« no previous file with comments | « test/cctest/cctest.status ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698