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

Side by Side Diff: test/cctest/test-object-observe.cc

Issue 1213203007: Create a internal, global native context used only for generated code stubs (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Review feedback Created 5 years, 5 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/test-heap-profiler.cc ('k') | test/mjsunit/compiler/stubs/floor-stub.js » ('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 693 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 LocalContext context2(CcTest::isolate()); 704 LocalContext context2(CcTest::isolate());
705 context2->SetSecurityToken(foo); 705 context2->SetSecurityToken(foo);
706 context2->Global()->Set(String::NewFromUtf8(CcTest::isolate(), "obj"), 706 context2->Global()->Set(String::NewFromUtf8(CcTest::isolate(), "obj"),
707 object); 707 object);
708 CompileRun("function observer() {};" 708 CompileRun("function observer() {};"
709 "Object.observe(obj, observer, ['foo', 'bar', 'baz']);" 709 "Object.observe(obj, observer, ['foo', 'bar', 'baz']);"
710 "Object.unobserve(obj, observer);"); 710 "Object.unobserve(obj, observer);");
711 } 711 }
712 712
713 CcTest::isolate()->ContextDisposedNotification(); 713 CcTest::isolate()->ContextDisposedNotification();
714 CheckSurvivingGlobalObjectsCount(1); 714 CheckSurvivingGlobalObjectsCount(2);
715 } 715 }
716 716
717 717
718 TEST(DontLeakContextOnGetNotifier) { 718 TEST(DontLeakContextOnGetNotifier) {
719 HandleScope scope(CcTest::isolate()); 719 HandleScope scope(CcTest::isolate());
720 Handle<Value> foo = String::NewFromUtf8(CcTest::isolate(), "foo"); 720 Handle<Value> foo = String::NewFromUtf8(CcTest::isolate(), "foo");
721 LocalContext context(CcTest::isolate()); 721 LocalContext context(CcTest::isolate());
722 context->SetSecurityToken(foo); 722 context->SetSecurityToken(foo);
723 CompileRun("var obj = {};"); 723 CompileRun("var obj = {};");
724 Handle<Value> object = CompileRun("obj"); 724 Handle<Value> object = CompileRun("obj");
725 { 725 {
726 HandleScope scope(CcTest::isolate()); 726 HandleScope scope(CcTest::isolate());
727 LocalContext context2(CcTest::isolate()); 727 LocalContext context2(CcTest::isolate());
728 context2->SetSecurityToken(foo); 728 context2->SetSecurityToken(foo);
729 context2->Global()->Set(String::NewFromUtf8(CcTest::isolate(), "obj"), 729 context2->Global()->Set(String::NewFromUtf8(CcTest::isolate(), "obj"),
730 object); 730 object);
731 CompileRun("Object.getNotifier(obj);"); 731 CompileRun("Object.getNotifier(obj);");
732 } 732 }
733 733
734 CcTest::isolate()->ContextDisposedNotification(); 734 CcTest::isolate()->ContextDisposedNotification();
735 CheckSurvivingGlobalObjectsCount(1); 735 CheckSurvivingGlobalObjectsCount(2);
736 } 736 }
737 737
738 738
739 TEST(DontLeakContextOnNotifierPerformChange) { 739 TEST(DontLeakContextOnNotifierPerformChange) {
740 HandleScope scope(CcTest::isolate()); 740 HandleScope scope(CcTest::isolate());
741 Handle<Value> foo = String::NewFromUtf8(CcTest::isolate(), "foo"); 741 Handle<Value> foo = String::NewFromUtf8(CcTest::isolate(), "foo");
742 LocalContext context(CcTest::isolate()); 742 LocalContext context(CcTest::isolate());
743 context->SetSecurityToken(foo); 743 context->SetSecurityToken(foo);
744 CompileRun("var obj = {};"); 744 CompileRun("var obj = {};");
745 Handle<Value> object = CompileRun("obj"); 745 Handle<Value> object = CompileRun("obj");
746 Handle<Value> notifier = CompileRun("Object.getNotifier(obj)"); 746 Handle<Value> notifier = CompileRun("Object.getNotifier(obj)");
747 { 747 {
748 HandleScope scope(CcTest::isolate()); 748 HandleScope scope(CcTest::isolate());
749 LocalContext context2(CcTest::isolate()); 749 LocalContext context2(CcTest::isolate());
750 context2->SetSecurityToken(foo); 750 context2->SetSecurityToken(foo);
751 context2->Global()->Set(String::NewFromUtf8(CcTest::isolate(), "obj"), 751 context2->Global()->Set(String::NewFromUtf8(CcTest::isolate(), "obj"),
752 object); 752 object);
753 context2->Global()->Set(String::NewFromUtf8(CcTest::isolate(), "notifier"), 753 context2->Global()->Set(String::NewFromUtf8(CcTest::isolate(), "notifier"),
754 notifier); 754 notifier);
755 CompileRun("var obj2 = {};" 755 CompileRun("var obj2 = {};"
756 "var notifier2 = Object.getNotifier(obj2);" 756 "var notifier2 = Object.getNotifier(obj2);"
757 "notifier2.performChange.call(" 757 "notifier2.performChange.call("
758 "notifier, 'foo', function(){})"); 758 "notifier, 'foo', function(){})");
759 } 759 }
760 760
761 CcTest::isolate()->ContextDisposedNotification(); 761 CcTest::isolate()->ContextDisposedNotification();
762 CheckSurvivingGlobalObjectsCount(1); 762 CheckSurvivingGlobalObjectsCount(2);
763 } 763 }
764 764
765 765
766 static void ObserverCallback(const FunctionCallbackInfo<Value>& args) { 766 static void ObserverCallback(const FunctionCallbackInfo<Value>& args) {
767 *static_cast<int*>(Handle<External>::Cast(args.Data())->Value()) = 767 *static_cast<int*>(Handle<External>::Cast(args.Data())->Value()) =
768 Handle<Array>::Cast(args[0])->Length(); 768 Handle<Array>::Cast(args[0])->Length();
769 } 769 }
770 770
771 771
772 TEST(ObjectObserveCallsCppFunction) { 772 TEST(ObjectObserveCallsCppFunction) {
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 i::Isolate* isolate = CcTest::i_isolate(); 878 i::Isolate* isolate = CcTest::i_isolate();
879 i::HandleScope scope(isolate); 879 i::HandleScope scope(isolate);
880 LocalContext env; 880 LocalContext env;
881 int use_counts[v8::Isolate::kUseCounterFeatureCount] = {}; 881 int use_counts[v8::Isolate::kUseCounterFeatureCount] = {};
882 global_use_counts = use_counts; 882 global_use_counts = use_counts;
883 CcTest::isolate()->SetUseCounterCallback(MockUseCounterCallback); 883 CcTest::isolate()->SetUseCounterCallback(MockUseCounterCallback);
884 CompileRun("var obj = {}"); 884 CompileRun("var obj = {}");
885 CompileRun("Object.getNotifier(obj)"); 885 CompileRun("Object.getNotifier(obj)");
886 CHECK_EQ(1, use_counts[v8::Isolate::kObjectObserve]); 886 CHECK_EQ(1, use_counts[v8::Isolate::kObjectObserve]);
887 } 887 }
OLDNEW
« no previous file with comments | « test/cctest/test-heap-profiler.cc ('k') | test/mjsunit/compiler/stubs/floor-stub.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698