OLD | NEW |
---|---|
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 18545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
18556 CHECK_EQ(42, c1->Get(v8_str("x"))->Int32Value()); | 18556 CHECK_EQ(42, c1->Get(v8_str("x"))->Int32Value()); |
18557 CHECK_EQ(23, c1->Get(v8_str("y"))->Int32Value()); | 18557 CHECK_EQ(23, c1->Get(v8_str("y"))->Int32Value()); |
18558 } | 18558 } |
18559 } | 18559 } |
18560 | 18560 |
18561 v8::Isolate* gc_callbacks_isolate = NULL; | 18561 v8::Isolate* gc_callbacks_isolate = NULL; |
18562 int prologue_call_count = 0; | 18562 int prologue_call_count = 0; |
18563 int epilogue_call_count = 0; | 18563 int epilogue_call_count = 0; |
18564 int prologue_call_count_second = 0; | 18564 int prologue_call_count_second = 0; |
18565 int epilogue_call_count_second = 0; | 18565 int epilogue_call_count_second = 0; |
18566 int prologue_call_count_alloc = 0; | |
18567 int epilogue_call_count_alloc = 0; | |
18566 | 18568 |
18567 void PrologueCallback(v8::GCType, v8::GCCallbackFlags flags) { | 18569 void PrologueCallback(v8::GCType, v8::GCCallbackFlags flags) { |
18568 CHECK_EQ(flags, v8::kNoGCCallbackFlags); | 18570 CHECK_EQ(flags, v8::kNoGCCallbackFlags); |
18569 ++prologue_call_count; | 18571 ++prologue_call_count; |
18570 } | 18572 } |
18571 | 18573 |
18572 | 18574 |
18573 void PrologueCallback(v8::Isolate* isolate, | 18575 void PrologueCallback(v8::Isolate* isolate, |
18574 v8::GCType, | 18576 v8::GCType, |
18575 v8::GCCallbackFlags flags) { | 18577 v8::GCCallbackFlags flags) { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
18617 | 18619 |
18618 void EpilogueCallbackSecond(v8::Isolate* isolate, | 18620 void EpilogueCallbackSecond(v8::Isolate* isolate, |
18619 v8::GCType, | 18621 v8::GCType, |
18620 v8::GCCallbackFlags flags) { | 18622 v8::GCCallbackFlags flags) { |
18621 CHECK_EQ(flags, v8::kNoGCCallbackFlags); | 18623 CHECK_EQ(flags, v8::kNoGCCallbackFlags); |
18622 CHECK_EQ(gc_callbacks_isolate, isolate); | 18624 CHECK_EQ(gc_callbacks_isolate, isolate); |
18623 ++epilogue_call_count_second; | 18625 ++epilogue_call_count_second; |
18624 } | 18626 } |
18625 | 18627 |
18626 | 18628 |
18629 void PrologueCallbackAlloc(v8::Isolate* isolate, | |
18630 v8::GCType, | |
18631 v8::GCCallbackFlags flags) { | |
18632 v8::HandleScope scope(isolate); | |
18633 | |
18634 CHECK_EQ(flags, v8::kNoGCCallbackFlags); | |
18635 CHECK_EQ(gc_callbacks_isolate, isolate); | |
18636 ++prologue_call_count_alloc; | |
18637 | |
18638 // Simulate full heap to see if we will reenter this callback | |
18639 SimulateFullSpace(CcTest::heap()->new_space()); | |
18640 | |
18641 Local<Object> obj = Object::New(isolate); | |
18642 ASSERT(!obj.IsEmpty()); | |
Hannes Payer (out of office)
2014/03/11 10:57:20
Can we call CcTest::heap()->CollectAllGarbage(i::H
| |
18643 } | |
18644 | |
18645 | |
18646 void EpilogueCallbackAlloc(v8::Isolate* isolate, | |
18647 v8::GCType, | |
18648 v8::GCCallbackFlags flags) { | |
18649 v8::HandleScope scope(isolate); | |
18650 | |
18651 CHECK_EQ(flags, v8::kNoGCCallbackFlags); | |
18652 CHECK_EQ(gc_callbacks_isolate, isolate); | |
18653 ++epilogue_call_count_alloc; | |
18654 | |
18655 // Simulate full heap to see if we will reenter this callback | |
18656 SimulateFullSpace(CcTest::heap()->new_space()); | |
18657 | |
18658 Local<Object> obj = Object::New(isolate); | |
18659 ASSERT(!obj.IsEmpty()); | |
Hannes Payer (out of office)
2014/03/11 10:57:20
Can we call CcTest::heap()->CollectAllGarbage(i::H
| |
18660 } | |
18661 | |
18662 | |
18627 TEST(GCCallbacksOld) { | 18663 TEST(GCCallbacksOld) { |
18628 LocalContext context; | 18664 LocalContext context; |
18629 | 18665 |
18630 v8::V8::AddGCPrologueCallback(PrologueCallback); | 18666 v8::V8::AddGCPrologueCallback(PrologueCallback); |
18631 v8::V8::AddGCEpilogueCallback(EpilogueCallback); | 18667 v8::V8::AddGCEpilogueCallback(EpilogueCallback); |
18632 CHECK_EQ(0, prologue_call_count); | 18668 CHECK_EQ(0, prologue_call_count); |
18633 CHECK_EQ(0, epilogue_call_count); | 18669 CHECK_EQ(0, epilogue_call_count); |
18634 CcTest::heap()->CollectAllGarbage(i::Heap::kNoGCFlags); | 18670 CcTest::heap()->CollectAllGarbage(i::Heap::kNoGCFlags); |
18635 CHECK_EQ(1, prologue_call_count); | 18671 CHECK_EQ(1, prologue_call_count); |
18636 CHECK_EQ(1, epilogue_call_count); | 18672 CHECK_EQ(1, epilogue_call_count); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
18683 CHECK_EQ(2, epilogue_call_count); | 18719 CHECK_EQ(2, epilogue_call_count); |
18684 CHECK_EQ(2, prologue_call_count_second); | 18720 CHECK_EQ(2, prologue_call_count_second); |
18685 CHECK_EQ(2, epilogue_call_count_second); | 18721 CHECK_EQ(2, epilogue_call_count_second); |
18686 isolate->RemoveGCPrologueCallback(PrologueCallbackSecond); | 18722 isolate->RemoveGCPrologueCallback(PrologueCallbackSecond); |
18687 isolate->RemoveGCEpilogueCallback(EpilogueCallbackSecond); | 18723 isolate->RemoveGCEpilogueCallback(EpilogueCallbackSecond); |
18688 CcTest::heap()->CollectAllGarbage(i::Heap::kNoGCFlags); | 18724 CcTest::heap()->CollectAllGarbage(i::Heap::kNoGCFlags); |
18689 CHECK_EQ(2, prologue_call_count); | 18725 CHECK_EQ(2, prologue_call_count); |
18690 CHECK_EQ(2, epilogue_call_count); | 18726 CHECK_EQ(2, epilogue_call_count); |
18691 CHECK_EQ(2, prologue_call_count_second); | 18727 CHECK_EQ(2, prologue_call_count_second); |
18692 CHECK_EQ(2, epilogue_call_count_second); | 18728 CHECK_EQ(2, epilogue_call_count_second); |
18729 | |
18730 CHECK_EQ(0, prologue_call_count_alloc); | |
18731 CHECK_EQ(0, epilogue_call_count_alloc); | |
18732 isolate->AddGCPrologueCallback(PrologueCallbackAlloc); | |
18733 isolate->AddGCEpilogueCallback(EpilogueCallbackAlloc); | |
18734 CcTest::heap()->CollectAllGarbage(i::Heap::kNoGCFlags); | |
Hannes Payer (out of office)
2014/03/11 10:57:20
CcTest::heap()->CollectAllGarbage(i::Heap::Heap::k
| |
18735 CHECK_EQ(1, prologue_call_count_alloc); | |
18736 CHECK_EQ(1, epilogue_call_count_alloc); | |
18737 isolate->RemoveGCPrologueCallback(PrologueCallbackAlloc); | |
18738 isolate->RemoveGCEpilogueCallback(EpilogueCallbackAlloc); | |
18693 } | 18739 } |
18694 | 18740 |
18695 | 18741 |
18696 THREADED_TEST(AddToJSFunctionResultCache) { | 18742 THREADED_TEST(AddToJSFunctionResultCache) { |
18697 i::FLAG_stress_compaction = false; | 18743 i::FLAG_stress_compaction = false; |
18698 i::FLAG_allow_natives_syntax = true; | 18744 i::FLAG_allow_natives_syntax = true; |
18699 v8::HandleScope scope(CcTest::isolate()); | 18745 v8::HandleScope scope(CcTest::isolate()); |
18700 | 18746 |
18701 LocalContext context; | 18747 LocalContext context; |
18702 | 18748 |
(...skipping 3406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
22109 Local<Object> ApiCallOptimizationChecker::holder; | 22155 Local<Object> ApiCallOptimizationChecker::holder; |
22110 Local<Object> ApiCallOptimizationChecker::callee; | 22156 Local<Object> ApiCallOptimizationChecker::callee; |
22111 int ApiCallOptimizationChecker::count = 0; | 22157 int ApiCallOptimizationChecker::count = 0; |
22112 | 22158 |
22113 | 22159 |
22114 TEST(TestFunctionCallOptimization) { | 22160 TEST(TestFunctionCallOptimization) { |
22115 i::FLAG_allow_natives_syntax = true; | 22161 i::FLAG_allow_natives_syntax = true; |
22116 ApiCallOptimizationChecker checker; | 22162 ApiCallOptimizationChecker checker; |
22117 checker.RunAll(); | 22163 checker.RunAll(); |
22118 } | 22164 } |
OLD | NEW |