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

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

Issue 113445: Add multiple generations (5) to the script compilation cache... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 7 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
OLDNEW
1 // Copyright 2007-2008 the V8 project authors. All rights reserved. 1 // Copyright 2007-2008 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 12 matching lines...) Expand all
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 27
28 #include <stdlib.h> 28 #include <stdlib.h>
29 29
30 #include "v8.h" 30 #include "v8.h"
31 31
32 #include "api.h" 32 #include "api.h"
33 #include "compilation-cache.h"
33 #include "snapshot.h" 34 #include "snapshot.h"
34 #include "platform.h" 35 #include "platform.h"
35 #include "top.h" 36 #include "top.h"
36 #include "cctest.h" 37 #include "cctest.h"
37 38
38 static bool IsNaN(double x) { 39 static bool IsNaN(double x) {
39 #ifdef WIN32 40 #ifdef WIN32
40 return _isnan(x); 41 return _isnan(x);
41 #else 42 #else
42 return isnan(x); 43 return isnan(x);
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 Local<Script> script = Script::Compile(source); 458 Local<Script> script = Script::Compile(source);
458 Local<Value> value = script->Run(); 459 Local<Value> value = script->Run();
459 CHECK(value->IsNumber()); 460 CHECK(value->IsNumber());
460 CHECK_EQ(7, value->Int32Value()); 461 CHECK_EQ(7, value->Int32Value());
461 CHECK(source->IsExternal()); 462 CHECK(source->IsExternal());
462 CHECK_EQ(resource, 463 CHECK_EQ(resource,
463 static_cast<TestResource*>(source->GetExternalStringResource())); 464 static_cast<TestResource*>(source->GetExternalStringResource()));
464 v8::internal::Heap::CollectAllGarbage(); 465 v8::internal::Heap::CollectAllGarbage();
465 CHECK_EQ(0, TestResource::dispose_count); 466 CHECK_EQ(0, TestResource::dispose_count);
466 } 467 }
468 v8::internal::CompilationCache::Clear();
467 v8::internal::Heap::CollectAllGarbage(); 469 v8::internal::Heap::CollectAllGarbage();
468 CHECK_EQ(1, TestResource::dispose_count); 470 CHECK_EQ(1, TestResource::dispose_count);
469 } 471 }
470 472
471 473
472 THREADED_TEST(ScriptUsingAsciiStringResource) { 474 THREADED_TEST(ScriptUsingAsciiStringResource) {
473 TestAsciiResource::dispose_count = 0; 475 TestAsciiResource::dispose_count = 0;
474 const char* c_source = "1 + 2 * 3"; 476 const char* c_source = "1 + 2 * 3";
475 { 477 {
476 v8::HandleScope scope; 478 v8::HandleScope scope;
477 LocalContext env; 479 LocalContext env;
478 Local<String> source = 480 Local<String> source =
479 String::NewExternal(new TestAsciiResource(i::StrDup(c_source))); 481 String::NewExternal(new TestAsciiResource(i::StrDup(c_source)));
480 Local<Script> script = Script::Compile(source); 482 Local<Script> script = Script::Compile(source);
481 Local<Value> value = script->Run(); 483 Local<Value> value = script->Run();
482 CHECK(value->IsNumber()); 484 CHECK(value->IsNumber());
483 CHECK_EQ(7, value->Int32Value()); 485 CHECK_EQ(7, value->Int32Value());
484 v8::internal::Heap::CollectAllGarbage(); 486 v8::internal::Heap::CollectAllGarbage();
485 CHECK_EQ(0, TestAsciiResource::dispose_count); 487 CHECK_EQ(0, TestAsciiResource::dispose_count);
486 } 488 }
489 v8::internal::CompilationCache::Clear();
487 v8::internal::Heap::CollectAllGarbage(); 490 v8::internal::Heap::CollectAllGarbage();
488 CHECK_EQ(1, TestAsciiResource::dispose_count); 491 CHECK_EQ(1, TestAsciiResource::dispose_count);
489 } 492 }
490 493
491 494
492 THREADED_TEST(ScriptMakingExternalString) { 495 THREADED_TEST(ScriptMakingExternalString) {
493 TestResource::dispose_count = 0; 496 TestResource::dispose_count = 0;
494 uint16_t* two_byte_source = AsciiToTwoByteString("1 + 2 * 3"); 497 uint16_t* two_byte_source = AsciiToTwoByteString("1 + 2 * 3");
495 { 498 {
496 v8::HandleScope scope; 499 v8::HandleScope scope;
497 LocalContext env; 500 LocalContext env;
498 Local<String> source = String::New(two_byte_source); 501 Local<String> source = String::New(two_byte_source);
499 bool success = source->MakeExternal(new TestResource(two_byte_source)); 502 bool success = source->MakeExternal(new TestResource(two_byte_source));
500 CHECK(success); 503 CHECK(success);
501 Local<Script> script = Script::Compile(source); 504 Local<Script> script = Script::Compile(source);
502 Local<Value> value = script->Run(); 505 Local<Value> value = script->Run();
503 CHECK(value->IsNumber()); 506 CHECK(value->IsNumber());
504 CHECK_EQ(7, value->Int32Value()); 507 CHECK_EQ(7, value->Int32Value());
505 v8::internal::Heap::CollectAllGarbage(); 508 v8::internal::Heap::CollectAllGarbage();
506 CHECK_EQ(0, TestResource::dispose_count); 509 CHECK_EQ(0, TestResource::dispose_count);
507 } 510 }
511 v8::internal::CompilationCache::Clear();
508 v8::internal::Heap::CollectAllGarbage(); 512 v8::internal::Heap::CollectAllGarbage();
509 CHECK_EQ(1, TestResource::dispose_count); 513 CHECK_EQ(1, TestResource::dispose_count);
510 } 514 }
511 515
512 516
513 THREADED_TEST(ScriptMakingExternalAsciiString) { 517 THREADED_TEST(ScriptMakingExternalAsciiString) {
514 TestAsciiResource::dispose_count = 0; 518 TestAsciiResource::dispose_count = 0;
515 const char* c_source = "1 + 2 * 3"; 519 const char* c_source = "1 + 2 * 3";
516 { 520 {
517 v8::HandleScope scope; 521 v8::HandleScope scope;
518 LocalContext env; 522 LocalContext env;
519 Local<String> source = v8_str(c_source); 523 Local<String> source = v8_str(c_source);
520 bool success = source->MakeExternal( 524 bool success = source->MakeExternal(
521 new TestAsciiResource(i::StrDup(c_source))); 525 new TestAsciiResource(i::StrDup(c_source)));
522 CHECK(success); 526 CHECK(success);
523 Local<Script> script = Script::Compile(source); 527 Local<Script> script = Script::Compile(source);
524 Local<Value> value = script->Run(); 528 Local<Value> value = script->Run();
525 CHECK(value->IsNumber()); 529 CHECK(value->IsNumber());
526 CHECK_EQ(7, value->Int32Value()); 530 CHECK_EQ(7, value->Int32Value());
527 v8::internal::Heap::CollectAllGarbage(); 531 v8::internal::Heap::CollectAllGarbage();
528 CHECK_EQ(0, TestAsciiResource::dispose_count); 532 CHECK_EQ(0, TestAsciiResource::dispose_count);
529 } 533 }
534 v8::internal::CompilationCache::Clear();
530 v8::internal::Heap::CollectAllGarbage(); 535 v8::internal::Heap::CollectAllGarbage();
531 CHECK_EQ(1, TestAsciiResource::dispose_count); 536 CHECK_EQ(1, TestAsciiResource::dispose_count);
532 } 537 }
533 538
534 539
535 THREADED_TEST(UsingExternalString) { 540 THREADED_TEST(UsingExternalString) {
536 v8::HandleScope scope; 541 v8::HandleScope scope;
537 uint16_t* two_byte_string = AsciiToTwoByteString("test string"); 542 uint16_t* two_byte_string = AsciiToTwoByteString("test string");
538 Local<String> string = String::NewExternal(new TestResource(two_byte_string)); 543 Local<String> string = String::NewExternal(new TestResource(two_byte_string));
539 i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); 544 i::Handle<i::String> istring = v8::Utils::OpenHandle(*string);
(...skipping 6056 matching lines...) Expand 10 before | Expand all | Expand 10 after
6596 // the property 6601 // the property
6597 pass_on_get = false; 6602 pass_on_get = false;
6598 CHECK_EQ(3, global->Get(some_property)->Int32Value()); 6603 CHECK_EQ(3, global->Get(some_property)->Int32Value());
6599 CHECK_EQ(1, force_set_set_count); 6604 CHECK_EQ(1, force_set_set_count);
6600 CHECK_EQ(5, force_set_get_count); 6605 CHECK_EQ(5, force_set_get_count);
6601 // The interceptor should also work for other properties 6606 // The interceptor should also work for other properties
6602 CHECK_EQ(3, global->Get(v8::String::New("b"))->Int32Value()); 6607 CHECK_EQ(3, global->Get(v8::String::New("b"))->Int32Value());
6603 CHECK_EQ(1, force_set_set_count); 6608 CHECK_EQ(1, force_set_set_count);
6604 CHECK_EQ(6, force_set_get_count); 6609 CHECK_EQ(6, force_set_get_count);
6605 } 6610 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698