Ignore:
Timestamp:
Sep 9, 2017, 9:54:40 AM (8 years ago)
Author:
Ryan Haddad
Message:

Unreviewed, rolling out r221774.

This change introduced three debug JSC test timeouts.

Reverted changeset:

"Use JIT probes for DFG OSR exit."
https://bugs.webkit.org/show_bug.cgi?id=175144
http://trac.webkit.org/changeset/221774

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/assembler/ProbeContext.h

    r221774 r221823  
    4646    inline double& fpr(FPRegisterID);
    4747
    48     template<typename T> T gpr(RegisterID) const;
    49     template<typename T> T spr(SPRegisterID) const;
     48    template<typename T, typename std::enable_if<std::is_integral<T>::value>::type* = nullptr>
     49    T gpr(RegisterID) const;
     50    template<typename T, typename std::enable_if<std::is_pointer<T>::value>::type* = nullptr>
     51    T gpr(RegisterID) const;
     52    template<typename T, typename std::enable_if<std::is_integral<T>::value>::type* = nullptr>
     53    T spr(SPRegisterID) const;
     54    template<typename T, typename std::enable_if<std::is_pointer<T>::value>::type* = nullptr>
     55    T spr(SPRegisterID) const;
    5056    template<typename T> T fpr(FPRegisterID) const;
    5157
     
    8086}
    8187
    82 template<typename T>
     88template<typename T, typename std::enable_if<std::is_integral<T>::value>::type*>
    8389T CPUState::gpr(RegisterID id) const
    8490{
    8591    CPUState* cpu = const_cast<CPUState*>(this);
    86     auto& from = cpu->gpr(id);
    87     typename std::remove_const<T>::type to { };
    88     std::memcpy(&to, &from, sizeof(to)); // Use std::memcpy to avoid strict aliasing issues.
    89     return to;
    90 }
    91 
    92 template<typename T>
     92    return static_cast<T>(cpu->gpr(id));
     93}
     94
     95template<typename T, typename std::enable_if<std::is_pointer<T>::value>::type*>
     96T CPUState::gpr(RegisterID id) const
     97{
     98    CPUState* cpu = const_cast<CPUState*>(this);
     99    return reinterpret_cast<T>(cpu->gpr(id));
     100}
     101
     102template<typename T, typename std::enable_if<std::is_integral<T>::value>::type*>
    93103T CPUState::spr(SPRegisterID id) const
    94104{
    95105    CPUState* cpu = const_cast<CPUState*>(this);
    96     auto& from = cpu->spr(id);
    97     typename std::remove_const<T>::type to { };
    98     std::memcpy(&to, &from, sizeof(to)); // Use std::memcpy to avoid strict aliasing issues.
    99     return to;
     106    return static_cast<T>(cpu->spr(id));
     107}
     108
     109template<typename T, typename std::enable_if<std::is_pointer<T>::value>::type*>
     110T CPUState::spr(SPRegisterID id) const
     111{
     112    CPUState* cpu = const_cast<CPUState*>(this);
     113    return reinterpret_cast<T>(cpu->spr(id));
    100114}
    101115
     
    192206
    193207    Context(State* state)
    194         : cpu(state->cpu)
    195         , m_state(state)
     208        : m_state(state)
     209        , arg(state->arg)
     210        , cpu(state->cpu)
    196211    { }
    197212
    198     template<typename T>
    199     T arg() { return reinterpret_cast<T>(m_state->arg); }
    200 
    201     uintptr_t& gpr(RegisterID id) { return cpu.gpr(id); }
    202     uintptr_t& spr(SPRegisterID id) { return cpu.spr(id); }
    203     double& fpr(FPRegisterID id) { return cpu.fpr(id); }
    204     const char* gprName(RegisterID id) { return cpu.gprName(id); }
    205     const char* sprName(SPRegisterID id) { return cpu.sprName(id); }
    206     const char* fprName(FPRegisterID id) { return cpu.fprName(id); }
    207 
    208     template<typename T> T gpr(RegisterID id) const { return cpu.gpr<T>(id); }
    209     template<typename T> T spr(SPRegisterID id) const { return cpu.spr<T>(id); }
    210     template<typename T> T fpr(FPRegisterID id) const { return cpu.fpr<T>(id); }
    211 
    212     void*& pc() { return cpu.pc(); }
    213     void*& fp() { return cpu.fp(); }
    214     void*& sp() { return cpu.sp(); }
    215 
    216     template<typename T> T pc() { return cpu.pc<T>(); }
    217     template<typename T> T fp() { return cpu.fp<T>(); }
    218     template<typename T> T sp() { return cpu.sp<T>(); }
     213    uintptr_t& gpr(RegisterID id) { return m_state->cpu.gpr(id); }
     214    uintptr_t& spr(SPRegisterID id) { return m_state->cpu.spr(id); }
     215    double& fpr(FPRegisterID id) { return m_state->cpu.fpr(id); }
     216    const char* gprName(RegisterID id) { return m_state->cpu.gprName(id); }
     217    const char* sprName(SPRegisterID id) { return m_state->cpu.sprName(id); }
     218    const char* fprName(FPRegisterID id) { return m_state->cpu.fprName(id); }
     219
     220    void*& pc() { return m_state->cpu.pc(); }
     221    void*& fp() { return m_state->cpu.fp(); }
     222    void*& sp() { return m_state->cpu.sp(); }
     223
     224    template<typename T> T pc() { return m_state->cpu.pc<T>(); }
     225    template<typename T> T fp() { return m_state->cpu.fp<T>(); }
     226    template<typename T> T sp() { return m_state->cpu.sp<T>(); }
    219227
    220228    Stack& stack()
     
    227235    Stack* releaseStack() { return new Stack(WTFMove(m_stack)); }
    228236
    229     CPUState& cpu;
    230 
    231237private:
    232238    State* m_state;
     239public:
     240    void* arg;
     241    CPUState& cpu;
     242
     243private:
    233244    Stack m_stack;
    234245
Note: See TracChangeset for help on using the changeset viewer.