Ver código fonte

i965: Initialize all member variables of cfg_t on construction.

The cfg_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.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
tags/mesa-10.1-devel
Francisco Jerez 12 anos atrás
pai
commit
ddd694293a

+ 1
- 0
src/mesa/drivers/dri/i965/brw_cfg.cpp Ver arquivo

@@ -82,6 +82,7 @@ cfg_t::create(void *parent_mem_ctx, exec_list *instructions)
{
mem_ctx = ralloc_context(parent_mem_ctx);
block_list.make_empty();
blocks = NULL;
num_blocks = 0;
ip = 0;
cur = NULL;

+ 1
- 1
src/mesa/drivers/dri/i965/brw_cfg.h Ver arquivo

@@ -60,7 +60,7 @@ public:

class cfg_t {
public:
DECLARE_RZALLOC_CXX_OPERATORS(cfg_t)
DECLARE_RALLOC_CXX_OPERATORS(cfg_t)

cfg_t(backend_visitor *v);
cfg_t(void *mem_ctx, exec_list *instructions);

Carregando…
Cancelar
Salvar