예제 #1
0
ssize_t RequestInjectionData::fetchAndClearFlags() {
  ssize_t flags;
  for (;;) {
    flags = atomic_acquire_load(getConditionFlags());
    const ssize_t newFlags =
      hhvm ? (flags & RequestInjectionData::EventHookFlag) : 0;
    if (__sync_bool_compare_and_swap(getConditionFlags(), flags, newFlags)) {
      break;
    }
  }
  return flags;
}
예제 #2
0
void RequestInjectionData::reset() {
  __sync_fetch_and_and(getConditionFlags(), 0);
  coverage = RuntimeOption::RecordCodeCoverage;
  debugger = false;
  debuggerIntr = false;
  while (!interrupts.empty()) interrupts.pop();
}
예제 #3
0
void RequestInjectionData::reset() {
  getConditionFlags()->store(0);
  m_coverage = RuntimeOption::RecordCodeCoverage;
  m_debugger = false;
  m_debuggerIntr = false;
  updateJit();
  while (!interrupts.empty()) interrupts.pop();
}
예제 #4
0
void RequestInjectionData::setInterceptFlag() {
  __sync_fetch_and_or(getConditionFlags(),
                      RequestInjectionData::InterceptFlag);
}
예제 #5
0
void RequestInjectionData::clearPendingExceptionFlag() {
  __sync_fetch_and_and(getConditionFlags(),
                       ~RequestInjectionData::PendingExceptionFlag);
}
예제 #6
0
void RequestInjectionData::setPendingExceptionFlag() {
  __sync_fetch_and_or(getConditionFlags(),
                      RequestInjectionData::PendingExceptionFlag);
}
예제 #7
0
void RequestInjectionData::setTimedOutFlag() {
  getConditionFlags()->fetch_or(RequestInjectionData::TimedOutFlag);
}
예제 #8
0
void RequestInjectionData::clearEventHookFlag() {
  __sync_fetch_and_and(getConditionFlags(),
                       ~RequestInjectionData::EventHookFlag);
}
예제 #9
0
void RequestInjectionData::clearPendingExceptionFlag() {
  getConditionFlags()->fetch_and(~RequestInjectionData::PendingExceptionFlag);
}
예제 #10
0
ssize_t RequestInjectionData::fetchAndClearFlags() {
  return __sync_fetch_and_and(getConditionFlags(),
                              (RequestInjectionData::EventHookFlag |
                               RequestInjectionData::InterceptFlag));
}
예제 #11
0
void RequestInjectionData::clearEventHookFlag() {
  getConditionFlags()->fetch_and(~RequestInjectionData::EventHookFlag);
}
예제 #12
0
void RequestInjectionData::setPendingExceptionFlag() {
  getConditionFlags()->fetch_or(RequestInjectionData::PendingExceptionFlag);
}
예제 #13
0
void RequestInjectionData::setEventHookFlag() {
  getConditionFlags()->fetch_or(RequestInjectionData::EventHookFlag);
}
예제 #14
0
void RequestInjectionData::setSignaledFlag() {
  getConditionFlags()->fetch_or(RequestInjectionData::SignaledFlag);
}
예제 #15
0
void RequestInjectionData::clearTimedOutFlag() {
  getConditionFlags()->fetch_and(~RequestInjectionData::TimedOutFlag);
}
예제 #16
0
void RequestInjectionData::clearInterceptFlag() {
  __sync_fetch_and_and(getConditionFlags(),
                       ~RequestInjectionData::InterceptFlag);
}
예제 #17
0
void RequestInjectionData::setMemExceededFlag() {
  __sync_fetch_and_or(getConditionFlags(),
                      RequestInjectionData::MemExceededFlag);
}
예제 #18
0
void RequestInjectionData::setDebuggerSignalFlag() {
  __sync_fetch_and_or(getConditionFlags(),
                      RequestInjectionData::DebuggerSignalFlag);
}
예제 #19
0
void RequestInjectionData::setSignaledFlag() {
  __sync_fetch_and_or(getConditionFlags(),
                      RequestInjectionData::SignaledFlag);
}
예제 #20
0
void RequestInjectionData::setInterceptFlag() {
  getConditionFlags()->fetch_or(RequestInjectionData::InterceptFlag);
}
예제 #21
0
void RequestInjectionData::setMemExceededFlag() {
  getConditionFlags()->fetch_or(RequestInjectionData::MemExceededFlag);
}
예제 #22
0
void RequestInjectionData::setTimedOutFlag() {
  __sync_fetch_and_or(getConditionFlags(),
                      RequestInjectionData::TimedOutFlag);
}
예제 #23
0
void RequestInjectionData::clearInterceptFlag() {
  getConditionFlags()->fetch_and(~RequestInjectionData::InterceptFlag);
}
예제 #24
0
void RequestInjectionData::setEventHookFlag() {
  __sync_fetch_and_or(getConditionFlags(),
                      RequestInjectionData::EventHookFlag);
}
예제 #25
0
void RequestInjectionData::setDebuggerSignalFlag() {
  getConditionFlags()->fetch_or(RequestInjectionData::DebuggerSignalFlag);
}
예제 #26
0
ssize_t RequestInjectionData::fetchAndClearFlags() {
  return getConditionFlags()->fetch_and(RequestInjectionData::EventHookFlag |
                                        RequestInjectionData::InterceptFlag);
}
예제 #27
0
void RequestInjectionData::clearTimedOutFlag() {
  __sync_fetch_and_and(getConditionFlags(),
                       ~RequestInjectionData::TimedOutFlag);
}