1130 // and re-execute a failed heap allocation in the interpreter. |
1133 // and re-execute a failed heap allocation in the interpreter. |
1131 bool _in_retryable_allocation; |
1134 bool _in_retryable_allocation; |
1132 |
1135 |
1133 // An id of a speculation that JVMCI compiled code can use to further describe and |
1136 // An id of a speculation that JVMCI compiled code can use to further describe and |
1134 // uniquely identify the speculative optimization guarded by the uncommon trap |
1137 // uniquely identify the speculative optimization guarded by the uncommon trap |
1135 long _pending_failed_speculation; |
1138 jlong _pending_failed_speculation; |
1136 |
1139 |
1137 // These fields are mutually exclusive in terms of live ranges. |
1140 // These fields are mutually exclusive in terms of live ranges. |
1138 union { |
1141 union { |
1139 // Communicates the pc at which the most recent implicit exception occurred |
1142 // Communicates the pc at which the most recent implicit exception occurred |
1140 // from the signal handler to a deoptimization stub. |
1143 // from the signal handler to a deoptimization stub. |
1147 // Support for high precision, thread sensitive counters in JVMCI compiled code. |
1150 // Support for high precision, thread sensitive counters in JVMCI compiled code. |
1148 jlong* _jvmci_counters; |
1151 jlong* _jvmci_counters; |
1149 |
1152 |
1150 public: |
1153 public: |
1151 static jlong* _jvmci_old_thread_counters; |
1154 static jlong* _jvmci_old_thread_counters; |
1152 static void collect_counters(typeArrayOop array); |
1155 static void collect_counters(JVMCIEnv* JVMCIENV, JVMCIPrimitiveArray array); |
1153 private: |
1156 private: |
1154 #endif // INCLUDE_JVMCI |
1157 #endif // INCLUDE_JVMCI |
1155 |
1158 |
1156 StackGuardState _stack_guard_state; |
1159 StackGuardState _stack_guard_state; |
1157 |
1160 |
1530 MemRegion deferred_card_mark() const { return _deferred_card_mark; } |
1533 MemRegion deferred_card_mark() const { return _deferred_card_mark; } |
1531 void set_deferred_card_mark(MemRegion mr) { _deferred_card_mark = mr; } |
1534 void set_deferred_card_mark(MemRegion mr) { _deferred_card_mark = mr; } |
1532 |
1535 |
1533 #if INCLUDE_JVMCI |
1536 #if INCLUDE_JVMCI |
1534 int pending_deoptimization() const { return _pending_deoptimization; } |
1537 int pending_deoptimization() const { return _pending_deoptimization; } |
1535 long pending_failed_speculation() const { return _pending_failed_speculation; } |
1538 jlong pending_failed_speculation() const { return _pending_failed_speculation; } |
1536 bool has_pending_monitorenter() const { return _pending_monitorenter; } |
1539 bool has_pending_monitorenter() const { return _pending_monitorenter; } |
1537 void set_pending_monitorenter(bool b) { _pending_monitorenter = b; } |
1540 void set_pending_monitorenter(bool b) { _pending_monitorenter = b; } |
1538 void set_pending_deoptimization(int reason) { _pending_deoptimization = reason; } |
1541 void set_pending_deoptimization(int reason) { _pending_deoptimization = reason; } |
1539 void set_pending_failed_speculation(long failed_speculation) { _pending_failed_speculation = failed_speculation; } |
1542 void set_pending_failed_speculation(jlong failed_speculation) { _pending_failed_speculation = failed_speculation; } |
1540 void set_pending_transfer_to_interpreter(bool b) { _pending_transfer_to_interpreter = b; } |
1543 void set_pending_transfer_to_interpreter(bool b) { _pending_transfer_to_interpreter = b; } |
1541 void set_jvmci_alternate_call_target(address a) { assert(_jvmci._alternate_call_target == NULL, "must be"); _jvmci._alternate_call_target = a; } |
1544 void set_jvmci_alternate_call_target(address a) { assert(_jvmci._alternate_call_target == NULL, "must be"); _jvmci._alternate_call_target = a; } |
1542 void set_jvmci_implicit_exception_pc(address a) { assert(_jvmci._implicit_exception_pc == NULL, "must be"); _jvmci._implicit_exception_pc = a; } |
1545 void set_jvmci_implicit_exception_pc(address a) { assert(_jvmci._implicit_exception_pc == NULL, "must be"); _jvmci._implicit_exception_pc = a; } |
1543 |
1546 |
1544 virtual bool in_retryable_allocation() const { return _in_retryable_allocation; } |
1547 virtual bool in_retryable_allocation() const { return _in_retryable_allocation; } |