Chromium Code Reviews| Index: runtime/vm/kernel_binary_flowgraph.cc |
| diff --git a/runtime/vm/kernel_binary_flowgraph.cc b/runtime/vm/kernel_binary_flowgraph.cc |
| index 34a20248b9bb9d8047dbf2d32c18c374395226b6..0fbefa90cd37274879f9ff6e578aec39df4b9998 100644 |
| --- a/runtime/vm/kernel_binary_flowgraph.cc |
| +++ b/runtime/vm/kernel_binary_flowgraph.cc |
| @@ -2267,6 +2267,9 @@ void StreamingConstantEvaluator::EvaluateBigIntLiteral() { |
| const dart::String& value = |
| H.DartString(builder_->ReadStringReference()); // read string reference. |
| result_ = Integer::New(value, Heap::kOld); |
| + if (result_.IsNull()) { |
| + H.ReportError("Integer literal %s is out of range", value.ToCString()); |
|
zra
2017/07/27 16:31:44
If code after ReportError is unreachable, it can b
alexmarkov
2017/07/28 17:42:43
Done.
|
| + } |
| result_ = H.Canonicalize(result_); |
| } |
| @@ -5774,7 +5777,12 @@ Fragment StreamingFlowGraphBuilder::BuildBigIntLiteral( |
| const dart::String& value = |
| H.DartString(ReadStringReference()); // read index into string table. |
| - return Constant(Integer::ZoneHandle(Z, Integer::New(value, Heap::kOld))); |
| + const Integer& integer = |
| + Integer::ZoneHandle(Z, Integer::New(value, Heap::kOld)); |
| + if (integer.IsNull()) { |
| + H.ReportError("Integer literal %s is out of range", value.ToCString()); |
| + } |
| + return Constant(integer); |
| } |
| Fragment StreamingFlowGraphBuilder::BuildStringLiteral( |