| Index: src/interpreter/bytecodes.cc | 
| diff --git a/src/interpreter/bytecodes.cc b/src/interpreter/bytecodes.cc | 
| index 46134b7f1d418c52dbecbfe82775ad20586f08cf..e626acc69022e88089d4b9f3d20ff86689c73d52 100644 | 
| --- a/src/interpreter/bytecodes.cc | 
| +++ b/src/interpreter/bytecodes.cc | 
| @@ -107,7 +107,6 @@ Bytecode Bytecodes::FromByte(uint8_t value) { | 
| return bytecode; | 
| } | 
|  | 
| - | 
| // static | 
| Bytecode Bytecodes::GetDebugBreak(Bytecode bytecode) { | 
| DCHECK(!IsDebugBreak(bytecode)); | 
| @@ -140,7 +139,6 @@ int Bytecodes::Size(Bytecode bytecode, OperandScale operand_scale) { | 
| return size; | 
| } | 
|  | 
| - | 
| // static | 
| size_t Bytecodes::ReturnCount(Bytecode bytecode) { | 
| return bytecode == Bytecode::kReturn ? 1 : 0; | 
| @@ -160,7 +158,6 @@ int Bytecodes::NumberOfOperands(Bytecode bytecode) { | 
| return 0; | 
| } | 
|  | 
| - | 
| // static | 
| int Bytecodes::NumberOfRegisterOperands(Bytecode bytecode) { | 
| DCHECK(bytecode <= Bytecode::kLast); | 
| @@ -277,6 +274,34 @@ bool Bytecodes::IsAccumulatorLoadWithoutEffects(Bytecode bytecode) { | 
| } | 
|  | 
| // static | 
| +bool Bytecodes::IsJumpWithoutEffects(Bytecode bytecode) { | 
| +  return IsJump(bytecode) && !IsJumpIfToBoolean(bytecode); | 
| +} | 
| + | 
| +// static | 
| +bool Bytecodes::IsRegisterLoadWithoutEffects(Bytecode bytecode) { | 
| +  switch (bytecode) { | 
| +    case Bytecode::kMov: | 
| +    case Bytecode::kPopContext: | 
| +    case Bytecode::kPushContext: | 
| +    case Bytecode::kStar: | 
| +    case Bytecode::kLdrUndefined: | 
| +      return true; | 
| +    default: | 
| +      return false; | 
| +  } | 
| +} | 
| + | 
| +// static | 
| +bool Bytecodes::IsWithoutExternalSideEffects(Bytecode bytecode) { | 
| +  // These bytecodes only manipulate interpreter frame state and will | 
| +  // never throw. | 
| +  return (IsAccumulatorLoadWithoutEffects(bytecode) || | 
| +          IsRegisterLoadWithoutEffects(bytecode) || | 
| +          bytecode == Bytecode::kNop || IsJumpWithoutEffects(bytecode)); | 
| +} | 
| + | 
| +// static | 
| OperandType Bytecodes::GetOperandType(Bytecode bytecode, int i) { | 
| DCHECK_LE(bytecode, Bytecode::kLast); | 
| DCHECK_LT(i, NumberOfOperands(bytecode)); | 
| @@ -488,15 +513,6 @@ bool Bytecodes::IsPrefixScalingBytecode(Bytecode bytecode) { | 
| } | 
|  | 
| // static | 
| -bool Bytecodes::IsWithoutExternalSideEffects(Bytecode bytecode) { | 
| -  // These bytecodes only manipulate interpreter frame state and will | 
| -  // never throw. | 
| -  return (IsAccumulatorLoadWithoutEffects(bytecode) || IsLdarOrStar(bytecode) || | 
| -          bytecode == Bytecode::kMov || bytecode == Bytecode::kNop || | 
| -          IsJump(bytecode)); | 
| -} | 
| - | 
| -// static | 
| bool Bytecodes::IsJumpOrReturn(Bytecode bytecode) { | 
| return bytecode == Bytecode::kReturn || IsJump(bytecode); | 
| } | 
|  |