summaryrefslogtreecommitdiff
path: root/tools/standalone_miri/hir_sim.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/standalone_miri/hir_sim.cpp')
-rw-r--r--tools/standalone_miri/hir_sim.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/tools/standalone_miri/hir_sim.cpp b/tools/standalone_miri/hir_sim.cpp
index 090e0f6b..0010e202 100644
--- a/tools/standalone_miri/hir_sim.cpp
+++ b/tools/standalone_miri/hir_sim.cpp
@@ -12,6 +12,7 @@
size_t HIR::TypeRef::get_size(size_t ofs) const
{
+ const size_t POINTER_SIZE = 8;
if( this->wrappers.size() <= ofs )
{
switch(this->inner_type)
@@ -33,7 +34,12 @@ size_t HIR::TypeRef::get_size(size_t ofs) const
return 8;
case RawType::U128: case RawType::I128:
return 16;
+
+ case RawType::Function: // This should probably be invalid?
+ case RawType::USize: case RawType::ISize:
+ return POINTER_SIZE;
}
+ throw "";
}
switch(this->wrappers[ofs].type)
@@ -48,21 +54,21 @@ size_t HIR::TypeRef::get_size(size_t ofs) const
if( this->inner_type == RawType::Composite )
throw "TODO";
else if( this->inner_type == RawType::Str )
- return 8*2;
+ return POINTER_SIZE*2;
else if( this->inner_type == RawType::TraitObject )
- return 8*2;
+ return POINTER_SIZE*2;
else
{
- return 8;
+ return POINTER_SIZE;
}
}
else if( this->wrappers[ofs+1].type == TypeWrapper::Ty::Slice )
{
- return 8*2;
+ return POINTER_SIZE*2;
}
else
{
- return 8;
+ return POINTER_SIZE;
}
case TypeWrapper::Ty::Slice:
throw "Invalid";