i965: Initialize all member variables of bblock_t on construction.
authorFrancisco Jerez <currojerez@riseup.net>
Fri, 20 Sep 2013 23:27:42 +0000 (16:27 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Wed, 2 Oct 2013 00:30:51 +0000 (17:30 -0700)
The bblock_t object relies on the memory allocator zeroing out its
contents before it's initialized, which is quite an unusual practice
in the C++ world because it ties objects to some specific allocation
scheme, and gives unpredictable results when an object is created with
a different allocator -- Stack allocation, array allocation, or
aggregation inside a different object are some of the useful
possibilities that come to my mind.  Initialize all fields from the
constructor and stop using the zeroing allocator.

v2: Use zero initialization for numeric types instead of default construction.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_cfg.cpp
src/mesa/drivers/dri/i965/brw_cfg.h

index f4cfcd5687595b2d8ec125ec03ee7f47e404c6d9..02ae37e13cac40bbfb04e38c96c2df010244ef53 100644 (file)
@@ -44,7 +44,8 @@ pop_stack(exec_list *list)
    return block;
 }
 
-bblock_t::bblock_t()
+bblock_t::bblock_t() :
+   start_ip(0), end_ip(0), block_num(0)
 {
    start = NULL;
    end = NULL;
index 27bc8b6021ecf7f4b18414d90c65f428bd6bbc01..505a5cfdf60beb2e15e8ea9013e49ac4891c3815 100644 (file)
@@ -39,7 +39,7 @@ public:
 
 class bblock_t {
 public:
-   DECLARE_RZALLOC_CXX_OPERATORS(bblock_t)
+   DECLARE_RALLOC_CXX_OPERATORS(bblock_t)
 
    bblock_link *make_list(void *mem_ctx);