| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/code_generator.h" | 5 #include "vm/code_generator.h" |
| 6 | 6 |
| 7 #include "vm/assembler_macros.h" | 7 #include "vm/assembler_macros.h" |
| 8 #include "vm/ast.h" | 8 #include "vm/ast.h" |
| 9 #include "vm/code_patcher.h" | 9 #include "vm/code_patcher.h" |
| 10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
| (...skipping 1233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1244 if (stack_pos < isolate->saved_stack_limit()) { | 1244 if (stack_pos < isolate->saved_stack_limit()) { |
| 1245 // Use the preallocated stack overflow exception to avoid calling | 1245 // Use the preallocated stack overflow exception to avoid calling |
| 1246 // into dart code. | 1246 // into dart code. |
| 1247 const Instance& exception = | 1247 const Instance& exception = |
| 1248 Instance::Handle(isolate->object_store()->stack_overflow()); | 1248 Instance::Handle(isolate->object_store()->stack_overflow()); |
| 1249 Exceptions::Throw(exception); | 1249 Exceptions::Throw(exception); |
| 1250 UNREACHABLE(); | 1250 UNREACHABLE(); |
| 1251 } | 1251 } |
| 1252 | 1252 |
| 1253 uword interrupt_bits = isolate->GetAndClearInterrupts(); | 1253 uword interrupt_bits = isolate->GetAndClearInterrupts(); |
| 1254 if (interrupt_bits & Isolate::kStoreBufferInterrupt) { |
| 1255 if (FLAG_verbose_gc) { |
| 1256 OS::PrintErr("Scavenge scheduled by store buffer overflow.\n"); |
| 1257 } |
| 1258 isolate->heap()->CollectGarbage(Heap::kNew); |
| 1259 } |
| 1254 if (interrupt_bits & Isolate::kMessageInterrupt) { | 1260 if (interrupt_bits & Isolate::kMessageInterrupt) { |
| 1255 isolate->message_handler()->HandleOOBMessages(); | 1261 isolate->message_handler()->HandleOOBMessages(); |
| 1256 } | 1262 } |
| 1257 if (interrupt_bits & Isolate::kApiInterrupt) { | 1263 if (interrupt_bits & Isolate::kApiInterrupt) { |
| 1258 Dart_IsolateInterruptCallback callback = isolate->InterruptCallback(); | 1264 Dart_IsolateInterruptCallback callback = isolate->InterruptCallback(); |
| 1259 if (callback) { | 1265 if (callback) { |
| 1260 if ((*callback)()) { | 1266 if ((*callback)()) { |
| 1261 return; | 1267 return; |
| 1262 } else { | 1268 } else { |
| 1263 // TODO(turnidge): Unwind the stack. | 1269 // TODO(turnidge): Unwind the stack. |
| (...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1562 } | 1568 } |
| 1563 } | 1569 } |
| 1564 } | 1570 } |
| 1565 // The cache is null terminated, therefore the loop above should never | 1571 // The cache is null terminated, therefore the loop above should never |
| 1566 // terminate by itself. | 1572 // terminate by itself. |
| 1567 UNREACHABLE(); | 1573 UNREACHABLE(); |
| 1568 return Code::null(); | 1574 return Code::null(); |
| 1569 } | 1575 } |
| 1570 | 1576 |
| 1571 } // namespace dart | 1577 } // namespace dart |
| OLD | NEW |