@@ -71,15 +71,10 @@ ShadingContext::execute_init (ShaderGroup &sgroup, ShaderGlobals &ssg, bool run)
7171
7272 // Allocate enough space on the heap
7373 size_t heap_size_needed = sgroup.llvm_groupdata_size ();
74- if (heap_size_needed > m_heap.size ()) {
75- if (shadingsys ().debug ())
76- infof (" ShadingContext %p growing heap to %d" ,
77- static_cast <void *>(this ), heap_size_needed);
78- m_heap.resize (heap_size_needed);
79- }
74+ reserve_heap (heap_size_needed);
8075 // Zero out the heap memory we will be using
8176 if (shadingsys ().m_clearmemory )
82- memset (& m_heap[ 0 ] , 0 , heap_size_needed);
77+ memset (m_heap. get () , 0 , heap_size_needed);
8378
8479 // Set up closure storage
8580 m_closure_pool.clear ();
@@ -100,7 +95,7 @@ ShadingContext::execute_init (ShaderGroup &sgroup, ShaderGlobals &ssg, bool run)
10095 ssg.context = this ;
10196 ssg.renderer = renderer ();
10297 ssg.Ci = NULL ;
103- run_func (&ssg, & m_heap[ 0 ] );
98+ run_func (&ssg, m_heap. get () );
10499 }
105100
106101 if (profile)
@@ -124,7 +119,7 @@ ShadingContext::execute_layer (ShaderGlobals &ssg, int layernumber)
124119 if (! run_func)
125120 return false ;
126121
127- run_func (&ssg, & m_heap[ 0 ] );
122+ run_func (&ssg, m_heap. get () );
128123
129124 if (profile)
130125 m_ticks += timer.ticks ();
@@ -257,9 +252,9 @@ ShadingContext::symbol_data (const Symbol &sym) const
257252 if (! sgroup.optimized ())
258253 return NULL ; // can't retrieve symbol if we didn't optimize it
259254
260- if (sym.dataoffset () >= 0 && (int )m_heap. size () > sym.dataoffset ()) {
255+ if (sym.dataoffset () >= 0 && (int )m_heapsize > sym.dataoffset ()) {
261256 // lives on the heap
262- return & m_heap[ sym.dataoffset ()] ;
257+ return m_heap. get () + sym.dataoffset ();
263258 }
264259
265260 // doesn't live on the heap
0 commit comments