| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 <setjmp.h> // NOLINT | 5 #include <setjmp.h> // NOLINT |
| 6 #include <stdlib.h> | 6 #include <stdlib.h> |
| 7 | 7 |
| 8 #include "vm/globals.h" | 8 #include "vm/globals.h" |
| 9 #if defined(TARGET_ARCH_DBC) | 9 #if defined(TARGET_ARCH_DBC) |
| 10 | 10 |
| (...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 RawObject** FP, | 427 RawObject** FP, |
| 428 RawObject** result) { | 428 RawObject** result) { |
| 429 double d1, d2; | 429 double d1, d2; |
| 430 if (!GetDoubleOperands(FrameArguments(FP, 2), &d1, &d2)) { | 430 if (!GetDoubleOperands(FrameArguments(FP, 2), &d1, &d2)) { |
| 431 return false; | 431 return false; |
| 432 } | 432 } |
| 433 *result = d1 <= d2 ? Bool::True().raw() : Bool::False().raw(); | 433 *result = d1 <= d2 ? Bool::True().raw() : Bool::False().raw(); |
| 434 return true; | 434 return true; |
| 435 } | 435 } |
| 436 | 436 |
| 437 static bool ClearAsyncThreadStack(Thread* thread, |
| 438 RawObject** FP, |
| 439 RawObject** result) { |
| 440 thread->clear_async_stack_trace(); |
| 441 *result = Object::null(); |
| 442 return true; |
| 443 } |
| 444 |
| 445 static bool SetAsyncThreadStackTrace(Thread* thread, |
| 446 RawObject** FP, |
| 447 RawObject** result) { |
| 448 RawObject** args = FrameArguments(FP, 1); |
| 449 thread->set_raw_async_stack_trace( |
| 450 reinterpret_cast<RawStackTrace*>(args[0])); |
| 451 *result = Object::null(); |
| 452 return true; |
| 453 } |
| 454 |
| 437 DART_FORCE_INLINE static RawCode* FrameCode(RawObject** FP) { | 455 DART_FORCE_INLINE static RawCode* FrameCode(RawObject** FP) { |
| 438 ASSERT(GetClassId(FP[kPcMarkerSlotFromFp]) == kCodeCid); | 456 ASSERT(GetClassId(FP[kPcMarkerSlotFromFp]) == kCodeCid); |
| 439 return static_cast<RawCode*>(FP[kPcMarkerSlotFromFp]); | 457 return static_cast<RawCode*>(FP[kPcMarkerSlotFromFp]); |
| 440 } | 458 } |
| 441 | 459 |
| 442 | 460 |
| 443 DART_FORCE_INLINE static void SetFrameCode(RawObject** FP, RawCode* code) { | 461 DART_FORCE_INLINE static void SetFrameCode(RawObject** FP, RawCode* code) { |
| 444 ASSERT(GetClassId(code) == kCodeCid); | 462 ASSERT(GetClassId(code) == kCodeCid); |
| 445 FP[kPcMarkerSlotFromFp] = code; | 463 FP[kPcMarkerSlotFromFp] = code; |
| 446 } | 464 } |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 497 intrinsics_[kDouble_subIntrinsic] = SimulatorHelpers::Double_sub; | 515 intrinsics_[kDouble_subIntrinsic] = SimulatorHelpers::Double_sub; |
| 498 intrinsics_[kDouble_divIntrinsic] = SimulatorHelpers::Double_div; | 516 intrinsics_[kDouble_divIntrinsic] = SimulatorHelpers::Double_div; |
| 499 intrinsics_[kDouble_greaterThanIntrinsic] = | 517 intrinsics_[kDouble_greaterThanIntrinsic] = |
| 500 SimulatorHelpers::Double_greaterThan; | 518 SimulatorHelpers::Double_greaterThan; |
| 501 intrinsics_[kDouble_greaterEqualThanIntrinsic] = | 519 intrinsics_[kDouble_greaterEqualThanIntrinsic] = |
| 502 SimulatorHelpers::Double_greaterEqualThan; | 520 SimulatorHelpers::Double_greaterEqualThan; |
| 503 intrinsics_[kDouble_lessThanIntrinsic] = SimulatorHelpers::Double_lessThan; | 521 intrinsics_[kDouble_lessThanIntrinsic] = SimulatorHelpers::Double_lessThan; |
| 504 intrinsics_[kDouble_equalIntrinsic] = SimulatorHelpers::Double_equal; | 522 intrinsics_[kDouble_equalIntrinsic] = SimulatorHelpers::Double_equal; |
| 505 intrinsics_[kDouble_lessEqualThanIntrinsic] = | 523 intrinsics_[kDouble_lessEqualThanIntrinsic] = |
| 506 SimulatorHelpers::Double_lessEqualThan; | 524 SimulatorHelpers::Double_lessEqualThan; |
| 525 intrinsics_[kClearAsyncThreadStackTraceIntrinsic] = |
| 526 SimulatorHelpers::ClearAsyncThreadStack; |
| 527 intrinsics_[kSetAsyncThreadStackTraceIntrinsic] = |
| 528 SimulatorHelpers::SetAsyncThreadStackTrace; |
| 507 } | 529 } |
| 508 | 530 |
| 509 | 531 |
| 510 Simulator::Simulator() : stack_(NULL), fp_(NULL) { | 532 Simulator::Simulator() : stack_(NULL), fp_(NULL) { |
| 511 // Setup simulator support first. Some of this information is needed to | 533 // Setup simulator support first. Some of this information is needed to |
| 512 // setup the architecture state. | 534 // setup the architecture state. |
| 513 // We allocate the stack here, the size is computed as the sum of | 535 // We allocate the stack here, the size is computed as the sum of |
| 514 // the size specified by the user and the buffer space needed for | 536 // the size specified by the user and the buffer space needed for |
| 515 // handling stack overflow exceptions. To be safe in potential | 537 // handling stack overflow exceptions. To be safe in potential |
| 516 // stack underflows we also add some underflow buffer space. | 538 // stack underflows we also add some underflow buffer space. |
| (...skipping 3204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3721 pc_ = pc; | 3743 pc_ = pc; |
| 3722 } | 3744 } |
| 3723 | 3745 |
| 3724 buf->Longjmp(); | 3746 buf->Longjmp(); |
| 3725 UNREACHABLE(); | 3747 UNREACHABLE(); |
| 3726 } | 3748 } |
| 3727 | 3749 |
| 3728 } // namespace dart | 3750 } // namespace dart |
| 3729 | 3751 |
| 3730 #endif // defined TARGET_ARCH_DBC | 3752 #endif // defined TARGET_ARCH_DBC |
| OLD | NEW |