Chromium Code Reviews| 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 |