diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2018-09-14 14:16:28 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-09-14 14:16:28 -0400 |
| commit | 3c505c22673701339d35eb2151f01c16eb3c78c3 (patch) | |
| tree | ff21543fcc846c693cbb6aba43a4e8ae9918f600 /source/slang/emit.cpp | |
| parent | e1c934972509f4bbd2c05affe565f91e7a1e6c16 (diff) | |
Improvements around IR representation and memory usage (#635)
* * Remove dispose from IRInst
* Use MemoryArena instead of MemoryPool
* Make all IRInst not require Dtor - by having ref counted array store ptrs that need freeing
* Increase block size - typically compilation is 2Mb of IR space(!)
* Fix issues around StringRepresentation::equal because null has special meaning.
* Don't bother to construct as String to compare StringRepresentation, just used UnownedStringSlice.
* Added fromLiteral support to UnownedStringSlice and use instead of strlen version.
* Use more conventional way to test StringRepresentation against a String.
* Fix gcc/clang template problem with cast.
Diffstat (limited to 'source/slang/emit.cpp')
| -rw-r--r-- | source/slang/emit.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/source/slang/emit.cpp b/source/slang/emit.cpp index 1d121d69b..2d774d8d8 100644 --- a/source/slang/emit.cpp +++ b/source/slang/emit.cpp @@ -1389,7 +1389,7 @@ struct EmitVisitor bool isTargetIntrinsicModifierApplicable( IRTargetIntrinsicDecoration* decoration) { - auto targetName = decoration->targetName; + auto targetName = String(decoration->targetName); // If no target name was specified, then the modifier implicitly // applies to all targets. @@ -2133,7 +2133,7 @@ struct EmitVisitor // then use that name instead. if(auto intrinsicDecoration = findTargetIntrinsicDecoration(context, inst)) { - return intrinsicDecoration->definition; + return String(intrinsicDecoration->definition); } // If we have a name hint on the instruction, then we will try to use that @@ -2945,7 +2945,7 @@ struct EmitVisitor args++; argCount--; - auto name = targetIntrinsic->definition; + auto name = String(targetIntrinsic->definition); if(isOrdinaryName(name)) @@ -3845,11 +3845,11 @@ struct EmitVisitor if(auto layoutDecoration = inst->findDecoration<IRLayoutDecoration>()) { auto layout = layoutDecoration->layout; - if(auto varLayout = layout.As<VarLayout>()) + if(auto varLayout = layout->dynamicCast<VarLayout>()) { emitIRSemantics(ctx, varLayout); } - else if (auto entryPointLayout = layout.As<EntryPointLayout>()) + else if (auto entryPointLayout = layout->dynamicCast<EntryPointLayout>()) { emitIRSemantics(ctx, entryPointLayout->resultLayout); } @@ -3864,7 +3864,7 @@ struct EmitVisitor if (!decoration) return nullptr; - return (VarLayout*) decoration->layout.Ptr(); + return (VarLayout*) decoration->layout; } void emitIRLayoutSemantics( @@ -4757,7 +4757,7 @@ struct EmitVisitor { if( auto layoutDecoration = func->findDecoration<IRLayoutDecoration>() ) { - return layoutDecoration->layout.As<EntryPointLayout>(); + return layoutDecoration->layout->dynamicCast<EntryPointLayout>(); } return nullptr; } @@ -4766,7 +4766,7 @@ struct EmitVisitor { if (auto layoutDecoration = func->findDecoration<IRLayoutDecoration>()) { - if (auto entryPointLayout = layoutDecoration->layout.As<EntryPointLayout>()) + if (auto entryPointLayout = layoutDecoration->layout->dynamicCast<EntryPointLayout>()) { return entryPointLayout; } |
