| Index: src/ppc/assembler-ppc.h
 | 
| diff --git a/src/ppc/assembler-ppc.h b/src/ppc/assembler-ppc.h
 | 
| index 2b112d6ca5640f3e90d4b45f199f78e061d504ff..a3949556f3daf16d238dd12d3893c7555b5acbf1 100644
 | 
| --- a/src/ppc/assembler-ppc.h
 | 
| +++ b/src/ppc/assembler-ppc.h
 | 
| @@ -54,11 +54,8 @@
 | 
|  #define ABI_PASSES_HANDLES_IN_REGS \
 | 
|    (!V8_HOST_ARCH_PPC || V8_OS_AIX || V8_TARGET_ARCH_PPC64)
 | 
|  
 | 
| -#define ABI_RETURNS_HANDLES_IN_REGS \
 | 
| -  (!V8_HOST_ARCH_PPC || V8_TARGET_LITTLE_ENDIAN)
 | 
| -
 | 
|  #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS \
 | 
| -  (!V8_HOST_ARCH_PPC || V8_TARGET_LITTLE_ENDIAN)
 | 
| +  (!V8_HOST_ARCH_PPC || !V8_TARGET_ARCH_PPC64 || V8_TARGET_LITTLE_ENDIAN)
 | 
|  
 | 
|  #define ABI_TOC_ADDRESSABILITY_VIA_IP \
 | 
|    (V8_HOST_ARCH_PPC && V8_TARGET_ARCH_PPC64 && V8_TARGET_LITTLE_ENDIAN)
 | 
| @@ -832,6 +829,48 @@ class Assembler : public AssemblerBase {
 | 
|      }
 | 
|    }
 | 
|  
 | 
| +  void isel(Register rt, Register ra, Register rb, int cb);
 | 
| +  void isel(Condition cond, Register rt, Register ra, Register rb,
 | 
| +            CRegister cr = cr7) {
 | 
| +    DCHECK(cond != al);
 | 
| +    DCHECK(cr.code() >= 0 && cr.code() <= 7);
 | 
| +
 | 
| +    switch (cond) {
 | 
| +      case eq:
 | 
| +        isel(rt, ra, rb, encode_crbit(cr, CR_EQ));
 | 
| +        break;
 | 
| +      case ne:
 | 
| +        isel(rt, rb, ra, encode_crbit(cr, CR_EQ));
 | 
| +        break;
 | 
| +      case gt:
 | 
| +        isel(rt, ra, rb, encode_crbit(cr, CR_GT));
 | 
| +        break;
 | 
| +      case le:
 | 
| +        isel(rt, rb, ra, encode_crbit(cr, CR_GT));
 | 
| +        break;
 | 
| +      case lt:
 | 
| +        isel(rt, ra, rb, encode_crbit(cr, CR_LT));
 | 
| +        break;
 | 
| +      case ge:
 | 
| +        isel(rt, rb, ra, encode_crbit(cr, CR_LT));
 | 
| +        break;
 | 
| +      case unordered:
 | 
| +        isel(rt, ra, rb, encode_crbit(cr, CR_FU));
 | 
| +        break;
 | 
| +      case ordered:
 | 
| +        isel(rt, rb, ra, encode_crbit(cr, CR_FU));
 | 
| +        break;
 | 
| +      case overflow:
 | 
| +        isel(rt, ra, rb, encode_crbit(cr, CR_SO));
 | 
| +        break;
 | 
| +      case nooverflow:
 | 
| +        isel(rt, rb, ra, encode_crbit(cr, CR_SO));
 | 
| +        break;
 | 
| +      default:
 | 
| +        UNIMPLEMENTED();
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
|    void b(Condition cond, Label* L, CRegister cr = cr7, LKBit lk = LeaveLK) {
 | 
|      if (cond == al) {
 | 
|        b(L, lk);
 | 
| @@ -907,11 +946,13 @@ class Assembler : public AssemblerBase {
 | 
|    void mullw(Register dst, Register src1, Register src2, OEBit o = LeaveOE,
 | 
|               RCBit r = LeaveRC);
 | 
|  
 | 
| -  void mulhw(Register dst, Register src1, Register src2, OEBit o = LeaveOE,
 | 
| -             RCBit r = LeaveRC);
 | 
| +  void mulhw(Register dst, Register src1, Register src2, RCBit r = LeaveRC);
 | 
| +  void mulhwu(Register dst, Register src1, Register src2, RCBit r = LeaveRC);
 | 
|  
 | 
|    void divw(Register dst, Register src1, Register src2, OEBit o = LeaveOE,
 | 
|              RCBit r = LeaveRC);
 | 
| +  void divwu(Register dst, Register src1, Register src2, OEBit o = LeaveOE,
 | 
| +             RCBit r = LeaveRC);
 | 
|  
 | 
|    void addi(Register dst, Register src, const Operand& imm);
 | 
|    void addis(Register dst, Register src, const Operand& imm);
 | 
| @@ -926,6 +967,7 @@ class Assembler : public AssemblerBase {
 | 
|    void ori(Register dst, Register src, const Operand& imm);
 | 
|    void oris(Register dst, Register src, const Operand& imm);
 | 
|    void orx(Register dst, Register src1, Register src2, RCBit rc = LeaveRC);
 | 
| +  void orc(Register dst, Register src1, Register src2, RCBit rc = LeaveRC);
 | 
|    void xori(Register dst, Register src, const Operand& imm);
 | 
|    void xoris(Register ra, Register rs, const Operand& imm);
 | 
|    void xor_(Register dst, Register src1, Register src2, RCBit rc = LeaveRC);
 | 
| @@ -943,11 +985,14 @@ class Assembler : public AssemblerBase {
 | 
|    void lhz(Register dst, const MemOperand& src);
 | 
|    void lhzx(Register dst, const MemOperand& src);
 | 
|    void lhzux(Register dst, const MemOperand& src);
 | 
| +  void lha(Register dst, const MemOperand& src);
 | 
| +  void lhax(Register dst, const MemOperand& src);
 | 
|    void lwz(Register dst, const MemOperand& src);
 | 
|    void lwzu(Register dst, const MemOperand& src);
 | 
|    void lwzx(Register dst, const MemOperand& src);
 | 
|    void lwzux(Register dst, const MemOperand& src);
 | 
|    void lwa(Register dst, const MemOperand& src);
 | 
| +  void lwax(Register dst, const MemOperand& src);
 | 
|    void stb(Register dst, const MemOperand& src);
 | 
|    void stbx(Register dst, const MemOperand& src);
 | 
|    void stbux(Register dst, const MemOperand& src);
 | 
| @@ -961,6 +1006,7 @@ class Assembler : public AssemblerBase {
 | 
|  
 | 
|    void extsb(Register rs, Register ra, RCBit r = LeaveRC);
 | 
|    void extsh(Register rs, Register ra, RCBit r = LeaveRC);
 | 
| +  void extsw(Register rs, Register ra, RCBit r = LeaveRC);
 | 
|  
 | 
|    void neg(Register rt, Register ra, OEBit o = LeaveOE, RCBit c = LeaveRC);
 | 
|  
 | 
| @@ -992,11 +1038,12 @@ class Assembler : public AssemblerBase {
 | 
|    void rotldi(Register ra, Register rs, int sh, RCBit r = LeaveRC);
 | 
|    void rotrdi(Register ra, Register rs, int sh, RCBit r = LeaveRC);
 | 
|    void cntlzd_(Register dst, Register src, RCBit rc = LeaveRC);
 | 
| -  void extsw(Register rs, Register ra, RCBit r = LeaveRC);
 | 
|    void mulld(Register dst, Register src1, Register src2, OEBit o = LeaveOE,
 | 
|               RCBit r = LeaveRC);
 | 
|    void divd(Register dst, Register src1, Register src2, OEBit o = LeaveOE,
 | 
|              RCBit r = LeaveRC);
 | 
| +  void divdu(Register dst, Register src1, Register src2, OEBit o = LeaveOE,
 | 
| +             RCBit r = LeaveRC);
 | 
|  #endif
 | 
|  
 | 
|    void rlwinm(Register ra, Register rs, int sh, int mb, int me,
 | 
| @@ -1059,8 +1106,6 @@ class Assembler : public AssemblerBase {
 | 
|    void mtfprwa(DoubleRegister dst, Register src);
 | 
|  #endif
 | 
|  
 | 
| -  void fake_asm(enum FAKE_OPCODE_T fopcode);
 | 
| -  void marker_asm(int mcode);
 | 
|    void function_descriptor();
 | 
|  
 | 
|    // Exception-generating instructions and debugging support
 | 
| @@ -1069,10 +1114,6 @@ class Assembler : public AssemblerBase {
 | 
|  
 | 
|    void bkpt(uint32_t imm16);  // v5 and above
 | 
|  
 | 
| -  // Informational messages when simulating
 | 
| -  void info(const char* msg, Condition cond = al,
 | 
| -            int32_t code = kDefaultStopCode, CRegister cr = cr7);
 | 
| -
 | 
|    void dcbf(Register ra, Register rb);
 | 
|    void sync();
 | 
|    void lwsync();
 | 
| @@ -1111,7 +1152,14 @@ class Assembler : public AssemblerBase {
 | 
|             RCBit rc = LeaveRC);
 | 
|    void fctiwz(const DoubleRegister frt, const DoubleRegister frb);
 | 
|    void fctiw(const DoubleRegister frt, const DoubleRegister frb);
 | 
| -  void frim(const DoubleRegister frt, const DoubleRegister frb);
 | 
| +  void frin(const DoubleRegister frt, const DoubleRegister frb,
 | 
| +            RCBit rc = LeaveRC);
 | 
| +  void friz(const DoubleRegister frt, const DoubleRegister frb,
 | 
| +            RCBit rc = LeaveRC);
 | 
| +  void frip(const DoubleRegister frt, const DoubleRegister frb,
 | 
| +            RCBit rc = LeaveRC);
 | 
| +  void frim(const DoubleRegister frt, const DoubleRegister frb,
 | 
| +            RCBit rc = LeaveRC);
 | 
|    void frsp(const DoubleRegister frt, const DoubleRegister frb,
 | 
|              RCBit rc = LeaveRC);
 | 
|    void fcfid(const DoubleRegister frt, const DoubleRegister frb,
 | 
| @@ -1233,6 +1281,10 @@ class Assembler : public AssemblerBase {
 | 
|    // Use --code-comments to enable.
 | 
|    void RecordComment(const char* msg);
 | 
|  
 | 
| +  // Record a deoptimization reason that can be used by a log or cpu profiler.
 | 
| +  // Use --trace-deopt to enable.
 | 
| +  void RecordDeoptReason(const int reason, const int raw_position);
 | 
| +
 | 
|    // Writes a single byte or word of data in the code stream.  Used
 | 
|    // for inline tables, e.g., jump-tables.
 | 
|    void db(uint8_t data);
 | 
| @@ -1366,12 +1418,6 @@ class Assembler : public AssemblerBase {
 | 
|  
 | 
|    bool is_trampoline_emitted() const { return trampoline_emitted_; }
 | 
|  
 | 
| -#if V8_OOL_CONSTANT_POOL
 | 
| -  void set_constant_pool_available(bool available) {
 | 
| -    constant_pool_available_ = available;
 | 
| -  }
 | 
| -#endif
 | 
| -
 | 
|   private:
 | 
|    // Code generation
 | 
|    // The relocation writer's position is at least kGap bytes below the end of
 | 
| 
 |