OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 #include "test/cctest/cctest.h" | 6 #include "test/cctest/cctest.h" |
7 | 7 |
8 #include "src/api.h" | 8 #include "src/api.h" |
9 #include "src/debug/debug.h" | 9 #include "src/debug/debug.h" |
10 #include "src/execution.h" | 10 #include "src/execution.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 FeedbackVectorSpec spec(&zone); | 100 FeedbackVectorSpec spec(&zone); |
101 spec.AddGeneralSlot(); | 101 spec.AddGeneralSlot(); |
102 spec.AddCreateClosureSlot(5); | 102 spec.AddCreateClosureSlot(5); |
103 spec.AddGeneralSlot(); | 103 spec.AddGeneralSlot(); |
104 vector = NewTypeFeedbackVector(isolate, &spec); | 104 vector = NewTypeFeedbackVector(isolate, &spec); |
105 FeedbackVectorHelper helper(vector); | 105 FeedbackVectorHelper helper(vector); |
106 CHECK_EQ(1, TypeFeedbackMetadata::GetSlotSize( | 106 CHECK_EQ(1, TypeFeedbackMetadata::GetSlotSize( |
107 FeedbackVectorSlotKind::CREATE_CLOSURE)); | 107 FeedbackVectorSlotKind::CREATE_CLOSURE)); |
108 FeedbackVectorSlot slot = helper.slot(1); | 108 FeedbackVectorSlot slot = helper.slot(1); |
109 FixedArray* array = FixedArray::cast(vector->Get(slot)); | 109 FixedArray* array = FixedArray::cast(vector->Get(slot)); |
110 CHECK_EQ(array, *factory->empty_literals_array()); | 110 CHECK_EQ(5, array->length()); |
| 111 CHECK_EQ(5, vector->GetParameter(slot)); |
| 112 CHECK_EQ(array->get(0), *factory->undefined_value()); |
111 } | 113 } |
112 } | 114 } |
113 | 115 |
114 | 116 |
115 // IC slots need an encoding to recognize what is in there. | 117 // IC slots need an encoding to recognize what is in there. |
116 TEST(VectorICMetadata) { | 118 TEST(VectorICMetadata) { |
117 LocalContext context; | 119 LocalContext context; |
118 v8::HandleScope scope(context->GetIsolate()); | 120 v8::HandleScope scope(context->GetIsolate()); |
119 Isolate* isolate = CcTest::i_isolate(); | 121 Isolate* isolate = CcTest::i_isolate(); |
120 Zone zone(isolate->allocator(), ZONE_NAME); | 122 Zone zone(isolate->allocator(), ZONE_NAME); |
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
597 // There should be one IC slot. | 599 // There should be one IC slot. |
598 Handle<TypeFeedbackVector> feedback_vector(f->feedback_vector()); | 600 Handle<TypeFeedbackVector> feedback_vector(f->feedback_vector()); |
599 FeedbackVectorHelper helper(feedback_vector); | 601 FeedbackVectorHelper helper(feedback_vector); |
600 CHECK_EQ(1, helper.slot_count()); | 602 CHECK_EQ(1, helper.slot_count()); |
601 FeedbackVectorSlot slot(0); | 603 FeedbackVectorSlot slot(0); |
602 StoreICNexus nexus(feedback_vector, slot); | 604 StoreICNexus nexus(feedback_vector, slot); |
603 CHECK_EQ(MONOMORPHIC, nexus.StateFromFeedback()); | 605 CHECK_EQ(MONOMORPHIC, nexus.StateFromFeedback()); |
604 } | 606 } |
605 | 607 |
606 } // namespace | 608 } // namespace |
OLD | NEW |