c0282f608c
STRUCT_LIST and INSTANCE_TYPE_LIST are now forced to have the same order as the InstanceType enum. Drive-by-fix 1: Move type check and cast functions closer together in objects-inl.h Drive-by-fix 2: Remove unused instance types SIGNATURE_INFO_TYPE and TYPE_SWITCH_INFO_TYPE. BUG= Review-Url: https://codereview.chromium.org/2578573002 Cr-Commit-Position: refs/heads/master@{#41804}
58 lines
2.1 KiB
C++
58 lines
2.1 KiB
C++
// Copyright 2016 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include <cmath>
|
|
#include <iostream>
|
|
#include <limits>
|
|
|
|
#include "src/objects-inl.h"
|
|
#include "src/objects.h"
|
|
|
|
#include "testing/gtest/include/gtest/gtest.h"
|
|
|
|
namespace v8 {
|
|
namespace internal {
|
|
|
|
TEST(Object, InstanceTypeListOrder) {
|
|
int current = 0;
|
|
int last = -1;
|
|
InstanceType current_type = static_cast<InstanceType>(current);
|
|
EXPECT_EQ(current_type, InstanceType::FIRST_TYPE);
|
|
EXPECT_EQ(current_type, InstanceType::INTERNALIZED_STRING_TYPE);
|
|
#define TEST_INSTANCE_TYPE(type) \
|
|
current_type = InstanceType::type; \
|
|
current = static_cast<int>(current_type); \
|
|
if (current > static_cast<int>(LAST_NAME_TYPE)) { \
|
|
EXPECT_EQ(last + 1, current); \
|
|
} \
|
|
EXPECT_LT(last, current) << " INSTANCE_TYPE_LIST is not ordered: " \
|
|
<< "last = " << static_cast<InstanceType>(last) \
|
|
<< " vs. current = " << current_type; \
|
|
last = current;
|
|
|
|
INSTANCE_TYPE_LIST(TEST_INSTANCE_TYPE)
|
|
#undef TEST_INSTANCE_TYPE
|
|
}
|
|
|
|
TEST(Object, StructListOrder) {
|
|
int current = static_cast<int>(InstanceType::ACCESSOR_INFO_TYPE);
|
|
int last = current - 1;
|
|
ASSERT_LT(0, last);
|
|
InstanceType current_type = static_cast<InstanceType>(current);
|
|
#define TEST_STRUCT(type, class, name) \
|
|
current_type = InstanceType::type##_TYPE; \
|
|
current = static_cast<int>(current_type); \
|
|
EXPECT_EQ(last + 1, current) \
|
|
<< " STRUCT_LIST is not ordered: " \
|
|
<< " last = " << static_cast<InstanceType>(last) \
|
|
<< " vs. current = " << current_type; \
|
|
last = current;
|
|
|
|
STRUCT_LIST(TEST_STRUCT)
|
|
#undef TEST_STRUCT
|
|
}
|
|
|
|
} // namespace internal
|
|
} // namespace v8
|