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

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

Issue 1267493006: Remove JSFunctionResultCache. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase Created 5 years, 4 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
« no previous file with comments | « test/cctest/cctest.cc ('k') | test/cctest/test-threads.cc » ('j') | 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 6769 matching lines...) Expand 10 before | Expand all | Expand 10 after
6780 6780
6781 static void ForceMarkSweep1( 6781 static void ForceMarkSweep1(
6782 const v8::WeakCallbackInfo<FlagAndPersistent>& data) { 6782 const v8::WeakCallbackInfo<FlagAndPersistent>& data) {
6783 data.GetParameter()->handle.Reset(); 6783 data.GetParameter()->handle.Reset();
6784 data.SetSecondPassCallback(ForceMarkSweep2); 6784 data.SetSecondPassCallback(ForceMarkSweep2);
6785 } 6785 }
6786 6786
6787 6787
6788 THREADED_TEST(GCFromWeakCallbacks) { 6788 THREADED_TEST(GCFromWeakCallbacks) {
6789 v8::Isolate* isolate = CcTest::isolate(); 6789 v8::Isolate* isolate = CcTest::isolate();
6790 v8::Locker locker(CcTest::isolate());
6790 v8::HandleScope scope(isolate); 6791 v8::HandleScope scope(isolate);
6791 v8::Handle<Context> context = Context::New(isolate); 6792 v8::Handle<Context> context = Context::New(isolate);
6792 Context::Scope context_scope(context); 6793 Context::Scope context_scope(context);
6793 6794
6794 static const int kNumberOfGCTypes = 2; 6795 static const int kNumberOfGCTypes = 2;
6795 typedef v8::WeakCallbackInfo<FlagAndPersistent>::Callback Callback; 6796 typedef v8::WeakCallbackInfo<FlagAndPersistent>::Callback Callback;
6796 Callback gc_forcing_callback[kNumberOfGCTypes] = {&ForceScavenge1, 6797 Callback gc_forcing_callback[kNumberOfGCTypes] = {&ForceScavenge1,
6797 &ForceMarkSweep1}; 6798 &ForceMarkSweep1};
6798 6799
6799 typedef void (*GCInvoker)(); 6800 typedef void (*GCInvoker)();
(...skipping 5116 matching lines...) Expand 10 before | Expand all | Expand 10 after
11916 11917
11917 11918
11918 void HandleCreatingCallback1( 11919 void HandleCreatingCallback1(
11919 const v8::WeakCallbackInfo<v8::Persistent<v8::Object>>& data) { 11920 const v8::WeakCallbackInfo<v8::Persistent<v8::Object>>& data) {
11920 data.GetParameter()->Reset(); 11921 data.GetParameter()->Reset();
11921 data.SetSecondPassCallback(HandleCreatingCallback2); 11922 data.SetSecondPassCallback(HandleCreatingCallback2);
11922 } 11923 }
11923 11924
11924 11925
11925 THREADED_TEST(NoGlobalHandlesOrphaningDueToWeakCallback) { 11926 THREADED_TEST(NoGlobalHandlesOrphaningDueToWeakCallback) {
11927 v8::Locker locker(CcTest::isolate());
11926 LocalContext context; 11928 LocalContext context;
11927 v8::Isolate* isolate = context->GetIsolate(); 11929 v8::Isolate* isolate = context->GetIsolate();
11928 11930
11929 v8::Persistent<v8::Object> handle1, handle2, handle3; 11931 v8::Persistent<v8::Object> handle1, handle2, handle3;
11930 { 11932 {
11931 v8::HandleScope scope(isolate); 11933 v8::HandleScope scope(isolate);
11932 handle3.Reset(isolate, v8::Object::New(isolate)); 11934 handle3.Reset(isolate, v8::Object::New(isolate));
11933 handle2.Reset(isolate, v8::Object::New(isolate)); 11935 handle2.Reset(isolate, v8::Object::New(isolate));
11934 handle1.Reset(isolate, v8::Object::New(isolate)); 11936 handle1.Reset(isolate, v8::Object::New(isolate));
11935 } 11937 }
(...skipping 4622 matching lines...) Expand 10 before | Expand all | Expand 10 after
16558 isolate->AddGCEpilogueCallback(EpilogueCallbackAlloc); 16560 isolate->AddGCEpilogueCallback(EpilogueCallbackAlloc);
16559 CcTest::heap()->CollectAllGarbage( 16561 CcTest::heap()->CollectAllGarbage(
16560 i::Heap::kAbortIncrementalMarkingMask); 16562 i::Heap::kAbortIncrementalMarkingMask);
16561 CHECK_EQ(1, prologue_call_count_alloc); 16563 CHECK_EQ(1, prologue_call_count_alloc);
16562 CHECK_EQ(1, epilogue_call_count_alloc); 16564 CHECK_EQ(1, epilogue_call_count_alloc);
16563 isolate->RemoveGCPrologueCallback(PrologueCallbackAlloc); 16565 isolate->RemoveGCPrologueCallback(PrologueCallbackAlloc);
16564 isolate->RemoveGCEpilogueCallback(EpilogueCallbackAlloc); 16566 isolate->RemoveGCEpilogueCallback(EpilogueCallbackAlloc);
16565 } 16567 }
16566 16568
16567 16569
16568 THREADED_TEST(AddToJSFunctionResultCache) {
16569 i::FLAG_stress_compaction = false;
16570 i::FLAG_allow_natives_syntax = true;
16571 v8::HandleScope scope(CcTest::isolate());
16572
16573 LocalContext context;
16574
16575 const char* code =
16576 "(function() {"
16577 " var key0 = 'a';"
16578 " var key1 = 'b';"
16579 " var r0 = %_GetFromCache(0, key0);"
16580 " var r1 = %_GetFromCache(0, key1);"
16581 " var r0_ = %_GetFromCache(0, key0);"
16582 " if (r0 !== r0_)"
16583 " return 'Different results for ' + key0 + ': ' + r0 + ' vs. ' + r0_;"
16584 " var r1_ = %_GetFromCache(0, key1);"
16585 " if (r1 !== r1_)"
16586 " return 'Different results for ' + key1 + ': ' + r1 + ' vs. ' + r1_;"
16587 " return 'PASSED';"
16588 "})()";
16589 CcTest::heap()->ClearJSFunctionResultCaches();
16590 ExpectString(code, "PASSED");
16591 }
16592
16593
16594 THREADED_TEST(FillJSFunctionResultCache) {
16595 i::FLAG_allow_natives_syntax = true;
16596 LocalContext context;
16597 v8::HandleScope scope(context->GetIsolate());
16598
16599 const char* code =
16600 "(function() {"
16601 " var k = 'a';"
16602 " var r = %_GetFromCache(0, k);"
16603 " for (var i = 0; i < 16; i++) {"
16604 " %_GetFromCache(0, 'a' + i);"
16605 " };"
16606 " if (r === %_GetFromCache(0, k))"
16607 " return 'FAILED: k0CacheSize is too small';"
16608 " return 'PASSED';"
16609 "})()";
16610 CcTest::heap()->ClearJSFunctionResultCaches();
16611 ExpectString(code, "PASSED");
16612 }
16613
16614
16615 THREADED_TEST(RoundRobinGetFromCache) {
16616 i::FLAG_allow_natives_syntax = true;
16617 LocalContext context;
16618 v8::HandleScope scope(context->GetIsolate());
16619
16620 const char* code =
16621 "(function() {"
16622 " var keys = [];"
16623 " for (var i = 0; i < 16; i++) keys.push(i);"
16624 " var values = [];"
16625 " for (var i = 0; i < 16; i++) values[i] = %_GetFromCache(0, keys[i]);"
16626 " for (var i = 0; i < 16; i++) {"
16627 " var v = %_GetFromCache(0, keys[i]);"
16628 " if (v.toString() !== values[i].toString())"
16629 " return 'Wrong value for ' + "
16630 " keys[i] + ': ' + v + ' vs. ' + values[i];"
16631 " };"
16632 " return 'PASSED';"
16633 "})()";
16634 CcTest::heap()->ClearJSFunctionResultCaches();
16635 ExpectString(code, "PASSED");
16636 }
16637
16638
16639 THREADED_TEST(ReverseGetFromCache) {
16640 i::FLAG_allow_natives_syntax = true;
16641 LocalContext context;
16642 v8::HandleScope scope(context->GetIsolate());
16643
16644 const char* code =
16645 "(function() {"
16646 " var keys = [];"
16647 " for (var i = 0; i < 16; i++) keys.push(i);"
16648 " var values = [];"
16649 " for (var i = 0; i < 16; i++) values[i] = %_GetFromCache(0, keys[i]);"
16650 " for (var i = 15; i >= 16; i--) {"
16651 " var v = %_GetFromCache(0, keys[i]);"
16652 " if (v !== values[i])"
16653 " return 'Wrong value for ' + "
16654 " keys[i] + ': ' + v + ' vs. ' + values[i];"
16655 " };"
16656 " return 'PASSED';"
16657 "})()";
16658 CcTest::heap()->ClearJSFunctionResultCaches();
16659 ExpectString(code, "PASSED");
16660 }
16661
16662
16663 THREADED_TEST(TestEviction) {
16664 i::FLAG_allow_natives_syntax = true;
16665 LocalContext context;
16666 v8::HandleScope scope(context->GetIsolate());
16667
16668 const char* code =
16669 "(function() {"
16670 " for (var i = 0; i < 2*16; i++) {"
16671 " %_GetFromCache(0, 'a' + i);"
16672 " };"
16673 " return 'PASSED';"
16674 "})()";
16675 CcTest::heap()->ClearJSFunctionResultCaches();
16676 ExpectString(code, "PASSED");
16677 }
16678
16679
16680 THREADED_TEST(TwoByteStringInOneByteCons) { 16570 THREADED_TEST(TwoByteStringInOneByteCons) {
16681 // See Chromium issue 47824. 16571 // See Chromium issue 47824.
16682 LocalContext context; 16572 LocalContext context;
16683 v8::HandleScope scope(context->GetIsolate()); 16573 v8::HandleScope scope(context->GetIsolate());
16684 16574
16685 const char* init_code = 16575 const char* init_code =
16686 "var str1 = 'abelspendabel';" 16576 "var str1 = 'abelspendabel';"
16687 "var str2 = str1 + str1 + str1;" 16577 "var str2 = str1 + str1 + str1;"
16688 "str2;"; 16578 "str2;";
16689 Local<Value> result = CompileRun(init_code); 16579 Local<Value> result = CompileRun(init_code);
(...skipping 5240 matching lines...) Expand 10 before | Expand all | Expand 10 after
21930 21820
21931 v8::TryCatch try_catch(CcTest::isolate()); 21821 v8::TryCatch try_catch(CcTest::isolate());
21932 timeout_thread.Start(); 21822 timeout_thread.Start();
21933 21823
21934 CompileRun( 21824 CompileRun(
21935 "var ab = new SharedArrayBuffer(4);" 21825 "var ab = new SharedArrayBuffer(4);"
21936 "var i32a = new Int32Array(ab);" 21826 "var i32a = new Int32Array(ab);"
21937 "Atomics.futexWait(i32a, 0, 0);"); 21827 "Atomics.futexWait(i32a, 0, 0);");
21938 CHECK(try_catch.HasTerminated()); 21828 CHECK(try_catch.HasTerminated());
21939 } 21829 }
OLDNEW
« no previous file with comments | « test/cctest/cctest.cc ('k') | test/cctest/test-threads.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698