Commit f096c06f by Zhi Committed by Tianqi Chen

make adt tag signed (#4605)

parent 6b11ffb9
...@@ -164,7 +164,7 @@ class InplaceArrayBase { ...@@ -164,7 +164,7 @@ class InplaceArrayBase {
class ADTObj : public Object, public InplaceArrayBase<ADTObj, ObjectRef> { class ADTObj : public Object, public InplaceArrayBase<ADTObj, ObjectRef> {
public: public:
/*! \brief The tag representing the constructor used. */ /*! \brief The tag representing the constructor used. */
uint32_t tag; int32_t tag;
/*! \brief Number of fields in the ADT object. */ /*! \brief Number of fields in the ADT object. */
uint32_t size; uint32_t size;
// The fields of the structure follows directly in memory. // The fields of the structure follows directly in memory.
...@@ -211,7 +211,7 @@ class ADT : public ObjectRef { ...@@ -211,7 +211,7 @@ class ADT : public ObjectRef {
* \param fields The fields of the ADT object. * \param fields The fields of the ADT object.
* \return The constructed ADT object reference. * \return The constructed ADT object reference.
*/ */
ADT(uint32_t tag, std::vector<ObjectRef> fields) ADT(int32_t tag, std::vector<ObjectRef> fields)
: ADT(tag, fields.begin(), fields.end()){}; : ADT(tag, fields.begin(), fields.end()){};
/*! /*!
...@@ -222,7 +222,7 @@ class ADT : public ObjectRef { ...@@ -222,7 +222,7 @@ class ADT : public ObjectRef {
* \return The constructed ADT object reference. * \return The constructed ADT object reference.
*/ */
template <typename Iterator> template <typename Iterator>
ADT(uint32_t tag, Iterator begin, Iterator end) { ADT(int32_t tag, Iterator begin, Iterator end) {
size_t num_elems = std::distance(begin, end); size_t num_elems = std::distance(begin, end);
auto ptr = make_inplace_array_object<ADTObj, ObjectRef>(num_elems); auto ptr = make_inplace_array_object<ADTObj, ObjectRef>(num_elems);
ptr->tag = tag; ptr->tag = tag;
...@@ -236,7 +236,7 @@ class ADT : public ObjectRef { ...@@ -236,7 +236,7 @@ class ADT : public ObjectRef {
* \param init The initializer list of fields. * \param init The initializer list of fields.
* \return The constructed ADT object reference. * \return The constructed ADT object reference.
*/ */
ADT(uint32_t tag, std::initializer_list<ObjectRef> init) ADT(int32_t tag, std::initializer_list<ObjectRef> init)
: ADT(tag, init.begin(), init.end()){}; : ADT(tag, init.begin(), init.end()){};
/*! /*!
...@@ -252,7 +252,7 @@ class ADT : public ObjectRef { ...@@ -252,7 +252,7 @@ class ADT : public ObjectRef {
/*! /*!
* \brief Return the ADT tag. * \brief Return the ADT tag.
*/ */
size_t tag() const { return operator->()->tag; } int32_t tag() const { return operator->()->tag; }
/*! /*!
* \brief Return the number of fields. * \brief Return the number of fields.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment