| Index: test/cctest/test-heap.cc
|
| diff --git a/test/cctest/test-heap.cc b/test/cctest/test-heap.cc
|
| index b6b96adcaf36ce924fdcd7c7cc964811f7dc4221..387829bfa5e8d7fe8af7707afc599b9182da9157 100644
|
| --- a/test/cctest/test-heap.cc
|
| +++ b/test/cctest/test-heap.cc
|
| @@ -556,6 +556,47 @@ TEST(DeleteWeakGlobalHandle) {
|
| }
|
|
|
|
|
| +TEST(BytecodeArray) {
|
| + static const uint8_t kRawBytes[] = { 0xc3, 0x7e, 0xa5, 0x5a };
|
| + static const int kFrameSize = 32;
|
| + static const int kNumberOfLocals = 20;
|
| +
|
| + CcTest::InitializeVM();
|
| + Isolate* isolate = CcTest::i_isolate();
|
| + Heap* heap = isolate->heap();
|
| + Factory* factory = isolate->factory();
|
| + HandleScope scope(isolate);
|
| +
|
| + // Allocate and initialize BytecodeArray
|
| + Handle<BytecodeArray> array =
|
| + factory->NewBytecodeArray(sizeof(kRawBytes), kRawBytes);
|
| +
|
| + array->set_frame_size(kFrameSize);
|
| + array->set_number_of_locals(kNumberOfLocals);
|
| +
|
| + CHECK(array->IsBytecodeArray());
|
| + CHECK_EQ(array->length(), sizeof(kRawBytes));
|
| +
|
| + for (int i = 0; i < sizeof(kRawBytes); i++) {
|
| + CHECK_EQ(array->get(i), kRawBytes[i]);
|
| + CHECK_EQ(array->GetFirstBytecodeAddress()[i], kRawBytes[i]);
|
| + }
|
| +
|
| + // Full garbage collection
|
| + heap->CollectAllGarbage();
|
| +
|
| + // BytecodeArray should survive
|
| + CHECK_EQ(array->length(), sizeof(kRawBytes));
|
| + CHECK_EQ(array->number_of_locals(), kNumberOfLocals);
|
| + CHECK_EQ(array->frame_size(), kFrameSize);
|
| +
|
| + for (int i = 0; i < sizeof(kRawBytes); i++) {
|
| + CHECK_EQ(array->get(i), kRawBytes[i]);
|
| + CHECK_EQ(array->GetFirstBytecodeAddress()[i], kRawBytes[i]);
|
| + }
|
| +}
|
| +
|
| +
|
| static const char* not_so_random_string_table[] = {
|
| "abstract",
|
| "boolean",
|
|
|