Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(643)

Unified Diff: runtime/lib/integers.cc

Issue 11421064: Cleanups and added more checks for valid Integer allocation (must be Smi, Mint or Bigint for their … (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | runtime/vm/object.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/lib/integers.cc
===================================================================
--- runtime/lib/integers.cc (revision 15292)
+++ runtime/lib/integers.cc (working copy)
@@ -45,9 +45,9 @@
OS::Print("Integer_bitAndFromInteger %s & %s\n",
right.ToCString(), left.ToCString());
}
- Integer& result =
+ const Integer& result =
Integer::Handle(left.BitOp(Token::kBIT_AND, right));
- return result.AsInteger();
+ return result.AsValidInteger();
}
@@ -60,9 +60,9 @@
OS::Print("Integer_bitOrFromInteger %s | %s\n",
left.ToCString(), right.ToCString());
}
- Integer& result =
+ const Integer& result =
Integer::Handle(left.BitOp(Token::kBIT_OR, right));
- return result.AsInteger();
+ return result.AsValidInteger();
}
@@ -75,9 +75,9 @@
OS::Print("Integer_bitXorFromInteger %s ^ %s\n",
left.ToCString(), right.ToCString());
}
- Integer& result =
+ const Integer& result =
Integer::Handle(left.BitOp(Token::kBIT_XOR, right));
- return result.AsInteger();
+ return result.AsValidInteger();
}
@@ -90,7 +90,9 @@
OS::Print("Integer_addFromInteger %s + %s\n",
left_int.ToCString(), right_int.ToCString());
}
- return left_int.ArithmeticOp(Token::kADD, right_int);
+ const Integer& result =
+ Integer::Handle(left_int.ArithmeticOp(Token::kADD, right_int));
+ return result.AsValidInteger();
}
@@ -103,7 +105,9 @@
OS::Print("Integer_subFromInteger %s - %s\n",
left_int.ToCString(), right_int.ToCString());
}
- return left_int.ArithmeticOp(Token::kSUB, right_int);
+ const Integer& result =
+ Integer::Handle(left_int.ArithmeticOp(Token::kSUB, right_int));
+ return result.AsValidInteger();
}
@@ -116,7 +120,9 @@
OS::Print("Integer_mulFromInteger %s * %s\n",
left_int.ToCString(), right_int.ToCString());
}
- return left_int.ArithmeticOp(Token::kMUL, right_int);
+ const Integer& result =
+ Integer::Handle(left_int.ArithmeticOp(Token::kMUL, right_int));
+ return result.AsValidInteger();
}
@@ -126,7 +132,9 @@
ASSERT(CheckInteger(right_int));
ASSERT(CheckInteger(left_int));
ASSERT(!right_int.IsZero());
- return left_int.ArithmeticOp(Token::kTRUNCDIV, right_int);
+ const Integer& result =
+ Integer::Handle(left_int.ArithmeticOp(Token::kTRUNCDIV, right_int));
+ return result.AsValidInteger();
}
@@ -143,7 +151,9 @@
// Should have been caught before calling into runtime.
UNIMPLEMENTED();
}
- return left_int.ArithmeticOp(Token::kMOD, right_int);
+ const Integer& result =
+ Integer::Handle(left_int.ArithmeticOp(Token::kMOD, right_int));
+ return result.AsValidInteger();
}
@@ -252,7 +262,7 @@
ASSERT(CheckInteger(value));
Integer& result = Integer::Handle(
Florian Schneider 2012/11/26 08:30:58 maybe also const Integer&
srdjan 2012/11/26 16:13:55 Done.
ShiftOperationHelper(Token::kSHR, value, amount));
- return result.AsInteger();
+ return result.AsValidInteger();
}
@@ -268,7 +278,7 @@
}
Integer& result = Integer::Handle(
Florian Schneider 2012/11/26 08:30:58 const
srdjan 2012/11/26 16:13:55 Done.
ShiftOperationHelper(Token::kSHL, value, amount));
- return result.AsInteger();
+ return result.AsValidInteger();
}
@@ -301,7 +311,7 @@
const Bigint& result = Bigint::Handle(BigintOperations::BitNot(value));
ASSERT(CheckInteger(value));
ASSERT(CheckInteger(result));
- return result.AsInteger();
+ return result.AsValidInteger();
}
} // namespace dart
« no previous file with comments | « no previous file | runtime/vm/object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698