SlideShare a Scribd company logo
1 of 35
Download to read offline
Scope Stack Allocation,[object Object],Andreas Fredriksson, DICE,[object Object],<dep@dice.se>,[object Object]
Contents,[object Object],What are Scope Stacks?,[object Object],Background – embedded systems,[object Object],Linear memory allocation,[object Object],Scope Stacks,[object Object],Bits and pieces,[object Object]
What are Scope Stacks?,[object Object],A memory management tool,[object Object],Linear memory layout of arbitrary object hierarchies,[object Object],Support C++ object life cycle if desired,[object Object],Destructors called in correct dependency order,[object Object],Super-duper oiled-up fast!,[object Object],Makes debugging easier,[object Object]
Background,[object Object],Why is all this relevant?,[object Object],Console games are embedded systems,[object Object],Fixed (small) amount of memory,[object Object],Can't run out of memory or you can't ship – fragmentation is a serious issue,[object Object],Heap allocation is very expensive,[object Object],Lots of code for complex heap manager,[object Object],Bad cache locality,[object Object],Allocation & deallocation speed,[object Object]
Embedded systems,[object Object],With a global heap, memory fragments,[object Object],Assume 10-15% wasted with good allocator,[object Object],Can easily get 25% wasted with poor allocator,[object Object],Caused by allocating objects with mixed life time next to each other,[object Object],Temporary stuff allocated next to semi-permanent stuff (system arrays etc),[object Object]
Heap Fragmentation,[object Object],Each alloc has to traverse the free list of this structure!,[object Object],Assuming “best fit” allocator for less fragmentation,[object Object],Will likely cache miss for each probed location,[object Object],Large blocks disappear quickly,[object Object]
Memory Map,[object Object],Ideally we would like fully deterministic memory map,[object Object],Popular approach on console,[object Object],Partition all memory up front,[object Object],Load new level,[object Object],Rewind level part only,[object Object],Reconfigure systems,[object Object],Rewind both level, systems,[object Object],Fragmentation not possible,[object Object]
Linear Allocation,[object Object],Many games use linear allocators to achieve this kind of memory map,[object Object],Linear allocators basically sit on a pointer,[object Object],Allocations just increment the pointer,[object Object],To rewind, reset the pointer,[object Object],Very fast, but only suitable for POD data,[object Object],No finalizers/destructors called,[object Object],Used in Frostbite's renderer for command buffers,[object Object]
Linear Allocator Implementation,[object Object],Simplified C++ example,[object Object],Real implementation needs checks, alignment,[object Object],In retail build, allocation will be just a few cycles,[object Object], 1 class LinearAllocator {,[object Object], 2 // ...,[object Object], 3     u8 *allocate(size_t size) {,[object Object], 4 return m_ptr += size;,[object Object], 5     },[object Object], 6 void rewind(u8 *ptr) {,[object Object], 7         m_ptr = ptr;,[object Object], 8     },[object Object], 9 // ...,[object Object],10     u8 *m_ptr;,[object Object],11 };,[object Object]
Using Linear Allocation,[object Object],We're implementing FrogSystem,[object Object],A new system tied to the level,[object Object],Randomly place frogs across the level as the player is moving around,[object Object],Clearly the Next Big Thing,[object Object],Design for linear allocation,[object Object],Grab all memory up front,[object Object],Mr FISK (c) FLT,[object Object],Used with permission,[object Object]
FrogSystem - Linear Allocation,[object Object],Simplified C++ example,[object Object], 1 struct FrogInfo { ... };,[object Object], 2,[object Object], 3 struct FrogSystem {,[object Object], 4 // ...,[object Object], 5 int maxFrogs;,[object Object], 6     FrogInfo *frogPool;,[object Object], 7 };,[object Object], 8,[object Object], 9 FrogSystem* FrogSystem_init(LinearAllocator& alloc) {,[object Object],10     FrogSystem *self = alloc.allocate(sizeof(FrogSystem));,[object Object],11     self->maxFrogs = ...;,[object Object],12     self->frogPool = alloc.allocate(sizeof(FrogInfo) * self->maxFrogs);,[object Object],13 return self;,[object Object],14 },[object Object],15,[object Object],16 void FrogSystem_update(FrogSystem *system) {,[object Object],17 // ...,[object Object],18 },[object Object]
Resulting Memory Layout,[object Object],FrogSystem,[object Object],Frog Pool,[object Object],Allocation,[object Object],Point,[object Object],POD Data,[object Object]
Linear allocation limitations,[object Object],Works well until we need resource cleanup,[object Object],File handles, sockets, ...,[object Object],Pool handles, other API resources,[object Object],This is the “systems programming” aspect,[object Object],Assume frog system needs a critical section,[object Object],Kernel object,[object Object],Must be released when no longer used,[object Object]
FrogSystem – Adding a lock,[object Object], 1 class FrogSystem {,[object Object], 2     CriticalSection *m_lock;,[object Object], 3,[object Object], 4     FrogSystem(LinearAllocator& a),[object Object], 5 // get memory,[object Object], 6     ,   m_lock((CriticalSection*) a.allocate(sizeof(CriticalSection))),[object Object], 7 // ...,[object Object], 8     {,[object Object], 9 new (m_lock) CriticalSection; // construct object,[object Object],10     },[object Object],11,[object Object],12     ~FrogSystem() {,[object Object],13         m_lock->~CriticalSection(); // destroy object,[object Object],14     },[object Object],15 };,[object Object],16,[object Object],17 FrogSystem* FrogSystem_init(LinearAllocator& a) {,[object Object],18 returnnew (a.allocate(sizeof(FrogSystem))) FrogSystem(a);,[object Object],19 },[object Object],20,[object Object],21 void FrogSystem_cleanup(FrogSystem *system) {,[object Object],22     system->~FrogSystem();,[object Object],23 },[object Object]
Resulting Memory Layout,[object Object],FrogSystem,[object Object],Frog Pool,[object Object],CritialSect,[object Object],Allocation,[object Object],Point,[object Object],POD Data,[object Object],Object with cleanup,[object Object]
Linear allocation limitations,[object Object],Code quickly drowns in low-level details,[object Object],Lots of boilerplate,[object Object],We must add a cleanup function,[object Object],Manually remember what resources to free,[object Object],Error prone,[object Object],In C++, we would rather rely on destructors,[object Object]
Scope Stacks,[object Object],Introducing Scope Stacks,[object Object],Sits on top of linear allocator,[object Object],Rewinds part of underlying allocator when destroyed,[object Object],Designed to make larger-scale system design with linear allocation possible,[object Object],Maintain a list of finalizers to run when rewinding,[object Object],Only worry about allocation, not cleanup,[object Object]
Scope Stacks, contd.,[object Object],Type itself is a lightweight construct,[object Object], 1 struct Finalizer {,[object Object], 2 void (*fn)(void *ptr);,[object Object], 3     Finalizer *chain;,[object Object], 4 };,[object Object], 5,[object Object], 6 class ScopeStack {,[object Object], 7     LinearAllocator& m_alloc;,[object Object], 8 void *m_rewindPoint;,[object Object], 9     Finalizer *m_finalizerChain;,[object Object],10,[object Object],11 explicit ScopeStack(LinearAllocator& a);,[object Object],12     ~ScopeStack(); // unwind,[object Object],13,[object Object],14 template <typename T> T* newObject();,[object Object],15 template <typename T> T* newPOD();,[object Object],16 };,[object Object],17,[object Object]
Scope Stacks, contd.,[object Object],Can create a stack of scopes on top of a single linear allocator,[object Object],Only allocate from topmost scope,[object Object],Can rewind scopes as desired,[object Object],For example init/systems/level,[object Object],Finer-grained control over nested lifetimes,[object Object],Can also follow call stack,[object Object],Very elegant per-thread scratch pad,[object Object]
Scope Stack Diagram,[object Object],Linear Allocator,[object Object],Scope,[object Object],Scope,[object Object],Active Scope,[object Object]
Scope Stack API,[object Object],Simple C++ interface,[object Object],scope.newObject<T>(...) - allocate object with cleanup (stores finalizer),[object Object],scope.newPod<T>(...) - allocate object without cleanup,[object Object],scope.alloc(...) - raw memory allocation,[object Object],Can also implement as C interface,[object Object],Similar ideas in APR (Apache Portable Runtime),[object Object]
Scope Stack Implementation,[object Object],newObject<T>(),[object Object], 1 template <typename T>,[object Object], 2 void destructorCall(void *ptr) {,[object Object], 3 static_cast<T*>(ptr)->~T();,[object Object], 4 },[object Object], 5,[object Object], 6 template <typename T>,[object Object], 7 T* ScopeStack::newObject() {,[object Object], 8 // Allocate memory for finalizer + object.,[object Object], 9     Finalizer* f = allocWithFinalizer(sizeof(T));,[object Object],10,[object Object],11 // Placement construct object in space after finalizer.,[object Object],12     T* result = new (objectFromFinalizer(f)) T;,[object Object],13,[object Object],14 // Link this finalizer onto the chain.,[object Object],15     f->fn = &destructorCall<T>;,[object Object],16     f->chain = m_finalizerChain;,[object Object],17     m_finalizerChain = f;,[object Object],18 return result;,[object Object],19 },[object Object]
FrogSystem – Scope Stacks,[object Object],Critical Section example with Scope Stack,[object Object], 1 class FrogSystem {,[object Object], 2 // ...,[object Object], 3     CriticalSection *m_lock;,[object Object], 4,[object Object], 5     FrogSystem(ScopeStack& scope),[object Object], 6     :   m_lock(scope.newObject<CriticalSection>()),[object Object], 7 // ...,[object Object], 8     {},[object Object], 9,[object Object],10 // no destructor needed!,[object Object],11 };,[object Object],12,[object Object],13 FrogSystem* FrogSystem_init(ScopeStack& scope) {,[object Object],14 return scope.newPod<FrogSystem>();,[object Object],15 },[object Object]
Memory Layout (with context),[object Object],FrogSystem,[object Object],Frog Pool,[object Object],CritialSect,[object Object],(other stuff),[object Object],...,[object Object],Allocation,[object Object],Point,[object Object],POD Data,[object Object],Object with cleanup,[object Object],Finalizer record,[object Object],Scope,[object Object]
Scope Cleanup,[object Object],With finalizer chain in place we can unwind without manual code,[object Object],Iterate linked list,[object Object],Call finalizer for objects that require cleanup,[object Object],POD data still zero overhead,[object Object],Finalizer for C++ objects => destructor call,[object Object]
Per-thread allocation,[object Object],Scratch pad = Thread-local linear allocator,[object Object],Construct nested scopes on this allocator,[object Object],Utility functions can lay out arbitrary objects on scratch pad scope,[object Object], 1 class File; // next slide,[object Object], 2,[object Object], 3 constchar *formatString(ScopeStack& scope, constchar *fmt, ...);,[object Object], 4,[object Object], 5 void myFunction(constchar *fn) {,[object Object], 6     ScopeStack scratch(tls_allocator);,[object Object], 7 constchar *filename = formatString(scratch, "foo/bar/%s", fn);,[object Object], 8     File *file = scratch.newObject<File>(scratch, filename);,[object Object], 9,[object Object],10     file->read(...);,[object Object],11,[object Object],12 // No cleanup required!,[object Object],13 },[object Object]
Per-thread allocation, contd.,[object Object],File object allocates buffer from designed scope,[object Object],Doesn't care about lifetime – its buffer and itself will live for exactly the same time,[object Object],Can live on scratch pad without knowing it,[object Object], 1 class File {,[object Object], 2 private:,[object Object], 3     u8 *m_buffer;,[object Object], 4 int m_handle;,[object Object], 5 public:,[object Object], 6     File(ScopeStack& scope, constchar *filename),[object Object], 7     :   m_buffer(scope.alloc(8192)),[object Object], 8     ,   m_handle(open(filename, O_READ)),[object Object], 9     {},[object Object],10,[object Object],11     ~File() {,[object Object],12         close(m_handle);,[object Object],13     },[object Object],14 };,[object Object]
Memory Layout: Scratch Pad,[object Object],File Buffer,[object Object],Filename,[object Object],File,[object Object],Allocation,[object Object],Point,[object Object],Old,[object Object],Allocation,[object Object],Point,[object Object],POD Data,[object Object],Object with cleanup,[object Object],Finalizer record,[object Object],Rewind Point,[object Object],Scope,[object Object],Parent Scope,[object Object]
PIMPL,[object Object],C++ addicts can enjoy free PIMPL idiom,[object Object],Because allocations are essentially “free”; PIMPL idiom becomes more attractive,[object Object],Can slim down headers and hide all data members without concern for performance,[object Object]
Limitations,[object Object],Must set upper bound all pool sizes,[object Object],Can never grow an allocation,[object Object],This design style is classical in games industry,[object Object],But pool sizes can vary between levels!,[object Object],Reconfigure after rewind,[object Object],By default API not thread safe,[object Object],Makes sense as this is more like layout than allocation,[object Object],Pools/other structures can still be made thread safe once memory is allocated,[object Object]
Limitations, contd.,[object Object],Doesn't map 100% to C++ object modeling,[object Object],But finalizers enable RAII-like cleanup,[object Object],Many traditional C++ tricks become obsolete,[object Object],Pointer swapping,[object Object],Reference counting,[object Object],Must always think about lifetime and ownership when allocating,[object Object],Lifetime determined on global level,[object Object],Can't hold on to pointers – unwind = apocalypse,[object Object],Manage on higher level instead,[object Object]
Conclusion,[object Object],Scope stacks are a system programming tool,[object Object],Suitable for embedded systems with few variable parameters – games,[object Object],Requires planning and commitment,[object Object],Pays dividends in speed and simplicity,[object Object],Same pointers every time – debugging easier,[object Object],Out of memory analysis usually very simple,[object Object],Either the level runs, or doesn't run,[object Object],Can never fail half through,[object Object]
Links,[object Object],Toy implementation of scope stacks,[object Object],For playing with, not industrial strength,[object Object],http://pastebin.com/h7nU8JE2,[object Object],“Start Pre-allocating And Stop Worrying” - Noel Llopis,[object Object],http://gamesfromwithin.com/start-pre-allocating-and-stop-worrying,[object Object],Apache Portable Runtime,[object Object],http://apr.apache.org/,[object Object]
Questions,[object Object]
Bonus: what about..,[object Object],..building an array, final size unknown?,[object Object],Standard approach in C++: STL vector push,[object Object],Instead build linked list/dequeue on scratch pad,[object Object],Allocate array in target scope stack once size is known,[object Object],..dynamic lifetime of individual objects?,[object Object],Allocate object pool from scope stack,[object Object],Requires bounding the worst case – a good idea for games anyway,[object Object]

More Related Content

What's hot

Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunElectronic Arts / DICE
 
Rendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderRendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderEidos-Montréal
 
Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666Tiago Sousa
 
Masked Software Occlusion Culling
Masked Software Occlusion CullingMasked Software Occlusion Culling
Masked Software Occlusion CullingIntel® Software
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility bufferWolfgang Engel
 
Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1Ki Hyunwoo
 
쉐도우맵을 압축하여 대규모씬에 라이팅을 적용해보자
쉐도우맵을 압축하여 대규모씬에 라이팅을 적용해보자쉐도우맵을 압축하여 대규모씬에 라이팅을 적용해보자
쉐도우맵을 압축하여 대규모씬에 라이팅을 적용해보자Seongdae Kim
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Tiago Sousa
 
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...Takahiro Harada
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space MarinePope Kim
 
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Johan Andersson
 
Deferred shading
Deferred shadingDeferred shading
Deferred shadingFrank Chao
 
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonLow-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonAMD Developer Central
 
Pitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONYPitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONYAnaya Medias Swiss
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteElectronic Arts / DICE
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Tiago Sousa
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologyTiago Sousa
 
Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3stevemcauley
 
Volumetric Lighting for Many Lights in Lords of the Fallen
Volumetric Lighting for Many Lights in Lords of the FallenVolumetric Lighting for Many Lights in Lords of the Fallen
Volumetric Lighting for Many Lights in Lords of the FallenBenjamin Glatzel
 

What's hot (20)

Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
 
Rendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderRendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb Raider
 
Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666
 
Masked Software Occlusion Culling
Masked Software Occlusion CullingMasked Software Occlusion Culling
Masked Software Occlusion Culling
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility buffer
 
Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1
 
쉐도우맵을 압축하여 대규모씬에 라이팅을 적용해보자
쉐도우맵을 압축하여 대규모씬에 라이팅을 적용해보자쉐도우맵을 압축하여 대규모씬에 라이팅을 적용해보자
쉐도우맵을 압축하여 대규모씬에 라이팅을 적용해보자
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)
 
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space Marine
 
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
 
Deferred shading
Deferred shadingDeferred shading
Deferred shading
 
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonLow-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
 
Pitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONYPitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONY
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
 
Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3
 
DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
 
Volumetric Lighting for Many Lights in Lords of the Fallen
Volumetric Lighting for Many Lights in Lords of the FallenVolumetric Lighting for Many Lights in Lords of the Fallen
Volumetric Lighting for Many Lights in Lords of the Fallen
 

Viewers also liked

How data rules the world: Telemetry in Battlefield Heroes
How data rules the world: Telemetry in Battlefield HeroesHow data rules the world: Telemetry in Battlefield Heroes
How data rules the world: Telemetry in Battlefield HeroesElectronic Arts / DICE
 
5 Major Challenges in Interactive Rendering
5 Major Challenges in Interactive Rendering5 Major Challenges in Interactive Rendering
5 Major Challenges in Interactive RenderingElectronic Arts / DICE
 
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3Electronic Arts / DICE
 
Battlelog - Building scalable web sites with tight game integration
Battlelog - Building scalable web sites with tight game integrationBattlelog - Building scalable web sites with tight game integration
Battlelog - Building scalable web sites with tight game integrationElectronic Arts / DICE
 
Destruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsDestruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsElectronic Arts / DICE
 
Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09)
 	 Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09) 	 Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09)
Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09)Johan Andersson
 
Building the Battlefield AI Experience
Building the Battlefield AI ExperienceBuilding the Battlefield AI Experience
Building the Battlefield AI ExperienceElectronic Arts / DICE
 
Stylized Rendering in Battlefield Heroes
Stylized Rendering in Battlefield HeroesStylized Rendering in Battlefield Heroes
Stylized Rendering in Battlefield HeroesElectronic Arts / DICE
 
Stable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal FilteringStable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal FilteringElectronic Arts / DICE
 
Level Design Challenges & Solutions - Mirror's Edge
Level Design Challenges & Solutions - Mirror's EdgeLevel Design Challenges & Solutions - Mirror's Edge
Level Design Challenges & Solutions - Mirror's EdgeElectronic Arts / DICE
 

Viewers also liked (14)

How data rules the world: Telemetry in Battlefield Heroes
How data rules the world: Telemetry in Battlefield HeroesHow data rules the world: Telemetry in Battlefield Heroes
How data rules the world: Telemetry in Battlefield Heroes
 
5 Major Challenges in Interactive Rendering
5 Major Challenges in Interactive Rendering5 Major Challenges in Interactive Rendering
5 Major Challenges in Interactive Rendering
 
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
 
Battlelog - Building scalable web sites with tight game integration
Battlelog - Building scalable web sites with tight game integrationBattlelog - Building scalable web sites with tight game integration
Battlelog - Building scalable web sites with tight game integration
 
Destruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsDestruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance Fields
 
Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09)
 	 Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09) 	 Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09)
Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09)
 
Building the Battlefield AI Experience
Building the Battlefield AI ExperienceBuilding the Battlefield AI Experience
Building the Battlefield AI Experience
 
Bending the Graphics Pipeline
Bending the Graphics PipelineBending the Graphics Pipeline
Bending the Graphics Pipeline
 
A Step Towards Data Orientation
A Step Towards Data OrientationA Step Towards Data Orientation
A Step Towards Data Orientation
 
Stylized Rendering in Battlefield Heroes
Stylized Rendering in Battlefield HeroesStylized Rendering in Battlefield Heroes
Stylized Rendering in Battlefield Heroes
 
A Real-time Radiosity Architecture
A Real-time Radiosity ArchitectureA Real-time Radiosity Architecture
A Real-time Radiosity Architecture
 
Stable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal FilteringStable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal Filtering
 
Introduction to Data Oriented Design
Introduction to Data Oriented DesignIntroduction to Data Oriented Design
Introduction to Data Oriented Design
 
Level Design Challenges & Solutions - Mirror's Edge
Level Design Challenges & Solutions - Mirror's EdgeLevel Design Challenges & Solutions - Mirror's Edge
Level Design Challenges & Solutions - Mirror's Edge
 

Similar to Scope Stack Allocation

Improving app performance using .Net Core 3.0
Improving app performance using .Net Core 3.0Improving app performance using .Net Core 3.0
Improving app performance using .Net Core 3.0Richard Banks
 
Memory Optimization
Memory OptimizationMemory Optimization
Memory OptimizationWei Lin
 
Memory Optimization
Memory OptimizationMemory Optimization
Memory Optimizationguest3eed30
 
NET Systems Programming Learned the Hard Way.pptx
NET Systems Programming Learned the Hard Way.pptxNET Systems Programming Learned the Hard Way.pptx
NET Systems Programming Learned the Hard Way.pptxpetabridge
 
Handling Exceptions In C &amp; C++ [Part B] Ver 2
Handling Exceptions In C &amp; C++ [Part B] Ver 2Handling Exceptions In C &amp; C++ [Part B] Ver 2
Handling Exceptions In C &amp; C++ [Part B] Ver 2ppd1961
 
DotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NETDotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NETMaarten Balliauw
 
.NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management...
.NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management....NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management...
.NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management...NETFest
 
(Slightly) Smarter Smart Pointers
(Slightly) Smarter Smart Pointers(Slightly) Smarter Smart Pointers
(Slightly) Smarter Smart PointersCarlo Pescio
 
CodeStock - Exploring .NET memory management - a trip down memory lane
CodeStock - Exploring .NET memory management - a trip down memory laneCodeStock - Exploring .NET memory management - a trip down memory lane
CodeStock - Exploring .NET memory management - a trip down memory laneMaarten Balliauw
 
Chapter Seven(2)
Chapter Seven(2)Chapter Seven(2)
Chapter Seven(2)bolovv
 
10 things i wish i'd known before using spark in production
10 things i wish i'd known before using spark in production10 things i wish i'd known before using spark in production
10 things i wish i'd known before using spark in productionParis Data Engineers !
 
Apache Flink internals
Apache Flink internalsApache Flink internals
Apache Flink internalsKostas Tzoumas
 
Exploitation of counter overflows in the Linux kernel
Exploitation of counter overflows in the Linux kernelExploitation of counter overflows in the Linux kernel
Exploitation of counter overflows in the Linux kernelVitaly Nikolenko
 
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the bfinalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the bChereCheek752
 

Similar to Scope Stack Allocation (20)

Improving app performance using .Net Core 3.0
Improving app performance using .Net Core 3.0Improving app performance using .Net Core 3.0
Improving app performance using .Net Core 3.0
 
Memory Optimization
Memory OptimizationMemory Optimization
Memory Optimization
 
Memory Optimization
Memory OptimizationMemory Optimization
Memory Optimization
 
Introduction to c part -3
Introduction to c   part -3Introduction to c   part -3
Introduction to c part -3
 
NET Systems Programming Learned the Hard Way.pptx
NET Systems Programming Learned the Hard Way.pptxNET Systems Programming Learned the Hard Way.pptx
NET Systems Programming Learned the Hard Way.pptx
 
Handling Exceptions In C &amp; C++ [Part B] Ver 2
Handling Exceptions In C &amp; C++ [Part B] Ver 2Handling Exceptions In C &amp; C++ [Part B] Ver 2
Handling Exceptions In C &amp; C++ [Part B] Ver 2
 
DotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NETDotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NET
 
.NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management...
.NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management....NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management...
.NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management...
 
(Slightly) Smarter Smart Pointers
(Slightly) Smarter Smart Pointers(Slightly) Smarter Smart Pointers
(Slightly) Smarter Smart Pointers
 
Flink internals web
Flink internals web Flink internals web
Flink internals web
 
Java
JavaJava
Java
 
CodeStock - Exploring .NET memory management - a trip down memory lane
CodeStock - Exploring .NET memory management - a trip down memory laneCodeStock - Exploring .NET memory management - a trip down memory lane
CodeStock - Exploring .NET memory management - a trip down memory lane
 
Chapter Seven(2)
Chapter Seven(2)Chapter Seven(2)
Chapter Seven(2)
 
10 things i wish i'd known before using spark in production
10 things i wish i'd known before using spark in production10 things i wish i'd known before using spark in production
10 things i wish i'd known before using spark in production
 
Apache Flink internals
Apache Flink internalsApache Flink internals
Apache Flink internals
 
Exploitation of counter overflows in the Linux kernel
Exploitation of counter overflows in the Linux kernelExploitation of counter overflows in the Linux kernel
Exploitation of counter overflows in the Linux kernel
 
Unix executable buffer overflow
Unix executable buffer overflowUnix executable buffer overflow
Unix executable buffer overflow
 
jvm goes to big data
jvm goes to big datajvm goes to big data
jvm goes to big data
 
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the bfinalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
 
Embedded C - Lecture 4
Embedded C - Lecture 4Embedded C - Lecture 4
Embedded C - Lecture 4
 

More from Electronic Arts / DICE

GDC2019 - SEED - Towards Deep Generative Models in Game Development
GDC2019 - SEED - Towards Deep Generative Models in Game DevelopmentGDC2019 - SEED - Towards Deep Generative Models in Game Development
GDC2019 - SEED - Towards Deep Generative Models in Game DevelopmentElectronic Arts / DICE
 
SIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's EdgeSIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's EdgeElectronic Arts / DICE
 
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray TracingSyysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray TracingElectronic Arts / DICE
 
Khronos Munich 2018 - Halcyon and Vulkan
Khronos Munich 2018 - Halcyon and VulkanKhronos Munich 2018 - Halcyon and Vulkan
Khronos Munich 2018 - Halcyon and VulkanElectronic Arts / DICE
 
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time RaytracingCEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time RaytracingElectronic Arts / DICE
 
CEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
CEDEC 2018 - Functional Symbiosis of Art Direction and ProceduralismCEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
CEDEC 2018 - Functional Symbiosis of Art Direction and ProceduralismElectronic Arts / DICE
 
SIGGRAPH 2018 - PICA PICA and NVIDIA Turing
SIGGRAPH 2018 - PICA PICA and NVIDIA TuringSIGGRAPH 2018 - PICA PICA and NVIDIA Turing
SIGGRAPH 2018 - PICA PICA and NVIDIA TuringElectronic Arts / DICE
 
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time RaytracingSIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time RaytracingElectronic Arts / DICE
 
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open ProblemsHPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open ProblemsElectronic Arts / DICE
 
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...Electronic Arts / DICE
 
DD18 - SEED - Raytracing in Hybrid Real-Time Rendering
DD18 - SEED - Raytracing in Hybrid Real-Time RenderingDD18 - SEED - Raytracing in Hybrid Real-Time Rendering
DD18 - SEED - Raytracing in Hybrid Real-Time RenderingElectronic Arts / DICE
 
Creativity of Rules and Patterns: Designing Procedural Systems
Creativity of Rules and Patterns: Designing Procedural SystemsCreativity of Rules and Patterns: Designing Procedural Systems
Creativity of Rules and Patterns: Designing Procedural SystemsElectronic Arts / DICE
 
Shiny Pixels and Beyond: Real-Time Raytracing at SEED
Shiny Pixels and Beyond: Real-Time Raytracing at SEEDShiny Pixels and Beyond: Real-Time Raytracing at SEED
Shiny Pixels and Beyond: Real-Time Raytracing at SEEDElectronic Arts / DICE
 
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...Electronic Arts / DICE
 
Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite
Physically Based Sky, Atmosphere and Cloud Rendering in FrostbitePhysically Based Sky, Atmosphere and Cloud Rendering in Frostbite
Physically Based Sky, Atmosphere and Cloud Rendering in FrostbiteElectronic Arts / DICE
 
High Dynamic Range color grading and display in Frostbite
High Dynamic Range color grading and display in FrostbiteHigh Dynamic Range color grading and display in Frostbite
High Dynamic Range color grading and display in FrostbiteElectronic Arts / DICE
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect AndromedaElectronic Arts / DICE
 
Photogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars BattlefrontPhotogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars BattlefrontElectronic Arts / DICE
 

More from Electronic Arts / DICE (20)

GDC2019 - SEED - Towards Deep Generative Models in Game Development
GDC2019 - SEED - Towards Deep Generative Models in Game DevelopmentGDC2019 - SEED - Towards Deep Generative Models in Game Development
GDC2019 - SEED - Towards Deep Generative Models in Game Development
 
SIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's EdgeSIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
 
SEED - Halcyon Architecture
SEED - Halcyon ArchitectureSEED - Halcyon Architecture
SEED - Halcyon Architecture
 
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray TracingSyysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
 
Khronos Munich 2018 - Halcyon and Vulkan
Khronos Munich 2018 - Halcyon and VulkanKhronos Munich 2018 - Halcyon and Vulkan
Khronos Munich 2018 - Halcyon and Vulkan
 
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time RaytracingCEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
 
CEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
CEDEC 2018 - Functional Symbiosis of Art Direction and ProceduralismCEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
CEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
 
SIGGRAPH 2018 - PICA PICA and NVIDIA Turing
SIGGRAPH 2018 - PICA PICA and NVIDIA TuringSIGGRAPH 2018 - PICA PICA and NVIDIA Turing
SIGGRAPH 2018 - PICA PICA and NVIDIA Turing
 
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time RaytracingSIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
 
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open ProblemsHPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
 
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
 
DD18 - SEED - Raytracing in Hybrid Real-Time Rendering
DD18 - SEED - Raytracing in Hybrid Real-Time RenderingDD18 - SEED - Raytracing in Hybrid Real-Time Rendering
DD18 - SEED - Raytracing in Hybrid Real-Time Rendering
 
Creativity of Rules and Patterns: Designing Procedural Systems
Creativity of Rules and Patterns: Designing Procedural SystemsCreativity of Rules and Patterns: Designing Procedural Systems
Creativity of Rules and Patterns: Designing Procedural Systems
 
Shiny Pixels and Beyond: Real-Time Raytracing at SEED
Shiny Pixels and Beyond: Real-Time Raytracing at SEEDShiny Pixels and Beyond: Real-Time Raytracing at SEED
Shiny Pixels and Beyond: Real-Time Raytracing at SEED
 
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
 
Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite
Physically Based Sky, Atmosphere and Cloud Rendering in FrostbitePhysically Based Sky, Atmosphere and Cloud Rendering in Frostbite
Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite
 
High Dynamic Range color grading and display in Frostbite
High Dynamic Range color grading and display in FrostbiteHigh Dynamic Range color grading and display in Frostbite
High Dynamic Range color grading and display in Frostbite
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
 
Lighting the City of Glass
Lighting the City of GlassLighting the City of Glass
Lighting the City of Glass
 
Photogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars BattlefrontPhotogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars Battlefront
 

Recently uploaded

Jackpot Party Casino free coins And Spin
Jackpot Party Casino free coins And SpinJackpot Party Casino free coins And Spin
Jackpot Party Casino free coins And Spingameseotwo
 
QUIZ_Indian history and politics....pptx
QUIZ_Indian history and politics....pptxQUIZ_Indian history and politics....pptx
QUIZ_Indian history and politics....pptxbasusubhodeep30
 
Best Verified 2 Best Black Magic Specialist Near Me Spiritual Healer Powerful...
Best Verified 2 Best Black Magic Specialist Near Me Spiritual Healer Powerful...Best Verified 2 Best Black Magic Specialist Near Me Spiritual Healer Powerful...
Best Verified 2 Best Black Magic Specialist Near Me Spiritual Healer Powerful...Amil baba
 
Bollywood Quiz-12th March 2024, Quiz Club NITW
Bollywood Quiz-12th March 2024, Quiz Club NITWBollywood Quiz-12th March 2024, Quiz Club NITW
Bollywood Quiz-12th March 2024, Quiz Club NITWQuiz Club NITW
 
Quickly collect Bingo blitz free credits
Quickly collect Bingo blitz free creditsQuickly collect Bingo blitz free credits
Quickly collect Bingo blitz free creditsgameseotwo
 
Quizzar final draft for astronomy quiz(1).pptx
Quizzar final draft for astronomy quiz(1).pptxQuizzar final draft for astronomy quiz(1).pptx
Quizzar final draft for astronomy quiz(1).pptxhappycocoman
 
Bingo Bash Free Chips-Daily Free Links 2024
Bingo Bash Free Chips-Daily Free Links 2024Bingo Bash Free Chips-Daily Free Links 2024
Bingo Bash Free Chips-Daily Free Links 2024gameseotwo
 
Dogs vs Cats Comics by Salty Vixen Stories & More
Dogs vs Cats Comics by Salty Vixen Stories & MoreDogs vs Cats Comics by Salty Vixen Stories & More
Dogs vs Cats Comics by Salty Vixen Stories & MoreSalty Vixen Stories & More
 
Welcome Film Festival. New festival concept .Copenhagen Denmark
Welcome Film Festival. New festival concept .Copenhagen DenmarkWelcome Film Festival. New festival concept .Copenhagen Denmark
Welcome Film Festival. New festival concept .Copenhagen DenmarkEmergency Art
 
ARTBOOK-SHADOW-OF-THE-COLOSSUS-PT-BR.pdf
ARTBOOK-SHADOW-OF-THE-COLOSSUS-PT-BR.pdfARTBOOK-SHADOW-OF-THE-COLOSSUS-PT-BR.pdf
ARTBOOK-SHADOW-OF-THE-COLOSSUS-PT-BR.pdfErianderson Oliveira
 
CATS: A Very Short Grafik Novel in Two Parts
CATS: A Very Short Grafik Novel in Two PartsCATS: A Very Short Grafik Novel in Two Parts
CATS: A Very Short Grafik Novel in Two Partsapfelshorle
 
Murder Hole Documentary - October 31, 2017
Murder Hole Documentary - October 31, 2017Murder Hole Documentary - October 31, 2017
Murder Hole Documentary - October 31, 2017Kim Epstein
 
MFreshersQuizTournament Prelims 2022.pdf
MFreshersQuizTournament Prelims 2022.pdfMFreshersQuizTournament Prelims 2022.pdf
MFreshersQuizTournament Prelims 2022.pdfhappycocoman
 
Tollywood Quiz-14th March 2024, Quiz Club NITW
Tollywood Quiz-14th March 2024, Quiz Club NITWTollywood Quiz-14th March 2024, Quiz Club NITW
Tollywood Quiz-14th March 2024, Quiz Club NITWQuiz Club NITW
 
Script-Coronation of Tiguib Prince and Princess 2023.docx
Script-Coronation of Tiguib Prince and Princess 2023.docxScript-Coronation of Tiguib Prince and Princess 2023.docx
Script-Coronation of Tiguib Prince and Princess 2023.docxRenesCindyGelbero
 
MADE IN CANADA MAG ISSUE 15 | MARCH 2024
MADE IN CANADA MAG ISSUE 15 | MARCH 2024MADE IN CANADA MAG ISSUE 15 | MARCH 2024
MADE IN CANADA MAG ISSUE 15 | MARCH 2024Made In Canada Hip Hop
 

Recently uploaded (16)

Jackpot Party Casino free coins And Spin
Jackpot Party Casino free coins And SpinJackpot Party Casino free coins And Spin
Jackpot Party Casino free coins And Spin
 
QUIZ_Indian history and politics....pptx
QUIZ_Indian history and politics....pptxQUIZ_Indian history and politics....pptx
QUIZ_Indian history and politics....pptx
 
Best Verified 2 Best Black Magic Specialist Near Me Spiritual Healer Powerful...
Best Verified 2 Best Black Magic Specialist Near Me Spiritual Healer Powerful...Best Verified 2 Best Black Magic Specialist Near Me Spiritual Healer Powerful...
Best Verified 2 Best Black Magic Specialist Near Me Spiritual Healer Powerful...
 
Bollywood Quiz-12th March 2024, Quiz Club NITW
Bollywood Quiz-12th March 2024, Quiz Club NITWBollywood Quiz-12th March 2024, Quiz Club NITW
Bollywood Quiz-12th March 2024, Quiz Club NITW
 
Quickly collect Bingo blitz free credits
Quickly collect Bingo blitz free creditsQuickly collect Bingo blitz free credits
Quickly collect Bingo blitz free credits
 
Quizzar final draft for astronomy quiz(1).pptx
Quizzar final draft for astronomy quiz(1).pptxQuizzar final draft for astronomy quiz(1).pptx
Quizzar final draft for astronomy quiz(1).pptx
 
Bingo Bash Free Chips-Daily Free Links 2024
Bingo Bash Free Chips-Daily Free Links 2024Bingo Bash Free Chips-Daily Free Links 2024
Bingo Bash Free Chips-Daily Free Links 2024
 
Dogs vs Cats Comics by Salty Vixen Stories & More
Dogs vs Cats Comics by Salty Vixen Stories & MoreDogs vs Cats Comics by Salty Vixen Stories & More
Dogs vs Cats Comics by Salty Vixen Stories & More
 
Welcome Film Festival. New festival concept .Copenhagen Denmark
Welcome Film Festival. New festival concept .Copenhagen DenmarkWelcome Film Festival. New festival concept .Copenhagen Denmark
Welcome Film Festival. New festival concept .Copenhagen Denmark
 
ARTBOOK-SHADOW-OF-THE-COLOSSUS-PT-BR.pdf
ARTBOOK-SHADOW-OF-THE-COLOSSUS-PT-BR.pdfARTBOOK-SHADOW-OF-THE-COLOSSUS-PT-BR.pdf
ARTBOOK-SHADOW-OF-THE-COLOSSUS-PT-BR.pdf
 
CATS: A Very Short Grafik Novel in Two Parts
CATS: A Very Short Grafik Novel in Two PartsCATS: A Very Short Grafik Novel in Two Parts
CATS: A Very Short Grafik Novel in Two Parts
 
Murder Hole Documentary - October 31, 2017
Murder Hole Documentary - October 31, 2017Murder Hole Documentary - October 31, 2017
Murder Hole Documentary - October 31, 2017
 
MFreshersQuizTournament Prelims 2022.pdf
MFreshersQuizTournament Prelims 2022.pdfMFreshersQuizTournament Prelims 2022.pdf
MFreshersQuizTournament Prelims 2022.pdf
 
Tollywood Quiz-14th March 2024, Quiz Club NITW
Tollywood Quiz-14th March 2024, Quiz Club NITWTollywood Quiz-14th March 2024, Quiz Club NITW
Tollywood Quiz-14th March 2024, Quiz Club NITW
 
Script-Coronation of Tiguib Prince and Princess 2023.docx
Script-Coronation of Tiguib Prince and Princess 2023.docxScript-Coronation of Tiguib Prince and Princess 2023.docx
Script-Coronation of Tiguib Prince and Princess 2023.docx
 
MADE IN CANADA MAG ISSUE 15 | MARCH 2024
MADE IN CANADA MAG ISSUE 15 | MARCH 2024MADE IN CANADA MAG ISSUE 15 | MARCH 2024
MADE IN CANADA MAG ISSUE 15 | MARCH 2024
 

Scope Stack Allocation

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.