Upgrade V8 to version 4.9.385.28
https://chromium.googlesource.com/v8/v8/+/4.9.385.28
FPIIM-449
Change-Id: I4b2e74289d4bf3667f2f3dc8aa2e541f63e26eb4
diff --git a/test/cctest/expression-type-collector-macros.h b/test/cctest/expression-type-collector-macros.h
new file mode 100644
index 0000000..68d6948
--- /dev/null
+++ b/test/cctest/expression-type-collector-macros.h
@@ -0,0 +1,57 @@
+// Copyright 2015 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.
+
+#ifndef V8_EXPRESSION_TYPE_COLLECTOR_MACROS_H_
+#define V8_EXPRESSION_TYPE_COLLECTOR_MACROS_H_
+
+#define CHECK_TYPES_BEGIN \
+ { \
+ size_t index = 0; \
+ int depth = 0;
+
+#define CHECK_TYPES_END \
+ CHECK_EQ(index, types.size()); \
+ }
+
+#ifdef DEBUG
+#define CHECK_TYPE(type) \
+ if (!types[index].bounds.Narrows(type)) { \
+ fprintf(stderr, "Expected:\n"); \
+ fprintf(stderr, " lower: "); \
+ type.lower->Print(); \
+ fprintf(stderr, " upper: "); \
+ type.upper->Print(); \
+ fprintf(stderr, "Actual:\n"); \
+ fprintf(stderr, " lower: "); \
+ types[index].bounds.lower->Print(); \
+ fprintf(stderr, " upper: "); \
+ types[index].bounds.upper->Print(); \
+ } \
+ CHECK(types[index].bounds.Narrows(type));
+#else
+#define CHECK_TYPE(type) CHECK(types[index].bounds.Narrows(type));
+#endif
+
+#define CHECK_EXPR(ekind, type) \
+ CHECK_LT(index, types.size()); \
+ CHECK(strcmp(#ekind, types[index].kind) == 0); \
+ CHECK_EQ(depth, types[index].depth); \
+ CHECK_TYPE(type); \
+ for (int j = (++depth, ++index, 0); j < 1 ? 1 : (--depth, 0); ++j)
+
+#define CHECK_VAR(vname, type) \
+ CHECK_EXPR(VariableProxy, type); \
+ CHECK_EQ(#vname, std::string(types[index - 1].name->raw_data(), \
+ types[index - 1].name->raw_data() + \
+ types[index - 1].name->byte_length()));
+
+#define CHECK_SKIP() \
+ { \
+ ++index; \
+ while (index < types.size() && types[index].depth > depth) { \
+ ++index; \
+ } \
+ }
+
+#endif // V8_EXPRESSION_TYPE_COLLECTOR_MACROS_H_