about summary refs log tree commit diff homepage
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Core/Executor.cpp6
-rw-r--r--lib/Core/Memory.cpp116
-rw-r--r--lib/Expr/Expr.cpp9
3 files changed, 63 insertions, 68 deletions
diff --git a/lib/Core/Executor.cpp b/lib/Core/Executor.cpp
index 88ced236..005499eb 100644
--- a/lib/Core/Executor.cpp
+++ b/lib/Core/Executor.cpp
@@ -1854,9 +1854,9 @@ void Executor::executeInstruction(ExecutionState &state, KInstruction *ki) {
     // Conversion
   case Instruction::Trunc: {
     CastInst *ci = cast<CastInst>(i);
-    ref<Expr> result = ExtractExpr::createByteOff(eval(ki, 0, state).value,
-						  0,
-						  Expr::getWidthForLLVMType(ci->getType()));
+    ref<Expr> result = ExtractExpr::create(eval(ki, 0, state).value,
+                                           0,
+                                           Expr::getWidthForLLVMType(ci->getType()));
     bindLocal(ki, state, result);
     break;
   }
diff --git a/lib/Core/Memory.cpp b/lib/Core/Memory.cpp
index 05c226d3..d2c1dd0e 100644
--- a/lib/Core/Memory.cpp
+++ b/lib/Core/Memory.cpp
@@ -455,11 +455,11 @@ ref<Expr> ObjectState::read(unsigned offset, Expr::Width width) const {
 }
 
 ref<Expr> ObjectState::read1(unsigned offset) const {
-  return ExtractExpr::createByteOff(read8(offset), 0, Expr::Bool);
+  return ExtractExpr::create(read8(offset), 0, Expr::Bool);
 }
 
 ref<Expr> ObjectState::read1(ref<Expr> offset) const {
-  return ExtractExpr::createByteOff(read8(offset), 0, Expr::Bool);
+  return ExtractExpr::create(read8(offset), 0, Expr::Bool);
 }
 
 ref<Expr> ObjectState::read16(unsigned offset) const {
@@ -676,11 +676,11 @@ void ObjectState::write16(unsigned offset, uint16_t value) {
 
 void ObjectState::write16(unsigned offset, ref<Expr> value) {
   if (kMachineByteOrder == machine::MSB) {
-    write8(offset+0, ExtractExpr::createByteOff(value, 1));
-    write8(offset+1, ExtractExpr::createByteOff(value, 0));
+    write8(offset+0, ExtractExpr::create(value, 8, Expr::Int8));
+    write8(offset+1, ExtractExpr::create(value, 0, Expr::Int8));
   } else {
-    write8(offset+1, ExtractExpr::createByteOff(value, 1));
-    write8(offset+0, ExtractExpr::createByteOff(value, 0));
+    write8(offset+1, ExtractExpr::create(value, 8, Expr::Int8));
+    write8(offset+0, ExtractExpr::create(value, 0, Expr::Int8));
   }
 }
 
@@ -689,17 +689,17 @@ void ObjectState::write16(ref<Expr> offset, ref<Expr> value) {
   if (kMachineByteOrder == machine::MSB) {
     write8(AddExpr::create(offset,
                            ConstantExpr::create(0, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,1));
+           ExtractExpr::create(value, 8, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(0, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,0));
+           ExtractExpr::create(value, 0, Expr::Int8));
   } else {
     write8(AddExpr::create(offset,
                            ConstantExpr::create(1, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,1));
+           ExtractExpr::create(value, 8, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(0, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,0));
+           ExtractExpr::create(value, 0, Expr::Int8));
   }
 }
 
@@ -719,15 +719,15 @@ void ObjectState::write32(unsigned offset, uint32_t value) {
 
 void ObjectState::write32(unsigned offset, ref<Expr> value) {
   if (kMachineByteOrder == machine::MSB) {
-    write8(offset+0, ExtractExpr::createByteOff(value, 3));
-    write8(offset+1, ExtractExpr::createByteOff(value, 2));
-    write8(offset+2, ExtractExpr::createByteOff(value, 1));
-    write8(offset+3, ExtractExpr::createByteOff(value, 0));
+    write8(offset+0, ExtractExpr::create(value, 24, Expr::Int8));
+    write8(offset+1, ExtractExpr::create(value, 16, Expr::Int8));
+    write8(offset+2, ExtractExpr::create(value, 8, Expr::Int8));
+    write8(offset+3, ExtractExpr::create(value, 0, Expr::Int8));
   } else {
-    write8(offset+3, ExtractExpr::createByteOff(value, 3));
-    write8(offset+2, ExtractExpr::createByteOff(value, 2));
-    write8(offset+1, ExtractExpr::createByteOff(value, 1));
-    write8(offset+0, ExtractExpr::createByteOff(value, 0));
+    write8(offset+3, ExtractExpr::create(value, 24, Expr::Int8));
+    write8(offset+2, ExtractExpr::create(value, 16, Expr::Int8));
+    write8(offset+1, ExtractExpr::create(value, 8, Expr::Int8));
+    write8(offset+0, ExtractExpr::create(value, 0, Expr::Int8));
   }
 }
 
@@ -735,29 +735,29 @@ void ObjectState::write32(ref<Expr> offset, ref<Expr> value) {
   if (kMachineByteOrder == machine::MSB) {
     write8(AddExpr::create(offset,
                            ConstantExpr::create(0, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,3));
+           ExtractExpr::create(value, 24, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(1, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,2));
+           ExtractExpr::create(value, 16, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(2, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,1));
+           ExtractExpr::create(value, 8, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(3, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,0));
+           ExtractExpr::create(value, 0, Expr::Int8));
   } else {
     write8(AddExpr::create(offset,
                            ConstantExpr::create(3, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,3));
+           ExtractExpr::create(value, 24, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(2, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,2));
+           ExtractExpr::create(value, 16, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(1, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,1));
+           ExtractExpr::create(value, 8, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(0, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,0));
+           ExtractExpr::create(value, 0, Expr::Int8));
   }
 }
 
@@ -785,23 +785,23 @@ void ObjectState::write64(unsigned offset, uint64_t value) {
 
 void ObjectState::write64(unsigned offset, ref<Expr> value) {
   if (kMachineByteOrder == machine::MSB) {
-    write8(offset+0, ExtractExpr::createByteOff(value, 7));
-    write8(offset+1, ExtractExpr::createByteOff(value, 6));
-    write8(offset+2, ExtractExpr::createByteOff(value, 5));
-    write8(offset+3, ExtractExpr::createByteOff(value, 4));
-    write8(offset+4, ExtractExpr::createByteOff(value, 3));
-    write8(offset+5, ExtractExpr::createByteOff(value, 2));
-    write8(offset+6, ExtractExpr::createByteOff(value, 1));
-    write8(offset+7, ExtractExpr::createByteOff(value, 0));
+    write8(offset+0, ExtractExpr::create(value, 56, Expr::Int8));
+    write8(offset+1, ExtractExpr::create(value, 48, Expr::Int8));
+    write8(offset+2, ExtractExpr::create(value, 40, Expr::Int8));
+    write8(offset+3, ExtractExpr::create(value, 32, Expr::Int8));
+    write8(offset+4, ExtractExpr::create(value, 24, Expr::Int8));
+    write8(offset+5, ExtractExpr::create(value, 16, Expr::Int8));
+    write8(offset+6, ExtractExpr::create(value, 8, Expr::Int8));
+    write8(offset+7, ExtractExpr::create(value, 0, Expr::Int8));
   } else {
-    write8(offset+7, ExtractExpr::createByteOff(value, 7));
-    write8(offset+6, ExtractExpr::createByteOff(value, 6));
-    write8(offset+5, ExtractExpr::createByteOff(value, 5));
-    write8(offset+4, ExtractExpr::createByteOff(value, 4));
-    write8(offset+3, ExtractExpr::createByteOff(value, 3));
-    write8(offset+2, ExtractExpr::createByteOff(value, 2));
-    write8(offset+1, ExtractExpr::createByteOff(value, 1));
-    write8(offset+0, ExtractExpr::createByteOff(value, 0));
+    write8(offset+7, ExtractExpr::create(value, 56, Expr::Int8));
+    write8(offset+6, ExtractExpr::create(value, 48, Expr::Int8));
+    write8(offset+5, ExtractExpr::create(value, 40, Expr::Int8));
+    write8(offset+4, ExtractExpr::create(value, 32, Expr::Int8));
+    write8(offset+3, ExtractExpr::create(value, 24, Expr::Int8));
+    write8(offset+2, ExtractExpr::create(value, 16, Expr::Int8));
+    write8(offset+1, ExtractExpr::create(value, 8, Expr::Int8));
+    write8(offset+0, ExtractExpr::create(value, 0, Expr::Int8));
   }
 }
 
@@ -809,53 +809,53 @@ void ObjectState::write64(ref<Expr> offset, ref<Expr> value) {
   if (kMachineByteOrder == machine::MSB) {
     write8(AddExpr::create(offset,
                            ConstantExpr::create(0, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,7));
+           ExtractExpr::create(value, 56, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(1, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,6));
+           ExtractExpr::create(value, 48, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(2, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,5));
+           ExtractExpr::create(value, 40, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(3, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,4));
+           ExtractExpr::create(value, 32, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(4, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,3));
+           ExtractExpr::create(value, 24, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(5, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,2));
+           ExtractExpr::create(value, 16, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(6, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,1));
+           ExtractExpr::create(value, 8, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(7, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,0));
+           ExtractExpr::create(value, 0, Expr::Int8));
   } else {
     write8(AddExpr::create(offset,
                            ConstantExpr::create(7, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,7));
+           ExtractExpr::create(value, 56, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(6, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,6));
+           ExtractExpr::create(value, 48, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(5, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,5));
+           ExtractExpr::create(value, 40, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(4, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,4));
+           ExtractExpr::create(value, 32, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(3, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,3));
+           ExtractExpr::create(value, 24, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(2, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,2));
+           ExtractExpr::create(value, 16, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(1, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,1));
+           ExtractExpr::create(value, 8, Expr::Int8));
     write8(AddExpr::create(offset,
                            ConstantExpr::create(0, kMachinePointerType)), 
-           ExtractExpr::createByteOff(value,0));
+           ExtractExpr::create(value, 0, Expr::Int8));
   }
 }
 
diff --git a/lib/Expr/Expr.cpp b/lib/Expr/Expr.cpp
index e82285dd..5ef71d8c 100644
--- a/lib/Expr/Expr.cpp
+++ b/lib/Expr/Expr.cpp
@@ -669,11 +669,6 @@ ref<Expr> ExtractExpr::create(ref<Expr> expr, unsigned off, Width w) {
   return ExtractExpr::alloc(expr, off, w);
 }
 
-
-ref<Expr> ExtractExpr::createByteOff(ref<Expr> expr, unsigned offset, Width bits) {
-  return ExtractExpr::create(expr, 8*offset, bits);
-}
-
 /***/
 
 ref<Expr> ZExtExpr::create(const ref<Expr> &e, Width w) {
@@ -681,7 +676,7 @@ ref<Expr> ZExtExpr::create(const ref<Expr> &e, Width w) {
   if (w == kBits) {
     return e;
   } else if (w < kBits) { // trunc
-    return ExtractExpr::createByteOff(e, 0, w);
+    return ExtractExpr::create(e, 0, w);
   } else if (ConstantExpr *CE = dyn_cast<ConstantExpr>(e)) {
     return CE->ZExt(w);
   } else {
@@ -694,7 +689,7 @@ ref<Expr> SExtExpr::create(const ref<Expr> &e, Width w) {
   if (w == kBits) {
     return e;
   } else if (w < kBits) { // trunc
-    return ExtractExpr::createByteOff(e, 0, w);
+    return ExtractExpr::create(e, 0, w);
   } else if (ConstantExpr *CE = dyn_cast<ConstantExpr>(e)) {
     return CE->SExt(w);
   } else {