_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer6VarRefEEEPT_PS1_:
  551|  58.4k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  58.4k|    static_assert(
  553|  58.4k|        InternalHelper<T>::is_arena_constructable::value,
  554|  58.4k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  58.4k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 58.4k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  58.4k|      return InternalHelper<T>::New();
  559|  58.4k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  58.4k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer6VarRefEE3NewEv:
  487|  58.4k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  58.4k|      return new T(nullptr);
  489|  58.4k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer7ArrTypeEEEPT_PS1_:
  551|  46.7k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  46.7k|    static_assert(
  553|  46.7k|        InternalHelper<T>::is_arena_constructable::value,
  554|  46.7k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  46.7k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 46.7k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  46.7k|      return InternalHelper<T>::New();
  559|  46.7k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  46.7k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer7ArrTypeEE3NewEv:
  487|  46.7k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  46.7k|      return new T(nullptr);
  489|  46.7k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer6KVPairEEEPT_PS1_:
  551|   164k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|   164k|    static_assert(
  553|   164k|        InternalHelper<T>::is_arena_constructable::value,
  554|   164k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|   164k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 164k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|   164k|      return InternalHelper<T>::New();
  559|   164k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|   164k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer6KVPairEE3NewEv:
  487|   164k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|   164k|      return new T(nullptr);
  489|   164k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer8HashTypeEEEPT_PS1_:
  551|  8.00k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  8.00k|    static_assert(
  553|  8.00k|        InternalHelper<T>::is_arena_constructable::value,
  554|  8.00k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  8.00k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 8.00k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  8.00k|      return InternalHelper<T>::New();
  559|  8.00k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  8.00k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer8HashTypeEE3NewEv:
  487|  8.00k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  8.00k|      return new T(nullptr);
  489|  8.00k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer9MathConstEEEPT_PS1_:
  551|    785|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|    785|    static_assert(
  553|    785|        InternalHelper<T>::is_arena_constructable::value,
  554|    785|        "CreateMessage can only construct types that are ArenaConstructable");
  555|    785|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 785, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|    785|      return InternalHelper<T>::New();
  559|    785|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|    785|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer9MathConstEE3NewEv:
  487|    785|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|    785|      return new T(nullptr);
  489|    785|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer5ConstEEEPT_PS1_:
  551|   337k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|   337k|    static_assert(
  553|   337k|        InternalHelper<T>::is_arena_constructable::value,
  554|   337k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|   337k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 337k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|   337k|      return InternalHelper<T>::New();
  559|   337k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|   337k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer5ConstEE3NewEv:
  487|   337k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|   337k|      return new T(nullptr);
  489|   337k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer8BinaryOpEEEPT_PS1_:
  551|  95.7k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  95.7k|    static_assert(
  553|  95.7k|        InternalHelper<T>::is_arena_constructable::value,
  554|  95.7k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  95.7k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 95.7k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  95.7k|      return InternalHelper<T>::New();
  559|  95.7k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  95.7k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer8BinaryOpEE3NewEv:
  487|  95.7k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  95.7k|      return new T(nullptr);
  489|  95.7k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer6RvalueEEEPT_PS1_:
  551|   398k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|   398k|    static_assert(
  553|   398k|        InternalHelper<T>::is_arena_constructable::value,
  554|   398k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|   398k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 398k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|   398k|      return InternalHelper<T>::New();
  559|   398k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|   398k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer6RvalueEE3NewEv:
  487|   398k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|   398k|      return new T(nullptr);
  489|   398k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer19AssignmentStatementEEEPT_PS1_:
  551|   120k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|   120k|    static_assert(
  553|   120k|        InternalHelper<T>::is_arena_constructable::value,
  554|   120k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|   120k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 120k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|   120k|      return InternalHelper<T>::New();
  559|   120k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|   120k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer19AssignmentStatementEE3NewEv:
  487|   120k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|   120k|      return new T(nullptr);
  489|   120k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer6IfElseEEEPT_PS1_:
  551|  18.7k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  18.7k|    static_assert(
  553|  18.7k|        InternalHelper<T>::is_arena_constructable::value,
  554|  18.7k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  18.7k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 18.7k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  18.7k|      return InternalHelper<T>::New();
  559|  18.7k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  18.7k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer6IfElseEE3NewEv:
  487|  18.7k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  18.7k|      return new T(nullptr);
  489|  18.7k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer7TernaryEEEPT_PS1_:
  551|  6.62k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  6.62k|    static_assert(
  553|  6.62k|        InternalHelper<T>::is_arena_constructable::value,
  554|  6.62k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  6.62k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 6.62k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  6.62k|      return InternalHelper<T>::New();
  559|  6.62k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  6.62k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer7TernaryEE3NewEv:
  487|  6.62k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  6.62k|      return new T(nullptr);
  489|  6.62k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer11ObjectSpaceEEEPT_PS1_:
  551|  8.00k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  8.00k|    static_assert(
  553|  8.00k|        InternalHelper<T>::is_arena_constructable::value,
  554|  8.00k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  8.00k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 8.00k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  8.00k|      return InternalHelper<T>::New();
  559|  8.00k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  8.00k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer11ObjectSpaceEE3NewEv:
  487|  8.00k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  8.00k|      return new T(nullptr);
  489|  8.00k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer4TimeEEEPT_PS1_:
  551|  6.52k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  6.52k|    static_assert(
  553|  6.52k|        InternalHelper<T>::is_arena_constructable::value,
  554|  6.52k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  6.52k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 6.52k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  6.52k|      return InternalHelper<T>::New();
  559|  6.52k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  6.52k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer4TimeEE3NewEv:
  487|  6.52k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  6.52k|      return new T(nullptr);
  489|  6.52k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer5ArrayEEEPT_PS1_:
  551|  46.7k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  46.7k|    static_assert(
  553|  46.7k|        InternalHelper<T>::is_arena_constructable::value,
  554|  46.7k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  46.7k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 46.7k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  46.7k|      return InternalHelper<T>::New();
  559|  46.7k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  46.7k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer5ArrayEE3NewEv:
  487|  46.7k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  46.7k|      return new T(nullptr);
  489|  46.7k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer8MathTypeEEEPT_PS1_:
  551|  4.82k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  4.82k|    static_assert(
  553|  4.82k|        InternalHelper<T>::is_arena_constructable::value,
  554|  4.82k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  4.82k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 4.82k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  4.82k|      return InternalHelper<T>::New();
  559|  4.82k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  4.82k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer8MathTypeEE3NewEv:
  487|  4.82k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  4.82k|      return new T(nullptr);
  489|  4.82k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer7MathOpsEEEPT_PS1_:
  551|  4.82k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  4.82k|    static_assert(
  553|  4.82k|        InternalHelper<T>::is_arena_constructable::value,
  554|  4.82k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  4.82k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 4.82k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  4.82k|      return InternalHelper<T>::New();
  559|  4.82k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  4.82k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer7MathOpsEE3NewEv:
  487|  4.82k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  4.82k|      return new T(nullptr);
  489|  4.82k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer12BuiltinFuncsEEEPT_PS1_:
  551|  84.6k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  84.6k|    static_assert(
  553|  84.6k|        InternalHelper<T>::is_arena_constructable::value,
  554|  84.6k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  84.6k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 84.6k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  84.6k|      return InternalHelper<T>::New();
  559|  84.6k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  84.6k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer12BuiltinFuncsEE3NewEv:
  487|  84.6k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  84.6k|      return new T(nullptr);
  489|  84.6k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer9StatementEEEPT_PS1_:
  551|   343k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|   343k|    static_assert(
  553|   343k|        InternalHelper<T>::is_arena_constructable::value,
  554|   343k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|   343k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 343k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|   343k|      return InternalHelper<T>::New();
  559|   343k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|   343k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer9StatementEE3NewEv:
  487|   343k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|   343k|      return new T(nullptr);
  489|   343k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN11ruby_fuzzer12StatementSeqEEEPT_PS1_:
  551|  57.5k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  57.5k|    static_assert(
  553|  57.5k|        InternalHelper<T>::is_arena_constructable::value,
  554|  57.5k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  57.5k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 57.5k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  57.5k|      return InternalHelper<T>::New();
  559|  57.5k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  57.5k|  }
_ZN6google8protobuf5Arena14InternalHelperIN11ruby_fuzzer12StatementSeqEE3NewEv:
  487|  57.5k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  57.5k|      return new T(nullptr);
  489|  57.5k|    }

_ZN6google8protobuf8internal15TaggedStringPtrC2EPNS1_21ExplicitlyConstructedINSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEELm8EEE:
  133|   328k|      : ptr_(ptr) {}
_ZNK6google8protobuf8internal15TaggedStringPtr3GetEv:
  189|   328k|  inline std::string* Get() const {
  190|   328k|    return reinterpret_cast<std::string*>(as_int() & ~kMask);
  191|   328k|  }
_ZNK6google8protobuf8internal15TaggedStringPtr6as_intEv:
  210|   328k|  uintptr_t as_int() const { return reinterpret_cast<uintptr_t>(ptr_); }
_ZNK6google8protobuf8internal14ArenaStringPtr3GetEv:
  299|   328k|  PROTOBUF_NDEBUG_INLINE const std::string& Get() const {
  300|       |    // Unconditionally mask away the tag.
  301|   328k|    return *tagged_ptr_.Get();
  302|   328k|  }
_ZN6google8protobuf8internal14ArenaStringPtr11InitDefaultEv:
  395|   328k|inline void ArenaStringPtr::InitDefault() {
  396|   328k|  tagged_ptr_ = TaggedStringPtr(&fixed_address_empty_string);
  397|   328k|}

_ZN6google8protobuf8internal10CachedSizeC2Ev:
  198|  1.81M|  constexpr CachedSize() noexcept : atom_(Scalar{}) {}

_ZN6google8protobuf8internal7HasBitsILm1EEixEi:
   57|    952|  PROTOBUF_NDEBUG_INLINE uint32_t& operator[](int index) {
   58|    952|    return has_bits_[index];
   59|    952|  }
_ZN6google8protobuf8internal7HasBitsILm1EEC2Ev:
   51|   531k|  PROTOBUF_NDEBUG_INLINE constexpr HasBits() : has_bits_{} {}
_ZN6google8protobuf8internal7HasBitsILm1EE5ClearEv:
   53|    952|  PROTOBUF_NDEBUG_INLINE void Clear() {
   54|    952|    memset(has_bits_, 0, sizeof(has_bits_));
   55|    952|  }

_ZN6google8protobuf7MessageC2EPNS0_5ArenaE:
  414|  1.81M|  inline explicit Message(Arena* arena) : MessageLite(arena) {}

_ZN6google8protobuf11MessageLiteC2EPNS0_5ArenaE:
  468|  1.81M|  inline explicit MessageLite(Arena* arena) : _internal_metadata_(arena) {}
_ZNK6google8protobuf11MessageLite21GetArenaForAllocationEv:
  479|   504k|  Arena* GetArenaForAllocation() const { return _internal_metadata_.arena(); }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer6VarRefEEEPT_PNS0_5ArenaE:
  464|  58.4k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  58.4k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  58.4k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer7ArrTypeEEEPT_PNS0_5ArenaE:
  464|  46.7k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  46.7k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  46.7k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer6KVPairEEEPT_PNS0_5ArenaE:
  464|   164k|  static T* CreateMaybeMessage(Arena* arena) {
  465|   164k|    return Arena::CreateMaybeMessage<T>(arena);
  466|   164k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer8HashTypeEEEPT_PNS0_5ArenaE:
  464|  8.00k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  8.00k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  8.00k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer9MathConstEEEPT_PNS0_5ArenaE:
  464|    785|  static T* CreateMaybeMessage(Arena* arena) {
  465|    785|    return Arena::CreateMaybeMessage<T>(arena);
  466|    785|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer5ConstEEEPT_PNS0_5ArenaE:
  464|   337k|  static T* CreateMaybeMessage(Arena* arena) {
  465|   337k|    return Arena::CreateMaybeMessage<T>(arena);
  466|   337k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer8BinaryOpEEEPT_PNS0_5ArenaE:
  464|  95.7k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  95.7k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  95.7k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer6RvalueEEEPT_PNS0_5ArenaE:
  464|   398k|  static T* CreateMaybeMessage(Arena* arena) {
  465|   398k|    return Arena::CreateMaybeMessage<T>(arena);
  466|   398k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer19AssignmentStatementEEEPT_PNS0_5ArenaE:
  464|   120k|  static T* CreateMaybeMessage(Arena* arena) {
  465|   120k|    return Arena::CreateMaybeMessage<T>(arena);
  466|   120k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer6IfElseEEEPT_PNS0_5ArenaE:
  464|  18.7k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  18.7k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  18.7k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer7TernaryEEEPT_PNS0_5ArenaE:
  464|  6.62k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  6.62k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  6.62k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer11ObjectSpaceEEEPT_PNS0_5ArenaE:
  464|  8.00k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  8.00k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  8.00k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer4TimeEEEPT_PNS0_5ArenaE:
  464|  6.52k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  6.52k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  6.52k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer5ArrayEEEPT_PNS0_5ArenaE:
  464|  46.7k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  46.7k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  46.7k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer8MathTypeEEEPT_PNS0_5ArenaE:
  464|  4.82k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  4.82k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  4.82k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer7MathOpsEEEPT_PNS0_5ArenaE:
  464|  4.82k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  4.82k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  4.82k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer12BuiltinFuncsEEEPT_PNS0_5ArenaE:
  464|  84.6k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  84.6k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  84.6k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer9StatementEEEPT_PNS0_5ArenaE:
  464|   343k|  static T* CreateMaybeMessage(Arena* arena) {
  465|   343k|    return Arena::CreateMaybeMessage<T>(arena);
  466|   343k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN11ruby_fuzzer12StatementSeqEEEPT_PNS0_5ArenaE:
  464|  57.5k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  57.5k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  57.5k|  }
_ZN6google8protobuf11MessageLiteD2Ev:
  175|  1.81M|  virtual ~MessageLite() = default;

_ZN6google8protobuf8internal16InternalMetadataC2EPNS0_5ArenaE:
   70|  1.81M|  explicit InternalMetadata(Arena* arena) {
   71|  1.81M|    ptr_ = reinterpret_cast<intptr_t>(arena);
   72|  1.81M|  }
_ZNK6google8protobuf8internal16InternalMetadata5arenaEv:
   98|   504k|  PROTOBUF_NDEBUG_INLINE Arena* arena() const {
   99|   504k|    if (PROTOBUF_PREDICT_FALSE(have_unknown_fields())) {
  ------------------
  |  |  538|   504k|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (538:36): [True: 0, False: 504k]
  |  |  |  Branch (538:54): [Folded - Ignored]
  |  |  |  Branch (538:63): [True: 0, False: 504k]
  |  |  ------------------
  ------------------
  100|      0|      return PtrValue<ContainerBase>()->arena;
  101|   504k|    } else {
  102|   504k|      return PtrValue<Arena>();
  103|   504k|    }
  104|   504k|  }
_ZNK6google8protobuf8internal16InternalMetadata19have_unknown_fieldsEv:
  106|  2.31M|  PROTOBUF_NDEBUG_INLINE bool have_unknown_fields() const {
  107|  2.31M|    return HasUnknownFieldsTag();
  108|  2.31M|  }
_ZNK6google8protobuf8internal16InternalMetadata19HasUnknownFieldsTagEv:
  173|  2.31M|  PROTOBUF_ALWAYS_INLINE bool HasUnknownFieldsTag() const {
  174|  2.31M|    return ptr_ & kUnknownFieldsTagMask;
  175|  2.31M|  }
_ZNK6google8protobuf8internal16InternalMetadata8PtrValueINS0_5ArenaEEEPT_v:
  178|  2.31M|  U* PtrValue() const {
  179|  2.31M|    return reinterpret_cast<U*>(ptr_ & kPtrValueMask);
  180|  2.31M|  }
_ZN6google8protobuf8internal16InternalMetadata9MergeFromINS0_15UnknownFieldSetEEEvRKS2_:
  151|     49|  PROTOBUF_NDEBUG_INLINE void MergeFrom(const InternalMetadata& other) {
  152|     49|    if (other.have_unknown_fields()) {
  ------------------
  |  Branch (152:9): [True: 0, False: 49]
  ------------------
  153|      0|      DoMergeFrom<T>(other.unknown_fields<T>(nullptr));
  154|      0|    }
  155|     49|  }
_ZN6google8protobuf8internal16InternalMetadata17DeleteReturnArenaINS0_15UnknownFieldSetEEEPNS0_5ArenaEv:
   90|  1.81M|  Arena* DeleteReturnArena() {
   91|  1.81M|    if (have_unknown_fields()) {
  ------------------
  |  Branch (91:9): [True: 0, False: 1.81M]
  ------------------
   92|      0|      return DeleteOutOfLineHelper<T>();
   93|  1.81M|    } else {
   94|  1.81M|      return PtrValue<Arena>();
   95|  1.81M|    }
   96|  1.81M|  }
_ZN6google8protobuf8internal16InternalMetadata5ClearINS0_15UnknownFieldSetEEEvv:
  158|  1.05k|  PROTOBUF_NDEBUG_INLINE void Clear() {
  159|  1.05k|    if (have_unknown_fields()) {
  ------------------
  |  Branch (159:9): [True: 0, False: 1.05k]
  ------------------
  160|      0|      DoClear<T>();
  161|      0|    }
  162|  1.05k|  }

_ZN6google8protobuf8internal20RepeatedPtrFieldBaseC2EPNS0_5ArenaE:
  169|   112k|      : arena_(arena), current_size_(0), total_size_(0), rep_(nullptr) {}
_ZN6google8protobuf8internal20RepeatedPtrFieldBaseD2Ev:
  174|   112k|  ~RepeatedPtrFieldBase() {
  175|       |#ifndef NDEBUG
  176|       |    // Try to trigger segfault / asan failure in non-opt builds. If arena_
  177|       |    // lifetime has ended before the destructor.
  178|       |    if (arena_) (void)arena_->SpaceAllocated();
  179|       |#endif
  180|   112k|  }
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase4sizeEv:
  183|   151k|  int size() const { return current_size_; }
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase12NeedsDestroyEv:
  261|   112k|  bool NeedsDestroy() const { return rep_ != nullptr && arena_ == nullptr; }
  ------------------
  |  Branch (261:38): [True: 30.3k, False: 82.0k]
  |  Branch (261:57): [True: 30.3k, False: 0]
  ------------------
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase8raw_dataEv:
  372|  60.6k|  void* const* raw_data() const { return rep_ ? rep_->elements : nullptr; }
  ------------------
  |  Branch (372:42): [True: 60.6k, False: 0]
  ------------------
_ZNK6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer5ConstEE4sizeEv:
 1329|  61.3k|inline int RepeatedPtrField<Element>::size() const {
 1330|  61.3k|  return RepeatedPtrFieldBase::size();
 1331|  61.3k|}
_ZN6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer5ConstEE5ClearEv:
 1484|     16|inline void RepeatedPtrField<Element>::Clear() {
 1485|     16|  RepeatedPtrFieldBase::Clear<TypeHandler>();
 1486|     16|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase5ClearINS0_16RepeatedPtrFieldIN11ruby_fuzzer5ConstEE11TypeHandlerEEEvv:
  283|     16|  void Clear() {
  284|     16|    const int n = current_size_;
  285|     16|    ABSL_DCHECK_GE(n, 0);
  ------------------
  |  |   78|     16|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|     16|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     16|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     16|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  286|     16|    if (n > 0) {
  ------------------
  |  Branch (286:9): [True: 0, False: 16]
  ------------------
  287|      0|      ClearNonEmpty<TypeHandler>();
  288|      0|    }
  289|     16|  }
_ZNK6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer6KVPairEE4sizeEv:
 1329|  12.1k|inline int RepeatedPtrField<Element>::size() const {
 1330|  12.1k|  return RepeatedPtrFieldBase::size();
 1331|  12.1k|}
_ZNK6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer9StatementEE4sizeEv:
 1329|  78.5k|inline int RepeatedPtrField<Element>::size() const {
 1330|  78.5k|  return RepeatedPtrFieldBase::size();
 1331|  78.5k|}
_ZN6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer5ConstEEC2EPNS0_5ArenaE:
 1246|  46.7k|    : RepeatedPtrFieldBase(arena) {
 1247|  46.7k|  StaticValidityCheck();
 1248|  46.7k|}
_ZN6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer5ConstEE19StaticValidityCheckEv:
  913|  93.5k|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|  93.5k|    static_assert(
  915|  93.5k|        absl::disjunction<
  916|  93.5k|            internal::is_supported_string_type<Element>,
  917|  93.5k|            internal::is_supported_message_type<Element>>::value,
  918|  93.5k|        "We only support string and Message types in RepeatedPtrField.");
  919|  93.5k|  }
_ZN6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer5ConstEED2Ev:
 1266|  46.7k|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1267|  46.7k|  StaticValidityCheck();
 1268|       |#ifdef __cpp_if_constexpr
 1269|       |  if constexpr (std::is_base_of<MessageLite, Element>::value) {
 1270|       |#else
 1271|  46.7k|  if (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1271:7): [Folded - Ignored]
  ------------------
 1272|  46.7k|#endif
 1273|  46.7k|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1273:9): [True: 7.26k, False: 39.5k]
  ------------------
 1274|  46.7k|  } else {
 1275|      0|    Destroy<TypeHandler>();
 1276|      0|  }
 1277|  46.7k|}
_ZN6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer6KVPairEEC2EPNS0_5ArenaE:
 1246|  8.00k|    : RepeatedPtrFieldBase(arena) {
 1247|  8.00k|  StaticValidityCheck();
 1248|  8.00k|}
_ZN6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer6KVPairEE19StaticValidityCheckEv:
  913|  16.0k|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|  16.0k|    static_assert(
  915|  16.0k|        absl::disjunction<
  916|  16.0k|            internal::is_supported_string_type<Element>,
  917|  16.0k|            internal::is_supported_message_type<Element>>::value,
  918|  16.0k|        "We only support string and Message types in RepeatedPtrField.");
  919|  16.0k|  }
_ZN6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer6KVPairEED2Ev:
 1266|  8.00k|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1267|  8.00k|  StaticValidityCheck();
 1268|       |#ifdef __cpp_if_constexpr
 1269|       |  if constexpr (std::is_base_of<MessageLite, Element>::value) {
 1270|       |#else
 1271|  8.00k|  if (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1271:7): [Folded - Ignored]
  ------------------
 1272|  8.00k|#endif
 1273|  8.00k|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1273:9): [True: 2.08k, False: 5.92k]
  ------------------
 1274|  8.00k|  } else {
 1275|      0|    Destroy<TypeHandler>();
 1276|      0|  }
 1277|  8.00k|}
_ZN6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer9StatementEEC2EPNS0_5ArenaE:
 1246|  57.5k|    : RepeatedPtrFieldBase(arena) {
 1247|  57.5k|  StaticValidityCheck();
 1248|  57.5k|}
_ZN6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer9StatementEE19StaticValidityCheckEv:
  913|   115k|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|   115k|    static_assert(
  915|   115k|        absl::disjunction<
  916|   115k|            internal::is_supported_string_type<Element>,
  917|   115k|            internal::is_supported_message_type<Element>>::value,
  918|   115k|        "We only support string and Message types in RepeatedPtrField.");
  919|   115k|  }
_ZN6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer9StatementEED2Ev:
 1266|  57.5k|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1267|  57.5k|  StaticValidityCheck();
 1268|       |#ifdef __cpp_if_constexpr
 1269|       |  if constexpr (std::is_base_of<MessageLite, Element>::value) {
 1270|       |#else
 1271|  57.5k|  if (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1271:7): [Folded - Ignored]
  ------------------
 1272|  57.5k|#endif
 1273|  57.5k|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1273:9): [True: 20.9k, False: 36.5k]
  ------------------
 1274|  57.5k|  } else {
 1275|      0|    Destroy<TypeHandler>();
 1276|      0|  }
 1277|  57.5k|}
_ZNK6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer5ConstEE5beginEv:
 1845|  7.26k|RepeatedPtrField<Element>::begin() const {
 1846|  7.26k|  return iterator(raw_data());
 1847|  7.26k|}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIN11ruby_fuzzer5ConstEEC2EPKPv:
 1643|  14.5k|  explicit RepeatedPtrIterator(void* const* it) : it_(it) {}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKN11ruby_fuzzer5ConstEEC2IS4_LPv0EEERKNS2_IT_EE:
 1651|  14.5k|      : it_(other.it_) {}
_ZNK6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer5ConstEE3endEv:
 1860|  7.26k|RepeatedPtrField<Element>::end() const {
 1861|  7.26k|  return iterator(raw_data() + size());
 1862|  7.26k|}
_ZN6google8protobuf8internalneERKNS1_19RepeatedPtrIteratorIKN11ruby_fuzzer5ConstEEES8_:
 1673|   312k|  friend bool operator!=(const iterator& x, const iterator& y) {
 1674|   312k|    return x.it_ != y.it_;
 1675|   312k|  }
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKN11ruby_fuzzer5ConstEEppEv:
 1658|   305k|  iterator& operator++() {
 1659|   305k|    ++it_;
 1660|   305k|    return *this;
 1661|   305k|  }
_ZNK6google8protobuf8internal19RepeatedPtrIteratorIKN11ruby_fuzzer5ConstEEdeEv:
 1654|   305k|  reference operator*() const { return *reinterpret_cast<Element*>(*it_); }
_ZN6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer5ConstEE9MergeFromERKS4_:
 1490|      8|    const RepeatedPtrField& other) {
 1491|      8|  RepeatedPtrFieldBase::MergeFrom<TypeHandler>(other);
 1492|      8|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase9MergeFromINS0_16RepeatedPtrFieldIN11ruby_fuzzer5ConstEE11TypeHandlerEEEvRKS2_:
  292|      8|  void MergeFrom(const RepeatedPtrFieldBase& other) {
  293|       |    // To avoid unnecessary code duplication and reduce binary size, we use a
  294|       |    // layered approach to implementing MergeFrom(). The toplevel method is
  295|       |    // templated, so we get a small thunk per concrete message type in the
  296|       |    // binary. This calls a shared implementation with most of the logic,
  297|       |    // passing a function pointer to another type-specific piece of code that
  298|       |    // calls the object-allocate and merge handlers.
  299|      8|    ABSL_DCHECK_NE(&other, this);
  ------------------
  |  |   72|      8|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|      8|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      8|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      8|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  300|      8|    if (other.current_size_ == 0) return;
  ------------------
  |  Branch (300:9): [True: 8, False: 0]
  ------------------
  301|      0|    MergeFromInternal(other,
  302|      0|                      &RepeatedPtrFieldBase::MergeFromInnerLoop<TypeHandler>);
  303|      0|  }
_ZNK6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer6KVPairEE5beginEv:
 1845|  2.08k|RepeatedPtrField<Element>::begin() const {
 1846|  2.08k|  return iterator(raw_data());
 1847|  2.08k|}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIN11ruby_fuzzer6KVPairEEC2EPKPv:
 1643|  4.16k|  explicit RepeatedPtrIterator(void* const* it) : it_(it) {}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKN11ruby_fuzzer6KVPairEEC2IS4_LPv0EEERKNS2_IT_EE:
 1651|  4.16k|      : it_(other.it_) {}
_ZNK6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer6KVPairEE3endEv:
 1860|  2.08k|RepeatedPtrField<Element>::end() const {
 1861|  2.08k|  return iterator(raw_data() + size());
 1862|  2.08k|}
_ZN6google8protobuf8internalneERKNS1_19RepeatedPtrIteratorIKN11ruby_fuzzer6KVPairEEES8_:
 1673|   166k|  friend bool operator!=(const iterator& x, const iterator& y) {
 1674|   166k|    return x.it_ != y.it_;
 1675|   166k|  }
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKN11ruby_fuzzer6KVPairEEppEv:
 1658|   164k|  iterator& operator++() {
 1659|   164k|    ++it_;
 1660|   164k|    return *this;
 1661|   164k|  }
_ZNK6google8protobuf8internal19RepeatedPtrIteratorIKN11ruby_fuzzer6KVPairEEdeEv:
 1654|   164k|  reference operator*() const { return *reinterpret_cast<Element*>(*it_); }
_ZNK6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer9StatementEE5beginEv:
 1845|  20.9k|RepeatedPtrField<Element>::begin() const {
 1846|  20.9k|  return iterator(raw_data());
 1847|  20.9k|}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIN11ruby_fuzzer9StatementEEC2EPKPv:
 1643|  41.9k|  explicit RepeatedPtrIterator(void* const* it) : it_(it) {}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKN11ruby_fuzzer9StatementEEC2IS4_LPv0EEERKNS2_IT_EE:
 1651|  41.9k|      : it_(other.it_) {}
_ZNK6google8protobuf16RepeatedPtrFieldIN11ruby_fuzzer9StatementEE3endEv:
 1860|  20.9k|RepeatedPtrField<Element>::end() const {
 1861|  20.9k|  return iterator(raw_data() + size());
 1862|  20.9k|}
_ZN6google8protobuf8internalneERKNS1_19RepeatedPtrIteratorIKN11ruby_fuzzer9StatementEEES8_:
 1673|   364k|  friend bool operator!=(const iterator& x, const iterator& y) {
 1674|   364k|    return x.it_ != y.it_;
 1675|   364k|  }
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKN11ruby_fuzzer9StatementEEppEv:
 1658|   343k|  iterator& operator++() {
 1659|   343k|    ++it_;
 1660|   343k|    return *this;
 1661|   343k|  }
_ZNK6google8protobuf8internal19RepeatedPtrIteratorIKN11ruby_fuzzer9StatementEEdeEv:
 1654|   343k|  reference operator*() const { return *reinterpret_cast<Element*>(*it_); }

mrb_init_mrbgems:
  165|    476|mrb_init_mrbgems(mrb_state *mrb) {
  166|    476|  int ai = mrb_gc_arena_save(mrb);
  ------------------
  |  | 1306|    476|#define mrb_gc_arena_save(mrb) ((mrb)->gc.arena_idx)
  ------------------
  167|  18.5k|  for (int i = 0; i < NUM_GEMS; i++) {
  ------------------
  |  |  138|  18.5k|#define NUM_GEMS ((int)(sizeof(gem_funcs) / sizeof(gem_funcs[0])))
  ------------------
  |  Branch (167:19): [True: 18.0k, False: 476]
  ------------------
  168|  18.0k|    gem_funcs[i].init(mrb);
  169|  18.0k|    mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|  18.0k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
  170|  18.0k|    mrb_vm_ci_env_clear(mrb, mrb->c->cibase);
  171|  18.0k|    if (mrb->exc) {
  ------------------
  |  Branch (171:9): [True: 0, False: 18.0k]
  ------------------
  172|      0|      mrb_exc_raise(mrb, mrb_obj_value(mrb->exc));
  173|      0|    }
  174|  18.0k|  }
  175|    476|  mrb_state_atexit(mrb, mrb_final_mrbgems);
  176|    476|}
gem_init.c:mrb_final_mrbgems:
  156|    476|mrb_final_mrbgems(mrb_state *mrb) {
  157|    476|  struct final_mrbgems a = { NUM_GEMS - 1, mrb_gc_arena_save(mrb) };
  ------------------
  |  |  138|    476|#define NUM_GEMS ((int)(sizeof(gem_funcs) / sizeof(gem_funcs[0])))
  ------------------
                struct final_mrbgems a = { NUM_GEMS - 1, mrb_gc_arena_save(mrb) };
  ------------------
  |  | 1306|    476|#define mrb_gc_arena_save(mrb) ((mrb)->gc.arena_idx)
  ------------------
  158|    952|  for (; a.i >= 0; a.i--) {
  ------------------
  |  Branch (158:10): [True: 476, False: 476]
  ------------------
  159|    476|    mrb_protect_error(mrb, final_mrbgems_body, &a, NULL);
  160|    476|    mrb_gc_arena_restore(mrb, a.ai);
  ------------------
  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
  161|    476|  }
  162|    476|}
gem_init.c:final_mrbgems_body:
  146|    476|final_mrbgems_body(mrb_state *mrb, void *ud) {
  147|    476|  struct final_mrbgems *p = (struct final_mrbgems*)ud;
  148|  18.5k|  for (; p->i >= 0; p->i--) {
  ------------------
  |  Branch (148:10): [True: 18.0k, False: 476]
  ------------------
  149|  18.0k|    gem_funcs[p->i].final(mrb);
  150|  18.0k|    mrb_gc_arena_restore(mrb, p->ai);
  ------------------
  |  | 1307|  18.0k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
  151|  18.0k|  }
  152|    476|  return mrb_nil_value();
  153|    476|}

GENERATED_TMP_mrb_mruby_array_ext_gem_init:
  902|    476|void GENERATED_TMP_mrb_mruby_array_ext_gem_init(mrb_state *mrb) {
  903|    476|  gem_mrblib_mruby_array_ext_proc_init_syms(mrb);
  904|    476|  mrb_mruby_array_ext_gem_init(mrb);
  905|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_array_ext_proc);
  906|    476|}
GENERATED_TMP_mrb_mruby_array_ext_gem_final:
  908|    476|void GENERATED_TMP_mrb_mruby_array_ext_gem_final(mrb_state *mrb) {
  909|    476|  mrb_mruby_array_ext_gem_final(mrb);
  910|    476|}
gem_init.c:gem_mrblib_mruby_array_ext_proc_init_syms:
  897|    476|{
  898|    476|}

GENERATED_TMP_mrb_mruby_binding_gem_init:
   15|    476|void GENERATED_TMP_mrb_mruby_binding_gem_init(mrb_state *mrb) {
   16|    476|  mrb_mruby_binding_gem_init(mrb);
   17|    476|}
GENERATED_TMP_mrb_mruby_binding_gem_final:
   19|    476|void GENERATED_TMP_mrb_mruby_binding_gem_final(mrb_state *mrb) {
   20|    476|  mrb_mruby_binding_gem_final(mrb);
   21|    476|}

GENERATED_TMP_mrb_mruby_class_ext_gem_init:
  142|    476|void GENERATED_TMP_mrb_mruby_class_ext_gem_init(mrb_state *mrb) {
  143|    476|  gem_mrblib_mruby_class_ext_proc_init_syms(mrb);
  144|    476|  mrb_mruby_class_ext_gem_init(mrb);
  145|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_class_ext_proc);
  146|    476|}
GENERATED_TMP_mrb_mruby_class_ext_gem_final:
  148|    476|void GENERATED_TMP_mrb_mruby_class_ext_gem_final(mrb_state *mrb) {
  149|    476|  mrb_mruby_class_ext_gem_final(mrb);
  150|    476|}
gem_init.c:gem_mrblib_mruby_class_ext_proc_init_syms:
  137|    476|{
  138|    476|}

GENERATED_TMP_mrb_mruby_cmath_gem_init:
   15|    476|void GENERATED_TMP_mrb_mruby_cmath_gem_init(mrb_state *mrb) {
   16|    476|  mrb_mruby_cmath_gem_init(mrb);
   17|    476|}
GENERATED_TMP_mrb_mruby_cmath_gem_final:
   19|    476|void GENERATED_TMP_mrb_mruby_cmath_gem_final(mrb_state *mrb) {
   20|    476|  mrb_mruby_cmath_gem_final(mrb);
   21|    476|}

GENERATED_TMP_mrb_mruby_compar_ext_gem_init:
  101|    476|void GENERATED_TMP_mrb_mruby_compar_ext_gem_init(mrb_state *mrb) {
  102|    476|  gem_mrblib_mruby_compar_ext_proc_init_syms(mrb);
  103|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_compar_ext_proc);
  104|    476|}
GENERATED_TMP_mrb_mruby_compar_ext_gem_final:
  106|    476|void GENERATED_TMP_mrb_mruby_compar_ext_gem_final(mrb_state *mrb) {
  107|    476|}
gem_init.c:gem_mrblib_mruby_compar_ext_proc_init_syms:
   96|    476|{
   97|    476|}

GENERATED_TMP_mrb_mruby_complex_gem_init:
  345|    476|void GENERATED_TMP_mrb_mruby_complex_gem_init(mrb_state *mrb) {
  346|    476|  gem_mrblib_mruby_complex_proc_init_syms(mrb);
  347|    476|  mrb_mruby_complex_gem_init(mrb);
  348|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_complex_proc);
  349|    476|}
GENERATED_TMP_mrb_mruby_complex_gem_final:
  351|    476|void GENERATED_TMP_mrb_mruby_complex_gem_final(mrb_state *mrb) {
  352|    476|  mrb_mruby_complex_gem_final(mrb);
  353|    476|}
gem_init.c:gem_mrblib_mruby_complex_proc_init_syms:
  340|    476|{
  341|    476|}

GENERATED_TMP_mrb_mruby_data_gem_init:
   15|    476|void GENERATED_TMP_mrb_mruby_data_gem_init(mrb_state *mrb) {
   16|    476|  mrb_mruby_data_gem_init(mrb);
   17|    476|}
GENERATED_TMP_mrb_mruby_data_gem_final:
   19|    476|void GENERATED_TMP_mrb_mruby_data_gem_final(mrb_state *mrb) {
   20|    476|  mrb_mruby_data_gem_final(mrb);
   21|    476|}

GENERATED_TMP_mrb_mruby_dir_gem_init:
  183|    476|void GENERATED_TMP_mrb_mruby_dir_gem_init(mrb_state *mrb) {
  184|    476|  gem_mrblib_mruby_dir_proc_init_syms(mrb);
  185|    476|  mrb_mruby_dir_gem_init(mrb);
  186|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_dir_proc);
  187|    476|}
GENERATED_TMP_mrb_mruby_dir_gem_final:
  189|    476|void GENERATED_TMP_mrb_mruby_dir_gem_final(mrb_state *mrb) {
  190|    476|  mrb_mruby_dir_gem_final(mrb);
  191|    476|}
gem_init.c:gem_mrblib_mruby_dir_proc_init_syms:
  178|    476|{
  179|    476|}

GENERATED_TMP_mrb_mruby_enum_ext_gem_init:
 1320|    476|void GENERATED_TMP_mrb_mruby_enum_ext_gem_init(mrb_state *mrb) {
 1321|    476|  gem_mrblib_mruby_enum_ext_proc_init_syms(mrb);
 1322|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_enum_ext_proc);
 1323|    476|}
GENERATED_TMP_mrb_mruby_enum_ext_gem_final:
 1325|    476|void GENERATED_TMP_mrb_mruby_enum_ext_gem_final(mrb_state *mrb) {
 1326|    476|}
gem_init.c:gem_mrblib_mruby_enum_ext_proc_init_syms:
 1315|    476|{
 1316|    476|}

GENERATED_TMP_mrb_mruby_enum_lazy_gem_init:
  548|    476|void GENERATED_TMP_mrb_mruby_enum_lazy_gem_init(mrb_state *mrb) {
  549|    476|  gem_mrblib_mruby_enum_lazy_proc_init_syms(mrb);
  550|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_enum_lazy_proc);
  551|    476|}
GENERATED_TMP_mrb_mruby_enum_lazy_gem_final:
  553|    476|void GENERATED_TMP_mrb_mruby_enum_lazy_gem_final(mrb_state *mrb) {
  554|    476|}
gem_init.c:gem_mrblib_mruby_enum_lazy_proc_init_syms:
  543|    476|{
  544|    476|}

GENERATED_TMP_mrb_mruby_enumerator_gem_init:
  633|    476|void GENERATED_TMP_mrb_mruby_enumerator_gem_init(mrb_state *mrb) {
  634|    476|  gem_mrblib_mruby_enumerator_proc_init_syms(mrb);
  635|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_enumerator_proc);
  636|    476|}
GENERATED_TMP_mrb_mruby_enumerator_gem_final:
  638|    476|void GENERATED_TMP_mrb_mruby_enumerator_gem_final(mrb_state *mrb) {
  639|    476|}
gem_init.c:gem_mrblib_mruby_enumerator_proc_init_syms:
  628|    476|{
  629|    476|}

GENERATED_TMP_mrb_mruby_errno_gem_init:
  102|    476|void GENERATED_TMP_mrb_mruby_errno_gem_init(mrb_state *mrb) {
  103|    476|  gem_mrblib_mruby_errno_proc_init_syms(mrb);
  104|    476|  mrb_mruby_errno_gem_init(mrb);
  105|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_errno_proc);
  106|    476|}
GENERATED_TMP_mrb_mruby_errno_gem_final:
  108|    476|void GENERATED_TMP_mrb_mruby_errno_gem_final(mrb_state *mrb) {
  109|    476|  mrb_mruby_errno_gem_final(mrb);
  110|    476|}
gem_init.c:gem_mrblib_mruby_errno_proc_init_syms:
   97|    476|{
   98|    476|}

GENERATED_TMP_mrb_mruby_error_gem_init:
   15|    476|void GENERATED_TMP_mrb_mruby_error_gem_init(mrb_state *mrb) {
   16|    476|  mrb_mruby_error_gem_init(mrb);
   17|    476|}
GENERATED_TMP_mrb_mruby_error_gem_final:
   19|    476|void GENERATED_TMP_mrb_mruby_error_gem_final(mrb_state *mrb) {
   20|    476|  mrb_mruby_error_gem_final(mrb);
   21|    476|}

GENERATED_TMP_mrb_mruby_eval_gem_init:
   15|    476|void GENERATED_TMP_mrb_mruby_eval_gem_init(mrb_state *mrb) {
   16|    476|  mrb_mruby_eval_gem_init(mrb);
   17|    476|}
GENERATED_TMP_mrb_mruby_eval_gem_final:
   19|    476|void GENERATED_TMP_mrb_mruby_eval_gem_final(mrb_state *mrb) {
   20|    476|  mrb_mruby_eval_gem_final(mrb);
   21|    476|}

GENERATED_TMP_mrb_mruby_fiber_gem_init:
   15|    476|void GENERATED_TMP_mrb_mruby_fiber_gem_init(mrb_state *mrb) {
   16|    476|  mrb_mruby_fiber_gem_init(mrb);
   17|    476|}
GENERATED_TMP_mrb_mruby_fiber_gem_final:
   19|    476|void GENERATED_TMP_mrb_mruby_fiber_gem_final(mrb_state *mrb) {
   20|    476|  mrb_mruby_fiber_gem_final(mrb);
   21|    476|}

GENERATED_TMP_mrb_mruby_hash_ext_gem_init:
  711|    476|void GENERATED_TMP_mrb_mruby_hash_ext_gem_init(mrb_state *mrb) {
  712|    476|  gem_mrblib_mruby_hash_ext_proc_init_syms(mrb);
  713|    476|  mrb_mruby_hash_ext_gem_init(mrb);
  714|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_hash_ext_proc);
  715|    476|}
GENERATED_TMP_mrb_mruby_hash_ext_gem_final:
  717|    476|void GENERATED_TMP_mrb_mruby_hash_ext_gem_final(mrb_state *mrb) {
  718|    476|  mrb_mruby_hash_ext_gem_final(mrb);
  719|    476|}
gem_init.c:gem_mrblib_mruby_hash_ext_proc_init_syms:
  706|    476|{
  707|    476|}

GENERATED_TMP_mrb_mruby_io_gem_init:
  988|    476|void GENERATED_TMP_mrb_mruby_io_gem_init(mrb_state *mrb) {
  989|    476|  gem_mrblib_mruby_io_proc_init_syms(mrb);
  990|    476|  mrb_mruby_io_gem_init(mrb);
  991|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_io_proc);
  992|    476|}
GENERATED_TMP_mrb_mruby_io_gem_final:
  994|    476|void GENERATED_TMP_mrb_mruby_io_gem_final(mrb_state *mrb) {
  995|    476|  mrb_mruby_io_gem_final(mrb);
  996|    476|}
gem_init.c:gem_mrblib_mruby_io_proc_init_syms:
  976|    476|{
  977|    476|  gem_mrblib_mruby_io_proc_syms_702[0] = mrb_intern_lit(mrb, "$stdout");
  ------------------
  |  | 1164|    476|#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, (lit ""), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|    476|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
  978|    476|  gem_mrblib_mruby_io_proc_syms_703[0] = mrb_intern_lit(mrb, "$stdout");
  ------------------
  |  | 1164|    476|#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, (lit ""), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|    476|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
  979|    476|  gem_mrblib_mruby_io_proc_syms_704[0] = mrb_intern_lit(mrb, "$stdout");
  ------------------
  |  | 1164|    476|#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, (lit ""), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|    476|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
  980|    476|  gem_mrblib_mruby_io_proc_syms_705[0] = mrb_intern_lit(mrb, "$stdin");
  ------------------
  |  | 1164|    476|#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, (lit ""), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|    476|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
  981|    476|  gem_mrblib_mruby_io_proc_syms_0[9] = mrb_intern_lit(mrb, "$stdin");
  ------------------
  |  | 1164|    476|#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, (lit ""), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|    476|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
  982|    476|  gem_mrblib_mruby_io_proc_syms_0[10] = mrb_intern_lit(mrb, "$stdout");
  ------------------
  |  | 1164|    476|#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, (lit ""), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|    476|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
  983|    476|  gem_mrblib_mruby_io_proc_syms_0[11] = mrb_intern_lit(mrb, "$stderr");
  ------------------
  |  | 1164|    476|#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, (lit ""), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|    476|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
  984|    476|}

GENERATED_TMP_mrb_mruby_kernel_ext_gem_init:
   15|    476|void GENERATED_TMP_mrb_mruby_kernel_ext_gem_init(mrb_state *mrb) {
   16|    476|  mrb_mruby_kernel_ext_gem_init(mrb);
   17|    476|}
GENERATED_TMP_mrb_mruby_kernel_ext_gem_final:
   19|    476|void GENERATED_TMP_mrb_mruby_kernel_ext_gem_final(mrb_state *mrb) {
   20|    476|  mrb_mruby_kernel_ext_gem_final(mrb);
   21|    476|}

GENERATED_TMP_mrb_mruby_math_gem_init:
   15|    476|void GENERATED_TMP_mrb_mruby_math_gem_init(mrb_state *mrb) {
   16|    476|  mrb_mruby_math_gem_init(mrb);
   17|    476|}
GENERATED_TMP_mrb_mruby_math_gem_final:
   19|    476|void GENERATED_TMP_mrb_mruby_math_gem_final(mrb_state *mrb) {
   20|    476|  mrb_mruby_math_gem_final(mrb);
   21|    476|}

GENERATED_TMP_mrb_mruby_metaprog_gem_init:
   15|    476|void GENERATED_TMP_mrb_mruby_metaprog_gem_init(mrb_state *mrb) {
   16|    476|  mrb_mruby_metaprog_gem_init(mrb);
   17|    476|}
GENERATED_TMP_mrb_mruby_metaprog_gem_final:
   19|    476|void GENERATED_TMP_mrb_mruby_metaprog_gem_final(mrb_state *mrb) {
   20|    476|  mrb_mruby_metaprog_gem_final(mrb);
   21|    476|}

GENERATED_TMP_mrb_mruby_method_gem_init:
  146|    476|void GENERATED_TMP_mrb_mruby_method_gem_init(mrb_state *mrb) {
  147|    476|  gem_mrblib_mruby_method_proc_init_syms(mrb);
  148|    476|  mrb_mruby_method_gem_init(mrb);
  149|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_method_proc);
  150|    476|}
GENERATED_TMP_mrb_mruby_method_gem_final:
  152|    476|void GENERATED_TMP_mrb_mruby_method_gem_final(mrb_state *mrb) {
  153|    476|  mrb_mruby_method_gem_final(mrb);
  154|    476|}
gem_init.c:gem_mrblib_mruby_method_proc_init_syms:
  141|    476|{
  142|    476|}

GENERATED_TMP_mrb_mruby_numeric_ext_gem_init:
  180|    476|void GENERATED_TMP_mrb_mruby_numeric_ext_gem_init(mrb_state *mrb) {
  181|    476|  gem_mrblib_mruby_numeric_ext_proc_init_syms(mrb);
  182|    476|  mrb_mruby_numeric_ext_gem_init(mrb);
  183|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_numeric_ext_proc);
  184|    476|}
GENERATED_TMP_mrb_mruby_numeric_ext_gem_final:
  186|    476|void GENERATED_TMP_mrb_mruby_numeric_ext_gem_final(mrb_state *mrb) {
  187|    476|  mrb_mruby_numeric_ext_gem_final(mrb);
  188|    476|}
gem_init.c:gem_mrblib_mruby_numeric_ext_proc_init_syms:
  175|    476|{
  176|    476|}

GENERATED_TMP_mrb_mruby_object_ext_gem_init:
   88|    476|void GENERATED_TMP_mrb_mruby_object_ext_gem_init(mrb_state *mrb) {
   89|    476|  gem_mrblib_mruby_object_ext_proc_init_syms(mrb);
   90|    476|  mrb_mruby_object_ext_gem_init(mrb);
   91|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_object_ext_proc);
   92|    476|}
GENERATED_TMP_mrb_mruby_object_ext_gem_final:
   94|    476|void GENERATED_TMP_mrb_mruby_object_ext_gem_final(mrb_state *mrb) {
   95|    476|  mrb_mruby_object_ext_gem_final(mrb);
   96|    476|}
gem_init.c:gem_mrblib_mruby_object_ext_proc_init_syms:
   83|    476|{
   84|    476|}

GENERATED_TMP_mrb_mruby_objectspace_gem_init:
   15|    476|void GENERATED_TMP_mrb_mruby_objectspace_gem_init(mrb_state *mrb) {
   16|    476|  mrb_mruby_objectspace_gem_init(mrb);
   17|    476|}
GENERATED_TMP_mrb_mruby_objectspace_gem_final:
   19|    476|void GENERATED_TMP_mrb_mruby_objectspace_gem_final(mrb_state *mrb) {
   20|    476|  mrb_mruby_objectspace_gem_final(mrb);
   21|    476|}

GENERATED_TMP_mrb_mruby_pack_gem_init:
   15|    476|void GENERATED_TMP_mrb_mruby_pack_gem_init(mrb_state *mrb) {
   16|    476|  mrb_mruby_pack_gem_init(mrb);
   17|    476|}
GENERATED_TMP_mrb_mruby_pack_gem_final:
   19|    476|void GENERATED_TMP_mrb_mruby_pack_gem_final(mrb_state *mrb) {
   20|    476|  mrb_mruby_pack_gem_final(mrb);
   21|    476|}

GENERATED_TMP_mrb_mruby_print_gem_init:
  116|    476|void GENERATED_TMP_mrb_mruby_print_gem_init(mrb_state *mrb) {
  117|    476|  gem_mrblib_mruby_print_proc_init_syms(mrb);
  118|    476|  mrb_mruby_print_gem_init(mrb);
  119|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_print_proc);
  120|    476|}
GENERATED_TMP_mrb_mruby_print_gem_final:
  122|    476|void GENERATED_TMP_mrb_mruby_print_gem_final(mrb_state *mrb) {
  123|    476|  mrb_mruby_print_gem_final(mrb);
  124|    476|}
gem_init.c:gem_mrblib_mruby_print_proc_init_syms:
  111|    476|{
  112|    476|}

GENERATED_TMP_mrb_mruby_proc_ext_gem_init:
  230|    476|void GENERATED_TMP_mrb_mruby_proc_ext_gem_init(mrb_state *mrb) {
  231|    476|  gem_mrblib_mruby_proc_ext_proc_init_syms(mrb);
  232|    476|  mrb_mruby_proc_ext_gem_init(mrb);
  233|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_proc_ext_proc);
  234|    476|}
GENERATED_TMP_mrb_mruby_proc_ext_gem_final:
  236|    476|void GENERATED_TMP_mrb_mruby_proc_ext_gem_final(mrb_state *mrb) {
  237|    476|  mrb_mruby_proc_ext_gem_final(mrb);
  238|    476|}
gem_init.c:gem_mrblib_mruby_proc_ext_proc_init_syms:
  225|    476|{
  226|    476|}

GENERATED_TMP_mrb_mruby_random_gem_init:
   15|    476|void GENERATED_TMP_mrb_mruby_random_gem_init(mrb_state *mrb) {
   16|    476|  mrb_mruby_random_gem_init(mrb);
   17|    476|}
GENERATED_TMP_mrb_mruby_random_gem_final:
   19|    476|void GENERATED_TMP_mrb_mruby_random_gem_final(mrb_state *mrb) {
   20|    476|  mrb_mruby_random_gem_final(mrb);
   21|    476|}

GENERATED_TMP_mrb_mruby_range_ext_gem_init:
  197|    476|void GENERATED_TMP_mrb_mruby_range_ext_gem_init(mrb_state *mrb) {
  198|    476|  gem_mrblib_mruby_range_ext_proc_init_syms(mrb);
  199|    476|  mrb_mruby_range_ext_gem_init(mrb);
  200|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_range_ext_proc);
  201|    476|}
GENERATED_TMP_mrb_mruby_range_ext_gem_final:
  203|    476|void GENERATED_TMP_mrb_mruby_range_ext_gem_final(mrb_state *mrb) {
  204|    476|  mrb_mruby_range_ext_gem_final(mrb);
  205|    476|}
gem_init.c:gem_mrblib_mruby_range_ext_proc_init_syms:
  192|    476|{
  193|    476|}

GENERATED_TMP_mrb_mruby_rational_gem_init:
  123|    476|void GENERATED_TMP_mrb_mruby_rational_gem_init(mrb_state *mrb) {
  124|    476|  gem_mrblib_mruby_rational_proc_init_syms(mrb);
  125|    476|  mrb_mruby_rational_gem_init(mrb);
  126|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_rational_proc);
  127|    476|}
GENERATED_TMP_mrb_mruby_rational_gem_final:
  129|    476|void GENERATED_TMP_mrb_mruby_rational_gem_final(mrb_state *mrb) {
  130|    476|  mrb_mruby_rational_gem_final(mrb);
  131|    476|}
gem_init.c:gem_mrblib_mruby_rational_proc_init_syms:
  118|    476|{
  119|    476|}

GENERATED_TMP_mrb_mruby_set_gem_init:
 1066|    476|void GENERATED_TMP_mrb_mruby_set_gem_init(mrb_state *mrb) {
 1067|    476|  gem_mrblib_mruby_set_proc_init_syms(mrb);
 1068|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_set_proc);
 1069|    476|}
GENERATED_TMP_mrb_mruby_set_gem_final:
 1071|    476|void GENERATED_TMP_mrb_mruby_set_gem_final(mrb_state *mrb) {
 1072|    476|}
gem_init.c:gem_mrblib_mruby_set_proc_init_syms:
 1061|    476|{
 1062|    476|}

GENERATED_TMP_mrb_mruby_socket_gem_init:
 1401|    476|void GENERATED_TMP_mrb_mruby_socket_gem_init(mrb_state *mrb) {
 1402|    476|  gem_mrblib_mruby_socket_proc_init_syms(mrb);
 1403|    476|  mrb_mruby_socket_gem_init(mrb);
 1404|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_socket_proc);
 1405|    476|}
GENERATED_TMP_mrb_mruby_socket_gem_final:
 1407|    476|void GENERATED_TMP_mrb_mruby_socket_gem_final(mrb_state *mrb) {
 1408|    476|  mrb_mruby_socket_gem_final(mrb);
 1409|    476|}
gem_init.c:gem_mrblib_mruby_socket_proc_init_syms:
 1396|    476|{
 1397|    476|}

GENERATED_TMP_mrb_mruby_sprintf_gem_init:
   75|    476|void GENERATED_TMP_mrb_mruby_sprintf_gem_init(mrb_state *mrb) {
   76|    476|  gem_mrblib_mruby_sprintf_proc_init_syms(mrb);
   77|    476|  mrb_mruby_sprintf_gem_init(mrb);
   78|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_sprintf_proc);
   79|    476|}
GENERATED_TMP_mrb_mruby_sprintf_gem_final:
   81|    476|void GENERATED_TMP_mrb_mruby_sprintf_gem_final(mrb_state *mrb) {
   82|    476|  mrb_mruby_sprintf_gem_final(mrb);
   83|    476|}
gem_init.c:gem_mrblib_mruby_sprintf_proc_init_syms:
   70|    476|{
   71|    476|}

GENERATED_TMP_mrb_mruby_string_ext_gem_init:
  582|    476|void GENERATED_TMP_mrb_mruby_string_ext_gem_init(mrb_state *mrb) {
  583|    476|  gem_mrblib_mruby_string_ext_proc_init_syms(mrb);
  584|    476|  mrb_mruby_string_ext_gem_init(mrb);
  585|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_string_ext_proc);
  586|    476|}
GENERATED_TMP_mrb_mruby_string_ext_gem_final:
  588|    476|void GENERATED_TMP_mrb_mruby_string_ext_gem_final(mrb_state *mrb) {
  589|    476|  mrb_mruby_string_ext_gem_final(mrb);
  590|    476|}
gem_init.c:gem_mrblib_mruby_string_ext_proc_init_syms:
  577|    476|{
  578|    476|}

GENERATED_TMP_mrb_mruby_struct_gem_init:
  168|    476|void GENERATED_TMP_mrb_mruby_struct_gem_init(mrb_state *mrb) {
  169|    476|  gem_mrblib_mruby_struct_proc_init_syms(mrb);
  170|    476|  mrb_mruby_struct_gem_init(mrb);
  171|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_struct_proc);
  172|    476|}
GENERATED_TMP_mrb_mruby_struct_gem_final:
  174|    476|void GENERATED_TMP_mrb_mruby_struct_gem_final(mrb_state *mrb) {
  175|    476|  mrb_mruby_struct_gem_final(mrb);
  176|    476|}
gem_init.c:gem_mrblib_mruby_struct_proc_init_syms:
  163|    476|{
  164|    476|}

GENERATED_TMP_mrb_mruby_symbol_ext_gem_init:
  147|    476|void GENERATED_TMP_mrb_mruby_symbol_ext_gem_init(mrb_state *mrb) {
  148|    476|  gem_mrblib_mruby_symbol_ext_proc_init_syms(mrb);
  149|    476|  mrb_mruby_symbol_ext_gem_init(mrb);
  150|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_symbol_ext_proc);
  151|    476|}
GENERATED_TMP_mrb_mruby_symbol_ext_gem_final:
  153|    476|void GENERATED_TMP_mrb_mruby_symbol_ext_gem_final(mrb_state *mrb) {
  154|    476|  mrb_mruby_symbol_ext_gem_final(mrb);
  155|    476|}
gem_init.c:gem_mrblib_mruby_symbol_ext_proc_init_syms:
  142|    476|{
  143|    476|}

GENERATED_TMP_mrb_mruby_time_gem_init:
   15|    476|void GENERATED_TMP_mrb_mruby_time_gem_init(mrb_state *mrb) {
   16|    476|  mrb_mruby_time_gem_init(mrb);
   17|    476|}
GENERATED_TMP_mrb_mruby_time_gem_final:
   19|    476|void GENERATED_TMP_mrb_mruby_time_gem_final(mrb_state *mrb) {
   20|    476|  mrb_mruby_time_gem_final(mrb);
   21|    476|}

GENERATED_TMP_mrb_mruby_toplevel_ext_gem_init:
   98|    476|void GENERATED_TMP_mrb_mruby_toplevel_ext_gem_init(mrb_state *mrb) {
   99|    476|  gem_mrblib_mruby_toplevel_ext_proc_init_syms(mrb);
  100|    476|  mrb_load_proc(mrb, gem_mrblib_mruby_toplevel_ext_proc);
  101|    476|}
GENERATED_TMP_mrb_mruby_toplevel_ext_gem_final:
  103|    476|void GENERATED_TMP_mrb_mruby_toplevel_ext_gem_final(mrb_state *mrb) {
  104|    476|}
gem_init.c:gem_mrblib_mruby_toplevel_ext_proc_init_syms:
   93|    476|{
   94|    476|}

mrb_init_mrblib:
 2194|    476|{
 2195|    476|  mrblib_proc_init_syms(mrb);
 2196|    476|  mrb_load_proc(mrb, mrblib_proc);
 2197|    476|}
mrblib.c:mrblib_proc_init_syms:
 2190|    476|{
 2191|    476|}

_Z36descriptor_table_ruby_2eproto_getterv:
  768|      1|PROTOBUF_ATTRIBUTE_WEAK const ::_pbi::DescriptorTable* descriptor_table_ruby_2eproto_getter() {
  769|      1|  return &descriptor_table_ruby_2eproto;
  770|      1|}
_ZN11ruby_fuzzer6VarRefC2EPN6google8protobuf5ArenaE:
 1049|  58.4k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 1050|  58.4k|  SharedCtor(arena);
 1051|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.VarRef)
 1052|  58.4k|}
_ZN11ruby_fuzzer6VarRefD2Ev:
 1070|  58.4k|VarRef::~VarRef() {
 1071|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.VarRef)
 1072|  58.4k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (1072:13): [True: 0, False: 58.4k]
  ------------------
 1073|      0|  (void)arena;
 1074|      0|    return;
 1075|      0|  }
 1076|  58.4k|  SharedDtor();
 1077|  58.4k|}
_ZNK11ruby_fuzzer6VarRef11GetMetadataEv:
 1218|   525k|::PROTOBUF_NAMESPACE_ID::Metadata VarRef::GetMetadata() const {
 1219|   525k|  return ::_pbi::AssignDescriptors(
 1220|   525k|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 1221|   525k|      file_level_metadata_ruby_2eproto[0]);
 1222|   525k|}
_ZN11ruby_fuzzer7ArrTypeC2EPN6google8protobuf5ArenaE:
 1230|  46.7k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 1231|  46.7k|  SharedCtor(arena);
 1232|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.ArrType)
 1233|  46.7k|}
_ZN11ruby_fuzzer7ArrTypeD2Ev:
 1253|  46.7k|ArrType::~ArrType() {
 1254|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.ArrType)
 1255|  46.7k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (1255:13): [True: 0, False: 46.7k]
  ------------------
 1256|      0|  (void)arena;
 1257|      0|    return;
 1258|      0|  }
 1259|  46.7k|  SharedDtor();
 1260|  46.7k|}
_ZN11ruby_fuzzer7ArrType5ClearEv:
 1271|     16|void ArrType::Clear() {
 1272|       |// @@protoc_insertion_point(message_clear_start:ruby_fuzzer.ArrType)
 1273|     16|  ::uint32_t cached_has_bits = 0;
 1274|       |  // Prevent compiler warnings about cached_has_bits being unused
 1275|     16|  (void) cached_has_bits;
 1276|       |
 1277|     16|  _impl_.elements_.Clear();
 1278|     16|  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
 1279|     16|}
_ZNK11ruby_fuzzer7ArrType12GetClassDataEv:
 1368|     24|const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ArrType::GetClassData() const { return &_class_data_; }
_ZN11ruby_fuzzer7ArrType9MergeImplERN6google8protobuf7MessageERKS3_:
 1371|      8|void ArrType::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
 1372|      8|  auto* const _this = static_cast<ArrType*>(&to_msg);
 1373|      8|  auto& from = static_cast<const ArrType&>(from_msg);
 1374|       |  // @@protoc_insertion_point(class_specific_merge_from_start:ruby_fuzzer.ArrType)
 1375|      8|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|      8|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|      8|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      8|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      8|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1376|      8|  ::uint32_t cached_has_bits = 0;
 1377|      8|  (void) cached_has_bits;
 1378|       |
 1379|      8|  _this->_impl_.elements_.MergeFrom(from._impl_.elements_);
 1380|      8|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 1381|      8|}
_ZNK11ruby_fuzzer7ArrType11GetMetadataEv:
 1400|  1.21M|::PROTOBUF_NAMESPACE_ID::Metadata ArrType::GetMetadata() const {
 1401|  1.21M|  return ::_pbi::AssignDescriptors(
 1402|  1.21M|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 1403|  1.21M|      file_level_metadata_ruby_2eproto[1]);
 1404|  1.21M|}
_ZN11ruby_fuzzer6KVPairC2EPN6google8protobuf5ArenaE:
 1424|   164k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 1425|   164k|  SharedCtor(arena);
 1426|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.KVPair)
 1427|   164k|}
_ZN11ruby_fuzzer6KVPairD2Ev:
 1477|   164k|KVPair::~KVPair() {
 1478|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.KVPair)
 1479|   164k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (1479:13): [True: 0, False: 164k]
  ------------------
 1480|      0|  (void)arena;
 1481|      0|    return;
 1482|      0|  }
 1483|   164k|  SharedDtor();
 1484|   164k|}
_ZNK11ruby_fuzzer6KVPair11GetMetadataEv:
 1695|  1.64M|::PROTOBUF_NAMESPACE_ID::Metadata KVPair::GetMetadata() const {
 1696|  1.64M|  return ::_pbi::AssignDescriptors(
 1697|  1.64M|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 1698|  1.64M|      file_level_metadata_ruby_2eproto[2]);
 1699|  1.64M|}
_ZN11ruby_fuzzer8HashTypeC2EPN6google8protobuf5ArenaE:
 1707|  8.00k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 1708|  8.00k|  SharedCtor(arena);
 1709|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.HashType)
 1710|  8.00k|}
_ZN11ruby_fuzzer8HashTypeD2Ev:
 1730|  8.00k|HashType::~HashType() {
 1731|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.HashType)
 1732|  8.00k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (1732:13): [True: 0, False: 8.00k]
  ------------------
 1733|      0|  (void)arena;
 1734|      0|    return;
 1735|      0|  }
 1736|  8.00k|  SharedDtor();
 1737|  8.00k|}
_ZNK11ruby_fuzzer8HashType11GetMetadataEv:
 1879|   625k|::PROTOBUF_NAMESPACE_ID::Metadata HashType::GetMetadata() const {
 1880|   625k|  return ::_pbi::AssignDescriptors(
 1881|   625k|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 1882|   625k|      file_level_metadata_ruby_2eproto[3]);
 1883|   625k|}
_ZN11ruby_fuzzer9MathConstC2EPN6google8protobuf5ArenaE:
 2180|    785|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 2181|    785|  SharedCtor(arena);
 2182|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.MathConst)
 2183|    785|}
_ZN11ruby_fuzzer9MathConstD2Ev:
 2201|    785|MathConst::~MathConst() {
 2202|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.MathConst)
 2203|    785|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (2203:13): [True: 0, False: 785]
  ------------------
 2204|      0|  (void)arena;
 2205|      0|    return;
 2206|      0|  }
 2207|    785|  SharedDtor();
 2208|    785|}
_ZNK11ruby_fuzzer9MathConst11GetMetadataEv:
 2352|  7.06k|::PROTOBUF_NAMESPACE_ID::Metadata MathConst::GetMetadata() const {
 2353|  7.06k|  return ::_pbi::AssignDescriptors(
 2354|  7.06k|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 2355|  7.06k|      file_level_metadata_ruby_2eproto[5]);
 2356|  7.06k|}
_ZN11ruby_fuzzer5ConstC2EPN6google8protobuf5ArenaE:
 2366|   337k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 2367|   337k|  SharedCtor(arena);
 2368|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.Const)
 2369|   337k|}
_ZN11ruby_fuzzer5ConstD2Ev:
 2406|   337k|Const::~Const() {
 2407|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.Const)
 2408|   337k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (2408:13): [True: 0, False: 337k]
  ------------------
 2409|      0|  (void)arena;
 2410|      0|    return;
 2411|      0|  }
 2412|   337k|  SharedDtor();
 2413|   337k|}
_ZN11ruby_fuzzer5Const17clear_const_oneofEv:
 2426|  36.9k|void Const::clear_const_oneof() {
 2427|       |// @@protoc_insertion_point(one_of_clear_start:ruby_fuzzer.Const)
 2428|  36.9k|  switch (const_oneof_case()) {
  ------------------
  |  Branch (2428:11): [True: 0, False: 36.9k]
  ------------------
 2429|  24.4k|    case kIntLit: {
  ------------------
  |  Branch (2429:5): [True: 24.4k, False: 12.5k]
  ------------------
 2430|       |      // No need to clear
 2431|  24.4k|      break;
 2432|      0|    }
 2433|  12.5k|    case kBoolVal: {
  ------------------
  |  Branch (2433:5): [True: 12.5k, False: 24.4k]
  ------------------
 2434|       |      // No need to clear
 2435|  12.5k|      break;
 2436|      0|    }
 2437|      0|    case CONST_ONEOF_NOT_SET: {
  ------------------
  |  Branch (2437:5): [True: 0, False: 36.9k]
  ------------------
 2438|      0|      break;
 2439|      0|    }
 2440|  36.9k|  }
 2441|  36.9k|  _impl_._oneof_case_[0] = CONST_ONEOF_NOT_SET;
 2442|  36.9k|}
_ZNK11ruby_fuzzer5Const11GetMetadataEv:
 2607|  2.13M|::PROTOBUF_NAMESPACE_ID::Metadata Const::GetMetadata() const {
 2608|  2.13M|  return ::_pbi::AssignDescriptors(
 2609|  2.13M|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 2610|  2.13M|      file_level_metadata_ruby_2eproto[6]);
 2611|  2.13M|}
_ZN11ruby_fuzzer8BinaryOpC2EPN6google8protobuf5ArenaE:
 2644|  95.7k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 2645|  95.7k|  SharedCtor(arena);
 2646|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.BinaryOp)
 2647|  95.7k|}
_ZN11ruby_fuzzer8BinaryOpD2Ev:
 2682|  95.7k|BinaryOp::~BinaryOp() {
 2683|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.BinaryOp)
 2684|  95.7k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (2684:13): [True: 0, False: 95.7k]
  ------------------
 2685|      0|  (void)arena;
 2686|      0|    return;
 2687|      0|  }
 2688|  95.7k|  SharedDtor();
 2689|  95.7k|}
_ZNK11ruby_fuzzer8BinaryOp11GetMetadataEv:
 2940|  1.50M|::PROTOBUF_NAMESPACE_ID::Metadata BinaryOp::GetMetadata() const {
 2941|  1.50M|  return ::_pbi::AssignDescriptors(
 2942|  1.50M|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 2943|  1.50M|      file_level_metadata_ruby_2eproto[7]);
 2944|  1.50M|}
_ZN11ruby_fuzzer6RvalueC2EPN6google8protobuf5ArenaE:
 3014|   398k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 3015|   398k|  SharedCtor(arena);
 3016|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.Rvalue)
 3017|   398k|}
_ZN11ruby_fuzzer6RvalueD2Ev:
 3061|   398k|Rvalue::~Rvalue() {
 3062|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.Rvalue)
 3063|   398k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (3063:13): [True: 0, False: 398k]
  ------------------
 3064|      0|  (void)arena;
 3065|      0|    return;
 3066|      0|  }
 3067|   398k|  SharedDtor();
 3068|   398k|}
_ZN11ruby_fuzzer6Rvalue18clear_rvalue_oneofEv:
 3081|   186k|void Rvalue::clear_rvalue_oneof() {
 3082|       |// @@protoc_insertion_point(one_of_clear_start:ruby_fuzzer.Rvalue)
 3083|   186k|  switch (rvalue_oneof_case()) {
  ------------------
  |  Branch (3083:11): [True: 0, False: 186k]
  ------------------
 3084|  58.4k|    case kVarref: {
  ------------------
  |  Branch (3084:5): [True: 58.4k, False: 128k]
  ------------------
 3085|  58.4k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (3085:11): [True: 58.4k, False: 0]
  ------------------
 3086|  58.4k|        delete _impl_.rvalue_oneof_.varref_;
 3087|  58.4k|      }
 3088|  58.4k|      break;
 3089|      0|    }
 3090|  32.3k|    case kCons: {
  ------------------
  |  Branch (3090:5): [True: 32.3k, False: 154k]
  ------------------
 3091|  32.3k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (3091:11): [True: 32.3k, False: 0]
  ------------------
 3092|  32.3k|        delete _impl_.rvalue_oneof_.cons_;
 3093|  32.3k|      }
 3094|  32.3k|      break;
 3095|      0|    }
 3096|  95.7k|    case kBinop: {
  ------------------
  |  Branch (3096:5): [True: 95.7k, False: 90.8k]
  ------------------
 3097|  95.7k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (3097:11): [True: 95.7k, False: 0]
  ------------------
 3098|  95.7k|        delete _impl_.rvalue_oneof_.binop_;
 3099|  95.7k|      }
 3100|  95.7k|      break;
 3101|      0|    }
 3102|     82|    case RVALUE_ONEOF_NOT_SET: {
  ------------------
  |  Branch (3102:5): [True: 82, False: 186k]
  ------------------
 3103|     82|      break;
 3104|      0|    }
 3105|   186k|  }
 3106|   186k|  _impl_._oneof_case_[0] = RVALUE_ONEOF_NOT_SET;
 3107|   186k|}
_ZN11ruby_fuzzer6Rvalue5ClearEv:
 3110|     82|void Rvalue::Clear() {
 3111|       |// @@protoc_insertion_point(message_clear_start:ruby_fuzzer.Rvalue)
 3112|     82|  ::uint32_t cached_has_bits = 0;
 3113|       |  // Prevent compiler warnings about cached_has_bits being unused
 3114|     82|  (void) cached_has_bits;
 3115|       |
 3116|     82|  clear_rvalue_oneof();
 3117|     82|  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
 3118|     82|}
_ZNK11ruby_fuzzer6Rvalue12GetClassDataEv:
 3252|    123|const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Rvalue::GetClassData() const { return &_class_data_; }
_ZN11ruby_fuzzer6Rvalue9MergeImplERN6google8protobuf7MessageERKS3_:
 3255|     41|void Rvalue::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
 3256|     41|  auto* const _this = static_cast<Rvalue*>(&to_msg);
 3257|     41|  auto& from = static_cast<const Rvalue&>(from_msg);
 3258|       |  // @@protoc_insertion_point(class_specific_merge_from_start:ruby_fuzzer.Rvalue)
 3259|     41|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|     41|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|     41|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     41|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     41|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3260|     41|  ::uint32_t cached_has_bits = 0;
 3261|     41|  (void) cached_has_bits;
 3262|       |
 3263|     41|  switch (from.rvalue_oneof_case()) {
  ------------------
  |  Branch (3263:11): [True: 0, False: 41]
  ------------------
 3264|      0|    case kVarref: {
  ------------------
  |  Branch (3264:5): [True: 0, False: 41]
  ------------------
 3265|      0|      _this->_internal_mutable_varref()->::ruby_fuzzer::VarRef::MergeFrom(
 3266|      0|          from._internal_varref());
 3267|      0|      break;
 3268|      0|    }
 3269|      0|    case kCons: {
  ------------------
  |  Branch (3269:5): [True: 0, False: 41]
  ------------------
 3270|      0|      _this->_internal_mutable_cons()->::ruby_fuzzer::Const::MergeFrom(
 3271|      0|          from._internal_cons());
 3272|      0|      break;
 3273|      0|    }
 3274|      0|    case kBinop: {
  ------------------
  |  Branch (3274:5): [True: 0, False: 41]
  ------------------
 3275|      0|      _this->_internal_mutable_binop()->::ruby_fuzzer::BinaryOp::MergeFrom(
 3276|      0|          from._internal_binop());
 3277|      0|      break;
 3278|      0|    }
 3279|     41|    case RVALUE_ONEOF_NOT_SET: {
  ------------------
  |  Branch (3279:5): [True: 41, False: 0]
  ------------------
 3280|     41|      break;
 3281|      0|    }
 3282|     41|  }
 3283|     41|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 3284|     41|}
_ZNK11ruby_fuzzer6Rvalue11GetMetadataEv:
 3324|  2.94M|::PROTOBUF_NAMESPACE_ID::Metadata Rvalue::GetMetadata() const {
 3325|  2.94M|  return ::_pbi::AssignDescriptors(
 3326|  2.94M|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 3327|  2.94M|      file_level_metadata_ruby_2eproto[8]);
 3328|  2.94M|}
_ZN11ruby_fuzzer19AssignmentStatementC2EPN6google8protobuf5ArenaE:
 3350|   120k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 3351|   120k|  SharedCtor(arena);
 3352|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.AssignmentStatement)
 3353|   120k|}
_ZN11ruby_fuzzer19AssignmentStatementD2Ev:
 3378|   120k|AssignmentStatement::~AssignmentStatement() {
 3379|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.AssignmentStatement)
 3380|   120k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (3380:13): [True: 0, False: 120k]
  ------------------
 3381|      0|  (void)arena;
 3382|      0|    return;
 3383|      0|  }
 3384|   120k|  SharedDtor();
 3385|   120k|}
_ZNK11ruby_fuzzer19AssignmentStatement11GetMetadataEv:
 3534|  1.08M|::PROTOBUF_NAMESPACE_ID::Metadata AssignmentStatement::GetMetadata() const {
 3535|  1.08M|  return ::_pbi::AssignDescriptors(
 3536|  1.08M|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 3537|  1.08M|      file_level_metadata_ruby_2eproto[9]);
 3538|  1.08M|}
_ZN11ruby_fuzzer6IfElseC2EPN6google8protobuf5ArenaE:
 3576|  18.7k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 3577|  18.7k|  SharedCtor(arena);
 3578|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.IfElse)
 3579|  18.7k|}
_ZN11ruby_fuzzer6IfElseD2Ev:
 3614|  18.7k|IfElse::~IfElse() {
 3615|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.IfElse)
 3616|  18.7k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (3616:13): [True: 0, False: 18.7k]
  ------------------
 3617|      0|  (void)arena;
 3618|      0|    return;
 3619|      0|  }
 3620|  18.7k|  SharedDtor();
 3621|  18.7k|}
_ZNK11ruby_fuzzer6IfElse11GetMetadataEv:
 3876|   281k|::PROTOBUF_NAMESPACE_ID::Metadata IfElse::GetMetadata() const {
 3877|   281k|  return ::_pbi::AssignDescriptors(
 3878|   281k|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 3879|   281k|      file_level_metadata_ruby_2eproto[10]);
 3880|   281k|}
_ZN11ruby_fuzzer7TernaryC2EPN6google8protobuf5ArenaE:
 3918|  6.62k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 3919|  6.62k|  SharedCtor(arena);
 3920|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.Ternary)
 3921|  6.62k|}
_ZN11ruby_fuzzer7TernaryD2Ev:
 3956|  6.62k|Ternary::~Ternary() {
 3957|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.Ternary)
 3958|  6.62k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (3958:13): [True: 0, False: 6.62k]
  ------------------
 3959|      0|  (void)arena;
 3960|      0|    return;
 3961|      0|  }
 3962|  6.62k|  SharedDtor();
 3963|  6.62k|}
_ZNK11ruby_fuzzer7Ternary11GetMetadataEv:
 4218|  99.4k|::PROTOBUF_NAMESPACE_ID::Metadata Ternary::GetMetadata() const {
 4219|  99.4k|  return ::_pbi::AssignDescriptors(
 4220|  99.4k|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 4221|  99.4k|      file_level_metadata_ruby_2eproto[11]);
 4222|  99.4k|}
_ZN11ruby_fuzzer11ObjectSpaceC2EPN6google8protobuf5ArenaE:
 4247|  8.00k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 4248|  8.00k|  SharedCtor(arena);
 4249|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.ObjectSpace)
 4250|  8.00k|}
_ZN11ruby_fuzzer11ObjectSpaceD2Ev:
 4280|  8.00k|ObjectSpace::~ObjectSpace() {
 4281|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.ObjectSpace)
 4282|  8.00k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (4282:13): [True: 0, False: 8.00k]
  ------------------
 4283|      0|  (void)arena;
 4284|      0|    return;
 4285|      0|  }
 4286|  8.00k|  SharedDtor();
 4287|  8.00k|}
_ZNK11ruby_fuzzer11ObjectSpace11GetMetadataEv:
 4498|  95.5k|::PROTOBUF_NAMESPACE_ID::Metadata ObjectSpace::GetMetadata() const {
 4499|  95.5k|  return ::_pbi::AssignDescriptors(
 4500|  95.5k|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 4501|  95.5k|      file_level_metadata_ruby_2eproto[12]);
 4502|  95.5k|}
_ZN11ruby_fuzzer4TimeC2EPN6google8protobuf5ArenaE:
 4522|  6.52k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 4523|  6.52k|  SharedCtor(arena);
 4524|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.Time)
 4525|  6.52k|}
_ZN11ruby_fuzzer4TimeD2Ev:
 4545|  6.52k|Time::~Time() {
 4546|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.Time)
 4547|  6.52k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (4547:13): [True: 0, False: 6.52k]
  ------------------
 4548|      0|  (void)arena;
 4549|      0|    return;
 4550|      0|  }
 4551|  6.52k|  SharedDtor();
 4552|  6.52k|}
_ZNK11ruby_fuzzer4Time11GetMetadataEv:
 4754|  78.2k|::PROTOBUF_NAMESPACE_ID::Metadata Time::GetMetadata() const {
 4755|  78.2k|  return ::_pbi::AssignDescriptors(
 4756|  78.2k|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 4757|  78.2k|      file_level_metadata_ruby_2eproto[13]);
 4758|  78.2k|}
_ZN11ruby_fuzzer5ArrayC2EPN6google8protobuf5ArenaE:
 4791|  46.7k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 4792|  46.7k|  SharedCtor(arena);
 4793|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.Array)
 4794|  46.7k|}
_ZN11ruby_fuzzer5ArrayD2Ev:
 4829|  46.7k|Array::~Array() {
 4830|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.Array)
 4831|  46.7k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (4831:13): [True: 0, False: 46.7k]
  ------------------
 4832|      0|  (void)arena;
 4833|      0|    return;
 4834|      0|  }
 4835|  46.7k|  SharedDtor();
 4836|  46.7k|}
_ZNK11ruby_fuzzer5Array11GetMetadataEv:
 5084|   702k|::PROTOBUF_NAMESPACE_ID::Metadata Array::GetMetadata() const {
 5085|   702k|  return ::_pbi::AssignDescriptors(
 5086|   702k|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 5087|   702k|      file_level_metadata_ruby_2eproto[14]);
 5088|   702k|}
_ZN11ruby_fuzzer8MathTypeC2EPN6google8protobuf5ArenaE:
 5138|  4.82k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 5139|  4.82k|  SharedCtor(arena);
 5140|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.MathType)
 5141|  4.82k|}
_ZN11ruby_fuzzer8MathTypeD2Ev:
 5180|  4.82k|MathType::~MathType() {
 5181|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.MathType)
 5182|  4.82k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (5182:13): [True: 0, False: 4.82k]
  ------------------
 5183|      0|  (void)arena;
 5184|      0|    return;
 5185|      0|  }
 5186|  4.82k|  SharedDtor();
 5187|  4.82k|}
_ZN11ruby_fuzzer8MathType20clear_math_arg_oneofEv:
 5200|  1.76k|void MathType::clear_math_arg_oneof() {
 5201|       |// @@protoc_insertion_point(one_of_clear_start:ruby_fuzzer.MathType)
 5202|  1.76k|  switch (math_arg_oneof_case()) {
  ------------------
  |  Branch (5202:11): [True: 0, False: 1.76k]
  ------------------
 5203|    979|    case kMathRval: {
  ------------------
  |  Branch (5203:5): [True: 979, False: 785]
  ------------------
 5204|    979|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (5204:11): [True: 979, False: 0]
  ------------------
 5205|    979|        delete _impl_.math_arg_oneof_.math_rval_;
 5206|    979|      }
 5207|    979|      break;
 5208|      0|    }
 5209|    785|    case kMathConst: {
  ------------------
  |  Branch (5209:5): [True: 785, False: 979]
  ------------------
 5210|    785|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (5210:11): [True: 785, False: 0]
  ------------------
 5211|    785|        delete _impl_.math_arg_oneof_.math_const_;
 5212|    785|      }
 5213|    785|      break;
 5214|      0|    }
 5215|      0|    case MATH_ARG_ONEOF_NOT_SET: {
  ------------------
  |  Branch (5215:5): [True: 0, False: 1.76k]
  ------------------
 5216|      0|      break;
 5217|      0|    }
 5218|  1.76k|  }
 5219|  1.76k|  _impl_._oneof_case_[0] = MATH_ARG_ONEOF_NOT_SET;
 5220|  1.76k|}
_ZNK11ruby_fuzzer8MathType11GetMetadataEv:
 5407|  34.2k|::PROTOBUF_NAMESPACE_ID::Metadata MathType::GetMetadata() const {
 5408|  34.2k|  return ::_pbi::AssignDescriptors(
 5409|  34.2k|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 5410|  34.2k|      file_level_metadata_ruby_2eproto[15]);
 5411|  34.2k|}
_ZN11ruby_fuzzer7MathOpsC2EPN6google8protobuf5ArenaE:
 5436|  4.82k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 5437|  4.82k|  SharedCtor(arena);
 5438|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.MathOps)
 5439|  4.82k|}
_ZN11ruby_fuzzer7MathOpsD2Ev:
 5469|  4.82k|MathOps::~MathOps() {
 5470|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.MathOps)
 5471|  4.82k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (5471:13): [True: 0, False: 4.82k]
  ------------------
 5472|      0|  (void)arena;
 5473|      0|    return;
 5474|      0|  }
 5475|  4.82k|  SharedDtor();
 5476|  4.82k|}
_ZNK11ruby_fuzzer7MathOps11GetMetadataEv:
 5687|  57.9k|::PROTOBUF_NAMESPACE_ID::Metadata MathOps::GetMetadata() const {
 5688|  57.9k|  return ::_pbi::AssignDescriptors(
 5689|  57.9k|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 5690|  57.9k|      file_level_metadata_ruby_2eproto[16]);
 5691|  57.9k|}
_ZN11ruby_fuzzer12BuiltinFuncsC2EPN6google8protobuf5ArenaE:
 5781|  84.6k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 5782|  84.6k|  SharedCtor(arena);
 5783|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.BuiltinFuncs)
 5784|  84.6k|}
_ZN11ruby_fuzzer12BuiltinFuncsD2Ev:
 5833|  84.6k|BuiltinFuncs::~BuiltinFuncs() {
 5834|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.BuiltinFuncs)
 5835|  84.6k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (5835:13): [True: 0, False: 84.6k]
  ------------------
 5836|      0|  (void)arena;
 5837|      0|    return;
 5838|      0|  }
 5839|  84.6k|  SharedDtor();
 5840|  84.6k|}
_ZN11ruby_fuzzer12BuiltinFuncs18clear_bifunc_oneofEv:
 5853|  66.1k|void BuiltinFuncs::clear_bifunc_oneof() {
 5854|       |// @@protoc_insertion_point(one_of_clear_start:ruby_fuzzer.BuiltinFuncs)
 5855|  66.1k|  switch (bifunc_oneof_case()) {
  ------------------
  |  Branch (5855:11): [True: 0, False: 66.1k]
  ------------------
 5856|  8.00k|    case kOs: {
  ------------------
  |  Branch (5856:5): [True: 8.00k, False: 58.1k]
  ------------------
 5857|  8.00k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (5857:11): [True: 8.00k, False: 0]
  ------------------
 5858|  8.00k|        delete _impl_.bifunc_oneof_.os_;
 5859|  8.00k|      }
 5860|  8.00k|      break;
 5861|      0|    }
 5862|  6.52k|    case kTime: {
  ------------------
  |  Branch (5862:5): [True: 6.52k, False: 59.6k]
  ------------------
 5863|  6.52k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (5863:11): [True: 6.52k, False: 0]
  ------------------
 5864|  6.52k|        delete _impl_.bifunc_oneof_.time_;
 5865|  6.52k|      }
 5866|  6.52k|      break;
 5867|      0|    }
 5868|  46.7k|    case kArr: {
  ------------------
  |  Branch (5868:5): [True: 46.7k, False: 19.3k]
  ------------------
 5869|  46.7k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (5869:11): [True: 46.7k, False: 0]
  ------------------
 5870|  46.7k|        delete _impl_.bifunc_oneof_.arr_;
 5871|  46.7k|      }
 5872|  46.7k|      break;
 5873|      0|    }
 5874|  4.82k|    case kMops: {
  ------------------
  |  Branch (5874:5): [True: 4.82k, False: 61.3k]
  ------------------
 5875|  4.82k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (5875:11): [True: 4.82k, False: 0]
  ------------------
 5876|  4.82k|        delete _impl_.bifunc_oneof_.mops_;
 5877|  4.82k|      }
 5878|  4.82k|      break;
 5879|      0|    }
 5880|      0|    case BIFUNC_ONEOF_NOT_SET: {
  ------------------
  |  Branch (5880:5): [True: 0, False: 66.1k]
  ------------------
 5881|      0|      break;
 5882|      0|    }
 5883|  66.1k|  }
 5884|  66.1k|  _impl_._oneof_case_[0] = BIFUNC_ONEOF_NOT_SET;
 5885|  66.1k|}
_ZNK11ruby_fuzzer12BuiltinFuncs11GetMetadataEv:
 6138|   708k|::PROTOBUF_NAMESPACE_ID::Metadata BuiltinFuncs::GetMetadata() const {
 6139|   708k|  return ::_pbi::AssignDescriptors(
 6140|   708k|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 6141|   708k|      file_level_metadata_ruby_2eproto[17]);
 6142|   708k|}
_ZN11ruby_fuzzer9StatementC2EPN6google8protobuf5ArenaE:
 6252|   343k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 6253|   343k|  SharedCtor(arena);
 6254|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.Statement)
 6255|   343k|}
_ZN11ruby_fuzzer9StatementD2Ev:
 6309|   343k|Statement::~Statement() {
 6310|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.Statement)
 6311|   343k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (6311:13): [True: 0, False: 343k]
  ------------------
 6312|      0|  (void)arena;
 6313|      0|    return;
 6314|      0|  }
 6315|   343k|  SharedDtor();
 6316|   343k|}
_ZN11ruby_fuzzer9Statement16clear_stmt_oneofEv:
 6329|   249k|void Statement::clear_stmt_oneof() {
 6330|       |// @@protoc_insertion_point(one_of_clear_start:ruby_fuzzer.Statement)
 6331|   249k|  switch (stmt_oneof_case()) {
  ------------------
  |  Branch (6331:11): [True: 0, False: 249k]
  ------------------
 6332|   120k|    case kAssignment: {
  ------------------
  |  Branch (6332:5): [True: 120k, False: 129k]
  ------------------
 6333|   120k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (6333:11): [True: 120k, False: 0]
  ------------------
 6334|   120k|        delete _impl_.stmt_oneof_.assignment_;
 6335|   120k|      }
 6336|   120k|      break;
 6337|      0|    }
 6338|  18.7k|    case kIfelse: {
  ------------------
  |  Branch (6338:5): [True: 18.7k, False: 231k]
  ------------------
 6339|  18.7k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (6339:11): [True: 18.7k, False: 0]
  ------------------
 6340|  18.7k|        delete _impl_.stmt_oneof_.ifelse_;
 6341|  18.7k|      }
 6342|  18.7k|      break;
 6343|      0|    }
 6344|  6.62k|    case kTernaryStmt: {
  ------------------
  |  Branch (6344:5): [True: 6.62k, False: 243k]
  ------------------
 6345|  6.62k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (6345:11): [True: 6.62k, False: 0]
  ------------------
 6346|  6.62k|        delete _impl_.stmt_oneof_.ternary_stmt_;
 6347|  6.62k|      }
 6348|  6.62k|      break;
 6349|      0|    }
 6350|  84.6k|    case kBuiltins: {
  ------------------
  |  Branch (6350:5): [True: 84.6k, False: 165k]
  ------------------
 6351|  84.6k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (6351:11): [True: 84.6k, False: 0]
  ------------------
 6352|  84.6k|        delete _impl_.stmt_oneof_.builtins_;
 6353|  84.6k|      }
 6354|  84.6k|      break;
 6355|      0|    }
 6356|  19.5k|    case kBlockstmt: {
  ------------------
  |  Branch (6356:5): [True: 19.5k, False: 230k]
  ------------------
 6357|  19.5k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (6357:11): [True: 19.5k, False: 0]
  ------------------
 6358|  19.5k|        delete _impl_.stmt_oneof_.blockstmt_;
 6359|  19.5k|      }
 6360|  19.5k|      break;
 6361|      0|    }
 6362|      0|    case STMT_ONEOF_NOT_SET: {
  ------------------
  |  Branch (6362:5): [True: 0, False: 249k]
  ------------------
 6363|      0|      break;
 6364|      0|    }
 6365|   249k|  }
 6366|   249k|  _impl_._oneof_case_[0] = STMT_ONEOF_NOT_SET;
 6367|   249k|}
_ZNK11ruby_fuzzer9Statement11GetMetadataEv:
 6653|  2.81M|::PROTOBUF_NAMESPACE_ID::Metadata Statement::GetMetadata() const {
 6654|  2.81M|  return ::_pbi::AssignDescriptors(
 6655|  2.81M|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 6656|  2.81M|      file_level_metadata_ruby_2eproto[18]);
 6657|  2.81M|}
_ZN11ruby_fuzzer12StatementSeqC2EPN6google8protobuf5ArenaE:
 6665|  57.5k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 6666|  57.5k|  SharedCtor(arena);
 6667|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.StatementSeq)
 6668|  57.5k|}
_ZN11ruby_fuzzer12StatementSeqD2Ev:
 6688|  57.5k|StatementSeq::~StatementSeq() {
 6689|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.StatementSeq)
 6690|  57.5k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (6690:13): [True: 0, False: 57.5k]
  ------------------
 6691|      0|  (void)arena;
 6692|      0|    return;
 6693|      0|  }
 6694|  57.5k|  SharedDtor();
 6695|  57.5k|}
_ZNK11ruby_fuzzer12StatementSeq11GetMetadataEv:
 6837|  1.37M|::PROTOBUF_NAMESPACE_ID::Metadata StatementSeq::GetMetadata() const {
 6838|  1.37M|  return ::_pbi::AssignDescriptors(
 6839|  1.37M|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 6840|  1.37M|      file_level_metadata_ruby_2eproto[19]);
 6841|  1.37M|}
_ZN11ruby_fuzzer8FunctionC2EPN6google8protobuf5ArenaE:
 6863|    476|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 6864|    476|  SharedCtor(arena);
 6865|       |  // @@protoc_insertion_point(arena_constructor:ruby_fuzzer.Function)
 6866|    476|}
_ZN11ruby_fuzzer8FunctionD2Ev:
 6891|    476|Function::~Function() {
 6892|       |  // @@protoc_insertion_point(destructor:ruby_fuzzer.Function)
 6893|    476|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (6893:13): [True: 0, False: 476]
  ------------------
 6894|      0|  (void)arena;
 6895|      0|    return;
 6896|      0|  }
 6897|    476|  SharedDtor();
 6898|    476|}
_ZN11ruby_fuzzer8Function5ClearEv:
 6909|    952|void Function::Clear() {
 6910|       |// @@protoc_insertion_point(message_clear_start:ruby_fuzzer.Function)
 6911|    952|  ::uint32_t cached_has_bits = 0;
 6912|       |  // Prevent compiler warnings about cached_has_bits being unused
 6913|    952|  (void) cached_has_bits;
 6914|       |
 6915|    952|  cached_has_bits = _impl_._has_bits_[0];
 6916|    952|  if (cached_has_bits & 0x00000001u) {
  ------------------
  |  Branch (6916:7): [True: 0, False: 952]
  ------------------
 6917|      0|    ABSL_DCHECK(_impl_.statements_ != nullptr);
  ------------------
  |  |   43|      0|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      0|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|      0|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|      0|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6918|      0|    _impl_.statements_->Clear();
 6919|      0|  }
 6920|    952|  _impl_._has_bits_.Clear();
 6921|    952|  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
 6922|    952|}
_ZNK11ruby_fuzzer8Function11GetMetadataEv:
 7047|  4.76k|::PROTOBUF_NAMESPACE_ID::Metadata Function::GetMetadata() const {
 7048|  4.76k|  return ::_pbi::AssignDescriptors(
 7049|  4.76k|      &descriptor_table_ruby_2eproto_getter, &descriptor_table_ruby_2eproto_once,
 7050|  4.76k|      file_level_metadata_ruby_2eproto[20]);
 7051|  4.76k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer6VarRefEJEEEPT_PS1_DpOT0_:
 7056|  58.4k|Arena::CreateMaybeMessage< ::ruby_fuzzer::VarRef >(Arena* arena) {
 7057|  58.4k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::VarRef >(arena);
 7058|  58.4k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer7ArrTypeEJEEEPT_PS1_DpOT0_:
 7060|  46.7k|Arena::CreateMaybeMessage< ::ruby_fuzzer::ArrType >(Arena* arena) {
 7061|  46.7k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::ArrType >(arena);
 7062|  46.7k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer6KVPairEJEEEPT_PS1_DpOT0_:
 7064|   164k|Arena::CreateMaybeMessage< ::ruby_fuzzer::KVPair >(Arena* arena) {
 7065|   164k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::KVPair >(arena);
 7066|   164k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer8HashTypeEJEEEPT_PS1_DpOT0_:
 7068|  8.00k|Arena::CreateMaybeMessage< ::ruby_fuzzer::HashType >(Arena* arena) {
 7069|  8.00k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::HashType >(arena);
 7070|  8.00k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer9MathConstEJEEEPT_PS1_DpOT0_:
 7076|    785|Arena::CreateMaybeMessage< ::ruby_fuzzer::MathConst >(Arena* arena) {
 7077|    785|  return Arena::CreateMessageInternal< ::ruby_fuzzer::MathConst >(arena);
 7078|    785|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer5ConstEJEEEPT_PS1_DpOT0_:
 7080|   337k|Arena::CreateMaybeMessage< ::ruby_fuzzer::Const >(Arena* arena) {
 7081|   337k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::Const >(arena);
 7082|   337k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer8BinaryOpEJEEEPT_PS1_DpOT0_:
 7084|  95.7k|Arena::CreateMaybeMessage< ::ruby_fuzzer::BinaryOp >(Arena* arena) {
 7085|  95.7k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::BinaryOp >(arena);
 7086|  95.7k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer6RvalueEJEEEPT_PS1_DpOT0_:
 7088|   398k|Arena::CreateMaybeMessage< ::ruby_fuzzer::Rvalue >(Arena* arena) {
 7089|   398k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::Rvalue >(arena);
 7090|   398k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer19AssignmentStatementEJEEEPT_PS1_DpOT0_:
 7092|   120k|Arena::CreateMaybeMessage< ::ruby_fuzzer::AssignmentStatement >(Arena* arena) {
 7093|   120k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::AssignmentStatement >(arena);
 7094|   120k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer6IfElseEJEEEPT_PS1_DpOT0_:
 7096|  18.7k|Arena::CreateMaybeMessage< ::ruby_fuzzer::IfElse >(Arena* arena) {
 7097|  18.7k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::IfElse >(arena);
 7098|  18.7k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer7TernaryEJEEEPT_PS1_DpOT0_:
 7100|  6.62k|Arena::CreateMaybeMessage< ::ruby_fuzzer::Ternary >(Arena* arena) {
 7101|  6.62k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::Ternary >(arena);
 7102|  6.62k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer11ObjectSpaceEJEEEPT_PS1_DpOT0_:
 7104|  8.00k|Arena::CreateMaybeMessage< ::ruby_fuzzer::ObjectSpace >(Arena* arena) {
 7105|  8.00k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::ObjectSpace >(arena);
 7106|  8.00k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer4TimeEJEEEPT_PS1_DpOT0_:
 7108|  6.52k|Arena::CreateMaybeMessage< ::ruby_fuzzer::Time >(Arena* arena) {
 7109|  6.52k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::Time >(arena);
 7110|  6.52k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer5ArrayEJEEEPT_PS1_DpOT0_:
 7112|  46.7k|Arena::CreateMaybeMessage< ::ruby_fuzzer::Array >(Arena* arena) {
 7113|  46.7k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::Array >(arena);
 7114|  46.7k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer8MathTypeEJEEEPT_PS1_DpOT0_:
 7116|  4.82k|Arena::CreateMaybeMessage< ::ruby_fuzzer::MathType >(Arena* arena) {
 7117|  4.82k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::MathType >(arena);
 7118|  4.82k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer7MathOpsEJEEEPT_PS1_DpOT0_:
 7120|  4.82k|Arena::CreateMaybeMessage< ::ruby_fuzzer::MathOps >(Arena* arena) {
 7121|  4.82k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::MathOps >(arena);
 7122|  4.82k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer12BuiltinFuncsEJEEEPT_PS1_DpOT0_:
 7124|  84.6k|Arena::CreateMaybeMessage< ::ruby_fuzzer::BuiltinFuncs >(Arena* arena) {
 7125|  84.6k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::BuiltinFuncs >(arena);
 7126|  84.6k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer9StatementEJEEEPT_PS1_DpOT0_:
 7128|   343k|Arena::CreateMaybeMessage< ::ruby_fuzzer::Statement >(Arena* arena) {
 7129|   343k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::Statement >(arena);
 7130|   343k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN11ruby_fuzzer12StatementSeqEJEEEPT_PS1_DpOT0_:
 7132|  57.5k|Arena::CreateMaybeMessage< ::ruby_fuzzer::StatementSeq >(Arena* arena) {
 7133|  57.5k|  return Arena::CreateMessageInternal< ::ruby_fuzzer::StatementSeq >(arena);
 7134|  57.5k|}
_ZN11ruby_fuzzer6VarRef10SharedCtorEPN6google8protobuf5ArenaE:
 1060|  58.4k|inline void VarRef::SharedCtor(::_pb::Arena* arena) {
 1061|  58.4k|  (void)arena;
 1062|  58.4k|  new (&_impl_) Impl_{
 1063|  58.4k|      decltype(_impl_._has_bits_){}
 1064|  58.4k|    , /*decltype(_impl_._cached_size_)*/{}
 1065|  58.4k|    , decltype(_impl_.varnum_) { 0 }
 1066|       |
 1067|  58.4k|  };
 1068|  58.4k|}
_ZN11ruby_fuzzer6VarRef10SharedDtorEv:
 1079|  58.4k|inline void VarRef::SharedDtor() {
 1080|  58.4k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  58.4k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  58.4k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  58.4k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  58.4k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  58.4k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  58.4k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1081|  58.4k|}
_ZN11ruby_fuzzer7ArrType10SharedCtorEPN6google8protobuf5ArenaE:
 1245|  46.7k|inline void ArrType::SharedCtor(::_pb::Arena* arena) {
 1246|  46.7k|  (void)arena;
 1247|  46.7k|  new (&_impl_) Impl_{
 1248|  46.7k|      decltype(_impl_.elements_){arena}
 1249|  46.7k|    , /*decltype(_impl_._cached_size_)*/{}
 1250|  46.7k|  };
 1251|  46.7k|}
_ZN11ruby_fuzzer7ArrType10SharedDtorEv:
 1262|  46.7k|inline void ArrType::SharedDtor() {
 1263|  46.7k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  46.7k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  46.7k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  46.7k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  46.7k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  46.7k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  46.7k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1264|  46.7k|  _impl_.elements_.~RepeatedPtrField();
 1265|  46.7k|}
_ZN11ruby_fuzzer6KVPair10SharedCtorEPN6google8protobuf5ArenaE:
 1457|   164k|inline void KVPair::SharedCtor(::_pb::Arena* arena) {
 1458|   164k|  (void)arena;
 1459|   164k|  new (&_impl_) Impl_{
 1460|   164k|      decltype(_impl_._has_bits_){}
 1461|   164k|    , /*decltype(_impl_._cached_size_)*/{}
 1462|   164k|    , decltype(_impl_.key_) {}
 1463|       |
 1464|   164k|    , decltype(_impl_.val_) {}
 1465|       |
 1466|   164k|  };
 1467|   164k|  _impl_.key_.InitDefault();
 1468|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 1469|       |        _impl_.key_.Set("", GetArenaForAllocation());
 1470|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 1471|   164k|  _impl_.val_.InitDefault();
 1472|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 1473|       |        _impl_.val_.Set("", GetArenaForAllocation());
 1474|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 1475|   164k|}
_ZN11ruby_fuzzer6KVPair10SharedDtorEv:
 1486|   164k|inline void KVPair::SharedDtor() {
 1487|   164k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|   164k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|   164k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   164k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|   164k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   164k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   164k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1488|   164k|  _impl_.key_.Destroy();
 1489|   164k|  _impl_.val_.Destroy();
 1490|   164k|}
_ZN11ruby_fuzzer8HashType10SharedCtorEPN6google8protobuf5ArenaE:
 1722|  8.00k|inline void HashType::SharedCtor(::_pb::Arena* arena) {
 1723|  8.00k|  (void)arena;
 1724|  8.00k|  new (&_impl_) Impl_{
 1725|  8.00k|      decltype(_impl_.keyval_){arena}
 1726|  8.00k|    , /*decltype(_impl_._cached_size_)*/{}
 1727|  8.00k|  };
 1728|  8.00k|}
_ZN11ruby_fuzzer8HashType10SharedDtorEv:
 1739|  8.00k|inline void HashType::SharedDtor() {
 1740|  8.00k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  8.00k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  8.00k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  8.00k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  8.00k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  8.00k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  8.00k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1741|  8.00k|  _impl_.keyval_.~RepeatedPtrField();
 1742|  8.00k|}
_ZN11ruby_fuzzer9MathConst10SharedCtorEPN6google8protobuf5ArenaE:
 2191|    785|inline void MathConst::SharedCtor(::_pb::Arena* arena) {
 2192|    785|  (void)arena;
 2193|    785|  new (&_impl_) Impl_{
 2194|    785|      decltype(_impl_._has_bits_){}
 2195|    785|    , /*decltype(_impl_._cached_size_)*/{}
 2196|    785|    , decltype(_impl_.math_const_) { 0 }
 2197|       |
 2198|    785|  };
 2199|    785|}
_ZN11ruby_fuzzer9MathConst10SharedDtorEv:
 2210|    785|inline void MathConst::SharedDtor() {
 2211|    785|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|    785|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    785|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    785|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    785|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    785|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    785|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2212|    785|}
_ZN11ruby_fuzzer5Const10SharedCtorEPN6google8protobuf5ArenaE:
 2396|   337k|inline void Const::SharedCtor(::_pb::Arena* arena) {
 2397|   337k|  (void)arena;
 2398|   337k|  new (&_impl_) Impl_{
 2399|   337k|      decltype(_impl_.const_oneof_){}
 2400|   337k|    , /*decltype(_impl_._cached_size_)*/{}
 2401|   337k|    , /*decltype(_impl_._oneof_case_)*/{}
 2402|   337k|  };
 2403|   337k|  clear_has_const_oneof();
 2404|   337k|}
_ZN11ruby_fuzzer5Const10SharedDtorEv:
 2415|   337k|inline void Const::SharedDtor() {
 2416|   337k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|   337k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|   337k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   337k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|   337k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   337k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   337k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2417|   337k|  if (has_const_oneof()) {
  ------------------
  |  Branch (2417:7): [True: 36.9k, False: 301k]
  ------------------
 2418|  36.9k|    clear_const_oneof();
 2419|  36.9k|  }
 2420|   337k|}
_ZN11ruby_fuzzer8BinaryOp10SharedCtorEPN6google8protobuf5ArenaE:
 2670|  95.7k|inline void BinaryOp::SharedCtor(::_pb::Arena* arena) {
 2671|  95.7k|  (void)arena;
 2672|  95.7k|  new (&_impl_) Impl_{
 2673|  95.7k|      decltype(_impl_._has_bits_){}
 2674|  95.7k|    , /*decltype(_impl_._cached_size_)*/{}
 2675|  95.7k|    , decltype(_impl_.left_){nullptr}
 2676|  95.7k|    , decltype(_impl_.right_){nullptr}
 2677|  95.7k|    , decltype(_impl_.op_) { 0 }
 2678|       |
 2679|  95.7k|  };
 2680|  95.7k|}
_ZN11ruby_fuzzer8BinaryOp10SharedDtorEv:
 2691|  95.7k|inline void BinaryOp::SharedDtor() {
 2692|  95.7k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  95.7k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  95.7k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  95.7k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  95.7k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  95.7k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  95.7k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2693|  95.7k|  if (this != internal_default_instance()) delete _impl_.left_;
  ------------------
  |  Branch (2693:7): [True: 95.7k, False: 0]
  ------------------
 2694|  95.7k|  if (this != internal_default_instance()) delete _impl_.right_;
  ------------------
  |  Branch (2694:7): [True: 95.7k, False: 0]
  ------------------
 2695|  95.7k|}
_ZN11ruby_fuzzer6Rvalue10SharedCtorEPN6google8protobuf5ArenaE:
 3051|   398k|inline void Rvalue::SharedCtor(::_pb::Arena* arena) {
 3052|   398k|  (void)arena;
 3053|   398k|  new (&_impl_) Impl_{
 3054|   398k|      decltype(_impl_.rvalue_oneof_){}
 3055|   398k|    , /*decltype(_impl_._cached_size_)*/{}
 3056|   398k|    , /*decltype(_impl_._oneof_case_)*/{}
 3057|   398k|  };
 3058|   398k|  clear_has_rvalue_oneof();
 3059|   398k|}
_ZN11ruby_fuzzer6Rvalue10SharedDtorEv:
 3070|   398k|inline void Rvalue::SharedDtor() {
 3071|   398k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|   398k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|   398k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   398k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|   398k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   398k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   398k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3072|   398k|  if (has_rvalue_oneof()) {
  ------------------
  |  Branch (3072:7): [True: 186k, False: 211k]
  ------------------
 3073|   186k|    clear_rvalue_oneof();
 3074|   186k|  }
 3075|   398k|}
_ZN11ruby_fuzzer19AssignmentStatement10SharedCtorEPN6google8protobuf5ArenaE:
 3369|   120k|inline void AssignmentStatement::SharedCtor(::_pb::Arena* arena) {
 3370|   120k|  (void)arena;
 3371|   120k|  new (&_impl_) Impl_{
 3372|   120k|      decltype(_impl_._has_bits_){}
 3373|   120k|    , /*decltype(_impl_._cached_size_)*/{}
 3374|   120k|    , decltype(_impl_.rvalue_){nullptr}
 3375|   120k|  };
 3376|   120k|}
_ZN11ruby_fuzzer19AssignmentStatement10SharedDtorEv:
 3387|   120k|inline void AssignmentStatement::SharedDtor() {
 3388|   120k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|   120k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|   120k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   120k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|   120k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   120k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   120k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3389|   120k|  if (this != internal_default_instance()) delete _impl_.rvalue_;
  ------------------
  |  Branch (3389:7): [True: 120k, False: 0]
  ------------------
 3390|   120k|}
_ZN11ruby_fuzzer6IfElse10SharedCtorEPN6google8protobuf5ArenaE:
 3603|  18.7k|inline void IfElse::SharedCtor(::_pb::Arena* arena) {
 3604|  18.7k|  (void)arena;
 3605|  18.7k|  new (&_impl_) Impl_{
 3606|  18.7k|      decltype(_impl_._has_bits_){}
 3607|  18.7k|    , /*decltype(_impl_._cached_size_)*/{}
 3608|  18.7k|    , decltype(_impl_.cond_){nullptr}
 3609|  18.7k|    , decltype(_impl_.if_body_){nullptr}
 3610|  18.7k|    , decltype(_impl_.else_body_){nullptr}
 3611|  18.7k|  };
 3612|  18.7k|}
_ZN11ruby_fuzzer6IfElse10SharedDtorEv:
 3623|  18.7k|inline void IfElse::SharedDtor() {
 3624|  18.7k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  18.7k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  18.7k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  18.7k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  18.7k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  18.7k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  18.7k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3625|  18.7k|  if (this != internal_default_instance()) delete _impl_.cond_;
  ------------------
  |  Branch (3625:7): [True: 18.7k, False: 0]
  ------------------
 3626|  18.7k|  if (this != internal_default_instance()) delete _impl_.if_body_;
  ------------------
  |  Branch (3626:7): [True: 18.7k, False: 0]
  ------------------
 3627|  18.7k|  if (this != internal_default_instance()) delete _impl_.else_body_;
  ------------------
  |  Branch (3627:7): [True: 18.7k, False: 0]
  ------------------
 3628|  18.7k|}
_ZN11ruby_fuzzer7Ternary10SharedCtorEPN6google8protobuf5ArenaE:
 3945|  6.62k|inline void Ternary::SharedCtor(::_pb::Arena* arena) {
 3946|  6.62k|  (void)arena;
 3947|  6.62k|  new (&_impl_) Impl_{
 3948|  6.62k|      decltype(_impl_._has_bits_){}
 3949|  6.62k|    , /*decltype(_impl_._cached_size_)*/{}
 3950|  6.62k|    , decltype(_impl_.tern_cond_){nullptr}
 3951|  6.62k|    , decltype(_impl_.t_branch_){nullptr}
 3952|  6.62k|    , decltype(_impl_.f_branch_){nullptr}
 3953|  6.62k|  };
 3954|  6.62k|}
_ZN11ruby_fuzzer7Ternary10SharedDtorEv:
 3965|  6.62k|inline void Ternary::SharedDtor() {
 3966|  6.62k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  6.62k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  6.62k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  6.62k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  6.62k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  6.62k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  6.62k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3967|  6.62k|  if (this != internal_default_instance()) delete _impl_.tern_cond_;
  ------------------
  |  Branch (3967:7): [True: 6.62k, False: 0]
  ------------------
 3968|  6.62k|  if (this != internal_default_instance()) delete _impl_.t_branch_;
  ------------------
  |  Branch (3968:7): [True: 6.62k, False: 0]
  ------------------
 3969|  6.62k|  if (this != internal_default_instance()) delete _impl_.f_branch_;
  ------------------
  |  Branch (3969:7): [True: 6.62k, False: 0]
  ------------------
 3970|  6.62k|}
_ZN11ruby_fuzzer11ObjectSpace10SharedCtorEPN6google8protobuf5ArenaE:
 4269|  8.00k|inline void ObjectSpace::SharedCtor(::_pb::Arena* arena) {
 4270|  8.00k|  (void)arena;
 4271|  8.00k|  new (&_impl_) Impl_{
 4272|  8.00k|      decltype(_impl_._has_bits_){}
 4273|  8.00k|    , /*decltype(_impl_._cached_size_)*/{}
 4274|  8.00k|    , decltype(_impl_.os_arg_){nullptr}
 4275|  8.00k|    , decltype(_impl_.os_func_) { 1 }
 4276|       |
 4277|  8.00k|  };
 4278|  8.00k|}
_ZN11ruby_fuzzer11ObjectSpace10SharedDtorEv:
 4289|  8.00k|inline void ObjectSpace::SharedDtor() {
 4290|  8.00k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  8.00k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  8.00k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  8.00k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  8.00k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  8.00k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  8.00k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4291|  8.00k|  if (this != internal_default_instance()) delete _impl_.os_arg_;
  ------------------
  |  Branch (4291:7): [True: 8.00k, False: 0]
  ------------------
 4292|  8.00k|}
_ZN11ruby_fuzzer4Time10SharedCtorEPN6google8protobuf5ArenaE:
 4533|  6.52k|inline void Time::SharedCtor(::_pb::Arena* arena) {
 4534|  6.52k|  (void)arena;
 4535|  6.52k|  new (&_impl_) Impl_{
 4536|  6.52k|      decltype(_impl_._has_bits_){}
 4537|  6.52k|    , /*decltype(_impl_._cached_size_)*/{}
 4538|  6.52k|    , decltype(_impl_.t_arg_) { 0u }
 4539|       |
 4540|  6.52k|    , decltype(_impl_.t_func_) { 1 }
 4541|       |
 4542|  6.52k|  };
 4543|  6.52k|}
_ZN11ruby_fuzzer4Time10SharedDtorEv:
 4554|  6.52k|inline void Time::SharedDtor() {
 4555|  6.52k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  6.52k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  6.52k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  6.52k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  6.52k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  6.52k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  6.52k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4556|  6.52k|}
_ZN11ruby_fuzzer5Array10SharedCtorEPN6google8protobuf5ArenaE:
 4817|  46.7k|inline void Array::SharedCtor(::_pb::Arena* arena) {
 4818|  46.7k|  (void)arena;
 4819|  46.7k|  new (&_impl_) Impl_{
 4820|  46.7k|      decltype(_impl_._has_bits_){}
 4821|  46.7k|    , /*decltype(_impl_._cached_size_)*/{}
 4822|  46.7k|    , decltype(_impl_.arr_arg_){nullptr}
 4823|  46.7k|    , decltype(_impl_.val_arg_){nullptr}
 4824|  46.7k|    , decltype(_impl_.arr_func_) { 1 }
 4825|       |
 4826|  46.7k|  };
 4827|  46.7k|}
_ZN11ruby_fuzzer5Array10SharedDtorEv:
 4838|  46.7k|inline void Array::SharedDtor() {
 4839|  46.7k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  46.7k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  46.7k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  46.7k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  46.7k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  46.7k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  46.7k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4840|  46.7k|  if (this != internal_default_instance()) delete _impl_.arr_arg_;
  ------------------
  |  Branch (4840:7): [True: 46.7k, False: 0]
  ------------------
 4841|  46.7k|  if (this != internal_default_instance()) delete _impl_.val_arg_;
  ------------------
  |  Branch (4841:7): [True: 46.7k, False: 0]
  ------------------
 4842|  46.7k|}
_ZN11ruby_fuzzer8MathType10SharedCtorEPN6google8protobuf5ArenaE:
 5170|  4.82k|inline void MathType::SharedCtor(::_pb::Arena* arena) {
 5171|  4.82k|  (void)arena;
 5172|  4.82k|  new (&_impl_) Impl_{
 5173|  4.82k|      decltype(_impl_.math_arg_oneof_){}
 5174|  4.82k|    , /*decltype(_impl_._cached_size_)*/{}
 5175|  4.82k|    , /*decltype(_impl_._oneof_case_)*/{}
 5176|  4.82k|  };
 5177|  4.82k|  clear_has_math_arg_oneof();
 5178|  4.82k|}
_ZN11ruby_fuzzer8MathType10SharedDtorEv:
 5189|  4.82k|inline void MathType::SharedDtor() {
 5190|  4.82k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  4.82k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  4.82k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  4.82k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  4.82k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  4.82k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  4.82k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5191|  4.82k|  if (has_math_arg_oneof()) {
  ------------------
  |  Branch (5191:7): [True: 1.76k, False: 3.06k]
  ------------------
 5192|  1.76k|    clear_math_arg_oneof();
 5193|  1.76k|  }
 5194|  4.82k|}
_ZN11ruby_fuzzer7MathOps10SharedCtorEPN6google8protobuf5ArenaE:
 5458|  4.82k|inline void MathOps::SharedCtor(::_pb::Arena* arena) {
 5459|  4.82k|  (void)arena;
 5460|  4.82k|  new (&_impl_) Impl_{
 5461|  4.82k|      decltype(_impl_._has_bits_){}
 5462|  4.82k|    , /*decltype(_impl_._cached_size_)*/{}
 5463|  4.82k|    , decltype(_impl_.math_arg_){nullptr}
 5464|  4.82k|    , decltype(_impl_.math_op_) { 1 }
 5465|       |
 5466|  4.82k|  };
 5467|  4.82k|}
_ZN11ruby_fuzzer7MathOps10SharedDtorEv:
 5478|  4.82k|inline void MathOps::SharedDtor() {
 5479|  4.82k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  4.82k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  4.82k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  4.82k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  4.82k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  4.82k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  4.82k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5480|  4.82k|  if (this != internal_default_instance()) delete _impl_.math_arg_;
  ------------------
  |  Branch (5480:7): [True: 4.82k, False: 0]
  ------------------
 5481|  4.82k|}
_ZN11ruby_fuzzer12BuiltinFuncs10SharedCtorEPN6google8protobuf5ArenaE:
 5823|  84.6k|inline void BuiltinFuncs::SharedCtor(::_pb::Arena* arena) {
 5824|  84.6k|  (void)arena;
 5825|  84.6k|  new (&_impl_) Impl_{
 5826|  84.6k|      decltype(_impl_.bifunc_oneof_){}
 5827|  84.6k|    , /*decltype(_impl_._cached_size_)*/{}
 5828|  84.6k|    , /*decltype(_impl_._oneof_case_)*/{}
 5829|  84.6k|  };
 5830|  84.6k|  clear_has_bifunc_oneof();
 5831|  84.6k|}
_ZN11ruby_fuzzer12BuiltinFuncs10SharedDtorEv:
 5842|  84.6k|inline void BuiltinFuncs::SharedDtor() {
 5843|  84.6k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  84.6k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  84.6k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  84.6k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  84.6k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  84.6k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  84.6k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5844|  84.6k|  if (has_bifunc_oneof()) {
  ------------------
  |  Branch (5844:7): [True: 66.1k, False: 18.4k]
  ------------------
 5845|  66.1k|    clear_bifunc_oneof();
 5846|  66.1k|  }
 5847|  84.6k|}
_ZN11ruby_fuzzer9Statement10SharedCtorEPN6google8protobuf5ArenaE:
 6299|   343k|inline void Statement::SharedCtor(::_pb::Arena* arena) {
 6300|   343k|  (void)arena;
 6301|   343k|  new (&_impl_) Impl_{
 6302|   343k|      decltype(_impl_.stmt_oneof_){}
 6303|   343k|    , /*decltype(_impl_._cached_size_)*/{}
 6304|   343k|    , /*decltype(_impl_._oneof_case_)*/{}
 6305|   343k|  };
 6306|   343k|  clear_has_stmt_oneof();
 6307|   343k|}
_ZN11ruby_fuzzer9Statement10SharedDtorEv:
 6318|   343k|inline void Statement::SharedDtor() {
 6319|   343k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|   343k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|   343k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   343k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|   343k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   343k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   343k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6320|   343k|  if (has_stmt_oneof()) {
  ------------------
  |  Branch (6320:7): [True: 249k, False: 93.6k]
  ------------------
 6321|   249k|    clear_stmt_oneof();
 6322|   249k|  }
 6323|   343k|}
_ZN11ruby_fuzzer12StatementSeq10SharedCtorEPN6google8protobuf5ArenaE:
 6680|  57.5k|inline void StatementSeq::SharedCtor(::_pb::Arena* arena) {
 6681|  57.5k|  (void)arena;
 6682|  57.5k|  new (&_impl_) Impl_{
 6683|  57.5k|      decltype(_impl_.statements_){arena}
 6684|  57.5k|    , /*decltype(_impl_._cached_size_)*/{}
 6685|  57.5k|  };
 6686|  57.5k|}
_ZN11ruby_fuzzer12StatementSeq10SharedDtorEv:
 6697|  57.5k|inline void StatementSeq::SharedDtor() {
 6698|  57.5k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  57.5k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  57.5k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  57.5k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  57.5k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  57.5k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  57.5k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6699|  57.5k|  _impl_.statements_.~RepeatedPtrField();
 6700|  57.5k|}
_ZN11ruby_fuzzer8Function10SharedCtorEPN6google8protobuf5ArenaE:
 6882|    476|inline void Function::SharedCtor(::_pb::Arena* arena) {
 6883|    476|  (void)arena;
 6884|    476|  new (&_impl_) Impl_{
 6885|    476|      decltype(_impl_._has_bits_){}
 6886|    476|    , /*decltype(_impl_._cached_size_)*/{}
 6887|    476|    , decltype(_impl_.statements_){nullptr}
 6888|    476|  };
 6889|    476|}
_ZN11ruby_fuzzer8Function10SharedDtorEv:
 6900|    476|inline void Function::SharedDtor() {
 6901|    476|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|    476|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    476|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    476|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    476|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    476|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    476|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6902|    476|  if (this != internal_default_instance()) delete _impl_.statements_;
  ------------------
  |  Branch (6902:7): [True: 476, False: 0]
  ------------------
 6903|    476|}

_ZN11ruby_fuzzer8FunctionC2Ev:
 4346|    476|  inline Function() : Function(nullptr) {}
_ZNK11ruby_fuzzer6VarRef3NewEPN6google8protobuf5ArenaE:
  493|  58.4k|  VarRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
  494|  58.4k|    return CreateMaybeMessage<VarRef>(arena);
  495|  58.4k|  }
_ZNK11ruby_fuzzer7ArrType3NewEPN6google8protobuf5ArenaE:
  649|  46.7k|  ArrType* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
  650|  46.7k|    return CreateMaybeMessage<ArrType>(arena);
  651|  46.7k|  }
_ZNK11ruby_fuzzer6KVPair3NewEPN6google8protobuf5ArenaE:
  811|   164k|  KVPair* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
  812|   164k|    return CreateMaybeMessage<KVPair>(arena);
  813|   164k|  }
_ZNK11ruby_fuzzer8HashType3NewEPN6google8protobuf5ArenaE:
 1003|  8.00k|  HashType* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 1004|  8.00k|    return CreateMaybeMessage<HashType>(arena);
 1005|  8.00k|  }
_ZNK11ruby_fuzzer9MathConst3NewEPN6google8protobuf5ArenaE:
 1375|    785|  MathConst* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 1376|    785|    return CreateMaybeMessage<MathConst>(arena);
 1377|    785|  }
_ZNK11ruby_fuzzer5Const3NewEPN6google8protobuf5ArenaE:
 1557|   337k|  Const* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 1558|   337k|    return CreateMaybeMessage<Const>(arena);
 1559|   337k|  }
_ZN11ruby_fuzzer5Const5Impl_15ConstOneofUnionC2Ev:
 1644|   337k|      constexpr ConstOneofUnion() : _constinit_{} {}
_ZN11ruby_fuzzer8BinaryOp25internal_default_instanceEv:
 1707|   191k|  static inline const BinaryOp* internal_default_instance() {
 1708|   191k|    return reinterpret_cast<const BinaryOp*>(
 1709|   191k|               &_BinaryOp_default_instance_);
 1710|   191k|  }
_ZNK11ruby_fuzzer8BinaryOp3NewEPN6google8protobuf5ArenaE:
 1738|  95.7k|  BinaryOp* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 1739|  95.7k|    return CreateMaybeMessage<BinaryOp>(arena);
 1740|  95.7k|  }
_ZNK11ruby_fuzzer6Rvalue3NewEPN6google8protobuf5ArenaE:
 1969|   398k|  Rvalue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 1970|   398k|    return CreateMaybeMessage<Rvalue>(arena);
 1971|   398k|  }
_ZN11ruby_fuzzer6Rvalue5Impl_16RvalueOneofUnionC2Ev:
 2090|   398k|      constexpr RvalueOneofUnion() : _constinit_{} {}
_ZN11ruby_fuzzer19AssignmentStatement25internal_default_instanceEv:
 2154|   120k|  static inline const AssignmentStatement* internal_default_instance() {
 2155|   120k|    return reinterpret_cast<const AssignmentStatement*>(
 2156|   120k|               &_AssignmentStatement_default_instance_);
 2157|   120k|  }
_ZNK11ruby_fuzzer19AssignmentStatement3NewEPN6google8protobuf5ArenaE:
 2185|   120k|  AssignmentStatement* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 2186|   120k|    return CreateMaybeMessage<AssignmentStatement>(arena);
 2187|   120k|  }
_ZN11ruby_fuzzer6IfElse25internal_default_instanceEv:
 2313|  56.2k|  static inline const IfElse* internal_default_instance() {
 2314|  56.2k|    return reinterpret_cast<const IfElse*>(
 2315|  56.2k|               &_IfElse_default_instance_);
 2316|  56.2k|  }
_ZNK11ruby_fuzzer6IfElse3NewEPN6google8protobuf5ArenaE:
 2344|  18.7k|  IfElse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 2345|  18.7k|    return CreateMaybeMessage<IfElse>(arena);
 2346|  18.7k|  }
_ZN11ruby_fuzzer7Ternary25internal_default_instanceEv:
 2507|  19.8k|  static inline const Ternary* internal_default_instance() {
 2508|  19.8k|    return reinterpret_cast<const Ternary*>(
 2509|  19.8k|               &_Ternary_default_instance_);
 2510|  19.8k|  }
_ZNK11ruby_fuzzer7Ternary3NewEPN6google8protobuf5ArenaE:
 2538|  6.62k|  Ternary* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 2539|  6.62k|    return CreateMaybeMessage<Ternary>(arena);
 2540|  6.62k|  }
_ZN11ruby_fuzzer11ObjectSpace25internal_default_instanceEv:
 2701|  8.00k|  static inline const ObjectSpace* internal_default_instance() {
 2702|  8.00k|    return reinterpret_cast<const ObjectSpace*>(
 2703|  8.00k|               &_ObjectSpace_default_instance_);
 2704|  8.00k|  }
_ZNK11ruby_fuzzer11ObjectSpace3NewEPN6google8protobuf5ArenaE:
 2732|  8.00k|  ObjectSpace* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 2733|  8.00k|    return CreateMaybeMessage<ObjectSpace>(arena);
 2734|  8.00k|  }
_ZNK11ruby_fuzzer4Time3NewEPN6google8protobuf5ArenaE:
 2926|  6.52k|  Time* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 2927|  6.52k|    return CreateMaybeMessage<Time>(arena);
 2928|  6.52k|  }
_ZN11ruby_fuzzer5Array25internal_default_instanceEv:
 3087|  93.5k|  static inline const Array* internal_default_instance() {
 3088|  93.5k|    return reinterpret_cast<const Array*>(
 3089|  93.5k|               &_Array_default_instance_);
 3090|  93.5k|  }
_ZNK11ruby_fuzzer5Array3NewEPN6google8protobuf5ArenaE:
 3118|  46.7k|  Array* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 3119|  46.7k|    return CreateMaybeMessage<Array>(arena);
 3120|  46.7k|  }
_ZNK11ruby_fuzzer8MathType3NewEPN6google8protobuf5ArenaE:
 3352|  4.82k|  MathType* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 3353|  4.82k|    return CreateMaybeMessage<MathType>(arena);
 3354|  4.82k|  }
_ZN11ruby_fuzzer8MathType5Impl_17MathArgOneofUnionC2Ev:
 3453|  4.82k|      constexpr MathArgOneofUnion() : _constinit_{} {}
_ZN11ruby_fuzzer7MathOps25internal_default_instanceEv:
 3516|  4.82k|  static inline const MathOps* internal_default_instance() {
 3517|  4.82k|    return reinterpret_cast<const MathOps*>(
 3518|  4.82k|               &_MathOps_default_instance_);
 3519|  4.82k|  }
_ZNK11ruby_fuzzer7MathOps3NewEPN6google8protobuf5ArenaE:
 3547|  4.82k|  MathOps* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 3548|  4.82k|    return CreateMaybeMessage<MathOps>(arena);
 3549|  4.82k|  }
_ZNK11ruby_fuzzer12BuiltinFuncs3NewEPN6google8protobuf5ArenaE:
 3758|  84.6k|  BuiltinFuncs* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 3759|  84.6k|    return CreateMaybeMessage<BuiltinFuncs>(arena);
 3760|  84.6k|  }
_ZN11ruby_fuzzer12BuiltinFuncs5Impl_16BifuncOneofUnionC2Ev:
 3899|  84.6k|      constexpr BifuncOneofUnion() : _constinit_{} {}
_ZNK11ruby_fuzzer9Statement3NewEPN6google8protobuf5ArenaE:
 4004|   343k|  Statement* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 4005|   343k|    return CreateMaybeMessage<Statement>(arena);
 4006|   343k|  }
_ZN11ruby_fuzzer9Statement5Impl_14StmtOneofUnionC2Ev:
 4165|   343k|      constexpr StmtOneofUnion() : _constinit_{} {}
_ZNK11ruby_fuzzer12StatementSeq3NewEPN6google8protobuf5ArenaE:
 4262|  57.5k|  StatementSeq* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 4263|  57.5k|    return CreateMaybeMessage<StatementSeq>(arena);
 4264|  57.5k|  }
_ZN11ruby_fuzzer8Function25internal_default_instanceEv:
 4393|    476|  static inline const Function* internal_default_instance() {
 4394|    476|    return reinterpret_cast<const Function*>(
 4395|    476|               &_Function_default_instance_);
 4396|    476|  }
_ZNK11ruby_fuzzer6VarRef6varnumEv:
 4527|  58.4k|inline ::int32_t VarRef::varnum() const {
 4528|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.VarRef.varnum)
 4529|  58.4k|  return _internal_varnum();
 4530|  58.4k|}
_ZNK11ruby_fuzzer6VarRef16_internal_varnumEv:
 4535|  58.4k|inline ::int32_t VarRef::_internal_varnum() const {
 4536|  58.4k|  return _impl_.varnum_;
 4537|  58.4k|}
_ZNK11ruby_fuzzer7ArrType23_internal_elements_sizeEv:
 4548|  54.0k|inline int ArrType::_internal_elements_size() const {
 4549|  54.0k|  return _impl_.elements_.size();
 4550|  54.0k|}
_ZNK11ruby_fuzzer7ArrType13elements_sizeEv:
 4551|  54.0k|inline int ArrType::elements_size() const {
 4552|  54.0k|  return _internal_elements_size();
 4553|  54.0k|}
_ZNK11ruby_fuzzer7ArrType8elementsEv:
 4582|  7.26k|ArrType::elements() const {
 4583|       |  // @@protoc_insertion_point(field_list:ruby_fuzzer.ArrType.elements)
 4584|  7.26k|  return _impl_.elements_;
 4585|  7.26k|}
_ZNK11ruby_fuzzer6KVPair3keyEv:
 4600|   164k|inline const std::string& KVPair::key() const {
 4601|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.KVPair.key)
 4602|   164k|  return _internal_key();
 4603|   164k|}
_ZNK11ruby_fuzzer6KVPair13_internal_keyEv:
 4616|   164k|inline const std::string& KVPair::_internal_key() const {
 4617|   164k|  return _impl_.key_.Get();
 4618|   164k|}
_ZNK11ruby_fuzzer6KVPair3valEv:
 4665|   164k|inline const std::string& KVPair::val() const {
 4666|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.KVPair.val)
 4667|   164k|  return _internal_val();
 4668|   164k|}
_ZNK11ruby_fuzzer6KVPair13_internal_valEv:
 4681|   164k|inline const std::string& KVPair::_internal_val() const {
 4682|   164k|  return _impl_.val_.Get();
 4683|   164k|}
_ZNK11ruby_fuzzer8HashType21_internal_keyval_sizeEv:
 4726|  10.0k|inline int HashType::_internal_keyval_size() const {
 4727|  10.0k|  return _impl_.keyval_.size();
 4728|  10.0k|}
_ZNK11ruby_fuzzer8HashType11keyval_sizeEv:
 4729|  10.0k|inline int HashType::keyval_size() const {
 4730|  10.0k|  return _internal_keyval_size();
 4731|  10.0k|}
_ZNK11ruby_fuzzer8HashType6keyvalEv:
 4760|  2.08k|HashType::keyval() const {
 4761|       |  // @@protoc_insertion_point(field_list:ruby_fuzzer.HashType.keyval)
 4762|  2.08k|  return _impl_.keyval_;
 4763|  2.08k|}
_ZNK11ruby_fuzzer9MathConst10math_constEv:
 4873|    785|inline ::ruby_fuzzer::MathConst_MathConstLit MathConst::math_const() const {
 4874|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.MathConst.math_const)
 4875|    785|  return _internal_math_const();
 4876|    785|}
_ZNK11ruby_fuzzer9MathConst20_internal_math_constEv:
 4881|    785|inline ::ruby_fuzzer::MathConst_MathConstLit MathConst::_internal_math_const() const {
 4882|    785|  return static_cast<::ruby_fuzzer::MathConst_MathConstLit>(_impl_.math_const_);
 4883|    785|}
_ZNK11ruby_fuzzer5Const7int_litEv:
 4907|  24.4k|inline ::uint32_t Const::int_lit() const {
 4908|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Const.int_lit)
 4909|  24.4k|  return _internal_int_lit();
 4910|  24.4k|}
_ZNK11ruby_fuzzer5Const17_internal_int_litEv:
 4915|  24.4k|inline ::uint32_t Const::_internal_int_lit() const {
 4916|  24.4k|  if (const_oneof_case() == kIntLit) {
  ------------------
  |  Branch (4916:7): [True: 24.4k, False: 0]
  ------------------
 4917|  24.4k|    return _impl_.const_oneof_.int_lit_;
 4918|  24.4k|  }
 4919|      0|  return 0u;
 4920|  24.4k|}
_ZNK11ruby_fuzzer5Const8bool_valEv:
 4942|  12.5k|inline bool Const::bool_val() const {
 4943|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Const.bool_val)
 4944|  12.5k|  return _internal_bool_val();
 4945|  12.5k|}
_ZNK11ruby_fuzzer5Const18_internal_bool_valEv:
 4950|  12.5k|inline bool Const::_internal_bool_val() const {
 4951|  12.5k|  if (const_oneof_case() == kBoolVal) {
  ------------------
  |  Branch (4951:7): [True: 12.5k, False: 0]
  ------------------
 4952|  12.5k|    return _impl_.const_oneof_.bool_val_;
 4953|  12.5k|  }
 4954|      0|  return false;
 4955|  12.5k|}
_ZNK11ruby_fuzzer5Const15has_const_oneofEv:
 4964|   337k|inline bool Const::has_const_oneof() const {
 4965|   337k|  return const_oneof_case() != CONST_ONEOF_NOT_SET;
 4966|   337k|}
_ZN11ruby_fuzzer5Const21clear_has_const_oneofEv:
 4967|   337k|inline void Const::clear_has_const_oneof() {
 4968|   337k|  _impl_._oneof_case_[0] = CONST_ONEOF_NOT_SET;
 4969|   337k|}
_ZNK11ruby_fuzzer5Const16const_oneof_caseEv:
 4970|   749k|inline Const::ConstOneofCase Const::const_oneof_case() const {
 4971|   749k|  return Const::ConstOneofCase(_impl_._oneof_case_[0]);
 4972|   749k|}
_ZNK11ruby_fuzzer8BinaryOp2opEv:
 4986|  95.7k|inline ::ruby_fuzzer::BinaryOp_Op BinaryOp::op() const {
 4987|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.BinaryOp.op)
 4988|  95.7k|  return _internal_op();
 4989|  95.7k|}
_ZNK11ruby_fuzzer8BinaryOp12_internal_opEv:
 4994|  95.7k|inline ::ruby_fuzzer::BinaryOp_Op BinaryOp::_internal_op() const {
 4995|  95.7k|  return static_cast<::ruby_fuzzer::BinaryOp_Op>(_impl_.op_);
 4996|  95.7k|}
_ZNK11ruby_fuzzer8BinaryOp14_internal_leftEv:
 5013|  95.7k|inline const ::ruby_fuzzer::Rvalue& BinaryOp::_internal_left() const {
 5014|  95.7k|  const ::ruby_fuzzer::Rvalue* p = _impl_.left_;
 5015|  95.7k|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::Rvalue&>(
  ------------------
  |  Branch (5015:10): [True: 95.7k, False: 0]
  ------------------
 5016|      0|      ::ruby_fuzzer::_Rvalue_default_instance_);
 5017|  95.7k|}
_ZNK11ruby_fuzzer8BinaryOp4leftEv:
 5018|  95.7k|inline const ::ruby_fuzzer::Rvalue& BinaryOp::left() const {
 5019|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.BinaryOp.left)
 5020|  95.7k|  return _internal_left();
 5021|  95.7k|}
_ZNK11ruby_fuzzer8BinaryOp15_internal_rightEv:
 5100|  95.7k|inline const ::ruby_fuzzer::Rvalue& BinaryOp::_internal_right() const {
 5101|  95.7k|  const ::ruby_fuzzer::Rvalue* p = _impl_.right_;
 5102|  95.7k|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::Rvalue&>(
  ------------------
  |  Branch (5102:10): [True: 95.7k, False: 0]
  ------------------
 5103|      0|      ::ruby_fuzzer::_Rvalue_default_instance_);
 5104|  95.7k|}
_ZNK11ruby_fuzzer8BinaryOp5rightEv:
 5105|  95.7k|inline const ::ruby_fuzzer::Rvalue& BinaryOp::right() const {
 5106|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.BinaryOp.right)
 5107|  95.7k|  return _internal_right();
 5108|  95.7k|}
_ZNK11ruby_fuzzer6Rvalue16_internal_varrefEv:
 5213|  58.4k|inline const ::ruby_fuzzer::VarRef& Rvalue::_internal_varref() const {
 5214|  58.4k|  return rvalue_oneof_case() == kVarref
  ------------------
  |  Branch (5214:10): [True: 58.4k, False: 0]
  ------------------
 5215|  58.4k|      ? *_impl_.rvalue_oneof_.varref_
 5216|  58.4k|      : reinterpret_cast< ::ruby_fuzzer::VarRef&>(::ruby_fuzzer::_VarRef_default_instance_);
 5217|  58.4k|}
_ZNK11ruby_fuzzer6Rvalue6varrefEv:
 5218|  58.4k|inline const ::ruby_fuzzer::VarRef& Rvalue::varref() const {
 5219|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Rvalue.varref)
 5220|  58.4k|  return _internal_varref();
 5221|  58.4k|}
_ZNK11ruby_fuzzer6Rvalue14_internal_consEv:
 5287|  32.3k|inline const ::ruby_fuzzer::Const& Rvalue::_internal_cons() const {
 5288|  32.3k|  return rvalue_oneof_case() == kCons
  ------------------
  |  Branch (5288:10): [True: 32.3k, False: 0]
  ------------------
 5289|  32.3k|      ? *_impl_.rvalue_oneof_.cons_
 5290|  32.3k|      : reinterpret_cast< ::ruby_fuzzer::Const&>(::ruby_fuzzer::_Const_default_instance_);
 5291|  32.3k|}
_ZNK11ruby_fuzzer6Rvalue4consEv:
 5292|  32.3k|inline const ::ruby_fuzzer::Const& Rvalue::cons() const {
 5293|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Rvalue.cons)
 5294|  32.3k|  return _internal_cons();
 5295|  32.3k|}
_ZNK11ruby_fuzzer6Rvalue15_internal_binopEv:
 5361|  95.7k|inline const ::ruby_fuzzer::BinaryOp& Rvalue::_internal_binop() const {
 5362|  95.7k|  return rvalue_oneof_case() == kBinop
  ------------------
  |  Branch (5362:10): [True: 95.7k, False: 0]
  ------------------
 5363|  95.7k|      ? *_impl_.rvalue_oneof_.binop_
 5364|  95.7k|      : reinterpret_cast< ::ruby_fuzzer::BinaryOp&>(::ruby_fuzzer::_BinaryOp_default_instance_);
 5365|  95.7k|}
_ZNK11ruby_fuzzer6Rvalue5binopEv:
 5366|  95.7k|inline const ::ruby_fuzzer::BinaryOp& Rvalue::binop() const {
 5367|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Rvalue.binop)
 5368|  95.7k|  return _internal_binop();
 5369|  95.7k|}
_ZNK11ruby_fuzzer6Rvalue16has_rvalue_oneofEv:
 5403|   398k|inline bool Rvalue::has_rvalue_oneof() const {
 5404|   398k|  return rvalue_oneof_case() != RVALUE_ONEOF_NOT_SET;
 5405|   398k|}
_ZN11ruby_fuzzer6Rvalue22clear_has_rvalue_oneofEv:
 5406|   398k|inline void Rvalue::clear_has_rvalue_oneof() {
 5407|   398k|  _impl_._oneof_case_[0] = RVALUE_ONEOF_NOT_SET;
 5408|   398k|}
_ZNK11ruby_fuzzer6Rvalue17rvalue_oneof_caseEv:
 5409|  1.16M|inline Rvalue::RvalueOneofCase Rvalue::rvalue_oneof_case() const {
 5410|  1.16M|  return Rvalue::RvalueOneofCase(_impl_._oneof_case_[0]);
 5411|  1.16M|}
_ZNK11ruby_fuzzer19AssignmentStatement16_internal_rvalueEv:
 5426|   120k|inline const ::ruby_fuzzer::Rvalue& AssignmentStatement::_internal_rvalue() const {
 5427|   120k|  const ::ruby_fuzzer::Rvalue* p = _impl_.rvalue_;
 5428|   120k|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::Rvalue&>(
  ------------------
  |  Branch (5428:10): [True: 120k, False: 0]
  ------------------
 5429|      0|      ::ruby_fuzzer::_Rvalue_default_instance_);
 5430|   120k|}
_ZNK11ruby_fuzzer19AssignmentStatement6rvalueEv:
 5431|   120k|inline const ::ruby_fuzzer::Rvalue& AssignmentStatement::rvalue() const {
 5432|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.AssignmentStatement.rvalue)
 5433|   120k|  return _internal_rvalue();
 5434|   120k|}
_ZNK11ruby_fuzzer6IfElse14_internal_condEv:
 5517|  18.7k|inline const ::ruby_fuzzer::Rvalue& IfElse::_internal_cond() const {
 5518|  18.7k|  const ::ruby_fuzzer::Rvalue* p = _impl_.cond_;
 5519|  18.7k|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::Rvalue&>(
  ------------------
  |  Branch (5519:10): [True: 18.7k, False: 0]
  ------------------
 5520|      0|      ::ruby_fuzzer::_Rvalue_default_instance_);
 5521|  18.7k|}
_ZNK11ruby_fuzzer6IfElse4condEv:
 5522|  18.7k|inline const ::ruby_fuzzer::Rvalue& IfElse::cond() const {
 5523|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.IfElse.cond)
 5524|  18.7k|  return _internal_cond();
 5525|  18.7k|}
_ZNK11ruby_fuzzer6IfElse17_internal_if_bodyEv:
 5604|  18.7k|inline const ::ruby_fuzzer::StatementSeq& IfElse::_internal_if_body() const {
 5605|  18.7k|  const ::ruby_fuzzer::StatementSeq* p = _impl_.if_body_;
 5606|  18.7k|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::StatementSeq&>(
  ------------------
  |  Branch (5606:10): [True: 18.7k, False: 0]
  ------------------
 5607|      0|      ::ruby_fuzzer::_StatementSeq_default_instance_);
 5608|  18.7k|}
_ZNK11ruby_fuzzer6IfElse7if_bodyEv:
 5609|  18.7k|inline const ::ruby_fuzzer::StatementSeq& IfElse::if_body() const {
 5610|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.IfElse.if_body)
 5611|  18.7k|  return _internal_if_body();
 5612|  18.7k|}
_ZNK11ruby_fuzzer6IfElse19_internal_else_bodyEv:
 5691|  18.7k|inline const ::ruby_fuzzer::StatementSeq& IfElse::_internal_else_body() const {
 5692|  18.7k|  const ::ruby_fuzzer::StatementSeq* p = _impl_.else_body_;
 5693|  18.7k|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::StatementSeq&>(
  ------------------
  |  Branch (5693:10): [True: 18.7k, False: 0]
  ------------------
 5694|      0|      ::ruby_fuzzer::_StatementSeq_default_instance_);
 5695|  18.7k|}
_ZNK11ruby_fuzzer6IfElse9else_bodyEv:
 5696|  18.7k|inline const ::ruby_fuzzer::StatementSeq& IfElse::else_body() const {
 5697|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.IfElse.else_body)
 5698|  18.7k|  return _internal_else_body();
 5699|  18.7k|}
_ZNK11ruby_fuzzer7Ternary19_internal_tern_condEv:
 5782|  6.62k|inline const ::ruby_fuzzer::Rvalue& Ternary::_internal_tern_cond() const {
 5783|  6.62k|  const ::ruby_fuzzer::Rvalue* p = _impl_.tern_cond_;
 5784|  6.62k|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::Rvalue&>(
  ------------------
  |  Branch (5784:10): [True: 6.62k, False: 0]
  ------------------
 5785|      0|      ::ruby_fuzzer::_Rvalue_default_instance_);
 5786|  6.62k|}
_ZNK11ruby_fuzzer7Ternary9tern_condEv:
 5787|  6.62k|inline const ::ruby_fuzzer::Rvalue& Ternary::tern_cond() const {
 5788|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Ternary.tern_cond)
 5789|  6.62k|  return _internal_tern_cond();
 5790|  6.62k|}
_ZNK11ruby_fuzzer7Ternary18_internal_t_branchEv:
 5869|  6.62k|inline const ::ruby_fuzzer::Rvalue& Ternary::_internal_t_branch() const {
 5870|  6.62k|  const ::ruby_fuzzer::Rvalue* p = _impl_.t_branch_;
 5871|  6.62k|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::Rvalue&>(
  ------------------
  |  Branch (5871:10): [True: 6.62k, False: 0]
  ------------------
 5872|      0|      ::ruby_fuzzer::_Rvalue_default_instance_);
 5873|  6.62k|}
_ZNK11ruby_fuzzer7Ternary8t_branchEv:
 5874|  6.62k|inline const ::ruby_fuzzer::Rvalue& Ternary::t_branch() const {
 5875|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Ternary.t_branch)
 5876|  6.62k|  return _internal_t_branch();
 5877|  6.62k|}
_ZNK11ruby_fuzzer7Ternary18_internal_f_branchEv:
 5956|  6.62k|inline const ::ruby_fuzzer::Rvalue& Ternary::_internal_f_branch() const {
 5957|  6.62k|  const ::ruby_fuzzer::Rvalue* p = _impl_.f_branch_;
 5958|  6.62k|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::Rvalue&>(
  ------------------
  |  Branch (5958:10): [True: 6.62k, False: 0]
  ------------------
 5959|      0|      ::ruby_fuzzer::_Rvalue_default_instance_);
 5960|  6.62k|}
_ZNK11ruby_fuzzer7Ternary8f_branchEv:
 5961|  6.62k|inline const ::ruby_fuzzer::Rvalue& Ternary::f_branch() const {
 5962|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Ternary.f_branch)
 5963|  6.62k|  return _internal_f_branch();
 5964|  6.62k|}
_ZNK11ruby_fuzzer11ObjectSpace7os_funcEv:
 6046|  8.00k|inline ::ruby_fuzzer::ObjectSpace_OS_methods ObjectSpace::os_func() const {
 6047|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.ObjectSpace.os_func)
 6048|  8.00k|  return _internal_os_func();
 6049|  8.00k|}
_ZNK11ruby_fuzzer11ObjectSpace17_internal_os_funcEv:
 6054|  8.00k|inline ::ruby_fuzzer::ObjectSpace_OS_methods ObjectSpace::_internal_os_func() const {
 6055|  8.00k|  return static_cast<::ruby_fuzzer::ObjectSpace_OS_methods>(_impl_.os_func_);
 6056|  8.00k|}
_ZNK11ruby_fuzzer11ObjectSpace16_internal_os_argEv:
 6073|  8.00k|inline const ::ruby_fuzzer::HashType& ObjectSpace::_internal_os_arg() const {
 6074|  8.00k|  const ::ruby_fuzzer::HashType* p = _impl_.os_arg_;
 6075|  8.00k|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::HashType&>(
  ------------------
  |  Branch (6075:10): [True: 8.00k, False: 0]
  ------------------
 6076|      0|      ::ruby_fuzzer::_HashType_default_instance_);
 6077|  8.00k|}
_ZNK11ruby_fuzzer11ObjectSpace6os_argEv:
 6078|  8.00k|inline const ::ruby_fuzzer::HashType& ObjectSpace::os_arg() const {
 6079|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.ObjectSpace.os_arg)
 6080|  8.00k|  return _internal_os_arg();
 6081|  8.00k|}
_ZNK11ruby_fuzzer4Time6t_funcEv:
 6163|  6.52k|inline ::ruby_fuzzer::Time_T_methods Time::t_func() const {
 6164|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Time.t_func)
 6165|  6.52k|  return _internal_t_func();
 6166|  6.52k|}
_ZNK11ruby_fuzzer4Time16_internal_t_funcEv:
 6171|  6.52k|inline ::ruby_fuzzer::Time_T_methods Time::_internal_t_func() const {
 6172|  6.52k|  return static_cast<::ruby_fuzzer::Time_T_methods>(_impl_.t_func_);
 6173|  6.52k|}
_ZNK11ruby_fuzzer4Time5t_argEv:
 6189|  6.52k|inline ::uint32_t Time::t_arg() const {
 6190|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Time.t_arg)
 6191|  6.52k|  return _internal_t_arg();
 6192|  6.52k|}
_ZNK11ruby_fuzzer4Time15_internal_t_argEv:
 6197|  6.52k|inline ::uint32_t Time::_internal_t_arg() const {
 6198|  6.52k|  return _impl_.t_arg_;
 6199|  6.52k|}
_ZNK11ruby_fuzzer5Array8arr_funcEv:
 6218|  46.7k|inline ::ruby_fuzzer::Array_Arr_methods Array::arr_func() const {
 6219|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Array.arr_func)
 6220|  46.7k|  return _internal_arr_func();
 6221|  46.7k|}
_ZNK11ruby_fuzzer5Array18_internal_arr_funcEv:
 6226|  46.7k|inline ::ruby_fuzzer::Array_Arr_methods Array::_internal_arr_func() const {
 6227|  46.7k|  return static_cast<::ruby_fuzzer::Array_Arr_methods>(_impl_.arr_func_);
 6228|  46.7k|}
_ZNK11ruby_fuzzer5Array17_internal_arr_argEv:
 6245|  46.7k|inline const ::ruby_fuzzer::ArrType& Array::_internal_arr_arg() const {
 6246|  46.7k|  const ::ruby_fuzzer::ArrType* p = _impl_.arr_arg_;
 6247|  46.7k|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::ArrType&>(
  ------------------
  |  Branch (6247:10): [True: 46.7k, False: 0]
  ------------------
 6248|      0|      ::ruby_fuzzer::_ArrType_default_instance_);
 6249|  46.7k|}
_ZNK11ruby_fuzzer5Array7arr_argEv:
 6250|  46.7k|inline const ::ruby_fuzzer::ArrType& Array::arr_arg() const {
 6251|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Array.arr_arg)
 6252|  46.7k|  return _internal_arr_arg();
 6253|  46.7k|}
_ZNK11ruby_fuzzer5Array17_internal_val_argEv:
 6332|  46.7k|inline const ::ruby_fuzzer::Rvalue& Array::_internal_val_arg() const {
 6333|  46.7k|  const ::ruby_fuzzer::Rvalue* p = _impl_.val_arg_;
 6334|  46.7k|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::Rvalue&>(
  ------------------
  |  Branch (6334:10): [True: 46.7k, False: 0]
  ------------------
 6335|      0|      ::ruby_fuzzer::_Rvalue_default_instance_);
 6336|  46.7k|}
_ZNK11ruby_fuzzer5Array7val_argEv:
 6337|  46.7k|inline const ::ruby_fuzzer::Rvalue& Array::val_arg() const {
 6338|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Array.val_arg)
 6339|  46.7k|  return _internal_val_arg();
 6340|  46.7k|}
_ZNK11ruby_fuzzer8MathType19_internal_math_rvalEv:
 6445|    979|inline const ::ruby_fuzzer::Rvalue& MathType::_internal_math_rval() const {
 6446|    979|  return math_arg_oneof_case() == kMathRval
  ------------------
  |  Branch (6446:10): [True: 979, False: 0]
  ------------------
 6447|    979|      ? *_impl_.math_arg_oneof_.math_rval_
 6448|    979|      : reinterpret_cast< ::ruby_fuzzer::Rvalue&>(::ruby_fuzzer::_Rvalue_default_instance_);
 6449|    979|}
_ZNK11ruby_fuzzer8MathType9math_rvalEv:
 6450|    979|inline const ::ruby_fuzzer::Rvalue& MathType::math_rval() const {
 6451|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.MathType.math_rval)
 6452|    979|  return _internal_math_rval();
 6453|    979|}
_ZNK11ruby_fuzzer8MathType20_internal_math_constEv:
 6519|    785|inline const ::ruby_fuzzer::MathConst& MathType::_internal_math_const() const {
 6520|    785|  return math_arg_oneof_case() == kMathConst
  ------------------
  |  Branch (6520:10): [True: 785, False: 0]
  ------------------
 6521|    785|      ? *_impl_.math_arg_oneof_.math_const_
 6522|    785|      : reinterpret_cast< ::ruby_fuzzer::MathConst&>(::ruby_fuzzer::_MathConst_default_instance_);
 6523|    785|}
_ZNK11ruby_fuzzer8MathType10math_constEv:
 6524|    785|inline const ::ruby_fuzzer::MathConst& MathType::math_const() const {
 6525|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.MathType.math_const)
 6526|    785|  return _internal_math_const();
 6527|    785|}
_ZNK11ruby_fuzzer8MathType18has_math_arg_oneofEv:
 6561|  4.82k|inline bool MathType::has_math_arg_oneof() const {
 6562|  4.82k|  return math_arg_oneof_case() != MATH_ARG_ONEOF_NOT_SET;
 6563|  4.82k|}
_ZN11ruby_fuzzer8MathType24clear_has_math_arg_oneofEv:
 6564|  4.82k|inline void MathType::clear_has_math_arg_oneof() {
 6565|  4.82k|  _impl_._oneof_case_[0] = MATH_ARG_ONEOF_NOT_SET;
 6566|  4.82k|}
_ZNK11ruby_fuzzer8MathType19math_arg_oneof_caseEv:
 6567|  13.1k|inline MathType::MathArgOneofCase MathType::math_arg_oneof_case() const {
 6568|  13.1k|  return MathType::MathArgOneofCase(_impl_._oneof_case_[0]);
 6569|  13.1k|}
_ZNK11ruby_fuzzer7MathOps7math_opEv:
 6583|  4.82k|inline ::ruby_fuzzer::MathOps_Mops MathOps::math_op() const {
 6584|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.MathOps.math_op)
 6585|  4.82k|  return _internal_math_op();
 6586|  4.82k|}
_ZNK11ruby_fuzzer7MathOps17_internal_math_opEv:
 6591|  4.82k|inline ::ruby_fuzzer::MathOps_Mops MathOps::_internal_math_op() const {
 6592|  4.82k|  return static_cast<::ruby_fuzzer::MathOps_Mops>(_impl_.math_op_);
 6593|  4.82k|}
_ZNK11ruby_fuzzer7MathOps18_internal_math_argEv:
 6610|  4.82k|inline const ::ruby_fuzzer::MathType& MathOps::_internal_math_arg() const {
 6611|  4.82k|  const ::ruby_fuzzer::MathType* p = _impl_.math_arg_;
 6612|  4.82k|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::MathType&>(
  ------------------
  |  Branch (6612:10): [True: 4.82k, False: 0]
  ------------------
 6613|      0|      ::ruby_fuzzer::_MathType_default_instance_);
 6614|  4.82k|}
_ZNK11ruby_fuzzer7MathOps8math_argEv:
 6615|  4.82k|inline const ::ruby_fuzzer::MathType& MathOps::math_arg() const {
 6616|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.MathOps.math_arg)
 6617|  4.82k|  return _internal_math_arg();
 6618|  4.82k|}
_ZNK11ruby_fuzzer12BuiltinFuncs12_internal_osEv:
 6723|  8.00k|inline const ::ruby_fuzzer::ObjectSpace& BuiltinFuncs::_internal_os() const {
 6724|  8.00k|  return bifunc_oneof_case() == kOs
  ------------------
  |  Branch (6724:10): [True: 8.00k, False: 0]
  ------------------
 6725|  8.00k|      ? *_impl_.bifunc_oneof_.os_
 6726|  8.00k|      : reinterpret_cast< ::ruby_fuzzer::ObjectSpace&>(::ruby_fuzzer::_ObjectSpace_default_instance_);
 6727|  8.00k|}
_ZNK11ruby_fuzzer12BuiltinFuncs2osEv:
 6728|  8.00k|inline const ::ruby_fuzzer::ObjectSpace& BuiltinFuncs::os() const {
 6729|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.BuiltinFuncs.os)
 6730|  8.00k|  return _internal_os();
 6731|  8.00k|}
_ZNK11ruby_fuzzer12BuiltinFuncs14_internal_timeEv:
 6797|  6.52k|inline const ::ruby_fuzzer::Time& BuiltinFuncs::_internal_time() const {
 6798|  6.52k|  return bifunc_oneof_case() == kTime
  ------------------
  |  Branch (6798:10): [True: 6.52k, False: 0]
  ------------------
 6799|  6.52k|      ? *_impl_.bifunc_oneof_.time_
 6800|  6.52k|      : reinterpret_cast< ::ruby_fuzzer::Time&>(::ruby_fuzzer::_Time_default_instance_);
 6801|  6.52k|}
_ZNK11ruby_fuzzer12BuiltinFuncs4timeEv:
 6802|  6.52k|inline const ::ruby_fuzzer::Time& BuiltinFuncs::time() const {
 6803|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.BuiltinFuncs.time)
 6804|  6.52k|  return _internal_time();
 6805|  6.52k|}
_ZNK11ruby_fuzzer12BuiltinFuncs13_internal_arrEv:
 6871|  46.7k|inline const ::ruby_fuzzer::Array& BuiltinFuncs::_internal_arr() const {
 6872|  46.7k|  return bifunc_oneof_case() == kArr
  ------------------
  |  Branch (6872:10): [True: 46.7k, False: 0]
  ------------------
 6873|  46.7k|      ? *_impl_.bifunc_oneof_.arr_
 6874|  46.7k|      : reinterpret_cast< ::ruby_fuzzer::Array&>(::ruby_fuzzer::_Array_default_instance_);
 6875|  46.7k|}
_ZNK11ruby_fuzzer12BuiltinFuncs3arrEv:
 6876|  46.7k|inline const ::ruby_fuzzer::Array& BuiltinFuncs::arr() const {
 6877|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.BuiltinFuncs.arr)
 6878|  46.7k|  return _internal_arr();
 6879|  46.7k|}
_ZNK11ruby_fuzzer12BuiltinFuncs14_internal_mopsEv:
 6945|  4.82k|inline const ::ruby_fuzzer::MathOps& BuiltinFuncs::_internal_mops() const {
 6946|  4.82k|  return bifunc_oneof_case() == kMops
  ------------------
  |  Branch (6946:10): [True: 4.82k, False: 0]
  ------------------
 6947|  4.82k|      ? *_impl_.bifunc_oneof_.mops_
 6948|  4.82k|      : reinterpret_cast< ::ruby_fuzzer::MathOps&>(::ruby_fuzzer::_MathOps_default_instance_);
 6949|  4.82k|}
_ZNK11ruby_fuzzer12BuiltinFuncs4mopsEv:
 6950|  4.82k|inline const ::ruby_fuzzer::MathOps& BuiltinFuncs::mops() const {
 6951|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.BuiltinFuncs.mops)
 6952|  4.82k|  return _internal_mops();
 6953|  4.82k|}
_ZNK11ruby_fuzzer12BuiltinFuncs16has_bifunc_oneofEv:
 6987|  84.6k|inline bool BuiltinFuncs::has_bifunc_oneof() const {
 6988|  84.6k|  return bifunc_oneof_case() != BIFUNC_ONEOF_NOT_SET;
 6989|  84.6k|}
_ZN11ruby_fuzzer12BuiltinFuncs22clear_has_bifunc_oneofEv:
 6990|  84.6k|inline void BuiltinFuncs::clear_has_bifunc_oneof() {
 6991|  84.6k|  _impl_._oneof_case_[0] = BIFUNC_ONEOF_NOT_SET;
 6992|  84.6k|}
_ZNK11ruby_fuzzer12BuiltinFuncs17bifunc_oneof_caseEv:
 6993|   301k|inline BuiltinFuncs::BifuncOneofCase BuiltinFuncs::bifunc_oneof_case() const {
 6994|   301k|  return BuiltinFuncs::BifuncOneofCase(_impl_._oneof_case_[0]);
 6995|   301k|}
_ZNK11ruby_fuzzer9Statement20_internal_assignmentEv:
 7032|   120k|inline const ::ruby_fuzzer::AssignmentStatement& Statement::_internal_assignment() const {
 7033|   120k|  return stmt_oneof_case() == kAssignment
  ------------------
  |  Branch (7033:10): [True: 120k, False: 0]
  ------------------
 7034|   120k|      ? *_impl_.stmt_oneof_.assignment_
 7035|   120k|      : reinterpret_cast< ::ruby_fuzzer::AssignmentStatement&>(::ruby_fuzzer::_AssignmentStatement_default_instance_);
 7036|   120k|}
_ZNK11ruby_fuzzer9Statement10assignmentEv:
 7037|   120k|inline const ::ruby_fuzzer::AssignmentStatement& Statement::assignment() const {
 7038|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Statement.assignment)
 7039|   120k|  return _internal_assignment();
 7040|   120k|}
_ZNK11ruby_fuzzer9Statement16_internal_ifelseEv:
 7106|  18.7k|inline const ::ruby_fuzzer::IfElse& Statement::_internal_ifelse() const {
 7107|  18.7k|  return stmt_oneof_case() == kIfelse
  ------------------
  |  Branch (7107:10): [True: 18.7k, False: 0]
  ------------------
 7108|  18.7k|      ? *_impl_.stmt_oneof_.ifelse_
 7109|  18.7k|      : reinterpret_cast< ::ruby_fuzzer::IfElse&>(::ruby_fuzzer::_IfElse_default_instance_);
 7110|  18.7k|}
_ZNK11ruby_fuzzer9Statement6ifelseEv:
 7111|  18.7k|inline const ::ruby_fuzzer::IfElse& Statement::ifelse() const {
 7112|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Statement.ifelse)
 7113|  18.7k|  return _internal_ifelse();
 7114|  18.7k|}
_ZNK11ruby_fuzzer9Statement22_internal_ternary_stmtEv:
 7180|  6.62k|inline const ::ruby_fuzzer::Ternary& Statement::_internal_ternary_stmt() const {
 7181|  6.62k|  return stmt_oneof_case() == kTernaryStmt
  ------------------
  |  Branch (7181:10): [True: 6.62k, False: 0]
  ------------------
 7182|  6.62k|      ? *_impl_.stmt_oneof_.ternary_stmt_
 7183|  6.62k|      : reinterpret_cast< ::ruby_fuzzer::Ternary&>(::ruby_fuzzer::_Ternary_default_instance_);
 7184|  6.62k|}
_ZNK11ruby_fuzzer9Statement12ternary_stmtEv:
 7185|  6.62k|inline const ::ruby_fuzzer::Ternary& Statement::ternary_stmt() const {
 7186|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Statement.ternary_stmt)
 7187|  6.62k|  return _internal_ternary_stmt();
 7188|  6.62k|}
_ZNK11ruby_fuzzer9Statement18_internal_builtinsEv:
 7254|  84.6k|inline const ::ruby_fuzzer::BuiltinFuncs& Statement::_internal_builtins() const {
 7255|  84.6k|  return stmt_oneof_case() == kBuiltins
  ------------------
  |  Branch (7255:10): [True: 84.6k, False: 0]
  ------------------
 7256|  84.6k|      ? *_impl_.stmt_oneof_.builtins_
 7257|  84.6k|      : reinterpret_cast< ::ruby_fuzzer::BuiltinFuncs&>(::ruby_fuzzer::_BuiltinFuncs_default_instance_);
 7258|  84.6k|}
_ZNK11ruby_fuzzer9Statement8builtinsEv:
 7259|  84.6k|inline const ::ruby_fuzzer::BuiltinFuncs& Statement::builtins() const {
 7260|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Statement.builtins)
 7261|  84.6k|  return _internal_builtins();
 7262|  84.6k|}
_ZNK11ruby_fuzzer9Statement19_internal_blockstmtEv:
 7328|  19.5k|inline const ::ruby_fuzzer::StatementSeq& Statement::_internal_blockstmt() const {
 7329|  19.5k|  return stmt_oneof_case() == kBlockstmt
  ------------------
  |  Branch (7329:10): [True: 19.5k, False: 0]
  ------------------
 7330|  19.5k|      ? *_impl_.stmt_oneof_.blockstmt_
 7331|  19.5k|      : reinterpret_cast< ::ruby_fuzzer::StatementSeq&>(::ruby_fuzzer::_StatementSeq_default_instance_);
 7332|  19.5k|}
_ZNK11ruby_fuzzer9Statement9blockstmtEv:
 7333|  19.5k|inline const ::ruby_fuzzer::StatementSeq& Statement::blockstmt() const {
 7334|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Statement.blockstmt)
 7335|  19.5k|  return _internal_blockstmt();
 7336|  19.5k|}
_ZNK11ruby_fuzzer9Statement14has_stmt_oneofEv:
 7370|   343k|inline bool Statement::has_stmt_oneof() const {
 7371|   343k|  return stmt_oneof_case() != STMT_ONEOF_NOT_SET;
 7372|   343k|}
_ZN11ruby_fuzzer9Statement20clear_has_stmt_oneofEv:
 7373|   343k|inline void Statement::clear_has_stmt_oneof() {
 7374|   343k|  _impl_._oneof_case_[0] = STMT_ONEOF_NOT_SET;
 7375|   343k|}
_ZNK11ruby_fuzzer9Statement15stmt_oneof_caseEv:
 7376|  1.18M|inline Statement::StmtOneofCase Statement::stmt_oneof_case() const {
 7377|  1.18M|  return Statement::StmtOneofCase(_impl_._oneof_case_[0]);
 7378|  1.18M|}
_ZNK11ruby_fuzzer12StatementSeq25_internal_statements_sizeEv:
 7384|  57.5k|inline int StatementSeq::_internal_statements_size() const {
 7385|  57.5k|  return _impl_.statements_.size();
 7386|  57.5k|}
_ZNK11ruby_fuzzer12StatementSeq15statements_sizeEv:
 7387|  57.5k|inline int StatementSeq::statements_size() const {
 7388|  57.5k|  return _internal_statements_size();
 7389|  57.5k|}
_ZNK11ruby_fuzzer12StatementSeq10statementsEv:
 7418|  20.9k|StatementSeq::statements() const {
 7419|       |  // @@protoc_insertion_point(field_list:ruby_fuzzer.StatementSeq.statements)
 7420|  20.9k|  return _impl_.statements_;
 7421|  20.9k|}
_ZNK11ruby_fuzzer8Function20_internal_statementsEv:
 7437|    476|inline const ::ruby_fuzzer::StatementSeq& Function::_internal_statements() const {
 7438|    476|  const ::ruby_fuzzer::StatementSeq* p = _impl_.statements_;
 7439|    476|  return p != nullptr ? *p : reinterpret_cast<const ::ruby_fuzzer::StatementSeq&>(
  ------------------
  |  Branch (7439:10): [True: 476, False: 0]
  ------------------
 7440|      0|      ::ruby_fuzzer::_StatementSeq_default_instance_);
 7441|    476|}
_ZNK11ruby_fuzzer8Function10statementsEv:
 7442|    476|inline const ::ruby_fuzzer::StatementSeq& Function::statements() const {
 7443|       |  // @@protoc_insertion_point(field_get:ruby_fuzzer.Function.statements)
 7444|    476|  return _internal_statements();
 7445|    476|}

gc.c:mrb_val_union:
  136|   389k|{
  137|   389k|  union mrb_value_ x;
  138|   389k|  x.value = v;
  139|   389k|  return x;
  140|   389k|}
range.c:mrb_integer_func:
  162|    664|mrb_integer_func(mrb_value o) {
  163|    664|  if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  148|    664|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|  1.32k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 664, False: 0]
  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  160|    664|#define mrb_fixnum(o)  (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
  |  |  ------------------
  |  |  |  |   49|    664|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|    664|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|      0|  return mrb_val_union(o).ip->i;
  165|    664|}
array.c:mrb_val_union:
  136|   420k|{
  137|   420k|  union mrb_value_ x;
  138|   420k|  x.value = v;
  139|   420k|  return x;
  140|   420k|}
array.c:mrb_integer_func:
  162|  28.8k|mrb_integer_func(mrb_value o) {
  163|  28.8k|  if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  148|  28.8k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|  57.6k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 28.8k, False: 1]
  |  |  |  Branch (148:63): [True: 0, False: 1]
  |  |  ------------------
  ------------------
                if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  160|  28.8k|#define mrb_fixnum(o)  (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
  |  |  ------------------
  |  |  |  |   49|  28.8k|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|  28.8k|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|      1|  return mrb_val_union(o).ip->i;
  165|  28.8k|}
array.c:mrb_type:
  221|  1.28k|{
  222|  1.28k|  return !mrb_bool(o)    ? MRB_TT_FALSE :
  ------------------
  |  |  168|  1.28k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  ------------------
  |  Branch (222:10): [True: 0, False: 1.28k]
  ------------------
  223|  1.28k|         mrb_true_p(o)   ? MRB_TT_TRUE :
  ------------------
  |  |  176|  2.56k|#define mrb_true_p(o)  ((o).w == MRB_Qtrue)
  |  |  ------------------
  |  |  |  Branch (176:24): [True: 0, False: 1.28k]
  |  |  ------------------
  ------------------
  224|  1.28k|         mrb_fixnum_p(o) ? MRB_TT_INTEGER :
  ------------------
  |  |  170|  1.28k|#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
  |  |  ------------------
  |  |  |  |   76|  2.56k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 1.02k, False: 259]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|  1.28k|         mrb_symbol_p(o) ? MRB_TT_SYMBOL :
  ------------------
  |  |  172|    259|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|    518|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 259]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|    259|         mrb_undef_p(o)  ? MRB_TT_UNDEF :
  ------------------
  |  |  173|    518|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  |  |  ------------------
  |  |  |  Branch (173:24): [True: 0, False: 259]
  |  |  ------------------
  ------------------
  227|    259|         mrb_float_p(o)  ? MRB_TT_FLOAT :
  ------------------
  |  |  179|    259|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|    518|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 258, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|    259|         mrb_val_union(o).bp->tt;
  229|  1.28k|}
vm.c:mrb_val_union:
  136|  1.40M|{
  137|  1.40M|  union mrb_value_ x;
  138|  1.40M|  x.value = v;
  139|  1.40M|  return x;
  140|  1.40M|}
vm.c:mrb_type:
  221|   551k|{
  222|   551k|  return !mrb_bool(o)    ? MRB_TT_FALSE :
  ------------------
  |  |  168|   551k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  ------------------
  |  Branch (222:10): [True: 6.08k, False: 545k]
  ------------------
  223|   551k|         mrb_true_p(o)   ? MRB_TT_TRUE :
  ------------------
  |  |  176|  1.09M|#define mrb_true_p(o)  ((o).w == MRB_Qtrue)
  |  |  ------------------
  |  |  |  Branch (176:24): [True: 2.20k, False: 543k]
  |  |  ------------------
  ------------------
  224|   545k|         mrb_fixnum_p(o) ? MRB_TT_INTEGER :
  ------------------
  |  |  170|   543k|#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
  |  |  ------------------
  |  |  |  |   76|  1.08M|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 389k, False: 153k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|   543k|         mrb_symbol_p(o) ? MRB_TT_SYMBOL :
  ------------------
  |  |  172|   153k|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|   307k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 153k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|   153k|         mrb_undef_p(o)  ? MRB_TT_UNDEF :
  ------------------
  |  |  173|   307k|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  |  |  ------------------
  |  |  |  Branch (173:24): [True: 0, False: 153k]
  |  |  ------------------
  ------------------
  227|   153k|         mrb_float_p(o)  ? MRB_TT_FLOAT :
  ------------------
  |  |  179|   153k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|   307k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 13.2k, False: 140k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|   153k|         mrb_val_union(o).bp->tt;
  229|   551k|}
vm.c:mrb_integer_func:
  162|   380k|mrb_integer_func(mrb_value o) {
  163|   380k|  if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  148|   380k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|   761k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 370k, False: 10.7k]
  |  |  |  Branch (148:63): [True: 0, False: 10.7k]
  |  |  ------------------
  ------------------
                if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  160|   370k|#define mrb_fixnum(o)  (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
  |  |  ------------------
  |  |  |  |   49|   370k|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|   370k|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|  10.7k|  return mrb_val_union(o).ip->i;
  165|   380k|}
string.c:mrb_val_union:
  136|   696k|{
  137|   696k|  union mrb_value_ x;
  138|   696k|  x.value = v;
  139|   696k|  return x;
  140|   696k|}
string.c:mrb_type:
  221|    163|{
  222|    163|  return !mrb_bool(o)    ? MRB_TT_FALSE :
  ------------------
  |  |  168|    163|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  ------------------
  |  Branch (222:10): [True: 0, False: 163]
  ------------------
  223|    163|         mrb_true_p(o)   ? MRB_TT_TRUE :
  ------------------
  |  |  176|    326|#define mrb_true_p(o)  ((o).w == MRB_Qtrue)
  |  |  ------------------
  |  |  |  Branch (176:24): [True: 0, False: 163]
  |  |  ------------------
  ------------------
  224|    163|         mrb_fixnum_p(o) ? MRB_TT_INTEGER :
  ------------------
  |  |  170|    163|#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
  |  |  ------------------
  |  |  |  |   76|    326|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 76, False: 87]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|    163|         mrb_symbol_p(o) ? MRB_TT_SYMBOL :
  ------------------
  |  |  172|     87|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|    174|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 37, False: 50]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|     87|         mrb_undef_p(o)  ? MRB_TT_UNDEF :
  ------------------
  |  |  173|    100|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  |  |  ------------------
  |  |  |  Branch (173:24): [True: 0, False: 50]
  |  |  ------------------
  ------------------
  227|     50|         mrb_float_p(o)  ? MRB_TT_FLOAT :
  ------------------
  |  |  179|     50|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|    100|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 50]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|     50|         mrb_val_union(o).bp->tt;
  229|    163|}
kernel.c:mrb_val_union:
  136|   256k|{
  137|   256k|  union mrb_value_ x;
  138|   256k|  x.value = v;
  139|   256k|  return x;
  140|   256k|}
kernel.c:mrb_type:
  221|  4.73k|{
  222|  4.73k|  return !mrb_bool(o)    ? MRB_TT_FALSE :
  ------------------
  |  |  168|  4.73k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  ------------------
  |  Branch (222:10): [True: 20, False: 4.71k]
  ------------------
  223|  4.73k|         mrb_true_p(o)   ? MRB_TT_TRUE :
  ------------------
  |  |  176|  9.42k|#define mrb_true_p(o)  ((o).w == MRB_Qtrue)
  |  |  ------------------
  |  |  |  Branch (176:24): [True: 17, False: 4.69k]
  |  |  ------------------
  ------------------
  224|  4.71k|         mrb_fixnum_p(o) ? MRB_TT_INTEGER :
  ------------------
  |  |  170|  4.69k|#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
  |  |  ------------------
  |  |  |  |   76|  9.39k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 4.69k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|  4.69k|         mrb_symbol_p(o) ? MRB_TT_SYMBOL :
  ------------------
  |  |  172|      0|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|      0|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|      0|         mrb_undef_p(o)  ? MRB_TT_UNDEF :
  ------------------
  |  |  173|      0|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  |  |  ------------------
  |  |  |  Branch (173:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  227|      0|         mrb_float_p(o)  ? MRB_TT_FLOAT :
  ------------------
  |  |  179|      0|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|      0|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|      0|         mrb_val_union(o).bp->tt;
  229|  4.73k|}
class.c:mrb_val_union:
  136|   394k|{
  137|   394k|  union mrb_value_ x;
  138|   394k|  x.value = v;
  139|   394k|  return x;
  140|   394k|}
class.c:mrb_integer_func:
  162|  5.58k|mrb_integer_func(mrb_value o) {
  163|  5.58k|  if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  148|  5.58k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|  11.1k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 5.22k, False: 358]
  |  |  |  Branch (148:63): [True: 0, False: 358]
  |  |  ------------------
  ------------------
                if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  160|  5.22k|#define mrb_fixnum(o)  (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
  |  |  ------------------
  |  |  |  |   49|  5.22k|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|  5.22k|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|    358|  return mrb_val_union(o).ip->i;
  165|  5.58k|}
class.c:mrb_type:
  221|   131k|{
  222|   131k|  return !mrb_bool(o)    ? MRB_TT_FALSE :
  ------------------
  |  |  168|   131k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  ------------------
  |  Branch (222:10): [True: 0, False: 131k]
  ------------------
  223|   131k|         mrb_true_p(o)   ? MRB_TT_TRUE :
  ------------------
  |  |  176|   263k|#define mrb_true_p(o)  ((o).w == MRB_Qtrue)
  |  |  ------------------
  |  |  |  Branch (176:24): [True: 0, False: 131k]
  |  |  ------------------
  ------------------
  224|   131k|         mrb_fixnum_p(o) ? MRB_TT_INTEGER :
  ------------------
  |  |  170|   131k|#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
  |  |  ------------------
  |  |  |  |   76|   263k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 131k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|   131k|         mrb_symbol_p(o) ? MRB_TT_SYMBOL :
  ------------------
  |  |  172|   131k|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|   263k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 131k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|   131k|         mrb_undef_p(o)  ? MRB_TT_UNDEF :
  ------------------
  |  |  173|   263k|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  |  |  ------------------
  |  |  |  Branch (173:24): [True: 0, False: 131k]
  |  |  ------------------
  ------------------
  227|   131k|         mrb_float_p(o)  ? MRB_TT_FLOAT :
  ------------------
  |  |  179|   131k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|   263k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 131k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|   131k|         mrb_val_union(o).bp->tt;
  229|   131k|}
variable.c:mrb_val_union:
  136|  2.14M|{
  137|  2.14M|  union mrb_value_ x;
  138|  2.14M|  x.value = v;
  139|  2.14M|  return x;
  140|  2.14M|}
variable.c:mrb_type:
  221|   485k|{
  222|   485k|  return !mrb_bool(o)    ? MRB_TT_FALSE :
  ------------------
  |  |  168|   485k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  ------------------
  |  Branch (222:10): [True: 476, False: 484k]
  ------------------
  223|   485k|         mrb_true_p(o)   ? MRB_TT_TRUE :
  ------------------
  |  |  176|   969k|#define mrb_true_p(o)  ((o).w == MRB_Qtrue)
  |  |  ------------------
  |  |  |  Branch (176:24): [True: 0, False: 484k]
  |  |  ------------------
  ------------------
  224|   484k|         mrb_fixnum_p(o) ? MRB_TT_INTEGER :
  ------------------
  |  |  170|   484k|#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
  |  |  ------------------
  |  |  |  |   76|   969k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 86.6k, False: 397k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|   484k|         mrb_symbol_p(o) ? MRB_TT_SYMBOL :
  ------------------
  |  |  172|   397k|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|   795k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 35.7k, False: 362k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|   397k|         mrb_undef_p(o)  ? MRB_TT_UNDEF :
  ------------------
  |  |  173|   724k|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  |  |  ------------------
  |  |  |  Branch (173:24): [True: 0, False: 362k]
  |  |  ------------------
  ------------------
  227|   362k|         mrb_float_p(o)  ? MRB_TT_FLOAT :
  ------------------
  |  |  179|   362k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|   724k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 3.33k, False: 358k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|   362k|         mrb_val_union(o).bp->tt;
  229|   485k|}
bigint.c:mrb_val_union:
  136|  57.6k|{
  137|  57.6k|  union mrb_value_ x;
  138|  57.6k|  x.value = v;
  139|  57.6k|  return x;
  140|  57.6k|}
bigint.c:mrb_type:
  221|  17.3k|{
  222|  17.3k|  return !mrb_bool(o)    ? MRB_TT_FALSE :
  ------------------
  |  |  168|  17.3k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  ------------------
  |  Branch (222:10): [True: 0, False: 17.3k]
  ------------------
  223|  17.3k|         mrb_true_p(o)   ? MRB_TT_TRUE :
  ------------------
  |  |  176|  34.6k|#define mrb_true_p(o)  ((o).w == MRB_Qtrue)
  |  |  ------------------
  |  |  |  Branch (176:24): [True: 4, False: 17.3k]
  |  |  ------------------
  ------------------
  224|  17.3k|         mrb_fixnum_p(o) ? MRB_TT_INTEGER :
  ------------------
  |  |  170|  17.3k|#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
  |  |  ------------------
  |  |  |  |   76|  34.6k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 5.89k, False: 11.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|  17.3k|         mrb_symbol_p(o) ? MRB_TT_SYMBOL :
  ------------------
  |  |  172|  11.4k|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|  22.9k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 11.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|  11.4k|         mrb_undef_p(o)  ? MRB_TT_UNDEF :
  ------------------
  |  |  173|  22.9k|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  |  |  ------------------
  |  |  |  Branch (173:24): [True: 0, False: 11.4k]
  |  |  ------------------
  ------------------
  227|  11.4k|         mrb_float_p(o)  ? MRB_TT_FLOAT :
  ------------------
  |  |  179|  11.4k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|  22.9k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 11.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|  11.4k|         mrb_val_union(o).bp->tt;
  229|  17.3k|}
bigint.c:mrb_integer_func:
  162|  8.31k|mrb_integer_func(mrb_value o) {
  163|  8.31k|  if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  148|  8.31k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|  16.6k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 7.17k, False: 1.14k]
  |  |  |  Branch (148:63): [True: 0, False: 1.14k]
  |  |  ------------------
  ------------------
                if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  160|  7.17k|#define mrb_fixnum(o)  (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
  |  |  ------------------
  |  |  |  |   49|  7.17k|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|  7.17k|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|  1.14k|  return mrb_val_union(o).ip->i;
  165|  8.31k|}
y.tab.c:mrb_val_union:
  136|     82|{
  137|     82|  union mrb_value_ x;
  138|     82|  x.value = v;
  139|     82|  return x;
  140|     82|}
hash.c:mrb_val_union:
  136|   891k|{
  137|   891k|  union mrb_value_ x;
  138|   891k|  x.value = v;
  139|   891k|  return x;
  140|   891k|}
hash.c:mrb_type:
  221|   691k|{
  222|   691k|  return !mrb_bool(o)    ? MRB_TT_FALSE :
  ------------------
  |  |  168|   691k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  ------------------
  |  Branch (222:10): [True: 0, False: 691k]
  ------------------
  223|   691k|         mrb_true_p(o)   ? MRB_TT_TRUE :
  ------------------
  |  |  176|  1.38M|#define mrb_true_p(o)  ((o).w == MRB_Qtrue)
  |  |  ------------------
  |  |  |  Branch (176:24): [True: 0, False: 691k]
  |  |  ------------------
  ------------------
  224|   691k|         mrb_fixnum_p(o) ? MRB_TT_INTEGER :
  ------------------
  |  |  170|   691k|#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
  |  |  ------------------
  |  |  |  |   76|  1.38M|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 691k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|   691k|         mrb_symbol_p(o) ? MRB_TT_SYMBOL :
  ------------------
  |  |  172|   691k|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|  1.38M|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 565k, False: 126k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|   691k|         mrb_undef_p(o)  ? MRB_TT_UNDEF :
  ------------------
  |  |  173|   253k|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  |  |  ------------------
  |  |  |  Branch (173:24): [True: 0, False: 126k]
  |  |  ------------------
  ------------------
  227|   126k|         mrb_float_p(o)  ? MRB_TT_FLOAT :
  ------------------
  |  |  179|   126k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|   253k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 126k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|   126k|         mrb_val_union(o).bp->tt;
  229|   691k|}
object.c:mrb_val_union:
  136|  64.7k|{
  137|  64.7k|  union mrb_value_ x;
  138|  64.7k|  x.value = v;
  139|  64.7k|  return x;
  140|  64.7k|}
object.c:mrb_integer_func:
  162|  3.52k|mrb_integer_func(mrb_value o) {
  163|  3.52k|  if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  148|  3.52k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|  7.04k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 3.42k, False: 102]
  |  |  |  Branch (148:63): [True: 0, False: 102]
  |  |  ------------------
  ------------------
                if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  160|  3.42k|#define mrb_fixnum(o)  (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
  |  |  ------------------
  |  |  |  |   49|  3.42k|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|  3.42k|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|    102|  return mrb_val_union(o).ip->i;
  165|  3.52k|}
object.c:mrb_type:
  221|  89.3k|{
  222|  89.3k|  return !mrb_bool(o)    ? MRB_TT_FALSE :
  ------------------
  |  |  168|  89.3k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  ------------------
  |  Branch (222:10): [True: 13, False: 89.3k]
  ------------------
  223|  89.3k|         mrb_true_p(o)   ? MRB_TT_TRUE :
  ------------------
  |  |  176|   178k|#define mrb_true_p(o)  ((o).w == MRB_Qtrue)
  |  |  ------------------
  |  |  |  Branch (176:24): [True: 16, False: 89.2k]
  |  |  ------------------
  ------------------
  224|  89.3k|         mrb_fixnum_p(o) ? MRB_TT_INTEGER :
  ------------------
  |  |  170|  89.2k|#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
  |  |  ------------------
  |  |  |  |   76|   178k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 72.9k, False: 16.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|  89.2k|         mrb_symbol_p(o) ? MRB_TT_SYMBOL :
  ------------------
  |  |  172|  16.3k|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|  32.6k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 16.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|  16.3k|         mrb_undef_p(o)  ? MRB_TT_UNDEF :
  ------------------
  |  |  173|  32.6k|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  |  |  ------------------
  |  |  |  Branch (173:24): [True: 0, False: 16.3k]
  |  |  ------------------
  ------------------
  227|  16.3k|         mrb_float_p(o)  ? MRB_TT_FLOAT :
  ------------------
  |  |  179|  16.3k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|  32.6k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 1.23k, False: 15.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|  16.3k|         mrb_val_union(o).bp->tt;
  229|  89.3k|}
error.c:mrb_val_union:
  136|  5.56k|{
  137|  5.56k|  union mrb_value_ x;
  138|  5.56k|  x.value = v;
  139|  5.56k|  return x;
  140|  5.56k|}
error.c:mrb_type:
  221|    284|{
  222|    284|  return !mrb_bool(o)    ? MRB_TT_FALSE :
  ------------------
  |  |  168|    284|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  ------------------
  |  Branch (222:10): [True: 0, False: 284]
  ------------------
  223|    284|         mrb_true_p(o)   ? MRB_TT_TRUE :
  ------------------
  |  |  176|    568|#define mrb_true_p(o)  ((o).w == MRB_Qtrue)
  |  |  ------------------
  |  |  |  Branch (176:24): [True: 5, False: 279]
  |  |  ------------------
  ------------------
  224|    284|         mrb_fixnum_p(o) ? MRB_TT_INTEGER :
  ------------------
  |  |  170|    279|#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
  |  |  ------------------
  |  |  |  |   76|    558|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 6, False: 273]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|    279|         mrb_symbol_p(o) ? MRB_TT_SYMBOL :
  ------------------
  |  |  172|    273|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|    546|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 273]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|    273|         mrb_undef_p(o)  ? MRB_TT_UNDEF :
  ------------------
  |  |  173|    546|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  |  |  ------------------
  |  |  |  Branch (173:24): [True: 0, False: 273]
  |  |  ------------------
  ------------------
  227|    273|         mrb_float_p(o)  ? MRB_TT_FLOAT :
  ------------------
  |  |  179|    273|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|    546|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 273]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|    273|         mrb_val_union(o).bp->tt;
  229|    284|}
numeric.c:mrb_type:
  221|  37.6k|{
  222|  37.6k|  return !mrb_bool(o)    ? MRB_TT_FALSE :
  ------------------
  |  |  168|  37.6k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  ------------------
  |  Branch (222:10): [True: 267, False: 37.4k]
  ------------------
  223|  37.6k|         mrb_true_p(o)   ? MRB_TT_TRUE :
  ------------------
  |  |  176|  74.8k|#define mrb_true_p(o)  ((o).w == MRB_Qtrue)
  |  |  ------------------
  |  |  |  Branch (176:24): [True: 426, False: 36.9k]
  |  |  ------------------
  ------------------
  224|  37.4k|         mrb_fixnum_p(o) ? MRB_TT_INTEGER :
  ------------------
  |  |  170|  36.9k|#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
  |  |  ------------------
  |  |  |  |   76|  73.9k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 14.0k, False: 22.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|  36.9k|         mrb_symbol_p(o) ? MRB_TT_SYMBOL :
  ------------------
  |  |  172|  22.9k|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|  45.9k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 22.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|  22.9k|         mrb_undef_p(o)  ? MRB_TT_UNDEF :
  ------------------
  |  |  173|  45.9k|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  |  |  ------------------
  |  |  |  Branch (173:24): [True: 0, False: 22.9k]
  |  |  ------------------
  ------------------
  227|  22.9k|         mrb_float_p(o)  ? MRB_TT_FLOAT :
  ------------------
  |  |  179|  22.9k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|  45.9k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 420, False: 22.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|  22.9k|         mrb_val_union(o).bp->tt;
  229|  37.6k|}
numeric.c:mrb_integer_func:
  162|  23.1k|mrb_integer_func(mrb_value o) {
  163|  23.1k|  if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  148|  23.1k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|  46.2k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 20.4k, False: 2.71k]
  |  |  |  Branch (148:63): [True: 0, False: 2.71k]
  |  |  ------------------
  ------------------
                if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  160|  20.4k|#define mrb_fixnum(o)  (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
  |  |  ------------------
  |  |  |  |   49|  20.4k|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|  20.4k|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|  2.71k|  return mrb_val_union(o).ip->i;
  165|  23.1k|}
numeric.c:mrb_val_union:
  136|  32.2k|{
  137|  32.2k|  union mrb_value_ x;
  138|  32.2k|  x.value = v;
  139|  32.2k|  return x;
  140|  32.2k|}
backtrace.c:mrb_val_union:
  136|    290|{
  137|    290|  union mrb_value_ x;
  138|    290|  x.value = v;
  139|    290|  return x;
  140|    290|}
time.c:mrb_type:
  221|  5.39k|{
  222|  5.39k|  return !mrb_bool(o)    ? MRB_TT_FALSE :
  ------------------
  |  |  168|  5.39k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  ------------------
  |  Branch (222:10): [True: 0, False: 5.39k]
  ------------------
  223|  5.39k|         mrb_true_p(o)   ? MRB_TT_TRUE :
  ------------------
  |  |  176|  10.7k|#define mrb_true_p(o)  ((o).w == MRB_Qtrue)
  |  |  ------------------
  |  |  |  Branch (176:24): [True: 0, False: 5.39k]
  |  |  ------------------
  ------------------
  224|  5.39k|         mrb_fixnum_p(o) ? MRB_TT_INTEGER :
  ------------------
  |  |  170|  5.39k|#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
  |  |  ------------------
  |  |  |  |   76|  10.7k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 5.39k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|  5.39k|         mrb_symbol_p(o) ? MRB_TT_SYMBOL :
  ------------------
  |  |  172|      0|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|      0|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|      0|         mrb_undef_p(o)  ? MRB_TT_UNDEF :
  ------------------
  |  |  173|      0|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  |  |  ------------------
  |  |  |  Branch (173:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  227|      0|         mrb_float_p(o)  ? MRB_TT_FLOAT :
  ------------------
  |  |  179|      0|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|      0|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|      0|         mrb_val_union(o).bp->tt;
  229|  5.39k|}
time.c:mrb_integer_func:
  162|  5.39k|mrb_integer_func(mrb_value o) {
  163|  5.39k|  if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  148|  5.39k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|  10.7k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 5.39k, False: 0]
  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                if (mrb_immediate_p(o)) return mrb_fixnum(o);
  ------------------
  |  |  160|  5.39k|#define mrb_fixnum(o)  (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
  |  |  ------------------
  |  |  |  |   49|  5.39k|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|  5.39k|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|      0|  return mrb_val_union(o).ip->i;
  165|  5.39k|}
time.c:mrb_val_union:
  136|  4.99k|{
  137|  4.99k|  union mrb_value_ x;
  138|  4.99k|  x.value = v;
  139|  4.99k|  return x;
  140|  4.99k|}
random.c:mrb_val_union:
  136|    952|{
  137|    952|  union mrb_value_ x;
  138|    952|  x.value = v;
  139|    952|  return x;
  140|    952|}
io.c:mrb_val_union:
  136|  5.71k|{
  137|  5.71k|  union mrb_value_ x;
  138|  5.71k|  x.value = v;
  139|  5.71k|  return x;
  140|  5.71k|}

vm.c:mrb_class:
   28|   485k|{
   29|   485k|  if (!mrb_immediate_p(v)) {
  ------------------
  |  |  148|   485k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|   971k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 76.6k, False: 409k]
  |  |  |  Branch (148:63): [True: 2.88k, False: 406k]
  |  |  ------------------
  ------------------
   30|   406k|    return mrb_obj_ptr(v)->c;
  ------------------
  |  |   34|   406k|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|   406k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
   31|   406k|  }
   32|       |
   33|  79.4k|  switch (mrb_type(v)) {
   34|  5.06k|  case MRB_TT_FALSE:
  ------------------
  |  Branch (34:3): [True: 5.06k, False: 74.4k]
  ------------------
   35|  5.06k|    if (mrb_fixnum(v))
  ------------------
  |  |  160|  5.06k|#define mrb_fixnum(o)  (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
  |  |  ------------------
  |  |  |  |   49|  5.06k|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|  5.06k|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (160:24): [True: 2.17k, False: 2.88k]
  |  |  ------------------
  ------------------
   36|  2.17k|      return mrb->false_class;
   37|  2.88k|    return mrb->nil_class;
   38|  1.19k|  case MRB_TT_TRUE:
  ------------------
  |  Branch (38:3): [True: 1.19k, False: 78.2k]
  ------------------
   39|  1.19k|    return mrb->true_class;
   40|      0|  case MRB_TT_SYMBOL:
  ------------------
  |  Branch (40:3): [True: 0, False: 79.4k]
  ------------------
   41|      0|    return mrb->symbol_class;
   42|  70.3k|  case MRB_TT_INTEGER:
  ------------------
  |  Branch (42:3): [True: 70.3k, False: 9.18k]
  ------------------
   43|  70.3k|    return mrb->integer_class;
   44|      0|#ifndef MRB_NO_FLOAT
   45|  2.92k|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (45:3): [True: 2.92k, False: 76.5k]
  ------------------
   46|  2.92k|    return mrb->float_class;
   47|      0|#endif
   48|      0|  case MRB_TT_CPTR:
  ------------------
  |  Branch (48:3): [True: 0, False: 79.4k]
  ------------------
   49|      0|    return mrb->object_class;
   50|      0|  default:
  ------------------
  |  Branch (50:3): [True: 0, False: 79.4k]
  ------------------
   51|      0|    return NULL;
   52|  79.4k|  }
   53|  79.4k|}
kernel.c:mrb_class:
   28|   261k|{
   29|   261k|  if (!mrb_immediate_p(v)) {
  ------------------
  |  |  148|   261k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|   523k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 4.73k, False: 256k]
  |  |  |  Branch (148:63): [True: 0, False: 256k]
  |  |  ------------------
  ------------------
   30|   256k|    return mrb_obj_ptr(v)->c;
  ------------------
  |  |   34|   256k|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|   256k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
   31|   256k|  }
   32|       |
   33|  4.73k|  switch (mrb_type(v)) {
   34|     20|  case MRB_TT_FALSE:
  ------------------
  |  Branch (34:3): [True: 20, False: 4.71k]
  ------------------
   35|     20|    if (mrb_fixnum(v))
  ------------------
  |  |  160|     20|#define mrb_fixnum(o)  (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
  |  |  ------------------
  |  |  |  |   49|     20|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|     20|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (160:24): [True: 20, False: 0]
  |  |  ------------------
  ------------------
   36|     20|      return mrb->false_class;
   37|      0|    return mrb->nil_class;
   38|     17|  case MRB_TT_TRUE:
  ------------------
  |  Branch (38:3): [True: 17, False: 4.71k]
  ------------------
   39|     17|    return mrb->true_class;
   40|      0|  case MRB_TT_SYMBOL:
  ------------------
  |  Branch (40:3): [True: 0, False: 4.73k]
  ------------------
   41|      0|    return mrb->symbol_class;
   42|  4.69k|  case MRB_TT_INTEGER:
  ------------------
  |  Branch (42:3): [True: 4.69k, False: 37]
  ------------------
   43|  4.69k|    return mrb->integer_class;
   44|      0|#ifndef MRB_NO_FLOAT
   45|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (45:3): [True: 0, False: 4.73k]
  ------------------
   46|      0|    return mrb->float_class;
   47|      0|#endif
   48|      0|  case MRB_TT_CPTR:
  ------------------
  |  Branch (48:3): [True: 0, False: 4.73k]
  ------------------
   49|      0|    return mrb->object_class;
   50|      0|  default:
  ------------------
  |  Branch (50:3): [True: 0, False: 4.73k]
  ------------------
   51|      0|    return NULL;
   52|  4.73k|  }
   53|  4.73k|}
object.c:mrb_class:
   28|  58.9k|{
   29|  58.9k|  if (!mrb_immediate_p(v)) {
  ------------------
  |  |  148|  58.9k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|   117k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 52.9k, False: 5.99k]
  |  |  |  Branch (148:63): [True: 0, False: 5.99k]
  |  |  ------------------
  ------------------
   30|  5.99k|    return mrb_obj_ptr(v)->c;
  ------------------
  |  |   34|  5.99k|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  5.99k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
   31|  5.99k|  }
   32|       |
   33|  52.9k|  switch (mrb_type(v)) {
   34|      0|  case MRB_TT_FALSE:
  ------------------
  |  Branch (34:3): [True: 0, False: 52.9k]
  ------------------
   35|      0|    if (mrb_fixnum(v))
  ------------------
  |  |  160|      0|#define mrb_fixnum(o)  (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
  |  |  ------------------
  |  |  |  |   49|      0|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (160:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   36|      0|      return mrb->false_class;
   37|      0|    return mrb->nil_class;
   38|      0|  case MRB_TT_TRUE:
  ------------------
  |  Branch (38:3): [True: 0, False: 52.9k]
  ------------------
   39|      0|    return mrb->true_class;
   40|      0|  case MRB_TT_SYMBOL:
  ------------------
  |  Branch (40:3): [True: 0, False: 52.9k]
  ------------------
   41|      0|    return mrb->symbol_class;
   42|  52.9k|  case MRB_TT_INTEGER:
  ------------------
  |  Branch (42:3): [True: 52.9k, False: 0]
  ------------------
   43|  52.9k|    return mrb->integer_class;
   44|      0|#ifndef MRB_NO_FLOAT
   45|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (45:3): [True: 0, False: 52.9k]
  ------------------
   46|      0|    return mrb->float_class;
   47|      0|#endif
   48|      0|  case MRB_TT_CPTR:
  ------------------
  |  Branch (48:3): [True: 0, False: 52.9k]
  ------------------
   49|      0|    return mrb->object_class;
   50|      0|  default:
  ------------------
  |  Branch (50:3): [True: 0, False: 52.9k]
  ------------------
   51|      0|    return NULL;
   52|  52.9k|  }
   53|  52.9k|}
error.c:mrb_class:
   28|     18|{
   29|     18|  if (!mrb_immediate_p(v)) {
  ------------------
  |  |  148|     18|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|     36|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 11, False: 7]
  |  |  |  Branch (148:63): [True: 0, False: 7]
  |  |  ------------------
  ------------------
   30|      7|    return mrb_obj_ptr(v)->c;
  ------------------
  |  |   34|      7|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      7|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
   31|      7|  }
   32|       |
   33|     11|  switch (mrb_type(v)) {
   34|      0|  case MRB_TT_FALSE:
  ------------------
  |  Branch (34:3): [True: 0, False: 11]
  ------------------
   35|      0|    if (mrb_fixnum(v))
  ------------------
  |  |  160|      0|#define mrb_fixnum(o)  (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
  |  |  ------------------
  |  |  |  |   49|      0|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (160:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   36|      0|      return mrb->false_class;
   37|      0|    return mrb->nil_class;
   38|      5|  case MRB_TT_TRUE:
  ------------------
  |  Branch (38:3): [True: 5, False: 6]
  ------------------
   39|      5|    return mrb->true_class;
   40|      0|  case MRB_TT_SYMBOL:
  ------------------
  |  Branch (40:3): [True: 0, False: 11]
  ------------------
   41|      0|    return mrb->symbol_class;
   42|      6|  case MRB_TT_INTEGER:
  ------------------
  |  Branch (42:3): [True: 6, False: 5]
  ------------------
   43|      6|    return mrb->integer_class;
   44|      0|#ifndef MRB_NO_FLOAT
   45|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (45:3): [True: 0, False: 11]
  ------------------
   46|      0|    return mrb->float_class;
   47|      0|#endif
   48|      0|  case MRB_TT_CPTR:
  ------------------
  |  Branch (48:3): [True: 0, False: 11]
  ------------------
   49|      0|    return mrb->object_class;
   50|      0|  default:
  ------------------
  |  Branch (50:3): [True: 0, False: 11]
  ------------------
   51|      0|    return NULL;
   52|     11|  }
   53|     11|}

vm.c:bin_to_uint32:
  137|  1.42k|{
  138|  1.42k|  return (uint32_t)bin[0] << 24 |
  139|  1.42k|         (uint32_t)bin[1] << 16 |
  140|  1.42k|         (uint32_t)bin[2] << 8  |
  141|  1.42k|         (uint32_t)bin[3];
  142|  1.42k|}

vm.c:mrb_irep_catch_handler_table:
   83|  1.42k|{
   84|  1.42k|  if (irep->clen > 0) {
  ------------------
  |  Branch (84:7): [True: 1.42k, False: 0]
  ------------------
   85|  1.42k|    return (const struct mrb_irep_catch_handler*)(irep->iseq + irep->ilen);
   86|  1.42k|  }
   87|      0|  else {
   88|      0|    return (const struct mrb_irep_catch_handler*)NULL;
   89|      0|  }
   90|  1.42k|}

random.c:mrb_istruct_ptr:
   39|    952|{
   40|    952|  return ISTRUCT_PTR(object);
  ------------------
  |  |   31|    952|#define ISTRUCT_PTR(obj)      (RISTRUCT(obj)->inline_data)
  |  |  ------------------
  |  |  |  |   30|    952|#define RISTRUCT(obj)         ((struct RIStruct*)(mrb_ptr(obj)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|    952|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   41|    952|}

vm.c:mrb_int_add_overflow:
   74|  87.3k|{
   75|  87.3k|  return __builtin_add_overflow(augend, addend, sum);
   76|  87.3k|}
vm.c:mrb_int_sub_overflow:
   80|  3.65k|{
   81|  3.65k|  return __builtin_sub_overflow(minuend, subtrahend, difference);
   82|  3.65k|}
vm.c:mrb_int_mul_overflow:
   86|  2.01k|{
   87|  2.01k|  return __builtin_mul_overflow(multiplier, multiplicand, product);
   88|  2.01k|}
string.c:mrb_int_add_overflow:
   74|  8.96k|{
   75|  8.96k|  return __builtin_add_overflow(augend, addend, sum);
   76|  8.96k|}
string.c:mrb_int_mul_overflow:
   86|     16|{
   87|     16|  return __builtin_mul_overflow(multiplier, multiplicand, product);
   88|     16|}
codegen.c:mrb_int_add_overflow:
   74|  4.31k|{
   75|  4.31k|  return __builtin_add_overflow(augend, addend, sum);
   76|  4.31k|}
codegen.c:mrb_int_sub_overflow:
   80|  9.79k|{
   81|  9.79k|  return __builtin_sub_overflow(minuend, subtrahend, difference);
   82|  9.79k|}
codegen.c:mrb_int_mul_overflow:
   86|   582k|{
   87|   582k|  return __builtin_mul_overflow(multiplier, multiplicand, product);
   88|   582k|}

state.c:mrb_obj_value:
  368|  12.7k|{
  369|  12.7k|  mrb_value v;
  370|  12.7k|  SET_OBJ_VALUE(v, (struct RBasic*)p);
  ------------------
  |  |  217|  12.7k|#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
  ------------------
  371|  12.7k|  return v;
  372|  12.7k|}
gc.c:mrb_nil_value:
  381|  11.9k|{
  382|  11.9k|  mrb_value v;
  383|  11.9k|  SET_NIL_VALUE(v);
  ------------------
  |  |  210|  11.9k|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
  384|  11.9k|  return v;
  385|  11.9k|}
symbol.c:mrb_ro_data_p:
  432|  67.7k|{
  433|  67.7k|  return &etext < p && p < &edata;
  ------------------
  |  Branch (433:10): [True: 67.7k, False: 0]
  |  Branch (433:24): [True: 0, False: 67.7k]
  ------------------
  434|  67.7k|}
array.c:mrb_obj_value:
  368|   193k|{
  369|   193k|  mrb_value v;
  370|   193k|  SET_OBJ_VALUE(v, (struct RBasic*)p);
  ------------------
  |  |  217|   193k|#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
  ------------------
  371|   193k|  return v;
  372|   193k|}
array.c:mrb_nil_value:
  381|  3.95k|{
  382|  3.95k|  mrb_value v;
  383|  3.95k|  SET_NIL_VALUE(v);
  ------------------
  |  |  210|  3.95k|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
  384|  3.95k|  return v;
  385|  3.95k|}
array.c:mrb_int_value:
  345|  21.9k|{
  346|  21.9k|  mrb_value v;
  347|  21.9k|  SET_INT_VALUE(mrb, v, i);
  ------------------
  |  |  214|  21.9k|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  ------------------
  348|  21.9k|  return v;
  349|  21.9k|}
array.c:mrb_false_value:
  391|  23.8k|{
  392|  23.8k|  mrb_value v;
  393|  23.8k|  SET_FALSE_VALUE(v);
  ------------------
  |  |  211|  23.8k|#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
  ------------------
  394|  23.8k|  return v;
  395|  23.8k|}
vm.c:mrb_obj_value:
  368|   483k|{
  369|   483k|  mrb_value v;
  370|   483k|  SET_OBJ_VALUE(v, (struct RBasic*)p);
  ------------------
  |  |  217|   483k|#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
  ------------------
  371|   483k|  return v;
  372|   483k|}
vm.c:mrb_nil_value:
  381|   311k|{
  382|   311k|  mrb_value v;
  383|   311k|  SET_NIL_VALUE(v);
  ------------------
  |  |  210|   311k|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
  384|   311k|  return v;
  385|   311k|}
vm.c:mrb_int_value:
  345|    271|{
  346|    271|  mrb_value v;
  347|    271|  SET_INT_VALUE(mrb, v, i);
  ------------------
  |  |  214|    271|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  ------------------
  348|    271|  return v;
  349|    271|}
vm.c:mrb_symbol_value:
  360|   212k|{
  361|   212k|  mrb_value v;
  362|   212k|  SET_SYM_VALUE(v, i);
  ------------------
  |  |  216|   212k|#define SET_SYM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, SYMBOL, n)
  |  |  ------------------
  |  |  |  |   74|   212k|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  363|   212k|  return v;
  364|   212k|}
string.c:mrb_obj_value:
  368|   206k|{
  369|   206k|  mrb_value v;
  370|   206k|  SET_OBJ_VALUE(v, (struct RBasic*)p);
  ------------------
  |  |  217|   206k|#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
  ------------------
  371|   206k|  return v;
  372|   206k|}
string.c:mrb_ro_data_p:
  432|    919|{
  433|    919|  return &etext < p && p < &edata;
  ------------------
  |  Branch (433:10): [True: 919, False: 0]
  |  Branch (433:24): [True: 0, False: 919]
  ------------------
  434|    919|}
kernel.c:mrb_false_value:
  391|  1.41k|{
  392|  1.41k|  mrb_value v;
  393|  1.41k|  SET_FALSE_VALUE(v);
  ------------------
  |  |  211|  1.41k|#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
  ------------------
  394|  1.41k|  return v;
  395|  1.41k|}
kernel.c:mrb_bool_value:
  409|  58.9k|{
  410|  58.9k|  mrb_value v;
  411|  58.9k|  SET_BOOL_VALUE(v, boolean);
  ------------------
  |  |  213|  58.9k|#define SET_BOOL_VALUE(r,b) ((b) ? SET_TRUE_VALUE(r) : SET_FALSE_VALUE(r))
  |  |  ------------------
  |  |  |  |  212|  5.99k|#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
  |  |  ------------------
  |  |               #define SET_BOOL_VALUE(r,b) ((b) ? SET_TRUE_VALUE(r) : SET_FALSE_VALUE(r))
  |  |  ------------------
  |  |  |  |  211|  52.9k|#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
  |  |  ------------------
  |  |  |  Branch (213:30): [True: 5.99k, False: 52.9k]
  |  |  ------------------
  ------------------
  412|  58.9k|  return v;
  413|  58.9k|}
class.c:mrb_symbol_value:
  360|  44.2k|{
  361|  44.2k|  mrb_value v;
  362|  44.2k|  SET_SYM_VALUE(v, i);
  ------------------
  |  |  216|  44.2k|#define SET_SYM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, SYMBOL, n)
  |  |  ------------------
  |  |  |  |   74|  44.2k|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  363|  44.2k|  return v;
  364|  44.2k|}
class.c:mrb_obj_value:
  368|   456k|{
  369|   456k|  mrb_value v;
  370|   456k|  SET_OBJ_VALUE(v, (struct RBasic*)p);
  ------------------
  |  |  217|   456k|#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
  ------------------
  371|   456k|  return v;
  372|   456k|}
class.c:mrb_nil_value:
  381|   112k|{
  382|   112k|  mrb_value v;
  383|   112k|  SET_NIL_VALUE(v);
  ------------------
  |  |  210|   112k|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
  384|   112k|  return v;
  385|   112k|}
class.c:mrb_bool_value:
  409|  3.54k|{
  410|  3.54k|  mrb_value v;
  411|  3.54k|  SET_BOOL_VALUE(v, boolean);
  ------------------
  |  |  213|  3.54k|#define SET_BOOL_VALUE(r,b) ((b) ? SET_TRUE_VALUE(r) : SET_FALSE_VALUE(r))
  |  |  ------------------
  |  |  |  |  212|  2.65k|#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
  |  |  ------------------
  |  |               #define SET_BOOL_VALUE(r,b) ((b) ? SET_TRUE_VALUE(r) : SET_FALSE_VALUE(r))
  |  |  ------------------
  |  |  |  |  211|    888|#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
  |  |  ------------------
  |  |  |  Branch (213:30): [True: 2.65k, False: 888]
  |  |  ------------------
  ------------------
  412|  3.54k|  return v;
  413|  3.54k|}
etc.c:mrb_fixnum_value:
  352|   187k|{
  353|   187k|  mrb_value v;
  354|   187k|  SET_FIXNUM_VALUE(v, i);
  ------------------
  |  |  215|   187k|#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
  |  |  ------------------
  |  |  |  |   74|   187k|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  355|   187k|  return v;
  356|   187k|}
variable.c:mrb_nil_value:
  381|  3.71k|{
  382|  3.71k|  mrb_value v;
  383|  3.71k|  SET_NIL_VALUE(v);
  ------------------
  |  |  210|  3.71k|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
  384|  3.71k|  return v;
  385|  3.71k|}
variable.c:mrb_symbol_value:
  360|    952|{
  361|    952|  mrb_value v;
  362|    952|  SET_SYM_VALUE(v, i);
  ------------------
  |  |  216|    952|#define SET_SYM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, SYMBOL, n)
  |  |  ------------------
  |  |  |  |   74|    952|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  363|    952|  return v;
  364|    952|}
version.c:mrb_fixnum_value:
  352|    476|{
  353|    476|  mrb_value v;
  354|    476|  SET_FIXNUM_VALUE(v, i);
  ------------------
  |  |  215|    476|#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
  |  |  ------------------
  |  |  |  |   74|    476|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  355|    476|  return v;
  356|    476|}
bigint.c:mrb_obj_value:
  368|  28.7k|{
  369|  28.7k|  mrb_value v;
  370|  28.7k|  SET_OBJ_VALUE(v, (struct RBasic*)p);
  ------------------
  |  |  217|  28.7k|#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
  ------------------
  371|  28.7k|  return v;
  372|  28.7k|}
bigint.c:mrb_float_value:
  324|    546|{
  325|    546|  mrb_value v;
  326|    546|  (void) mrb;
  327|    546|  SET_FLOAT_VALUE(mrb, v, f);
  ------------------
  |  |  206|    546|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  ------------------
  328|    546|  return v;
  329|    546|}
bigint.c:mrb_int_value:
  345|  6.33k|{
  346|  6.33k|  mrb_value v;
  347|  6.33k|  SET_INT_VALUE(mrb, v, i);
  ------------------
  |  |  214|  6.33k|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  ------------------
  348|  6.33k|  return v;
  349|  6.33k|}
y.tab.c:mrb_undef_value:
  417|     82|{
  418|     82|  mrb_value v;
  419|     82|  SET_UNDEF_VALUE(v);
  ------------------
  |  |  209|     82|#define SET_UNDEF_VALUE(r) ((r).w = MRB_Qundef)
  ------------------
  420|     82|  return v;
  421|     82|}
y.tab.c:mrb_nil_value:
  381|    148|{
  382|    148|  mrb_value v;
  383|    148|  SET_NIL_VALUE(v);
  ------------------
  |  |  210|    148|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
  384|    148|  return v;
  385|    148|}
gem_init.c:mrb_nil_value:
  381|    476|{
  382|    476|  mrb_value v;
  383|    476|  SET_NIL_VALUE(v);
  ------------------
  |  |  210|    476|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
  384|    476|  return v;
  385|    476|}
hash.c:mrb_obj_value:
  368|  37.2k|{
  369|  37.2k|  mrb_value v;
  370|  37.2k|  SET_OBJ_VALUE(v, (struct RBasic*)p);
  ------------------
  |  |  217|  37.2k|#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
  ------------------
  371|  37.2k|  return v;
  372|  37.2k|}
object.c:mrb_bool_value:
  409|    880|{
  410|    880|  mrb_value v;
  411|    880|  SET_BOOL_VALUE(v, boolean);
  ------------------
  |  |  213|    880|#define SET_BOOL_VALUE(r,b) ((b) ? SET_TRUE_VALUE(r) : SET_FALSE_VALUE(r))
  |  |  ------------------
  |  |  |  |  212|    342|#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
  |  |  ------------------
  |  |               #define SET_BOOL_VALUE(r,b) ((b) ? SET_TRUE_VALUE(r) : SET_FALSE_VALUE(r))
  |  |  ------------------
  |  |  |  |  211|    538|#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
  |  |  ------------------
  |  |  |  Branch (213:30): [True: 342, False: 538]
  |  |  ------------------
  ------------------
  412|    880|  return v;
  413|    880|}
object.c:mrb_true_value:
  401|  1.41k|{
  402|  1.41k|  mrb_value v;
  403|  1.41k|  SET_TRUE_VALUE(v);
  ------------------
  |  |  212|  1.41k|#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
  ------------------
  404|  1.41k|  return v;
  405|  1.41k|}
object.c:mrb_nil_value:
  381|    615|{
  382|    615|  mrb_value v;
  383|    615|  SET_NIL_VALUE(v);
  ------------------
  |  |  210|    615|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
  384|    615|  return v;
  385|    615|}
object.c:mrb_float_value:
  324|  4.30k|{
  325|  4.30k|  mrb_value v;
  326|  4.30k|  (void) mrb;
  327|  4.30k|  SET_FLOAT_VALUE(mrb, v, f);
  ------------------
  |  |  206|  4.30k|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  ------------------
  328|  4.30k|  return v;
  329|  4.30k|}
error.c:mrb_obj_value:
  368|  1.18k|{
  369|  1.18k|  mrb_value v;
  370|  1.18k|  SET_OBJ_VALUE(v, (struct RBasic*)p);
  ------------------
  |  |  217|  1.18k|#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
  ------------------
  371|  1.18k|  return v;
  372|  1.18k|}
error.c:mrb_int_value:
  345|     28|{
  346|     28|  mrb_value v;
  347|     28|  SET_INT_VALUE(mrb, v, i);
  ------------------
  |  |  214|     28|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  ------------------
  348|     28|  return v;
  349|     28|}
error.c:mrb_symbol_value:
  360|     74|{
  361|     74|  mrb_value v;
  362|     74|  SET_SYM_VALUE(v, i);
  ------------------
  |  |  216|     74|#define SET_SYM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, SYMBOL, n)
  |  |  ------------------
  |  |  |  |   74|     74|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  363|     74|  return v;
  364|     74|}
numeric.c:mrb_float_value:
  324|  3.68k|{
  325|  3.68k|  mrb_value v;
  326|  3.68k|  (void) mrb;
  327|  3.68k|  SET_FLOAT_VALUE(mrb, v, f);
  ------------------
  |  |  206|  3.68k|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  ------------------
  328|  3.68k|  return v;
  329|  3.68k|}
numeric.c:mrb_int_value:
  345|  3.90k|{
  346|  3.90k|  mrb_value v;
  347|  3.90k|  SET_INT_VALUE(mrb, v, i);
  ------------------
  |  |  214|  3.90k|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  ------------------
  348|  3.90k|  return v;
  349|  3.90k|}
numeric.c:mrb_true_value:
  401|  1.31k|{
  402|  1.31k|  mrb_value v;
  403|  1.31k|  SET_TRUE_VALUE(v);
  ------------------
  |  |  212|  1.31k|#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
  ------------------
  404|  1.31k|  return v;
  405|  1.31k|}
numeric.c:mrb_false_value:
  391|  2.91k|{
  392|  2.91k|  mrb_value v;
  393|  2.91k|  SET_FALSE_VALUE(v);
  ------------------
  |  |  211|  2.91k|#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
  ------------------
  394|  2.91k|  return v;
  395|  2.91k|}
numeric.c:mrb_bool_value:
  409|  4.89k|{
  410|  4.89k|  mrb_value v;
  411|  4.89k|  SET_BOOL_VALUE(v, boolean);
  ------------------
  |  |  213|  4.89k|#define SET_BOOL_VALUE(r,b) ((b) ? SET_TRUE_VALUE(r) : SET_FALSE_VALUE(r))
  |  |  ------------------
  |  |  |  |  212|      3|#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
  |  |  ------------------
  |  |               #define SET_BOOL_VALUE(r,b) ((b) ? SET_TRUE_VALUE(r) : SET_FALSE_VALUE(r))
  |  |  ------------------
  |  |  |  |  211|  4.89k|#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
  |  |  ------------------
  |  |  |  Branch (213:30): [True: 3, False: 4.89k]
  |  |  ------------------
  ------------------
  412|  4.89k|  return v;
  413|  4.89k|}
numeric.c:mrb_fixnum_value:
  352|    419|{
  353|    419|  mrb_value v;
  354|    419|  SET_FIXNUM_VALUE(v, i);
  ------------------
  |  |  215|    419|#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
  |  |  ------------------
  |  |  |  |   74|    419|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  355|    419|  return v;
  356|    419|}
numeric.c:mrb_obj_value:
  368|    476|{
  369|    476|  mrb_value v;
  370|    476|  SET_OBJ_VALUE(v, (struct RBasic*)p);
  ------------------
  |  |  217|    476|#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
  ------------------
  371|    476|  return v;
  372|    476|}
codegen.c:mrb_ro_data_p:
  432|  3.20k|{
  433|  3.20k|  return &etext < p && p < &edata;
  ------------------
  |  Branch (433:10): [True: 3.20k, False: 0]
  |  Branch (433:24): [True: 0, False: 3.20k]
  ------------------
  434|  3.20k|}
numeric_ext.c:mrb_fixnum_value:
  352|  3.33k|{
  353|  3.33k|  mrb_value v;
  354|  3.33k|  SET_FIXNUM_VALUE(v, i);
  ------------------
  |  |  215|  3.33k|#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
  |  |  ------------------
  |  |  |  |   74|  3.33k|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  355|  3.33k|  return v;
  356|  3.33k|}
numeric_ext.c:mrb_float_value:
  324|  1.42k|{
  325|  1.42k|  mrb_value v;
  326|  1.42k|  (void) mrb;
  327|  1.42k|  SET_FLOAT_VALUE(mrb, v, f);
  ------------------
  |  |  206|  1.42k|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  ------------------
  328|  1.42k|  return v;
  329|  1.42k|}
mruby_objectspace.c:mrb_symbol_value:
  360|   138k|{
  361|   138k|  mrb_value v;
  362|   138k|  SET_SYM_VALUE(v, i);
  ------------------
  |  |  216|   138k|#define SET_SYM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, SYMBOL, n)
  |  |  ------------------
  |  |  |  |   74|   138k|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  363|   138k|  return v;
  364|   138k|}
mruby_objectspace.c:mrb_fixnum_value:
  352|   108k|{
  353|   108k|  mrb_value v;
  354|   108k|  SET_FIXNUM_VALUE(v, i);
  ------------------
  |  |  215|   108k|#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
  |  |  ------------------
  |  |  |  |   74|   108k|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  355|   108k|  return v;
  356|   108k|}
time.c:mrb_obj_value:
  368|  4.99k|{
  369|  4.99k|  mrb_value v;
  370|  4.99k|  SET_OBJ_VALUE(v, (struct RBasic*)p);
  ------------------
  |  |  217|  4.99k|#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
  ------------------
  371|  4.99k|  return v;
  372|  4.99k|}
time.c:mrb_fixnum_value:
  352|  2.69k|{
  353|  2.69k|  mrb_value v;
  354|  2.69k|  SET_FIXNUM_VALUE(v, i);
  ------------------
  |  |  215|  2.69k|#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
  |  |  ------------------
  |  |  |  |   74|  2.69k|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  355|  2.69k|  return v;
  356|  2.69k|}
random.c:mrb_obj_value:
  368|  1.42k|{
  369|  1.42k|  mrb_value v;
  370|  1.42k|  SET_OBJ_VALUE(v, (struct RBasic*)p);
  ------------------
  |  |  217|  1.42k|#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
  ------------------
  371|  1.42k|  return v;
  372|  1.42k|}
file.c:mrb_fixnum_value:
  352|  10.4k|{
  353|  10.4k|  mrb_value v;
  354|  10.4k|  SET_FIXNUM_VALUE(v, i);
  ------------------
  |  |  215|  10.4k|#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
  |  |  ------------------
  |  |  |  |   74|  10.4k|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  355|  10.4k|  return v;
  356|  10.4k|}
file.c:mrb_nil_value:
  381|    476|{
  382|    476|  mrb_value v;
  383|    476|  SET_NIL_VALUE(v);
  ------------------
  |  |  210|    476|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
  384|    476|  return v;
  385|    476|}
socket.c:mrb_int_value:
  345|  67.5k|{
  346|  67.5k|  mrb_value v;
  347|  67.5k|  SET_INT_VALUE(mrb, v, i);
  ------------------
  |  |  214|  67.5k|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  ------------------
  348|  67.5k|  return v;
  349|  67.5k|}
errno.c:mrb_obj_value:
  368|    476|{
  369|    476|  mrb_value v;
  370|    476|  SET_OBJ_VALUE(v, (struct RBasic*)p);
  ------------------
  |  |  217|    476|#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
  ------------------
  371|    476|  return v;
  372|    476|}
errno.c:mrb_fixnum_value:
  352|    952|{
  353|    952|  mrb_value v;
  354|    952|  SET_FIXNUM_VALUE(v, i);
  ------------------
  |  |  215|    952|#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
  |  |  ------------------
  |  |  |  |   74|    952|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  355|    952|  return v;
  356|    952|}
math.c:mrb_float_value:
  324|  4.15k|{
  325|  4.15k|  mrb_value v;
  326|  4.15k|  (void) mrb;
  327|  4.15k|  SET_FLOAT_VALUE(mrb, v, f);
  ------------------
  |  |  206|  4.15k|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  ------------------
  328|  4.15k|  return v;
  329|  4.15k|}
io.c:mrb_nil_value:
  381|  1.42k|{
  382|  1.42k|  mrb_value v;
  383|  1.42k|  SET_NIL_VALUE(v);
  ------------------
  |  |  210|  1.42k|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
  384|  1.42k|  return v;
  385|  1.42k|}
io.c:mrb_fixnum_value:
  352|  1.42k|{
  353|  1.42k|  mrb_value v;
  354|  1.42k|  SET_FIXNUM_VALUE(v, i);
  ------------------
  |  |  215|  1.42k|#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
  |  |  ------------------
  |  |  |  |   74|  1.42k|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  355|  1.42k|  return v;
  356|  1.42k|}

mrb_mruby_array_ext_gem_init:
  346|    476|{
  347|    476|  struct RClass * a = mrb->array_class;
  348|       |
  349|    476|  mrb_define_method(mrb, a, "assoc",  ary_assoc,  MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  350|    476|  mrb_define_method(mrb, a, "at",     ary_at,     MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  351|    476|  mrb_define_method(mrb, a, "rassoc", ary_rassoc, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  352|    476|  mrb_define_method(mrb, a, "values_at", ary_values_at, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  353|    476|  mrb_define_method(mrb, a, "slice!", ary_slice_bang, MRB_ARGS_ARG(1,1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
  354|    476|  mrb_define_method(mrb, a, "compact", ary_compact, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  355|    476|  mrb_define_method(mrb, a, "compact!", ary_compact_bang, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  356|    476|  mrb_define_method(mrb, a, "rotate", ary_rotate, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  357|    476|  mrb_define_method(mrb, a, "rotate!", ary_rotate_bang, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  358|    476|}
mrb_mruby_array_ext_gem_final:
  362|    476|{
  363|    476|}
array.c:ary_assoc:
   31|    453|{
   32|    453|  mrb_int i;
   33|    453|  mrb_value v;
   34|    453|  mrb_value k = mrb_get_arg1(mrb);
   35|       |
   36|  1.06k|  for (i = 0; i < RARRAY_LEN(ary); i++) {
  ------------------
  |  |   72|  1.06k|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|  1.06k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  1.06k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  1.06k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 960, False: 108]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    960|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    960|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (36:15): [True: 615, False: 453]
  ------------------
   37|    615|    v = mrb_check_array_type(mrb, RARRAY_PTR(ary)[i]);
  ------------------
  |  |   73|    615|#define RARRAY_PTR(a) ARY_PTR(RARRAY(a))
  |  |  ------------------
  |  |  |  |   71|    615|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    615|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    615|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 524, False: 91]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    524|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   38|    615|    if (!mrb_nil_p(v) && RARRAY_LEN(v) > 0 &&
  ------------------
  |  |  174|  1.23k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  ------------------
                  if (!mrb_nil_p(v) && RARRAY_LEN(v) > 0 &&
  ------------------
  |  |   72|      0|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (38:9): [True: 0, False: 615]
  |  Branch (38:26): [True: 0, False: 0]
  ------------------
   39|    615|        mrb_equal(mrb, RARRAY_PTR(v)[0], k))
  ------------------
  |  |   73|      0|#define RARRAY_PTR(a) ARY_PTR(RARRAY(a))
  |  |  ------------------
  |  |  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (39:9): [True: 0, False: 0]
  ------------------
   40|      0|      return v;
   41|    615|  }
   42|    453|  return mrb_nil_value();
   43|    453|}
array.c:ary_rassoc:
   61|    157|{
   62|    157|  mrb_int i;
   63|    157|  mrb_value v;
   64|    157|  mrb_value value = mrb_get_arg1(mrb);
   65|       |
   66|    549|  for (i = 0; i < RARRAY_LEN(ary); i++) {
  ------------------
  |  |   72|    549|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|    549|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    549|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    549|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 290, False: 259]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    290|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    290|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (66:15): [True: 392, False: 157]
  ------------------
   67|    392|    v = RARRAY_PTR(ary)[i];
  ------------------
  |  |   73|    392|#define RARRAY_PTR(a) ARY_PTR(RARRAY(a))
  |  |  ------------------
  |  |  |  |   71|    392|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    392|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    392|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 146, False: 246]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    146|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   68|    392|    if (mrb_array_p(v) &&
  ------------------
  |  |  186|    392|#define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
  |  |  ------------------
  |  |  |  |   78|    784|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|    784|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|    784|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 392, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|    392|        RARRAY_LEN(v) > 1 &&
  ------------------
  |  |   72|      0|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (69:9): [True: 0, False: 0]
  ------------------
   70|    392|        mrb_equal(mrb, RARRAY_PTR(v)[1], value))
  ------------------
  |  |   73|      0|#define RARRAY_PTR(a) ARY_PTR(RARRAY(a))
  |  |  ------------------
  |  |  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (70:9): [True: 0, False: 0]
  ------------------
   71|      0|      return v;
   72|    392|  }
   73|    157|  return mrb_nil_value();
   74|    157|}
array.c:ary_values_at:
  105|    664|{
  106|    664|  mrb_int argc = mrb_get_argc(mrb);
  107|    664|  const mrb_value *argv = mrb_get_argv(mrb);
  108|       |
  109|    664|  return mrb_get_values_at(mrb, self, RARRAY_LEN(self), argc, argv, ary_ref);
  ------------------
  |  |   72|    664|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|    664|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    664|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    664|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 397, False: 267]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    397|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    397|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  110|    664|}
array.c:ary_ref:
   99|    664|{
  100|    664|  return mrb_ary_entry(ary, n);
  101|    664|}
array.c:ary_rotate:
  253|    708|{
  254|    708|  mrb_int count=1;
  255|    708|  mrb_get_args(mrb, "|i", &count);
  256|       |
  257|    708|  mrb_value ary = mrb_ary_new(mrb);
  258|    708|  mrb_int len = RARRAY_LEN(self);
  ------------------
  |  |   72|    708|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|    708|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    708|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    708|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 696, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    696|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    696|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  259|    708|  mrb_value *p = RARRAY_PTR(self);
  ------------------
  |  |   73|    708|#define RARRAY_PTR(a) ARY_PTR(RARRAY(a))
  |  |  ------------------
  |  |  |  |   71|    708|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    708|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    708|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 696, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    696|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  260|    708|  mrb_int idx;
  261|       |
  262|    708|  if (len <= 0) return ary;
  ------------------
  |  Branch (262:7): [True: 0, False: 708]
  ------------------
  263|    708|  if (count < 0) {
  ------------------
  |  Branch (263:7): [True: 388, False: 320]
  ------------------
  264|    388|    idx = len - (~count % len) - 1;
  265|    388|  }
  266|    320|  else {
  267|    320|    idx = count % len;
  268|    320|  }
  269|  1.45k|  for (mrb_int i = 0; i<len; i++) {
  ------------------
  |  Branch (269:23): [True: 744, False: 708]
  ------------------
  270|    744|    mrb_ary_push(mrb, ary, p[idx++]);
  271|    744|    if (idx == len) idx = 0;
  ------------------
  |  Branch (271:9): [True: 708, False: 36]
  ------------------
  272|    744|  }
  273|    708|  return ary;
  274|    708|}
array.c:ary_rotate_bang:
  304|  1.15k|{
  305|  1.15k|  mrb_int count=1;
  306|  1.15k|  mrb_get_args(mrb, "|i", &count);
  307|       |
  308|  1.15k|  struct RArray *a = mrb_ary_ptr(self);
  ------------------
  |  |   51|  1.15k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  1.15k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  309|  1.15k|  mrb_int len = ARY_LEN(a);
  ------------------
  |  |   70|  1.15k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  1.15k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  1.15k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 1.08k, False: 67]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  1.08k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  1.08k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  310|  1.15k|  mrb_value *p = ARY_PTR(a);
  ------------------
  |  |   71|  1.15k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|  1.15k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  1.15k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 1.08k, False: 67]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|  1.08k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  311|  1.15k|  mrb_int idx;
  312|       |
  313|  1.15k|  mrb_ary_modify(mrb, a);
  314|  1.15k|  if (len == 0 || count == 0) return self;
  ------------------
  |  Branch (314:7): [True: 0, False: 1.15k]
  |  Branch (314:19): [True: 145, False: 1.00k]
  ------------------
  315|  1.00k|  if (count == 1) {
  ------------------
  |  Branch (315:7): [True: 369, False: 640]
  ------------------
  316|    369|    mrb_value v = p[0];
  317|  6.98k|    for (mrb_int i=1; i<len; i++) {
  ------------------
  |  Branch (317:23): [True: 6.61k, False: 369]
  ------------------
  318|  6.61k|      p[i-1] = p[i];
  319|  6.61k|    }
  320|    369|    p[len-1] = v;
  321|    369|    return self;
  322|    369|  }
  323|    640|  if (count < 0) {
  ------------------
  |  Branch (323:7): [True: 374, False: 266]
  ------------------
  324|    374|    idx = len - (~count % len) - 1;
  325|    374|  }
  326|    266|  else {
  327|    266|    idx = count % len;
  328|    266|  }
  329|       |  /* e.g. [1,2,3,4,5].rotate!(2) -> [3,4,5,1,2] */
  330|       |  /* first, reverse the whole array */
  331|       |  /* [1,2,3,4,5] -> [5,4,3,2,1] */
  332|    640|  rev(p, 0, len);
  333|       |  /* then, re-reverse part before idx */
  334|       |  /* [5,4,3,2,1] -> [3,4,5,2,1] */
  335|       |  /*        ^idx     ~~~~~      */
  336|    640|  rev(p, 0, len-idx);
  337|       |  /* finally, re-reverse part after idx */
  338|       |  /* [3,4,5,2,1] -> [3,4,5,1,2] */
  339|       |  /*        ^idx           ~~~  */
  340|    640|  rev(p, len-idx, len);
  341|    640|  return self;
  342|  1.00k|}
array.c:rev:
  278|  1.92k|{
  279|  2.11k|  for (mrb_int i=beg,j=end-1; i<j; i++,j--) {
  ------------------
  |  Branch (279:31): [True: 198, False: 1.92k]
  ------------------
  280|    198|    mrb_value v = p[i];
  281|    198|    p[i] = p[j];
  282|    198|    p[j] = v;
  283|    198|  }
  284|  1.92k|}

mrb_bint_new_int:
 1027|  10.4k|{
 1028|  10.4k|  struct RBigint *b = bint_new_int(mrb, x);
 1029|  10.4k|  return mrb_obj_value(b);
 1030|  10.4k|}
mrb_gc_free_bint:
 1082|  29.2k|{
 1083|  29.2k|  struct RBigint *b = (struct RBigint*)x;
 1084|  29.2k|  mpz_clear(mrb, &b->mp);
 1085|  29.2k|}
mrb_bint_new_float:
 1090|      6|{
 1091|       |  /* x should not be NaN nor Infinity */
 1092|      6|  mrb_assert(x == x && x != x * 0.5);
  ------------------
  |  |   68|      6|#define mrb_assert(p) ((void)0)
  ------------------
 1093|       |
 1094|      6|  int sn;
 1095|      6|  if (x < 0.0) {
  ------------------
  |  Branch (1095:7): [True: 3, False: 3]
  ------------------
 1096|      3|    x = -x;
 1097|      3|    sn = -1;
 1098|      3|  }
 1099|      3|  else {
 1100|      3|    sn = 1;
 1101|      3|  }
 1102|      6|  if (x < 1.0) {
  ------------------
  |  Branch (1102:7): [True: 0, False: 6]
  ------------------
 1103|      0|    return mrb_fixnum_value(0);
 1104|      0|  }
 1105|       |
 1106|      6|  struct RBigint *bint = bint_new(mrb);
 1107|      6|  mpz_t *r = &bint->mp;
 1108|      6|  r->sn = sn;
 1109|       |
 1110|      6|  mrb_float b = (double)DIG_BASE;
  ------------------
  |  |   17|      6|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  ------------------
  |  |  |  |   16|      6|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|      6|#define MPZ_DIG_SIZE 32
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1111|      6|  mrb_float bi = 1.0 / b;
 1112|      6|  size_t rn;
 1113|      6|  mp_limb *rp;
 1114|      6|  mp_limb f;
 1115|       |
 1116|     18|  for (rn = 1; x >= b; rn++)
  ------------------
  |  Branch (1116:16): [True: 12, False: 6]
  ------------------
 1117|     12|    x *= bi;
 1118|       |
 1119|      6|  mpz_realloc(mrb, r, rn);
 1120|      6|  rp = r->p;
 1121|     18|  for (size_t i=rn-1;;i--) {
 1122|     18|    f = LOW((mp_limb)x);
  ------------------
  |  |   20|     18|#define LOW(x)  ((x) & DIG_MASK)
  |  |  ------------------
  |  |  |  |   18|     18|#define DIG_MASK (DIG_BASE - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|     18|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|     18|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   46|     18|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1123|     18|    x -= f;
 1124|     18|    mrb_assert(x < 1.0);
  ------------------
  |  |   68|     18|#define mrb_assert(p) ((void)0)
  ------------------
 1125|     18|    rp[i] = f;
 1126|     18|    if (i == 0) break;
  ------------------
  |  Branch (1126:9): [True: 6, False: 12]
  ------------------
 1127|     18|  }
 1128|      6|  return bint_norm(mrb, bint);
 1129|      6|}
mrb_bint_as_float:
 1133|  1.84k|{
 1134|  1.84k|  struct RBigint *b = RBIGINT(self);
  ------------------
  |  |   59|  1.84k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  1.84k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1135|  1.84k|  mpz_t *i = &b->mp;
 1136|  1.84k|  mp_limb *d = i->p + i->sz;
 1137|  1.84k|  mrb_float val = 0;
 1138|       |
 1139|  7.76k|  while (d-- > i->p) {
  ------------------
  |  Branch (1139:10): [True: 5.92k, False: 1.84k]
  ------------------
 1140|  5.92k|    val = val * DIG_BASE + *d;
  ------------------
  |  |   17|  5.92k|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  ------------------
  |  |  |  |   16|  5.92k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  5.92k|#define MPZ_DIG_SIZE 32
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1141|  5.92k|  }
 1142|       |
 1143|  1.84k|  if (i->sn < 0) {
  ------------------
  |  Branch (1143:7): [True: 640, False: 1.20k]
  ------------------
 1144|    640|    val = -val;
 1145|    640|  }
 1146|  1.84k|  return val;
 1147|  1.84k|}
mrb_as_bint:
 1152|  15.3k|{
 1153|  15.3k|  if (mrb_bigint_p(x)) return x;
  ------------------
  |  |  314|  15.3k|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 9.46k, False: 5.84k]
  |  |  ------------------
  ------------------
 1154|  5.84k|  return mrb_bint_new_int(mrb, mrb_as_int(mrb, x));
  ------------------
  |  | 1425|  5.84k|#define mrb_as_int(mrb, val) mrb_integer(mrb_ensure_int_type(mrb, val))
  |  |  ------------------
  |  |  |  |  166|  5.84k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  ------------------
  ------------------
 1155|  15.3k|}
mrb_bint_as_int:
 1159|     12|{
 1160|     12|  struct RBigint *b = RBIGINT(x);
  ------------------
  |  |   59|     12|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|     12|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1161|     12|  mrb_int i;
 1162|       |
 1163|     12|  if (!mpz_get_int(&b->mp, &i)) {
  ------------------
  |  Branch (1163:7): [True: 12, False: 0]
  ------------------
 1164|     12|    mrb_raise(mrb, E_RANGE_ERROR, "integer out of range");
  ------------------
  |  | 1379|     12|#define E_RANGE_ERROR        mrb_exc_get_id(mrb, MRB_ERROR_SYM(RangeError))
  |  |  ------------------
  |  |  |  | 1371|     12|#define MRB_ERROR_SYM(sym) mrb_intern_lit(mrb, #sym)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1164|     12|#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, (lit ""), mrb_strlen_lit(lit))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1075|     12|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1165|     12|  }
 1166|      0|  return i;
 1167|     12|}
mrb_bint_add_d:
 1215|  2.37k|{
 1216|  2.37k|  y = mrb_as_bint(mrb, y);
 1217|  2.37k|  struct RBigint *b = RBIGINT(x);
  ------------------
  |  |   59|  2.37k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  2.37k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1218|  2.37k|  struct RBigint *b2 = RBIGINT(y);
  ------------------
  |  |   59|  2.37k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  2.37k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1219|  2.37k|  struct RBigint *b3 = bint_new(mrb);
 1220|  2.37k|  mpz_add(mrb, &b3->mp, &b->mp, &b2->mp);
 1221|  2.37k|  return mrb_obj_value(b3);
 1222|  2.37k|}
mrb_bint_add:
 1226|  2.42k|{
 1227|  2.42k|#ifndef MRB_NO_FLOAT
 1228|  2.42k|  if (mrb_float_p(y)) {
  ------------------
  |  |  179|  2.42k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|  2.42k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 50, False: 2.37k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1229|     50|    mrb_float v1 = mrb_bint_as_float(mrb, x);
 1230|     50|    mrb_float v2 = mrb_float(y);
  ------------------
  |  |  155|     50|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 1231|     50|    return mrb_float_value(mrb,v1+v2);
 1232|     50|  }
 1233|  2.37k|#endif
 1234|  2.37k|  x = mrb_bint_add_d(mrb, x, y);
 1235|  2.37k|  return bint_norm(mrb, RBIGINT(x));
  ------------------
  |  |   59|  2.37k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  2.37k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1236|  2.42k|}
mrb_bint_sub_d:
 1241|  3.40k|{
 1242|  3.40k|  y = mrb_as_bint(mrb, y);
 1243|  3.40k|  struct RBigint *b = RBIGINT(x);
  ------------------
  |  |   59|  3.40k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  3.40k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1244|  3.40k|  struct RBigint *b2 = RBIGINT(y);
  ------------------
  |  |   59|  3.40k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  3.40k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1245|  3.40k|  struct RBigint *b3 = bint_new(mrb);
 1246|  3.40k|  mpz_sub(mrb, &b3->mp, &b->mp, &b2->mp);
 1247|  3.40k|  return mrb_obj_value(b3);
 1248|  3.40k|}
mrb_bint_sub:
 1252|  3.68k|{
 1253|  3.68k|#ifndef MRB_NO_FLOAT
 1254|  3.68k|  if (mrb_float_p(y)) {
  ------------------
  |  |  179|  3.68k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|  3.68k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 282, False: 3.40k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1255|    282|    mrb_float v1 = mrb_bint_as_float(mrb, x);
 1256|    282|    mrb_float v2 = mrb_float(y);
  ------------------
  |  |  155|    282|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 1257|    282|    return mrb_float_value(mrb,v1-v2);
 1258|    282|  }
 1259|  3.40k|#endif
 1260|  3.40k|  x = mrb_bint_sub_d(mrb, x, y);
 1261|  3.40k|  return bint_norm(mrb, RBIGINT(x));
  ------------------
  |  |   59|  3.40k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  3.40k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1262|  3.68k|}
mrb_bint_mul:
 1266|  1.16k|{
 1267|  1.16k|#ifndef MRB_NO_FLOAT
 1268|  1.16k|  if (mrb_float_p(y)) {
  ------------------
  |  |  179|  1.16k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|  1.16k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 7, False: 1.15k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1269|      7|    mrb_float v1 = mrb_bint_as_float(mrb, x);
 1270|      7|    mrb_float v2 = mrb_float(y);
  ------------------
  |  |  155|      7|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 1271|      7|    return mrb_float_value(mrb,v1*v2);
 1272|      7|  }
 1273|  1.15k|#endif
 1274|  1.15k|  y = mrb_as_bint(mrb, y);
 1275|  1.15k|  struct RBigint *b = RBIGINT(x);
  ------------------
  |  |   59|  1.15k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  1.15k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1276|  1.15k|  struct RBigint *b2 = RBIGINT(y);
  ------------------
  |  |   59|  1.15k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  1.15k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1277|  1.15k|  struct RBigint *b3 = bint_new(mrb);
 1278|  1.15k|  mpz_mul(mrb, &b3->mp, &b->mp, &b2->mp);
 1279|  1.15k|  return bint_norm(mrb, b3);
 1280|  1.16k|}
mrb_bint_div:
 1284|  3.96k|{
 1285|  3.96k|#ifndef MRB_NO_FLOAT
 1286|  3.96k|  if (mrb_float_p(y)) {
  ------------------
  |  |  179|  3.96k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|  3.96k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 17, False: 3.95k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1287|     17|    mrb_float v1 = mrb_bint_as_float(mrb, x);
 1288|     17|    mrb_float v2 = mrb_float(y);
  ------------------
  |  |  155|     17|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 1289|     17|    return mrb_float_value(mrb,v1*v2);
 1290|     17|  }
 1291|  3.95k|#endif
 1292|  3.95k|  if (mrb_integer_p(y) && mrb_integer(y) == 0) {
  ------------------
  |  |  171|  7.90k|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|  7.90k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 1.14k, False: 2.80k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|  2.80k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  5.60k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  5.60k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 2.80k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 2.80k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 77, False: 2.72k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (mrb_integer_p(y) && mrb_integer(y) == 0) {
  ------------------
  |  |  166|  1.22k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
  |  Branch (1292:27): [True: 0, False: 1.22k]
  ------------------
 1293|      0|    mrb_int_zerodiv(mrb);
 1294|      0|  }
 1295|  3.95k|  y = mrb_as_bint(mrb, y);
 1296|  3.95k|  struct RBigint *b = RBIGINT(x);
  ------------------
  |  |   59|  3.95k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  3.95k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1297|  3.95k|  struct RBigint *b2 = RBIGINT(y);
  ------------------
  |  |   59|  3.95k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  3.95k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1298|  3.95k|  struct RBigint *b3 = bint_new(mrb);
 1299|  3.95k|  if (b2->mp.sn == 0 || uzero(&b2->mp)) {
  ------------------
  |  Branch (1299:7): [True: 0, False: 3.95k]
  |  Branch (1299:25): [True: 0, False: 3.95k]
  ------------------
 1300|      0|    mrb_int_zerodiv(mrb);
 1301|      0|  }
 1302|  3.95k|  mpz_mdiv(mrb, &b3->mp, &b->mp, &b2->mp);
 1303|  3.95k|  return bint_norm(mrb, b3);
 1304|  3.95k|}
mrb_bint_add_ii:
 1308|    682|{
 1309|    682|  struct RBigint *b = bint_new(mrb);
 1310|    682|  mpz_t z1, z2;
 1311|       |
 1312|    682|  mpz_init_set_int(mrb, &z1, x);
 1313|    682|  mpz_init_set_int(mrb, &z2, y);
 1314|    682|  mpz_add(mrb, &b->mp, &z1, &z2);
 1315|    682|  mpz_clear(mrb, &z1);
 1316|    682|  mpz_clear(mrb, &z2);
 1317|    682|  return bint_norm(mrb, b);
 1318|    682|}
mrb_bint_sub_ii:
 1322|  1.39k|{
 1323|  1.39k|  struct RBigint *b = bint_new(mrb);
 1324|  1.39k|  mpz_t z1, z2;
 1325|       |
 1326|  1.39k|  mpz_init_set_int(mrb, &z1, x);
 1327|  1.39k|  mpz_init_set_int(mrb, &z2, y);
 1328|  1.39k|  mpz_sub(mrb, &b->mp, &z1, &z2);
 1329|  1.39k|  mpz_clear(mrb, &z1);
 1330|  1.39k|  mpz_clear(mrb, &z2);
 1331|  1.39k|  return bint_norm(mrb, b);
 1332|  1.39k|}
mrb_bint_mul_ii:
 1336|  1.32k|{
 1337|  1.32k|  struct RBigint *b = bint_new(mrb);
 1338|  1.32k|  mpz_t z1, z2;
 1339|       |
 1340|  1.32k|  mpz_init_set_int(mrb, &z1, x);
 1341|  1.32k|  mpz_init_set_int(mrb, &z2, y);
 1342|  1.32k|  mpz_mul(mrb, &b->mp, &z1, &z2);
 1343|  1.32k|  mpz_clear(mrb, &z1);
 1344|  1.32k|  mpz_clear(mrb, &z2);
 1345|  1.32k|  return bint_norm(mrb, b);
 1346|  1.32k|}
mrb_bint_mod:
 1350|  1.82k|{
 1351|  1.82k|#ifndef MRB_NO_FLOAT
 1352|  1.82k|  if (mrb_float_p(y)) {
  ------------------
  |  |  179|  1.82k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|  1.82k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 190, False: 1.63k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1353|    190|    mrb_float v1 = mrb_bint_as_float(mrb, x);
 1354|    190|    mrb_float v2 = mrb_float(y);
  ------------------
  |  |  155|    190|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 1355|    190|    return mrb_float_value(mrb, fmod(v1, v2));
 1356|    190|  }
 1357|  1.63k|#endif
 1358|  1.63k|  if (mrb_integer_p(y) && mrb_integer(y) == 0) {
  ------------------
  |  |  171|  3.27k|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|  3.27k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 130, False: 1.50k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|  1.50k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  3.01k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  3.01k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 1.50k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 1.50k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 49, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (mrb_integer_p(y) && mrb_integer(y) == 0) {
  ------------------
  |  |  166|    179|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
  |  Branch (1358:27): [True: 0, False: 179]
  ------------------
 1359|      0|    mrb_int_zerodiv(mrb);
 1360|      0|  }
 1361|  1.63k|  y = mrb_as_bint(mrb, y);
 1362|  1.63k|  struct RBigint *b = RBIGINT(x);
  ------------------
  |  |   59|  1.63k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  1.63k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1363|  1.63k|  struct RBigint *b2 = RBIGINT(y);
  ------------------
  |  |   59|  1.63k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  1.63k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1364|  1.63k|  struct RBigint *b3 = bint_new(mrb);
 1365|  1.63k|  if (b2->mp.sn == 0 || uzero(&b2->mp)) {
  ------------------
  |  Branch (1365:7): [True: 0, False: 1.63k]
  |  Branch (1365:25): [True: 0, False: 1.63k]
  ------------------
 1366|      0|    mrb_int_zerodiv(mrb);
 1367|      0|  }
 1368|  1.63k|  mpz_mmod(mrb, &b3->mp, &b->mp, &b2->mp);
 1369|  1.63k|  return bint_norm(mrb, b3);
 1370|  1.63k|}
mrb_bint_cmp:
 1415|  2.17k|{
 1416|  2.17k|#ifndef MRB_NO_FLOAT
 1417|  2.17k|  if (mrb_float_p(y)) {
  ------------------
  |  |  179|  2.17k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|  2.17k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 132, False: 2.04k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1418|    132|    mrb_float v1 = mrb_bint_as_float(mrb, x);
 1419|    132|    mrb_float v2 = mrb_float(y);
  ------------------
  |  |  155|    132|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 1420|    132|    if (v1 == v2) return 0;
  ------------------
  |  Branch (1420:9): [True: 128, False: 4]
  ------------------
 1421|      4|    if (v1 > v2)  return 1;
  ------------------
  |  Branch (1421:9): [True: 4, False: 0]
  ------------------
 1422|      0|    return -1;
 1423|      4|  }
 1424|  2.04k|#endif
 1425|  2.04k|  struct RBigint *b = RBIGINT(x);
  ------------------
  |  |   59|  2.04k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  2.04k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1426|  2.04k|  if (!mrb_bigint_p(y)) {
  ------------------
  |  |  314|  2.04k|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  ------------------
  |  Branch (1426:7): [True: 1.07k, False: 972]
  ------------------
 1427|  1.07k|    if (!mrb_integer_p(y)) return -2; /* type mismatch */
  ------------------
  |  |  171|  1.07k|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|  2.14k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 876, False: 194]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|    194|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|    388|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|    388|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 3, False: 191]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 191]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 191, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1428|       |
 1429|  1.06k|    mrb_int i1, i2 = mrb_integer(y);
  ------------------
  |  |  166|  1.06k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1430|  1.06k|    if (mpz_get_int(&b->mp, &i1)) {
  ------------------
  |  Branch (1430:9): [True: 0, False: 1.06k]
  ------------------
 1431|      0|      if (i1 == i2) return 0;
  ------------------
  |  Branch (1431:11): [True: 0, False: 0]
  ------------------
 1432|      0|      if (i1 > i2) return 1;
  ------------------
  |  Branch (1432:11): [True: 0, False: 0]
  ------------------
 1433|      0|      return -1;
 1434|      0|    }
 1435|  1.06k|    if (b->mp.sn > 0) return 1;
  ------------------
  |  Branch (1435:9): [True: 865, False: 202]
  ------------------
 1436|    202|    return -1;
 1437|  1.06k|  }
 1438|    972|  struct RBigint *b2 = RBIGINT(y);
  ------------------
  |  |   59|    972|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|    972|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1439|    972|  return mpz_cmp(mrb, &b->mp, &b2->mp);
 1440|  2.04k|}
mrb_bint_xor:
 1555|  1.94k|{
 1556|  1.94k|  struct RBigint *b3 = bint_new(mrb);
 1557|  1.94k|  struct RBigint *b1 = RBIGINT(x);
  ------------------
  |  |   59|  1.94k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  1.94k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1558|       |
 1559|  1.94k|#ifndef MRB_NO_FLOAT
 1560|  1.94k|  if (mrb_float_p(y)) {
  ------------------
  |  |  179|  1.94k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|  1.94k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 4, False: 1.94k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1561|      4|    mpz_t z;
 1562|      4|    mpz_init_set_int(mrb, &z, (mrb_int)mrb_float(y));
  ------------------
  |  |  155|      4|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 1563|      4|    mpz_xor(mrb, &b3->mp, &b1->mp, &z);
 1564|      4|    mpz_clear(mrb, &z);
 1565|      4|    return bint_norm(mrb, b3);
 1566|      4|  }
 1567|  1.94k|#endif
 1568|  1.94k|  y = mrb_as_bint(mrb, y);
 1569|  1.94k|  struct RBigint *b2 = RBIGINT(y);
  ------------------
  |  |   59|  1.94k|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|  1.94k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1570|  1.94k|  mpz_xor(mrb, &b3->mp, &b1->mp, &b2->mp);
 1571|  1.94k|  return bint_norm(mrb, b3);
 1572|  1.94k|}
mrb_bint_rshift:
 1601|    945|{
 1602|    945|  struct RBigint *b = RBIGINT(x);
  ------------------
  |  |   59|    945|#define RBIGINT(v) ((struct RBigint*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|    945|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1603|    945|  struct RBigint *b2 = bint_new(mrb);
 1604|    945|  if (width < 0) {
  ------------------
  |  Branch (1604:7): [True: 252, False: 693]
  ------------------
 1605|    252|    mpz_mul_2exp(mrb, &b2->mp, &b->mp, -width);
 1606|    252|  }
 1607|    693|  else {
 1608|    693|    mpz_div_2exp(mrb, &b2->mp, &b->mp, width);
 1609|    693|  }
 1610|    945|  return bint_norm(mrb, b2);
 1611|    945|}
bigint.c:bint_new_int:
 1019|  10.4k|{
 1020|  10.4k|  struct RBigint *b = MRB_OBJ_ALLOC(mrb, MRB_TT_BIGINT, mrb->integer_class);
  ------------------
  |  | 1200|  10.4k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
 1021|  10.4k|  mpz_init_set_int(mrb, &b->mp, x);
 1022|  10.4k|  return b;
 1023|  10.4k|}
bigint.c:bint_new:
 1011|  18.8k|{
 1012|  18.8k|  struct RBigint *b = MRB_OBJ_ALLOC(mrb, MRB_TT_BIGINT, mrb->integer_class);
  ------------------
  |  | 1200|  18.8k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
 1013|  18.8k|  mpz_init(mrb, &b->mp);
 1014|  18.8k|  return b;
 1015|  18.8k|}
bigint.c:mpz_init:
   29|  72.2k|{
   30|  72.2k|  s->p = NULL;
   31|  72.2k|  s->sn=0;
   32|  72.2k|  s->sz=0;
   33|  72.2k|}
bigint.c:zero:
  258|  3.15k|{
  259|  3.15k|  x->sn=0;
  260|  3.15k|  if (x->p) {
  ------------------
  |  Branch (260:7): [True: 0, False: 3.15k]
  ------------------
  261|      0|    x->sz=1;
  262|      0|    x->p[0]=0;
  263|      0|  }
  264|  3.15k|  else {
  265|  3.15k|    x->sz=0;
  266|  3.15k|  }
  267|  3.15k|}
bigint.c:mpz_clear:
  142|  71.9k|{
  143|  71.9k|  if (s->p) mrb_free(mrb, s->p);
  ------------------
  |  Branch (143:7): [True: 54.4k, False: 17.5k]
  ------------------
  144|  71.9k|  s->p = NULL;
  145|  71.9k|  s->sn = 0;
  146|  71.9k|  s->sz = 0;
  147|  71.9k|}
bigint.c:mpz_realloc:
   37|  55.2k|{
   38|  55.2k|  if (x->sz < size) {
  ------------------
  |  Branch (38:7): [True: 54.4k, False: 801]
  ------------------
   39|  54.4k|    x->p=(mp_limb*)mrb_realloc(mrb, x->p, size*sizeof(mp_limb));
   40|   200k|    for (size_t i=x->sz; i<size; i++)
  ------------------
  |  Branch (40:26): [True: 145k, False: 54.4k]
  ------------------
   41|   145k|      x->p[i] = 0;
   42|  54.4k|    x->sz = size;
   43|  54.4k|  }
   44|  55.2k|}
bigint.c:bint_norm:
 1071|  18.8k|{
 1072|  18.8k|  mrb_int i;
 1073|       |
 1074|  18.8k|  if (mpz_get_int(&b->mp, &i)) {
  ------------------
  |  Branch (1074:7): [True: 6.33k, False: 12.4k]
  ------------------
 1075|  6.33k|    return mrb_int_value(mrb, i);
 1076|  6.33k|  }
 1077|  12.4k|  return mrb_obj_value(b);
 1078|  18.8k|}
bigint.c:mpz_get_int:
  777|  19.8k|{
  778|  19.8k|  if (uzero(y)) {
  ------------------
  |  Branch (778:7): [True: 2.21k, False: 17.6k]
  ------------------
  779|  2.21k|    *v = 0;
  780|  2.21k|    return TRUE;
  ------------------
  |  |   54|  2.21k|#  define TRUE 1
  ------------------
  781|  2.21k|  }
  782|       |
  783|  17.6k|  mp_dbl_limb i = 0;
  784|  17.6k|  mp_limb *d = y->p + y->sz;
  785|       |
  786|  53.9k|  while (d-- > y->p) {
  ------------------
  |  Branch (786:10): [True: 42.7k, False: 11.2k]
  ------------------
  787|  42.7k|    if (HIGH(i) != 0) {
  ------------------
  |  |   19|  42.7k|#define HIGH(x) ((x) >> DIG_SIZE)
  |  |  ------------------
  |  |  |  |   16|  42.7k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  42.7k|#define MPZ_DIG_SIZE 32
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (787:9): [True: 6.45k, False: 36.2k]
  ------------------
  788|       |      /* will overflow */
  789|  6.45k|      return FALSE;
  ------------------
  |  |   51|  6.45k|#  define FALSE 0
  ------------------
  790|  6.45k|    }
  791|  36.2k|    i = (i << DIG_SIZE) | *d;
  ------------------
  |  |   16|  36.2k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  ------------------
  |  |  |  |   46|  36.2k|#define MPZ_DIG_SIZE 32
  |  |  ------------------
  ------------------
  792|  36.2k|  }
  793|  11.2k|  if (i > MRB_INT_MAX) {
  ------------------
  |  |   82|  11.2k|# define MRB_INT_MAX INT64_MAX
  ------------------
  |  Branch (793:7): [True: 7.11k, False: 4.11k]
  ------------------
  794|       |    /* overflow */
  795|  7.11k|    return FALSE;
  ------------------
  |  |   51|  7.11k|#  define FALSE 0
  ------------------
  796|  7.11k|  }
  797|  4.11k|  if (y->sn < 0) {
  ------------------
  |  Branch (797:7): [True: 1.93k, False: 2.18k]
  ------------------
  798|  1.93k|    *v = -(mrb_int)i;
  799|  1.93k|  }
  800|  2.18k|  else {
  801|  2.18k|    *v = (mrb_int)i;
  802|  2.18k|  }
  803|  4.11k|  return TRUE;
  ------------------
  |  |   54|  4.11k|#  define TRUE 1
  ------------------
  804|  11.2k|}
bigint.c:digits:
  163|  8.37k|{
  164|  8.37k|  size_t i;
  165|       |
  166|  8.37k|  if (x->sz == 0) return 0;
  ------------------
  |  Branch (166:7): [True: 0, False: 8.37k]
  ------------------
  167|  11.3k|  for (i = x->sz - 1; x->p[i] == 0; i--)
  ------------------
  |  Branch (167:23): [True: 2.98k, False: 8.35k]
  ------------------
  168|  2.98k|    if (i == 0) break;
  ------------------
  |  Branch (168:9): [True: 16, False: 2.96k]
  ------------------
  169|  8.37k|  return i+1;
  170|  8.37k|}
bigint.c:mpz_add:
  272|  9.64k|{
  273|  9.64k|  int mg;
  274|  9.64k|  mpz_t z;
  275|       |
  276|  9.64k|  if (x->sn == 0) {
  ------------------
  |  Branch (276:7): [True: 1.33k, False: 8.31k]
  ------------------
  277|  1.33k|    mpz_set(mrb, zz, y);
  278|  1.33k|    return;
  279|  1.33k|  }
  280|  8.31k|  if (y->sn == 0) {
  ------------------
  |  Branch (280:7): [True: 436, False: 7.87k]
  ------------------
  281|    436|    mpz_set(mrb, zz, x);
  282|    436|    return;
  283|    436|  }
  284|  7.87k|  mpz_init(mrb, &z);
  285|       |
  286|  7.87k|  if (x->sn > 0 && y->sn > 0) {
  ------------------
  |  Branch (286:7): [True: 3.40k, False: 4.47k]
  |  Branch (286:20): [True: 1.70k, False: 1.69k]
  ------------------
  287|  1.70k|    uadd(mrb, &z, x, y);
  288|  1.70k|    z.sn = 1;
  289|  1.70k|  }
  290|  6.16k|  else if (x->sn < 0 && y->sn < 0) {
  ------------------
  |  Branch (290:12): [True: 4.47k, False: 1.69k]
  |  Branch (290:25): [True: 2.45k, False: 2.01k]
  ------------------
  291|  2.45k|    uadd(mrb, &z, x, y);
  292|  2.45k|    z.sn = -1;
  293|  2.45k|  }
  294|  3.71k|  else {
  295|       |    /* signs differ */
  296|  3.71k|    if ((mg = ucmp(x,y)) == 0) {
  ------------------
  |  Branch (296:9): [True: 337, False: 3.37k]
  ------------------
  297|    337|      zero(&z);
  298|    337|    }
  299|  3.37k|    else if (mg > 0) {  /* abs(y) < abs(x) */
  ------------------
  |  Branch (299:14): [True: 2.09k, False: 1.28k]
  ------------------
  300|  2.09k|      usub(mrb, &z, x, y);
  301|  2.09k|      z.sn = (x->sn > 0 && y->sn < 0) ? 1 : (-1);
  ------------------
  |  Branch (301:15): [True: 768, False: 1.32k]
  |  Branch (301:28): [True: 768, False: 0]
  ------------------
  302|  2.09k|    }
  303|  1.28k|    else { /* abs(y) > abs(x) */
  304|  1.28k|      usub(mrb, &z, y, x);
  305|  1.28k|      z.sn = (x->sn < 0 && y->sn > 0) ? 1 : (-1);
  ------------------
  |  Branch (305:15): [True: 648, False: 635]
  |  Branch (305:28): [True: 648, False: 0]
  ------------------
  306|  1.28k|    }
  307|  3.71k|  }
  308|  7.87k|  trim(&z);
  309|  7.87k|  mpz_move(mrb, zz, &z);
  310|  7.87k|}
bigint.c:mpz_set:
   48|  12.4k|{
   49|  12.4k|  size_t i, k = x->sz;
   50|       |
   51|  12.4k|  mpz_realloc(mrb, y, k);
   52|  43.9k|  for (i=0;i < k; i++)
  ------------------
  |  Branch (52:12): [True: 31.4k, False: 12.4k]
  ------------------
   53|  31.4k|    y->p[i] = x->p[i];
   54|       |
   55|  13.2k|  for (;i<y->sz;i++)
  ------------------
  |  Branch (55:9): [True: 801, False: 12.4k]
  ------------------
   56|    801|    y->p[i] = 0;
   57|       |
   58|  12.4k|  y->sn = x->sn;
   59|  12.4k|}
bigint.c:uadd:
  183|  4.16k|{
  184|  4.16k|  if (y->sz < x->sz) {
  ------------------
  |  Branch (184:7): [True: 1.77k, False: 2.39k]
  ------------------
  185|  1.77k|    mpz_t *t;                   /* swap x,y */
  186|  1.77k|    t=x; x=y; y=t;
  187|  1.77k|  }
  188|       |
  189|       |  /* now y->sz >= x->sz */
  190|  4.16k|  mpz_realloc(mrb, z, y->sz+1);
  191|       |
  192|  4.16k|  mp_dbl_limb c = 0;
  193|  4.16k|  size_t i;
  194|  10.1k|  for (i=0; i<x->sz; i++) {
  ------------------
  |  Branch (194:13): [True: 5.95k, False: 4.16k]
  ------------------
  195|  5.95k|    c += (mp_dbl_limb)y->p[i] + (mp_dbl_limb)x->p[i];
  196|  5.95k|    z->p[i] = LOW(c);
  ------------------
  |  |   20|  5.95k|#define LOW(x)  ((x) & DIG_MASK)
  |  |  ------------------
  |  |  |  |   18|  5.95k|#define DIG_MASK (DIG_BASE - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|  5.95k|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|  5.95k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   46|  5.95k|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  197|  5.95k|    c >>= DIG_SIZE;
  ------------------
  |  |   16|  5.95k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  ------------------
  |  |  |  |   46|  5.95k|#define MPZ_DIG_SIZE 32
  |  |  ------------------
  ------------------
  198|  5.95k|  }
  199|  9.13k|  for (;i<y->sz; i++) {
  ------------------
  |  Branch (199:9): [True: 4.96k, False: 4.16k]
  ------------------
  200|  4.96k|    c += y->p[i];
  201|  4.96k|    z->p[i] = LOW(c);
  ------------------
  |  |   20|  4.96k|#define LOW(x)  ((x) & DIG_MASK)
  |  |  ------------------
  |  |  |  |   18|  4.96k|#define DIG_MASK (DIG_BASE - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|  4.96k|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|  4.96k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   46|  4.96k|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  202|  4.96k|    c >>= DIG_SIZE;
  ------------------
  |  |   16|  4.96k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  ------------------
  |  |  |  |   46|  4.96k|#define MPZ_DIG_SIZE 32
  |  |  ------------------
  ------------------
  203|  4.96k|  }
  204|  4.16k|  z->p[y->sz] = (mp_limb)c;
  205|  4.16k|  trim(z);
  206|  4.16k|}
bigint.c:ucmp:
  233|  9.84k|{
  234|  9.84k|  if (y->sz < x->sz) return -1;
  ------------------
  |  Branch (234:7): [True: 2.69k, False: 7.15k]
  ------------------
  235|  7.15k|  if (y->sz > x->sz) return 1;
  ------------------
  |  Branch (235:7): [True: 3.30k, False: 3.84k]
  ------------------
  236|  3.84k|  if (x->sz == 0) return 0;
  ------------------
  |  Branch (236:7): [True: 0, False: 3.84k]
  ------------------
  237|  10.9k|  for (size_t i=x->sz-1;; i--) {
  238|  10.9k|    mp_limb a = y->p[i];
  239|  10.9k|    mp_limb b = x->p[i];
  240|  10.9k|    if (a > b) return 1;
  ------------------
  |  Branch (240:9): [True: 1.65k, False: 9.25k]
  ------------------
  241|  9.25k|    if (a < b) return -1;
  ------------------
  |  Branch (241:9): [True: 1.18k, False: 8.07k]
  ------------------
  242|  8.07k|    if (i == 0) break;
  ------------------
  |  Branch (242:9): [True: 1.01k, False: 7.06k]
  ------------------
  243|  8.07k|  }
  244|  1.01k|  return 0;
  245|  3.84k|}
bigint.c:usub:
  212|  3.37k|{
  213|  3.37k|  mpz_realloc(mrb, z, (size_t)(y->sz));
  214|  3.37k|  mp_dbl_limb_signed b = 0;
  215|  3.37k|  size_t i;
  216|  9.10k|  for (i=0;i<x->sz;i++) {
  ------------------
  |  Branch (216:12): [True: 5.73k, False: 3.37k]
  ------------------
  217|  5.73k|    b += (mp_dbl_limb_signed)y->p[i];
  218|  5.73k|    b -= (mp_dbl_limb_signed)x->p[i];
  219|  5.73k|    z->p[i] = LOW(b);
  ------------------
  |  |   20|  5.73k|#define LOW(x)  ((x) & DIG_MASK)
  |  |  ------------------
  |  |  |  |   18|  5.73k|#define DIG_MASK (DIG_BASE - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|  5.73k|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|  5.73k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   46|  5.73k|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  220|  5.73k|    b = HIGH(b);
  ------------------
  |  |   19|  5.73k|#define HIGH(x) ((x) >> DIG_SIZE)
  |  |  ------------------
  |  |  |  |   16|  5.73k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  5.73k|#define MPZ_DIG_SIZE 32
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  221|  5.73k|  }
  222|  7.55k|  for (;i<y->sz; i++) {
  ------------------
  |  Branch (222:9): [True: 4.18k, False: 3.37k]
  ------------------
  223|  4.18k|    b += y->p[i];
  224|  4.18k|    z->p[i] = LOW(b);
  ------------------
  |  |   20|  4.18k|#define LOW(x)  ((x) & DIG_MASK)
  |  |  ------------------
  |  |  |  |   18|  4.18k|#define DIG_MASK (DIG_BASE - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|  4.18k|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|  4.18k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   46|  4.18k|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|  4.18k|    b = HIGH(b);
  ------------------
  |  |   19|  4.18k|#define HIGH(x) ((x) >> DIG_SIZE)
  |  |  ------------------
  |  |  |  |   16|  4.18k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  4.18k|#define MPZ_DIG_SIZE 32
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|  4.18k|  }
  227|  3.37k|  z->sz = digits(z);
  228|  3.37k|}
bigint.c:trim:
  174|  21.9k|{
  175|  36.1k|  while (x->sz && x->p[x->sz-1] == 0) {
  ------------------
  |  Branch (175:10): [True: 35.6k, False: 454]
  |  Branch (175:19): [True: 14.1k, False: 21.5k]
  ------------------
  176|  14.1k|    x->sz--;
  177|  14.1k|  }
  178|  21.9k|}
bigint.c:mpz_move:
  151|  17.8k|{
  152|  17.8k|  mpz_clear(mrb, y);
  153|  17.8k|  y->sn = x->sn;
  154|  17.8k|  y->sz = x->sz;
  155|  17.8k|  y->p = x->p;
  156|  17.8k|  x->p = NULL;
  157|  17.8k|  x->sn = 0;
  158|  17.8k|  x->sz = 0;
  159|  17.8k|}
bigint.c:mpz_sub:
  315|  5.82k|{
  316|  5.82k|  mpz_t u;
  317|       |
  318|  5.82k|  mpz_init(mrb, &u);
  319|  5.82k|  mpz_set(mrb, &u, y);
  320|  5.82k|  u.sn = -(u.sn);
  321|  5.82k|  mpz_add(mrb, z, x, &u);
  322|  5.82k|  mpz_clear(mrb, &u);
  323|  5.82k|}
bigint.c:mpz_mul:
  339|  2.47k|{
  340|  2.47k|  size_t i, j;
  341|  2.47k|  mpz_t w;
  342|       |
  343|  2.47k|  if (uzero(u) || uzero(v)) {
  ------------------
  |  Branch (343:7): [True: 0, False: 2.47k]
  |  Branch (343:19): [True: 53, False: 2.42k]
  ------------------
  344|     53|    mpz_set_int(mrb, ww, 0);
  345|     53|    return;
  346|     53|  }
  347|  2.42k|  mpz_init(mrb, &w);
  348|  2.42k|  mpz_realloc(mrb, &w, u->sz + v->sz);
  349|  9.90k|  for (j=0; j < u->sz; j++) {
  ------------------
  |  Branch (349:13): [True: 7.47k, False: 2.42k]
  ------------------
  350|  7.47k|    mp_dbl_limb cc = (mp_limb)0;
  351|  7.47k|    mp_limb u0 = u->p[j];
  352|  7.47k|    if (u0 == 0) continue;
  ------------------
  |  Branch (352:9): [True: 1.66k, False: 5.80k]
  ------------------
  353|  22.4k|    for (i=0; i < v->sz; i++) {
  ------------------
  |  Branch (353:15): [True: 16.5k, False: 5.80k]
  ------------------
  354|  16.5k|      mp_limb v0 = v->p[i];
  355|  16.5k|      if (v0 == 0) continue;
  ------------------
  |  Branch (355:11): [True: 1.76k, False: 14.8k]
  ------------------
  356|  14.8k|      cc += (mp_dbl_limb)w.p[i+j] + (mp_dbl_limb)u0 * (mp_dbl_limb)v0;
  357|  14.8k|      w.p[i+j] = LOW(cc);
  ------------------
  |  |   20|  14.8k|#define LOW(x)  ((x) & DIG_MASK)
  |  |  ------------------
  |  |  |  |   18|  14.8k|#define DIG_MASK (DIG_BASE - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|  14.8k|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|  14.8k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   46|  14.8k|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  358|  14.8k|      cc = HIGH(cc);
  ------------------
  |  |   19|  14.8k|#define HIGH(x) ((x) >> DIG_SIZE)
  |  |  ------------------
  |  |  |  |   16|  14.8k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  14.8k|#define MPZ_DIG_SIZE 32
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  359|  14.8k|    }
  360|  5.80k|    if (cc) {
  ------------------
  |  Branch (360:9): [True: 3.55k, False: 2.25k]
  ------------------
  361|  3.55k|      w.p[i+j] = (mp_limb)cc;
  362|  3.55k|    }
  363|  5.80k|  }
  364|  2.42k|  w.sn = u->sn * v->sn;
  365|  2.42k|  trim(&w);
  366|  2.42k|  mpz_move(mrb, ww, &w);
  367|  2.42k|}
bigint.c:mpz_set_int:
   70|  19.9k|{
   71|  19.9k|  mrb_uint u;
   72|       |
   73|  19.9k|  if (v == 0) {
  ------------------
  |  Branch (73:7): [True: 2.62k, False: 17.3k]
  ------------------
   74|  2.62k|    y->sn=0;
   75|  2.62k|    u = 0;
   76|  2.62k|  }
   77|  17.3k|  else if (v > 0) {
  ------------------
  |  Branch (77:12): [True: 8.86k, False: 8.44k]
  ------------------
   78|  8.86k|    y->sn = 1;
   79|  8.86k|    u = v;
   80|  8.86k|  }
   81|  8.44k|  else /* if (v < 0) */ {
   82|  8.44k|    y->sn = -1;
   83|  8.44k|    if (v == MRB_INT_MIN) u = v;
  ------------------
  |  |   81|  8.44k|# define MRB_INT_MIN INT64_MIN
  ------------------
  |  Branch (83:9): [True: 3.53k, False: 4.90k]
  ------------------
   84|  4.90k|    else u = -v;
   85|  8.44k|  }
   86|  19.9k|#if MRB_INT_BIT > DIG_SIZE
   87|  19.9k|  if ((u & ~DIG_MASK) != 0) {
  ------------------
  |  |   18|  19.9k|#define DIG_MASK (DIG_BASE - 1)
  |  |  ------------------
  |  |  |  |   17|  19.9k|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|  19.9k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   46|  19.9k|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (87:7): [True: 7.17k, False: 12.7k]
  ------------------
   88|  7.17k|    mpz_realloc(mrb, y, 2);
   89|  7.17k|    y->p[1] = (mp_limb)HIGH(u);
  ------------------
  |  |   19|  7.17k|#define HIGH(x) ((x) >> DIG_SIZE)
  |  |  ------------------
  |  |  |  |   16|  7.17k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  7.17k|#define MPZ_DIG_SIZE 32
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   90|  7.17k|    y->p[0] = (mp_limb)LOW(u);
  ------------------
  |  |   20|  7.17k|#define LOW(x)  ((x) & DIG_MASK)
  |  |  ------------------
  |  |  |  |   18|  7.17k|#define DIG_MASK (DIG_BASE - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|  7.17k|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|  7.17k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   46|  7.17k|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   91|  7.17k|  }
   92|  12.7k|  else
   93|  12.7k|#endif
   94|  12.7k|  {
   95|  12.7k|    mpz_realloc(mrb, y, 1);
   96|  12.7k|    y->p[0] = (mp_limb)u;
   97|  12.7k|  }
   98|  19.9k|}
bigint.c:uzero:
  249|  52.0k|{
  250|  93.8k|  for (size_t i=0; i < x->sz; i++)
  ------------------
  |  Branch (250:20): [True: 86.8k, False: 6.97k]
  ------------------
  251|  86.8k|    if (x->p[i] != 0)
  ------------------
  |  Branch (251:9): [True: 45.0k, False: 41.8k]
  ------------------
  252|  45.0k|      return 0;
  253|  6.97k|  return 1;
  254|  52.0k|}
bigint.c:mpz_mdiv:
  536|  3.95k|{
  537|  3.95k|  mpz_t r;
  538|  3.95k|  short sn1 = x->sn, sn2 = y->sn, qsign;
  539|       |
  540|  3.95k|  if (uzero(x)) {
  ------------------
  |  Branch (540:7): [True: 272, False: 3.67k]
  ------------------
  541|    272|    mpz_init_set_int(mrb, q, 0);
  542|    272|    return;
  543|    272|  }
  544|  3.67k|  mpz_init(mrb, &r);
  545|  3.67k|  udiv(mrb, q, &r, x, y);
  546|  3.67k|  qsign = q->sn = sn1*sn2;
  547|  3.67k|  if (uzero(q))
  ------------------
  |  Branch (547:7): [True: 2.02k, False: 1.65k]
  ------------------
  548|  2.02k|    q->sn = 0;
  549|       |  /* now if r != 0 and q < 0 we need to round q towards -inf */
  550|  3.67k|  if (!uzero(&r) && qsign < 0)
  ------------------
  |  Branch (550:7): [True: 2.59k, False: 1.08k]
  |  Branch (550:21): [True: 999, False: 1.59k]
  ------------------
  551|    999|    mpz_sub_int(mrb, q, q, 1);
  552|  3.67k|  mpz_clear(mrb, &r);
  553|  3.67k|}
bigint.c:udiv:
  466|  5.31k|{
  467|       |  /* simple cases */
  468|  5.31k|  int cmp = ucmp(xx, yy);
  469|  5.31k|  if (cmp == 0) {
  ------------------
  |  Branch (469:7): [True: 360, False: 4.95k]
  ------------------
  470|    360|    mpz_set_int(mrb, qq, 1);
  471|    360|    zero(rr);
  472|    360|    return;
  473|    360|  }
  474|  4.95k|  else if (cmp < 0) {
  ------------------
  |  Branch (474:12): [True: 2.45k, False: 2.50k]
  ------------------
  475|  2.45k|    zero(qq);
  476|  2.45k|    mpz_set(mrb, rr, xx);
  477|  2.45k|    return;
  478|  2.45k|  }
  479|       |
  480|  2.50k|  mpz_t q, x, y;
  481|  2.50k|  size_t i;
  482|       |
  483|  2.50k|  mrb_assert(!uzero(yy));       /* divided by zero */
  ------------------
  |  |   68|  2.50k|#define mrb_assert(p) ((void)0)
  ------------------
  484|  2.50k|  mpz_init(mrb, &q);
  485|  2.50k|  mpz_init(mrb, &x);
  486|  2.50k|  mpz_init(mrb, &y);
  487|  2.50k|  mpz_realloc(mrb, &x, xx->sz+1);
  488|  2.50k|  size_t yd = digits(yy);
  489|  2.50k|  size_t ns = lzb(yy->p[yd-1]);
  490|  2.50k|  ulshift(mrb, &x, xx, ns);
  491|  2.50k|  ulshift(mrb, &y, yy, ns);
  492|  2.50k|  size_t xd = digits(&x);
  493|  2.50k|  mpz_realloc(mrb, &q, xd);
  494|  2.50k|  mp_dbl_limb z = y.p[yd-1];
  495|  2.50k|  if (xd>=yd) {
  ------------------
  |  Branch (495:7): [True: 2.40k, False: 91]
  ------------------
  496|  8.00k|    for (size_t j=xd-yd;; j--) {
  497|  8.00k|      mp_dbl_limb_signed b=0;
  498|  8.00k|      mp_dbl_limb qhat;
  499|       |
  500|  8.00k|      if (j+yd == xd)
  ------------------
  |  Branch (500:11): [True: 2.40k, False: 5.59k]
  ------------------
  501|  2.40k|        qhat = x.p[j+yd-1] / z;
  502|  5.59k|      else
  503|  5.59k|        qhat = (((mp_dbl_limb)x.p[j+yd] << DIG_SIZE) + x.p[j+yd-1]) / z;
  ------------------
  |  |   16|  5.59k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  ------------------
  |  |  |  |   46|  5.59k|#define MPZ_DIG_SIZE 32
  |  |  ------------------
  ------------------
  504|  8.00k|      if (qhat) {
  ------------------
  |  Branch (504:11): [True: 4.17k, False: 3.83k]
  ------------------
  505|  12.8k|        for (i=0; i<yd; i++) {
  ------------------
  |  Branch (505:19): [True: 8.71k, False: 4.17k]
  ------------------
  506|  8.71k|          mp_dbl_limb zz = qhat * y.p[i];
  507|  8.71k|          mp_dbl_limb_signed u = LOW(b)+x.p[i+j]-LOW(zz);
  ------------------
  |  |   20|  8.71k|#define LOW(x)  ((x) & DIG_MASK)
  |  |  ------------------
  |  |  |  |   18|  8.71k|#define DIG_MASK (DIG_BASE - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|  8.71k|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|  8.71k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   46|  8.71k|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        mp_dbl_limb_signed u = LOW(b)+x.p[i+j]-LOW(zz);
  ------------------
  |  |   20|  8.71k|#define LOW(x)  ((x) & DIG_MASK)
  |  |  ------------------
  |  |  |  |   18|  8.71k|#define DIG_MASK (DIG_BASE - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|  8.71k|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|  8.71k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   46|  8.71k|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  508|  8.71k|          x.p[i+j] = LOW(u);
  ------------------
  |  |   20|  8.71k|#define LOW(x)  ((x) & DIG_MASK)
  |  |  ------------------
  |  |  |  |   18|  8.71k|#define DIG_MASK (DIG_BASE - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|  8.71k|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|  8.71k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   46|  8.71k|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  509|  8.71k|          b = HIGH(b) - HIGH(zz) + HIGH(u);
  ------------------
  |  |   19|  8.71k|#define HIGH(x) ((x) >> DIG_SIZE)
  |  |  ------------------
  |  |  |  |   16|  8.71k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  8.71k|#define MPZ_DIG_SIZE 32
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        b = HIGH(b) - HIGH(zz) + HIGH(u);
  ------------------
  |  |   19|  8.71k|#define HIGH(x) ((x) >> DIG_SIZE)
  |  |  ------------------
  |  |  |  |   16|  8.71k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  8.71k|#define MPZ_DIG_SIZE 32
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                        b = HIGH(b) - HIGH(zz) + HIGH(u);
  ------------------
  |  |   19|  8.71k|#define HIGH(x) ((x) >> DIG_SIZE)
  |  |  ------------------
  |  |  |  |   16|  8.71k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  8.71k|#define MPZ_DIG_SIZE 32
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  510|  8.71k|        }
  511|  4.17k|        b += x.p[i+j];
  512|  4.17k|      }
  513|  8.37k|      for (; b!=0; qhat--) {
  ------------------
  |  Branch (513:14): [True: 364, False: 8.00k]
  ------------------
  514|    364|        mp_dbl_limb c = 0;
  515|  1.33k|        for (i=0; i<yd; i++) {
  ------------------
  |  Branch (515:19): [True: 966, False: 364]
  ------------------
  516|    966|          c += (mp_dbl_limb)x.p[i+j] + (mp_dbl_limb)y.p[i];
  517|    966|          x.p[i+j] = LOW(c);
  ------------------
  |  |   20|    966|#define LOW(x)  ((x) & DIG_MASK)
  |  |  ------------------
  |  |  |  |   18|    966|#define DIG_MASK (DIG_BASE - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|    966|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|    966|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   46|    966|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  518|    966|          c = HIGH(c);
  ------------------
  |  |   19|    966|#define HIGH(x) ((x) >> DIG_SIZE)
  |  |  ------------------
  |  |  |  |   16|    966|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|    966|#define MPZ_DIG_SIZE 32
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  519|    966|        }
  520|    364|        b += c;
  521|    364|      }
  522|  8.00k|      q.p[j] = (mp_limb)qhat;
  523|  8.00k|      if (j == 0) break;
  ------------------
  |  Branch (523:11): [True: 2.40k, False: 5.59k]
  ------------------
  524|  8.00k|    }
  525|  2.40k|  }
  526|  2.50k|  x.sz = yy->sz;
  527|  2.50k|  urshift(mrb, rr, &x, ns);
  528|  2.50k|  trim(&q);
  529|  2.50k|  mpz_move(mrb, qq, &q);
  530|  2.50k|  mpz_clear(mrb, &x);
  531|  2.50k|  mpz_clear(mrb, &y);
  532|  2.50k|}
bigint.c:lzb:
  387|  2.50k|{
  388|  2.50k|  if (x == 0) return 0;
  ------------------
  |  Branch (388:7): [True: 0, False: 2.50k]
  ------------------
  389|  2.50k|#if (defined(__GNUC__) || __has_builtin(__builtin_clz))
  390|  2.50k|  if (sizeof(mp_limb) == sizeof(int64_t))
  ------------------
  |  Branch (390:7): [Folded - Ignored]
  ------------------
  391|      0|    return __builtin_clzll(x);
  392|  2.50k|  else if (sizeof(mp_limb) == sizeof(int32_t))
  ------------------
  |  Branch (392:12): [Folded - Ignored]
  ------------------
  393|  2.50k|    return __builtin_clz(x);
  394|      0|#endif
  395|       |
  396|      0|  int j=0;
  397|       |
  398|      0|  for (mp_limb i = ((mp_limb)1 << (DIG_SIZE-1)); i && !(x&i); j++,i>>=1)
  ------------------
  |  |   16|      0|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  ------------------
  |  |  |  |   46|      0|#define MPZ_DIG_SIZE 32
  |  |  ------------------
  ------------------
  |  Branch (398:50): [True: 0, False: 0]
  |  Branch (398:55): [True: 0, False: 0]
  ------------------
  399|      0|    ;
  400|      0|  return j;
  401|  2.50k|}
bigint.c:ulshift:
  436|  5.21k|{
  437|  5.21k|  mrb_assert(n < DIG_SIZE);
  ------------------
  |  |   68|  5.21k|#define mrb_assert(p) ((void)0)
  ------------------
  438|  5.21k|  if (n == 0)
  ------------------
  |  Branch (438:7): [True: 1.60k, False: 3.60k]
  ------------------
  439|  1.60k|    mpz_set(mrb, c1, a);
  440|  3.60k|  else if (uzero(a)) {
  ------------------
  |  Branch (440:12): [True: 0, False: 3.60k]
  ------------------
  441|      0|    mpz_set_int(mrb, c1, 0);
  442|      0|  }
  443|  3.60k|  else {
  444|  3.60k|    mp_limb cc = 0;
  445|  3.60k|    mpz_t c;
  446|  3.60k|    mp_limb rm = (((mp_dbl_limb)1<<n) - 1) << (DIG_SIZE-n);
  ------------------
  |  |   16|  3.60k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  ------------------
  |  |  |  |   46|  3.60k|#define MPZ_DIG_SIZE 32
  |  |  ------------------
  ------------------
  447|       |
  448|  3.60k|    mpz_init(mrb, &c);
  449|  3.60k|    mpz_realloc(mrb, &c, a->sz+1);
  450|       |
  451|  3.60k|    size_t i;
  452|  14.3k|    for (i=0; i<a->sz; i++) {
  ------------------
  |  Branch (452:15): [True: 10.7k, False: 3.60k]
  ------------------
  453|  10.7k|      c.p[i] = ((a->p[i] << n) | cc) & DIG_MASK;
  ------------------
  |  |   18|  10.7k|#define DIG_MASK (DIG_BASE - 1)
  |  |  ------------------
  |  |  |  |   17|  10.7k|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|  10.7k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   46|  10.7k|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  454|  10.7k|      cc = (a->p[i] & rm) >> (DIG_SIZE-n);
  ------------------
  |  |   16|  10.7k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  ------------------
  |  |  |  |   46|  10.7k|#define MPZ_DIG_SIZE 32
  |  |  ------------------
  ------------------
  455|  10.7k|    }
  456|  3.60k|    c.p[i] = cc;
  457|  3.60k|    trim(&c);
  458|  3.60k|    mpz_move(mrb, c1, &c);
  459|  3.60k|  }
  460|  5.21k|}
bigint.c:urshift:
  407|  3.19k|{
  408|  3.19k|  mrb_assert(n < DIG_SIZE);
  ------------------
  |  |   68|  3.19k|#define mrb_assert(p) ((void)0)
  ------------------
  409|       |
  410|  3.19k|  if (n == 0)
  ------------------
  |  Branch (410:7): [True: 801, False: 2.39k]
  ------------------
  411|    801|    mpz_set(mrb, c1, a);
  412|  2.39k|  else if (uzero(a)) {
  ------------------
  |  Branch (412:12): [True: 980, False: 1.41k]
  ------------------
  413|    980|    mpz_set_int(mrb, c1, 0);
  414|    980|  }
  415|  1.41k|  else {
  416|  1.41k|    mpz_t c;
  417|  1.41k|    mp_limb cc = 0;
  418|  1.41k|    mp_dbl_limb rm = (((mp_dbl_limb)1<<n) - 1);
  419|       |
  420|  1.41k|    mpz_init(mrb, &c);
  421|  1.41k|    mpz_realloc(mrb, &c, a->sz);
  422|  3.12k|    for (size_t i=a->sz-1;; i--) {
  423|  3.12k|      c.p[i] = ((a->p[i] >> n) | cc) & DIG_MASK;
  ------------------
  |  |   18|  3.12k|#define DIG_MASK (DIG_BASE - 1)
  |  |  ------------------
  |  |  |  |   17|  3.12k|#define DIG_BASE (1ULL << DIG_SIZE)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|  3.12k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   46|  3.12k|#define MPZ_DIG_SIZE 32
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  424|  3.12k|      cc = (a->p[i] & rm) << (DIG_SIZE - n);
  ------------------
  |  |   16|  3.12k|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  ------------------
  |  |  |  |   46|  3.12k|#define MPZ_DIG_SIZE 32
  |  |  ------------------
  ------------------
  425|  3.12k|      if (i == 0) break;
  ------------------
  |  Branch (425:11): [True: 1.41k, False: 1.71k]
  ------------------
  426|  3.12k|    }
  427|  1.41k|    trim(&c);
  428|  1.41k|    mpz_move(mrb, c1, &c);
  429|  1.41k|  }
  430|  3.19k|}
bigint.c:mpz_init_set_int:
  135|  18.5k|{
  136|  18.5k|  mpz_init(mrb, y);
  137|  18.5k|  mpz_set_int(mrb, y, v);
  138|  18.5k|}
bigint.c:mpz_mmod:
  557|  1.63k|{
  558|  1.63k|  mpz_t q;
  559|  1.63k|  short sn1 = x->sn, sn2 = y->sn, sn3;
  560|       |
  561|  1.63k|  mpz_init(mrb, &q);
  562|  1.63k|  if (sn1 == 0) {
  ------------------
  |  Branch (562:7): [True: 0, False: 1.63k]
  ------------------
  563|      0|    zero(r);
  564|      0|    return;
  565|      0|  }
  566|  1.63k|  udiv(mrb, &q, r, x, y);
  567|  1.63k|  mpz_clear(mrb, &q);
  568|  1.63k|  if (uzero(r)) {
  ------------------
  |  Branch (568:7): [True: 315, False: 1.32k]
  ------------------
  569|    315|    r->sn = 0;
  570|    315|    return;
  571|    315|  }
  572|  1.32k|  sn3 = sn1*sn2;
  573|  1.32k|  if (sn3 > 0)
  ------------------
  |  Branch (573:7): [True: 532, False: 788]
  ------------------
  574|    532|    r->sn = sn1;
  575|    788|  else if (sn1 < 0 && sn2 > 0) {
  ------------------
  |  Branch (575:12): [True: 19, False: 769]
  |  Branch (575:23): [True: 19, False: 0]
  ------------------
  576|     19|    r->sn = 1;
  577|     19|    mpz_sub(mrb, r, y, r);
  578|     19|  }
  579|    769|  else {
  580|    769|    r->sn = 1;
  581|    769|    mpz_add(mrb, r, y, r);
  582|    769|  }
  583|  1.32k|}
bigint.c:mpz_cmp:
  638|    972|{
  639|    972|  int abscmp;
  640|    972|  if (x->sn < 0 && y->sn > 0)
  ------------------
  |  Branch (640:7): [True: 437, False: 535]
  |  Branch (640:20): [True: 134, False: 303]
  ------------------
  641|    134|    return (-1);
  642|    838|  if (x->sn > 0 && y->sn < 0)
  ------------------
  |  Branch (642:7): [True: 535, False: 303]
  |  Branch (642:20): [True: 15, False: 520]
  ------------------
  643|     15|    return 1;
  644|    823|  abscmp=ucmp(x, y);
  645|    823|  if (x->sn >=0 && y->sn >=0)
  ------------------
  |  Branch (645:7): [True: 520, False: 303]
  |  Branch (645:20): [True: 520, False: 0]
  ------------------
  646|    520|    return abscmp;
  647|    303|  return (-abscmp);          // if (x->sn <=0 && y->sn <=0)
  648|    823|}
bigint.c:mpz_xor:
  905|  1.94k|{
  906|  1.94k|  size_t i;
  907|       |
  908|  1.94k|  size_t sz = imax(x->sz, y->sz);
  ------------------
  |  |   23|  1.94k|#define imax(x,y) (((x)>(y))?(x):(y))
  |  |  ------------------
  |  |  |  Branch (23:20): [True: 422, False: 1.52k]
  |  |  ------------------
  ------------------
  909|  1.94k|  mpz_realloc(mrb, z, sz);
  910|  10.6k|  for (i=0; i < sz; i++)
  ------------------
  |  Branch (910:13): [True: 8.66k, False: 1.94k]
  ------------------
  911|  8.66k|    z->p[i] = dg(x,i) ^ dg(y,i);
  ------------------
  |  |   25|  8.66k|#define dg(x,i) (((size_t)i < (x)->sz)?(x)->p[i]:0)
  |  |  ------------------
  |  |  |  Branch (25:18): [True: 5.24k, False: 3.42k]
  |  |  ------------------
  ------------------
                  z->p[i] = dg(x,i) ^ dg(y,i);
  ------------------
  |  |   25|  8.66k|#define dg(x,i) (((size_t)i < (x)->sz)?(x)->p[i]:0)
  |  |  ------------------
  |  |  |  Branch (25:18): [True: 6.84k, False: 1.81k]
  |  |  ------------------
  ------------------
  912|  1.94k|  if ((x->sn <= 0 && y->sn > 0) || (x->sn > 0 && y->sn <=0))
  ------------------
  |  Branch (912:8): [True: 403, False: 1.54k]
  |  Branch (912:22): [True: 130, False: 273]
  |  Branch (912:37): [True: 1.54k, False: 273]
  |  Branch (912:50): [True: 394, False: 1.14k]
  ------------------
  913|    524|    z->sn = (-1);
  914|  1.42k|  else
  915|  1.42k|    z->sn = 1;
  916|  1.94k|  if (uzero(z))
  ------------------
  |  Branch (916:7): [True: 31, False: 1.91k]
  ------------------
  917|     31|    z->sn = 0;
  918|  1.94k|}
bigint.c:mpz_sub_int:
  328|    999|{
  329|    999|  mpz_t z;
  330|       |
  331|    999|  mpz_init_set_int(mrb, &z, n);
  332|    999|  mpz_sub(mrb, x, y, &z);
  333|    999|  mpz_clear(mrb, &z);
  334|    999|}
bigint.c:mpz_div_2exp:
  834|    693|{
  835|    693|  short sn = x->sn;
  836|    693|  if (e==0)
  ------------------
  |  Branch (836:7): [True: 0, False: 693]
  ------------------
  837|      0|    mpz_set(mrb, z, x);
  838|    693|  else {
  839|    693|    size_t digs = e / DIG_SIZE;
  ------------------
  |  |   16|    693|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  ------------------
  |  |  |  |   46|    693|#define MPZ_DIG_SIZE 32
  |  |  ------------------
  ------------------
  840|    693|    size_t bs = e % DIG_SIZE;
  ------------------
  |  |   16|    693|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  ------------------
  |  |  |  |   46|    693|#define MPZ_DIG_SIZE 32
  |  |  ------------------
  ------------------
  841|    693|    mpz_t y;
  842|       |
  843|    693|    mpz_init(mrb, &y);
  844|    693|    mpz_realloc(mrb, &y, x->sz-digs);
  845|  2.16k|    for (size_t i=0; i < x->sz-digs; i++)
  ------------------
  |  Branch (845:22): [True: 1.46k, False: 693]
  ------------------
  846|  1.46k|      y.p[i] = x->p[i+digs];
  847|    693|    if (bs) {
  ------------------
  |  Branch (847:9): [True: 692, False: 1]
  ------------------
  848|    692|      urshift(mrb, z, &y, bs);
  849|    692|      mpz_clear(mrb, &y);
  850|    692|    }
  851|      1|    else {
  852|      1|      mpz_move(mrb, z, &y);
  853|      1|    }
  854|    693|    if (uzero(z))
  ------------------
  |  Branch (854:9): [True: 0, False: 693]
  ------------------
  855|      0|      z->sn = 0;
  856|    693|    else {
  857|    693|      z->sn = sn;
  858|    693|    }
  859|    693|  }
  860|    693|}
bigint.c:mpz_mul_2exp:
  808|    252|{
  809|    252|  if (e==0)
  ------------------
  |  Branch (809:7): [True: 0, False: 252]
  ------------------
  810|      0|    mpz_set(mrb, z, x);
  811|    252|  else {
  812|    252|    short sn = x->sn;
  813|    252|    size_t digs = e / DIG_SIZE;
  ------------------
  |  |   16|    252|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  ------------------
  |  |  |  |   46|    252|#define MPZ_DIG_SIZE 32
  |  |  ------------------
  ------------------
  814|    252|    size_t bs = e % DIG_SIZE;
  ------------------
  |  |   16|    252|#define DIG_SIZE (MPZ_DIG_SIZE)
  |  |  ------------------
  |  |  |  |   46|    252|#define MPZ_DIG_SIZE 32
  |  |  ------------------
  ------------------
  815|    252|    mpz_t y;
  816|       |
  817|    252|    mpz_init(mrb, &y);
  818|    252|    mpz_realloc(mrb, &y, x->sz+digs);
  819|    581|    for (size_t i=0;i<x->sz;i++)
  ------------------
  |  Branch (819:21): [True: 329, False: 252]
  ------------------
  820|    329|      y.p[i+digs] = x->p[i];
  821|    252|    if (bs) {
  ------------------
  |  Branch (821:9): [True: 210, False: 42]
  ------------------
  822|    210|      ulshift(mrb, z, &y, bs);
  823|    210|      mpz_clear(mrb, &y);
  824|    210|    }
  825|     42|    else {
  826|     42|      mpz_move(mrb, z, &y);
  827|     42|    }
  828|    252|    z->sn = sn;
  829|    252|  }
  830|    252|}

mrb_mruby_binding_gem_init:
  399|    476|{
  400|    476|  struct RClass *binding = mrb_define_class(mrb, "Binding", mrb->object_class);
  401|    476|  MRB_SET_INSTANCE_TT(binding, MRB_TT_UNDEF);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  402|    476|  mrb_undef_class_method(mrb, binding, "new");
  403|    476|  mrb_undef_class_method(mrb, binding, "allocate");
  404|       |
  405|    476|  mrb_define_method(mrb, mrb->kernel_module, "binding", mrb_f_binding, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  406|       |
  407|    476|  mrb_define_method(mrb, binding, "initialize_copy", binding_initialize_copy, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  408|    476|  mrb_define_method(mrb, binding, "local_variable_defined?", binding_local_variable_defined_p, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  409|    476|  mrb_define_method(mrb, binding, "local_variable_get", binding_local_variable_get, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  410|    476|  mrb_define_method(mrb, binding, "local_variable_set", binding_local_variable_set, MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  411|    476|  mrb_define_method(mrb, binding, "local_variables", binding_local_variables, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  412|    476|  mrb_define_method(mrb, binding, "receiver", binding_receiver, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  413|    476|  mrb_define_method(mrb, binding, "source_location", binding_source_location, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  414|    476|  mrb_define_method(mrb, binding, "inspect", mrb_any_to_s, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  415|    476|}
mrb_mruby_binding_gem_final:
  419|    476|{
  420|    476|}

mrb_mruby_class_ext_gem_init:
  142|    476|{
  143|    476|  struct RClass *mod = mrb->module_class;
  144|       |
  145|    476|  mrb_define_method(mrb, mod, "name", mod_name, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  146|    476|  mrb_define_method(mrb, mod, "singleton_class?", mod_singleton_class_p, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  147|    476|  mrb_define_method(mrb, mod, "module_exec", mod_module_exec, MRB_ARGS_ANY()|MRB_ARGS_BLOCK());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
                mrb_define_method(mrb, mod, "module_exec", mod_module_exec, MRB_ARGS_ANY()|MRB_ARGS_BLOCK());
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
  148|    476|  mrb_define_method(mrb, mod, "class_exec", mod_module_exec, MRB_ARGS_ANY()|MRB_ARGS_BLOCK());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
                mrb_define_method(mrb, mod, "class_exec", mod_module_exec, MRB_ARGS_ANY()|MRB_ARGS_BLOCK());
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
  149|       |
  150|    476|  struct RClass *cls = mrb->class_class;
  151|    476|  mrb_define_method(mrb, cls, "subclasses", class_subclasses, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  152|    476|  mrb_define_method(mrb, cls, "attached_object", class_attached_object, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  153|    476|}
mrb_mruby_class_ext_gem_final:
  157|    476|{
  158|    476|}

mrb_mruby_cmath_gem_init:
  237|    476|{
  238|    476|  struct RClass *cmath;
  239|    476|  cmath = mrb_define_module(mrb, "CMath");
  240|       |
  241|    476|  mrb_include_module(mrb, cmath, mrb_module_get(mrb, "Math"));
  242|       |
  243|    476|  mrb_define_module_function(mrb, cmath, "sin", cmath_sin, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  244|    476|  mrb_define_module_function(mrb, cmath, "cos", cmath_cos, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  245|    476|  mrb_define_module_function(mrb, cmath, "tan", cmath_tan, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  246|       |
  247|    476|  mrb_define_module_function(mrb, cmath, "asin", cmath_asin, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  248|    476|  mrb_define_module_function(mrb, cmath, "acos", cmath_acos, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  249|    476|  mrb_define_module_function(mrb, cmath, "atan", cmath_atan, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  250|       |
  251|    476|  mrb_define_module_function(mrb, cmath, "sinh", cmath_sinh, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  252|    476|  mrb_define_module_function(mrb, cmath, "cosh", cmath_cosh, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  253|    476|  mrb_define_module_function(mrb, cmath, "tanh", cmath_tanh, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  254|       |
  255|    476|  mrb_define_module_function(mrb, cmath, "asinh", cmath_asinh, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  256|    476|  mrb_define_module_function(mrb, cmath, "acosh", cmath_acosh, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  257|    476|  mrb_define_module_function(mrb, cmath, "atanh", cmath_atanh, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  258|       |
  259|    476|  mrb_define_module_function(mrb, cmath, "exp", cmath_exp, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  260|    476|  mrb_define_module_function(mrb, cmath, "log", cmath_log, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_module_function(mrb, cmath, "log", cmath_log, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  261|    476|  mrb_define_module_function(mrb, cmath, "log2", cmath_log2, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  262|    476|  mrb_define_module_function(mrb, cmath, "log10", cmath_log10, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  263|    476|  mrb_define_module_function(mrb, cmath, "sqrt", cmath_sqrt, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  264|    476|}
mrb_mruby_cmath_gem_final:
  268|    476|{
  269|    476|}

mrb_decode_insn:
  338|   390k|{
  339|   390k|  struct mrb_insn_data data = { 0 };
  340|   390k|  if (pc == 0) return data;
  ------------------
  |  Branch (340:7): [True: 0, False: 390k]
  ------------------
  341|   390k|  data.addr = pc;
  342|   390k|  mrb_code insn = READ_B();
  ------------------
  |  |   30|   390k|#define READ_B() PEEK_B(pc++)
  |  |  ------------------
  |  |  |  |   26|   390k|#define PEEK_B(pc) (*(pc))
  |  |  ------------------
  ------------------
  343|   390k|  uint16_t a = 0;
  344|   390k|  uint16_t b = 0;
  345|   390k|  uint16_t c = 0;
  346|       |
  347|   390k|  switch (insn) {
  ------------------
  |  Branch (347:11): [True: 0, False: 390k]
  ------------------
  348|      0|#define FETCH_Z() /* empty */
  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  350|   390k|#include "mruby/ops.h"
  ------------------
  |  |    1|       |/* operand types:
  |  |    2|       |   + Z: no operand
  |  |    3|       |   + B: 8bit
  |  |    4|       |   + BB: 8+8bit
  |  |    5|       |   + BBB: 8+8+8bit
  |  |    6|       |   + BS: 8+16bit
  |  |    7|       |   + BSS: 8+16+16bit
  |  |    8|       |   + S: 16bit
  |  |    9|       |   + W: 24bit
  |  |   10|       |*/
  |  |   11|       |
  |  |   12|       |/*-----------------------------------------------------------------------
  |  |   13|       |operation code    operands      semantics
  |  |   14|       |------------------------------------------------------------------------*/
  |  |   15|      0|OPCODE(NOP,        Z)        /* no operation */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   16|  30.1k|OPCODE(MOVE,       BB)       /* R[a] = R[b] */
  |  |  ------------------
  |  |  |  |  349|  30.1k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 30.1k, False: 360k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   17|    821|OPCODE(LOADL,      BB)       /* R[a] = Pool[b] */
  |  |  ------------------
  |  |  |  |  349|    821|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 821, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   18|  8.73k|OPCODE(LOADI,      BB)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  |  349|  8.73k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 8.73k, False: 381k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   19|  3.99k|OPCODE(LOADINEG,   BB)       /* R[a] = mrb_int(-b) */
  |  |  ------------------
  |  |  |  |  349|  3.99k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 3.99k, False: 386k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   20|  1.13k|OPCODE(LOADI__1,   B)        /* R[a] = mrb_int(-1) */
  |  |  ------------------
  |  |  |  |  349|  1.13k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 1.13k, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   21|  7.88k|OPCODE(LOADI_0,    B)        /* R[a] = mrb_int(0) */
  |  |  ------------------
  |  |  |  |  349|  7.88k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 7.88k, False: 382k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   22|  98.0k|OPCODE(LOADI_1,    B)        /* R[a] = mrb_int(1) */
  |  |  ------------------
  |  |  |  |  349|  98.0k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 98.0k, False: 292k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   23|  1.94k|OPCODE(LOADI_2,    B)        /* R[a] = mrb_int(2) */
  |  |  ------------------
  |  |  |  |  349|  1.94k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 1.94k, False: 388k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   24|  1.05k|OPCODE(LOADI_3,    B)        /* R[a] = mrb_int(3) */
  |  |  ------------------
  |  |  |  |  349|  1.05k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 1.05k, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   25|    559|OPCODE(LOADI_4,    B)        /* R[a] = mrb_int(4) */
  |  |  ------------------
  |  |  |  |  349|    559|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 559, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   26|  1.62k|OPCODE(LOADI_5,    B)        /* R[a] = mrb_int(5) */
  |  |  ------------------
  |  |  |  |  349|  1.62k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 1.62k, False: 388k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   27|  3.09k|OPCODE(LOADI_6,    B)        /* R[a] = mrb_int(6) */
  |  |  ------------------
  |  |  |  |  349|  3.09k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 3.09k, False: 387k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   28|  1.54k|OPCODE(LOADI_7,    B)        /* R[a] = mrb_int(7) */
  |  |  ------------------
  |  |  |  |  349|  1.54k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 1.54k, False: 388k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   29|    424|OPCODE(LOADI16,    BS)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  |  349|    424|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 424, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   30|    462|OPCODE(LOADI32,    BSS)      /* R[a] = mrb_int((b<<16)+c) */
  |  |  ------------------
  |  |  |  |  349|    462|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 462, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   31|      0|OPCODE(LOADSYM,    BB)       /* R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|  2.34k|OPCODE(LOADNIL,    B)        /* R[a] = nil */
  |  |  ------------------
  |  |  |  |  349|  2.34k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 2.34k, False: 388k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   33|      0|OPCODE(LOADSELF,   B)        /* R[a] = self */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   34|      0|OPCODE(LOADT,      B)        /* R[a] = true */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   35|      0|OPCODE(LOADF,      B)        /* R[a] = false */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      0|OPCODE(GETGV,      BB)       /* R[a] = getglobal(Syms[b]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|OPCODE(SETGV,      BB)       /* setglobal(Syms[b], R[a]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|OPCODE(GETSV,      BB)       /* R[a] = Special[Syms[b]] */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   39|      0|OPCODE(SETSV,      BB)       /* Special[Syms[b]] = R[a] */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   40|  12.2k|OPCODE(GETIV,      BB)       /* R[a] = ivget(Syms[b]) */
  |  |  ------------------
  |  |  |  |  349|  12.2k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 12.2k, False: 378k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|      0|OPCODE(SETIV,      BB)       /* ivset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|      0|OPCODE(GETCV,      BB)       /* R[a] = cvget(Syms[b]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|OPCODE(SETCV,      BB)       /* cvset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|  15.1k|OPCODE(GETCONST,   BB)       /* R[a] = constget(Syms[b]) */
  |  |  ------------------
  |  |  |  |  349|  15.1k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 15.1k, False: 375k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|OPCODE(SETCONST,   BB)       /* constset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|    302|OPCODE(GETMCNST,   BB)       /* R[a] = R[a]::Syms[b] */
  |  |  ------------------
  |  |  |  |  349|    302|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 302, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|OPCODE(SETMCNST,   BB)       /* R[a+1]::Syms[b] = R[a] */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   48|      0|OPCODE(GETUPVAR,   BBB)      /* R[a] = uvget(b,c) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      0|OPCODE(SETUPVAR,   BBB)      /* uvset(b,c,R[a]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   50|      0|OPCODE(GETIDX,     B)        /* R[a] = R[a][R[a+1]] */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   51|      0|OPCODE(SETIDX,     B)        /* R[a][R[a+1]] = R[a+2] */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   52|      0|OPCODE(JMP,        S)        /* pc+=a */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|    327|OPCODE(JMPIF,      BS)       /* if R[a] pc+=b */
  |  |  ------------------
  |  |  |  |  349|    327|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 327, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|      0|OPCODE(JMPNOT,     BS)       /* if !R[a] pc+=b */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      0|OPCODE(JMPNIL,     BS)       /* if R[a]==nil pc+=b */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|OPCODE(JMPUW,      S)        /* unwind_and_jump_to(a) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   57|      0|OPCODE(EXCEPT,     B)        /* R[a] = exc */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|OPCODE(RESCUE,     BB)       /* R[b] = R[a].isa?(R[b]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   59|      0|OPCODE(RAISEIF,    B)        /* raise(R[a]) if R[a] */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   60|    394|OPCODE(SSEND,      BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  |  349|    394|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 394, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|OPCODE(SSENDB,     BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|  11.6k|OPCODE(SEND,       BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  |  349|  11.6k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 11.6k, False: 378k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   63|      0|OPCODE(SENDB,      BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      0|OPCODE(CALL,       Z)        /* self.call(*, **, &) (But overlay the current call frame; tailcall) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   65|      0|OPCODE(SUPER,      BB)       /* R[a] = super(R[a+1],... ,R[a+b+1]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   66|      0|OPCODE(ARGARY,     BS)       /* R[a] = argument array (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|OPCODE(ENTER,      W)        /* arg setup according to flags (23=m5:o5:r1:m5:k5:d1:b1) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   68|      0|OPCODE(KEY_P,      BB)       /* R[a] = kdict.key?(Syms[b]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      0|OPCODE(KEYEND,     Z)        /* raise unless kdict.empty? */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   70|      0|OPCODE(KARG,       BB)       /* R[a] = kdict[Syms[b]]; kdict.delete(Syms[b]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|OPCODE(RETURN,     B)        /* return R[a] (normal) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      0|OPCODE(RETURN_BLK, B)        /* return R[a] (in-block return) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|OPCODE(BREAK,      B)        /* break R[a] */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   74|      0|OPCODE(BLKPUSH,    BS)       /* R[a] = block (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|  3.14k|OPCODE(ADD,        B)        /* R[a] = R[a]+R[a+1] */
  |  |  ------------------
  |  |  |  |  349|  3.14k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 3.14k, False: 387k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|  1.15k|OPCODE(ADDI,       BB)       /* R[a] = R[a]+mrb_int(b) */
  |  |  ------------------
  |  |  |  |  349|  1.15k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 1.15k, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   77|  5.93k|OPCODE(SUB,        B)        /* R[a] = R[a]-R[a+1] */
  |  |  ------------------
  |  |  |  |  349|  5.93k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 5.93k, False: 384k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|  1.42k|OPCODE(SUBI,       BB)       /* R[a] = R[a]-mrb_int(b) */
  |  |  ------------------
  |  |  |  |  349|  1.42k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 1.42k, False: 388k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   79|  2.43k|OPCODE(MUL,        B)        /* R[a] = R[a]*R[a+1] */
  |  |  ------------------
  |  |  |  |  349|  2.43k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 2.43k, False: 387k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   80|  3.36k|OPCODE(DIV,        B)        /* R[a] = R[a]/R[a+1] */
  |  |  ------------------
  |  |  |  |  349|  3.36k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 3.36k, False: 386k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   81|    719|OPCODE(EQ,         B)        /* R[a] = R[a]==R[a+1] */
  |  |  ------------------
  |  |  |  |  349|    719|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 719, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|    591|OPCODE(LT,         B)        /* R[a] = R[a]<R[a+1] */
  |  |  ------------------
  |  |  |  |  349|    591|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 591, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|  3.27k|OPCODE(LE,         B)        /* R[a] = R[a]<=R[a+1] */
  |  |  ------------------
  |  |  |  |  349|  3.27k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 3.27k, False: 387k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   84|    896|OPCODE(GT,         B)        /* R[a] = R[a]>R[a+1] */
  |  |  ------------------
  |  |  |  |  349|    896|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 896, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   85|  1.07k|OPCODE(GE,         B)        /* R[a] = R[a]>=R[a+1] */
  |  |  ------------------
  |  |  |  |  349|  1.07k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 1.07k, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   86|  39.0k|OPCODE(ARRAY,      BB)       /* R[a] = ary_new(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  |  349|  39.0k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 39.0k, False: 351k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   87|      0|OPCODE(ARRAY2,     BBB)      /* R[a] = ary_new(R[b],R[b+1]..R[b+c]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   88|      0|OPCODE(ARYCAT,     B)        /* ary_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|  1.99k|OPCODE(ARYPUSH,    BB)       /* ary_push(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  |  349|  1.99k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 1.99k, False: 388k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|OPCODE(ARYSPLAT,   B)        /* R[a] = ary_splat(R[a]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   91|      0|OPCODE(AREF,       BBB)      /* R[a] = R[b][c] */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      0|OPCODE(ASET,       BBB)      /* R[b][c] = R[a] */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   93|      0|OPCODE(APOST,      BBB)      /* *R[a],R[a+1]..R[a+c] = R[a][b..] */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   94|      0|OPCODE(INTERN,     B)        /* R[a] = intern(R[a]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   95|      0|OPCODE(SYMBOL,     BB)       /* R[a] = intern(Pool[b]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   96|      0|OPCODE(STRING,     BB)       /* R[a] = str_dup(Pool[b]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   97|      0|OPCODE(STRCAT,     B)        /* str_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   98|    861|OPCODE(HASH,       BB)       /* R[a] = hash_new(R[a],R[a+1]..R[a+b*2-1]) */
  |  |  ------------------
  |  |  |  |  349|    861|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 861, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   99|    200|OPCODE(HASHADD,    BB)       /* hash_push(R[a],R[a+1]..R[a+b*2]) */
  |  |  ------------------
  |  |  |  |  349|    200|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 200, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  100|      0|OPCODE(HASHCAT,    B)        /* R[a] = hash_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|      0|OPCODE(LAMBDA,     BB)       /* R[a] = lambda(Irep[b],L_LAMBDA) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  102|      0|OPCODE(BLOCK,      BB)       /* R[a] = lambda(Irep[b],L_BLOCK) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|OPCODE(METHOD,     BB)       /* R[a] = lambda(Irep[b],L_METHOD) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  104|      0|OPCODE(RANGE_INC,  B)        /* R[a] = range_new(R[a],R[a+1],FALSE) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|      0|OPCODE(RANGE_EXC,  B)        /* R[a] = range_new(R[a],R[a+1],TRUE) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  106|      0|OPCODE(OCLASS,     B)        /* R[a] = ::Object */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  107|      0|OPCODE(CLASS,      BB)       /* R[a] = newclass(R[a],Syms[b],R[a+1]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  108|      0|OPCODE(MODULE,     BB)       /* R[a] = newmodule(R[a],Syms[b]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|OPCODE(EXEC,       BB)       /* R[a] = blockexec(R[a],Irep[b]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  110|      0|OPCODE(DEF,        BB)       /* R[a].newmethod(Syms[b],R[a+1]); R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  111|      0|OPCODE(ALIAS,      BB)       /* alias_method(target_class,Syms[a],Syms[b]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      0|OPCODE(UNDEF,      B)        /* undef_method(target_class,Syms[a]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|      0|OPCODE(SCLASS,     B)        /* R[a] = R[a].singleton_class */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  114|      0|OPCODE(TCLASS,     B)        /* R[a] = target_class */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      0|OPCODE(DEBUG,      BBB)      /* print a,b,c */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  116|      0|OPCODE(ERR,        B)        /* raise(LocalJumpError, Pool[a]) */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  117|   118k|OPCODE(EXT1,       Z)        /* make 1st operand (a) 16bit */
  |  |  ------------------
  |  |  |  |  349|   118k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 118k, False: 271k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|    471|OPCODE(EXT2,       Z)        /* make 2nd operand (b) 16bit */
  |  |  ------------------
  |  |  |  |  349|    471|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 471, False: 389k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  119|  1.45k|OPCODE(EXT3,       Z)        /* make 1st and 2nd operands 16bit */
  |  |  ------------------
  |  |  |  |  349|  1.45k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 1.45k, False: 388k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      0|OPCODE(STOP,       Z)        /* stop VM */
  |  |  ------------------
  |  |  |  |  349|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (349:21): [True: 0, False: 390k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  351|   390k|#undef OPCODE
  352|   390k|  }
  353|   390k|  switch (insn) {
  354|   118k|  case OP_EXT1:
  ------------------
  |  Branch (354:3): [True: 118k, False: 271k]
  ------------------
  355|   118k|    insn = READ_B();
  ------------------
  |  |   30|   118k|#define READ_B() PEEK_B(pc++)
  |  |  ------------------
  |  |  |  |   26|   118k|#define PEEK_B(pc) (*(pc))
  |  |  ------------------
  ------------------
  356|   118k|    switch (insn) {
  ------------------
  |  Branch (356:13): [True: 0, False: 118k]
  ------------------
  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  358|   118k|#include "mruby/ops.h"
  ------------------
  |  |    1|       |/* operand types:
  |  |    2|       |   + Z: no operand
  |  |    3|       |   + B: 8bit
  |  |    4|       |   + BB: 8+8bit
  |  |    5|       |   + BBB: 8+8+8bit
  |  |    6|       |   + BS: 8+16bit
  |  |    7|       |   + BSS: 8+16+16bit
  |  |    8|       |   + S: 16bit
  |  |    9|       |   + W: 24bit
  |  |   10|       |*/
  |  |   11|       |
  |  |   12|       |/*-----------------------------------------------------------------------
  |  |   13|       |operation code    operands      semantics
  |  |   14|       |------------------------------------------------------------------------*/
  |  |   15|      0|OPCODE(NOP,        Z)        /* no operation */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   16|  3.62k|OPCODE(MOVE,       BB)       /* R[a] = R[b] */
  |  |  ------------------
  |  |  |  |  357|  3.62k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 3.62k, False: 114k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   17|    636|OPCODE(LOADL,      BB)       /* R[a] = Pool[b] */
  |  |  ------------------
  |  |  |  |  357|    636|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 636, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   18|  2.87k|OPCODE(LOADI,      BB)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  |  357|  2.87k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 2.87k, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   19|  2.07k|OPCODE(LOADINEG,   BB)       /* R[a] = mrb_int(-b) */
  |  |  ------------------
  |  |  |  |  357|  2.07k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 2.07k, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   20|    529|OPCODE(LOADI__1,   B)        /* R[a] = mrb_int(-1) */
  |  |  ------------------
  |  |  |  |  357|    529|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 529, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   21|  2.12k|OPCODE(LOADI_0,    B)        /* R[a] = mrb_int(0) */
  |  |  ------------------
  |  |  |  |  357|  2.12k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 2.12k, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   22|  90.7k|OPCODE(LOADI_1,    B)        /* R[a] = mrb_int(1) */
  |  |  ------------------
  |  |  |  |  357|  90.7k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 90.7k, False: 27.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   23|    680|OPCODE(LOADI_2,    B)        /* R[a] = mrb_int(2) */
  |  |  ------------------
  |  |  |  |  357|    680|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 680, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   24|    951|OPCODE(LOADI_3,    B)        /* R[a] = mrb_int(3) */
  |  |  ------------------
  |  |  |  |  357|    951|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 951, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   25|  1.21k|OPCODE(LOADI_4,    B)        /* R[a] = mrb_int(4) */
  |  |  ------------------
  |  |  |  |  357|  1.21k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 1.21k, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   26|    502|OPCODE(LOADI_5,    B)        /* R[a] = mrb_int(5) */
  |  |  ------------------
  |  |  |  |  357|    502|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 502, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   27|    775|OPCODE(LOADI_6,    B)        /* R[a] = mrb_int(6) */
  |  |  ------------------
  |  |  |  |  357|    775|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 775, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   28|    659|OPCODE(LOADI_7,    B)        /* R[a] = mrb_int(7) */
  |  |  ------------------
  |  |  |  |  357|    659|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 659, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   29|    734|OPCODE(LOADI16,    BS)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  |  357|    734|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 734, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   30|    531|OPCODE(LOADI32,    BSS)      /* R[a] = mrb_int((b<<16)+c) */
  |  |  ------------------
  |  |  |  |  357|    531|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 531, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   31|      0|OPCODE(LOADSYM,    BB)       /* R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|    235|OPCODE(LOADNIL,    B)        /* R[a] = nil */
  |  |  ------------------
  |  |  |  |  357|    235|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 235, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   33|      0|OPCODE(LOADSELF,   B)        /* R[a] = self */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   34|      0|OPCODE(LOADT,      B)        /* R[a] = true */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   35|      0|OPCODE(LOADF,      B)        /* R[a] = false */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      0|OPCODE(GETGV,      BB)       /* R[a] = getglobal(Syms[b]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|OPCODE(SETGV,      BB)       /* setglobal(Syms[b], R[a]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|OPCODE(GETSV,      BB)       /* R[a] = Special[Syms[b]] */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   39|      0|OPCODE(SETSV,      BB)       /* Special[Syms[b]] = R[a] */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   40|  1.35k|OPCODE(GETIV,      BB)       /* R[a] = ivget(Syms[b]) */
  |  |  ------------------
  |  |  |  |  357|  1.35k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 1.35k, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|      0|OPCODE(SETIV,      BB)       /* ivset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|      0|OPCODE(GETCV,      BB)       /* R[a] = cvget(Syms[b]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|OPCODE(SETCV,      BB)       /* cvset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|    988|OPCODE(GETCONST,   BB)       /* R[a] = constget(Syms[b]) */
  |  |  ------------------
  |  |  |  |  357|    988|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 988, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|OPCODE(SETCONST,   BB)       /* constset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|    472|OPCODE(GETMCNST,   BB)       /* R[a] = R[a]::Syms[b] */
  |  |  ------------------
  |  |  |  |  357|    472|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 472, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|OPCODE(SETMCNST,   BB)       /* R[a+1]::Syms[b] = R[a] */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   48|      0|OPCODE(GETUPVAR,   BBB)      /* R[a] = uvget(b,c) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      0|OPCODE(SETUPVAR,   BBB)      /* uvset(b,c,R[a]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   50|      0|OPCODE(GETIDX,     B)        /* R[a] = R[a][R[a+1]] */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   51|      0|OPCODE(SETIDX,     B)        /* R[a][R[a+1]] = R[a+2] */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   52|      0|OPCODE(JMP,        S)        /* pc+=a */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|     38|OPCODE(JMPIF,      BS)       /* if R[a] pc+=b */
  |  |  ------------------
  |  |  |  |  357|     38|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 38, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|      0|OPCODE(JMPNOT,     BS)       /* if !R[a] pc+=b */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      0|OPCODE(JMPNIL,     BS)       /* if R[a]==nil pc+=b */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|OPCODE(JMPUW,      S)        /* unwind_and_jump_to(a) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   57|      0|OPCODE(EXCEPT,     B)        /* R[a] = exc */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|OPCODE(RESCUE,     BB)       /* R[b] = R[a].isa?(R[b]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   59|      0|OPCODE(RAISEIF,    B)        /* raise(R[a]) if R[a] */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   60|      0|OPCODE(SSEND,      BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|OPCODE(SSENDB,     BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|  1.16k|OPCODE(SEND,       BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  |  357|  1.16k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 1.16k, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   63|      0|OPCODE(SENDB,      BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      0|OPCODE(CALL,       Z)        /* self.call(*, **, &) (But overlay the current call frame; tailcall) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   65|      0|OPCODE(SUPER,      BB)       /* R[a] = super(R[a+1],... ,R[a+b+1]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   66|      0|OPCODE(ARGARY,     BS)       /* R[a] = argument array (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|OPCODE(ENTER,      W)        /* arg setup according to flags (23=m5:o5:r1:m5:k5:d1:b1) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   68|      0|OPCODE(KEY_P,      BB)       /* R[a] = kdict.key?(Syms[b]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      0|OPCODE(KEYEND,     Z)        /* raise unless kdict.empty? */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   70|      0|OPCODE(KARG,       BB)       /* R[a] = kdict[Syms[b]]; kdict.delete(Syms[b]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|OPCODE(RETURN,     B)        /* return R[a] (normal) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      0|OPCODE(RETURN_BLK, B)        /* return R[a] (in-block return) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|OPCODE(BREAK,      B)        /* break R[a] */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   74|      0|OPCODE(BLKPUSH,    BS)       /* R[a] = block (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|    505|OPCODE(ADD,        B)        /* R[a] = R[a]+R[a+1] */
  |  |  ------------------
  |  |  |  |  357|    505|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 505, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|    434|OPCODE(ADDI,       BB)       /* R[a] = R[a]+mrb_int(b) */
  |  |  ------------------
  |  |  |  |  357|    434|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 434, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   77|    759|OPCODE(SUB,        B)        /* R[a] = R[a]-R[a+1] */
  |  |  ------------------
  |  |  |  |  357|    759|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 759, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|    472|OPCODE(SUBI,       BB)       /* R[a] = R[a]-mrb_int(b) */
  |  |  ------------------
  |  |  |  |  357|    472|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 472, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   79|    440|OPCODE(MUL,        B)        /* R[a] = R[a]*R[a+1] */
  |  |  ------------------
  |  |  |  |  357|    440|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 440, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   80|    378|OPCODE(DIV,        B)        /* R[a] = R[a]/R[a+1] */
  |  |  ------------------
  |  |  |  |  357|    378|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 378, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   81|    283|OPCODE(EQ,         B)        /* R[a] = R[a]==R[a+1] */
  |  |  ------------------
  |  |  |  |  357|    283|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 283, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|    365|OPCODE(LT,         B)        /* R[a] = R[a]<R[a+1] */
  |  |  ------------------
  |  |  |  |  357|    365|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 365, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|    173|OPCODE(LE,         B)        /* R[a] = R[a]<=R[a+1] */
  |  |  ------------------
  |  |  |  |  357|    173|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 173, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   84|     54|OPCODE(GT,         B)        /* R[a] = R[a]>R[a+1] */
  |  |  ------------------
  |  |  |  |  357|     54|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 54, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   85|    190|OPCODE(GE,         B)        /* R[a] = R[a]>=R[a+1] */
  |  |  ------------------
  |  |  |  |  357|    190|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 190, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   86|    824|OPCODE(ARRAY,      BB)       /* R[a] = ary_new(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  |  357|    824|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 824, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   87|      0|OPCODE(ARRAY2,     BBB)      /* R[a] = ary_new(R[b],R[b+1]..R[b+c]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   88|      0|OPCODE(ARYCAT,     B)        /* ary_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|OPCODE(ARYPUSH,    BB)       /* ary_push(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|OPCODE(ARYSPLAT,   B)        /* R[a] = ary_splat(R[a]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   91|      0|OPCODE(AREF,       BBB)      /* R[a] = R[b][c] */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      0|OPCODE(ASET,       BBB)      /* R[b][c] = R[a] */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   93|      0|OPCODE(APOST,      BBB)      /* *R[a],R[a+1]..R[a+c] = R[a][b..] */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   94|      0|OPCODE(INTERN,     B)        /* R[a] = intern(R[a]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   95|      0|OPCODE(SYMBOL,     BB)       /* R[a] = intern(Pool[b]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   96|      0|OPCODE(STRING,     BB)       /* R[a] = str_dup(Pool[b]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   97|      0|OPCODE(STRCAT,     B)        /* str_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   98|    704|OPCODE(HASH,       BB)       /* R[a] = hash_new(R[a],R[a+1]..R[a+b*2-1]) */
  |  |  ------------------
  |  |  |  |  357|    704|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 704, False: 117k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   99|      0|OPCODE(HASHADD,    BB)       /* hash_push(R[a],R[a+1]..R[a+b*2]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  100|      0|OPCODE(HASHCAT,    B)        /* R[a] = hash_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|      0|OPCODE(LAMBDA,     BB)       /* R[a] = lambda(Irep[b],L_LAMBDA) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  102|      0|OPCODE(BLOCK,      BB)       /* R[a] = lambda(Irep[b],L_BLOCK) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|OPCODE(METHOD,     BB)       /* R[a] = lambda(Irep[b],L_METHOD) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  104|      0|OPCODE(RANGE_INC,  B)        /* R[a] = range_new(R[a],R[a+1],FALSE) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|      0|OPCODE(RANGE_EXC,  B)        /* R[a] = range_new(R[a],R[a+1],TRUE) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  106|      0|OPCODE(OCLASS,     B)        /* R[a] = ::Object */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  107|      0|OPCODE(CLASS,      BB)       /* R[a] = newclass(R[a],Syms[b],R[a+1]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  108|      0|OPCODE(MODULE,     BB)       /* R[a] = newmodule(R[a],Syms[b]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|OPCODE(EXEC,       BB)       /* R[a] = blockexec(R[a],Irep[b]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  110|      0|OPCODE(DEF,        BB)       /* R[a].newmethod(Syms[b],R[a+1]); R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  111|      0|OPCODE(ALIAS,      BB)       /* alias_method(target_class,Syms[a],Syms[b]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      0|OPCODE(UNDEF,      B)        /* undef_method(target_class,Syms[a]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|      0|OPCODE(SCLASS,     B)        /* R[a] = R[a].singleton_class */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  114|      0|OPCODE(TCLASS,     B)        /* R[a] = target_class */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      0|OPCODE(DEBUG,      BBB)      /* print a,b,c */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  116|      0|OPCODE(ERR,        B)        /* raise(LocalJumpError, Pool[a]) */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  117|      0|OPCODE(EXT1,       Z)        /* make 1st operand (a) 16bit */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|      0|OPCODE(EXT2,       Z)        /* make 2nd operand (b) 16bit */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  119|      0|OPCODE(EXT3,       Z)        /* make 1st and 2nd operands 16bit */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      0|OPCODE(STOP,       Z)        /* stop VM */
  |  |  ------------------
  |  |  |  |  357|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:21): [True: 0, False: 118k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  359|   118k|#undef OPCODE
  360|   118k|    }
  361|   118k|    break;
  362|   118k|  case OP_EXT2:
  ------------------
  |  Branch (362:3): [True: 471, False: 389k]
  ------------------
  363|    471|    insn = READ_B();
  ------------------
  |  |   30|    471|#define READ_B() PEEK_B(pc++)
  |  |  ------------------
  |  |  |  |   26|    471|#define PEEK_B(pc) (*(pc))
  |  |  ------------------
  ------------------
  364|    471|    switch (insn) {
  ------------------
  |  Branch (364:13): [True: 0, False: 471]
  ------------------
  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  366|    471|#include "mruby/ops.h"
  ------------------
  |  |    1|       |/* operand types:
  |  |    2|       |   + Z: no operand
  |  |    3|       |   + B: 8bit
  |  |    4|       |   + BB: 8+8bit
  |  |    5|       |   + BBB: 8+8+8bit
  |  |    6|       |   + BS: 8+16bit
  |  |    7|       |   + BSS: 8+16+16bit
  |  |    8|       |   + S: 16bit
  |  |    9|       |   + W: 24bit
  |  |   10|       |*/
  |  |   11|       |
  |  |   12|       |/*-----------------------------------------------------------------------
  |  |   13|       |operation code    operands      semantics
  |  |   14|       |------------------------------------------------------------------------*/
  |  |   15|      0|OPCODE(NOP,        Z)        /* no operation */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   16|    208|OPCODE(MOVE,       BB)       /* R[a] = R[b] */
  |  |  ------------------
  |  |  |  |  365|    208|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 208, False: 263]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   17|     80|OPCODE(LOADL,      BB)       /* R[a] = Pool[b] */
  |  |  ------------------
  |  |  |  |  365|     80|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 80, False: 391]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   18|      0|OPCODE(LOADI,      BB)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   19|      0|OPCODE(LOADINEG,   BB)       /* R[a] = mrb_int(-b) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   20|      0|OPCODE(LOADI__1,   B)        /* R[a] = mrb_int(-1) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   21|      0|OPCODE(LOADI_0,    B)        /* R[a] = mrb_int(0) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   22|      0|OPCODE(LOADI_1,    B)        /* R[a] = mrb_int(1) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   23|      0|OPCODE(LOADI_2,    B)        /* R[a] = mrb_int(2) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   24|      0|OPCODE(LOADI_3,    B)        /* R[a] = mrb_int(3) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   25|      0|OPCODE(LOADI_4,    B)        /* R[a] = mrb_int(4) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   26|      0|OPCODE(LOADI_5,    B)        /* R[a] = mrb_int(5) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   27|      0|OPCODE(LOADI_6,    B)        /* R[a] = mrb_int(6) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   28|      0|OPCODE(LOADI_7,    B)        /* R[a] = mrb_int(7) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   29|      0|OPCODE(LOADI16,    BS)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   30|      0|OPCODE(LOADI32,    BSS)      /* R[a] = mrb_int((b<<16)+c) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   31|      0|OPCODE(LOADSYM,    BB)       /* R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|      0|OPCODE(LOADNIL,    B)        /* R[a] = nil */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   33|      0|OPCODE(LOADSELF,   B)        /* R[a] = self */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   34|      0|OPCODE(LOADT,      B)        /* R[a] = true */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   35|      0|OPCODE(LOADF,      B)        /* R[a] = false */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      0|OPCODE(GETGV,      BB)       /* R[a] = getglobal(Syms[b]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|OPCODE(SETGV,      BB)       /* setglobal(Syms[b], R[a]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|OPCODE(GETSV,      BB)       /* R[a] = Special[Syms[b]] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   39|      0|OPCODE(SETSV,      BB)       /* Special[Syms[b]] = R[a] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   40|      0|OPCODE(GETIV,      BB)       /* R[a] = ivget(Syms[b]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|      0|OPCODE(SETIV,      BB)       /* ivset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|      0|OPCODE(GETCV,      BB)       /* R[a] = cvget(Syms[b]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|OPCODE(SETCV,      BB)       /* cvset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|OPCODE(GETCONST,   BB)       /* R[a] = constget(Syms[b]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|OPCODE(SETCONST,   BB)       /* constset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|OPCODE(GETMCNST,   BB)       /* R[a] = R[a]::Syms[b] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|OPCODE(SETMCNST,   BB)       /* R[a+1]::Syms[b] = R[a] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   48|      0|OPCODE(GETUPVAR,   BBB)      /* R[a] = uvget(b,c) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      0|OPCODE(SETUPVAR,   BBB)      /* uvset(b,c,R[a]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   50|      0|OPCODE(GETIDX,     B)        /* R[a] = R[a][R[a+1]] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   51|      0|OPCODE(SETIDX,     B)        /* R[a][R[a+1]] = R[a+2] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   52|      0|OPCODE(JMP,        S)        /* pc+=a */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|      0|OPCODE(JMPIF,      BS)       /* if R[a] pc+=b */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|      0|OPCODE(JMPNOT,     BS)       /* if !R[a] pc+=b */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      0|OPCODE(JMPNIL,     BS)       /* if R[a]==nil pc+=b */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|OPCODE(JMPUW,      S)        /* unwind_and_jump_to(a) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   57|      0|OPCODE(EXCEPT,     B)        /* R[a] = exc */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|OPCODE(RESCUE,     BB)       /* R[b] = R[a].isa?(R[b]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   59|      0|OPCODE(RAISEIF,    B)        /* raise(R[a]) if R[a] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   60|      0|OPCODE(SSEND,      BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|OPCODE(SSENDB,     BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|      0|OPCODE(SEND,       BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   63|      0|OPCODE(SENDB,      BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      0|OPCODE(CALL,       Z)        /* self.call(*, **, &) (But overlay the current call frame; tailcall) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   65|      0|OPCODE(SUPER,      BB)       /* R[a] = super(R[a+1],... ,R[a+b+1]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   66|      0|OPCODE(ARGARY,     BS)       /* R[a] = argument array (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|OPCODE(ENTER,      W)        /* arg setup according to flags (23=m5:o5:r1:m5:k5:d1:b1) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   68|      0|OPCODE(KEY_P,      BB)       /* R[a] = kdict.key?(Syms[b]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      0|OPCODE(KEYEND,     Z)        /* raise unless kdict.empty? */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   70|      0|OPCODE(KARG,       BB)       /* R[a] = kdict[Syms[b]]; kdict.delete(Syms[b]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|OPCODE(RETURN,     B)        /* return R[a] (normal) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      0|OPCODE(RETURN_BLK, B)        /* return R[a] (in-block return) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|OPCODE(BREAK,      B)        /* break R[a] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   74|      0|OPCODE(BLKPUSH,    BS)       /* R[a] = block (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|OPCODE(ADD,        B)        /* R[a] = R[a]+R[a+1] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|OPCODE(ADDI,       BB)       /* R[a] = R[a]+mrb_int(b) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   77|      0|OPCODE(SUB,        B)        /* R[a] = R[a]-R[a+1] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|      0|OPCODE(SUBI,       BB)       /* R[a] = R[a]-mrb_int(b) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   79|      0|OPCODE(MUL,        B)        /* R[a] = R[a]*R[a+1] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   80|      0|OPCODE(DIV,        B)        /* R[a] = R[a]/R[a+1] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   81|      0|OPCODE(EQ,         B)        /* R[a] = R[a]==R[a+1] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|OPCODE(LT,         B)        /* R[a] = R[a]<R[a+1] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|OPCODE(LE,         B)        /* R[a] = R[a]<=R[a+1] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   84|      0|OPCODE(GT,         B)        /* R[a] = R[a]>R[a+1] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   85|      0|OPCODE(GE,         B)        /* R[a] = R[a]>=R[a+1] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   86|     42|OPCODE(ARRAY,      BB)       /* R[a] = ary_new(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  |  365|     42|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 42, False: 429]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   87|      0|OPCODE(ARRAY2,     BBB)      /* R[a] = ary_new(R[b],R[b+1]..R[b+c]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   88|      0|OPCODE(ARYCAT,     B)        /* ary_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      1|OPCODE(ARYPUSH,    BB)       /* ary_push(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  |  365|      1|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 1, False: 470]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|OPCODE(ARYSPLAT,   B)        /* R[a] = ary_splat(R[a]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   91|      0|OPCODE(AREF,       BBB)      /* R[a] = R[b][c] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      0|OPCODE(ASET,       BBB)      /* R[b][c] = R[a] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   93|      0|OPCODE(APOST,      BBB)      /* *R[a],R[a+1]..R[a+c] = R[a][b..] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   94|      0|OPCODE(INTERN,     B)        /* R[a] = intern(R[a]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   95|      0|OPCODE(SYMBOL,     BB)       /* R[a] = intern(Pool[b]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   96|      0|OPCODE(STRING,     BB)       /* R[a] = str_dup(Pool[b]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   97|      0|OPCODE(STRCAT,     B)        /* str_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   98|    140|OPCODE(HASH,       BB)       /* R[a] = hash_new(R[a],R[a+1]..R[a+b*2-1]) */
  |  |  ------------------
  |  |  |  |  365|    140|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 140, False: 331]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   99|      0|OPCODE(HASHADD,    BB)       /* hash_push(R[a],R[a+1]..R[a+b*2]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  100|      0|OPCODE(HASHCAT,    B)        /* R[a] = hash_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|      0|OPCODE(LAMBDA,     BB)       /* R[a] = lambda(Irep[b],L_LAMBDA) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  102|      0|OPCODE(BLOCK,      BB)       /* R[a] = lambda(Irep[b],L_BLOCK) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|OPCODE(METHOD,     BB)       /* R[a] = lambda(Irep[b],L_METHOD) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  104|      0|OPCODE(RANGE_INC,  B)        /* R[a] = range_new(R[a],R[a+1],FALSE) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|      0|OPCODE(RANGE_EXC,  B)        /* R[a] = range_new(R[a],R[a+1],TRUE) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  106|      0|OPCODE(OCLASS,     B)        /* R[a] = ::Object */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  107|      0|OPCODE(CLASS,      BB)       /* R[a] = newclass(R[a],Syms[b],R[a+1]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  108|      0|OPCODE(MODULE,     BB)       /* R[a] = newmodule(R[a],Syms[b]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|OPCODE(EXEC,       BB)       /* R[a] = blockexec(R[a],Irep[b]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  110|      0|OPCODE(DEF,        BB)       /* R[a].newmethod(Syms[b],R[a+1]); R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  111|      0|OPCODE(ALIAS,      BB)       /* alias_method(target_class,Syms[a],Syms[b]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      0|OPCODE(UNDEF,      B)        /* undef_method(target_class,Syms[a]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|      0|OPCODE(SCLASS,     B)        /* R[a] = R[a].singleton_class */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  114|      0|OPCODE(TCLASS,     B)        /* R[a] = target_class */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      0|OPCODE(DEBUG,      BBB)      /* print a,b,c */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  116|      0|OPCODE(ERR,        B)        /* raise(LocalJumpError, Pool[a]) */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  117|      0|OPCODE(EXT1,       Z)        /* make 1st operand (a) 16bit */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|      0|OPCODE(EXT2,       Z)        /* make 2nd operand (b) 16bit */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  119|      0|OPCODE(EXT3,       Z)        /* make 1st and 2nd operands 16bit */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      0|OPCODE(STOP,       Z)        /* stop VM */
  |  |  ------------------
  |  |  |  |  365|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (365:21): [True: 0, False: 471]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  367|    471|#undef OPCODE
  368|    471|    }
  369|    471|    break;
  370|  1.45k|  case OP_EXT3:
  ------------------
  |  Branch (370:3): [True: 1.45k, False: 388k]
  ------------------
  371|  1.45k|    insn = READ_B();
  ------------------
  |  |   30|  1.45k|#define READ_B() PEEK_B(pc++)
  |  |  ------------------
  |  |  |  |   26|  1.45k|#define PEEK_B(pc) (*(pc))
  |  |  ------------------
  ------------------
  372|  1.45k|    switch (insn) {
  ------------------
  |  Branch (372:13): [True: 0, False: 1.45k]
  ------------------
  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  374|  1.45k|#include "mruby/ops.h"
  ------------------
  |  |    1|       |/* operand types:
  |  |    2|       |   + Z: no operand
  |  |    3|       |   + B: 8bit
  |  |    4|       |   + BB: 8+8bit
  |  |    5|       |   + BBB: 8+8+8bit
  |  |    6|       |   + BS: 8+16bit
  |  |    7|       |   + BSS: 8+16+16bit
  |  |    8|       |   + S: 16bit
  |  |    9|       |   + W: 24bit
  |  |   10|       |*/
  |  |   11|       |
  |  |   12|       |/*-----------------------------------------------------------------------
  |  |   13|       |operation code    operands      semantics
  |  |   14|       |------------------------------------------------------------------------*/
  |  |   15|      0|OPCODE(NOP,        Z)        /* no operation */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   16|  1.10k|OPCODE(MOVE,       BB)       /* R[a] = R[b] */
  |  |  ------------------
  |  |  |  |  373|  1.10k|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 1.10k, False: 348]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   17|    215|OPCODE(LOADL,      BB)       /* R[a] = Pool[b] */
  |  |  ------------------
  |  |  |  |  373|    215|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 215, False: 1.24k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   18|      0|OPCODE(LOADI,      BB)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   19|      0|OPCODE(LOADINEG,   BB)       /* R[a] = mrb_int(-b) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   20|      0|OPCODE(LOADI__1,   B)        /* R[a] = mrb_int(-1) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   21|      0|OPCODE(LOADI_0,    B)        /* R[a] = mrb_int(0) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   22|      0|OPCODE(LOADI_1,    B)        /* R[a] = mrb_int(1) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   23|      0|OPCODE(LOADI_2,    B)        /* R[a] = mrb_int(2) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   24|      0|OPCODE(LOADI_3,    B)        /* R[a] = mrb_int(3) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   25|      0|OPCODE(LOADI_4,    B)        /* R[a] = mrb_int(4) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   26|      0|OPCODE(LOADI_5,    B)        /* R[a] = mrb_int(5) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   27|      0|OPCODE(LOADI_6,    B)        /* R[a] = mrb_int(6) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   28|      0|OPCODE(LOADI_7,    B)        /* R[a] = mrb_int(7) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   29|      0|OPCODE(LOADI16,    BS)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   30|      0|OPCODE(LOADI32,    BSS)      /* R[a] = mrb_int((b<<16)+c) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   31|      0|OPCODE(LOADSYM,    BB)       /* R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|      0|OPCODE(LOADNIL,    B)        /* R[a] = nil */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   33|      0|OPCODE(LOADSELF,   B)        /* R[a] = self */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   34|      0|OPCODE(LOADT,      B)        /* R[a] = true */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   35|      0|OPCODE(LOADF,      B)        /* R[a] = false */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      0|OPCODE(GETGV,      BB)       /* R[a] = getglobal(Syms[b]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|OPCODE(SETGV,      BB)       /* setglobal(Syms[b], R[a]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|OPCODE(GETSV,      BB)       /* R[a] = Special[Syms[b]] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   39|      0|OPCODE(SETSV,      BB)       /* Special[Syms[b]] = R[a] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   40|      0|OPCODE(GETIV,      BB)       /* R[a] = ivget(Syms[b]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|      0|OPCODE(SETIV,      BB)       /* ivset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|      0|OPCODE(GETCV,      BB)       /* R[a] = cvget(Syms[b]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|OPCODE(SETCV,      BB)       /* cvset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|OPCODE(GETCONST,   BB)       /* R[a] = constget(Syms[b]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|OPCODE(SETCONST,   BB)       /* constset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|OPCODE(GETMCNST,   BB)       /* R[a] = R[a]::Syms[b] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|OPCODE(SETMCNST,   BB)       /* R[a+1]::Syms[b] = R[a] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   48|      0|OPCODE(GETUPVAR,   BBB)      /* R[a] = uvget(b,c) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      0|OPCODE(SETUPVAR,   BBB)      /* uvset(b,c,R[a]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   50|      0|OPCODE(GETIDX,     B)        /* R[a] = R[a][R[a+1]] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   51|      0|OPCODE(SETIDX,     B)        /* R[a][R[a+1]] = R[a+2] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   52|      0|OPCODE(JMP,        S)        /* pc+=a */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|      0|OPCODE(JMPIF,      BS)       /* if R[a] pc+=b */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|      0|OPCODE(JMPNOT,     BS)       /* if !R[a] pc+=b */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      0|OPCODE(JMPNIL,     BS)       /* if R[a]==nil pc+=b */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|OPCODE(JMPUW,      S)        /* unwind_and_jump_to(a) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   57|      0|OPCODE(EXCEPT,     B)        /* R[a] = exc */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|OPCODE(RESCUE,     BB)       /* R[b] = R[a].isa?(R[b]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   59|      0|OPCODE(RAISEIF,    B)        /* raise(R[a]) if R[a] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   60|      0|OPCODE(SSEND,      BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|OPCODE(SSENDB,     BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|      0|OPCODE(SEND,       BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   63|      0|OPCODE(SENDB,      BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      0|OPCODE(CALL,       Z)        /* self.call(*, **, &) (But overlay the current call frame; tailcall) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   65|      0|OPCODE(SUPER,      BB)       /* R[a] = super(R[a+1],... ,R[a+b+1]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   66|      0|OPCODE(ARGARY,     BS)       /* R[a] = argument array (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|OPCODE(ENTER,      W)        /* arg setup according to flags (23=m5:o5:r1:m5:k5:d1:b1) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   68|      0|OPCODE(KEY_P,      BB)       /* R[a] = kdict.key?(Syms[b]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      0|OPCODE(KEYEND,     Z)        /* raise unless kdict.empty? */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   70|      0|OPCODE(KARG,       BB)       /* R[a] = kdict[Syms[b]]; kdict.delete(Syms[b]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|OPCODE(RETURN,     B)        /* return R[a] (normal) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      0|OPCODE(RETURN_BLK, B)        /* return R[a] (in-block return) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|OPCODE(BREAK,      B)        /* break R[a] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   74|      0|OPCODE(BLKPUSH,    BS)       /* R[a] = block (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|OPCODE(ADD,        B)        /* R[a] = R[a]+R[a+1] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|OPCODE(ADDI,       BB)       /* R[a] = R[a]+mrb_int(b) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   77|      0|OPCODE(SUB,        B)        /* R[a] = R[a]-R[a+1] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|      0|OPCODE(SUBI,       BB)       /* R[a] = R[a]-mrb_int(b) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   79|      0|OPCODE(MUL,        B)        /* R[a] = R[a]*R[a+1] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   80|      0|OPCODE(DIV,        B)        /* R[a] = R[a]/R[a+1] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   81|      0|OPCODE(EQ,         B)        /* R[a] = R[a]==R[a+1] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|OPCODE(LT,         B)        /* R[a] = R[a]<R[a+1] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|OPCODE(LE,         B)        /* R[a] = R[a]<=R[a+1] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   84|      0|OPCODE(GT,         B)        /* R[a] = R[a]>R[a+1] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   85|      0|OPCODE(GE,         B)        /* R[a] = R[a]>=R[a+1] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   86|     18|OPCODE(ARRAY,      BB)       /* R[a] = ary_new(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  |  373|     18|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 18, False: 1.43k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   87|      0|OPCODE(ARRAY2,     BBB)      /* R[a] = ary_new(R[b],R[b+1]..R[b+c]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   88|      0|OPCODE(ARYCAT,     B)        /* ary_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      1|OPCODE(ARYPUSH,    BB)       /* ary_push(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  |  373|      1|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 1, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|OPCODE(ARYSPLAT,   B)        /* R[a] = ary_splat(R[a]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   91|      0|OPCODE(AREF,       BBB)      /* R[a] = R[b][c] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      0|OPCODE(ASET,       BBB)      /* R[b][c] = R[a] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   93|      0|OPCODE(APOST,      BBB)      /* *R[a],R[a+1]..R[a+c] = R[a][b..] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   94|      0|OPCODE(INTERN,     B)        /* R[a] = intern(R[a]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   95|      0|OPCODE(SYMBOL,     BB)       /* R[a] = intern(Pool[b]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   96|      0|OPCODE(STRING,     BB)       /* R[a] = str_dup(Pool[b]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   97|      0|OPCODE(STRCAT,     B)        /* str_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   98|    114|OPCODE(HASH,       BB)       /* R[a] = hash_new(R[a],R[a+1]..R[a+b*2-1]) */
  |  |  ------------------
  |  |  |  |  373|    114|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 114, False: 1.34k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   99|      0|OPCODE(HASHADD,    BB)       /* hash_push(R[a],R[a+1]..R[a+b*2]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  100|      0|OPCODE(HASHCAT,    B)        /* R[a] = hash_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|      0|OPCODE(LAMBDA,     BB)       /* R[a] = lambda(Irep[b],L_LAMBDA) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  102|      0|OPCODE(BLOCK,      BB)       /* R[a] = lambda(Irep[b],L_BLOCK) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|OPCODE(METHOD,     BB)       /* R[a] = lambda(Irep[b],L_METHOD) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  104|      0|OPCODE(RANGE_INC,  B)        /* R[a] = range_new(R[a],R[a+1],FALSE) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|      0|OPCODE(RANGE_EXC,  B)        /* R[a] = range_new(R[a],R[a+1],TRUE) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  106|      0|OPCODE(OCLASS,     B)        /* R[a] = ::Object */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  107|      0|OPCODE(CLASS,      BB)       /* R[a] = newclass(R[a],Syms[b],R[a+1]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  108|      0|OPCODE(MODULE,     BB)       /* R[a] = newmodule(R[a],Syms[b]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|OPCODE(EXEC,       BB)       /* R[a] = blockexec(R[a],Irep[b]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  110|      0|OPCODE(DEF,        BB)       /* R[a].newmethod(Syms[b],R[a+1]); R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  111|      0|OPCODE(ALIAS,      BB)       /* alias_method(target_class,Syms[a],Syms[b]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      0|OPCODE(UNDEF,      B)        /* undef_method(target_class,Syms[a]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|      0|OPCODE(SCLASS,     B)        /* R[a] = R[a].singleton_class */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  114|      0|OPCODE(TCLASS,     B)        /* R[a] = target_class */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      0|OPCODE(DEBUG,      BBB)      /* print a,b,c */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  116|      0|OPCODE(ERR,        B)        /* raise(LocalJumpError, Pool[a]) */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  117|      0|OPCODE(EXT1,       Z)        /* make 1st operand (a) 16bit */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|      0|OPCODE(EXT2,       Z)        /* make 2nd operand (b) 16bit */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  119|      0|OPCODE(EXT3,       Z)        /* make 1st and 2nd operands 16bit */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      0|OPCODE(STOP,       Z)        /* stop VM */
  |  |  ------------------
  |  |  |  |  373|      0|#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (373:21): [True: 0, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  375|  1.45k|#undef OPCODE
  376|  1.45k|    }
  377|  1.45k|    break;
  378|   269k|  default:
  ------------------
  |  Branch (378:3): [True: 269k, False: 120k]
  ------------------
  379|   269k|    break;
  380|   390k|  }
  381|   390k|  data.insn = insn;
  382|   390k|  data.a = a;
  383|   390k|  data.b = b;
  384|   390k|  data.c = c;
  385|   390k|  return data;
  386|   390k|}
mrb_generate_code:
 4081|    466|{
 4082|    466|  return generate_code(mrb, p, VAL);
  ------------------
  |  |  326|    466|#define VAL    1
  ------------------
 4083|    466|}
codegen.c:generate_code:
 4044|    466|{
 4045|    466|  codegen_scope *scope = scope_new(mrb, 0, 0);
 4046|    466|  struct mrb_jmpbuf *prev_jmp = mrb->jmp;
 4047|    466|  struct mrb_jmpbuf jmpbuf;
 4048|    466|  struct RProc *proc;
 4049|       |
 4050|    466|  mrb->jmp = &jmpbuf;
 4051|       |
 4052|    466|  scope->mrb = mrb;
 4053|    466|  scope->parser = p;
 4054|    466|  scope->filename_sym = p->filename_sym;
 4055|    466|  scope->filename_index = p->current_filename_index;
 4056|       |
 4057|    466|  MRB_TRY(mrb->jmp) {
  ------------------
  |  |   44|    466|#define MRB_TRY(buf) if (MRB_SETJMP((buf)->impl) == 0) {
  |  |  ------------------
  |  |  |  |   40|    466|#define MRB_SETJMP setjmp
  |  |  ------------------
  |  |  |  Branch (44:26): [True: 466, False: 0]
  |  |  ------------------
  ------------------
 4058|       |    /* prepare irep */
 4059|    466|    codegen(scope, p->tree, val);
 4060|    466|    proc = mrb_proc_new(mrb, scope->irep);
 4061|    466|    mrb_irep_decref(mrb, scope->irep);
 4062|    466|    mrb_pool_close(scope->mpool);
 4063|    466|    proc->c = NULL;
 4064|    466|    if (mrb->c->cibase && mrb->c->cibase->proc == proc->upper) {
  ------------------
  |  Branch (4064:9): [True: 394, False: 72]
  |  Branch (4064:27): [True: 394, False: 0]
  ------------------
 4065|    394|      proc->upper = NULL;
 4066|    394|    }
 4067|    466|    mrb->jmp = prev_jmp;
 4068|    466|    return proc;
 4069|    466|  }
 4070|    466|  MRB_CATCH(mrb->jmp) {
  ------------------
  |  |   45|    466|#define MRB_CATCH(buf) } else {
  ------------------
 4071|      0|    mrb_irep_decref(mrb, scope->irep);
 4072|      0|    mrb_pool_close(scope->mpool);
 4073|      0|    mrb->jmp = prev_jmp;
 4074|      0|    return NULL;
 4075|      0|  }
 4076|      0|  MRB_END_EXC(mrb->jmp);
  ------------------
  |  |   46|      0|#define MRB_END_EXC(buf) }
  ------------------
 4077|      0|}
codegen.c:scope_new:
 3824|  1.39k|{
 3825|  1.39k|  static const codegen_scope codegen_scope_zero = { 0 };
 3826|  1.39k|  mrb_pool *pool = mrb_pool_open(mrb);
 3827|  1.39k|  codegen_scope *s = (codegen_scope*)mrb_pool_alloc(pool, sizeof(codegen_scope));
 3828|       |
 3829|  1.39k|  if (!s) {
  ------------------
  |  Branch (3829:7): [True: 0, False: 1.39k]
  ------------------
 3830|      0|    if (prev)
  ------------------
  |  Branch (3830:9): [True: 0, False: 0]
  ------------------
 3831|      0|      codegen_error(prev, "unexpected scope");
 3832|      0|    return NULL;
 3833|      0|  }
 3834|  1.39k|  *s = codegen_scope_zero;
 3835|  1.39k|  s->mrb = mrb;
 3836|  1.39k|  s->mpool = pool;
 3837|  1.39k|  if (!prev) return s;
  ------------------
  |  Branch (3837:7): [True: 466, False: 932]
  ------------------
 3838|    932|  s->prev = prev;
 3839|    932|  s->ainfo = 0;
 3840|    932|  s->mscope = 0;
 3841|       |
 3842|    932|  scope_add_irep(s);
 3843|       |
 3844|    932|  s->rcapa = 8;
 3845|    932|  s->reps = (mrb_irep**)mrb_malloc(mrb, sizeof(mrb_irep*)*s->rcapa);
 3846|       |
 3847|    932|  s->icapa = 1024;
 3848|    932|  s->iseq = (mrb_code*)mrb_malloc(mrb, sizeof(mrb_code)*s->icapa);
 3849|       |
 3850|    932|  s->pcapa = 32;
 3851|    932|  s->pool = (mrb_pool_value*)mrb_malloc(mrb, sizeof(mrb_pool_value)*s->pcapa);
 3852|       |
 3853|    932|  s->scapa = 256;
 3854|    932|  s->syms = (mrb_sym*)mrb_malloc(mrb, sizeof(mrb_sym)*s->scapa);
 3855|       |
 3856|    932|  s->lv = nlv;
 3857|    932|  s->sp += node_len(nlv)+1;        /* add self */
 3858|    932|  s->nlocals = s->sp;
 3859|    932|  if (nlv) {
  ------------------
  |  Branch (3859:7): [True: 466, False: 466]
  ------------------
 3860|    466|    mrb_sym *lv;
 3861|    466|    node *n = nlv;
 3862|    466|    size_t i = 0;
 3863|       |
 3864|    466|    s->irep->lv = lv = (mrb_sym*)mrb_malloc(mrb, sizeof(mrb_sym)*(s->nlocals-1));
 3865|  69.7k|    for (i=0, n=nlv; n; i++,n=n->cdr) {
  ------------------
  |  Branch (3865:22): [True: 69.2k, False: 466]
  ------------------
 3866|  69.2k|      lv[i] = lv_name(n);
  ------------------
  |  | 1231|  69.2k|#define lv_name(lv) nsym((lv)->car)
  |  |  ------------------
  |  |  |  | 1229|  69.2k|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  |  |  ------------------
  ------------------
 3867|  69.2k|    }
 3868|    466|    mrb_assert(i + 1 == s->nlocals);
  ------------------
  |  |   68|    466|#define mrb_assert(p) ((void)0)
  ------------------
 3869|    466|  }
 3870|    932|  s->ai = mrb_gc_arena_save(mrb);
  ------------------
  |  | 1306|    932|#define mrb_gc_arena_save(mrb) ((mrb)->gc.arena_idx)
  ------------------
 3871|       |
 3872|    932|  s->filename_sym = prev->filename_sym;
 3873|    932|  if (s->filename_sym) {
  ------------------
  |  Branch (3873:7): [True: 0, False: 932]
  ------------------
 3874|      0|    s->lines = (uint16_t*)mrb_malloc(mrb, sizeof(short)*s->icapa);
 3875|      0|  }
 3876|    932|  s->lineno = prev->lineno;
 3877|       |
 3878|       |  /* debug setting */
 3879|    932|  s->debug_start_pos = 0;
 3880|    932|  if (s->filename_sym) {
  ------------------
  |  Branch (3880:7): [True: 0, False: 932]
  ------------------
 3881|      0|    mrb_debug_info_alloc(mrb, s->irep);
 3882|      0|  }
 3883|    932|  else {
 3884|    932|    s->irep->debug_info = NULL;
 3885|    932|  }
 3886|    932|  s->parser = prev->parser;
 3887|    932|  s->filename_index = prev->filename_index;
 3888|       |
 3889|    932|  s->rlev = prev->rlev+1;
 3890|       |
 3891|    932|  return s;
 3892|  1.39k|}
codegen.c:codegen_error:
  113|     72|{
  114|     72|  if (!s) return;
  ------------------
  |  Branch (114:7): [True: 0, False: 72]
  ------------------
  115|     72|#ifndef MRB_NO_STDIO
  116|     72|  if (s->filename_sym && s->lineno) {
  ------------------
  |  Branch (116:7): [True: 0, False: 72]
  |  Branch (116:26): [True: 0, False: 0]
  ------------------
  117|      0|    const char *filename = mrb_sym_name_len(s->mrb, s->filename_sym, NULL);
  118|      0|    fprintf(stderr, "%s:%d: %s\n", filename, s->lineno, message);
  119|      0|  }
  120|     72|  else {
  121|     72|    fprintf(stderr, "%s\n", message);
  122|     72|  }
  123|     72|#endif
  124|    216|  while (s->prev) {
  ------------------
  |  Branch (124:10): [True: 144, False: 72]
  ------------------
  125|    144|    codegen_scope *tmp = s->prev;
  126|    144|    if (s->irep) {
  ------------------
  |  Branch (126:9): [True: 144, False: 0]
  ------------------
  127|    144|      mrb_free(s->mrb, s->iseq);
  128|    675|      for (int i=0; i<s->irep->plen; i++) {
  ------------------
  |  Branch (128:21): [True: 531, False: 144]
  ------------------
  129|    531|        mrb_pool_value *pv = &s->pool[i];
  130|    531|        if ((pv->tt & 0x3) == IREP_TT_STR || pv->tt == IREP_TT_BIGINT) {
  ------------------
  |  Branch (130:13): [True: 465, False: 66]
  |  Branch (130:46): [True: 0, False: 66]
  ------------------
  131|    465|          mrb_free(s->mrb, (void*)pv->u.str);
  132|    465|        }
  133|    531|      }
  134|    144|      mrb_free(s->mrb, s->pool);
  135|    144|      mrb_free(s->mrb, s->syms);
  136|    144|      mrb_free(s->mrb, s->catch_table);
  137|    144|      if (s->reps) {
  ------------------
  |  Branch (137:11): [True: 144, False: 0]
  ------------------
  138|       |        /* copied from mrb_irep_free() in state.c */
  139|    216|        for (int i=0; i<s->irep->rlen; i++) {
  ------------------
  |  Branch (139:23): [True: 72, False: 144]
  ------------------
  140|     72|          if (s->reps[i])
  ------------------
  |  Branch (140:15): [True: 72, False: 0]
  ------------------
  141|     72|            mrb_irep_decref(s->mrb, (mrb_irep*)s->reps[i]);
  142|     72|        }
  143|    144|        mrb_free(s->mrb, s->reps);
  144|    144|      }
  145|    144|      mrb_free(s->mrb, s->lines);
  146|    144|    }
  147|    144|    mrb_pool_close(s->mpool);
  148|    144|    s = tmp;
  149|    144|  }
  150|     72|  MRB_THROW(s->mrb->jmp);
  ------------------
  |  |   48|     72|#define MRB_THROW(buf) MRB_LONGJMP((buf)->impl, 1);
  |  |  ------------------
  |  |  |  |   41|    144|#define MRB_LONGJMP longjmp
  |  |  ------------------
  ------------------
  151|      0|}
codegen.c:scope_add_irep:
 3799|    932|{
 3800|    932|  mrb_irep *irep;
 3801|    932|  codegen_scope *prev = s->prev;
 3802|       |
 3803|    932|  if (prev->irep == NULL) {
  ------------------
  |  Branch (3803:7): [True: 466, False: 466]
  ------------------
 3804|    466|    irep = mrb_add_irep(s->mrb);
 3805|    466|    prev->irep = s->irep = irep;
 3806|    466|    return;
 3807|    466|  }
 3808|    466|  else {
 3809|    466|    if (prev->irep->rlen == UINT16_MAX) {
  ------------------
  |  Branch (3809:9): [True: 0, False: 466]
  ------------------
 3810|      0|      codegen_error(s, "too many nested blocks/methods");
 3811|      0|    }
 3812|    466|    s->irep = irep = mrb_add_irep(s->mrb);
 3813|    466|    if (prev->irep->rlen == prev->rcapa) {
  ------------------
  |  Branch (3813:9): [True: 0, False: 466]
  ------------------
 3814|      0|      prev->rcapa *= 2;
 3815|      0|      prev->reps = (mrb_irep**)codegen_realloc(s, prev->reps, sizeof(mrb_irep*)*prev->rcapa);
 3816|      0|    }
 3817|    466|    prev->reps[prev->irep->rlen] = irep;
 3818|    466|    prev->irep->rlen++;
 3819|    466|  }
 3820|    932|}
codegen.c:codegen_realloc:
  164|  7.65k|{
  165|  7.65k|  p = mrb_realloc_simple(s->mrb, p, len);
  166|       |
  167|  7.65k|  if (!p && len > 0) codegen_error(s, "mrb_realloc");
  ------------------
  |  Branch (167:7): [True: 947, False: 6.70k]
  |  Branch (167:13): [True: 0, False: 947]
  ------------------
  168|  7.65k|  return p;
  169|  7.65k|}
codegen.c:node_len:
 1217|  2.33k|{
 1218|  2.33k|  int n = 0;
 1219|       |
 1220|  71.5k|  while (tree) {
  ------------------
  |  Branch (1220:10): [True: 69.2k, False: 2.33k]
  ------------------
 1221|  69.2k|    n++;
 1222|  69.2k|    tree = tree->cdr;
 1223|  69.2k|  }
 1224|  2.33k|  return n;
 1225|  2.33k|}
codegen.c:codegen:
 2258|  1.58M|{
 2259|  1.58M|  int nt;
 2260|  1.58M|  int rlev = s->rlev;
 2261|       |
 2262|  1.58M|  if (!tree) {
  ------------------
  |  Branch (2262:7): [True: 0, False: 1.58M]
  ------------------
 2263|      0|    if (val) {
  ------------------
  |  Branch (2263:9): [True: 0, False: 0]
  ------------------
 2264|      0|      genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2265|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2266|      0|    }
 2267|      0|    return;
 2268|      0|  }
 2269|       |
 2270|  1.58M|  s->rlev++;
 2271|  1.58M|  if (s->rlev > MRB_CODEGEN_LEVEL_MAX) {
  ------------------
  |  |   24|  1.58M|#define MRB_CODEGEN_LEVEL_MAX 256
  ------------------
  |  Branch (2271:7): [True: 0, False: 1.58M]
  ------------------
 2272|      0|    codegen_error(s, "too complex expression");
 2273|      0|  }
 2274|  1.58M|  if (s->irep && s->filename_index != tree->filename_index) {
  ------------------
  |  Branch (2274:7): [True: 1.58M, False: 466]
  |  Branch (2274:18): [True: 0, False: 1.58M]
  ------------------
 2275|      0|    mrb_sym fname = mrb_parser_get_filename(s->parser, s->filename_index);
 2276|      0|    const char *filename = mrb_sym_name_len(s->mrb, fname, NULL);
 2277|       |
 2278|      0|    mrb_debug_info_append_file(s->mrb, s->irep->debug_info,
 2279|      0|                               filename, s->lines, s->debug_start_pos, s->pc);
 2280|      0|    s->debug_start_pos = s->pc;
 2281|      0|    s->filename_index = tree->filename_index;
 2282|      0|    s->filename_sym = mrb_parser_get_filename(s->parser, tree->filename_index);
 2283|      0|  }
 2284|       |
 2285|  1.58M|  nt = nint(tree->car);
  ------------------
  |  | 1227|  1.58M|#define nint(x) ((int)(intptr_t)(x))
  ------------------
 2286|  1.58M|  s->lineno = tree->lineno;
 2287|  1.58M|  tree = tree->cdr;
 2288|  1.58M|  switch (nt) {
 2289|   189k|  case NODE_BEGIN:
  ------------------
  |  Branch (2289:3): [True: 189k, False: 1.39M]
  ------------------
 2290|   189k|    if (val && !tree) {
  ------------------
  |  Branch (2290:9): [True: 160k, False: 28.9k]
  |  Branch (2290:16): [True: 9.21k, False: 151k]
  ------------------
 2291|  9.21k|      genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|  9.21k|#define cursp() (s->sp)
  ------------------
 2292|  9.21k|      push();
  ------------------
  |  |  986|  9.21k|#define push() push_n_(s,1)
  ------------------
 2293|  9.21k|    }
 2294|   576k|    while (tree) {
  ------------------
  |  Branch (2294:12): [True: 386k, False: 189k]
  ------------------
 2295|   386k|      codegen(s, tree->car, tree->cdr ? NOVAL : val);
  ------------------
  |  |  325|   224k|#define NOVAL  0
  ------------------
  |  Branch (2295:29): [True: 224k, False: 161k]
  ------------------
 2296|   386k|      tree = tree->cdr;
 2297|   386k|    }
 2298|   189k|    break;
 2299|       |
 2300|      0|  case NODE_RESCUE:
  ------------------
  |  Branch (2300:3): [True: 0, False: 1.58M]
  ------------------
 2301|      0|    {
 2302|      0|      int noexc;
 2303|      0|      uint32_t exend, pos1, pos2, tmp;
 2304|      0|      struct loopinfo *lp;
 2305|      0|      int catch_entry, begin, end;
 2306|       |
 2307|      0|      if (tree->car == NULL) goto exit;
  ------------------
  |  Branch (2307:11): [True: 0, False: 0]
  ------------------
 2308|      0|      lp = loop_push(s, LOOP_BEGIN);
 2309|      0|      lp->pc0 = new_label(s);
 2310|      0|      catch_entry = catch_handler_new(s);
 2311|      0|      begin = s->pc;
 2312|      0|      codegen(s, tree->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 2313|      0|      pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2314|      0|      lp->type = LOOP_RESCUE;
 2315|      0|      end = s->pc;
 2316|      0|      noexc = genjmp_0(s, OP_JMP);
  ------------------
  |  |  523|      0|#define genjmp_0(s,i) genjmp(s,i,JMPLINK_START)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2317|      0|      catch_handler_set(s, catch_entry, MRB_CATCH_RESCUE, begin, end, s->pc);
 2318|      0|      tree = tree->cdr;
 2319|      0|      exend = JMPLINK_START;
  ------------------
  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  ------------------
 2320|      0|      pos1 = JMPLINK_START;
  ------------------
  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  ------------------
 2321|      0|      if (tree->car) {
  ------------------
  |  Branch (2321:11): [True: 0, False: 0]
  ------------------
 2322|      0|        node *n2 = tree->car;
 2323|      0|        int exc = cursp();
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2324|       |
 2325|      0|        genop_1(s, OP_EXCEPT, exc);
 2326|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2327|      0|        while (n2) {
  ------------------
  |  Branch (2327:16): [True: 0, False: 0]
  ------------------
 2328|      0|          node *n3 = n2->car;
 2329|      0|          node *n4 = n3->car;
 2330|       |
 2331|      0|          dispatch(s, pos1);
 2332|      0|          pos2 = JMPLINK_START;
  ------------------
  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  ------------------
 2333|      0|          do {
 2334|      0|            if (n4 && n4->car && nint(n4->car->car) == NODE_SPLAT) {
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (2334:17): [True: 0, False: 0]
  |  Branch (2334:23): [True: 0, False: 0]
  |  Branch (2334:34): [True: 0, False: 0]
  ------------------
 2335|      0|              codegen(s, n4->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 2336|      0|              gen_move(s, cursp(), exc, 0);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2337|      0|              push_n(2); pop_n(2); /* space for one arg and a block */
  ------------------
  |  |  987|      0|#define push_n(n) push_n_(s,n)
  ------------------
                            push_n(2); pop_n(2); /* space for one arg and a block */
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 2338|      0|              pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2339|      0|              genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_SYM_2(s->mrb, __case_eqq)), 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
                            genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_SYM_2(s->mrb, __case_eqq)), 1);
  ------------------
  |  |   26|      0|#define MRB_SYM_2(mrb, name) MRB_SYM__##name
  ------------------
 2340|      0|            }
 2341|      0|            else {
 2342|      0|              if (n4) {
  ------------------
  |  Branch (2342:19): [True: 0, False: 0]
  ------------------
 2343|      0|                codegen(s, n4->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 2344|      0|              }
 2345|      0|              else {
 2346|      0|                genop_2(s, OP_GETCONST, cursp(), new_sym(s, MRB_SYM_2(s->mrb, StandardError)));
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
                              genop_2(s, OP_GETCONST, cursp(), new_sym(s, MRB_SYM_2(s->mrb, StandardError)));
  ------------------
  |  |   26|      0|#define MRB_SYM_2(mrb, name) MRB_SYM__##name
  ------------------
 2347|      0|                push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2348|      0|              }
 2349|      0|              pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2350|      0|              genop_2(s, OP_RESCUE, exc, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2351|      0|            }
 2352|      0|            tmp = genjmp2(s, OP_JMPIF, cursp(), pos2, val);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2353|      0|            pos2 = tmp;
 2354|      0|            if (n4) {
  ------------------
  |  Branch (2354:17): [True: 0, False: 0]
  ------------------
 2355|      0|              n4 = n4->cdr;
 2356|      0|            }
 2357|      0|          } while (n4);
  ------------------
  |  Branch (2357:20): [True: 0, False: 0]
  ------------------
 2358|      0|          pos1 = genjmp_0(s, OP_JMP);
  ------------------
  |  |  523|      0|#define genjmp_0(s,i) genjmp(s,i,JMPLINK_START)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2359|      0|          dispatch_linked(s, pos2);
 2360|       |
 2361|      0|          pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2362|      0|          if (n3->cdr->car) {
  ------------------
  |  Branch (2362:15): [True: 0, False: 0]
  ------------------
 2363|      0|            gen_assignment(s, n3->cdr->car, NULL, exc, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 2364|      0|          }
 2365|      0|          if (n3->cdr->cdr->car) {
  ------------------
  |  Branch (2365:15): [True: 0, False: 0]
  ------------------
 2366|      0|            codegen(s, n3->cdr->cdr->car, val);
 2367|      0|            if (val) pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
  |  Branch (2367:17): [True: 0, False: 0]
  ------------------
 2368|      0|          }
 2369|      0|          tmp = genjmp(s, OP_JMP, exend);
 2370|      0|          exend = tmp;
 2371|      0|          n2 = n2->cdr;
 2372|      0|          push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2373|      0|        }
 2374|      0|        if (pos1 != JMPLINK_START) {
  ------------------
  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  ------------------
  |  Branch (2374:13): [True: 0, False: 0]
  ------------------
 2375|      0|          dispatch(s, pos1);
 2376|      0|          genop_1(s, OP_RAISEIF, exc);
 2377|      0|        }
 2378|      0|      }
 2379|      0|      pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2380|      0|      tree = tree->cdr;
 2381|      0|      dispatch(s, noexc);
 2382|      0|      if (tree->car) {
  ------------------
  |  Branch (2382:11): [True: 0, False: 0]
  ------------------
 2383|      0|        codegen(s, tree->car, val);
 2384|      0|      }
 2385|      0|      else if (val) {
  ------------------
  |  Branch (2385:16): [True: 0, False: 0]
  ------------------
 2386|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2387|      0|      }
 2388|      0|      dispatch_linked(s, exend);
 2389|      0|      loop_pop(s, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 2390|      0|    }
 2391|      0|    break;
 2392|       |
 2393|      0|  case NODE_ENSURE:
  ------------------
  |  Branch (2393:3): [True: 0, False: 1.58M]
  ------------------
 2394|      0|    if (!tree->cdr || !tree->cdr->cdr ||
  ------------------
  |  Branch (2394:9): [True: 0, False: 0]
  |  Branch (2394:23): [True: 0, False: 0]
  ------------------
 2395|      0|        (nint(tree->cdr->cdr->car) == NODE_BEGIN &&
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (2395:10): [True: 0, False: 0]
  ------------------
 2396|      0|         tree->cdr->cdr->cdr)) {
  ------------------
  |  Branch (2396:10): [True: 0, False: 0]
  ------------------
 2397|      0|      int catch_entry, begin, end, target;
 2398|      0|      int idx;
 2399|       |
 2400|      0|      catch_entry = catch_handler_new(s);
 2401|      0|      begin = s->pc;
 2402|      0|      codegen(s, tree->car, val);
 2403|      0|      end = target = s->pc;
 2404|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2405|      0|      idx = cursp();
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2406|      0|      genop_1(s, OP_EXCEPT, idx);
 2407|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2408|      0|      codegen(s, tree->cdr->cdr, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 2409|      0|      pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2410|      0|      genop_1(s, OP_RAISEIF, idx);
 2411|      0|      pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2412|      0|      catch_handler_set(s, catch_entry, MRB_CATCH_ENSURE, begin, end, target);
 2413|      0|    }
 2414|      0|    else {                      /* empty ensure ignored */
 2415|      0|      codegen(s, tree->car, val);
 2416|      0|    }
 2417|      0|    break;
 2418|       |
 2419|      0|  case NODE_LAMBDA:
  ------------------
  |  Branch (2419:3): [True: 0, False: 1.58M]
  ------------------
 2420|      0|    if (val) {
  ------------------
  |  Branch (2420:9): [True: 0, False: 0]
  ------------------
 2421|      0|      int idx = lambda_body(s, tree, 1);
 2422|       |
 2423|      0|      genop_2(s, OP_LAMBDA, cursp(), idx);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2424|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2425|      0|    }
 2426|      0|    break;
 2427|       |
 2428|      0|  case NODE_BLOCK:
  ------------------
  |  Branch (2428:3): [True: 0, False: 1.58M]
  ------------------
 2429|      0|    if (val) {
  ------------------
  |  Branch (2429:9): [True: 0, False: 0]
  ------------------
 2430|      0|      int idx = lambda_body(s, tree, 1);
 2431|       |
 2432|      0|      genop_2(s, OP_BLOCK, cursp(), idx);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2433|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2434|      0|    }
 2435|      0|    break;
 2436|       |
 2437|  24.9k|  case NODE_IF:
  ------------------
  |  Branch (2437:3): [True: 24.9k, False: 1.56M]
  ------------------
 2438|  24.9k|    {
 2439|  24.9k|      uint32_t pos1, pos2;
 2440|  24.9k|      mrb_bool nil_p = FALSE;
  ------------------
  |  |   51|  24.9k|#  define FALSE 0
  ------------------
 2441|  24.9k|      node *elsepart = tree->cdr->cdr->car;
 2442|       |
 2443|  24.9k|      if (!tree->car) {
  ------------------
  |  Branch (2443:11): [True: 0, False: 24.9k]
  ------------------
 2444|      0|        codegen(s, elsepart, val);
 2445|      0|        goto exit;
 2446|      0|      }
 2447|  24.9k|      if (true_always(tree->car)) {
  ------------------
  |  Branch (2447:11): [True: 10.6k, False: 14.3k]
  ------------------
 2448|  10.6k|        codegen(s, tree->cdr->car, val);
 2449|  10.6k|        goto exit;
 2450|  10.6k|      }
 2451|  14.3k|      if (false_always(tree->car)) {
  ------------------
  |  Branch (2451:11): [True: 0, False: 14.3k]
  ------------------
 2452|      0|        codegen(s, elsepart, val);
 2453|      0|        goto exit;
 2454|      0|      }
 2455|  14.3k|      if (nint(tree->car->car) == NODE_CALL) {
  ------------------
  |  | 1227|  14.3k|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (2455:11): [True: 0, False: 14.3k]
  ------------------
 2456|      0|        node *n = tree->car->cdr;
 2457|      0|        mrb_sym mid = nsym(n->cdr->car);
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 2458|      0|        mrb_sym sym_nil_p = MRB_SYM_Q_2(s->mrb, nil);
  ------------------
  |  |   24|      0|#define MRB_SYM_Q_2(mrb, name) MRB_SYM_Q__##name
  ------------------
 2459|      0|        if (mid == sym_nil_p && n->cdr->cdr->car == NULL) {
  ------------------
  |  Branch (2459:13): [True: 0, False: 0]
  |  Branch (2459:33): [True: 0, False: 0]
  ------------------
 2460|      0|          nil_p = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 2461|      0|          codegen(s, n->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 2462|      0|        }
 2463|      0|      }
 2464|  14.3k|      if (!nil_p) {
  ------------------
  |  Branch (2464:11): [True: 14.3k, False: 0]
  ------------------
 2465|  14.3k|        codegen(s, tree->car, VAL);
  ------------------
  |  |  326|  14.3k|#define VAL    1
  ------------------
 2466|  14.3k|      }
 2467|  14.3k|      pop();
  ------------------
  |  |  988|  14.3k|#define pop() pop_n_(s,1)
  ------------------
 2468|  14.3k|      if (val || tree->cdr->car) {
  ------------------
  |  Branch (2468:11): [True: 3.73k, False: 10.6k]
  |  Branch (2468:18): [True: 10.6k, False: 0]
  ------------------
 2469|  14.3k|        if (nil_p) {
  ------------------
  |  Branch (2469:13): [True: 0, False: 14.3k]
  ------------------
 2470|      0|          pos2 = genjmp2_0(s, OP_JMPNIL, cursp(), val);
  ------------------
  |  |  583|      0|#define genjmp2_0(s,i,a,val) genjmp2(s,i,a,JMPLINK_START,val)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2471|      0|          pos1 = genjmp_0(s, OP_JMP);
  ------------------
  |  |  523|      0|#define genjmp_0(s,i) genjmp(s,i,JMPLINK_START)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2472|      0|          dispatch(s, pos2);
 2473|      0|        }
 2474|  14.3k|        else {
 2475|  14.3k|          pos1 = genjmp2_0(s, OP_JMPNOT, cursp(), val);
  ------------------
  |  |  583|  14.3k|#define genjmp2_0(s,i,a,val) genjmp2(s,i,a,JMPLINK_START,val)
  |  |  ------------------
  |  |  |  |  494|  14.3k|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2476|  14.3k|        }
 2477|  14.3k|        codegen(s, tree->cdr->car, val);
 2478|  14.3k|        if (val) pop();
  ------------------
  |  |  988|  3.72k|#define pop() pop_n_(s,1)
  ------------------
  |  Branch (2478:13): [True: 3.72k, False: 10.6k]
  ------------------
 2479|  14.3k|        if (elsepart || val) {
  ------------------
  |  Branch (2479:13): [True: 14.3k, False: 0]
  |  Branch (2479:25): [True: 0, False: 0]
  ------------------
 2480|  14.3k|          pos2 = genjmp_0(s, OP_JMP);
  ------------------
  |  |  523|  14.3k|#define genjmp_0(s,i) genjmp(s,i,JMPLINK_START)
  |  |  ------------------
  |  |  |  |  494|  14.3k|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2481|  14.3k|          dispatch(s, pos1);
 2482|  14.3k|          codegen(s, elsepart, val);
 2483|  14.3k|          dispatch(s, pos2);
 2484|  14.3k|        }
 2485|      4|        else {
 2486|      4|          dispatch(s, pos1);
 2487|      4|        }
 2488|  14.3k|      }
 2489|      0|      else {                    /* empty then-part */
 2490|      0|        if (elsepart) {
  ------------------
  |  Branch (2490:13): [True: 0, False: 0]
  ------------------
 2491|      0|          if (nil_p) {
  ------------------
  |  Branch (2491:15): [True: 0, False: 0]
  ------------------
 2492|      0|            pos1 = genjmp2_0(s, OP_JMPNIL, cursp(), val);
  ------------------
  |  |  583|      0|#define genjmp2_0(s,i,a,val) genjmp2(s,i,a,JMPLINK_START,val)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2493|      0|          }
 2494|      0|          else {
 2495|      0|            pos1 = genjmp2_0(s, OP_JMPIF, cursp(), val);
  ------------------
  |  |  583|      0|#define genjmp2_0(s,i,a,val) genjmp2(s,i,a,JMPLINK_START,val)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2496|      0|          }
 2497|      0|          codegen(s, elsepart, val);
 2498|      0|          dispatch(s, pos1);
 2499|      0|        }
 2500|      0|        else if (val && !nil_p) {
  ------------------
  |  Branch (2500:18): [True: 0, False: 0]
  |  Branch (2500:25): [True: 0, False: 0]
  ------------------
 2501|      0|          genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2502|      0|          push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2503|      0|        }
 2504|      0|      }
 2505|  14.3k|    }
 2506|      0|    break;
 2507|       |
 2508|  4.33k|  case NODE_AND:
  ------------------
  |  Branch (2508:3): [True: 4.33k, False: 1.58M]
  ------------------
 2509|  4.33k|    {
 2510|  4.33k|      uint32_t pos;
 2511|       |
 2512|  4.33k|      if (true_always(tree->car)) {
  ------------------
  |  Branch (2512:11): [True: 739, False: 3.59k]
  ------------------
 2513|    739|        codegen(s, tree->cdr, val);
 2514|    739|        goto exit;
 2515|    739|      }
 2516|  3.59k|      if (false_always(tree->car)) {
  ------------------
  |  Branch (2516:11): [True: 0, False: 3.59k]
  ------------------
 2517|      0|        codegen(s, tree->car, val);
 2518|      0|        goto exit;
 2519|      0|      }
 2520|  3.59k|      codegen(s, tree->car, VAL);
  ------------------
  |  |  326|  3.59k|#define VAL    1
  ------------------
 2521|  3.59k|      pop();
  ------------------
  |  |  988|  3.59k|#define pop() pop_n_(s,1)
  ------------------
 2522|  3.59k|      pos = genjmp2_0(s, OP_JMPNOT, cursp(), val);
  ------------------
  |  |  583|  3.59k|#define genjmp2_0(s,i,a,val) genjmp2(s,i,a,JMPLINK_START,val)
  |  |  ------------------
  |  |  |  |  494|  3.59k|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2523|  3.59k|      codegen(s, tree->cdr, val);
 2524|  3.59k|      dispatch(s, pos);
 2525|  3.59k|    }
 2526|      0|    break;
 2527|       |
 2528|  1.78k|  case NODE_OR:
  ------------------
  |  Branch (2528:3): [True: 1.78k, False: 1.58M]
  ------------------
 2529|  1.78k|    {
 2530|  1.78k|      uint32_t pos;
 2531|       |
 2532|  1.78k|      if (true_always(tree->car)) {
  ------------------
  |  Branch (2532:11): [True: 376, False: 1.40k]
  ------------------
 2533|    376|        codegen(s, tree->car, val);
 2534|    376|        goto exit;
 2535|    376|      }
 2536|  1.40k|      if (false_always(tree->car)) {
  ------------------
  |  Branch (2536:11): [True: 0, False: 1.40k]
  ------------------
 2537|      0|        codegen(s, tree->cdr, val);
 2538|      0|        goto exit;
 2539|      0|      }
 2540|  1.40k|      codegen(s, tree->car, VAL);
  ------------------
  |  |  326|  1.40k|#define VAL    1
  ------------------
 2541|  1.40k|      pop();
  ------------------
  |  |  988|  1.40k|#define pop() pop_n_(s,1)
  ------------------
 2542|  1.40k|      pos = genjmp2_0(s, OP_JMPIF, cursp(), val);
  ------------------
  |  |  583|  1.40k|#define genjmp2_0(s,i,a,val) genjmp2(s,i,a,JMPLINK_START,val)
  |  |  ------------------
  |  |  |  |  494|  1.40k|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2543|  1.40k|      codegen(s, tree->cdr, val);
 2544|  1.40k|      dispatch(s, pos);
 2545|  1.40k|    }
 2546|      0|    break;
 2547|       |
 2548|      0|  case NODE_WHILE:
  ------------------
  |  Branch (2548:3): [True: 0, False: 1.58M]
  ------------------
 2549|      0|  case NODE_UNTIL:
  ------------------
  |  Branch (2549:3): [True: 0, False: 1.58M]
  ------------------
 2550|      0|    {
 2551|      0|      if (true_always(tree->car)) {
  ------------------
  |  Branch (2551:11): [True: 0, False: 0]
  ------------------
 2552|      0|        if (nt == NODE_UNTIL) {
  ------------------
  |  Branch (2552:13): [True: 0, False: 0]
  ------------------
 2553|      0|          if (val) {
  ------------------
  |  Branch (2553:15): [True: 0, False: 0]
  ------------------
 2554|      0|            genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2555|      0|            push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2556|      0|          }
 2557|      0|          goto exit;
 2558|      0|        }
 2559|      0|      }
 2560|      0|      else if (false_always(tree->car)) {
  ------------------
  |  Branch (2560:16): [True: 0, False: 0]
  ------------------
 2561|      0|        if (nt == NODE_WHILE) {
  ------------------
  |  Branch (2561:13): [True: 0, False: 0]
  ------------------
 2562|      0|          if (val) {
  ------------------
  |  Branch (2562:15): [True: 0, False: 0]
  ------------------
 2563|      0|            genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2564|      0|            push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2565|      0|          }
 2566|      0|          goto exit;
 2567|      0|        }
 2568|      0|      }
 2569|       |
 2570|      0|      uint32_t pos = JMPLINK_START;
  ------------------
  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  ------------------
 2571|      0|      struct loopinfo *lp = loop_push(s, LOOP_NORMAL);
 2572|       |
 2573|      0|      if (!val) lp->reg = -1;
  ------------------
  |  Branch (2573:11): [True: 0, False: 0]
  ------------------
 2574|      0|      lp->pc0 = new_label(s);
 2575|      0|      codegen(s, tree->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 2576|      0|      pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2577|      0|      if (nt == NODE_WHILE) {
  ------------------
  |  Branch (2577:11): [True: 0, False: 0]
  ------------------
 2578|      0|        pos = genjmp2_0(s, OP_JMPNOT, cursp(), NOVAL);
  ------------------
  |  |  583|      0|#define genjmp2_0(s,i,a,val) genjmp2(s,i,a,JMPLINK_START,val)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2579|      0|      }
 2580|      0|      else {
 2581|      0|        pos = genjmp2_0(s, OP_JMPIF, cursp(), NOVAL);
  ------------------
  |  |  583|      0|#define genjmp2_0(s,i,a,val) genjmp2(s,i,a,JMPLINK_START,val)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2582|      0|      }
 2583|      0|      lp->pc1 = new_label(s);
 2584|      0|      codegen(s, tree->cdr, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 2585|      0|      genjmp(s, OP_JMP, lp->pc0);
 2586|      0|      dispatch(s, pos);
 2587|      0|      loop_pop(s, val);
 2588|      0|    }
 2589|      0|    break;
 2590|       |
 2591|      0|  case NODE_FOR:
  ------------------
  |  Branch (2591:3): [True: 0, False: 1.58M]
  ------------------
 2592|      0|    for_body(s, tree);
 2593|      0|    if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (2593:9): [True: 0, False: 0]
  ------------------
 2594|      0|    break;
 2595|       |
 2596|      0|  case NODE_CASE:
  ------------------
  |  Branch (2596:3): [True: 0, False: 1.58M]
  ------------------
 2597|      0|    {
 2598|      0|      int head = 0;
 2599|      0|      uint32_t pos1, pos2, pos3, tmp;
 2600|      0|      node *n;
 2601|       |
 2602|      0|      pos3 = JMPLINK_START;
  ------------------
  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  ------------------
 2603|      0|      if (tree->car) {
  ------------------
  |  Branch (2603:11): [True: 0, False: 0]
  ------------------
 2604|      0|        head = cursp();
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2605|      0|        codegen(s, tree->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 2606|      0|      }
 2607|      0|      tree = tree->cdr;
 2608|      0|      while (tree) {
  ------------------
  |  Branch (2608:14): [True: 0, False: 0]
  ------------------
 2609|      0|        n = tree->car->car;
 2610|      0|        pos1 = pos2 = JMPLINK_START;
  ------------------
  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  ------------------
 2611|      0|        while (n) {
  ------------------
  |  Branch (2611:16): [True: 0, False: 0]
  ------------------
 2612|      0|          codegen(s, n->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 2613|      0|          if (head) {
  ------------------
  |  Branch (2613:15): [True: 0, False: 0]
  ------------------
 2614|      0|            gen_move(s, cursp(), head, 0);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2615|      0|            push(); push(); pop(); pop(); pop();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
                          push(); push(); pop(); pop(); pop();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
                          push(); push(); pop(); pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
                          push(); push(); pop(); pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
                          push(); push(); pop(); pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2616|      0|            if (nint(n->car->car) == NODE_SPLAT) {
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (2616:17): [True: 0, False: 0]
  ------------------
 2617|      0|              genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_SYM_2(s->mrb, __case_eqq)), 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
                            genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_SYM_2(s->mrb, __case_eqq)), 1);
  ------------------
  |  |   26|      0|#define MRB_SYM_2(mrb, name) MRB_SYM__##name
  ------------------
 2618|      0|            }
 2619|      0|            else {
 2620|      0|              genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_OPSYM_2(s->mrb, eqq)), 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
                            genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_OPSYM_2(s->mrb, eqq)), 1);
  ------------------
  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
 2621|      0|            }
 2622|      0|          }
 2623|      0|          else {
 2624|      0|            pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2625|      0|          }
 2626|      0|          tmp = genjmp2(s, OP_JMPIF, cursp(), pos2, !head);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2627|      0|          pos2 = tmp;
 2628|      0|          n = n->cdr;
 2629|      0|        }
 2630|      0|        if (tree->car->car) {
  ------------------
  |  Branch (2630:13): [True: 0, False: 0]
  ------------------
 2631|      0|          pos1 = genjmp_0(s, OP_JMP);
  ------------------
  |  |  523|      0|#define genjmp_0(s,i) genjmp(s,i,JMPLINK_START)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2632|      0|          dispatch_linked(s, pos2);
 2633|      0|        }
 2634|      0|        codegen(s, tree->car->cdr, val);
 2635|      0|        if (val) pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
  |  Branch (2635:13): [True: 0, False: 0]
  ------------------
 2636|      0|        tmp = genjmp(s, OP_JMP, pos3);
 2637|      0|        pos3 = tmp;
 2638|      0|        dispatch(s, pos1);
 2639|      0|        tree = tree->cdr;
 2640|      0|      }
 2641|      0|      if (val) {
  ------------------
  |  Branch (2641:11): [True: 0, False: 0]
  ------------------
 2642|      0|        uint32_t pos = cursp();
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2643|      0|        genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2644|      0|        if (pos3 != JMPLINK_START) dispatch_linked(s, pos3);
  ------------------
  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  ------------------
  |  Branch (2644:13): [True: 0, False: 0]
  ------------------
 2645|      0|        if (head) pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
  |  Branch (2645:13): [True: 0, False: 0]
  ------------------
 2646|      0|        if (cursp() != pos) {
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
  |  Branch (2646:13): [True: 0, False: 0]
  ------------------
 2647|      0|          gen_move(s, cursp(), pos, 0);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2648|      0|        }
 2649|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2650|      0|      }
 2651|      0|      else {
 2652|      0|        if (pos3 != JMPLINK_START) {
  ------------------
  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  ------------------
  |  Branch (2652:13): [True: 0, False: 0]
  ------------------
 2653|      0|          dispatch_linked(s, pos3);
 2654|      0|        }
 2655|      0|        if (head) {
  ------------------
  |  Branch (2655:13): [True: 0, False: 0]
  ------------------
 2656|      0|          pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2657|      0|        }
 2658|      0|      }
 2659|      0|    }
 2660|      0|    break;
 2661|       |
 2662|    466|  case NODE_SCOPE:
  ------------------
  |  Branch (2662:3): [True: 466, False: 1.58M]
  ------------------
 2663|    466|    scope_body(s, tree, NOVAL);
  ------------------
  |  |  325|    466|#define NOVAL  0
  ------------------
 2664|    466|    break;
 2665|       |
 2666|    394|  case NODE_FCALL:
  ------------------
  |  Branch (2666:3): [True: 394, False: 1.58M]
  ------------------
 2667|   154k|  case NODE_CALL:
  ------------------
  |  Branch (2667:3): [True: 154k, False: 1.43M]
  ------------------
 2668|   154k|    gen_call(s, tree, val, 0);
 2669|   154k|    break;
 2670|      0|  case NODE_SCALL:
  ------------------
  |  Branch (2670:3): [True: 0, False: 1.58M]
  ------------------
 2671|      0|    gen_call(s, tree, val, 1);
 2672|      0|    break;
 2673|       |
 2674|      0|  case NODE_DOT2:
  ------------------
  |  Branch (2674:3): [True: 0, False: 1.58M]
  ------------------
 2675|      0|    codegen(s, tree->car, val);
 2676|      0|    codegen(s, tree->cdr, val);
 2677|      0|    if (val) {
  ------------------
  |  Branch (2677:9): [True: 0, False: 0]
  ------------------
 2678|      0|      pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
                    pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2679|      0|      genop_1(s, OP_RANGE_INC, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2680|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2681|      0|    }
 2682|      0|    break;
 2683|       |
 2684|      0|  case NODE_DOT3:
  ------------------
  |  Branch (2684:3): [True: 0, False: 1.58M]
  ------------------
 2685|      0|    codegen(s, tree->car, val);
 2686|      0|    codegen(s, tree->cdr, val);
 2687|      0|    if (val) {
  ------------------
  |  Branch (2687:9): [True: 0, False: 0]
  ------------------
 2688|      0|      pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
                    pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2689|      0|      genop_1(s, OP_RANGE_EXC, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2690|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2691|      0|    }
 2692|      0|    break;
 2693|       |
 2694|    774|  case NODE_COLON2:
  ------------------
  |  Branch (2694:3): [True: 774, False: 1.58M]
  ------------------
 2695|    774|    {
 2696|    774|      int sym = new_sym(s, nsym(tree->cdr));
  ------------------
  |  | 1229|    774|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 2697|       |
 2698|    774|      codegen(s, tree->car, VAL);
  ------------------
  |  |  326|    774|#define VAL    1
  ------------------
 2699|    774|      pop();
  ------------------
  |  |  988|    774|#define pop() pop_n_(s,1)
  ------------------
 2700|    774|      genop_2(s, OP_GETMCNST, cursp(), sym);
  ------------------
  |  |  990|    774|#define cursp() (s->sp)
  ------------------
 2701|    774|      if (val) push();
  ------------------
  |  |  986|    774|#define push() push_n_(s,1)
  ------------------
  |  Branch (2701:11): [True: 774, False: 0]
  ------------------
 2702|    774|    }
 2703|    774|    break;
 2704|       |
 2705|      0|  case NODE_COLON3:
  ------------------
  |  Branch (2705:3): [True: 0, False: 1.58M]
  ------------------
 2706|      0|    {
 2707|      0|      int sym = new_sym(s, nsym(tree));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 2708|       |
 2709|      0|      genop_1(s, OP_OCLASS, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2710|      0|      genop_2(s, OP_GETMCNST, cursp(), sym);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2711|      0|      if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (2711:11): [True: 0, False: 0]
  ------------------
 2712|      0|    }
 2713|      0|    break;
 2714|       |
 2715|  46.4k|  case NODE_ARRAY:
  ------------------
  |  Branch (2715:3): [True: 46.4k, False: 1.54M]
  ------------------
 2716|  46.4k|    {
 2717|  46.4k|      int n;
 2718|       |
 2719|  46.4k|      n = gen_values(s, tree, val, 0);
 2720|  46.4k|      if (val) {
  ------------------
  |  Branch (2720:11): [True: 46.4k, False: 0]
  ------------------
 2721|  46.4k|        if (n >= 0) {
  ------------------
  |  Branch (2721:13): [True: 44.2k, False: 2.15k]
  ------------------
 2722|  44.2k|          pop_n(n);
  ------------------
  |  |  989|  44.2k|#define pop_n(n) pop_n_(s,n)
  ------------------
 2723|  44.2k|          genop_2(s, OP_ARRAY, cursp(), n);
  ------------------
  |  |  990|  44.2k|#define cursp() (s->sp)
  ------------------
 2724|  44.2k|        }
 2725|  46.4k|        push();
  ------------------
  |  |  986|  46.4k|#define push() push_n_(s,1)
  ------------------
 2726|  46.4k|      }
 2727|  46.4k|    }
 2728|  46.4k|    break;
 2729|       |
 2730|  2.01k|  case NODE_HASH:
  ------------------
  |  Branch (2730:3): [True: 2.01k, False: 1.58M]
  ------------------
 2731|  2.01k|  case NODE_KW_HASH:
  ------------------
  |  Branch (2731:3): [True: 0, False: 1.58M]
  ------------------
 2732|  2.01k|    {
 2733|  2.01k|      int nk = gen_hash(s, tree, val, GEN_LIT_ARY_MAX);
  ------------------
  |  | 1569|  2.01k|#define GEN_LIT_ARY_MAX 64
  ------------------
 2734|  2.01k|      if (val && nk >= 0) {
  ------------------
  |  Branch (2734:11): [True: 2.01k, False: 0]
  |  Branch (2734:18): [True: 1.48k, False: 533]
  ------------------
 2735|  1.48k|        pop_n(nk*2);
  ------------------
  |  |  989|  1.48k|#define pop_n(n) pop_n_(s,n)
  ------------------
 2736|  1.48k|        genop_2(s, OP_HASH, cursp(), nk);
  ------------------
  |  |  990|  1.48k|#define cursp() (s->sp)
  ------------------
 2737|  1.48k|        push();
  ------------------
  |  |  986|  1.48k|#define push() push_n_(s,1)
  ------------------
 2738|  1.48k|      }
 2739|  2.01k|    }
 2740|  2.01k|    break;
 2741|       |
 2742|      0|  case NODE_SPLAT:
  ------------------
  |  Branch (2742:3): [True: 0, False: 1.58M]
  ------------------
 2743|      0|    codegen(s, tree, val);
 2744|      0|    break;
 2745|       |
 2746|   119k|  case NODE_ASGN:
  ------------------
  |  Branch (2746:3): [True: 119k, False: 1.46M]
  ------------------
 2747|   119k|    gen_assignment(s, tree->car, tree->cdr, 0, val);
 2748|   119k|    break;
 2749|       |
 2750|      0|  case NODE_MASGN:
  ------------------
  |  Branch (2750:3): [True: 0, False: 1.58M]
  ------------------
 2751|      0|    {
 2752|      0|      int len = 0, n = 0, post = 0;
 2753|      0|      node *t = tree->cdr, *p;
 2754|      0|      int rhs = cursp();
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2755|       |
 2756|      0|      if (!val && nint(t->car) == NODE_ARRAY && t->cdr && nosplat(t->cdr)) {
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (2756:11): [True: 0, False: 0]
  |  Branch (2756:19): [True: 0, False: 0]
  |  Branch (2756:49): [True: 0, False: 0]
  |  Branch (2756:59): [True: 0, False: 0]
  ------------------
 2757|       |        /* fixed rhs */
 2758|      0|        t = t->cdr;
 2759|      0|        while (t) {
  ------------------
  |  Branch (2759:16): [True: 0, False: 0]
  ------------------
 2760|      0|          codegen(s, t->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 2761|      0|          len++;
 2762|      0|          t = t->cdr;
 2763|      0|        }
 2764|      0|        tree = tree->car;
 2765|      0|        if (tree->car) {                /* pre */
  ------------------
  |  Branch (2765:13): [True: 0, False: 0]
  ------------------
 2766|      0|          t = tree->car;
 2767|      0|          n = 0;
 2768|      0|          while (t) {
  ------------------
  |  Branch (2768:18): [True: 0, False: 0]
  ------------------
 2769|      0|            if (n < len) {
  ------------------
  |  Branch (2769:17): [True: 0, False: 0]
  ------------------
 2770|      0|              gen_assignment(s, t->car, NULL, rhs+n, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 2771|      0|              n++;
 2772|      0|            }
 2773|      0|            else {
 2774|      0|              genop_1(s, OP_LOADNIL, rhs+n);
 2775|      0|              gen_assignment(s, t->car, NULL, rhs+n, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 2776|      0|            }
 2777|      0|            t = t->cdr;
 2778|      0|          }
 2779|      0|        }
 2780|      0|        t = tree->cdr;
 2781|      0|        if (t) {
  ------------------
  |  Branch (2781:13): [True: 0, False: 0]
  ------------------
 2782|      0|          if (t->cdr) {         /* post count */
  ------------------
  |  Branch (2782:15): [True: 0, False: 0]
  ------------------
 2783|      0|            p = t->cdr->car;
 2784|      0|            while (p) {
  ------------------
  |  Branch (2784:20): [True: 0, False: 0]
  ------------------
 2785|      0|              post++;
 2786|      0|              p = p->cdr;
 2787|      0|            }
 2788|      0|          }
 2789|      0|          if (t->car) {         /* rest (len - pre - post) */
  ------------------
  |  Branch (2789:15): [True: 0, False: 0]
  ------------------
 2790|      0|            int rn;
 2791|       |
 2792|      0|            if (len < post + n) {
  ------------------
  |  Branch (2792:17): [True: 0, False: 0]
  ------------------
 2793|      0|              rn = 0;
 2794|      0|            }
 2795|      0|            else {
 2796|      0|              rn = len - post - n;
 2797|      0|            }
 2798|      0|            if (cursp() == rhs+n) {
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
  |  Branch (2798:17): [True: 0, False: 0]
  ------------------
 2799|      0|              genop_2(s, OP_ARRAY, cursp(), rn);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2800|      0|            }
 2801|      0|            else {
 2802|      0|              genop_3(s, OP_ARRAY2, cursp(), rhs+n, rn);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2803|      0|            }
 2804|      0|            gen_assignment(s, t->car, NULL, cursp(), NOVAL);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
                          gen_assignment(s, t->car, NULL, cursp(), NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 2805|      0|            n += rn;
 2806|      0|          }
 2807|      0|          if (t->cdr && t->cdr->car) {
  ------------------
  |  Branch (2807:15): [True: 0, False: 0]
  |  Branch (2807:25): [True: 0, False: 0]
  ------------------
 2808|      0|            t = t->cdr->car;
 2809|      0|            while (t) {
  ------------------
  |  Branch (2809:20): [True: 0, False: 0]
  ------------------
 2810|      0|              if (n<len) {
  ------------------
  |  Branch (2810:19): [True: 0, False: 0]
  ------------------
 2811|      0|                gen_assignment(s, t->car, NULL, rhs+n, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 2812|      0|              }
 2813|      0|              else {
 2814|      0|                genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2815|      0|                gen_assignment(s, t->car, NULL, cursp(), NOVAL);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
                              gen_assignment(s, t->car, NULL, cursp(), NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 2816|      0|              }
 2817|      0|              t = t->cdr;
 2818|      0|              n++;
 2819|      0|            }
 2820|      0|          }
 2821|      0|        }
 2822|      0|        pop_n(len);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 2823|      0|      }
 2824|      0|      else {
 2825|       |        /* variable rhs */
 2826|      0|        codegen(s, t, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 2827|      0|        gen_massignment(s, tree->car, rhs, val);
 2828|      0|        if (!val) {
  ------------------
  |  Branch (2828:13): [True: 0, False: 0]
  ------------------
 2829|      0|          pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2830|      0|        }
 2831|      0|      }
 2832|      0|    }
 2833|      0|    break;
 2834|       |
 2835|  20.1k|  case NODE_OP_ASGN:
  ------------------
  |  Branch (2835:3): [True: 20.1k, False: 1.56M]
  ------------------
 2836|  20.1k|    {
 2837|  20.1k|      mrb_sym sym = nsym(tree->cdr->car);
  ------------------
  |  | 1229|  20.1k|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 2838|  20.1k|      mrb_int len;
 2839|  20.1k|      const char *name = mrb_sym_name_len(s->mrb, sym, &len);
 2840|  20.1k|      int idx, callargs = -1, vsp = -1;
 2841|       |
 2842|  20.1k|      if ((len == 2 && name[0] == '|' && name[1] == '|') &&
  ------------------
  |  Branch (2842:12): [True: 20.1k, False: 0]
  |  Branch (2842:24): [True: 20.1k, False: 0]
  |  Branch (2842:42): [True: 20.1k, False: 0]
  ------------------
 2843|  20.1k|          (nint(tree->car->car) == NODE_CONST ||
  ------------------
  |  | 1227|  20.1k|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (2843:12): [True: 0, False: 20.1k]
  ------------------
 2844|  20.1k|           nint(tree->car->car) == NODE_CVAR)) {
  ------------------
  |  | 1227|  20.1k|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (2844:12): [True: 0, False: 20.1k]
  ------------------
 2845|      0|        int catch_entry, begin, end;
 2846|      0|        int noexc, exc;
 2847|      0|        struct loopinfo *lp;
 2848|       |
 2849|      0|        lp = loop_push(s, LOOP_BEGIN);
 2850|      0|        lp->pc0 = new_label(s);
 2851|      0|        catch_entry = catch_handler_new(s);
 2852|      0|        begin = s->pc;
 2853|      0|        exc = cursp();
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2854|      0|        codegen(s, tree->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 2855|      0|        end = s->pc;
 2856|      0|        noexc = genjmp_0(s, OP_JMP);
  ------------------
  |  |  523|      0|#define genjmp_0(s,i) genjmp(s,i,JMPLINK_START)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 2857|      0|        lp->type = LOOP_RESCUE;
 2858|      0|        catch_handler_set(s, catch_entry, MRB_CATCH_RESCUE, begin, end, s->pc);
 2859|      0|        genop_1(s, OP_EXCEPT, exc);
 2860|      0|        genop_1(s, OP_LOADF, exc);
 2861|      0|        dispatch(s, noexc);
 2862|      0|        loop_pop(s, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 2863|      0|      }
 2864|  20.1k|      else if (nint(tree->car->car) == NODE_CALL) {
  ------------------
  |  | 1227|  20.1k|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (2864:16): [True: 0, False: 20.1k]
  ------------------
 2865|      0|        node *n = tree->car->cdr;
 2866|      0|        int base, i, nargs = 0;
 2867|      0|        callargs = 0;
 2868|       |
 2869|      0|        if (val) {
  ------------------
  |  Branch (2869:13): [True: 0, False: 0]
  ------------------
 2870|      0|          vsp = cursp();
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2871|      0|          push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2872|      0|        }
 2873|      0|        codegen(s, n->car, VAL);   /* receiver */
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 2874|      0|        idx = new_sym(s, nsym(n->cdr->car));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 2875|      0|        base = cursp()-1;
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2876|      0|        if (n->cdr->cdr->car) {
  ------------------
  |  Branch (2876:13): [True: 0, False: 0]
  ------------------
 2877|      0|          nargs = gen_values(s, n->cdr->cdr->car->car, VAL, 13);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 2878|      0|          if (nargs >= 0) {
  ------------------
  |  Branch (2878:15): [True: 0, False: 0]
  ------------------
 2879|      0|            callargs = nargs;
 2880|      0|          }
 2881|      0|          else { /* varargs */
 2882|      0|            push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2883|      0|            nargs = 1;
 2884|      0|            callargs = CALL_MAXARGS;
  ------------------
  |  | 1568|      0|#define CALL_MAXARGS 15
  ------------------
 2885|      0|          }
 2886|      0|        }
 2887|       |        /* copy receiver and arguments */
 2888|      0|        gen_move(s, cursp(), base, 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2889|      0|        for (i=0; i<nargs; i++) {
  ------------------
  |  Branch (2889:19): [True: 0, False: 0]
  ------------------
 2890|      0|          gen_move(s, cursp()+i+1, base+i+1, 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2891|      0|        }
 2892|      0|        push_n(nargs+2);pop_n(nargs+2); /* space for receiver, arguments and a block */
  ------------------
  |  |  987|      0|#define push_n(n) push_n_(s,n)
  ------------------
                      push_n(nargs+2);pop_n(nargs+2); /* space for receiver, arguments and a block */
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 2893|      0|        genop_3(s, OP_SEND, cursp(), idx, callargs);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2894|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2895|      0|      }
 2896|  20.1k|      else {
 2897|  20.1k|        codegen(s, tree->car, VAL);
  ------------------
  |  |  326|  20.1k|#define VAL    1
  ------------------
 2898|  20.1k|      }
 2899|  20.1k|      if (len == 2 &&
  ------------------
  |  Branch (2899:11): [True: 20.1k, False: 0]
  ------------------
 2900|  20.1k|          ((name[0] == '|' && name[1] == '|') ||
  ------------------
  |  Branch (2900:13): [True: 20.1k, False: 0]
  |  Branch (2900:31): [True: 20.1k, False: 0]
  ------------------
 2901|  20.1k|           (name[0] == '&' && name[1] == '&'))) {
  ------------------
  |  Branch (2901:13): [True: 0, False: 0]
  |  Branch (2901:31): [True: 0, False: 0]
  ------------------
 2902|  20.1k|        uint32_t pos;
 2903|       |
 2904|  20.1k|        pop();
  ------------------
  |  |  988|  20.1k|#define pop() pop_n_(s,1)
  ------------------
 2905|  20.1k|        if (val) {
  ------------------
  |  Branch (2905:13): [True: 6.51k, False: 13.6k]
  ------------------
 2906|  6.51k|          if (vsp >= 0) {
  ------------------
  |  Branch (2906:15): [True: 0, False: 6.51k]
  ------------------
 2907|      0|            gen_move(s, vsp, cursp(), 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2908|      0|          }
 2909|  6.51k|          pos = genjmp2_0(s, name[0]=='|'?OP_JMPIF:OP_JMPNOT, cursp(), val);
  ------------------
  |  |  583|  13.0k|#define genjmp2_0(s,i,a,val) genjmp2(s,i,a,JMPLINK_START,val)
  |  |  ------------------
  |  |  |  |  494|  6.51k|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  |  |  |  Branch (583:40): [True: 6.51k, False: 0]
  |  |  ------------------
  ------------------
 2910|  6.51k|        }
 2911|  13.6k|        else {
 2912|  13.6k|          pos = genjmp2_0(s, name[0]=='|'?OP_JMPIF:OP_JMPNOT, cursp(), val);
  ------------------
  |  |  583|  27.2k|#define genjmp2_0(s,i,a,val) genjmp2(s,i,a,JMPLINK_START,val)
  |  |  ------------------
  |  |  |  |  494|  13.6k|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  |  |  |  Branch (583:40): [True: 13.6k, False: 0]
  |  |  ------------------
  ------------------
 2913|  13.6k|        }
 2914|  20.1k|        codegen(s, tree->cdr->cdr->car, VAL);
  ------------------
  |  |  326|  20.1k|#define VAL    1
  ------------------
 2915|  20.1k|        pop();
  ------------------
  |  |  988|  20.1k|#define pop() pop_n_(s,1)
  ------------------
 2916|  20.1k|        if (val && vsp >= 0) {
  ------------------
  |  Branch (2916:13): [True: 6.50k, False: 13.6k]
  |  Branch (2916:20): [True: 0, False: 6.50k]
  ------------------
 2917|      0|          gen_move(s, vsp, cursp(), 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2918|      0|        }
 2919|  20.1k|        if (nint(tree->car->car) == NODE_CALL) {
  ------------------
  |  | 1227|  20.1k|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (2919:13): [True: 0, False: 20.1k]
  ------------------
 2920|      0|          if (callargs == CALL_MAXARGS) {
  ------------------
  |  | 1568|      0|#define CALL_MAXARGS 15
  ------------------
  |  Branch (2920:15): [True: 0, False: 0]
  ------------------
 2921|      0|            pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2922|      0|            genop_2(s, OP_ARYPUSH, cursp(), 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2923|      0|          }
 2924|      0|          else {
 2925|      0|            pop_n(callargs);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 2926|      0|            callargs++;
 2927|      0|          }
 2928|      0|          pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2929|      0|          idx = new_sym(s, attrsym(s, nsym(tree->car->cdr->cdr->car)));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 2930|      0|          genop_3(s, OP_SEND, cursp(), idx, callargs);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2931|      0|        }
 2932|  20.1k|        else {
 2933|  20.1k|          gen_assignment(s, tree->car, NULL, cursp(), val);
  ------------------
  |  |  990|  20.1k|#define cursp() (s->sp)
  ------------------
 2934|  20.1k|        }
 2935|  20.1k|        dispatch(s, pos);
 2936|  20.1k|        goto exit;
 2937|  20.1k|      }
 2938|      0|      codegen(s, tree->cdr->cdr->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 2939|      0|      push(); pop();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
                    push(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2940|      0|      pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
                    pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2941|       |
 2942|      0|      if (len == 1 && name[0] == '+')  {
  ------------------
  |  Branch (2942:11): [True: 0, False: 0]
  |  Branch (2942:23): [True: 0, False: 0]
  ------------------
 2943|      0|        gen_addsub(s, OP_ADD, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2944|      0|      }
 2945|      0|      else if (len == 1 && name[0] == '-')  {
  ------------------
  |  Branch (2945:16): [True: 0, False: 0]
  |  Branch (2945:28): [True: 0, False: 0]
  ------------------
 2946|      0|        gen_addsub(s, OP_SUB, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2947|      0|      }
 2948|      0|      else if (len == 1 && name[0] == '*')  {
  ------------------
  |  Branch (2948:16): [True: 0, False: 0]
  |  Branch (2948:28): [True: 0, False: 0]
  ------------------
 2949|      0|        genop_1(s, OP_MUL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2950|      0|      }
 2951|      0|      else if (len == 1 && name[0] == '/')  {
  ------------------
  |  Branch (2951:16): [True: 0, False: 0]
  |  Branch (2951:28): [True: 0, False: 0]
  ------------------
 2952|      0|        genop_1(s, OP_DIV, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2953|      0|      }
 2954|      0|      else if (len == 1 && name[0] == '<')  {
  ------------------
  |  Branch (2954:16): [True: 0, False: 0]
  |  Branch (2954:28): [True: 0, False: 0]
  ------------------
 2955|      0|        genop_1(s, OP_LT, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2956|      0|      }
 2957|      0|      else if (len == 2 && name[0] == '<' && name[1] == '=')  {
  ------------------
  |  Branch (2957:16): [True: 0, False: 0]
  |  Branch (2957:28): [True: 0, False: 0]
  |  Branch (2957:46): [True: 0, False: 0]
  ------------------
 2958|      0|        genop_1(s, OP_LE, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2959|      0|      }
 2960|      0|      else if (len == 1 && name[0] == '>')  {
  ------------------
  |  Branch (2960:16): [True: 0, False: 0]
  |  Branch (2960:28): [True: 0, False: 0]
  ------------------
 2961|      0|        genop_1(s, OP_GT, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2962|      0|      }
 2963|      0|      else if (len == 2 && name[0] == '>' && name[1] == '=')  {
  ------------------
  |  Branch (2963:16): [True: 0, False: 0]
  |  Branch (2963:28): [True: 0, False: 0]
  |  Branch (2963:46): [True: 0, False: 0]
  ------------------
 2964|      0|        genop_1(s, OP_GE, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2965|      0|      }
 2966|      0|      else {
 2967|      0|        idx = new_sym(s, sym);
 2968|      0|        genop_3(s, OP_SEND, cursp(), idx, 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2969|      0|      }
 2970|      0|      if (callargs < 0) {
  ------------------
  |  Branch (2970:11): [True: 0, False: 0]
  ------------------
 2971|      0|        gen_assignment(s, tree->car, NULL, cursp(), val);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2972|      0|      }
 2973|      0|      else {
 2974|      0|        if (val && vsp >= 0) {
  ------------------
  |  Branch (2974:13): [True: 0, False: 0]
  |  Branch (2974:20): [True: 0, False: 0]
  ------------------
 2975|      0|          gen_move(s, vsp, cursp(), 0);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2976|      0|        }
 2977|      0|        if (callargs == CALL_MAXARGS) {
  ------------------
  |  | 1568|      0|#define CALL_MAXARGS 15
  ------------------
  |  Branch (2977:13): [True: 0, False: 0]
  ------------------
 2978|      0|          pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2979|      0|          genop_2(s, OP_ARYPUSH, cursp(), 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2980|      0|        }
 2981|      0|        else {
 2982|      0|          pop_n(callargs);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 2983|      0|          callargs++;
 2984|      0|        }
 2985|      0|        pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 2986|      0|        idx = new_sym(s, attrsym(s,nsym(tree->car->cdr->cdr->car)));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 2987|      0|        genop_3(s, OP_SEND, cursp(), idx, callargs);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 2988|      0|      }
 2989|      0|    }
 2990|      0|    break;
 2991|       |
 2992|      0|  case NODE_SUPER:
  ------------------
  |  Branch (2992:3): [True: 0, False: 1.58M]
  ------------------
 2993|      0|    {
 2994|      0|      codegen_scope *s2 = s;
 2995|      0|      int lv = 0;
 2996|      0|      int n = 0, nk = 0, st = 0;
 2997|       |
 2998|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 2999|      0|      while (!s2->mscope) {
  ------------------
  |  Branch (2999:14): [True: 0, False: 0]
  ------------------
 3000|      0|        lv++;
 3001|      0|        s2 = s2->prev;
 3002|      0|        if (!s2) break;
  ------------------
  |  Branch (3002:13): [True: 0, False: 0]
  ------------------
 3003|      0|      }
 3004|      0|      if (tree) {
  ------------------
  |  Branch (3004:11): [True: 0, False: 0]
  ------------------
 3005|      0|        node *args = tree->car;
 3006|      0|        if (args) {
  ------------------
  |  Branch (3006:13): [True: 0, False: 0]
  ------------------
 3007|      0|          st = n = gen_values(s, args, VAL, 14);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3008|      0|          if (n < 0) {
  ------------------
  |  Branch (3008:15): [True: 0, False: 0]
  ------------------
 3009|      0|            st = 1; n = 15;
 3010|      0|            push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3011|      0|          }
 3012|      0|        }
 3013|       |        /* keyword arguments */
 3014|      0|        if (tree->cdr->car) {
  ------------------
  |  Branch (3014:13): [True: 0, False: 0]
  ------------------
 3015|      0|          nk = gen_hash(s, tree->cdr->car->cdr, VAL, 14);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3016|      0|          if (nk < 0) {st++; nk = 15;}
  ------------------
  |  Branch (3016:15): [True: 0, False: 0]
  ------------------
 3017|      0|          else st += nk*2;
 3018|      0|          n |= nk<<4;
 3019|      0|        }
 3020|       |        /* block arguments */
 3021|      0|        if (tree->cdr->cdr) {
  ------------------
  |  Branch (3021:13): [True: 0, False: 0]
  ------------------
 3022|      0|          codegen(s, tree->cdr->cdr, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3023|      0|        }
 3024|      0|        else if (s2) gen_blkmove(s, s2->ainfo, lv);
  ------------------
  |  Branch (3024:18): [True: 0, False: 0]
  ------------------
 3025|      0|        else {
 3026|      0|          genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3027|      0|          push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3028|      0|        }
 3029|      0|      }
 3030|      0|      else {
 3031|      0|        if (s2) gen_blkmove(s, s2->ainfo, lv);
  ------------------
  |  Branch (3031:13): [True: 0, False: 0]
  ------------------
 3032|      0|        else {
 3033|      0|          genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3034|      0|          push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3035|      0|        }
 3036|      0|      }
 3037|      0|      st++;
 3038|      0|      pop_n(st+1);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 3039|      0|      genop_2(s, OP_SUPER, cursp(), n);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3040|      0|      if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3040:11): [True: 0, False: 0]
  ------------------
 3041|      0|    }
 3042|      0|    break;
 3043|       |
 3044|      0|  case NODE_ZSUPER:
  ------------------
  |  Branch (3044:3): [True: 0, False: 1.58M]
  ------------------
 3045|      0|    {
 3046|      0|      codegen_scope *s2 = s;
 3047|      0|      int lv = 0;
 3048|      0|      uint16_t ainfo = 0;
 3049|      0|      int n = CALL_MAXARGS;
  ------------------
  |  | 1568|      0|#define CALL_MAXARGS 15
  ------------------
 3050|      0|      int sp = cursp();
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3051|       |
 3052|      0|      push();        /* room for receiver */
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3053|      0|      while (!s2->mscope) {
  ------------------
  |  Branch (3053:14): [True: 0, False: 0]
  ------------------
 3054|      0|        lv++;
 3055|      0|        s2 = s2->prev;
 3056|      0|        if (!s2) break;
  ------------------
  |  Branch (3056:13): [True: 0, False: 0]
  ------------------
 3057|      0|      }
 3058|      0|      if (s2 && s2->ainfo > 0) {
  ------------------
  |  Branch (3058:11): [True: 0, False: 0]
  |  Branch (3058:17): [True: 0, False: 0]
  ------------------
 3059|      0|        ainfo = s2->ainfo;
 3060|      0|      }
 3061|      0|      if (ainfo > 0) {
  ------------------
  |  Branch (3061:11): [True: 0, False: 0]
  ------------------
 3062|      0|        genop_2S(s, OP_ARGARY, cursp(), (ainfo<<4)|(lv & 0xf));
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3063|      0|        push(); push(); push();   /* ARGARY pushes 3 values at most */
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
                      push(); push(); push();   /* ARGARY pushes 3 values at most */
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
                      push(); push(); push();   /* ARGARY pushes 3 values at most */
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3064|      0|        pop(); pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
                      pop(); pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
                      pop(); pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3065|       |        /* keyword arguments */
 3066|      0|        if (ainfo & 0x1) {
  ------------------
  |  Branch (3066:13): [True: 0, False: 0]
  ------------------
 3067|      0|          n |= CALL_MAXARGS<<4;
  ------------------
  |  | 1568|      0|#define CALL_MAXARGS 15
  ------------------
 3068|      0|          push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3069|      0|        }
 3070|       |        /* block argument */
 3071|      0|        if (tree && tree->cdr && tree->cdr->cdr) {
  ------------------
  |  Branch (3071:13): [True: 0, False: 0]
  |  Branch (3071:21): [True: 0, False: 0]
  |  Branch (3071:34): [True: 0, False: 0]
  ------------------
 3072|      0|          push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3073|      0|          codegen(s, tree->cdr->cdr, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3074|      0|        }
 3075|      0|      }
 3076|      0|      else {
 3077|       |        /* block argument */
 3078|      0|        if (tree && tree->cdr && tree->cdr->cdr) {
  ------------------
  |  Branch (3078:13): [True: 0, False: 0]
  |  Branch (3078:21): [True: 0, False: 0]
  |  Branch (3078:34): [True: 0, False: 0]
  ------------------
 3079|      0|          codegen(s, tree->cdr->cdr, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3080|      0|        }
 3081|      0|        else {
 3082|      0|          gen_blkmove(s, 0, lv);
 3083|      0|        }
 3084|      0|        n = 0;
 3085|      0|      }
 3086|      0|      s->sp = sp;
 3087|      0|      genop_2(s, OP_SUPER, cursp(), n);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3088|      0|      if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3088:11): [True: 0, False: 0]
  ------------------
 3089|      0|    }
 3090|      0|    break;
 3091|       |
 3092|      0|  case NODE_RETURN:
  ------------------
  |  Branch (3092:3): [True: 0, False: 1.58M]
  ------------------
 3093|      0|    if (tree) {
  ------------------
  |  Branch (3093:9): [True: 0, False: 0]
  ------------------
 3094|      0|      gen_retval(s, tree);
 3095|      0|    }
 3096|      0|    else {
 3097|      0|      genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3098|      0|    }
 3099|      0|    if (s->loop) {
  ------------------
  |  Branch (3099:9): [True: 0, False: 0]
  ------------------
 3100|      0|      gen_return(s, OP_RETURN_BLK, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3101|      0|    }
 3102|      0|    else {
 3103|      0|      gen_return(s, OP_RETURN, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3104|      0|    }
 3105|      0|    if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3105:9): [True: 0, False: 0]
  ------------------
 3106|      0|    break;
 3107|       |
 3108|      0|  case NODE_YIELD:
  ------------------
  |  Branch (3108:3): [True: 0, False: 1.58M]
  ------------------
 3109|      0|    {
 3110|      0|      codegen_scope *s2 = s;
 3111|      0|      int lv = 0, ainfo = -1;
 3112|      0|      int n = 0, sendv = 0;
 3113|       |
 3114|      0|      while (!s2->mscope) {
  ------------------
  |  Branch (3114:14): [True: 0, False: 0]
  ------------------
 3115|      0|        lv++;
 3116|      0|        s2 = s2->prev;
 3117|      0|        if (!s2) break;
  ------------------
  |  Branch (3117:13): [True: 0, False: 0]
  ------------------
 3118|      0|      }
 3119|      0|      if (s2) {
  ------------------
  |  Branch (3119:11): [True: 0, False: 0]
  ------------------
 3120|      0|        ainfo = (int)s2->ainfo;
 3121|      0|      }
 3122|      0|      if (ainfo < 0) codegen_error(s, "invalid yield (SyntaxError)");
  ------------------
  |  Branch (3122:11): [True: 0, False: 0]
  ------------------
 3123|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3124|      0|      if (tree) {
  ------------------
  |  Branch (3124:11): [True: 0, False: 0]
  ------------------
 3125|      0|        n = gen_values(s, tree, VAL, 14);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3126|      0|        if (n < 0) {
  ------------------
  |  Branch (3126:13): [True: 0, False: 0]
  ------------------
 3127|      0|          n = sendv = 1;
 3128|      0|          push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3129|      0|        }
 3130|      0|      }
 3131|      0|      push();pop(); /* space for a block */
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
                    push();pop(); /* space for a block */
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3132|      0|      pop_n(n+1);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 3133|      0|      genop_2S(s, OP_BLKPUSH, cursp(), (ainfo<<4)|(lv & 0xf));
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3134|      0|      if (sendv) n = CALL_MAXARGS;
  ------------------
  |  | 1568|      0|#define CALL_MAXARGS 15
  ------------------
  |  Branch (3134:11): [True: 0, False: 0]
  ------------------
 3135|      0|      genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_SYM_2(s->mrb, call)), n);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
                    genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_SYM_2(s->mrb, call)), n);
  ------------------
  |  |   26|      0|#define MRB_SYM_2(mrb, name) MRB_SYM__##name
  ------------------
 3136|      0|      if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3136:11): [True: 0, False: 0]
  ------------------
 3137|      0|    }
 3138|      0|    break;
 3139|       |
 3140|      0|  case NODE_BREAK:
  ------------------
  |  Branch (3140:3): [True: 0, False: 1.58M]
  ------------------
 3141|      0|    loop_break(s, tree);
 3142|      0|    if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3142:9): [True: 0, False: 0]
  ------------------
 3143|      0|    break;
 3144|       |
 3145|      0|  case NODE_NEXT:
  ------------------
  |  Branch (3145:3): [True: 0, False: 1.58M]
  ------------------
 3146|      0|    if (!s->loop) {
  ------------------
  |  Branch (3146:9): [True: 0, False: 0]
  ------------------
 3147|      0|      raise_error(s, "unexpected next");
 3148|      0|    }
 3149|      0|    else if (s->loop->type == LOOP_NORMAL) {
  ------------------
  |  Branch (3149:14): [True: 0, False: 0]
  ------------------
 3150|      0|      codegen(s, tree, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 3151|      0|      genjmp(s, OP_JMPUW, s->loop->pc0);
 3152|      0|    }
 3153|      0|    else {
 3154|      0|      if (tree) {
  ------------------
  |  Branch (3154:11): [True: 0, False: 0]
  ------------------
 3155|      0|        codegen(s, tree, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3156|      0|        pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3157|      0|      }
 3158|      0|      else {
 3159|      0|        genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3160|      0|      }
 3161|      0|      gen_return(s, OP_RETURN, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3162|      0|    }
 3163|      0|    if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3163:9): [True: 0, False: 0]
  ------------------
 3164|      0|    break;
 3165|       |
 3166|      0|  case NODE_REDO:
  ------------------
  |  Branch (3166:3): [True: 0, False: 1.58M]
  ------------------
 3167|      0|    if (!s->loop || s->loop->type == LOOP_BEGIN || s->loop->type == LOOP_RESCUE) {
  ------------------
  |  Branch (3167:9): [True: 0, False: 0]
  |  Branch (3167:21): [True: 0, False: 0]
  |  Branch (3167:52): [True: 0, False: 0]
  ------------------
 3168|      0|      raise_error(s, "unexpected redo");
 3169|      0|    }
 3170|      0|    else {
 3171|      0|      genjmp(s, OP_JMPUW, s->loop->pc1);
 3172|      0|    }
 3173|      0|    if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3173:9): [True: 0, False: 0]
  ------------------
 3174|      0|    break;
 3175|       |
 3176|      0|  case NODE_RETRY:
  ------------------
  |  Branch (3176:3): [True: 0, False: 1.58M]
  ------------------
 3177|      0|    {
 3178|      0|      const char *msg = "unexpected retry";
 3179|      0|      const struct loopinfo *lp = s->loop;
 3180|       |
 3181|      0|      while (lp && lp->type != LOOP_RESCUE) {
  ------------------
  |  Branch (3181:14): [True: 0, False: 0]
  |  Branch (3181:20): [True: 0, False: 0]
  ------------------
 3182|      0|        lp = lp->prev;
 3183|      0|      }
 3184|      0|      if (!lp) {
  ------------------
  |  Branch (3184:11): [True: 0, False: 0]
  ------------------
 3185|      0|        raise_error(s, msg);
 3186|      0|      }
 3187|      0|      else {
 3188|      0|        genjmp(s, OP_JMPUW, lp->pc0);
 3189|      0|      }
 3190|      0|      if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3190:11): [True: 0, False: 0]
  ------------------
 3191|      0|    }
 3192|      0|    break;
 3193|       |
 3194|  57.3k|  case NODE_LVAR:
  ------------------
  |  Branch (3194:3): [True: 57.3k, False: 1.53M]
  ------------------
 3195|  57.3k|    if (val) {
  ------------------
  |  Branch (3195:9): [True: 56.6k, False: 737]
  ------------------
 3196|  56.6k|      int idx = lv_idx(s, nsym(tree));
  ------------------
  |  | 1229|  56.6k|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3197|       |
 3198|  56.6k|      if (idx > 0) {
  ------------------
  |  Branch (3198:11): [True: 56.6k, False: 0]
  ------------------
 3199|  56.6k|        gen_move(s, cursp(), idx, val);
  ------------------
  |  |  990|  56.6k|#define cursp() (s->sp)
  ------------------
 3200|  56.6k|      }
 3201|      0|      else {
 3202|      0|        gen_getupvar(s, cursp(), nsym(tree));
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
                      gen_getupvar(s, cursp(), nsym(tree));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3203|      0|      }
 3204|  56.6k|      push();
  ------------------
  |  |  986|  56.6k|#define push() push_n_(s,1)
  ------------------
 3205|  56.6k|    }
 3206|  57.3k|    break;
 3207|       |
 3208|      0|  case NODE_NVAR:
  ------------------
  |  Branch (3208:3): [True: 0, False: 1.58M]
  ------------------
 3209|      0|    if (val) {
  ------------------
  |  Branch (3209:9): [True: 0, False: 0]
  ------------------
 3210|      0|      int idx = nint(tree);
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
 3211|       |
 3212|      0|      gen_move(s, cursp(), idx, val);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3213|       |
 3214|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3215|      0|    }
 3216|      0|    break;
 3217|       |
 3218|      0|  case NODE_GVAR:
  ------------------
  |  Branch (3218:3): [True: 0, False: 1.58M]
  ------------------
 3219|      0|    {
 3220|      0|      int sym = new_sym(s, nsym(tree));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3221|       |
 3222|      0|      genop_2(s, OP_GETGV, cursp(), sym);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3223|      0|      if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3223:11): [True: 0, False: 0]
  ------------------
 3224|      0|    }
 3225|      0|    break;
 3226|       |
 3227|  20.1k|  case NODE_IVAR:
  ------------------
  |  Branch (3227:3): [True: 20.1k, False: 1.56M]
  ------------------
 3228|  20.1k|    {
 3229|  20.1k|      int sym = new_sym(s, nsym(tree));
  ------------------
  |  | 1229|  20.1k|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3230|       |
 3231|  20.1k|      genop_2(s, OP_GETIV, cursp(), sym);
  ------------------
  |  |  990|  20.1k|#define cursp() (s->sp)
  ------------------
 3232|  20.1k|      if (val) push();
  ------------------
  |  |  986|  20.1k|#define push() push_n_(s,1)
  ------------------
  |  Branch (3232:11): [True: 20.1k, False: 0]
  ------------------
 3233|  20.1k|    }
 3234|  20.1k|    break;
 3235|       |
 3236|      0|  case NODE_CVAR:
  ------------------
  |  Branch (3236:3): [True: 0, False: 1.58M]
  ------------------
 3237|      0|    {
 3238|      0|      int sym = new_sym(s, nsym(tree));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3239|       |
 3240|      0|      genop_2(s, OP_GETCV, cursp(), sym);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3241|      0|      if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3241:11): [True: 0, False: 0]
  ------------------
 3242|      0|    }
 3243|      0|    break;
 3244|       |
 3245|  19.8k|  case NODE_CONST:
  ------------------
  |  Branch (3245:3): [True: 19.8k, False: 1.56M]
  ------------------
 3246|  19.8k|    {
 3247|  19.8k|      int sym = new_sym(s, nsym(tree));
  ------------------
  |  | 1229|  19.8k|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3248|       |
 3249|  19.8k|      genop_2(s, OP_GETCONST, cursp(), sym);
  ------------------
  |  |  990|  19.8k|#define cursp() (s->sp)
  ------------------
 3250|  19.8k|      if (val) push();
  ------------------
  |  |  986|  19.8k|#define push() push_n_(s,1)
  ------------------
  |  Branch (3250:11): [True: 19.8k, False: 0]
  ------------------
 3251|  19.8k|    }
 3252|  19.8k|    break;
 3253|       |
 3254|      0|  case NODE_BACK_REF:
  ------------------
  |  Branch (3254:3): [True: 0, False: 1.58M]
  ------------------
 3255|      0|    if (val) {
  ------------------
  |  Branch (3255:9): [True: 0, False: 0]
  ------------------
 3256|      0|      char buf[] = {'$', nchar(tree)};
  ------------------
  |  | 1228|      0|#define nchar(x) ((char)(intptr_t)(x))
  ------------------
 3257|      0|      int sym = new_sym(s, mrb_intern(s->mrb, buf, sizeof(buf)));
 3258|       |
 3259|      0|      genop_2(s, OP_GETGV, cursp(), sym);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3260|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3261|      0|    }
 3262|      0|    break;
 3263|       |
 3264|      0|  case NODE_NTH_REF:
  ------------------
  |  Branch (3264:3): [True: 0, False: 1.58M]
  ------------------
 3265|      0|    if (val) {
  ------------------
  |  Branch (3265:9): [True: 0, False: 0]
  ------------------
 3266|      0|      mrb_state *mrb = s->mrb;
 3267|      0|      mrb_value str;
 3268|      0|      int sym;
 3269|       |
 3270|      0|      str = mrb_format(mrb, "$%d", nint(tree));
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
 3271|      0|      sym = new_sym(s, mrb_intern_str(mrb, str));
 3272|      0|      genop_2(s, OP_GETGV, cursp(), sym);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3273|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3274|      0|    }
 3275|      0|    break;
 3276|       |
 3277|      0|  case NODE_ARG:
  ------------------
  |  Branch (3277:3): [True: 0, False: 1.58M]
  ------------------
 3278|       |    /* should not happen */
 3279|      0|    break;
 3280|       |
 3281|      0|  case NODE_BLOCK_ARG:
  ------------------
  |  Branch (3281:3): [True: 0, False: 1.58M]
  ------------------
 3282|      0|    if (!tree) {
  ------------------
  |  Branch (3282:9): [True: 0, False: 0]
  ------------------
 3283|      0|      int idx = lv_idx(s, MRB_OPSYM_2(s->mrb, and));
  ------------------
  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
 3284|       |
 3285|      0|      if (idx == 0) {
  ------------------
  |  Branch (3285:11): [True: 0, False: 0]
  ------------------
 3286|      0|        gen_getupvar(s, cursp(), MRB_OPSYM_2(s->mrb, and));
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
                      gen_getupvar(s, cursp(), MRB_OPSYM_2(s->mrb, and));
  ------------------
  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
 3287|      0|      }
 3288|      0|      else {
 3289|      0|        gen_move(s, cursp(), idx, val);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3290|      0|      }
 3291|      0|      if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3291:11): [True: 0, False: 0]
  ------------------
 3292|      0|    }
 3293|      0|    else {
 3294|      0|      codegen(s, tree, val);
 3295|      0|    }
 3296|      0|    break;
 3297|       |
 3298|   598k|  case NODE_INT:
  ------------------
  |  Branch (3298:3): [True: 598k, False: 989k]
  ------------------
 3299|   598k|    if (val) {
  ------------------
  |  Branch (3299:9): [True: 575k, False: 23.2k]
  ------------------
 3300|   575k|      char *p = (char*)tree->car;
 3301|   575k|      int base = nint(tree->cdr->car);
  ------------------
  |  | 1227|   575k|#define nint(x) ((int)(intptr_t)(x))
  ------------------
 3302|   575k|      mrb_int i;
 3303|   575k|      mrb_bool overflow;
 3304|       |
 3305|   575k|      i = readint(s, p, base, FALSE, &overflow);
  ------------------
  |  |   51|   575k|#  define FALSE 0
  ------------------
 3306|   575k|      if (overflow) {
  ------------------
  |  Branch (3306:11): [True: 0, False: 575k]
  ------------------
 3307|      0|        int off = new_litbint(s, p, base, FALSE);
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
 3308|      0|        genop_2(s, OP_LOADL, cursp(), off);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3309|      0|      }
 3310|   575k|      else {
 3311|   575k|        gen_int(s, cursp(), i);
  ------------------
  |  |  990|   575k|#define cursp() (s->sp)
  ------------------
 3312|   575k|      }
 3313|   575k|      push();
  ------------------
  |  |  986|   575k|#define push() push_n_(s,1)
  ------------------
 3314|   575k|    }
 3315|   598k|    break;
 3316|       |
 3317|      0|#ifndef MRB_NO_FLOAT
 3318|      0|  case NODE_FLOAT:
  ------------------
  |  Branch (3318:3): [True: 0, False: 1.58M]
  ------------------
 3319|      0|    if (val) {
  ------------------
  |  Branch (3319:9): [True: 0, False: 0]
  ------------------
 3320|      0|      char *p = (char*)tree;
 3321|      0|      double f;
 3322|      0|      mrb_read_float(p, NULL, &f);
 3323|      0|      int off = new_lit_float(s, (mrb_float)f);
 3324|       |
 3325|      0|      genop_2(s, OP_LOADL, cursp(), off);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3326|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3327|      0|    }
 3328|      0|    break;
 3329|      0|#endif
 3330|       |
 3331|      0|  case NODE_NEGATE:
  ------------------
  |  Branch (3331:3): [True: 0, False: 1.58M]
  ------------------
 3332|      0|    {
 3333|      0|      nt = nint(tree->car);
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
 3334|      0|      switch (nt) {
 3335|      0|#ifndef MRB_NO_FLOAT
 3336|      0|      case NODE_FLOAT:
  ------------------
  |  Branch (3336:7): [True: 0, False: 0]
  ------------------
 3337|      0|        if (val) {
  ------------------
  |  Branch (3337:13): [True: 0, False: 0]
  ------------------
 3338|      0|          char *p = (char*)tree->cdr;
 3339|      0|          double f;
 3340|      0|          mrb_read_float(p, NULL, &f);
 3341|      0|          int off = new_lit_float(s, (mrb_float)-f);
 3342|       |
 3343|      0|          genop_2(s, OP_LOADL, cursp(), off);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3344|      0|          push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3345|      0|        }
 3346|      0|        break;
 3347|      0|#endif
 3348|       |
 3349|      0|      case NODE_INT:
  ------------------
  |  Branch (3349:7): [True: 0, False: 0]
  ------------------
 3350|      0|        if (val) {
  ------------------
  |  Branch (3350:13): [True: 0, False: 0]
  ------------------
 3351|      0|          char *p = (char*)tree->cdr->car;
 3352|      0|          int base = nint(tree->cdr->cdr->car);
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
 3353|      0|          mrb_int i;
 3354|      0|          mrb_bool overflow;
 3355|       |
 3356|      0|          i = readint(s, p, base, TRUE, &overflow);
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 3357|      0|          if (overflow) {
  ------------------
  |  Branch (3357:15): [True: 0, False: 0]
  ------------------
 3358|      0|            int off = new_litbint(s, p, base, TRUE);
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 3359|      0|            genop_2(s, OP_LOADL, cursp(), off);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3360|      0|          }
 3361|      0|          else {
 3362|      0|            gen_int(s, cursp(), i);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3363|      0|          }
 3364|      0|          push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3365|      0|        }
 3366|      0|        break;
 3367|       |
 3368|      0|      default:
  ------------------
  |  Branch (3368:7): [True: 0, False: 0]
  ------------------
 3369|      0|        if (val) {
  ------------------
  |  Branch (3369:13): [True: 0, False: 0]
  ------------------
 3370|      0|          codegen(s, tree, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3371|      0|          pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3372|      0|          push_n(2);pop_n(2); /* space for receiver&block */
  ------------------
  |  |  987|      0|#define push_n(n) push_n_(s,n)
  ------------------
                        push_n(2);pop_n(2); /* space for receiver&block */
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 3373|      0|          mrb_sym minus = MRB_OPSYM_2(s->mrb, minus);
  ------------------
  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
 3374|      0|          if (!gen_uniop(s, minus, cursp())) {
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
  |  Branch (3374:15): [True: 0, False: 0]
  ------------------
 3375|      0|            genop_3(s, OP_SEND, cursp(), new_sym(s, minus), 0);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3376|      0|          }
 3377|      0|          push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3378|      0|        }
 3379|      0|        else {
 3380|      0|          codegen(s, tree, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 3381|      0|        }
 3382|      0|        break;
 3383|      0|      }
 3384|      0|    }
 3385|      0|    break;
 3386|       |
 3387|   327k|  case NODE_STR:
  ------------------
  |  Branch (3387:3): [True: 327k, False: 1.26M]
  ------------------
 3388|   327k|    if (val) {
  ------------------
  |  Branch (3388:9): [True: 327k, False: 0]
  ------------------
 3389|   327k|      char *p = (char*)tree->car;
 3390|   327k|      mrb_int len = nint(tree->cdr);
  ------------------
  |  | 1227|   327k|#define nint(x) ((int)(intptr_t)(x))
  ------------------
 3391|   327k|      int off = new_lit_str(s, p, len);
 3392|       |
 3393|   327k|      genop_2(s, OP_STRING, cursp(), off);
  ------------------
  |  |  990|   327k|#define cursp() (s->sp)
  ------------------
 3394|   327k|      push();
  ------------------
  |  |  986|   327k|#define push() push_n_(s,1)
  ------------------
 3395|   327k|    }
 3396|   327k|    break;
 3397|       |
 3398|      0|  case NODE_HEREDOC:
  ------------------
  |  Branch (3398:3): [True: 0, False: 1.58M]
  ------------------
 3399|      0|    tree = ((struct mrb_parser_heredoc_info*)tree)->doc;
 3400|       |    /* fall through */
 3401|      0|  case NODE_DSTR:
  ------------------
  |  Branch (3401:3): [True: 0, False: 1.58M]
  ------------------
 3402|      0|    if (val) {
  ------------------
  |  Branch (3402:9): [True: 0, False: 0]
  ------------------
 3403|      0|      node *n = tree;
 3404|       |
 3405|      0|      if (!n) {
  ------------------
  |  Branch (3405:11): [True: 0, False: 0]
  ------------------
 3406|      0|        genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3407|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3408|      0|        break;
 3409|      0|      }
 3410|      0|      codegen(s, n->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3411|      0|      n = n->cdr;
 3412|      0|      while (n) {
  ------------------
  |  Branch (3412:14): [True: 0, False: 0]
  ------------------
 3413|      0|        codegen(s, n->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3414|      0|        pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
                      pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3415|      0|        genop_1(s, OP_STRCAT, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3416|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3417|      0|        n = n->cdr;
 3418|      0|      }
 3419|      0|    }
 3420|      0|    else {
 3421|      0|      node *n = tree;
 3422|       |
 3423|      0|      while (n) {
  ------------------
  |  Branch (3423:14): [True: 0, False: 0]
  ------------------
 3424|      0|        if (nint(n->car->car) != NODE_STR) {
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (3424:13): [True: 0, False: 0]
  ------------------
 3425|      0|          codegen(s, n->car, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 3426|      0|        }
 3427|      0|        n = n->cdr;
 3428|      0|      }
 3429|      0|    }
 3430|      0|    break;
 3431|       |
 3432|      0|  case NODE_WORDS:
  ------------------
  |  Branch (3432:3): [True: 0, False: 1.58M]
  ------------------
 3433|      0|    gen_literal_array(s, tree, FALSE, val);
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
 3434|      0|    break;
 3435|       |
 3436|      0|  case NODE_SYMBOLS:
  ------------------
  |  Branch (3436:3): [True: 0, False: 1.58M]
  ------------------
 3437|      0|    gen_literal_array(s, tree, TRUE, val);
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 3438|      0|    break;
 3439|       |
 3440|      0|  case NODE_DXSTR:
  ------------------
  |  Branch (3440:3): [True: 0, False: 1.58M]
  ------------------
 3441|      0|    {
 3442|      0|      node *n;
 3443|      0|      int sym = new_sym(s, MRB_SYM_2(s->mrb, Kernel));
  ------------------
  |  |   26|      0|#define MRB_SYM_2(mrb, name) MRB_SYM__##name
  ------------------
 3444|       |
 3445|      0|      genop_1(s, OP_LOADSELF, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3446|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3447|      0|      codegen(s, tree->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3448|      0|      n = tree->cdr;
 3449|      0|      while (n) {
  ------------------
  |  Branch (3449:14): [True: 0, False: 0]
  ------------------
 3450|      0|        if (nint(n->car->car) == NODE_XSTR) {
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (3450:13): [True: 0, False: 0]
  ------------------
 3451|      0|          n->car->car = (struct mrb_ast_node*)(intptr_t)NODE_STR;
 3452|      0|          mrb_assert(!n->cdr); /* must be the end */
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 3453|      0|        }
 3454|      0|        codegen(s, n->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3455|      0|        pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
                      pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3456|      0|        genop_1(s, OP_STRCAT, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3457|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3458|      0|        n = n->cdr;
 3459|      0|      }
 3460|      0|      push();                   /* for block */
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3461|      0|      pop_n(3);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 3462|      0|      sym = new_sym(s, MRB_OPSYM_2(s->mrb, tick)); /* ` */
  ------------------
  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
 3463|      0|      genop_3(s, OP_SEND, cursp(), sym, 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3464|      0|      if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3464:11): [True: 0, False: 0]
  ------------------
 3465|      0|    }
 3466|      0|    break;
 3467|       |
 3468|      0|  case NODE_XSTR:
  ------------------
  |  Branch (3468:3): [True: 0, False: 1.58M]
  ------------------
 3469|      0|    {
 3470|      0|      char *p = (char*)tree->car;
 3471|      0|      mrb_int len = nint(tree->cdr);
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
 3472|      0|      int off = new_lit_str(s, p, len);
 3473|      0|      int sym;
 3474|       |
 3475|      0|      genop_1(s, OP_LOADSELF, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3476|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3477|      0|      genop_2(s, OP_STRING, cursp(), off);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3478|      0|      push(); push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
                    push(); push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3479|      0|      pop_n(3);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 3480|      0|      sym = new_sym(s, MRB_OPSYM_2(s->mrb, tick)); /* ` */
  ------------------
  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
 3481|      0|      genop_3(s, OP_SEND, cursp(), sym, 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3482|      0|      if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3482:11): [True: 0, False: 0]
  ------------------
 3483|      0|    }
 3484|      0|    break;
 3485|       |
 3486|      0|  case NODE_REGX:
  ------------------
  |  Branch (3486:3): [True: 0, False: 1.58M]
  ------------------
 3487|      0|    if (val) {
  ------------------
  |  Branch (3487:9): [True: 0, False: 0]
  ------------------
 3488|      0|      char *p1 = (char*)tree->car;
 3489|      0|      char *p2 = (char*)tree->cdr->car;
 3490|      0|      char *p3 = (char*)tree->cdr->cdr;
 3491|      0|      int sym = new_sym(s, mrb_intern_lit(s->mrb, REGEXP_CLASS));
  ------------------
  |  | 1164|      0|#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, (lit ""), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|      0|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
 3492|      0|      int off = new_lit_cstr(s, p1);
 3493|      0|      int argc = 1;
 3494|       |
 3495|      0|      genop_1(s, OP_OCLASS, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3496|      0|      genop_2(s, OP_GETMCNST, cursp(), sym);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3497|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3498|      0|      genop_2(s, OP_STRING, cursp(), off);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3499|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3500|      0|      if (p2 || p3) {
  ------------------
  |  Branch (3500:11): [True: 0, False: 0]
  |  Branch (3500:17): [True: 0, False: 0]
  ------------------
 3501|      0|        if (p2) { /* opt */
  ------------------
  |  Branch (3501:13): [True: 0, False: 0]
  ------------------
 3502|      0|          off = new_lit_cstr(s, p2);
 3503|      0|          genop_2(s, OP_STRING, cursp(), off);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3504|      0|        }
 3505|      0|        else {
 3506|      0|          genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3507|      0|        }
 3508|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3509|      0|        argc++;
 3510|      0|        if (p3) { /* enc */
  ------------------
  |  Branch (3510:13): [True: 0, False: 0]
  ------------------
 3511|      0|          off = new_lit_str(s, p3, 1);
 3512|      0|          genop_2(s, OP_STRING, cursp(), off);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3513|      0|          push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3514|      0|          argc++;
 3515|      0|        }
 3516|      0|      }
 3517|      0|      push(); /* space for a block */
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3518|      0|      pop_n(argc+2);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 3519|      0|      sym = new_sym(s, MRB_SYM_2(s->mrb, compile));
  ------------------
  |  |   26|      0|#define MRB_SYM_2(mrb, name) MRB_SYM__##name
  ------------------
 3520|      0|      genop_3(s, OP_SEND, cursp(), sym, argc);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3521|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3522|      0|    }
 3523|      0|    break;
 3524|       |
 3525|      0|  case NODE_DREGX:
  ------------------
  |  Branch (3525:3): [True: 0, False: 1.58M]
  ------------------
 3526|      0|    if (val) {
  ------------------
  |  Branch (3526:9): [True: 0, False: 0]
  ------------------
 3527|      0|      node *n = tree->car;
 3528|      0|      int sym = new_sym(s, mrb_intern_lit(s->mrb, REGEXP_CLASS));
  ------------------
  |  | 1164|      0|#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, (lit ""), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|      0|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
 3529|      0|      int argc = 1;
 3530|      0|      int off;
 3531|      0|      char *p;
 3532|       |
 3533|      0|      genop_1(s, OP_OCLASS, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3534|      0|      genop_2(s, OP_GETMCNST, cursp(), sym);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3535|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3536|      0|      codegen(s, n->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3537|      0|      n = n->cdr;
 3538|      0|      while (n) {
  ------------------
  |  Branch (3538:14): [True: 0, False: 0]
  ------------------
 3539|      0|        codegen(s, n->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3540|      0|        pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
                      pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3541|      0|        genop_1(s, OP_STRCAT, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3542|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3543|      0|        n = n->cdr;
 3544|      0|      }
 3545|      0|      n = tree->cdr->cdr;
 3546|      0|      if (n->car) { /* tail */
  ------------------
  |  Branch (3546:11): [True: 0, False: 0]
  ------------------
 3547|      0|        p = (char*)n->car;
 3548|      0|        off = new_lit_cstr(s, p);
 3549|      0|        codegen(s, tree->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3550|      0|        genop_2(s, OP_STRING, cursp(), off);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3551|      0|        pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3552|      0|        genop_1(s, OP_STRCAT, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3553|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3554|      0|      }
 3555|      0|      if (n->cdr->car) { /* opt */
  ------------------
  |  Branch (3555:11): [True: 0, False: 0]
  ------------------
 3556|      0|        char *p2 = (char*)n->cdr->car;
 3557|      0|        off = new_lit_cstr(s, p2);
 3558|      0|        genop_2(s, OP_STRING, cursp(), off);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3559|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3560|      0|        argc++;
 3561|      0|      }
 3562|      0|      if (n->cdr->cdr) { /* enc */
  ------------------
  |  Branch (3562:11): [True: 0, False: 0]
  ------------------
 3563|      0|        char *p2 = (char*)n->cdr->cdr;
 3564|      0|        off = new_lit_cstr(s, p2);
 3565|      0|        genop_2(s, OP_STRING, cursp(), off);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3566|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3567|      0|        argc++;
 3568|      0|      }
 3569|      0|      push(); /* space for a block */
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3570|      0|      pop_n(argc+2);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 3571|      0|      sym = new_sym(s, MRB_SYM_2(s->mrb, compile));
  ------------------
  |  |   26|      0|#define MRB_SYM_2(mrb, name) MRB_SYM__##name
  ------------------
 3572|      0|      genop_3(s, OP_SEND, cursp(), sym, argc);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3573|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3574|      0|    }
 3575|      0|    else {
 3576|      0|      node *n = tree->car;
 3577|       |
 3578|      0|      while (n) {
  ------------------
  |  Branch (3578:14): [True: 0, False: 0]
  ------------------
 3579|      0|        if (nint(n->car->car) != NODE_STR) {
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (3579:13): [True: 0, False: 0]
  ------------------
 3580|      0|          codegen(s, n->car, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 3581|      0|        }
 3582|      0|        n = n->cdr;
 3583|      0|      }
 3584|      0|    }
 3585|      0|    break;
 3586|       |
 3587|      0|  case NODE_SYM:
  ------------------
  |  Branch (3587:3): [True: 0, False: 1.58M]
  ------------------
 3588|      0|    if (val) {
  ------------------
  |  Branch (3588:9): [True: 0, False: 0]
  ------------------
 3589|      0|      int sym = new_sym(s, nsym(tree));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3590|       |
 3591|      0|      genop_2(s, OP_LOADSYM, cursp(), sym);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3592|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3593|      0|    }
 3594|      0|    break;
 3595|       |
 3596|      0|  case NODE_DSYM:
  ------------------
  |  Branch (3596:3): [True: 0, False: 1.58M]
  ------------------
 3597|      0|    codegen(s, tree, val);
 3598|      0|    if (val) {
  ------------------
  |  Branch (3598:9): [True: 0, False: 0]
  ------------------
 3599|      0|      gen_intern(s);
 3600|      0|    }
 3601|      0|    break;
 3602|       |
 3603|      0|  case NODE_SELF:
  ------------------
  |  Branch (3603:3): [True: 0, False: 1.58M]
  ------------------
 3604|      0|    if (val) {
  ------------------
  |  Branch (3604:9): [True: 0, False: 0]
  ------------------
 3605|      0|      genop_1(s, OP_LOADSELF, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3606|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3607|      0|    }
 3608|      0|    break;
 3609|       |
 3610|      0|  case NODE_NIL:
  ------------------
  |  Branch (3610:3): [True: 0, False: 1.58M]
  ------------------
 3611|      0|    if (val) {
  ------------------
  |  Branch (3611:9): [True: 0, False: 0]
  ------------------
 3612|      0|      genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3613|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3614|      0|    }
 3615|      0|    break;
 3616|       |
 3617|      0|  case NODE_TRUE:
  ------------------
  |  Branch (3617:3): [True: 0, False: 1.58M]
  ------------------
 3618|      0|    if (val) {
  ------------------
  |  Branch (3618:9): [True: 0, False: 0]
  ------------------
 3619|      0|      genop_1(s, OP_LOADT, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3620|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3621|      0|    }
 3622|      0|    break;
 3623|       |
 3624|      0|  case NODE_FALSE:
  ------------------
  |  Branch (3624:3): [True: 0, False: 1.58M]
  ------------------
 3625|      0|    if (val) {
  ------------------
  |  Branch (3625:9): [True: 0, False: 0]
  ------------------
 3626|      0|      genop_1(s, OP_LOADF, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3627|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3628|      0|    }
 3629|      0|    break;
 3630|       |
 3631|      0|  case NODE_ALIAS:
  ------------------
  |  Branch (3631:3): [True: 0, False: 1.58M]
  ------------------
 3632|      0|    {
 3633|      0|      int a = new_sym(s, nsym(tree->car));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3634|      0|      int b = new_sym(s, nsym(tree->cdr));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3635|       |
 3636|      0|      genop_2(s, OP_ALIAS, a, b);
 3637|      0|      if (val) {
  ------------------
  |  Branch (3637:11): [True: 0, False: 0]
  ------------------
 3638|      0|        genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3639|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3640|      0|      }
 3641|      0|    }
 3642|      0|   break;
 3643|       |
 3644|      0|  case NODE_UNDEF:
  ------------------
  |  Branch (3644:3): [True: 0, False: 1.58M]
  ------------------
 3645|      0|    {
 3646|      0|      node *t = tree;
 3647|       |
 3648|      0|      while (t) {
  ------------------
  |  Branch (3648:14): [True: 0, False: 0]
  ------------------
 3649|      0|        int symbol = new_sym(s, nsym(t->car));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3650|      0|        genop_1(s, OP_UNDEF, symbol);
 3651|      0|        t = t->cdr;
 3652|      0|      }
 3653|      0|      if (val) {
  ------------------
  |  Branch (3653:11): [True: 0, False: 0]
  ------------------
 3654|      0|        genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3655|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3656|      0|      }
 3657|      0|    }
 3658|      0|    break;
 3659|       |
 3660|      0|  case NODE_CLASS:
  ------------------
  |  Branch (3660:3): [True: 0, False: 1.58M]
  ------------------
 3661|      0|    {
 3662|      0|      int idx;
 3663|      0|      node *body;
 3664|       |
 3665|      0|      if (tree->car->car == (node*)0) {
  ------------------
  |  Branch (3665:11): [True: 0, False: 0]
  ------------------
 3666|      0|        genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3667|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3668|      0|      }
 3669|      0|      else if (tree->car->car == (node*)1) {
  ------------------
  |  Branch (3669:16): [True: 0, False: 0]
  ------------------
 3670|      0|        genop_1(s, OP_OCLASS, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3671|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3672|      0|      }
 3673|      0|      else {
 3674|      0|        codegen(s, tree->car->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3675|      0|      }
 3676|      0|      if (tree->cdr->car) {
  ------------------
  |  Branch (3676:11): [True: 0, False: 0]
  ------------------
 3677|      0|        codegen(s, tree->cdr->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3678|      0|      }
 3679|      0|      else {
 3680|      0|        genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3681|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3682|      0|      }
 3683|      0|      pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
                    pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3684|      0|      idx = new_sym(s, nsym(tree->car->cdr));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3685|      0|      genop_2(s, OP_CLASS, cursp(), idx);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3686|      0|      body = tree->cdr->cdr->car;
 3687|      0|      if (nint(body->cdr->car) == NODE_BEGIN && body->cdr->cdr == NULL) {
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (3687:11): [True: 0, False: 0]
  |  Branch (3687:49): [True: 0, False: 0]
  ------------------
 3688|      0|        genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3689|      0|      }
 3690|      0|      else {
 3691|      0|        idx = scope_body(s, body, val);
 3692|      0|        genop_2(s, OP_EXEC, cursp(), idx);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3693|      0|      }
 3694|      0|      if (val) {
  ------------------
  |  Branch (3694:11): [True: 0, False: 0]
  ------------------
 3695|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3696|      0|      }
 3697|      0|    }
 3698|      0|    break;
 3699|       |
 3700|      0|  case NODE_MODULE:
  ------------------
  |  Branch (3700:3): [True: 0, False: 1.58M]
  ------------------
 3701|      0|    {
 3702|      0|      int idx;
 3703|       |
 3704|      0|      if (tree->car->car == (node*)0) {
  ------------------
  |  Branch (3704:11): [True: 0, False: 0]
  ------------------
 3705|      0|        genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3706|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3707|      0|      }
 3708|      0|      else if (tree->car->car == (node*)1) {
  ------------------
  |  Branch (3708:16): [True: 0, False: 0]
  ------------------
 3709|      0|        genop_1(s, OP_OCLASS, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3710|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3711|      0|      }
 3712|      0|      else {
 3713|      0|        codegen(s, tree->car->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3714|      0|      }
 3715|      0|      pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3716|      0|      idx = new_sym(s, nsym(tree->car->cdr));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3717|      0|      genop_2(s, OP_MODULE, cursp(), idx);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3718|      0|      if (nint(tree->cdr->car->cdr->car) == NODE_BEGIN &&
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (3718:11): [True: 0, False: 0]
  ------------------
 3719|      0|          tree->cdr->car->cdr->cdr == NULL) {
  ------------------
  |  Branch (3719:11): [True: 0, False: 0]
  ------------------
 3720|      0|        genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3721|      0|      }
 3722|      0|      else {
 3723|      0|        idx = scope_body(s, tree->cdr->car, val);
 3724|      0|        genop_2(s, OP_EXEC, cursp(), idx);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3725|      0|      }
 3726|      0|      if (val) {
  ------------------
  |  Branch (3726:11): [True: 0, False: 0]
  ------------------
 3727|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3728|      0|      }
 3729|      0|    }
 3730|      0|    break;
 3731|       |
 3732|      0|  case NODE_SCLASS:
  ------------------
  |  Branch (3732:3): [True: 0, False: 1.58M]
  ------------------
 3733|      0|    {
 3734|      0|      int idx;
 3735|       |
 3736|      0|      codegen(s, tree->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3737|      0|      pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3738|      0|      genop_1(s, OP_SCLASS, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3739|      0|      if (nint(tree->cdr->car->cdr->car) == NODE_BEGIN &&
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (3739:11): [True: 0, False: 0]
  ------------------
 3740|      0|          tree->cdr->car->cdr->cdr == NULL) {
  ------------------
  |  Branch (3740:11): [True: 0, False: 0]
  ------------------
 3741|      0|        genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3742|      0|      }
 3743|      0|      else {
 3744|      0|        idx = scope_body(s, tree->cdr->car, val);
 3745|      0|        genop_2(s, OP_EXEC, cursp(), idx);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3746|      0|      }
 3747|      0|      if (val) {
  ------------------
  |  Branch (3747:11): [True: 0, False: 0]
  ------------------
 3748|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3749|      0|      }
 3750|      0|    }
 3751|      0|    break;
 3752|       |
 3753|    466|  case NODE_DEF:
  ------------------
  |  Branch (3753:3): [True: 466, False: 1.58M]
  ------------------
 3754|    466|    {
 3755|    466|      int sym = new_sym(s, nsym(tree->car));
  ------------------
  |  | 1229|    466|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3756|    466|      int idx = lambda_body(s, tree->cdr, 0);
 3757|       |
 3758|    466|      genop_1(s, OP_TCLASS, cursp());
  ------------------
  |  |  990|    466|#define cursp() (s->sp)
  ------------------
 3759|    466|      push();
  ------------------
  |  |  986|    466|#define push() push_n_(s,1)
  ------------------
 3760|    466|      genop_2(s, OP_METHOD, cursp(), idx);
  ------------------
  |  |  990|    466|#define cursp() (s->sp)
  ------------------
 3761|    466|      push(); pop();
  ------------------
  |  |  986|    466|#define push() push_n_(s,1)
  ------------------
                    push(); pop();
  ------------------
  |  |  988|    466|#define pop() pop_n_(s,1)
  ------------------
 3762|    466|      pop();
  ------------------
  |  |  988|    466|#define pop() pop_n_(s,1)
  ------------------
 3763|    466|      genop_2(s, OP_DEF, cursp(), sym);
  ------------------
  |  |  990|    466|#define cursp() (s->sp)
  ------------------
 3764|    466|      if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3764:11): [True: 0, False: 466]
  ------------------
 3765|    466|    }
 3766|    466|    break;
 3767|       |
 3768|      0|  case NODE_SDEF:
  ------------------
  |  Branch (3768:3): [True: 0, False: 1.58M]
  ------------------
 3769|      0|    {
 3770|      0|      node *recv = tree->car;
 3771|      0|      int sym = new_sym(s, nsym(tree->cdr->car));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 3772|      0|      int idx = lambda_body(s, tree->cdr->cdr, 0);
 3773|       |
 3774|      0|      codegen(s, recv, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 3775|      0|      pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3776|      0|      genop_1(s, OP_SCLASS, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3777|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 3778|      0|      genop_2(s, OP_METHOD, cursp(), idx);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3779|      0|      push(); pop();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
                    push(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3780|      0|      pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 3781|      0|      genop_2(s, OP_DEF, cursp(), sym);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 3782|      0|      if (val) push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
  |  Branch (3782:11): [True: 0, False: 0]
  ------------------
 3783|      0|    }
 3784|      0|    break;
 3785|       |
 3786|      0|  case NODE_POSTEXE:
  ------------------
  |  Branch (3786:3): [True: 0, False: 1.58M]
  ------------------
 3787|      0|    codegen(s, tree, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 3788|      0|    break;
 3789|       |
 3790|      0|  default:
  ------------------
  |  Branch (3790:3): [True: 0, False: 1.58M]
  ------------------
 3791|      0|    break;
 3792|  1.58M|  }
 3793|  1.58M| exit:
 3794|  1.58M|  s->rlev = rlev;
 3795|  1.58M|}
codegen.c:genop_1:
  245|   736k|{
  246|   736k|  s->lastpc = s->pc;
  247|   736k|  check_no_ext_ops(s, a, 0);
  248|   736k|  if (a > 0xff) {
  ------------------
  |  Branch (248:7): [True: 291k, False: 444k]
  ------------------
  249|   291k|    gen_B(s, OP_EXT1);
  250|   291k|    gen_B(s, i);
  251|   291k|    gen_S(s, a);
  252|   291k|  }
  253|   444k|  else {
  254|   444k|    gen_B(s, i);
  255|   444k|    gen_B(s, (uint8_t)a);
  256|   444k|  }
  257|   736k|}
codegen.c:check_no_ext_ops:
  173|  1.48M|{
  174|  1.48M|  if (s->parser->no_ext_ops && (a | b) > 0xff) {
  ------------------
  |  Branch (174:7): [True: 0, False: 1.48M]
  |  Branch (174:32): [True: 0, False: 0]
  ------------------
  175|      0|    codegen_error(s, "need OP_EXTs instruction (currently OP_EXTs are prohibited)");
  176|      0|  }
  177|  1.48M|}
codegen.c:gen_B:
  224|  3.88M|{
  225|  3.88M|  emit_B(s, s->pc, i);
  226|  3.88M|  s->pc++;
  227|  3.88M|}
codegen.c:emit_B:
  187|  5.14M|{
  188|  5.14M|  if (pc >= s->icapa) {
  ------------------
  |  Branch (188:7): [True: 1.24k, False: 5.14M]
  ------------------
  189|  1.24k|    if (pc == UINT32_MAX) {
  ------------------
  |  Branch (189:9): [True: 0, False: 1.24k]
  ------------------
  190|      0|      codegen_error(s, "too big code block");
  191|      0|    }
  192|  1.24k|    if (pc >= UINT32_MAX / 2) {
  ------------------
  |  Branch (192:9): [True: 0, False: 1.24k]
  ------------------
  193|      0|      pc = UINT32_MAX;
  194|      0|    }
  195|  1.24k|    else {
  196|  1.24k|      s->icapa *= 2;
  197|  1.24k|    }
  198|  1.24k|    s->iseq = (mrb_code*)codegen_realloc(s, s->iseq, sizeof(mrb_code)*s->icapa);
  199|  1.24k|    if (s->lines) {
  ------------------
  |  Branch (199:9): [True: 0, False: 1.24k]
  ------------------
  200|      0|      s->lines = (uint16_t*)codegen_realloc(s, s->lines, sizeof(uint16_t)*s->icapa);
  201|      0|    }
  202|  1.24k|  }
  203|  5.14M|  if (s->lines) {
  ------------------
  |  Branch (203:7): [True: 0, False: 5.14M]
  ------------------
  204|      0|    if (s->lineno > 0 || pc == 0)
  ------------------
  |  Branch (204:9): [True: 0, False: 0]
  |  Branch (204:26): [True: 0, False: 0]
  ------------------
  205|      0|      s->lines[pc] = s->lineno;
  206|      0|    else
  207|      0|      s->lines[pc] = s->lines[pc-1];
  208|      0|  }
  209|  5.14M|  s->iseq[pc] = i;
  210|  5.14M|}
codegen.c:gen_S:
  231|   580k|{
  232|   580k|  emit_S(s, s->pc, i);
  233|   580k|  s->pc += 2;
  234|   580k|}
codegen.c:emit_S:
  214|   631k|{
  215|   631k|  uint8_t hi = i>>8;
  216|   631k|  uint8_t lo = i&0xff;
  217|       |
  218|   631k|  emit_B(s, pc,   hi);
  219|   631k|  emit_B(s, pc+1, lo);
  220|   631k|}
codegen.c:push_n_:
  969|  1.44M|{
  970|  1.44M|  if (s->sp+n >= 0xffff) {
  ------------------
  |  Branch (970:7): [True: 0, False: 1.44M]
  ------------------
  971|      0|    codegen_error(s, "too complex expression");
  972|      0|  }
  973|  1.44M|  s->sp+=n;
  974|  1.44M|  nregs_update;
  ------------------
  |  |  966|  1.44M|#define nregs_update do {if (s->sp > s->nregs) s->nregs = s->sp;} while (0)
  |  |  ------------------
  |  |  |  Branch (966:30): [True: 160k, False: 1.28M]
  |  |  |  Branch (966:74): [Folded - Ignored]
  |  |  ------------------
  ------------------
  975|  1.44M|}
codegen.c:new_label:
  181|    466|{
  182|    466|  return s->lastlabel = s->pc;
  183|    466|}
codegen.c:pop_n_:
  979|   645k|{
  980|   645k|  if ((int)s->sp-n < 0) {
  ------------------
  |  Branch (980:7): [True: 0, False: 645k]
  ------------------
  981|      0|    codegen_error(s, "stack pointer underflow");
  982|      0|  }
  983|   645k|  s->sp-=n;
  984|   645k|}
codegen.c:genjmp:
  514|  14.9k|{
  515|  14.9k|  uint32_t pos;
  516|       |
  517|  14.9k|  genop_0(s, i);
  518|  14.9k|  pos = s->pc;
  519|  14.9k|  gen_jmpdst(s, pc);
  520|  14.9k|  return pos;
  521|  14.9k|}
codegen.c:genop_0:
  238|  50.9k|{
  239|  50.9k|  s->lastpc = s->pc;
  240|  50.9k|  gen_B(s, i);
  241|  50.9k|}
codegen.c:gen_jmpdst:
  498|  50.5k|{
  499|       |
  500|  50.5k|  if (pc == JMPLINK_START) {
  ------------------
  |  |  494|  50.5k|#define JMPLINK_START UINT32_MAX
  ------------------
  |  Branch (500:7): [True: 50.5k, False: 0]
  ------------------
  501|  50.5k|    pc = 0;
  502|  50.5k|  }
  503|  50.5k|  uint32_t pos2 = s->pc+2;
  504|  50.5k|  int32_t off = pc - pos2;
  505|       |
  506|  50.5k|  if (off > INT16_MAX || INT16_MIN > off) {
  ------------------
  |  Branch (506:7): [True: 0, False: 50.5k]
  |  Branch (506:26): [True: 9, False: 50.5k]
  ------------------
  507|      9|    codegen_error(s, "too big jump offset");
  508|      9|  }
  509|  50.5k|  gen_S(s, (uint16_t)off);
  510|  50.5k|}
codegen.c:dispatch:
  937|  53.7k|{
  938|  53.7k|  int32_t pos1;
  939|  53.7k|  int32_t offset;
  940|  53.7k|  int16_t newpos;
  941|       |
  942|  53.7k|  if (pos0 == JMPLINK_START) return 0;
  ------------------
  |  |  494|  53.7k|#define JMPLINK_START UINT32_MAX
  ------------------
  |  Branch (942:7): [True: 3.26k, False: 50.5k]
  ------------------
  943|       |
  944|  50.5k|  pos1 = pos0 + 2;
  945|  50.5k|  offset = s->pc - pos1;
  946|  50.5k|  if (offset > INT16_MAX) {
  ------------------
  |  Branch (946:7): [True: 6, False: 50.5k]
  ------------------
  947|      6|    codegen_error(s, "too big jmp offset");
  948|      6|  }
  949|  50.5k|  s->lastlabel = s->pc;
  950|  50.5k|  newpos = (int16_t)PEEK_S(s->iseq+pos0);
  ------------------
  |  |   27|  50.5k|#define PEEK_S(pc) ((pc)[0]<<8|(pc)[1])
  ------------------
  951|  50.5k|  emit_S(s, pos0, (uint16_t)offset);
  952|  50.5k|  if (newpos == 0) return 0;
  ------------------
  |  Branch (952:7): [True: 0, False: 50.5k]
  ------------------
  953|  50.5k|  return pos1+newpos;
  954|  50.5k|}
codegen.c:gen_move:
  590|   180k|{
  591|   180k|  if (nopeep || no_peephole(s)) goto normal;
  ------------------
  |  Branch (591:7): [True: 60.2k, False: 120k]
  |  Branch (591:17): [True: 516, False: 119k]
  ------------------
  592|   119k|  else if (dst == src) return;
  ------------------
  |  Branch (592:12): [True: 0, False: 119k]
  ------------------
  593|   119k|  else {
  594|   119k|    struct mrb_insn_data data = mrb_last_insn(s);
  595|       |
  596|   119k|    switch (data.insn) {
  597|  4.97k|    case OP_MOVE:
  ------------------
  |  Branch (597:5): [True: 4.97k, False: 114k]
  ------------------
  598|  4.97k|      if (dst == src) return;   /* remove useless MOVE */
  ------------------
  |  Branch (598:11): [True: 0, False: 4.97k]
  ------------------
  599|  4.97k|      if (data.a == src) {
  ------------------
  |  Branch (599:11): [True: 4.50k, False: 470]
  ------------------
  600|  4.50k|        if (data.b == dst)      /* skip swapping MOVE */
  ------------------
  |  Branch (600:13): [True: 0, False: 4.50k]
  ------------------
  601|      0|          return;
  602|  4.50k|        if (data.a < s->nlocals) goto normal;
  ------------------
  |  Branch (602:13): [True: 16, False: 4.49k]
  ------------------
  603|  4.49k|        rewind_pc(s);
  ------------------
  |  |  476|  4.49k|#define rewind_pc(s) s->pc = s->lastpc
  ------------------
  604|  4.49k|        s->lastpc = addr_pc(s, mrb_prev_pc(s, data.addr));
  ------------------
  |  |  475|  4.49k|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  605|  4.49k|        gen_move(s, dst, data.b, FALSE);
  ------------------
  |  |   51|  4.49k|#  define FALSE 0
  ------------------
  606|  4.49k|        return;
  607|  4.50k|      }
  608|    470|      if (dst == data.a) {      /* skip overwritten move */
  ------------------
  |  Branch (608:11): [True: 0, False: 470]
  ------------------
  609|      0|        rewind_pc(s);
  ------------------
  |  |  476|      0|#define rewind_pc(s) s->pc = s->lastpc
  ------------------
  610|      0|        s->lastpc = addr_pc(s, mrb_prev_pc(s, data.addr));
  ------------------
  |  |  475|      0|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  611|      0|        gen_move(s, dst, src, FALSE);
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  612|      0|        return;
  613|      0|      }
  614|    470|      goto normal;
  615|    470|    case OP_LOADNIL: case OP_LOADSELF: case OP_LOADT: case OP_LOADF:
  ------------------
  |  Branch (615:5): [True: 0, False: 119k]
  |  Branch (615:22): [True: 0, False: 119k]
  |  Branch (615:40): [True: 0, False: 119k]
  |  Branch (615:55): [True: 0, False: 119k]
  ------------------
  616|    110|    case OP_LOADI__1:
  ------------------
  |  Branch (616:5): [True: 110, False: 119k]
  ------------------
  617|   105k|    case OP_LOADI_0: case OP_LOADI_1: case OP_LOADI_2: case OP_LOADI_3:
  ------------------
  |  Branch (617:5): [True: 714, False: 119k]
  |  Branch (617:22): [True: 104k, False: 15.7k]
  |  Branch (617:39): [True: 664, False: 119k]
  |  Branch (617:56): [True: 244, False: 119k]
  ------------------
  618|   106k|    case OP_LOADI_4: case OP_LOADI_5: case OP_LOADI_6: case OP_LOADI_7:
  ------------------
  |  Branch (618:5): [True: 184, False: 119k]
  |  Branch (618:22): [True: 326, False: 119k]
  |  Branch (618:39): [True: 482, False: 119k]
  |  Branch (618:56): [True: 242, False: 119k]
  ------------------
  619|   106k|      if (data.a != src || data.a < s->nlocals) goto normal;
  ------------------
  |  Branch (619:11): [True: 2.22k, False: 104k]
  |  Branch (619:28): [True: 62, False: 104k]
  ------------------
  620|   104k|      rewind_pc(s);
  ------------------
  |  |  476|   104k|#define rewind_pc(s) s->pc = s->lastpc
  ------------------
  621|   104k|      genop_1(s, data.insn, dst);
  622|   104k|      return;
  623|      0|    case OP_HASH:
  ------------------
  |  Branch (623:5): [True: 0, False: 119k]
  ------------------
  624|      0|      if (data.b != 0) goto normal;
  ------------------
  |  Branch (624:11): [True: 0, False: 0]
  ------------------
  625|       |      /* fall through */
  626|    919|    case OP_LOADI: case OP_LOADINEG:
  ------------------
  |  Branch (626:5): [True: 783, False: 119k]
  |  Branch (626:20): [True: 136, False: 119k]
  ------------------
  627|  1.07k|    case OP_LOADL: case OP_LOADSYM:
  ------------------
  |  Branch (627:5): [True: 151, False: 119k]
  |  Branch (627:20): [True: 0, False: 119k]
  ------------------
  628|  1.07k|    case OP_GETGV: case OP_GETSV: case OP_GETIV: case OP_GETCV:
  ------------------
  |  Branch (628:5): [True: 0, False: 119k]
  |  Branch (628:20): [True: 0, False: 119k]
  |  Branch (628:35): [True: 0, False: 119k]
  |  Branch (628:50): [True: 0, False: 119k]
  ------------------
  629|  1.07k|    case OP_GETCONST: case OP_STRING:
  ------------------
  |  Branch (629:5): [True: 0, False: 119k]
  |  Branch (629:23): [True: 0, False: 119k]
  ------------------
  630|  1.07k|    case OP_LAMBDA: case OP_BLOCK: case OP_METHOD: case OP_BLKPUSH:
  ------------------
  |  Branch (630:5): [True: 0, False: 119k]
  |  Branch (630:21): [True: 0, False: 119k]
  |  Branch (630:36): [True: 0, False: 119k]
  |  Branch (630:52): [True: 0, False: 119k]
  ------------------
  631|  1.07k|      if (data.a != src || data.a < s->nlocals) goto normal;
  ------------------
  |  Branch (631:11): [True: 17, False: 1.05k]
  |  Branch (631:28): [True: 5, False: 1.04k]
  ------------------
  632|  1.04k|      rewind_pc(s);
  ------------------
  |  |  476|  1.04k|#define rewind_pc(s) s->pc = s->lastpc
  ------------------
  633|  1.04k|      genop_2(s, data.insn, dst, data.b);
  634|  1.04k|      return;
  635|    260|    case OP_LOADI16:
  ------------------
  |  Branch (635:5): [True: 260, False: 119k]
  ------------------
  636|    260|      if (data.a != src || data.a < s->nlocals) goto normal;
  ------------------
  |  Branch (636:11): [True: 64, False: 196]
  |  Branch (636:28): [True: 20, False: 176]
  ------------------
  637|    176|      rewind_pc(s);
  ------------------
  |  |  476|    176|#define rewind_pc(s) s->pc = s->lastpc
  ------------------
  638|    176|      genop_2S(s, data.insn, dst, data.b);
  639|    176|      return;
  640|    274|    case OP_LOADI32:
  ------------------
  |  Branch (640:5): [True: 274, False: 119k]
  ------------------
  641|    274|      if (data.a != src || data.a < s->nlocals) goto normal;
  ------------------
  |  Branch (641:11): [True: 45, False: 229]
  |  Branch (641:28): [True: 33, False: 196]
  ------------------
  642|    196|      else {
  643|    196|        uint32_t i = (uint32_t)data.b<<16|data.c;
  644|    196|        rewind_pc(s);
  ------------------
  |  |  476|    196|#define rewind_pc(s) s->pc = s->lastpc
  ------------------
  645|    196|        genop_2SS(s, data.insn, dst, i);
  646|    196|      }
  647|    196|      return;
  648|    196|    case OP_ARRAY:
  ------------------
  |  Branch (648:5): [True: 0, False: 119k]
  ------------------
  649|      0|      if (data.a != src || data.a < s->nlocals || data.a < dst) goto normal;
  ------------------
  |  Branch (649:11): [True: 0, False: 0]
  |  Branch (649:28): [True: 0, False: 0]
  |  Branch (649:51): [True: 0, False: 0]
  ------------------
  650|      0|      rewind_pc(s);
  ------------------
  |  |  476|      0|#define rewind_pc(s) s->pc = s->lastpc
  ------------------
  651|      0|      if (data.b == 0 || dst == data.a)
  ------------------
  |  Branch (651:11): [True: 0, False: 0]
  |  Branch (651:26): [True: 0, False: 0]
  ------------------
  652|      0|        genop_2(s, OP_ARRAY, dst, 0);
  653|      0|      else
  654|      0|        genop_3(s, OP_ARRAY2, dst, data.a, data.b);
  655|      0|      return;
  656|      0|    case OP_ARRAY2:
  ------------------
  |  Branch (656:5): [True: 0, False: 119k]
  ------------------
  657|      0|      if (data.a != src || data.a < s->nlocals || data.a < dst) goto normal;
  ------------------
  |  Branch (657:11): [True: 0, False: 0]
  |  Branch (657:28): [True: 0, False: 0]
  |  Branch (657:51): [True: 0, False: 0]
  ------------------
  658|      0|      rewind_pc(s);
  ------------------
  |  |  476|      0|#define rewind_pc(s) s->pc = s->lastpc
  ------------------
  659|      0|      genop_3(s, OP_ARRAY2, dst, data.b, data.c);
  660|      0|      return;
  661|      0|    case OP_AREF:
  ------------------
  |  Branch (661:5): [True: 0, False: 119k]
  ------------------
  662|      0|    case OP_GETUPVAR:
  ------------------
  |  Branch (662:5): [True: 0, False: 119k]
  ------------------
  663|      0|      if (data.a != src || data.a < s->nlocals) goto normal;
  ------------------
  |  Branch (663:11): [True: 0, False: 0]
  |  Branch (663:28): [True: 0, False: 0]
  ------------------
  664|      0|      rewind_pc(s);
  ------------------
  |  |  476|      0|#define rewind_pc(s) s->pc = s->lastpc
  ------------------
  665|      0|      genop_3(s, data.insn, dst, data.b, data.c);
  666|      0|      return;
  667|    865|    case OP_ADDI: case OP_SUBI:
  ------------------
  |  Branch (667:5): [True: 649, False: 119k]
  |  Branch (667:19): [True: 216, False: 119k]
  ------------------
  668|    865|      if (addr_pc(s, data.addr) == s->lastlabel || data.a != src || data.a < s->nlocals) goto normal;
  ------------------
  |  |  475|    865|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  |  Branch (668:11): [True: 15, False: 850]
  |  Branch (668:52): [True: 1, False: 849]
  |  Branch (668:69): [True: 0, False: 849]
  ------------------
  669|    849|      else {
  670|    849|        struct mrb_insn_data data0 = mrb_decode_insn(mrb_prev_pc(s, data.addr));
  671|    849|        if (data0.insn != OP_MOVE || data0.a != data.a || data0.b != dst) goto normal;
  ------------------
  |  Branch (671:13): [True: 414, False: 435]
  |  Branch (671:38): [True: 0, False: 435]
  |  Branch (671:59): [True: 435, False: 0]
  ------------------
  672|      0|        s->pc = addr_pc(s, data0.addr);
  ------------------
  |  |  475|      0|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  673|      0|        if (addr_pc(s, data0.addr) != s->lastlabel) {
  ------------------
  |  |  475|      0|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  |  Branch (673:13): [True: 0, False: 0]
  ------------------
  674|       |          /* constant folding */
  675|      0|          data0 = mrb_decode_insn(mrb_prev_pc(s, data0.addr));
  676|      0|          mrb_int n;
  677|      0|          if (data0.a == dst && get_int_operand(s, &data0, &n)) {
  ------------------
  |  Branch (677:15): [True: 0, False: 0]
  |  Branch (677:33): [True: 0, False: 0]
  ------------------
  678|      0|            if ((data.insn == OP_ADDI && !mrb_int_add_overflow(n, data.b, &n)) ||
  ------------------
  |  Branch (678:18): [True: 0, False: 0]
  |  Branch (678:42): [True: 0, False: 0]
  ------------------
  679|      0|                (data.insn == OP_SUBI && !mrb_int_sub_overflow(n, data.b, &n))) {
  ------------------
  |  Branch (679:18): [True: 0, False: 0]
  |  Branch (679:42): [True: 0, False: 0]
  ------------------
  680|      0|              s->pc = addr_pc(s, data0.addr);
  ------------------
  |  |  475|      0|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  681|      0|              gen_int(s, dst, n);
  682|      0|              return;
  683|      0|            }
  684|      0|          }
  685|      0|        }
  686|      0|      }
  687|      0|      genop_2(s, data.insn, dst, data.b);
  688|      0|      return;
  689|  5.36k|    default:
  ------------------
  |  Branch (689:5): [True: 5.36k, False: 114k]
  ------------------
  690|  5.36k|      break;
  691|   119k|    }
  692|   119k|  }
  693|  69.9k| normal:
  694|  69.9k|  genop_2(s, OP_MOVE, dst, src);
  695|  69.9k|  return;
  696|   180k|}
codegen.c:no_peephole:
  490|   317k|{
  491|   317k|  return no_optimize(s) || s->lastlabel == s->pc || s->pc == 0 || s->pc == s->lastpc;
  ------------------
  |  Branch (491:10): [True: 0, False: 317k]
  |  Branch (491:28): [True: 7.35k, False: 310k]
  |  Branch (491:53): [True: 0, False: 310k]
  |  Branch (491:67): [True: 54, False: 310k]
  ------------------
  492|   317k|}
codegen.c:no_optimize:
  330|   472k|{
  331|   472k|  if (s && s->parser && s->parser->no_optimize)
  ------------------
  |  Branch (331:7): [True: 472k, False: 0]
  |  Branch (331:12): [True: 472k, False: 0]
  |  Branch (331:25): [True: 0, False: 472k]
  ------------------
  332|      0|    return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  333|   472k|  return FALSE;
  ------------------
  |  |   51|   472k|#  define FALSE 0
  ------------------
  334|   472k|}
codegen.c:mrb_last_insn:
  480|   295k|{
  481|   295k|  if (s->pc == 0) {
  ------------------
  |  Branch (481:7): [True: 0, False: 295k]
  ------------------
  482|      0|    struct mrb_insn_data data = { OP_NOP, 0 };
  483|      0|    return data;
  484|      0|  }
  485|   295k|  return mrb_decode_insn(&s->iseq[s->lastpc]);
  486|   295k|}
codegen.c:mrb_prev_pc:
  449|  98.9k|{
  450|  98.9k|  const mrb_code *prev_pc = NULL;
  451|  98.9k|  const mrb_code *i = s->iseq;
  452|       |
  453|   172M|  while (i<pc) {
  ------------------
  |  Branch (453:10): [True: 171M, False: 98.9k]
  ------------------
  454|   171M|    uint8_t insn = i[0];
  455|   171M|    prev_pc = i;
  456|   171M|    switch (insn) {
  457|  17.9M|    case OP_EXT1:
  ------------------
  |  Branch (457:5): [True: 17.9M, False: 154M]
  ------------------
  458|  17.9M|      i += mrb_insn_size1[i[1]] + 1;
  459|  17.9M|      break;
  460|   210k|    case OP_EXT2:
  ------------------
  |  Branch (460:5): [True: 210k, False: 171M]
  ------------------
  461|   210k|      i += mrb_insn_size2[i[1]] + 1;
  462|   210k|      break;
  463|   216k|    case OP_EXT3:
  ------------------
  |  Branch (463:5): [True: 216k, False: 171M]
  ------------------
  464|   216k|      i += mrb_insn_size3[i[1]] + 1;
  465|   216k|      break;
  466|   153M|    default:
  ------------------
  |  Branch (466:5): [True: 153M, False: 18.3M]
  ------------------
  467|   153M|      i += mrb_insn_size[insn];
  468|   153M|      break;
  469|   171M|    }
  470|   171M|  }
  471|  98.9k|  return prev_pc;
  472|  98.9k|}
codegen.c:genop_2SS:
  305|  1.12k|{
  306|  1.12k|  genop_1(s, i, a);
  307|  1.12k|  gen_S(s, b>>16);
  308|  1.12k|  gen_S(s, b&0xffff);
  309|  1.12k|}
codegen.c:get_int_operand:
  753|   233k|{
  754|   233k|  switch (data->insn) {
  755|  1.52k|  case OP_LOADI__1:
  ------------------
  |  Branch (755:3): [True: 1.52k, False: 231k]
  ------------------
  756|  1.52k|    *n = -1;
  757|  1.52k|    return TRUE;
  ------------------
  |  |   54|  1.52k|#  define TRUE 1
  ------------------
  758|       |
  759|  5.57k|  case OP_LOADINEG:
  ------------------
  |  Branch (759:3): [True: 5.57k, False: 227k]
  ------------------
  760|  5.57k|    *n = -data->b;
  761|  5.57k|    return TRUE;
  ------------------
  |  |   54|  5.57k|#  define TRUE 1
  ------------------
  762|       |
  763|  94.3k|  case OP_LOADI_0: case OP_LOADI_1: case OP_LOADI_2: case OP_LOADI_3:
  ------------------
  |  Branch (763:3): [True: 8.76k, False: 224k]
  |  Branch (763:20): [True: 82.2k, False: 151k]
  |  Branch (763:37): [True: 1.71k, False: 231k]
  |  Branch (763:54): [True: 1.58k, False: 231k]
  ------------------
  764|   101k|  case OP_LOADI_4: case OP_LOADI_5: case OP_LOADI_6: case OP_LOADI_7:
  ------------------
  |  Branch (764:3): [True: 1.43k, False: 231k]
  |  Branch (764:20): [True: 1.13k, False: 232k]
  |  Branch (764:37): [True: 3.01k, False: 230k]
  |  Branch (764:54): [True: 1.89k, False: 231k]
  ------------------
  765|   101k|    *n = data->insn - OP_LOADI_0;
  766|   101k|    return TRUE;
  ------------------
  |  |   54|   101k|#  define TRUE 1
  ------------------
  767|       |
  768|  10.3k|  case OP_LOADI:
  ------------------
  |  Branch (768:3): [True: 10.3k, False: 222k]
  ------------------
  769|  11.1k|  case OP_LOADI16:
  ------------------
  |  Branch (769:3): [True: 822, False: 232k]
  ------------------
  770|  11.1k|    *n = (int16_t)data->b;
  771|  11.1k|    return TRUE;
  ------------------
  |  |   54|  11.1k|#  define TRUE 1
  ------------------
  772|       |
  773|    699|  case OP_LOADI32:
  ------------------
  |  Branch (773:3): [True: 699, False: 232k]
  ------------------
  774|    699|    *n = (int32_t)((uint32_t)data->b<<16)+data->c;
  775|    699|    return TRUE;
  ------------------
  |  |   54|    699|#  define TRUE 1
  ------------------
  776|       |
  777|  1.59k|  case OP_LOADL:
  ------------------
  |  Branch (777:3): [True: 1.59k, False: 231k]
  ------------------
  778|  1.59k|    {
  779|  1.59k|      mrb_pool_value *pv = &s->pool[data->b];
  780|       |
  781|  1.59k|      if (pv->tt == IREP_TT_INT32) {
  ------------------
  |  Branch (781:11): [True: 0, False: 1.59k]
  ------------------
  782|      0|        *n = (mrb_int)pv->u.i32;
  783|      0|      }
  784|  1.59k|#ifdef MRB_INT64
  785|  1.59k|      else if (pv->tt == IREP_TT_INT64) {
  ------------------
  |  Branch (785:16): [True: 1.59k, False: 0]
  ------------------
  786|  1.59k|        *n = (mrb_int)pv->u.i64;
  787|  1.59k|      }
  788|      0|#endif
  789|      0|      else {
  790|      0|        return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  791|      0|      }
  792|  1.59k|    }
  793|  1.59k|    return TRUE;
  ------------------
  |  |   54|  1.59k|#  define TRUE 1
  ------------------
  794|       |
  795|   110k|  default:
  ------------------
  |  Branch (795:3): [True: 110k, False: 122k]
  ------------------
  796|   110k|    return FALSE;
  ------------------
  |  |   51|   110k|#  define FALSE 0
  ------------------
  797|   233k|  }
  798|   233k|}
codegen.c:genop_3:
  291|  82.9k|{
  292|  82.9k|  genop_2(s, i, a, b);
  293|  82.9k|  gen_B(s, (uint8_t)c);
  294|  82.9k|}
codegen.c:new_sym:
 1135|   144k|{
 1136|   144k|  int i, len;
 1137|       |
 1138|   144k|  mrb_assert(s->irep);
  ------------------
  |  |   68|   144k|#define mrb_assert(p) ((void)0)
  ------------------
 1139|       |
 1140|   144k|  len = s->irep->slen;
 1141|   531k|  for (i=0; i<len; i++) {
  ------------------
  |  Branch (1141:13): [True: 525k, False: 5.31k]
  ------------------
 1142|   525k|    if (s->syms[i] == sym) return i;
  ------------------
  |  Branch (1142:9): [True: 139k, False: 386k]
  ------------------
 1143|   525k|  }
 1144|  5.31k|  if (s->irep->slen >= s->scapa) {
  ------------------
  |  Branch (1144:7): [True: 0, False: 5.31k]
  ------------------
 1145|      0|    s->scapa *= 2;
 1146|      0|    if (s->scapa > 0xffff) {
  ------------------
  |  Branch (1146:9): [True: 0, False: 0]
  ------------------
 1147|      0|      codegen_error(s, "too many symbols");
 1148|      0|    }
 1149|      0|    s->syms = (mrb_sym*)codegen_realloc(s, s->syms, sizeof(mrb_sym)*s->scapa);
 1150|      0|  }
 1151|  5.31k|  s->syms[s->irep->slen] = sym;
 1152|  5.31k|  return s->irep->slen++;
 1153|   144k|}
codegen.c:genop_2:
  261|   746k|{
  262|   746k|  s->lastpc = s->pc;
  263|   746k|  check_no_ext_ops(s, a, b);
  264|   746k|  if (a > 0xff && b > 0xff) {
  ------------------
  |  Branch (264:7): [True: 227k, False: 518k]
  |  Branch (264:19): [True: 2.86k, False: 224k]
  ------------------
  265|  2.86k|    gen_B(s, OP_EXT3);
  266|  2.86k|    gen_B(s, i);
  267|  2.86k|    gen_S(s, a);
  268|  2.86k|    gen_S(s, b);
  269|  2.86k|  }
  270|   743k|  else if (b > 0xff) {
  ------------------
  |  Branch (270:12): [True: 1.34k, False: 742k]
  ------------------
  271|  1.34k|    gen_B(s, OP_EXT2);
  272|  1.34k|    gen_B(s, i);
  273|  1.34k|    gen_B(s, (uint8_t)a);
  274|  1.34k|    gen_S(s, b);
  275|  1.34k|  }
  276|   742k|  else if (a > 0xff) {
  ------------------
  |  Branch (276:12): [True: 224k, False: 517k]
  ------------------
  277|   224k|    gen_B(s, OP_EXT1);
  278|   224k|    gen_B(s, i);
  279|   224k|    gen_S(s, a);
  280|   224k|    gen_B(s, (uint8_t)b);
  281|   224k|  }
  282|   517k|  else {
  283|   517k|    gen_B(s, i);
  284|   517k|    gen_B(s, (uint8_t)a);
  285|   517k|    gen_B(s, (uint8_t)b);
  286|   517k|  }
  287|   746k|}
codegen.c:genjmp2:
  527|  39.4k|{
  528|  39.4k|  uint32_t pos;
  529|       |
  530|  39.4k|  if (!no_peephole(s) && !val) {
  ------------------
  |  Branch (530:7): [True: 39.2k, False: 189]
  |  Branch (530:26): [True: 24.7k, False: 14.4k]
  ------------------
  531|  24.7k|    struct mrb_insn_data data = mrb_last_insn(s);
  532|       |
  533|  24.7k|    switch (data.insn) {
  ------------------
  |  Branch (533:13): [True: 19.3k, False: 5.46k]
  ------------------
  534|  1.59k|    case OP_MOVE:
  ------------------
  |  Branch (534:5): [True: 1.59k, False: 23.2k]
  ------------------
  535|  1.59k|      if (data.a == a && data.a > s->nlocals) {
  ------------------
  |  Branch (535:11): [True: 1.59k, False: 0]
  |  Branch (535:26): [True: 0, False: 1.59k]
  ------------------
  536|      0|        rewind_pc(s);
  ------------------
  |  |  476|      0|#define rewind_pc(s) s->pc = s->lastpc
  ------------------
  537|      0|        a = data.b;
  538|      0|      }
  539|  1.59k|      break;
  540|      0|    case OP_LOADNIL:
  ------------------
  |  Branch (540:5): [True: 0, False: 24.7k]
  ------------------
  541|      0|    case OP_LOADF:
  ------------------
  |  Branch (541:5): [True: 0, False: 24.7k]
  ------------------
  542|      0|      if (data.a == a || data.a > s->nlocals) {
  ------------------
  |  Branch (542:11): [True: 0, False: 0]
  |  Branch (542:26): [True: 0, False: 0]
  ------------------
  543|      0|        s->pc = addr_pc(s, data.addr);
  ------------------
  |  |  475|      0|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  544|      0|        if (i == OP_JMPNOT || (i == OP_JMPNIL && data.insn == OP_LOADNIL)) {
  ------------------
  |  Branch (544:13): [True: 0, False: 0]
  |  Branch (544:32): [True: 0, False: 0]
  |  Branch (544:50): [True: 0, False: 0]
  ------------------
  545|      0|          return genjmp(s, OP_JMP, pc);
  546|      0|        }
  547|      0|        else {                  /* OP_JMPIF */
  548|      0|          return JMPLINK_START;
  ------------------
  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  ------------------
  549|      0|        }
  550|      0|      }
  551|      0|      break;
  552|    857|    case OP_LOADT: case OP_LOADI: case OP_LOADINEG: case OP_LOADI__1:
  ------------------
  |  Branch (552:5): [True: 0, False: 24.7k]
  |  Branch (552:20): [True: 469, False: 24.3k]
  |  Branch (552:35): [True: 356, False: 24.4k]
  |  Branch (552:53): [True: 32, False: 24.7k]
  ------------------
  553|  2.66k|    case OP_LOADI_0: case OP_LOADI_1: case OP_LOADI_2: case OP_LOADI_3:
  ------------------
  |  Branch (553:5): [True: 507, False: 24.2k]
  |  Branch (553:22): [True: 931, False: 23.8k]
  |  Branch (553:39): [True: 203, False: 24.5k]
  |  Branch (553:56): [True: 166, False: 24.6k]
  ------------------
  554|  3.87k|    case OP_LOADI_4: case OP_LOADI_5: case OP_LOADI_6: case OP_LOADI_7:
  ------------------
  |  Branch (554:5): [True: 156, False: 24.6k]
  |  Branch (554:22): [True: 660, False: 24.1k]
  |  Branch (554:39): [True: 338, False: 24.4k]
  |  Branch (554:56): [True: 57, False: 24.7k]
  ------------------
  555|  3.87k|      if (data.a == a || data.a > s->nlocals) {
  ------------------
  |  Branch (555:11): [True: 3.87k, False: 0]
  |  Branch (555:26): [True: 0, False: 0]
  ------------------
  556|  3.87k|        s->pc = addr_pc(s, data.addr);
  ------------------
  |  |  475|  3.87k|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  557|  3.87k|        if (i == OP_JMPIF) {
  ------------------
  |  Branch (557:13): [True: 605, False: 3.27k]
  ------------------
  558|    605|          return genjmp(s, OP_JMP, pc);
  559|    605|        }
  560|  3.27k|        else {                  /* OP_JMPNOT and OP_JMPNIL */
  561|  3.27k|          return JMPLINK_START;
  ------------------
  |  |  494|  3.27k|#define JMPLINK_START UINT32_MAX
  ------------------
  562|  3.27k|        }
  563|  3.87k|      }
  564|      0|      break;
  565|  24.7k|    }
  566|  24.7k|  }
  567|       |
  568|  35.5k|  if (a > 0xff) {
  ------------------
  |  Branch (568:7): [True: 2.88k, False: 32.7k]
  ------------------
  569|  2.88k|    check_no_ext_ops(s, a, 0);
  570|  2.88k|    gen_B(s, OP_EXT1);
  571|  2.88k|    genop_0(s, i);
  572|  2.88k|    gen_S(s, a);
  573|  2.88k|  }
  574|  32.7k|  else {
  575|  32.7k|    genop_0(s, i);
  576|  32.7k|    gen_B(s, (uint8_t)a);
  577|  32.7k|  }
  578|  35.5k|  pos = s->pc;
  579|  35.5k|  gen_jmpdst(s, pc);
  580|  35.5k|  return pos;
  581|  39.4k|}
codegen.c:gen_assignment:
 1809|   139k|{
 1810|   139k|  int idx;
 1811|   139k|  int type = nint(tree->car);
  ------------------
  |  | 1227|   139k|#define nint(x) ((int)(intptr_t)(x))
  ------------------
 1812|       |
 1813|   139k|  switch (type) {
 1814|      0|  case NODE_GVAR:
  ------------------
  |  Branch (1814:3): [True: 0, False: 139k]
  ------------------
 1815|      0|  case NODE_ARG:
  ------------------
  |  Branch (1815:3): [True: 0, False: 139k]
  ------------------
 1816|   119k|  case NODE_LVAR:
  ------------------
  |  Branch (1816:3): [True: 119k, False: 20.1k]
  ------------------
 1817|   139k|  case NODE_IVAR:
  ------------------
  |  Branch (1817:3): [True: 20.1k, False: 119k]
  ------------------
 1818|   139k|  case NODE_CVAR:
  ------------------
  |  Branch (1818:3): [True: 0, False: 139k]
  ------------------
 1819|   139k|  case NODE_CONST:
  ------------------
  |  Branch (1819:3): [True: 0, False: 139k]
  ------------------
 1820|   139k|  case NODE_NIL:
  ------------------
  |  Branch (1820:3): [True: 0, False: 139k]
  ------------------
 1821|   139k|  case NODE_MASGN:
  ------------------
  |  Branch (1821:3): [True: 0, False: 139k]
  ------------------
 1822|   139k|    if (rhs) {
  ------------------
  |  Branch (1822:9): [True: 119k, False: 20.1k]
  ------------------
 1823|   119k|      codegen(s, rhs, VAL);
  ------------------
  |  |  326|   119k|#define VAL    1
  ------------------
 1824|   119k|      pop();
  ------------------
  |  |  988|   119k|#define pop() pop_n_(s,1)
  ------------------
 1825|   119k|      sp = cursp();
  ------------------
  |  |  990|   119k|#define cursp() (s->sp)
  ------------------
 1826|   119k|    }
 1827|   139k|    break;
 1828|       |
 1829|      0|  case NODE_COLON2:
  ------------------
  |  Branch (1829:3): [True: 0, False: 139k]
  ------------------
 1830|      0|  case NODE_COLON3:
  ------------------
  |  Branch (1830:3): [True: 0, False: 139k]
  ------------------
 1831|      0|  case NODE_CALL:
  ------------------
  |  Branch (1831:3): [True: 0, False: 139k]
  ------------------
 1832|      0|  case NODE_SCALL:
  ------------------
  |  Branch (1832:3): [True: 0, False: 139k]
  ------------------
 1833|       |    /* keep evaluation order */
 1834|      0|    break;
 1835|       |
 1836|      0|  case NODE_NVAR:
  ------------------
  |  Branch (1836:3): [True: 0, False: 139k]
  ------------------
 1837|       |    /* never happens; should have already checked in the parser */
 1838|      0|    codegen_error(s, "Can't assign to numbered parameter");
 1839|      0|    break;
 1840|       |
 1841|      0|  default:
  ------------------
  |  Branch (1841:3): [True: 0, False: 139k]
  ------------------
 1842|      0|    codegen_error(s, "unknown lhs");
 1843|      0|    break;
 1844|   139k|  }
 1845|       |
 1846|   139k|  tree = tree->cdr;
 1847|   139k|  switch (type) {
 1848|      0|  case NODE_GVAR:
  ------------------
  |  Branch (1848:3): [True: 0, False: 139k]
  ------------------
 1849|      0|    gen_setxv(s, OP_SETGV, sp, nsym(tree), val);
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1850|      0|    break;
 1851|      0|  case NODE_ARG:
  ------------------
  |  Branch (1851:3): [True: 0, False: 139k]
  ------------------
 1852|   119k|  case NODE_LVAR:
  ------------------
  |  Branch (1852:3): [True: 119k, False: 20.1k]
  ------------------
 1853|   119k|    idx = lv_idx(s, nsym(tree));
  ------------------
  |  | 1229|   119k|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1854|   119k|    if (idx > 0) {
  ------------------
  |  Branch (1854:9): [True: 119k, False: 0]
  ------------------
 1855|   119k|      if (idx != sp) {
  ------------------
  |  Branch (1855:11): [True: 119k, False: 0]
  ------------------
 1856|   119k|        gen_move(s, idx, sp, val);
 1857|   119k|      }
 1858|   119k|      break;
 1859|   119k|    }
 1860|      0|    else {                      /* upvar */
 1861|      0|      gen_setupvar(s, sp, nsym(tree));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1862|      0|    }
 1863|      0|    break;
 1864|  20.1k|  case NODE_IVAR:
  ------------------
  |  Branch (1864:3): [True: 20.1k, False: 119k]
  ------------------
 1865|  20.1k|    gen_setxv(s, OP_SETIV, sp, nsym(tree), val);
  ------------------
  |  | 1229|  20.1k|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1866|  20.1k|    break;
 1867|      0|  case NODE_CVAR:
  ------------------
  |  Branch (1867:3): [True: 0, False: 139k]
  ------------------
 1868|      0|    gen_setxv(s, OP_SETCV, sp, nsym(tree), val);
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1869|      0|    break;
 1870|      0|  case NODE_CONST:
  ------------------
  |  Branch (1870:3): [True: 0, False: 139k]
  ------------------
 1871|      0|    gen_setxv(s, OP_SETCONST, sp, nsym(tree), val);
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1872|      0|    break;
 1873|      0|  case NODE_COLON2:
  ------------------
  |  Branch (1873:3): [True: 0, False: 139k]
  ------------------
 1874|      0|  case NODE_COLON3:
  ------------------
  |  Branch (1874:3): [True: 0, False: 139k]
  ------------------
 1875|      0|    if (sp) {
  ------------------
  |  Branch (1875:9): [True: 0, False: 0]
  ------------------
 1876|      0|      gen_move(s, cursp(), sp, 0);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1877|      0|    }
 1878|      0|    sp = cursp();
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1879|      0|    push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 1880|      0|    if (type == NODE_COLON2) {
  ------------------
  |  Branch (1880:9): [True: 0, False: 0]
  ------------------
 1881|      0|      codegen(s, tree->car, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 1882|      0|      idx = new_sym(s, nsym(tree->cdr));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1883|      0|    }
 1884|      0|    else {   /* NODE_COLON3 */
 1885|      0|      genop_1(s, OP_OCLASS, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1886|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 1887|      0|      idx = new_sym(s, nsym(tree));
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1888|      0|    }
 1889|      0|    if (rhs) {
  ------------------
  |  Branch (1889:9): [True: 0, False: 0]
  ------------------
 1890|      0|      codegen(s, rhs, VAL); pop();
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
                    codegen(s, rhs, VAL); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 1891|      0|      gen_move(s, sp, cursp(), 0);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1892|      0|    }
 1893|      0|    pop_n(2);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 1894|      0|    genop_2(s, OP_SETMCNST, sp, idx);
 1895|      0|    break;
 1896|       |
 1897|      0|  case NODE_CALL:
  ------------------
  |  Branch (1897:3): [True: 0, False: 139k]
  ------------------
 1898|      0|  case NODE_SCALL:
  ------------------
  |  Branch (1898:3): [True: 0, False: 139k]
  ------------------
 1899|      0|    {
 1900|      0|      int noself = 0, safe = (type == NODE_SCALL), skip = 0, top, call, n = 0;
 1901|      0|      mrb_sym mid = nsym(tree->cdr->car);
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1902|       |
 1903|      0|      top = cursp();
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1904|      0|      if (val || sp == cursp()) {
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
  |  Branch (1904:11): [True: 0, False: 0]
  |  Branch (1904:18): [True: 0, False: 0]
  ------------------
 1905|      0|        push();                   /* room for retval */
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 1906|      0|      }
 1907|      0|      call = cursp();
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1908|      0|      if (!tree->car) {
  ------------------
  |  Branch (1908:11): [True: 0, False: 0]
  ------------------
 1909|      0|        noself = 1;
 1910|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 1911|      0|      }
 1912|      0|      else {
 1913|      0|        codegen(s, tree->car, VAL); /* receiver */
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 1914|      0|      }
 1915|      0|      if (safe) {
  ------------------
  |  Branch (1915:11): [True: 0, False: 0]
  ------------------
 1916|      0|        int recv = cursp()-1;
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1917|      0|        gen_move(s, cursp(), recv, 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1918|      0|        skip = genjmp2_0(s, OP_JMPNIL, cursp(), val);
  ------------------
  |  |  583|      0|#define genjmp2_0(s,i,a,val) genjmp2(s,i,a,JMPLINK_START,val)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 1919|      0|      }
 1920|      0|      tree = tree->cdr->cdr->car;
 1921|      0|      if (tree) {
  ------------------
  |  Branch (1921:11): [True: 0, False: 0]
  ------------------
 1922|      0|        if (tree->car) {            /* positional arguments */
  ------------------
  |  Branch (1922:13): [True: 0, False: 0]
  ------------------
 1923|      0|          n = gen_values(s, tree->car, VAL, (tree->cdr->car)?13:14);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
  |  Branch (1923:45): [True: 0, False: 0]
  ------------------
 1924|      0|          if (n < 0) {              /* variable length */
  ------------------
  |  Branch (1924:15): [True: 0, False: 0]
  ------------------
 1925|      0|            n = 15;
 1926|      0|            push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 1927|      0|          }
 1928|      0|        }
 1929|      0|        if (tree->cdr->car) {       /* keyword arguments */
  ------------------
  |  Branch (1929:13): [True: 0, False: 0]
  ------------------
 1930|      0|          if (n == 13 || n == 14) {
  ------------------
  |  Branch (1930:15): [True: 0, False: 0]
  |  Branch (1930:26): [True: 0, False: 0]
  ------------------
 1931|      0|            pop_n(n);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 1932|      0|            genop_2(s, OP_ARRAY, cursp(), n);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1933|      0|            push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 1934|      0|            n = 15;
 1935|      0|          }
 1936|      0|          gen_hash(s, tree->cdr->car->cdr, VAL, 0);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 1937|      0|          if (n < 14) {
  ------------------
  |  Branch (1937:15): [True: 0, False: 0]
  ------------------
 1938|      0|            n++;
 1939|      0|          }
 1940|      0|          else {
 1941|      0|            pop_n(2);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 1942|      0|            genop_2(s, OP_ARYPUSH, cursp(), 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1943|      0|          }
 1944|      0|          push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 1945|      0|        }
 1946|      0|      }
 1947|      0|      if (rhs) {
  ------------------
  |  Branch (1947:11): [True: 0, False: 0]
  ------------------
 1948|      0|        codegen(s, rhs, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 1949|      0|        pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 1950|      0|      }
 1951|      0|      else {
 1952|      0|        gen_move(s, cursp(), sp, 0);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1953|      0|      }
 1954|      0|      if (val) {
  ------------------
  |  Branch (1954:11): [True: 0, False: 0]
  ------------------
 1955|      0|        gen_move(s, top, cursp(), 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1956|      0|      }
 1957|      0|      if (n < 15) {
  ------------------
  |  Branch (1957:11): [True: 0, False: 0]
  ------------------
 1958|      0|        n++;
 1959|      0|        if (n == 15) {
  ------------------
  |  Branch (1959:13): [True: 0, False: 0]
  ------------------
 1960|      0|          pop_n(14);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 1961|      0|          genop_2(s, OP_ARRAY, cursp(), 15);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1962|      0|        }
 1963|      0|      }
 1964|      0|      else {
 1965|      0|        pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 1966|      0|        genop_2(s, OP_ARYPUSH, cursp(), 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1967|      0|      }
 1968|      0|      push(); pop();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
                    push(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 1969|      0|      s->sp = call;
 1970|      0|      if (mid == MRB_OPSYM_2(s->mrb, aref) && n == 2) {
  ------------------
  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1970:11): [True: 0, False: 0]
  |  Branch (1970:47): [True: 0, False: 0]
  ------------------
 1971|      0|        push_n(4); pop_n(4); /* self + idx + value + (invisible block for OP_SEND) */
  ------------------
  |  |  987|      0|#define push_n(n) push_n_(s,n)
  ------------------
                      push_n(4); pop_n(4); /* self + idx + value + (invisible block for OP_SEND) */
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 1972|      0|        genop_1(s, OP_SETIDX, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1973|      0|      }
 1974|      0|      else {
 1975|      0|        int st = 2 /* self + block */ +
 1976|      0|                 (((n >> 0) & 0x0f) < 15 ? ((n >> 0) & 0x0f)     : 1) +
  ------------------
  |  Branch (1976:19): [True: 0, False: 0]
  ------------------
 1977|      0|                 (((n >> 4) & 0x0f) < 15 ? ((n >> 4) & 0x0f) * 2 : 1);
  ------------------
  |  Branch (1977:19): [True: 0, False: 0]
  ------------------
 1978|      0|        push_n(st); pop_n(st);
  ------------------
  |  |  987|      0|#define push_n(n) push_n_(s,n)
  ------------------
                      push_n(st); pop_n(st);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 1979|      0|        genop_3(s, noself ? OP_SSEND : OP_SEND, cursp(), new_sym(s, attrsym(s, mid)), n);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
  |  Branch (1979:20): [True: 0, False: 0]
  ------------------
 1980|      0|      }
 1981|      0|      if (safe) {
  ------------------
  |  Branch (1981:11): [True: 0, False: 0]
  ------------------
 1982|      0|        dispatch(s, skip);
 1983|      0|      }
 1984|      0|      s->sp = top;
 1985|      0|    }
 1986|      0|    break;
 1987|       |
 1988|      0|  case NODE_MASGN:
  ------------------
  |  Branch (1988:3): [True: 0, False: 139k]
  ------------------
 1989|      0|    gen_massignment(s, tree->car, sp, val);
 1990|      0|    break;
 1991|       |
 1992|       |  /* splat without assignment */
 1993|      0|  case NODE_NIL:
  ------------------
  |  Branch (1993:3): [True: 0, False: 139k]
  ------------------
 1994|      0|    break;
 1995|       |
 1996|      0|  default:
  ------------------
  |  Branch (1996:3): [True: 0, False: 139k]
  ------------------
 1997|      0|    codegen_error(s, "unknown lhs");
 1998|      0|    break;
 1999|   139k|  }
 2000|   139k|  if (val) push();
  ------------------
  |  |  986|  10.1k|#define push() push_n_(s,1)
  ------------------
  |  Branch (2000:7): [True: 10.1k, False: 129k]
  ------------------
 2001|   139k|}
codegen.c:gen_setxv:
 1157|  20.1k|{
 1158|  20.1k|  int idx = new_sym(s, sym);
 1159|  20.1k|  if (!val && !no_peephole(s)) {
  ------------------
  |  Branch (1159:7): [True: 13.6k, False: 6.50k]
  |  Branch (1159:15): [True: 8.61k, False: 4.99k]
  ------------------
 1160|  8.61k|    struct mrb_insn_data data = mrb_last_insn(s);
 1161|  8.61k|    if (data.insn == OP_MOVE && data.a == dst) {
  ------------------
  |  Branch (1161:9): [True: 3.03k, False: 5.58k]
  |  Branch (1161:33): [True: 186, False: 2.84k]
  ------------------
 1162|    186|      dst = data.b;
 1163|    186|      rewind_pc(s);
  ------------------
  |  |  476|    186|#define rewind_pc(s) s->pc = s->lastpc
  ------------------
 1164|    186|    }
 1165|  8.61k|  }
 1166|  20.1k|  genop_2(s, op, dst, idx);
 1167|  20.1k|}
codegen.c:lambda_body:
 1343|    466|{
 1344|    466|  codegen_scope *parent = s;
 1345|    466|  s = scope_new(s->mrb, s, tree->car);
 1346|       |
 1347|    466|  s->mscope = !blk;
 1348|       |
 1349|    466|  if (blk) {
  ------------------
  |  Branch (1349:7): [True: 0, False: 466]
  ------------------
 1350|      0|    struct loopinfo *lp = loop_push(s, LOOP_BLOCK);
 1351|      0|    lp->pc0 = new_label(s);
 1352|      0|  }
 1353|    466|  tree = tree->cdr;
 1354|    466|  if (tree->car == NULL) {
  ------------------
  |  Branch (1354:7): [True: 0, False: 466]
  ------------------
 1355|      0|    genop_W(s, OP_ENTER, 0);
 1356|      0|    s->ainfo = 0;
 1357|      0|  }
 1358|    466|  else {
 1359|    466|    mrb_aspec a;
 1360|    466|    int ma, oa, ra, pa, ka, kd, ba, i;
 1361|    466|    uint32_t pos;
 1362|    466|    node *opt;
 1363|    466|    node *margs, *pargs;
 1364|    466|    node *tail;
 1365|       |
 1366|       |    /* mandatory arguments */
 1367|    466|    ma = node_len(tree->car->car);
 1368|    466|    margs = tree->car->car;
 1369|    466|    tail = tree->car->cdr->cdr->cdr->cdr;
 1370|       |
 1371|       |    /* optional arguments */
 1372|    466|    oa = node_len(tree->car->cdr->car);
 1373|       |    /* rest argument? */
 1374|    466|    ra = tree->car->cdr->cdr->car ? 1 : 0;
  ------------------
  |  Branch (1374:10): [True: 0, False: 466]
  ------------------
 1375|       |    /* mandatory arguments after rest argument */
 1376|    466|    pa = node_len(tree->car->cdr->cdr->cdr->car);
 1377|    466|    pargs = tree->car->cdr->cdr->cdr->car;
 1378|       |    /* keyword arguments */
 1379|    466|    ka = tail? node_len(tail->cdr->car) : 0;
  ------------------
  |  Branch (1379:10): [True: 0, False: 466]
  ------------------
 1380|       |    /* keyword dictionary? */
 1381|    466|    kd = tail && tail->cdr->cdr->car? 1 : 0;
  ------------------
  |  Branch (1381:10): [True: 0, False: 466]
  |  Branch (1381:18): [True: 0, False: 0]
  ------------------
 1382|       |    /* block argument? */
 1383|    466|    ba = tail && tail->cdr->cdr->cdr->car ? 1 : 0;
  ------------------
  |  Branch (1383:10): [True: 0, False: 466]
  |  Branch (1383:18): [True: 0, False: 0]
  ------------------
 1384|       |
 1385|    466|    if (ma > 0x1f || oa > 0x1f || pa > 0x1f || ka > 0x1f) {
  ------------------
  |  Branch (1385:9): [True: 0, False: 466]
  |  Branch (1385:22): [True: 0, False: 466]
  |  Branch (1385:35): [True: 0, False: 466]
  |  Branch (1385:48): [True: 0, False: 466]
  ------------------
 1386|      0|      codegen_error(s, "too many formal arguments");
 1387|      0|    }
 1388|       |    /* (23bits = 5:5:1:5:5:1:1) */
 1389|    466|    a = MRB_ARGS_REQ(ma)
  ------------------
  |  |  877|    466|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1390|    466|      | MRB_ARGS_OPT(oa)
  ------------------
  |  |  885|    466|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1391|    466|      | (ra? MRB_ARGS_REST() : 0)
  ------------------
  |  |  898|      0|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  ------------------
  |  Branch (1391:10): [True: 0, False: 466]
  ------------------
 1392|    466|      | MRB_ARGS_POST(pa)
  ------------------
  |  |  901|    466|#define MRB_ARGS_POST(n)    ((mrb_aspec)((n)&0x1f) << 7)
  ------------------
 1393|    466|      | MRB_ARGS_KEY(ka, kd)
  ------------------
  |  |  904|    466|#define MRB_ARGS_KEY(n1,n2) ((mrb_aspec)((((n1)&0x1f) << 2) | ((n2)?(1<<1):0)))
  |  |  ------------------
  |  |  |  Branch (904:64): [True: 0, False: 466]
  |  |  ------------------
  ------------------
 1394|    466|      | (ba? MRB_ARGS_BLOCK() : 0);
  ------------------
  |  |  909|      0|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
  |  Branch (1394:10): [True: 0, False: 466]
  ------------------
 1395|    466|    genop_W(s, OP_ENTER, a);
 1396|       |    /* (12bits = 5:1:5:1) */
 1397|    466|    s->ainfo = (((ma+oa) & 0x3f) << 7)
 1398|    466|      | ((ra & 0x1) << 6)
 1399|    466|      | ((pa & 0x1f) << 1)
 1400|    466|      | ((ka | kd) ? 1 : 0);
  ------------------
  |  Branch (1400:10): [True: 0, False: 466]
  ------------------
 1401|       |    /* generate jump table for optional arguments initializer */
 1402|    466|    pos = new_label(s);
 1403|    466|    for (i=0; i<oa; i++) {
  ------------------
  |  Branch (1403:15): [True: 0, False: 466]
  ------------------
 1404|      0|      new_label(s);
 1405|      0|      genjmp_0(s, OP_JMP);
  ------------------
  |  |  523|      0|#define genjmp_0(s,i) genjmp(s,i,JMPLINK_START)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 1406|      0|    }
 1407|    466|    if (oa > 0) {
  ------------------
  |  Branch (1407:9): [True: 0, False: 466]
  ------------------
 1408|      0|      genjmp_0(s, OP_JMP);
  ------------------
  |  |  523|      0|#define genjmp_0(s,i) genjmp(s,i,JMPLINK_START)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 1409|      0|    }
 1410|    466|    opt = tree->car->cdr->car;
 1411|    466|    i = 0;
 1412|    466|    while (opt) {
  ------------------
  |  Branch (1412:12): [True: 0, False: 466]
  ------------------
 1413|      0|      int idx;
 1414|      0|      mrb_sym id = nsym(opt->car->car);
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1415|       |
 1416|      0|      dispatch(s, pos+i*3+1);
 1417|      0|      codegen(s, opt->car->cdr, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 1418|      0|      pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 1419|      0|      idx = lv_idx(s, id);
 1420|      0|      if (idx > 0) {
  ------------------
  |  Branch (1420:11): [True: 0, False: 0]
  ------------------
 1421|      0|        gen_move(s, idx, cursp(), 0);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1422|      0|      }
 1423|      0|      else {
 1424|      0|        gen_getupvar(s, cursp(), id);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1425|      0|      }
 1426|      0|      i++;
 1427|      0|      opt = opt->cdr;
 1428|      0|    }
 1429|    466|    if (oa > 0) {
  ------------------
  |  Branch (1429:9): [True: 0, False: 466]
  ------------------
 1430|      0|      dispatch(s, pos+i*3+1);
 1431|      0|    }
 1432|       |
 1433|       |    /* keyword arguments */
 1434|    466|    if (tail) {
  ------------------
  |  Branch (1434:9): [True: 0, False: 466]
  ------------------
 1435|      0|      node *kwds = tail->cdr->car;
 1436|      0|      int kwrest = 0;
 1437|       |
 1438|      0|      if (tail->cdr->cdr->car) {
  ------------------
  |  Branch (1438:11): [True: 0, False: 0]
  ------------------
 1439|      0|        kwrest = 1;
 1440|      0|      }
 1441|      0|      mrb_assert(nint(tail->car) == NODE_ARGS_TAIL);
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 1442|      0|      mrb_assert(node_len(tail) == 4);
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 1443|       |
 1444|      0|      while (kwds) {
  ------------------
  |  Branch (1444:14): [True: 0, False: 0]
  ------------------
 1445|      0|        int jmpif_key_p, jmp_def_set = -1;
 1446|      0|        node *kwd = kwds->car, *def_arg = kwd->cdr->cdr->car;
 1447|      0|        mrb_sym kwd_sym = nsym(kwd->cdr->car);
  ------------------
  |  | 1229|      0|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1448|       |
 1449|      0|        mrb_assert(nint(kwd->car) == NODE_KW_ARG);
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 1450|       |
 1451|      0|        if (def_arg) {
  ------------------
  |  Branch (1451:13): [True: 0, False: 0]
  ------------------
 1452|      0|          int idx;
 1453|      0|          genop_2(s, OP_KEY_P, lv_idx(s, kwd_sym), new_sym(s, kwd_sym));
 1454|      0|          jmpif_key_p = genjmp2_0(s, OP_JMPIF, lv_idx(s, kwd_sym), NOVAL);
  ------------------
  |  |  583|      0|#define genjmp2_0(s,i,a,val) genjmp2(s,i,a,JMPLINK_START,val)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 1455|      0|          codegen(s, def_arg, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 1456|      0|          pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 1457|      0|          idx = lv_idx(s, kwd_sym);
 1458|      0|          if (idx > 0) {
  ------------------
  |  Branch (1458:15): [True: 0, False: 0]
  ------------------
 1459|      0|            gen_move(s, idx, cursp(), 0);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1460|      0|          }
 1461|      0|          else {
 1462|      0|            gen_getupvar(s, cursp(), kwd_sym);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1463|      0|          }
 1464|      0|          jmp_def_set = genjmp_0(s, OP_JMP);
  ------------------
  |  |  523|      0|#define genjmp_0(s,i) genjmp(s,i,JMPLINK_START)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 1465|      0|          dispatch(s, jmpif_key_p);
 1466|      0|        }
 1467|      0|        genop_2(s, OP_KARG, lv_idx(s, kwd_sym), new_sym(s, kwd_sym));
 1468|      0|        if (jmp_def_set != -1) {
  ------------------
  |  Branch (1468:13): [True: 0, False: 0]
  ------------------
 1469|      0|          dispatch(s, jmp_def_set);
 1470|      0|        }
 1471|      0|        i++;
 1472|       |
 1473|      0|        kwds = kwds->cdr;
 1474|      0|      }
 1475|      0|      if (tail->cdr->car && !kwrest) {
  ------------------
  |  Branch (1475:11): [True: 0, False: 0]
  |  Branch (1475:29): [True: 0, False: 0]
  ------------------
 1476|      0|        genop_0(s, OP_KEYEND);
 1477|      0|      }
 1478|      0|    }
 1479|       |
 1480|       |    /* argument destructuring */
 1481|    466|    if (margs) {
  ------------------
  |  Branch (1481:9): [True: 0, False: 466]
  ------------------
 1482|      0|      node *n = margs;
 1483|       |
 1484|      0|      pos = 1;
 1485|      0|      while (n) {
  ------------------
  |  Branch (1485:14): [True: 0, False: 0]
  ------------------
 1486|      0|        if (nint(n->car->car) == NODE_MASGN) {
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (1486:13): [True: 0, False: 0]
  ------------------
 1487|      0|          gen_massignment(s, n->car->cdr->car, pos, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 1488|      0|        }
 1489|      0|        pos++;
 1490|      0|        n = n->cdr;
 1491|      0|      }
 1492|      0|    }
 1493|    466|    if (pargs) {
  ------------------
  |  Branch (1493:9): [True: 0, False: 466]
  ------------------
 1494|      0|      node *n = pargs;
 1495|       |
 1496|      0|      pos = ma+oa+ra+1;
 1497|      0|      while (n) {
  ------------------
  |  Branch (1497:14): [True: 0, False: 0]
  ------------------
 1498|      0|        if (nint(n->car->car) == NODE_MASGN) {
  ------------------
  |  | 1227|      0|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (1498:13): [True: 0, False: 0]
  ------------------
 1499|      0|          gen_massignment(s, n->car->cdr->car, pos, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 1500|      0|        }
 1501|      0|        pos++;
 1502|      0|        n = n->cdr;
 1503|      0|      }
 1504|      0|    }
 1505|    466|  }
 1506|       |
 1507|    466|  codegen(s, tree->cdr->car, VAL);
  ------------------
  |  |  326|    466|#define VAL    1
  ------------------
 1508|    466|  pop();
  ------------------
  |  |  988|    466|#define pop() pop_n_(s,1)
  ------------------
 1509|    466|  if (s->pc > 0) {
  ------------------
  |  Branch (1509:7): [True: 451, False: 15]
  ------------------
 1510|    451|    gen_return(s, OP_RETURN, cursp());
  ------------------
  |  |  990|    451|#define cursp() (s->sp)
  ------------------
 1511|    451|  }
 1512|    466|  if (blk) {
  ------------------
  |  Branch (1512:7): [True: 0, False: 466]
  ------------------
 1513|      0|    loop_pop(s, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 1514|      0|  }
 1515|    466|  scope_finish(s);
 1516|    466|  return parent->irep->rlen - 1;
 1517|    466|}
codegen.c:genop_W:
  313|    466|{
  314|    466|  uint8_t a1 = (a>>16) & 0xff;
  315|    466|  uint8_t a2 = (a>>8) & 0xff;
  316|    466|  uint8_t a3 = a & 0xff;
  317|       |
  318|    466|  s->lastpc = s->pc;
  319|    466|  gen_B(s, i);
  320|    466|  gen_B(s, a1);
  321|    466|  gen_B(s, a2);
  322|    466|  gen_B(s, a3);
  323|    466|}
codegen.c:scope_finish:
 3896|    845|{
 3897|    845|  mrb_state *mrb = s->mrb;
 3898|    845|  mrb_irep *irep = s->irep;
 3899|       |
 3900|    845|  if (s->nlocals > 0xff) {
  ------------------
  |  Branch (3900:7): [True: 57, False: 788]
  ------------------
 3901|     57|    codegen_error(s, "too many local variables");
 3902|     57|  }
 3903|    845|  irep->flags = 0;
 3904|    845|  if (s->iseq) {
  ------------------
  |  Branch (3904:7): [True: 788, False: 57]
  ------------------
 3905|    788|    size_t catchsize = sizeof(struct mrb_irep_catch_handler) * irep->clen;
 3906|    788|    irep->iseq = (const mrb_code*)codegen_realloc(s, s->iseq, sizeof(mrb_code)*s->pc + catchsize);
 3907|    788|    irep->ilen = s->pc;
 3908|    788|    if (irep->clen > 0) {
  ------------------
  |  Branch (3908:9): [True: 0, False: 788]
  ------------------
 3909|      0|      memcpy((void*)(irep->iseq + irep->ilen), s->catch_table, catchsize);
 3910|      0|    }
 3911|    788|  }
 3912|     57|  else {
 3913|     57|    irep->clen = 0;
 3914|     57|  }
 3915|    845|  mrb_free(s->mrb, s->catch_table);
 3916|    845|  s->catch_table = NULL;
 3917|    845|  irep->pool = (const mrb_pool_value*)codegen_realloc(s, s->pool, sizeof(mrb_pool_value)*irep->plen);
 3918|    845|  irep->syms = (const mrb_sym*)codegen_realloc(s, s->syms, sizeof(mrb_sym)*irep->slen);
 3919|    845|  irep->reps = (const mrb_irep**)codegen_realloc(s, s->reps, sizeof(mrb_irep*)*irep->rlen);
 3920|    845|  if (s->filename_sym) {
  ------------------
  |  Branch (3920:7): [True: 0, False: 845]
  ------------------
 3921|      0|    mrb_sym fname = mrb_parser_get_filename(s->parser, s->filename_index);
 3922|      0|    const char *filename = mrb_sym_name_len(s->mrb, fname, NULL);
 3923|       |
 3924|      0|    mrb_debug_info_append_file(s->mrb, s->irep->debug_info,
 3925|      0|                               filename, s->lines, s->debug_start_pos, s->pc);
 3926|      0|  }
 3927|    845|  mrb_free(s->mrb, s->lines);
 3928|       |
 3929|    845|  irep->nlocals = s->nlocals;
 3930|    845|  irep->nregs = s->nregs;
 3931|       |
 3932|    845|  mrb_gc_arena_restore(mrb, s->ai);
  ------------------
  |  | 1307|    845|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 3933|    845|  mrb_pool_close(s->mpool);
 3934|    845|}
codegen.c:true_always:
 2215|  31.0k|{
 2216|  31.0k|  switch (nint(tree->car)) {
  ------------------
  |  | 1227|  31.0k|#define nint(x) ((int)(intptr_t)(x))
  ------------------
 2217|      0|  case NODE_TRUE:
  ------------------
  |  Branch (2217:3): [True: 0, False: 31.0k]
  ------------------
 2218|  11.7k|  case NODE_INT:
  ------------------
  |  Branch (2218:3): [True: 11.7k, False: 19.3k]
  ------------------
 2219|  11.7k|  case NODE_STR:
  ------------------
  |  Branch (2219:3): [True: 0, False: 31.0k]
  ------------------
 2220|  11.7k|  case NODE_SYM:
  ------------------
  |  Branch (2220:3): [True: 0, False: 31.0k]
  ------------------
 2221|  11.7k|    return TRUE;
  ------------------
  |  |   54|  11.7k|#  define TRUE 1
  ------------------
 2222|  19.3k|  default:
  ------------------
  |  Branch (2222:3): [True: 19.3k, False: 11.7k]
  ------------------
 2223|  19.3k|    return FALSE;
  ------------------
  |  |   51|  19.3k|#  define FALSE 0
  ------------------
 2224|  31.0k|  }
 2225|  31.0k|}
codegen.c:false_always:
 2229|  19.3k|{
 2230|  19.3k|  switch (nint(tree->car)) {
  ------------------
  |  | 1227|  19.3k|#define nint(x) ((int)(intptr_t)(x))
  ------------------
 2231|      0|  case NODE_FALSE:
  ------------------
  |  Branch (2231:3): [True: 0, False: 19.3k]
  ------------------
 2232|      0|  case NODE_NIL:
  ------------------
  |  Branch (2232:3): [True: 0, False: 19.3k]
  ------------------
 2233|      0|    return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 2234|  19.3k|  default:
  ------------------
  |  Branch (2234:3): [True: 19.3k, False: 0]
  ------------------
 2235|  19.3k|    return FALSE;
  ------------------
  |  |   51|  19.3k|#  define FALSE 0
  ------------------
 2236|  19.3k|  }
 2237|  19.3k|}
codegen.c:scope_body:
 1521|    466|{
 1522|    466|  codegen_scope *scope = scope_new(s->mrb, s, tree->car);
 1523|       |
 1524|    466|  codegen(scope, tree->cdr, VAL);
  ------------------
  |  |  326|    466|#define VAL    1
  ------------------
 1525|    466|  gen_return(scope, OP_RETURN, scope->sp-1);
 1526|    466|  if (!s->iseq) {
  ------------------
  |  Branch (1526:7): [True: 394, False: 72]
  ------------------
 1527|    394|    genop_0(scope, OP_STOP);
 1528|    394|  }
 1529|    466|  scope_finish(scope);
 1530|    466|  if (!s->irep) {
  ------------------
  |  Branch (1530:7): [True: 0, False: 466]
  ------------------
 1531|       |    /* should not happen */
 1532|      0|    return 0;
 1533|      0|  }
 1534|    466|  return s->irep->rlen - 1;
 1535|    466|}
codegen.c:gen_call:
 1717|   154k|{
 1718|   154k|  mrb_sym sym = nsym(tree->cdr->car);
  ------------------
  |  | 1229|   154k|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1719|   154k|  int skip = 0, n = 0, nk = 0, noop = no_optimize(s), noself = 0, blk = 0, sp_save = cursp();
  ------------------
  |  |  990|   154k|#define cursp() (s->sp)
  ------------------
 1720|       |
 1721|   154k|  if (!tree->car) {
  ------------------
  |  Branch (1721:7): [True: 394, False: 154k]
  ------------------
 1722|    394|    noself = noop = 1;
 1723|    394|    push();
  ------------------
  |  |  986|    394|#define push() push_n_(s,1)
  ------------------
 1724|    394|  }
 1725|   154k|  else {
 1726|   154k|    codegen(s, tree->car, VAL); /* receiver */
  ------------------
  |  |  326|   154k|#define VAL    1
  ------------------
 1727|   154k|  }
 1728|   154k|  if (safe) {
  ------------------
  |  Branch (1728:7): [True: 0, False: 154k]
  ------------------
 1729|      0|    int recv = cursp()-1;
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1730|      0|    gen_move(s, cursp(), recv, 1);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1731|      0|    skip = genjmp2_0(s, OP_JMPNIL, cursp(), val);
  ------------------
  |  |  583|      0|#define genjmp2_0(s,i,a,val) genjmp2(s,i,a,JMPLINK_START,val)
  |  |  ------------------
  |  |  |  |  494|      0|#define JMPLINK_START UINT32_MAX
  |  |  ------------------
  ------------------
 1732|      0|  }
 1733|   154k|  tree = tree->cdr->cdr->car;
 1734|   154k|  if (tree) {
  ------------------
  |  Branch (1734:7): [True: 148k, False: 6.30k]
  ------------------
 1735|   148k|    if (tree->car) {            /* positional arguments */
  ------------------
  |  Branch (1735:9): [True: 148k, False: 0]
  ------------------
 1736|   148k|      n = gen_values(s, tree->car, VAL, 14);
  ------------------
  |  |  326|   148k|#define VAL    1
  ------------------
 1737|   148k|      if (n < 0) {              /* variable length */
  ------------------
  |  Branch (1737:11): [True: 0, False: 148k]
  ------------------
 1738|      0|        noop = 1;               /* not operator */
 1739|      0|        n = 15;
 1740|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 1741|      0|      }
 1742|   148k|    }
 1743|   148k|    if (tree->cdr->car) {       /* keyword arguments */
  ------------------
  |  Branch (1743:9): [True: 0, False: 148k]
  ------------------
 1744|      0|      noop = 1;
 1745|      0|      nk = gen_hash(s, tree->cdr->car->cdr, VAL, 14);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 1746|      0|      if (nk < 0) nk = 15;
  ------------------
  |  Branch (1746:11): [True: 0, False: 0]
  ------------------
 1747|      0|    }
 1748|   148k|  }
 1749|   154k|  if (tree && tree->cdr && tree->cdr->cdr) {
  ------------------
  |  Branch (1749:7): [True: 148k, False: 6.30k]
  |  Branch (1749:15): [True: 148k, False: 0]
  |  Branch (1749:28): [True: 0, False: 148k]
  ------------------
 1750|      0|    codegen(s, tree->cdr->cdr, VAL);
  ------------------
  |  |  326|      0|#define VAL    1
  ------------------
 1751|      0|    pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 1752|      0|    noop = 1;
 1753|      0|    blk = 1;
 1754|      0|  }
 1755|   154k|  push();pop();
  ------------------
  |  |  986|   154k|#define push() push_n_(s,1)
  ------------------
                push();pop();
  ------------------
  |  |  988|   154k|#define pop() pop_n_(s,1)
  ------------------
 1756|   154k|  s->sp = sp_save;
 1757|   154k|  if (!noop && sym == MRB_OPSYM_2(s->mrb, add) && n == 1)  {
  ------------------
  |  |   20|   154k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1757:7): [True: 154k, False: 394]
  |  Branch (1757:16): [True: 11.9k, False: 142k]
  |  Branch (1757:51): [True: 11.9k, False: 0]
  ------------------
 1758|  11.9k|    gen_addsub(s, OP_ADD, cursp());
  ------------------
  |  |  990|  11.9k|#define cursp() (s->sp)
  ------------------
 1759|  11.9k|  }
 1760|   142k|  else if (!noop && sym == MRB_OPSYM_2(s->mrb, sub) && n == 1)  {
  ------------------
  |  |   20|   142k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1760:12): [True: 142k, False: 394]
  |  Branch (1760:21): [True: 20.8k, False: 121k]
  |  Branch (1760:56): [True: 20.8k, False: 0]
  ------------------
 1761|  20.8k|    gen_addsub(s, OP_SUB, cursp());
  ------------------
  |  |  990|  20.8k|#define cursp() (s->sp)
  ------------------
 1762|  20.8k|  }
 1763|   121k|  else if (!noop && sym == MRB_OPSYM_2(s->mrb, mul) && n == 1)  {
  ------------------
  |  |   20|   121k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1763:12): [True: 121k, False: 394]
  |  Branch (1763:21): [True: 8.24k, False: 113k]
  |  Branch (1763:56): [True: 8.24k, False: 0]
  ------------------
 1764|  8.24k|    gen_muldiv(s, OP_MUL, cursp());
  ------------------
  |  |  990|  8.24k|#define cursp() (s->sp)
  ------------------
 1765|  8.24k|  }
 1766|   113k|  else if (!noop && sym == MRB_OPSYM_2(s->mrb, div) && n == 1)  {
  ------------------
  |  |   20|   113k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1766:12): [True: 113k, False: 394]
  |  Branch (1766:21): [True: 12.3k, False: 100k]
  |  Branch (1766:56): [True: 12.3k, False: 0]
  ------------------
 1767|  12.3k|    gen_muldiv(s, OP_DIV, cursp());
  ------------------
  |  |  990|  12.3k|#define cursp() (s->sp)
  ------------------
 1768|  12.3k|  }
 1769|   101k|  else if (!noop && sym == MRB_OPSYM_2(s->mrb, lt) && n == 1)  {
  ------------------
  |  |   20|   100k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1769:12): [True: 100k, False: 394]
  |  Branch (1769:21): [True: 1.30k, False: 99.6k]
  |  Branch (1769:55): [True: 1.30k, False: 0]
  ------------------
 1770|  1.30k|    genop_1(s, OP_LT, cursp());
  ------------------
  |  |  990|  1.30k|#define cursp() (s->sp)
  ------------------
 1771|  1.30k|  }
 1772|   100k|  else if (!noop && sym == MRB_OPSYM_2(s->mrb, le) && n == 1)  {
  ------------------
  |  |   20|  99.6k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1772:12): [True: 99.6k, False: 394]
  |  Branch (1772:21): [True: 3.70k, False: 95.9k]
  |  Branch (1772:55): [True: 3.70k, False: 0]
  ------------------
 1773|  3.70k|    genop_1(s, OP_LE, cursp());
  ------------------
  |  |  990|  3.70k|#define cursp() (s->sp)
  ------------------
 1774|  3.70k|  }
 1775|  96.3k|  else if (!noop && sym == MRB_OPSYM_2(s->mrb, gt) && n == 1)  {
  ------------------
  |  |   20|  95.9k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1775:12): [True: 95.9k, False: 394]
  |  Branch (1775:21): [True: 2.27k, False: 93.6k]
  |  Branch (1775:55): [True: 2.27k, False: 0]
  ------------------
 1776|  2.27k|    genop_1(s, OP_GT, cursp());
  ------------------
  |  |  990|  2.27k|#define cursp() (s->sp)
  ------------------
 1777|  2.27k|  }
 1778|  94.0k|  else if (!noop && sym == MRB_OPSYM_2(s->mrb, ge) && n == 1)  {
  ------------------
  |  |   20|  93.6k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1778:12): [True: 93.6k, False: 394]
  |  Branch (1778:21): [True: 1.64k, False: 92.0k]
  |  Branch (1778:55): [True: 1.64k, False: 0]
  ------------------
 1779|  1.64k|    genop_1(s, OP_GE, cursp());
  ------------------
  |  |  990|  1.64k|#define cursp() (s->sp)
  ------------------
 1780|  1.64k|  }
 1781|  92.4k|  else if (!noop && sym == MRB_OPSYM_2(s->mrb, eq) && n == 1)  {
  ------------------
  |  |   20|  92.0k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1781:12): [True: 92.0k, False: 394]
  |  Branch (1781:21): [True: 1.93k, False: 90.0k]
  |  Branch (1781:55): [True: 1.93k, False: 0]
  ------------------
 1782|  1.93k|    genop_1(s, OP_EQ, cursp());
  ------------------
  |  |  990|  1.93k|#define cursp() (s->sp)
  ------------------
 1783|  1.93k|  }
 1784|  90.4k|  else if (!noop && sym == MRB_OPSYM_2(s->mrb, aset) && n == 2)  {
  ------------------
  |  |   20|  90.0k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1784:12): [True: 90.0k, False: 394]
  |  Branch (1784:21): [True: 0, False: 90.0k]
  |  Branch (1784:57): [True: 0, False: 0]
  ------------------
 1785|      0|    genop_1(s, OP_SETIDX, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1786|      0|  }
 1787|  90.4k|  else if (!noop && n == 0 && gen_uniop(s, sym, cursp())) {
  ------------------
  |  |  990|  5.91k|#define cursp() (s->sp)
  ------------------
  |  Branch (1787:12): [True: 90.0k, False: 394]
  |  Branch (1787:21): [True: 5.91k, False: 84.1k]
  |  Branch (1787:31): [True: 0, False: 5.91k]
  ------------------
 1788|       |    /* constant folding succeeded */
 1789|      0|  }
 1790|  90.4k|  else if (!noop && n == 1 && gen_binop(s, sym, cursp())) {
  ------------------
  |  |  990|  84.1k|#define cursp() (s->sp)
  ------------------
  |  Branch (1790:12): [True: 90.0k, False: 394]
  |  Branch (1790:21): [True: 84.1k, False: 5.91k]
  |  Branch (1790:31): [True: 7.47k, False: 76.6k]
  ------------------
 1791|       |    /* constant folding succeeded */
 1792|  7.47k|  }
 1793|  82.9k|  else if (noself){
  ------------------
  |  Branch (1793:12): [True: 394, False: 82.6k]
  ------------------
 1794|    394|    genop_3(s, blk ? OP_SSENDB : OP_SSEND, cursp(), new_sym(s, sym), n|(nk<<4));
  ------------------
  |  |  990|    394|#define cursp() (s->sp)
  ------------------
  |  Branch (1794:16): [True: 0, False: 394]
  ------------------
 1795|    394|  }
 1796|  82.6k|  else {
 1797|  82.6k|    genop_3(s, blk ? OP_SENDB : OP_SEND, cursp(), new_sym(s, sym), n|(nk<<4));
  ------------------
  |  |  990|  82.6k|#define cursp() (s->sp)
  ------------------
  |  Branch (1797:16): [True: 0, False: 82.6k]
  ------------------
 1798|  82.6k|  }
 1799|   154k|  if (safe) {
  ------------------
  |  Branch (1799:7): [True: 0, False: 154k]
  ------------------
 1800|      0|    dispatch(s, skip);
 1801|      0|  }
 1802|   154k|  if (val) {
  ------------------
  |  Branch (1802:7): [True: 91.1k, False: 63.6k]
  ------------------
 1803|  91.1k|    push();
  ------------------
  |  |  986|  91.1k|#define push() push_n_(s,1)
  ------------------
 1804|  91.1k|  }
 1805|   154k|}
codegen.c:gen_muldiv:
  847|  20.6k|{
  848|  20.6k|  if (no_peephole(s)) {
  ------------------
  |  Branch (848:7): [True: 972, False: 19.6k]
  ------------------
  849|  14.8k|  normal:
  850|  14.8k|    genop_1(s, op, dst);
  851|  14.8k|    return;
  852|    972|  }
  853|  19.6k|  else {
  854|  19.6k|    struct mrb_insn_data data = mrb_last_insn(s);
  855|  19.6k|    mrb_int n, n0;
  856|  19.6k|    if (addr_pc(s, data.addr) == s->lastlabel || !get_int_operand(s, &data, &n)) {
  ------------------
  |  |  475|  19.6k|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  |  Branch (856:9): [True: 2.16k, False: 17.5k]
  |  Branch (856:50): [True: 9.39k, False: 8.10k]
  ------------------
  857|       |      /* not integer immediate */
  858|  11.5k|      goto normal;
  859|  11.5k|    }
  860|  8.10k|    struct mrb_insn_data data0 = mrb_decode_insn(mrb_prev_pc(s, data.addr));
  861|  8.10k|    if (!get_int_operand(s, &data0, &n0)) {
  ------------------
  |  Branch (861:9): [True: 2.13k, False: 5.97k]
  ------------------
  862|  2.13k|      goto normal;
  863|  2.13k|    }
  864|  5.97k|    if (op == OP_MUL) {
  ------------------
  |  Branch (864:9): [True: 3.15k, False: 2.82k]
  ------------------
  865|  3.15k|      if (mrb_int_mul_overflow(n0, n, &n)) goto normal;
  ------------------
  |  Branch (865:11): [True: 2, False: 3.15k]
  ------------------
  866|  3.15k|    }
  867|  2.82k|    else { /* OP_DIV */
  868|  2.82k|      if (n == 0) goto normal;
  ------------------
  |  Branch (868:11): [True: 169, False: 2.65k]
  ------------------
  869|  2.65k|      if (n0 == MRB_INT_MIN && n == -1) goto normal;
  ------------------
  |  |   81|  5.30k|# define MRB_INT_MIN INT64_MIN
  ------------------
  |  Branch (869:11): [True: 82, False: 2.57k]
  |  Branch (869:32): [True: 50, False: 32]
  ------------------
  870|  2.60k|      n = mrb_div_int(n0, n);
  871|  2.60k|    }
  872|  5.75k|    s->pc = addr_pc(s, data0.addr);
  ------------------
  |  |  475|  5.75k|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  873|  5.75k|    gen_int(s, dst, n);
  874|  5.75k|  }
  875|  20.6k|}
codegen.c:gen_binop:
  881|  84.1k|{
  882|  84.1k|  if (no_peephole(s)) return FALSE;
  ------------------
  |  |   51|     92|#  define FALSE 0
  ------------------
  |  Branch (882:7): [True: 92, False: 84.0k]
  ------------------
  883|  84.0k|  else if (op == MRB_OPSYM_2(s->mrb, aref)) {
  ------------------
  |  |   20|  84.0k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (883:12): [True: 0, False: 84.0k]
  ------------------
  884|      0|    genop_1(s, OP_GETIDX, dst);
  885|      0|    return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  886|      0|  }
  887|  84.0k|  else {
  888|  84.0k|    struct mrb_insn_data data = mrb_last_insn(s);
  889|  84.0k|    mrb_int n, n0;
  890|  84.0k|    if (addr_pc(s, data.addr) == s->lastlabel || !get_int_operand(s, &data, &n)) {
  ------------------
  |  |  475|  84.0k|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  |  Branch (890:9): [True: 86, False: 83.9k]
  |  Branch (890:50): [True: 17.6k, False: 66.3k]
  ------------------
  891|       |      /* not integer immediate */
  892|  17.7k|      return FALSE;
  ------------------
  |  |   51|  17.7k|#  define FALSE 0
  ------------------
  893|  17.7k|    }
  894|  66.3k|    struct mrb_insn_data data0 = mrb_decode_insn(mrb_prev_pc(s, data.addr));
  895|  66.3k|    if (!get_int_operand(s, &data0, &n0)) {
  ------------------
  |  Branch (895:9): [True: 57.6k, False: 8.65k]
  ------------------
  896|  57.6k|      return FALSE;
  ------------------
  |  |   51|  57.6k|#  define FALSE 0
  ------------------
  897|  57.6k|    }
  898|  8.65k|    if (op == MRB_OPSYM_2(s->mrb, lshift)) {
  ------------------
  |  |   20|  8.65k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (898:9): [True: 0, False: 8.65k]
  ------------------
  899|      0|      if (!mrb_num_shift(s->mrb, n0, n, &n)) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  |  Branch (899:11): [True: 0, False: 0]
  ------------------
  900|      0|    }
  901|  8.65k|    else if (op == MRB_OPSYM_2(s->mrb, rshift)) {
  ------------------
  |  |   20|  8.65k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (901:14): [True: 6.23k, False: 2.41k]
  ------------------
  902|  6.23k|      if (n == MRB_INT_MIN) return FALSE;
  ------------------
  |  |   81|  6.23k|# define MRB_INT_MIN INT64_MIN
  ------------------
                    if (n == MRB_INT_MIN) return FALSE;
  ------------------
  |  |   51|    297|#  define FALSE 0
  ------------------
  |  Branch (902:11): [True: 297, False: 5.94k]
  ------------------
  903|  5.94k|      if (!mrb_num_shift(s->mrb, n0, -n, &n)) return FALSE;
  ------------------
  |  |   51|    371|#  define FALSE 0
  ------------------
  |  Branch (903:11): [True: 371, False: 5.57k]
  ------------------
  904|  5.94k|    }
  905|  2.41k|    else if (op == MRB_OPSYM_2(s->mrb, mod) && n != 0) {
  ------------------
  |  |   20|  2.41k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (905:14): [True: 703, False: 1.71k]
  |  Branch (905:48): [True: 687, False: 16]
  ------------------
  906|    687|      if (n0 == MRB_INT_MIN && n == -1) {
  ------------------
  |  |   81|  1.37k|# define MRB_INT_MIN INT64_MIN
  ------------------
  |  Branch (906:11): [True: 33, False: 654]
  |  Branch (906:32): [True: 1, False: 32]
  ------------------
  907|      1|        n = 0;
  908|      1|      }
  909|    686|      else {
  910|    686|        mrb_int n1 = n0 % n;
  911|    686|        if ((n0 < 0) != (n < 0) && n1 != 0) {
  ------------------
  |  Branch (911:13): [True: 347, False: 339]
  |  Branch (911:36): [True: 310, False: 37]
  ------------------
  912|    310|          n1 += n;
  913|    310|        }
  914|    686|        n = n1;
  915|    686|      }
  916|    687|    }
  917|  1.73k|    else if (op == MRB_OPSYM_2(s->mrb, and)) {
  ------------------
  |  |   20|  1.73k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (917:14): [True: 0, False: 1.73k]
  ------------------
  918|      0|      n = n0 & n;
  919|      0|    }
  920|  1.73k|    else if (op == MRB_OPSYM_2(s->mrb, or)) {
  ------------------
  |  |   20|  1.73k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (920:14): [True: 0, False: 1.73k]
  ------------------
  921|      0|      n = n0 | n;
  922|      0|    }
  923|  1.73k|    else if (op == MRB_OPSYM_2(s->mrb, xor)) {
  ------------------
  |  |   20|  1.73k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (923:14): [True: 1.21k, False: 514]
  ------------------
  924|  1.21k|      n = n0 ^ n;
  925|  1.21k|    }
  926|    514|    else {
  927|    514|      return FALSE;
  ------------------
  |  |   51|    514|#  define FALSE 0
  ------------------
  928|    514|    }
  929|  7.47k|    s->pc = addr_pc(s, data0.addr);
  ------------------
  |  |  475|  7.47k|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  930|  7.47k|    gen_int(s, dst, n);
  931|  7.47k|    return TRUE;
  ------------------
  |  |   54|  7.47k|#  define TRUE 1
  ------------------
  932|  8.65k|  }
  933|  84.1k|}
codegen.c:gen_values:
 1574|   194k|{
 1575|   194k|  int n = 0;
 1576|   194k|  int first = 1;
 1577|   194k|  int slimit = GEN_VAL_STACK_MAX;
  ------------------
  |  | 1570|   194k|#define GEN_VAL_STACK_MAX 99
  ------------------
 1578|       |
 1579|   194k|  if (limit == 0) limit = GEN_LIT_ARY_MAX;
  ------------------
  |  | 1569|  46.4k|#define GEN_LIT_ARY_MAX 64
  ------------------
  |  Branch (1579:7): [True: 46.4k, False: 148k]
  ------------------
 1580|   194k|  if (cursp() >= slimit) slimit = INT16_MAX;
  ------------------
  |  |  990|   194k|#define cursp() (s->sp)
  ------------------
  |  Branch (1580:7): [True: 35.5k, False: 159k]
  ------------------
 1581|       |
 1582|   194k|  if (!val) {
  ------------------
  |  Branch (1582:7): [True: 0, False: 194k]
  ------------------
 1583|      0|    while (t) {
  ------------------
  |  Branch (1583:12): [True: 0, False: 0]
  ------------------
 1584|      0|      codegen(s, t->car, NOVAL);
  ------------------
  |  |  325|      0|#define NOVAL  0
  ------------------
 1585|      0|      n++;
 1586|      0|      t = t->cdr;
 1587|      0|    }
 1588|      0|    return n;
 1589|      0|  }
 1590|       |
 1591|   688k|  while (t) {
  ------------------
  |  Branch (1591:10): [True: 493k, False: 194k]
  ------------------
 1592|   493k|    int is_splat = nint(t->car->car) == NODE_SPLAT;
  ------------------
  |  | 1227|   493k|#define nint(x) ((int)(intptr_t)(x))
  ------------------
 1593|       |
 1594|   493k|    if (is_splat || cursp() >= slimit) { /* flush stack */
  ------------------
  |  |  990|   493k|#define cursp() (s->sp)
  ------------------
  |  Branch (1594:9): [True: 0, False: 493k]
  |  Branch (1594:21): [True: 127k, False: 365k]
  ------------------
 1595|   127k|      pop_n(n);
  ------------------
  |  |  989|   127k|#define pop_n(n) pop_n_(s,n)
  ------------------
 1596|   127k|      if (first) {
  ------------------
  |  Branch (1596:11): [True: 2.05k, False: 125k]
  ------------------
 1597|  2.05k|        if (n == 0) {
  ------------------
  |  Branch (1597:13): [True: 0, False: 2.05k]
  ------------------
 1598|      0|          genop_1(s, OP_LOADNIL, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1599|      0|        }
 1600|  2.05k|        else {
 1601|  2.05k|          genop_2(s, OP_ARRAY, cursp(), n);
  ------------------
  |  |  990|  2.05k|#define cursp() (s->sp)
  ------------------
 1602|  2.05k|        }
 1603|  2.05k|        push();
  ------------------
  |  |  986|  2.05k|#define push() push_n_(s,1)
  ------------------
 1604|  2.05k|        first = 0;
 1605|  2.05k|        limit = GEN_LIT_ARY_MAX;
  ------------------
  |  | 1569|  2.05k|#define GEN_LIT_ARY_MAX 64
  ------------------
 1606|  2.05k|      }
 1607|   125k|      else if (n > 0) {
  ------------------
  |  Branch (1607:16): [True: 125k, False: 0]
  ------------------
 1608|   125k|        pop();
  ------------------
  |  |  988|   125k|#define pop() pop_n_(s,1)
  ------------------
 1609|   125k|        genop_2(s, OP_ARYPUSH, cursp(), n);
  ------------------
  |  |  990|   125k|#define cursp() (s->sp)
  ------------------
 1610|   125k|        push();
  ------------------
  |  |  986|   125k|#define push() push_n_(s,1)
  ------------------
 1611|   125k|      }
 1612|   127k|      n = 0;
 1613|   127k|    }
 1614|   493k|    codegen(s, t->car, val);
 1615|   493k|    if (is_splat) {
  ------------------
  |  Branch (1615:9): [True: 0, False: 493k]
  ------------------
 1616|      0|      pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
                    pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 1617|      0|      genop_1(s, OP_ARYCAT, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1618|      0|      push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 1619|      0|    }
 1620|   493k|    else {
 1621|   493k|      n++;
 1622|   493k|    }
 1623|   493k|    t = t->cdr;
 1624|   493k|  }
 1625|   194k|  if (!first) {
  ------------------
  |  Branch (1625:7): [True: 2.05k, False: 192k]
  ------------------
 1626|  2.05k|    pop();
  ------------------
  |  |  988|  2.05k|#define pop() pop_n_(s,1)
  ------------------
 1627|  2.05k|    if (n > 0) {
  ------------------
  |  Branch (1627:9): [True: 2.05k, False: 0]
  ------------------
 1628|  2.05k|      pop_n(n);
  ------------------
  |  |  989|  2.05k|#define pop_n(n) pop_n_(s,n)
  ------------------
 1629|  2.05k|      genop_2(s, OP_ARYPUSH, cursp(), n);
  ------------------
  |  |  990|  2.05k|#define cursp() (s->sp)
  ------------------
 1630|  2.05k|    }
 1631|  2.05k|    return -1;                  /* variable length */
 1632|  2.05k|  }
 1633|   192k|  else if (n > limit) {
  ------------------
  |  Branch (1633:12): [True: 96, False: 192k]
  ------------------
 1634|     96|    pop_n(n);
  ------------------
  |  |  989|     96|#define pop_n(n) pop_n_(s,n)
  ------------------
 1635|     96|    genop_2(s, OP_ARRAY, cursp(), n);
  ------------------
  |  |  990|     96|#define cursp() (s->sp)
  ------------------
 1636|     96|    return -1;
 1637|     96|  }
 1638|   192k|  return n;
 1639|   194k|}
codegen.c:gen_hash:
 1643|  2.01k|{
 1644|  2.01k|  int slimit = GEN_VAL_STACK_MAX;
  ------------------
  |  | 1570|  2.01k|#define GEN_VAL_STACK_MAX 99
  ------------------
 1645|  2.01k|  if (cursp() >= GEN_LIT_ARY_MAX) slimit = INT16_MAX;
  ------------------
  |  |  990|  2.01k|#define cursp() (s->sp)
  ------------------
                if (cursp() >= GEN_LIT_ARY_MAX) slimit = INT16_MAX;
  ------------------
  |  | 1569|  2.01k|#define GEN_LIT_ARY_MAX 64
  ------------------
  |  Branch (1645:7): [True: 1.19k, False: 825]
  ------------------
 1646|  2.01k|  int len = 0;
 1647|  2.01k|  mrb_bool update = FALSE;
  ------------------
  |  |   51|  2.01k|#  define FALSE 0
  ------------------
 1648|  2.01k|  mrb_bool first = TRUE;
  ------------------
  |  |   54|  2.01k|#  define TRUE 1
  ------------------
 1649|       |
 1650|   165k|  while (tree) {
  ------------------
  |  Branch (1650:10): [True: 163k, False: 2.01k]
  ------------------
 1651|   163k|    if (nint(tree->car->car->car) == NODE_KW_REST_ARGS) {
  ------------------
  |  | 1227|   163k|#define nint(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (1651:9): [True: 0, False: 163k]
  ------------------
 1652|      0|      if (val && first) {
  ------------------
  |  Branch (1652:11): [True: 0, False: 0]
  |  Branch (1652:18): [True: 0, False: 0]
  ------------------
 1653|      0|        genop_2(s, OP_HASH, cursp(), 0);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1654|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 1655|      0|        update = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 1656|      0|      }
 1657|      0|      else if (val && len > 0) {
  ------------------
  |  Branch (1657:16): [True: 0, False: 0]
  |  Branch (1657:23): [True: 0, False: 0]
  ------------------
 1658|      0|        pop_n(len*2);
  ------------------
  |  |  989|      0|#define pop_n(n) pop_n_(s,n)
  ------------------
 1659|      0|        if (!update) {
  ------------------
  |  Branch (1659:13): [True: 0, False: 0]
  ------------------
 1660|      0|          genop_2(s, OP_HASH, cursp(), len);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1661|      0|        }
 1662|      0|        else {
 1663|      0|          pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 1664|      0|          genop_2(s, OP_HASHADD, cursp(), len);
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1665|      0|        }
 1666|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 1667|      0|      }
 1668|      0|      codegen(s, tree->car->cdr, val);
 1669|      0|      if (val && (len > 0 || update)) {
  ------------------
  |  Branch (1669:11): [True: 0, False: 0]
  |  Branch (1669:19): [True: 0, False: 0]
  |  Branch (1669:30): [True: 0, False: 0]
  ------------------
 1670|      0|        pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
                      pop(); pop();
  ------------------
  |  |  988|      0|#define pop() pop_n_(s,1)
  ------------------
 1671|      0|        genop_1(s, OP_HASHCAT, cursp());
  ------------------
  |  |  990|      0|#define cursp() (s->sp)
  ------------------
 1672|      0|        push();
  ------------------
  |  |  986|      0|#define push() push_n_(s,1)
  ------------------
 1673|      0|      }
 1674|      0|      update = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 1675|      0|      len = 0;
 1676|      0|    }
 1677|   163k|    else {
 1678|   163k|      codegen(s, tree->car->car, val);
 1679|   163k|      codegen(s, tree->car->cdr, val);
 1680|   163k|      len++;
 1681|   163k|    }
 1682|   163k|    tree = tree->cdr;
 1683|   163k|    if (val && cursp() >= slimit) {
  ------------------
  |  |  990|   163k|#define cursp() (s->sp)
  ------------------
  |  Branch (1683:9): [True: 163k, False: 0]
  |  Branch (1683:16): [True: 1.33k, False: 162k]
  ------------------
 1684|  1.33k|      pop_n(len*2);
  ------------------
  |  |  989|  1.33k|#define pop_n(n) pop_n_(s,n)
  ------------------
 1685|  1.33k|      if (!update) {
  ------------------
  |  Branch (1685:11): [True: 200, False: 1.13k]
  ------------------
 1686|    200|        genop_2(s, OP_HASH, cursp(), len);
  ------------------
  |  |  990|    200|#define cursp() (s->sp)
  ------------------
 1687|    200|      }
 1688|  1.13k|      else {
 1689|  1.13k|        pop();
  ------------------
  |  |  988|  1.13k|#define pop() pop_n_(s,1)
  ------------------
 1690|  1.13k|        genop_2(s, OP_HASHADD, cursp(), len);
  ------------------
  |  |  990|  1.13k|#define cursp() (s->sp)
  ------------------
 1691|  1.13k|      }
 1692|  1.33k|      push();
  ------------------
  |  |  986|  1.33k|#define push() push_n_(s,1)
  ------------------
 1693|  1.33k|      update = TRUE;
  ------------------
  |  |   54|  1.33k|#  define TRUE 1
  ------------------
 1694|  1.33k|      len = 0;
 1695|  1.33k|    }
 1696|   163k|    first = FALSE;
  ------------------
  |  |   51|   163k|#  define FALSE 0
  ------------------
 1697|   163k|  }
 1698|  2.01k|  if (val && len > limit) {
  ------------------
  |  Branch (1698:7): [True: 2.01k, False: 0]
  |  Branch (1698:14): [True: 333, False: 1.68k]
  ------------------
 1699|    333|    pop_n(len*2);
  ------------------
  |  |  989|    333|#define pop_n(n) pop_n_(s,n)
  ------------------
 1700|    333|    genop_2(s, OP_HASH, cursp(), len);
  ------------------
  |  |  990|    333|#define cursp() (s->sp)
  ------------------
 1701|    333|    push();
  ------------------
  |  |  986|    333|#define push() push_n_(s,1)
  ------------------
 1702|    333|    return -1;
 1703|    333|  }
 1704|  1.68k|  if (update) {
  ------------------
  |  Branch (1704:7): [True: 200, False: 1.48k]
  ------------------
 1705|    200|    if (val && len > 0) {
  ------------------
  |  Branch (1705:9): [True: 200, False: 0]
  |  Branch (1705:16): [True: 200, False: 0]
  ------------------
 1706|    200|      pop_n(len*2+1);
  ------------------
  |  |  989|    200|#define pop_n(n) pop_n_(s,n)
  ------------------
 1707|    200|      genop_2(s, OP_HASHADD, cursp(), len);
  ------------------
  |  |  990|    200|#define cursp() (s->sp)
  ------------------
 1708|    200|      push();
  ------------------
  |  |  986|    200|#define push() push_n_(s,1)
  ------------------
 1709|    200|    }
 1710|    200|    return -1;                  /* variable length */
 1711|    200|  }
 1712|  1.48k|  return len;
 1713|  1.68k|}
codegen.c:gen_addsub:
  802|  32.8k|{
  803|  32.8k|  if (no_peephole(s)) {
  ------------------
  |  Branch (803:7): [True: 193, False: 32.6k]
  ------------------
  804|  14.0k|  normal:
  805|  14.0k|    genop_1(s, op, dst);
  806|  14.0k|    return;
  807|    193|  }
  808|  32.6k|  else {
  809|  32.6k|    struct mrb_insn_data data = mrb_last_insn(s);
  810|  32.6k|    mrb_int n;
  811|       |
  812|  32.6k|    if (!get_int_operand(s, &data, &n)) {
  ------------------
  |  Branch (812:9): [True: 13.4k, False: 19.1k]
  ------------------
  813|       |      /* not integer immediate */
  814|  13.4k|      goto normal;
  815|  13.4k|    }
  816|  19.1k|    struct mrb_insn_data data0 = mrb_decode_insn(mrb_prev_pc(s, data.addr));
  817|  19.1k|    mrb_int n0;
  818|  19.1k|    if (addr_pc(s, data.addr) == s->lastlabel || !get_int_operand(s, &data0, &n0)) {
  ------------------
  |  |  475|  19.1k|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  |  Branch (818:9): [True: 309, False: 18.8k]
  |  Branch (818:50): [True: 4.77k, False: 14.1k]
  ------------------
  819|       |      /* OP_ADDI/OP_SUBI takes upto 8bits */
  820|  5.08k|      if (n > INT8_MAX || n < INT8_MIN) goto normal;
  ------------------
  |  Branch (820:11): [True: 381, False: 4.69k]
  |  Branch (820:27): [True: 24, False: 4.67k]
  ------------------
  821|  4.67k|      rewind_pc(s);
  ------------------
  |  |  476|  4.67k|#define rewind_pc(s) s->pc = s->lastpc
  ------------------
  822|  4.67k|      if (n == 0) return;
  ------------------
  |  Branch (822:11): [True: 345, False: 4.33k]
  ------------------
  823|  4.33k|      if (n > 0) {
  ------------------
  |  Branch (823:11): [True: 4.15k, False: 174]
  ------------------
  824|  4.15k|        if (op == OP_ADD) genop_2(s, OP_ADDI, dst, (uint16_t)n);
  ------------------
  |  Branch (824:13): [True: 1.83k, False: 2.31k]
  ------------------
  825|  2.31k|        else genop_2(s, OP_SUBI, dst, (uint16_t)n);
  826|  4.15k|      }
  827|    174|      else {                    /* n < 0 */
  828|    174|        n = -n;
  829|    174|        if (op == OP_ADD) genop_2(s, OP_SUBI, dst, (uint16_t)n);
  ------------------
  |  Branch (829:13): [True: 146, False: 28]
  ------------------
  830|     28|        else genop_2(s, OP_ADDI, dst, (uint16_t)n);
  831|    174|      }
  832|  4.33k|      return;
  833|  4.67k|    }
  834|  14.1k|    if (op == OP_ADD) {
  ------------------
  |  Branch (834:9): [True: 4.31k, False: 9.79k]
  ------------------
  835|  4.31k|      if (mrb_int_add_overflow(n0, n, &n)) goto normal;
  ------------------
  |  Branch (835:11): [True: 33, False: 4.27k]
  ------------------
  836|  4.31k|    }
  837|  9.79k|    else { /* OP_SUB */
  838|  9.79k|      if (mrb_int_sub_overflow(n0, n, &n)) goto normal;
  ------------------
  |  Branch (838:11): [True: 1, False: 9.79k]
  ------------------
  839|  9.79k|    }
  840|  14.0k|    s->pc = addr_pc(s, data0.addr);
  ------------------
  |  |  475|  14.0k|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
  841|  14.0k|    gen_int(s, dst, n);
  842|  14.0k|  }
  843|  32.8k|}
codegen.c:genop_2S:
  298|  1.30k|{
  299|  1.30k|  genop_1(s, i, a);
  300|  1.30k|  gen_S(s, b);
  301|  1.30k|}
codegen.c:gen_return:
  734|    845|{
  735|    845|  if (no_peephole(s)) {
  ------------------
  |  Branch (735:7): [True: 451, False: 394]
  ------------------
  736|    451|    genop_1(s, op, src);
  737|    451|  }
  738|    394|  else {
  739|    394|    struct mrb_insn_data data = mrb_last_insn(s);
  740|       |
  741|    394|    if (data.insn == OP_MOVE && src == data.a) {
  ------------------
  |  Branch (741:9): [True: 0, False: 394]
  |  Branch (741:33): [True: 0, False: 0]
  ------------------
  742|      0|      rewind_pc(s);
  ------------------
  |  |  476|      0|#define rewind_pc(s) s->pc = s->lastpc
  ------------------
  743|      0|      genop_1(s, op, data.b);
  744|      0|    }
  745|    394|    else if (data.insn != OP_RETURN) {
  ------------------
  |  Branch (745:14): [True: 394, False: 0]
  ------------------
  746|    394|      genop_1(s, op, src);
  747|    394|    }
  748|    394|  }
  749|    845|}
codegen.c:lv_idx:
 1235|   176k|{
 1236|   176k|  node *lv = s->lv;
 1237|   176k|  int n = 1;
 1238|       |
 1239|  56.8M|  while (lv) {
  ------------------
  |  Branch (1239:10): [True: 56.8M, False: 0]
  ------------------
 1240|  56.8M|    if (lv_name(lv) == id) return n;
  ------------------
  |  | 1231|  56.8M|#define lv_name(lv) nsym((lv)->car)
  |  |  ------------------
  |  |  |  | 1229|  56.8M|#define nsym(x) ((mrb_sym)(intptr_t)(x))
  |  |  ------------------
  ------------------
  |  Branch (1240:9): [True: 176k, False: 56.6M]
  ------------------
 1241|  56.6M|    n++;
 1242|  56.6M|    lv = lv->cdr;
 1243|  56.6M|  }
 1244|      0|  return 0;
 1245|   176k|}
codegen.c:readint:
 2155|   575k|{
 2156|   575k|  const char *e = p + strlen(p);
 2157|   575k|  mrb_int result = 0;
 2158|       |
 2159|   575k|  mrb_assert(base >= 2 && base <= 16);
  ------------------
  |  |   68|   575k|#define mrb_assert(p) ((void)0)
  ------------------
 2160|   575k|  if (*p == '+') p++;
  ------------------
  |  Branch (2160:7): [True: 0, False: 575k]
  ------------------
 2161|  1.15M|  while (p < e) {
  ------------------
  |  Branch (2161:10): [True: 579k, False: 575k]
  ------------------
 2162|   579k|    int n;
 2163|   579k|    char c = *p;
 2164|   579k|    switch (c) {
 2165|   560k|    case '0': case '1': case '2': case '3':
  ------------------
  |  Branch (2165:5): [True: 7.82k, False: 571k]
  |  Branch (2165:15): [True: 548k, False: 30.2k]
  |  Branch (2165:25): [True: 2.31k, False: 576k]
  |  Branch (2165:35): [True: 1.52k, False: 577k]
  ------------------
 2166|   571k|    case '4': case '5': case '6': case '7':
  ------------------
  |  Branch (2166:5): [True: 1.36k, False: 577k]
  |  Branch (2166:15): [True: 1.83k, False: 577k]
  |  Branch (2166:25): [True: 5.31k, False: 573k]
  |  Branch (2166:35): [True: 2.05k, False: 577k]
  ------------------
 2167|   571k|      n = c - '0'; break;
 2168|  7.98k|    case '8': case '9':
  ------------------
  |  Branch (2168:5): [True: 6.43k, False: 572k]
  |  Branch (2168:15): [True: 1.54k, False: 577k]
  ------------------
 2169|  7.98k|      n = c - '0'; break;
 2170|      0|    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
  ------------------
  |  Branch (2170:5): [True: 0, False: 579k]
  |  Branch (2170:15): [True: 0, False: 579k]
  |  Branch (2170:25): [True: 0, False: 579k]
  |  Branch (2170:35): [True: 0, False: 579k]
  |  Branch (2170:45): [True: 0, False: 579k]
  |  Branch (2170:55): [True: 0, False: 579k]
  ------------------
 2171|      0|      n = c - 'a' + 10; break;
 2172|      0|    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
  ------------------
  |  Branch (2172:5): [True: 0, False: 579k]
  |  Branch (2172:15): [True: 0, False: 579k]
  |  Branch (2172:25): [True: 0, False: 579k]
  |  Branch (2172:35): [True: 0, False: 579k]
  |  Branch (2172:45): [True: 0, False: 579k]
  |  Branch (2172:55): [True: 0, False: 579k]
  ------------------
 2173|      0|      n = c - 'A' + 10; break;
 2174|      0|    default:
  ------------------
  |  Branch (2174:5): [True: 0, False: 579k]
  ------------------
 2175|      0|      codegen_error(s, "malformed readint input");
 2176|      0|      *overflow = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 2177|       |      /* not reached */
 2178|      0|      return result;
 2179|   579k|    }
 2180|   579k|    if (mrb_int_mul_overflow(result, base, &result)) {
  ------------------
  |  Branch (2180:9): [True: 0, False: 579k]
  ------------------
 2181|      0|    overflow:
 2182|      0|      *overflow = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 2183|      0|      return 0;
 2184|      0|    }
 2185|   579k|    mrb_uint tmp = ((mrb_uint)result)+n;
 2186|   579k|    if (neg && tmp == (mrb_uint)MRB_INT_MAX+1) {
  ------------------
  |  |   82|      0|# define MRB_INT_MAX INT64_MAX
  ------------------
  |  Branch (2186:9): [True: 0, False: 579k]
  |  Branch (2186:16): [True: 0, False: 0]
  ------------------
 2187|      0|      *overflow = FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
 2188|      0|      return MRB_INT_MIN;
  ------------------
  |  |   81|      0|# define MRB_INT_MIN INT64_MIN
  ------------------
 2189|      0|    }
 2190|   579k|    if (tmp > MRB_INT_MAX) goto overflow;
  ------------------
  |  |   82|   579k|# define MRB_INT_MAX INT64_MAX
  ------------------
  |  Branch (2190:9): [True: 0, False: 579k]
  ------------------
 2191|   579k|    result = (mrb_int)tmp;
 2192|   579k|    p++;
 2193|   579k|  }
 2194|   575k|  *overflow = FALSE;
  ------------------
  |  |   51|   575k|#  define FALSE 0
  ------------------
 2195|   575k|  if (neg) return -result;
  ------------------
  |  Branch (2195:7): [True: 0, False: 575k]
  ------------------
 2196|   575k|  return result;
 2197|   575k|}
codegen.c:lit_pool_extend:
  994|  3.46k|{
  995|  3.46k|  if (s->irep->plen == s->pcapa) {
  ------------------
  |  Branch (995:7): [True: 47, False: 3.42k]
  ------------------
  996|     47|    s->pcapa *= 2;
  997|     47|    s->pool = (mrb_pool_value*)codegen_realloc(s, s->pool, sizeof(mrb_pool_value)*s->pcapa);
  998|     47|  }
  999|       |
 1000|  3.46k|  return &s->pool[s->irep->plen++];
 1001|  3.46k|}
codegen.c:gen_int:
 1171|   602k|{
 1172|   602k|  if (i < 0) {
  ------------------
  |  Branch (1172:7): [True: 10.0k, False: 592k]
  ------------------
 1173|  10.0k|    if (i == -1) genop_1(s, OP_LOADI__1, dst);
  ------------------
  |  Branch (1173:9): [True: 1.81k, False: 8.21k]
  ------------------
 1174|  8.21k|    else if (i >= -0xff) genop_2(s, OP_LOADINEG, dst, (uint16_t)-i);
  ------------------
  |  Branch (1174:14): [True: 6.28k, False: 1.92k]
  ------------------
 1175|  1.92k|    else if (i >= INT16_MIN) genop_2S(s, OP_LOADI16, dst, (uint16_t)i);
  ------------------
  |  Branch (1175:14): [True: 443, False: 1.48k]
  ------------------
 1176|  1.48k|    else if (i >= INT32_MIN) genop_2SS(s, OP_LOADI32, dst, (uint32_t)i);
  ------------------
  |  Branch (1176:14): [True: 468, False: 1.01k]
  ------------------
 1177|  1.01k|    else goto int_lit;
 1178|  10.0k|  }
 1179|   592k|  else if (i < 8) genop_1(s, OP_LOADI_0 + (uint8_t)i, dst);
  ------------------
  |  Branch (1179:12): [True: 577k, False: 15.9k]
  ------------------
 1180|  15.9k|  else if (i <= 0xff) genop_2(s, OP_LOADI, dst, (uint16_t)i);
  ------------------
  |  Branch (1180:12): [True: 13.9k, False: 1.97k]
  ------------------
 1181|  1.97k|  else if (i <= INT16_MAX) genop_2S(s, OP_LOADI16, dst, (uint16_t)i);
  ------------------
  |  Branch (1181:12): [True: 688, False: 1.28k]
  ------------------
 1182|  1.28k|  else if (i <= INT32_MAX) genop_2SS(s, OP_LOADI32, dst, (uint32_t)i);
  ------------------
  |  Branch (1182:12): [True: 459, False: 830]
  ------------------
 1183|    830|  else {
 1184|  1.84k|  int_lit:
 1185|  1.84k|    genop_2(s, OP_LOADL, dst, new_lit_int(s, i));
 1186|  1.84k|  }
 1187|   602k|}
codegen.c:new_lit_int:
 1079|  1.84k|{
 1080|  1.84k|  int i;
 1081|  1.84k|  mrb_pool_value *pv;
 1082|       |
 1083|  87.6k|  for (i=0; i<s->irep->plen; i++) {
  ------------------
  |  Branch (1083:13): [True: 87.4k, False: 262]
  ------------------
 1084|  87.4k|    pv = &s->pool[i];
 1085|  87.4k|    if (pv->tt == IREP_TT_INT32) {
  ------------------
  |  Branch (1085:9): [True: 0, False: 87.4k]
  ------------------
 1086|      0|      if (num == pv->u.i32) return i;
  ------------------
  |  Branch (1086:11): [True: 0, False: 0]
  ------------------
 1087|      0|    }
 1088|  87.4k|#ifdef MRB_64BIT
 1089|  87.4k|    else if (pv->tt == IREP_TT_INT64) {
  ------------------
  |  Branch (1089:14): [True: 10.9k, False: 76.4k]
  ------------------
 1090|  10.9k|      if (num == pv->u.i64) return i;
  ------------------
  |  Branch (1090:11): [True: 1.58k, False: 9.40k]
  ------------------
 1091|  10.9k|    }
 1092|  85.8k|    continue;
 1093|  87.4k|#endif
 1094|  87.4k|  }
 1095|       |
 1096|    262|  pv = lit_pool_extend(s);
 1097|       |
 1098|    262|#ifdef MRB_INT64
 1099|    262|  pv->tt = IREP_TT_INT64;
 1100|    262|  pv->u.i64 = num;
 1101|       |#else
 1102|       |  pv->tt = IREP_TT_INT32;
 1103|       |  pv->u.i32 = num;
 1104|       |#endif
 1105|       |
 1106|    262|  return i;
 1107|  1.84k|}
codegen.c:gen_uniop:
 1191|  5.91k|{
 1192|  5.91k|  if (no_peephole(s)) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  |  Branch (1192:7): [True: 0, False: 5.91k]
  ------------------
 1193|  5.91k|  struct mrb_insn_data data = mrb_last_insn(s);
 1194|  5.91k|  mrb_int n;
 1195|       |
 1196|  5.91k|  if (!get_int_operand(s, &data, &n)) return FALSE;
  ------------------
  |  |   51|  5.91k|#  define FALSE 0
  ------------------
  |  Branch (1196:7): [True: 5.91k, False: 0]
  ------------------
 1197|      0|  if (sym == MRB_OPSYM_2(s->mrb, plus)) {
  ------------------
  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1197:7): [True: 0, False: 0]
  ------------------
 1198|       |    /* unary plus does nothing */
 1199|      0|  }
 1200|      0|  else if (sym == MRB_OPSYM_2(s->mrb, minus)) {
  ------------------
  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1200:12): [True: 0, False: 0]
  ------------------
 1201|      0|    if (n == MRB_INT_MIN) return FALSE;
  ------------------
  |  |   81|      0|# define MRB_INT_MIN INT64_MIN
  ------------------
                  if (n == MRB_INT_MIN) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  |  Branch (1201:9): [True: 0, False: 0]
  ------------------
 1202|      0|    n = -n;
 1203|      0|  }
 1204|      0|  else if (sym == MRB_OPSYM_2(s->mrb, neg)) {
  ------------------
  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  ------------------
  |  Branch (1204:12): [True: 0, False: 0]
  ------------------
 1205|      0|    n = ~n;
 1206|      0|  }
 1207|      0|  else {
 1208|      0|    return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
 1209|      0|  }
 1210|      0|  s->pc = addr_pc(s, data.addr);
  ------------------
  |  |  475|      0|#define addr_pc(s, addr) (uint32_t)((addr) - s->iseq)
  ------------------
 1211|      0|  gen_int(s, dst, n);
 1212|      0|  return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 1213|      0|}
codegen.c:new_lit_str:
 1040|   327k|{
 1041|   327k|  int i;
 1042|   327k|  mrb_pool_value *pv;
 1043|       |
 1044|   681k|  for (i=0; i<s->irep->plen; i++) {
  ------------------
  |  Branch (1044:13): [True: 678k, False: 3.20k]
  ------------------
 1045|   678k|    pv = &s->pool[i];
 1046|   678k|    if (pv->tt & IREP_TT_NFLAG) continue;
  ------------------
  |  |   27|   678k|#define IREP_TT_NFLAG 1       /* number (non string) flag */
  ------------------
  |  Branch (1046:9): [True: 8.32k, False: 670k]
  ------------------
 1047|   670k|    mrb_int plen = pv->tt>>2;
 1048|   670k|    if (len != plen) continue;
  ------------------
  |  Branch (1048:9): [True: 318k, False: 351k]
  ------------------
 1049|   351k|    if (memcmp(pv->u.str, str, plen) == 0)
  ------------------
  |  Branch (1049:9): [True: 324k, False: 27.5k]
  ------------------
 1050|   324k|      return i;
 1051|   351k|  }
 1052|       |
 1053|  3.20k|  pv = lit_pool_extend(s);
 1054|       |
 1055|  3.20k|  if (mrb_ro_data_p(str)) {
  ------------------
  |  Branch (1055:7): [True: 0, False: 3.20k]
  ------------------
 1056|      0|    pv->tt = (uint32_t)(len<<2) | IREP_TT_SSTR;
 1057|      0|    pv->u.str = str;
 1058|      0|  }
 1059|  3.20k|  else {
 1060|  3.20k|    char *p;
 1061|  3.20k|    pv->tt = (uint32_t)(len<<2) | IREP_TT_STR;
 1062|  3.20k|    p = (char*)codegen_realloc(s, NULL, len+1);
 1063|  3.20k|    memcpy(p, str, len);
 1064|  3.20k|    p[len] = '\0';
 1065|  3.20k|    pv->u.str = p;
 1066|  3.20k|  }
 1067|       |
 1068|  3.20k|  return i;
 1069|   327k|}

mrb_reserved_word:
  105|   305k|{
  106|   305k|  static const struct kwtable wordlist[] =
  107|   305k|    {
  108|   305k|      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
  109|   305k|#line 20 "mrbgems/mruby-compiler/core/keywords"
  110|   305k|      {"break",        {keyword_break,       keyword_break},       EXPR_MID},
  111|   305k|#line 25 "mrbgems/mruby-compiler/core/keywords"
  112|   305k|      {"else",         {keyword_else,        keyword_else},        EXPR_BEG},
  113|   305k|#line 35 "mrbgems/mruby-compiler/core/keywords"
  114|   305k|      {"nil",          {keyword_nil,         keyword_nil},         EXPR_END},
  115|   305k|#line 28 "mrbgems/mruby-compiler/core/keywords"
  116|   305k|      {"ensure",       {keyword_ensure,      keyword_ensure},      EXPR_BEG},
  117|   305k|#line 27 "mrbgems/mruby-compiler/core/keywords"
  118|   305k|      {"end",          {keyword_end,         keyword_end},         EXPR_END},
  119|   305k|#line 44 "mrbgems/mruby-compiler/core/keywords"
  120|   305k|      {"then",         {keyword_then,        keyword_then},        EXPR_BEG},
  121|   305k|#line 36 "mrbgems/mruby-compiler/core/keywords"
  122|   305k|      {"not",          {keyword_not,         keyword_not},         EXPR_ARG},
  123|   305k|#line 29 "mrbgems/mruby-compiler/core/keywords"
  124|   305k|      {"false",        {keyword_false,       keyword_false},       EXPR_END},
  125|   305k|#line 42 "mrbgems/mruby-compiler/core/keywords"
  126|   305k|      {"self",         {keyword_self,        keyword_self},        EXPR_END},
  127|   305k|#line 26 "mrbgems/mruby-compiler/core/keywords"
  128|   305k|      {"elsif",        {keyword_elsif,       keyword_elsif},       EXPR_VALUE},
  129|   305k|#line 39 "mrbgems/mruby-compiler/core/keywords"
  130|   305k|      {"rescue",       {keyword_rescue,      modifier_rescue},     EXPR_MID},
  131|   305k|#line 45 "mrbgems/mruby-compiler/core/keywords"
  132|   305k|      {"true",         {keyword_true,        keyword_true},        EXPR_END},
  133|   305k|#line 48 "mrbgems/mruby-compiler/core/keywords"
  134|   305k|      {"until",        {keyword_until,       modifier_until},      EXPR_VALUE},
  135|   305k|#line 47 "mrbgems/mruby-compiler/core/keywords"
  136|   305k|      {"unless",       {keyword_unless,      modifier_unless},     EXPR_VALUE},
  137|   305k|#line 41 "mrbgems/mruby-compiler/core/keywords"
  138|   305k|      {"return",       {keyword_return,      keyword_return},      EXPR_MID},
  139|   305k|#line 23 "mrbgems/mruby-compiler/core/keywords"
  140|   305k|      {"def",          {keyword_def,         keyword_def},         EXPR_FNAME},
  141|   305k|#line 18 "mrbgems/mruby-compiler/core/keywords"
  142|   305k|      {"and",          {keyword_and,         keyword_and},         EXPR_VALUE},
  143|   305k|#line 24 "mrbgems/mruby-compiler/core/keywords"
  144|   305k|      {"do",           {keyword_do,          keyword_do},          EXPR_BEG},
  145|   305k|#line 51 "mrbgems/mruby-compiler/core/keywords"
  146|   305k|      {"yield",        {keyword_yield,       keyword_yield},       EXPR_ARG},
  147|   305k|#line 30 "mrbgems/mruby-compiler/core/keywords"
  148|   305k|      {"for",          {keyword_for,         keyword_for},         EXPR_VALUE},
  149|   305k|#line 46 "mrbgems/mruby-compiler/core/keywords"
  150|   305k|      {"undef",        {keyword_undef,       keyword_undef},       EXPR_FNAME},
  151|   305k|#line 37 "mrbgems/mruby-compiler/core/keywords"
  152|   305k|      {"or",           {keyword_or,          keyword_or},          EXPR_VALUE},
  153|   305k|#line 32 "mrbgems/mruby-compiler/core/keywords"
  154|   305k|      {"in",           {keyword_in,          keyword_in},          EXPR_VALUE},
  155|   305k|#line 49 "mrbgems/mruby-compiler/core/keywords"
  156|   305k|      {"when",         {keyword_when,        keyword_when},        EXPR_VALUE},
  157|   305k|#line 40 "mrbgems/mruby-compiler/core/keywords"
  158|   305k|      {"retry",        {keyword_retry,       keyword_retry},       EXPR_END},
  159|   305k|#line 31 "mrbgems/mruby-compiler/core/keywords"
  160|   305k|      {"if",           {keyword_if,          modifier_if},         EXPR_VALUE},
  161|   305k|#line 21 "mrbgems/mruby-compiler/core/keywords"
  162|   305k|      {"case",         {keyword_case,        keyword_case},        EXPR_VALUE},
  163|   305k|#line 38 "mrbgems/mruby-compiler/core/keywords"
  164|   305k|      {"redo",         {keyword_redo,        keyword_redo},        EXPR_END},
  165|   305k|#line 34 "mrbgems/mruby-compiler/core/keywords"
  166|   305k|      {"next",         {keyword_next,        keyword_next},        EXPR_MID},
  167|   305k|#line 43 "mrbgems/mruby-compiler/core/keywords"
  168|   305k|      {"super",        {keyword_super,       keyword_super},       EXPR_ARG},
  169|   305k|#line 33 "mrbgems/mruby-compiler/core/keywords"
  170|   305k|      {"module",       {keyword_module,      keyword_module},      EXPR_VALUE},
  171|   305k|#line 19 "mrbgems/mruby-compiler/core/keywords"
  172|   305k|      {"begin",        {keyword_begin,       keyword_begin},       EXPR_BEG},
  173|   305k|#line 14 "mrbgems/mruby-compiler/core/keywords"
  174|   305k|      {"__LINE__",     {keyword__LINE__,     keyword__LINE__},     EXPR_END},
  175|   305k|#line 13 "mrbgems/mruby-compiler/core/keywords"
  176|   305k|      {"__FILE__",     {keyword__FILE__,     keyword__FILE__},     EXPR_END},
  177|   305k|#line 12 "mrbgems/mruby-compiler/core/keywords"
  178|   305k|      {"__ENCODING__", {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END},
  179|   305k|#line 16 "mrbgems/mruby-compiler/core/keywords"
  180|   305k|      {"END",          {keyword_END,         keyword_END},         EXPR_END},
  181|   305k|#line 17 "mrbgems/mruby-compiler/core/keywords"
  182|   305k|      {"alias",        {keyword_alias,       keyword_alias},       EXPR_FNAME},
  183|   305k|#line 15 "mrbgems/mruby-compiler/core/keywords"
  184|   305k|      {"BEGIN",        {keyword_BEGIN,       keyword_BEGIN},       EXPR_END},
  185|   305k|      {""},
  186|   305k|#line 22 "mrbgems/mruby-compiler/core/keywords"
  187|   305k|      {"class",        {keyword_class,       keyword_class},       EXPR_CLASS},
  188|   305k|      {""}, {""},
  189|   305k|#line 50 "mrbgems/mruby-compiler/core/keywords"
  190|   305k|      {"while",        {keyword_while,       modifier_while},      EXPR_VALUE}
  191|   305k|    };
  192|       |
  193|   305k|  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
  ------------------
  |  |   44|   611k|#define MAX_WORD_LENGTH 12
  ------------------
                if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
  ------------------
  |  |   43|   305k|#define MIN_WORD_LENGTH 2
  ------------------
  |  Branch (193:7): [True: 305k, False: 0]
  |  Branch (193:33): [True: 305k, False: 0]
  ------------------
  194|   305k|    {
  195|   305k|      register unsigned int key = hash (str, len);
  196|       |
  197|   305k|      if (key <= MAX_HASH_VALUE)
  ------------------
  |  |   46|   305k|#define MAX_HASH_VALUE 50
  ------------------
  |  Branch (197:11): [True: 106k, False: 199k]
  ------------------
  198|   106k|        {
  199|   106k|          register const char *s = wordlist[key].name;
  200|       |
  201|   106k|          if (*str == *s && !strcmp (str + 1, s + 1))
  ------------------
  |  Branch (201:15): [True: 105k, False: 952]
  |  Branch (201:29): [True: 105k, False: 0]
  ------------------
  202|   105k|            return &wordlist[key];
  203|   106k|        }
  204|   305k|    }
  205|   200k|  return 0;
  206|   305k|}
y.tab.c:hash:
   58|   305k|{
   59|   305k|  static const unsigned char asso_values[] =
   60|   305k|    {
   61|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   62|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   63|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   64|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   65|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   66|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   67|   305k|      51, 51, 51, 51, 51, 51, 14, 51, 16,  8,
   68|   305k|      11, 13, 51, 51, 51, 51, 10, 51, 13, 51,
   69|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   70|   305k|      51, 51, 51, 51, 51, 11, 51, 13,  1, 26,
   71|   305k|       4,  1,  8, 28, 51, 23, 51,  1,  1, 27,
   72|   305k|       5, 19, 21, 51,  8,  3,  3, 11, 51, 21,
   73|   305k|      24, 16, 51, 51, 51, 51, 51, 51, 51, 51,
   74|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   75|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   76|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   77|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   78|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   79|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   80|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   81|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   82|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   83|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   84|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   85|   305k|      51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
   86|   305k|      51, 51, 51, 51, 51, 51
   87|   305k|    };
   88|   305k|  register unsigned int hval = len;
   89|       |
   90|   305k|  switch (hval)
   91|   305k|    {
   92|   285k|      default:
  ------------------
  |  Branch (92:7): [True: 285k, False: 20.6k]
  ------------------
   93|   285k|        hval += asso_values[(unsigned char)str[2]];
   94|       |      /*FALLTHROUGH*/
   95|   305k|      case 2:
  ------------------
  |  Branch (95:7): [True: 20.6k, False: 285k]
  ------------------
   96|   305k|      case 1:
  ------------------
  |  Branch (96:7): [True: 0, False: 305k]
  ------------------
   97|   305k|        hval += asso_values[(unsigned char)str[0]];
   98|   305k|        break;
   99|   305k|    }
  100|   305k|  return hval + asso_values[(unsigned char)str[len - 1]];
  101|   305k|}

mrb_parser_parse:
13213|    476|{
13214|    476|  struct mrb_jmpbuf buf1;
13215|    476|  struct mrb_jmpbuf *prev = p->mrb->jmp;
13216|    476|  p->mrb->jmp = &buf1;
13217|       |
13218|    476|  MRB_TRY(p->mrb->jmp) {
  ------------------
  |  |   44|    476|#define MRB_TRY(buf) if (MRB_SETJMP((buf)->impl) == 0) {
  |  |  ------------------
  |  |  |  |   40|    476|#define MRB_SETJMP setjmp
  |  |  ------------------
  |  |  |  Branch (44:26): [True: 476, False: 0]
  |  |  ------------------
  ------------------
13219|    476|    int n = 1;
13220|       |
13221|    476|    p->cmd_start = TRUE;
  ------------------
  |  |   54|    476|#  define TRUE 1
  ------------------
13222|    476|    p->in_def = p->in_single = 0;
13223|    476|    p->nerr = p->nwarn = 0;
13224|    476|    p->lex_strterm = NULL;
13225|    476|    parser_init_cxt(p, c);
13226|       |
13227|    476|    n = yyparse(p);
13228|    476|    if (n != 0 || p->nerr > 0) {
  ------------------
  |  Branch (13228:9): [True: 0, False: 476]
  |  Branch (13228:19): [True: 10, False: 466]
  ------------------
13229|     10|      p->tree = 0;
13230|     10|      p->mrb->jmp = prev;
13231|     10|      return;
13232|     10|    }
13233|    466|    parser_update_cxt(p, c);
13234|    466|    if (c && c->dump_result) {
  ------------------
  |  Branch (13234:9): [True: 0, False: 466]
  |  Branch (13234:14): [True: 0, False: 0]
  ------------------
13235|      0|      mrb_parser_dump(p->mrb, p->tree, 0);
13236|      0|    }
13237|    466|  }
13238|    466|  MRB_CATCH(p->mrb->jmp) {
  ------------------
  |  |   45|    466|#define MRB_CATCH(buf) } else {
  ------------------
13239|      0|    p->nerr++;
13240|      0|    if (p->mrb->exc == NULL) {
  ------------------
  |  Branch (13240:9): [True: 0, False: 0]
  ------------------
13241|      0|      yyerror(p, "memory allocation error");
13242|      0|      p->nerr++;
13243|      0|      p->tree = 0;
13244|      0|    }
13245|      0|  }
13246|    466|  MRB_END_EXC(p->jmp);
  ------------------
  |  |   46|      0|#define MRB_END_EXC(buf) }
  ------------------
13247|    466|  p->mrb->jmp = prev;
13248|    466|}
mrb_parser_new:
13252|    476|{
13253|    476|  mrb_pool *pool;
13254|    476|  parser_state *p;
13255|    476|  static const parser_state parser_state_zero = { 0 };
13256|       |
13257|    476|  pool = mrb_pool_open(mrb);
13258|    476|  if (!pool) return NULL;
  ------------------
  |  Branch (13258:7): [True: 0, False: 476]
  ------------------
13259|    476|  p = (parser_state*)mrb_pool_alloc(pool, sizeof(parser_state));
13260|    476|  if (!p) return NULL;
  ------------------
  |  Branch (13260:7): [True: 0, False: 476]
  ------------------
13261|       |
13262|    476|  *p = parser_state_zero;
13263|    476|  p->mrb = mrb;
13264|    476|  p->pool = pool;
13265|       |
13266|    476|  p->s = p->send = NULL;
13267|    476|#ifndef MRB_NO_STDIO
13268|    476|  p->f = NULL;
13269|    476|#endif
13270|       |
13271|    476|  p->cmd_start = TRUE;
  ------------------
  |  |   54|    476|#  define TRUE 1
  ------------------
13272|    476|  p->in_def = p->in_single = 0;
13273|       |
13274|    476|  p->capture_errors = FALSE;
  ------------------
  |  |   51|    476|#  define FALSE 0
  ------------------
13275|    476|  p->lineno = 1;
13276|    476|  p->column = 0;
13277|       |#if defined(PARSER_TEST) || defined(PARSER_DEBUG)
13278|       |  yydebug = 1;
13279|       |#endif
13280|    476|  p->tsiz = MRB_PARSER_TOKBUF_SIZE;
  ------------------
  |  |  112|    476|#define MRB_PARSER_TOKBUF_SIZE 256
  ------------------
13281|    476|  p->tokbuf = p->buf;
13282|       |
13283|    476|  p->lex_strterm = NULL;
13284|       |
13285|    476|  p->current_filename_index = -1;
13286|    476|  p->filename_table = NULL;
13287|    476|  p->filename_table_length = 0;
13288|       |
13289|    476|  return p;
13290|    476|}
mrb_parser_free:
13293|    476|mrb_parser_free(parser_state *p) {
13294|    476|  if (p->tokbuf != p->buf) {
  ------------------
  |  Branch (13294:7): [True: 0, False: 476]
  ------------------
13295|      0|    mrb_free(p->mrb, p->tokbuf);
13296|      0|  }
13297|    476|  mrb_pool_close(p->pool);
13298|    476|}
mrb_parse_nstring:
13419|    476|{
13420|    476|  parser_state *p;
13421|       |
13422|    476|  p = mrb_parser_new(mrb);
13423|    476|  if (!p) return NULL;
  ------------------
  |  Branch (13423:7): [True: 0, False: 476]
  ------------------
13424|    476|  p->s = s;
13425|    476|  p->send = s + len;
13426|       |
13427|    476|  mrb_parser_parse(p, c);
13428|    476|  return p;
13429|    476|}
mrb_load_exec:
13439|    476|{
13440|    476|  struct RClass *target = mrb->object_class;
13441|    476|  struct RProc *proc;
13442|    476|  mrb_value v;
13443|    476|  mrb_int keep = 0;
13444|       |
13445|    476|  if (!p) {
  ------------------
  |  Branch (13445:7): [True: 0, False: 476]
  ------------------
13446|      0|    return mrb_undef_value();
13447|      0|  }
13448|    476|  if (!p->tree || p->nerr) {
  ------------------
  |  Branch (13448:7): [True: 10, False: 466]
  |  Branch (13448:19): [True: 0, False: 466]
  ------------------
13449|     10|    if (c) c->parser_nerr = p->nerr;
  ------------------
  |  Branch (13449:9): [True: 0, False: 10]
  ------------------
13450|     10|    if (p->capture_errors) {
  ------------------
  |  Branch (13450:9): [True: 0, False: 10]
  ------------------
13451|      0|      char buf[256];
13452|       |
13453|      0|      strcpy(buf, "line ");
13454|      0|      dump_int(p->error_buffer[0].lineno, buf+5);
13455|      0|      strcat(buf, ": ");
13456|      0|      strncat(buf, p->error_buffer[0].message, sizeof(buf) - strlen(buf) - 1);
13457|      0|      mrb->exc = mrb_obj_ptr(mrb_exc_new(mrb, E_SYNTAX_ERROR, buf, strlen(buf)));
  ------------------
  |  |   34|      0|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
13458|      0|      mrb_parser_free(p);
13459|      0|      return mrb_undef_value();
13460|      0|    }
13461|     10|    else {
13462|     10|      if (mrb->exc == NULL) {
  ------------------
  |  Branch (13462:11): [True: 10, False: 0]
  ------------------
13463|     10|        mrb->exc = mrb_obj_ptr(mrb_exc_new_lit(mrb, E_SYNTAX_ERROR, "syntax error"));
  ------------------
  |  |   34|     10|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|     10|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
13464|     10|      }
13465|     10|      mrb_parser_free(p);
13466|     10|      return mrb_undef_value();
13467|     10|    }
13468|     10|  }
13469|    466|  proc = mrb_generate_code(mrb, p);
13470|    466|  mrb_parser_free(p);
13471|    466|  if (proc == NULL) {
  ------------------
  |  Branch (13471:7): [True: 72, False: 394]
  ------------------
13472|     72|    if (mrb->exc == NULL) {
  ------------------
  |  Branch (13472:9): [True: 72, False: 0]
  ------------------
13473|     72|      mrb->exc = mrb_obj_ptr(mrb_exc_new_lit(mrb, E_SCRIPT_ERROR, "codegen error"));
  ------------------
  |  |   34|     72|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|     72|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
13474|     72|    }
13475|     72|    return mrb_undef_value();
13476|     72|  }
13477|    394|  if (c) {
  ------------------
  |  Branch (13477:7): [True: 0, False: 394]
  ------------------
13478|      0|    if (c->dump_result) mrb_codedump_all(mrb, proc);
  ------------------
  |  Branch (13478:9): [True: 0, False: 0]
  ------------------
13479|      0|    if (c->no_exec) return mrb_obj_value(proc);
  ------------------
  |  Branch (13479:9): [True: 0, False: 0]
  ------------------
13480|      0|    if (c->target_class) {
  ------------------
  |  Branch (13480:9): [True: 0, False: 0]
  ------------------
13481|      0|      target = c->target_class;
13482|      0|    }
13483|      0|    if (c->keep_lv) {
  ------------------
  |  Branch (13483:9): [True: 0, False: 0]
  ------------------
13484|      0|      keep = c->slen + 1;
13485|      0|    }
13486|      0|    else {
13487|      0|      c->keep_lv = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
13488|      0|    }
13489|      0|  }
13490|    394|  MRB_PROC_SET_TARGET_CLASS(proc, target);
  ------------------
  |  |   75|    394|#define MRB_PROC_SET_TARGET_CLASS(p,tc) do {\
  |  |   76|    394|  if (MRB_PROC_ENV_P(p)) {\
  |  |  ------------------
  |  |  |  |   72|    394|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    394|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 394]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   77|      0|    (p)->e.env->c = (tc);\
  |  |   78|      0|    mrb_field_write_barrier(mrb, (struct RBasic*)(p)->e.env, (struct RBasic*)(tc));\
  |  |   79|      0|  }\
  |  |   80|    394|  else {\
  |  |   81|    394|    (p)->e.target_class = (tc);\
  |  |   82|    394|    mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)(tc));\
  |  |   83|    394|  }\
  |  |   84|    394|} while (0)
  |  |  ------------------
  |  |  |  Branch (84:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
13491|    394|  if (mrb->c->ci) {
  ------------------
  |  Branch (13491:7): [True: 394, False: 0]
  ------------------
13492|    394|    mrb_vm_ci_target_class_set(mrb->c->ci, target);
13493|    394|  }
13494|    394|  v = mrb_top_run(mrb, proc, mrb_top_self(mrb), keep);
13495|    394|  if (mrb->exc) return mrb_nil_value();
  ------------------
  |  Branch (13495:7): [True: 148, False: 246]
  ------------------
13496|    246|  return v;
13497|    394|}
mrb_load_nstring_cxt:
13565|    476|{
13566|    476|  return mrb_load_exec(mrb, mrb_parse_nstring(mrb, s, len, c), c);
13567|    476|}
mrb_load_string_cxt:
13577|    476|{
13578|    476|  return mrb_load_nstring_cxt(mrb, s, strlen(s), c);
13579|    476|}
mrb_load_string:
13583|    476|{
13584|    476|  return mrb_load_string_cxt(mrb, s, NULL);
13585|    476|}
y.tab.c:parser_init_cxt:
13167|    476|{
13168|    476|  if (!cxt) return;
  ------------------
  |  Branch (13168:7): [True: 476, False: 0]
  ------------------
13169|      0|  if (cxt->filename) mrb_parser_set_filename(p, cxt->filename);
  ------------------
  |  Branch (13169:7): [True: 0, False: 0]
  ------------------
13170|      0|  if (cxt->lineno) p->lineno = cxt->lineno;
  ------------------
  |  Branch (13170:7): [True: 0, False: 0]
  ------------------
13171|      0|  if (cxt->syms) {
  ------------------
  |  Branch (13171:7): [True: 0, False: 0]
  ------------------
13172|      0|    int i;
13173|       |
13174|      0|    p->locals = cons(0,0);
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
13175|      0|    for (i=0; i<cxt->slen; i++) {
  ------------------
  |  Branch (13175:15): [True: 0, False: 0]
  ------------------
13176|      0|      local_add_f(p, cxt->syms[i]);
13177|      0|    }
13178|      0|  }
13179|      0|  p->capture_errors = cxt->capture_errors;
13180|      0|  p->no_optimize = cxt->no_optimize;
13181|      0|  p->no_ext_ops = cxt->no_ext_ops;
13182|      0|  p->upper = cxt->upper;
13183|      0|  if (cxt->partial_hook) {
  ------------------
  |  Branch (13183:7): [True: 0, False: 0]
  ------------------
13184|      0|    p->cxt = cxt;
13185|      0|  }
13186|      0|}
y.tab.c:cons_gen:
  189|  8.50M|{
  190|  8.50M|  node *c;
  191|       |
  192|  8.50M|  if (p->cells) {
  ------------------
  |  Branch (192:7): [True: 2.58M, False: 5.92M]
  ------------------
  193|  2.58M|    c = p->cells;
  194|  2.58M|    p->cells = p->cells->cdr;
  195|  2.58M|  }
  196|  5.92M|  else {
  197|  5.92M|    c = (node*)parser_palloc(p, sizeof(mrb_ast_node));
  198|  5.92M|  }
  199|       |
  200|  8.50M|  c->car = car;
  201|  8.50M|  c->cdr = cdr;
  202|  8.50M|  c->lineno = p->lineno;
  203|  8.50M|  c->filename_index = p->current_filename_index;
  204|       |  /* beginning of next partial file; need to point the previous file */
  205|  8.50M|  if (p->lineno == 0 && p->current_filename_index > 0) {
  ------------------
  |  Branch (205:7): [True: 0, False: 8.50M]
  |  Branch (205:25): [True: 0, False: 0]
  ------------------
  206|      0|    c->filename_index--;
  207|      0|  }
  208|  8.50M|  return c;
  209|  8.50M|}
y.tab.c:local_add_f:
  375|  69.2k|{
  376|  69.2k|  if (p->locals) {
  ------------------
  |  Branch (376:7): [True: 69.2k, False: 0]
  ------------------
  377|  69.2k|    node *n = p->locals->car;
  378|  39.1M|    while (n) {
  ------------------
  |  Branch (378:12): [True: 39.0M, False: 69.2k]
  ------------------
  379|  39.0M|      if (sym(n->car) == sym) {
  ------------------
  |  |  132|  39.0M|#define sym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
  |  Branch (379:11): [True: 0, False: 39.0M]
  ------------------
  380|      0|        mrb_int len;
  381|      0|        const char* name = mrb_sym_name_len(p->mrb, sym, &len);
  382|      0|        if (len > 0 && name[0] != '_') {
  ------------------
  |  Branch (382:13): [True: 0, False: 0]
  |  Branch (382:24): [True: 0, False: 0]
  ------------------
  383|      0|          yyerror(p, "duplicated argument name");
  384|      0|          return;
  385|      0|        }
  386|      0|      }
  387|  39.0M|      n = n->cdr;
  388|  39.0M|    }
  389|  69.2k|    p->locals->car = push(p->locals->car, nsym(sym));
  ------------------
  |  |  268|  69.2k|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|  69.2k|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
  390|  69.2k|  }
  391|  69.2k|}
y.tab.c:append_gen:
  256|  1.45M|{
  257|  1.45M|  node *c = a;
  258|       |
  259|  1.45M|  if (!a) return b;
  ------------------
  |  Branch (259:7): [True: 695k, False: 756k]
  ------------------
  260|   756k|  if (!b) return a;
  ------------------
  |  Branch (260:7): [True: 0, False: 756k]
  ------------------
  261|  1.76G|  while (c->cdr) {
  ------------------
  |  Branch (261:10): [True: 1.76G, False: 756k]
  ------------------
  262|  1.76G|    c = c->cdr;
  263|  1.76G|  }
  264|   756k|  c->cdr = b;
  265|   756k|  return a;
  266|   756k|}
y.tab.c:list1_gen:
  214|  1.65M|{
  215|  1.65M|  return cons(a, 0);
  ------------------
  |  |  210|  1.65M|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  216|  1.65M|}
y.tab.c:yyparse:
 6226|    476|{
 6227|       |/* Lookahead token kind.  */
 6228|    476|int yychar;
 6229|       |
 6230|       |
 6231|       |/* The semantic value of the lookahead symbol.  */
 6232|       |/* Default value used for initialization, for pacifying older GCCs
 6233|       |   or non-GCC compilers.  */
 6234|    476|YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
  ------------------
  |  | 2205|    476|# define YY_INITIAL_VALUE(Value) Value
  ------------------
 6235|    476|YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
  ------------------
  |  | 2205|    476|# define YY_INITIAL_VALUE(Value) Value
  ------------------
 6236|       |
 6237|       |    /* Number of syntax errors so far.  */
 6238|    476|    int yynerrs = 0;
 6239|       |
 6240|    476|    yy_state_fast_t yystate = 0;
 6241|       |    /* Number of tokens to shift before error messages enabled.  */
 6242|    476|    int yyerrstatus = 0;
 6243|       |
 6244|       |    /* Refer to the stacks through separate pointers, to allow yyoverflow
 6245|       |       to reallocate them elsewhere.  */
 6246|       |
 6247|       |    /* Their size.  */
 6248|    476|    YYPTRDIFF_T yystacksize = YYINITDEPTH;
  ------------------
  |  | 2112|    476|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
                  YYPTRDIFF_T yystacksize = YYINITDEPTH;
  ------------------
  |  | 5910|    476|# define YYINITDEPTH 200
  ------------------
 6249|       |
 6250|       |    /* The state stack: array, bottom, top.  */
 6251|    476|    yy_state_t yyssa[YYINITDEPTH];
 6252|    476|    yy_state_t *yyss = yyssa;
 6253|    476|    yy_state_t *yyssp = yyss;
 6254|       |
 6255|       |    /* The semantic value stack: array, bottom, top.  */
 6256|    476|    YYSTYPE yyvsa[YYINITDEPTH];
 6257|    476|    YYSTYPE *yyvs = yyvsa;
 6258|    476|    YYSTYPE *yyvsp = yyvs;
 6259|       |
 6260|    476|  int yyn;
 6261|       |  /* The return value of yyparse.  */
 6262|    476|  int yyresult;
 6263|       |  /* Lookahead symbol kind.  */
 6264|    476|  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
 6265|       |  /* The variables used to return semantic value and location from the
 6266|       |     action routines.  */
 6267|    476|  YYSTYPE yyval;
 6268|       |
 6269|       |  /* Buffer for error messages, and its allocated size.  */
 6270|    476|  char yymsgbuf[128];
 6271|    476|  char *yymsg = yymsgbuf;
 6272|    476|  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
  ------------------
  |  | 2112|    476|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 6273|       |
 6274|    476|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 6275|       |
 6276|       |  /* The number of symbols on the RHS of the reduced rule.
 6277|       |     Keep to zero when no symbol should be popped.  */
 6278|    476|  int yylen = 0;
 6279|       |
 6280|    476|  YYDPRINTF ((stderr, "Starting parse\n"));
  ------------------
  |  | 5901|    476|# define YYDPRINTF(Args) ((void) 0)
  ------------------
 6281|       |
 6282|    476|  yychar = YYEMPTY; /* Cause a token to be read.  */
 6283|       |
 6284|    476|  goto yysetstate;
 6285|       |
 6286|       |
 6287|       |/*------------------------------------------------------------.
 6288|       || yynewstate -- push a new state, which is found in yystate.  |
 6289|       |`------------------------------------------------------------*/
 6290|  13.8M|yynewstate:
 6291|       |  /* In all cases, when you get here, the value and location stacks
 6292|       |     have just been pushed.  So pushing a state here evens the stacks.  */
 6293|  13.8M|  yyssp++;
 6294|       |
 6295|       |
 6296|       |/*--------------------------------------------------------------------.
 6297|       || yysetstate -- set current state (the top of the stack) to yystate.  |
 6298|       |`--------------------------------------------------------------------*/
 6299|  13.8M|yysetstate:
 6300|  13.8M|  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
  ------------------
  |  | 5901|  13.8M|# define YYDPRINTF(Args) ((void) 0)
  ------------------
 6301|  13.8M|  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
  ------------------
  |  | 2228|  13.8M|#define YY_ASSERT(E) ((void) (0 && (E)))
  |  |  ------------------
  |  |  |  Branch (2228:31): [Folded - Ignored]
  |  |  |  Branch (2228:37): [True: 0, False: 0]
  |  |  |  Branch (2228:37): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6302|  13.8M|  YY_IGNORE_USELESS_CAST_BEGIN
 6303|  13.8M|  *yyssp = YY_CAST (yy_state_t, yystate);
  ------------------
  |  | 1519|  13.8M|#   define YY_CAST(Type, Val) ((Type) (Val))
  ------------------
 6304|  13.8M|  YY_IGNORE_USELESS_CAST_END
 6305|  13.8M|  YY_STACK_PRINT (yyss, yyssp);
 6306|       |
 6307|  13.8M|  if (yyss + yystacksize - 1 <= yyssp)
  ------------------
  |  Branch (6307:7): [True: 9, False: 13.8M]
  ------------------
 6308|       |#if !defined yyoverflow && !defined YYSTACK_RELOCATE
 6309|       |    YYNOMEM;
 6310|       |#else
 6311|      9|    {
 6312|       |      /* Get the current used size of the three stacks, in elements.  */
 6313|      9|      YYPTRDIFF_T yysize = yyssp - yyss + 1;
  ------------------
  |  | 2112|      9|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  ------------------
 6314|       |
 6315|       |# if defined yyoverflow
 6316|       |      {
 6317|       |        /* Give user a chance to reallocate the stack.  Use copies of
 6318|       |           these so that the &'s don't force the real ones into
 6319|       |           memory.  */
 6320|       |        yy_state_t *yyss1 = yyss;
 6321|       |        YYSTYPE *yyvs1 = yyvs;
 6322|       |
 6323|       |        /* Each stack pointer address is followed by the size of the
 6324|       |           data in use in that stack, in bytes.  This used to be a
 6325|       |           conditional around just the two extra args, but that might
 6326|       |           be undefined if yyoverflow is a macro.  */
 6327|       |        yyoverflow (YY_("memory exhausted"),
 6328|       |                    &yyss1, yysize * YYSIZEOF (*yyssp),
 6329|       |                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
 6330|       |                    &yystacksize);
 6331|       |        yyss = yyss1;
 6332|       |        yyvs = yyvs1;
 6333|       |      }
 6334|       |# else /* defined YYSTACK_RELOCATE */
 6335|       |      /* Extend the stack our own way.  */
 6336|      9|      if (YYMAXDEPTH <= yystacksize)
  ------------------
  |  | 5921|      9|# define YYMAXDEPTH 10000
  ------------------
  |  Branch (6336:11): [True: 0, False: 9]
  ------------------
 6337|      0|        YYNOMEM;
  ------------------
  |  | 5753|      0|#define YYNOMEM         goto yyexhaustedlab
  ------------------
 6338|      9|      yystacksize *= 2;
 6339|      9|      if (YYMAXDEPTH < yystacksize)
  ------------------
  |  | 5921|      9|# define YYMAXDEPTH 10000
  ------------------
  |  Branch (6339:11): [True: 0, False: 9]
  ------------------
 6340|      0|        yystacksize = YYMAXDEPTH;
  ------------------
  |  | 5921|      0|# define YYMAXDEPTH 10000
  ------------------
 6341|       |
 6342|      9|      {
 6343|      9|        yy_state_t *yyss1 = yyss;
 6344|      9|        union yyalloc *yyptr =
 6345|      9|          YY_CAST (union yyalloc *,
  ------------------
  |  | 1519|      9|#   define YY_CAST(Type, Val) ((Type) (Val))
  ------------------
 6346|      9|                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
 6347|      9|        if (! yyptr)
  ------------------
  |  Branch (6347:13): [True: 0, False: 9]
  ------------------
 6348|      0|          YYNOMEM;
  ------------------
  |  | 5753|      0|#define YYNOMEM         goto yyexhaustedlab
  ------------------
 6349|      9|        YYSTACK_RELOCATE (yyss_alloc, yyss);
  ------------------
  |  | 2325|      9|    do                                                                  \
  |  | 2326|      9|      {                                                                 \
  |  | 2327|      9|        YYPTRDIFF_T yynewbytes;                                         \
  |  |  ------------------
  |  |  |  | 2112|      9|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  |  |  ------------------
  |  | 2328|      9|        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
  |  |  ------------------
  |  |  |  | 2343|      9|      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1519|      9|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2329|      9|        Stack = &yyptr->Stack_alloc;                                    \
  |  | 2330|      9|        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  | 2145|      9|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1519|      9|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  | 2309|      9|# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2145|      9|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1519|      9|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2331|      9|        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
  |  |  ------------------
  |  |  |  | 2145|      9|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1519|      9|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2332|      9|      }                                                                 \
  |  | 2333|      9|    while (0)
  |  |  ------------------
  |  |  |  Branch (2333:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 6350|      9|        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
  ------------------
  |  | 2325|      9|    do                                                                  \
  |  | 2326|      9|      {                                                                 \
  |  | 2327|      9|        YYPTRDIFF_T yynewbytes;                                         \
  |  |  ------------------
  |  |  |  | 2112|      9|#  define YYPTRDIFF_T __PTRDIFF_TYPE__
  |  |  ------------------
  |  | 2328|      9|        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
  |  |  ------------------
  |  |  |  | 2343|      9|      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1519|      9|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2329|      9|        Stack = &yyptr->Stack_alloc;                                    \
  |  | 2330|      9|        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  | 2145|      9|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1519|      9|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
  |  |  ------------------
  |  |  |  | 2309|      9|# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2145|      9|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1519|      9|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2331|      9|        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
  |  |  ------------------
  |  |  |  | 2145|      9|#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1519|      9|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2332|      9|      }                                                                 \
  |  | 2333|      9|    while (0)
  |  |  ------------------
  |  |  |  Branch (2333:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 6351|      9|#  undef YYSTACK_RELOCATE
 6352|      9|        if (yyss1 != yyssa)
  ------------------
  |  Branch (6352:13): [True: 0, False: 9]
  ------------------
 6353|      0|          YYSTACK_FREE (yyss1);
  ------------------
  |  | 2260|      0|#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
  |  |  ------------------
  |  |  |  Branch (2260:56): [Folded - Ignored]
  |  |  ------------------
  ------------------
 6354|      9|      }
 6355|      0|# endif
 6356|       |
 6357|      0|      yyssp = yyss + yysize - 1;
 6358|      9|      yyvsp = yyvs + yysize - 1;
 6359|       |
 6360|      9|      YY_IGNORE_USELESS_CAST_BEGIN
 6361|      9|      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
  ------------------
  |  | 5901|      9|# define YYDPRINTF(Args) ((void) 0)
  ------------------
 6362|      9|                  YY_CAST (long, yystacksize)));
 6363|      9|      YY_IGNORE_USELESS_CAST_END
 6364|       |
 6365|      9|      if (yyss + yystacksize - 1 <= yyssp)
  ------------------
  |  Branch (6365:11): [True: 0, False: 9]
  ------------------
 6366|      0|        YYABORT;
  ------------------
  |  | 5751|      0|#define YYABORT         goto yyabortlab
  ------------------
 6367|      9|    }
 6368|  13.8M|#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 6369|       |
 6370|       |
 6371|  13.8M|  if (yystate == YYFINAL)
  ------------------
  |  | 2358|  13.8M|#define YYFINAL  3
  ------------------
  |  Branch (6371:7): [True: 476, False: 13.8M]
  ------------------
 6372|    476|    YYACCEPT;
  ------------------
  |  | 5750|    476|#define YYACCEPT        goto yyacceptlab
  ------------------
 6373|       |
 6374|  13.8M|  goto yybackup;
 6375|       |
 6376|       |
 6377|       |/*-----------.
 6378|       || yybackup.  |
 6379|       |`-----------*/
 6380|  13.8M|yybackup:
 6381|       |  /* Do appropriate processing given the current state.  Read a
 6382|       |     lookahead token if we need one and don't already have one.  */
 6383|       |
 6384|       |  /* First try to decide what to do without reference to lookahead token.  */
 6385|  13.8M|  yyn = yypact[yystate];
 6386|  13.8M|  if (yypact_value_is_default (yyn))
  ------------------
  |  | 2580|  13.8M|  ((Yyn) == YYPACT_NINF)
  |  |  ------------------
  |  |  |  | 2577|  13.8M|#define YYPACT_NINF (-868)
  |  |  ------------------
  |  |  |  Branch (2580:3): [True: 5.12M, False: 8.73M]
  |  |  ------------------
  ------------------
 6387|  5.12M|    goto yydefault;
 6388|       |
 6389|       |  /* Not known => get a lookahead token if don't already have one.  */
 6390|       |
 6391|       |  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
 6392|  8.73M|  if (yychar == YYEMPTY)
  ------------------
  |  Branch (6392:7): [True: 3.38M, False: 5.35M]
  ------------------
 6393|  3.38M|    {
 6394|  3.38M|      YYDPRINTF ((stderr, "Reading a token\n"));
  ------------------
  |  | 5901|  3.38M|# define YYDPRINTF(Args) ((void) 0)
  ------------------
 6395|  3.38M|      yychar = yylex (&yylval, p);
 6396|  3.38M|    }
 6397|       |
 6398|  8.73M|  if (yychar <= YYEOF)
  ------------------
  |  Branch (6398:7): [True: 952, False: 8.73M]
  ------------------
 6399|    952|    {
 6400|    952|      yychar = YYEOF;
 6401|    952|      yytoken = YYSYMBOL_YYEOF;
 6402|    952|      YYDPRINTF ((stderr, "Now at end of input.\n"));
  ------------------
  |  | 5901|    952|# define YYDPRINTF(Args) ((void) 0)
  ------------------
 6403|    952|    }
 6404|  8.73M|  else if (yychar == YYerror)
  ------------------
  |  Branch (6404:12): [True: 0, False: 8.73M]
  ------------------
 6405|      0|    {
 6406|       |      /* The scanner already issued an error message, process directly
 6407|       |         to error recovery.  But do not keep the error token as
 6408|       |         lookahead, it is too special and may lead us to an endless
 6409|       |         loop in error recovery. */
 6410|      0|      yychar = YYUNDEF;
 6411|      0|      yytoken = YYSYMBOL_YYerror;
 6412|      0|      goto yyerrlab1;
 6413|      0|    }
 6414|  8.73M|  else
 6415|  8.73M|    {
 6416|  8.73M|      yytoken = YYTRANSLATE (yychar);
  ------------------
  |  | 2378|  8.73M|  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
  |  |  ------------------
  |  |  |  | 2372|  8.73M|#define YYMAXUTOK   377
  |  |  ------------------
  |  |  |  Branch (2378:4): [True: 8.73M, False: 0]
  |  |  |  Branch (2378:18): [True: 8.73M, False: 0]
  |  |  ------------------
  |  | 2379|  8.73M|   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
  |  |  ------------------
  |  |  |  | 1519|  8.73M|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  |  | 2380|  8.73M|   : YYSYMBOL_YYUNDEF)
  ------------------
 6417|  8.73M|      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
 6418|  8.73M|    }
 6419|       |
 6420|       |  /* If the proper action on seeing token YYTOKEN is to reduce or to
 6421|       |     detect an error, take that action.  */
 6422|  8.73M|  yyn += yytoken;
 6423|  8.73M|  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
  ------------------
  |  | 2360|  8.73M|#define YYLAST   13092
  ------------------
  |  Branch (6423:7): [True: 0, False: 8.73M]
  |  Branch (6423:18): [True: 0, False: 8.73M]
  |  Branch (6423:34): [True: 5.10M, False: 3.63M]
  ------------------
 6424|  5.10M|    goto yydefault;
 6425|  3.63M|  yyn = yytable[yyn];
 6426|  3.63M|  if (yyn <= 0)
  ------------------
  |  Branch (6426:7): [True: 246k, False: 3.38M]
  ------------------
 6427|   246k|    {
 6428|   246k|      if (yytable_value_is_error (yyn))
  ------------------
  |  | 2585|   246k|  ((Yyn) == YYTABLE_NINF)
  |  |  ------------------
  |  |  |  | 2582|   246k|#define YYTABLE_NINF (-620)
  |  |  ------------------
  |  |  |  Branch (2585:3): [True: 0, False: 246k]
  |  |  ------------------
  ------------------
 6429|      0|        goto yyerrlab;
 6430|   246k|      yyn = -yyn;
 6431|   246k|      goto yyreduce;
 6432|   246k|    }
 6433|       |
 6434|       |  /* Count tokens shifted since error; after three, turn off error
 6435|       |     status.  */
 6436|  3.38M|  if (yyerrstatus)
  ------------------
  |  Branch (6436:7): [True: 0, False: 3.38M]
  ------------------
 6437|      0|    yyerrstatus--;
 6438|       |
 6439|       |  /* Shift the lookahead token.  */
 6440|  3.38M|  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 6441|  3.38M|  yystate = yyn;
 6442|  3.38M|  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
 6443|  3.38M|  *++yyvsp = yylval;
 6444|  3.38M|  YY_IGNORE_MAYBE_UNINITIALIZED_END
 6445|       |
 6446|       |  /* Discard the shifted token.  */
 6447|  3.38M|  yychar = YYEMPTY;
 6448|  3.38M|  goto yynewstate;
 6449|       |
 6450|       |
 6451|       |/*-----------------------------------------------------------.
 6452|       || yydefault -- do the default action for the current state.  |
 6453|       |`-----------------------------------------------------------*/
 6454|  10.2M|yydefault:
 6455|  10.2M|  yyn = yydefact[yystate];
 6456|  10.2M|  if (yyn == 0)
  ------------------
  |  Branch (6456:7): [True: 0, False: 10.2M]
  ------------------
 6457|      0|    goto yyerrlab;
 6458|  10.2M|  goto yyreduce;
 6459|       |
 6460|       |
 6461|       |/*-----------------------------.
 6462|       || yyreduce -- do a reduction.  |
 6463|       |`-----------------------------*/
 6464|  10.4M|yyreduce:
 6465|       |  /* yyn is the number of a rule to reduce with.  */
 6466|  10.4M|  yylen = yyr2[yyn];
 6467|       |
 6468|       |  /* If YYLEN is nonzero, implement the default value of the action:
 6469|       |     '$$ = $1'.
 6470|       |
 6471|       |     Otherwise, the following line sets YYVAL to garbage.
 6472|       |     This behavior is undocumented and Bison
 6473|       |     users should not rely upon it.  Assigning to YYVAL
 6474|       |     unconditionally makes the parser a bit smaller, and it avoids a
 6475|       |     GCC warning that YYVAL may be used uninitialized.  */
 6476|  10.4M|  yyval = yyvsp[1-yylen];
 6477|       |
 6478|       |
 6479|  10.4M|  YY_REDUCE_PRINT (yyn);
 6480|  10.4M|  switch (yyn)
 6481|  10.4M|    {
 6482|    476|  case 2: /* $@1: %empty  */
  ------------------
  |  Branch (6482:3): [True: 476, False: 10.4M]
  ------------------
 6483|    476|#line 1625 "mrbgems/mruby-compiler/core/parse.y"
 6484|    476|                    {
 6485|    476|                      p->lstate = EXPR_BEG;
 6486|    476|                      if (!p->locals) p->locals = cons(0,0);
  ------------------
  |  |  210|    476|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  |  Branch (6486:27): [True: 476, False: 0]
  ------------------
 6487|    476|                    }
 6488|    476|#line 6489 "mrbgems/mruby-compiler/core/y.tab.c"
 6489|    476|    break;
 6490|       |
 6491|    476|  case 3: /* program: $@1 top_compstmt  */
  ------------------
  |  Branch (6491:3): [True: 476, False: 10.4M]
  ------------------
 6492|    476|#line 1630 "mrbgems/mruby-compiler/core/parse.y"
 6493|    476|                    {
 6494|    476|                      p->tree = new_scope(p, (yyvsp[0].nd));
 6495|    476|                      NODE_LINENO(p->tree, (yyvsp[0].nd));
  ------------------
  |  |  125|    476|#define NODE_LINENO(c,n) do {\
  |  |  126|    476|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 476, False: 0]
  |  |  ------------------
  |  |  127|    476|     (c)->filename_index = (n)->filename_index;\
  |  |  128|    476|     (c)->lineno = (n)->lineno;\
  |  |  129|    476|  }\
  |  |  130|    476|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 6496|    476|                    }
 6497|    476|#line 6498 "mrbgems/mruby-compiler/core/y.tab.c"
 6498|    476|    break;
 6499|       |
 6500|    476|  case 4: /* top_compstmt: top_stmts opt_terms  */
  ------------------
  |  Branch (6500:3): [True: 476, False: 10.4M]
  ------------------
 6501|    476|#line 1637 "mrbgems/mruby-compiler/core/parse.y"
 6502|    476|                    {
 6503|    476|                      (yyval.nd) = (yyvsp[-1].nd);
 6504|    476|                    }
 6505|    476|#line 6506 "mrbgems/mruby-compiler/core/y.tab.c"
 6506|    476|    break;
 6507|       |
 6508|      0|  case 5: /* top_stmts: none  */
  ------------------
  |  Branch (6508:3): [True: 0, False: 10.4M]
  ------------------
 6509|      0|#line 1643 "mrbgems/mruby-compiler/core/parse.y"
 6510|      0|                    {
 6511|      0|                      (yyval.nd) = new_begin(p, 0);
 6512|      0|                    }
 6513|      0|#line 6514 "mrbgems/mruby-compiler/core/y.tab.c"
 6514|      0|    break;
 6515|       |
 6516|    476|  case 6: /* top_stmts: top_stmt  */
  ------------------
  |  Branch (6516:3): [True: 476, False: 10.4M]
  ------------------
 6517|    476|#line 1647 "mrbgems/mruby-compiler/core/parse.y"
 6518|    476|                    {
 6519|    476|                      (yyval.nd) = new_begin(p, (yyvsp[0].nd));
 6520|    476|                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
  ------------------
  |  |  125|    476|#define NODE_LINENO(c,n) do {\
  |  |  126|    476|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 476, False: 0]
  |  |  ------------------
  |  |  127|    476|     (c)->filename_index = (n)->filename_index;\
  |  |  128|    476|     (c)->lineno = (n)->lineno;\
  |  |  129|    476|  }\
  |  |  130|    476|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 6521|    476|                    }
 6522|    476|#line 6523 "mrbgems/mruby-compiler/core/y.tab.c"
 6523|    476|    break;
 6524|       |
 6525|    476|  case 7: /* top_stmts: top_stmts terms top_stmt  */
  ------------------
  |  Branch (6525:3): [True: 476, False: 10.4M]
  ------------------
 6526|    476|#line 1652 "mrbgems/mruby-compiler/core/parse.y"
 6527|    476|                    {
 6528|    476|                      (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd)));
  ------------------
  |  |  268|    476|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|    476|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 6529|    476|                    }
 6530|    476|#line 6531 "mrbgems/mruby-compiler/core/y.tab.c"
 6531|    476|    break;
 6532|       |
 6533|      0|  case 8: /* top_stmts: error top_stmt  */
  ------------------
  |  Branch (6533:3): [True: 0, False: 10.4M]
  ------------------
 6534|      0|#line 1656 "mrbgems/mruby-compiler/core/parse.y"
 6535|      0|                    {
 6536|      0|                      (yyval.nd) = new_begin(p, 0);
 6537|      0|                    }
 6538|      0|#line 6539 "mrbgems/mruby-compiler/core/y.tab.c"
 6539|      0|    break;
 6540|       |
 6541|      0|  case 10: /* @2: %empty  */
  ------------------
  |  Branch (6541:3): [True: 0, False: 10.4M]
  ------------------
 6542|      0|#line 1663 "mrbgems/mruby-compiler/core/parse.y"
 6543|      0|                    {
 6544|      0|                      (yyval.nd) = local_switch(p);
 6545|      0|                      nvars_block(p);
 6546|      0|                    }
 6547|      0|#line 6548 "mrbgems/mruby-compiler/core/y.tab.c"
 6548|      0|    break;
 6549|       |
 6550|      0|  case 11: /* top_stmt: "'BEGIN'" @2 '{' top_compstmt '}'  */
  ------------------
  |  Branch (6550:3): [True: 0, False: 10.4M]
  ------------------
 6551|      0|#line 1668 "mrbgems/mruby-compiler/core/parse.y"
 6552|      0|                    {
 6553|      0|                      yyerror(p, "BEGIN not supported");
 6554|      0|                      local_resume(p, (yyvsp[-3].nd));
 6555|      0|                      nvars_unnest(p);
 6556|      0|                      (yyval.nd) = 0;
 6557|      0|                    }
 6558|      0|#line 6559 "mrbgems/mruby-compiler/core/y.tab.c"
 6559|      0|    break;
 6560|       |
 6561|  21.4k|  case 12: /* bodystmt: compstmt opt_rescue opt_else opt_ensure  */
  ------------------
  |  Branch (6561:3): [True: 21.4k, False: 10.4M]
  ------------------
 6562|  21.4k|#line 1680 "mrbgems/mruby-compiler/core/parse.y"
 6563|  21.4k|                    {
 6564|  21.4k|                      if ((yyvsp[-2].nd)) {
  ------------------
  |  Branch (6564:27): [True: 0, False: 21.4k]
  ------------------
 6565|      0|                        (yyval.nd) = new_rescue(p, (yyvsp[-3].nd), (yyvsp[-2].nd), (yyvsp[-1].nd));
 6566|      0|                        NODE_LINENO((yyval.nd), (yyvsp[-3].nd));
  ------------------
  |  |  125|      0|#define NODE_LINENO(c,n) do {\
  |  |  126|      0|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  127|      0|     (c)->filename_index = (n)->filename_index;\
  |  |  128|      0|     (c)->lineno = (n)->lineno;\
  |  |  129|      0|  }\
  |  |  130|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 6567|      0|                      }
 6568|  21.4k|                      else if ((yyvsp[-1].nd)) {
  ------------------
  |  Branch (6568:32): [True: 0, False: 21.4k]
  ------------------
 6569|      0|                        yywarning(p, "else without rescue is useless");
 6570|      0|                        (yyval.nd) = push((yyvsp[-3].nd), (yyvsp[-1].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 6571|      0|                      }
 6572|  21.4k|                      else {
 6573|  21.4k|                        (yyval.nd) = (yyvsp[-3].nd);
 6574|  21.4k|                      }
 6575|  21.4k|                      if ((yyvsp[0].nd)) {
  ------------------
  |  Branch (6575:27): [True: 0, False: 21.4k]
  ------------------
 6576|      0|                        if ((yyval.nd)) {
  ------------------
  |  Branch (6576:29): [True: 0, False: 0]
  ------------------
 6577|      0|                          (yyval.nd) = new_ensure(p, (yyval.nd), (yyvsp[0].nd));
 6578|      0|                        }
 6579|      0|                        else {
 6580|      0|                          (yyval.nd) = push((yyvsp[0].nd), new_nil(p));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 6581|      0|                        }
 6582|      0|                      }
 6583|  21.4k|                    }
 6584|  21.4k|#line 6585 "mrbgems/mruby-compiler/core/y.tab.c"
 6585|  21.4k|    break;
 6586|       |
 6587|   198k|  case 13: /* compstmt: stmts opt_terms  */
  ------------------
  |  Branch (6587:3): [True: 198k, False: 10.2M]
  ------------------
 6588|   198k|#line 1704 "mrbgems/mruby-compiler/core/parse.y"
 6589|   198k|                    {
 6590|   198k|                      (yyval.nd) = (yyvsp[-1].nd);
 6591|   198k|                    }
 6592|   198k|#line 6593 "mrbgems/mruby-compiler/core/y.tab.c"
 6593|   198k|    break;
 6594|       |
 6595|  33.5k|  case 14: /* stmts: none  */
  ------------------
  |  Branch (6595:3): [True: 33.5k, False: 10.4M]
  ------------------
 6596|  33.5k|#line 1710 "mrbgems/mruby-compiler/core/parse.y"
 6597|  33.5k|                    {
 6598|  33.5k|                      (yyval.nd) = new_begin(p, 0);
 6599|  33.5k|                    }
 6600|  33.5k|#line 6601 "mrbgems/mruby-compiler/core/y.tab.c"
 6601|  33.5k|    break;
 6602|       |
 6603|   164k|  case 15: /* stmts: stmt  */
  ------------------
  |  Branch (6603:3): [True: 164k, False: 10.3M]
  ------------------
 6604|   164k|#line 1714 "mrbgems/mruby-compiler/core/parse.y"
 6605|   164k|                    {
 6606|   164k|                      (yyval.nd) = new_begin(p, (yyvsp[0].nd));
 6607|   164k|                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
  ------------------
  |  |  125|   164k|#define NODE_LINENO(c,n) do {\
  |  |  126|   164k|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 164k, False: 0]
  |  |  ------------------
  |  |  127|   164k|     (c)->filename_index = (n)->filename_index;\
  |  |  128|   164k|     (c)->lineno = (n)->lineno;\
  |  |  129|   164k|  }\
  |  |  130|   164k|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 6608|   164k|                    }
 6609|   164k|#line 6610 "mrbgems/mruby-compiler/core/y.tab.c"
 6610|   164k|    break;
 6611|       |
 6612|   226k|  case 16: /* stmts: stmts terms stmt  */
  ------------------
  |  Branch (6612:3): [True: 226k, False: 10.2M]
  ------------------
 6613|   226k|#line 1719 "mrbgems/mruby-compiler/core/parse.y"
 6614|   226k|                    {
 6615|   226k|                      (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd)));
  ------------------
  |  |  268|   226k|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|   226k|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 6616|   226k|                    }
 6617|   226k|#line 6618 "mrbgems/mruby-compiler/core/y.tab.c"
 6618|   226k|    break;
 6619|       |
 6620|      0|  case 17: /* stmts: error stmt  */
  ------------------
  |  Branch (6620:3): [True: 0, False: 10.4M]
  ------------------
 6621|      0|#line 1723 "mrbgems/mruby-compiler/core/parse.y"
 6622|      0|                    {
 6623|      0|                      (yyval.nd) = new_begin(p, (yyvsp[0].nd));
 6624|      0|                    }
 6625|      0|#line 6626 "mrbgems/mruby-compiler/core/y.tab.c"
 6626|      0|    break;
 6627|       |
 6628|      0|  case 18: /* $@3: %empty  */
  ------------------
  |  Branch (6628:3): [True: 0, False: 10.4M]
  ------------------
 6629|      0|#line 1728 "mrbgems/mruby-compiler/core/parse.y"
 6630|      0|                                     {p->lstate = EXPR_FNAME;}
 6631|      0|#line 6632 "mrbgems/mruby-compiler/core/y.tab.c"
 6632|      0|    break;
 6633|       |
 6634|      0|  case 19: /* stmt: "'alis'" fsym $@3 fsym  */
  ------------------
  |  Branch (6634:3): [True: 0, False: 10.4M]
  ------------------
 6635|      0|#line 1729 "mrbgems/mruby-compiler/core/parse.y"
 6636|      0|                    {
 6637|      0|                      (yyval.nd) = new_alias(p, (yyvsp[-2].id), (yyvsp[0].id));
 6638|      0|                    }
 6639|      0|#line 6640 "mrbgems/mruby-compiler/core/y.tab.c"
 6640|      0|    break;
 6641|       |
 6642|      0|  case 20: /* stmt: "'undef'" undef_list  */
  ------------------
  |  Branch (6642:3): [True: 0, False: 10.4M]
  ------------------
 6643|      0|#line 1733 "mrbgems/mruby-compiler/core/parse.y"
 6644|      0|                    {
 6645|      0|                      (yyval.nd) = (yyvsp[0].nd);
 6646|      0|                    }
 6647|      0|#line 6648 "mrbgems/mruby-compiler/core/y.tab.c"
 6648|      0|    break;
 6649|       |
 6650|      0|  case 21: /* stmt: stmt "'if' modifier" expr_value  */
  ------------------
  |  Branch (6650:3): [True: 0, False: 10.4M]
  ------------------
 6651|      0|#line 1737 "mrbgems/mruby-compiler/core/parse.y"
 6652|      0|                    {
 6653|      0|                      (yyval.nd) = new_if(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0);
 6654|      0|                    }
 6655|      0|#line 6656 "mrbgems/mruby-compiler/core/y.tab.c"
 6656|      0|    break;
 6657|       |
 6658|      0|  case 22: /* stmt: stmt "'unless' modifier" expr_value  */
  ------------------
  |  Branch (6658:3): [True: 0, False: 10.4M]
  ------------------
 6659|      0|#line 1741 "mrbgems/mruby-compiler/core/parse.y"
 6660|      0|                    {
 6661|      0|                      (yyval.nd) = new_unless(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0);
 6662|      0|                    }
 6663|      0|#line 6664 "mrbgems/mruby-compiler/core/y.tab.c"
 6664|      0|    break;
 6665|       |
 6666|      0|  case 23: /* stmt: stmt "'while' modifier" expr_value  */
  ------------------
  |  Branch (6666:3): [True: 0, False: 10.4M]
  ------------------
 6667|      0|#line 1745 "mrbgems/mruby-compiler/core/parse.y"
 6668|      0|                    {
 6669|      0|                      (yyval.nd) = new_while(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd));
 6670|      0|                    }
 6671|      0|#line 6672 "mrbgems/mruby-compiler/core/y.tab.c"
 6672|      0|    break;
 6673|       |
 6674|      0|  case 24: /* stmt: stmt "'until' modifier" expr_value  */
  ------------------
  |  Branch (6674:3): [True: 0, False: 10.4M]
  ------------------
 6675|      0|#line 1749 "mrbgems/mruby-compiler/core/parse.y"
 6676|      0|                    {
 6677|      0|                      (yyval.nd) = new_until(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd));
 6678|      0|                    }
 6679|      0|#line 6680 "mrbgems/mruby-compiler/core/y.tab.c"
 6680|      0|    break;
 6681|       |
 6682|      0|  case 25: /* stmt: stmt "'rescue' modifier" stmt  */
  ------------------
  |  Branch (6682:3): [True: 0, False: 10.4M]
  ------------------
 6683|      0|#line 1753 "mrbgems/mruby-compiler/core/parse.y"
 6684|      0|                    {
 6685|      0|                      (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 6686|      0|                    }
 6687|      0|#line 6688 "mrbgems/mruby-compiler/core/y.tab.c"
 6688|      0|    break;
 6689|       |
 6690|      0|  case 26: /* stmt: "'END'" '{' compstmt '}'  */
  ------------------
  |  Branch (6690:3): [True: 0, False: 10.4M]
  ------------------
 6691|      0|#line 1757 "mrbgems/mruby-compiler/core/parse.y"
 6692|      0|                    {
 6693|      0|                      yyerror(p, "END not supported");
 6694|      0|                      (yyval.nd) = new_postexe(p, (yyvsp[-1].nd));
 6695|      0|                    }
 6696|      0|#line 6697 "mrbgems/mruby-compiler/core/y.tab.c"
 6697|      0|    break;
 6698|       |
 6699|      0|  case 28: /* stmt: mlhs '=' command_call  */
  ------------------
  |  Branch (6699:3): [True: 0, False: 10.4M]
  ------------------
 6700|      0|#line 1763 "mrbgems/mruby-compiler/core/parse.y"
 6701|      0|                    {
 6702|      0|                      (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 6703|      0|                    }
 6704|      0|#line 6705 "mrbgems/mruby-compiler/core/y.tab.c"
 6705|      0|    break;
 6706|       |
 6707|      0|  case 29: /* stmt: lhs '=' mrhs  */
  ------------------
  |  Branch (6707:3): [True: 0, False: 10.4M]
  ------------------
 6708|      0|#line 1767 "mrbgems/mruby-compiler/core/parse.y"
 6709|      0|                    {
 6710|      0|                      (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd)));
 6711|      0|                    }
 6712|      0|#line 6713 "mrbgems/mruby-compiler/core/y.tab.c"
 6713|      0|    break;
 6714|       |
 6715|      0|  case 30: /* stmt: mlhs '=' arg  */
  ------------------
  |  Branch (6715:3): [True: 0, False: 10.4M]
  ------------------
 6716|      0|#line 1771 "mrbgems/mruby-compiler/core/parse.y"
 6717|      0|                    {
 6718|      0|                      (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 6719|      0|                    }
 6720|      0|#line 6721 "mrbgems/mruby-compiler/core/y.tab.c"
 6721|      0|    break;
 6722|       |
 6723|      0|  case 31: /* stmt: mlhs '=' mrhs  */
  ------------------
  |  Branch (6723:3): [True: 0, False: 10.4M]
  ------------------
 6724|      0|#line 1775 "mrbgems/mruby-compiler/core/parse.y"
 6725|      0|                    {
 6726|      0|                      (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd)));
 6727|      0|                    }
 6728|      0|#line 6729 "mrbgems/mruby-compiler/core/y.tab.c"
 6729|      0|    break;
 6730|       |
 6731|      0|  case 32: /* stmt: arg "=>" "local variable or method"  */
  ------------------
  |  Branch (6731:3): [True: 0, False: 10.4M]
  ------------------
 6732|      0|#line 1779 "mrbgems/mruby-compiler/core/parse.y"
 6733|      0|                    {
 6734|      0|                      node *lhs = new_lvar(p, (yyvsp[0].id));
 6735|      0|                      assignable(p, lhs);
 6736|      0|                      (yyval.nd) = new_asgn(p, lhs, (yyvsp[-2].nd));
 6737|      0|                    }
 6738|      0|#line 6739 "mrbgems/mruby-compiler/core/y.tab.c"
 6739|      0|    break;
 6740|       |
 6741|      0|  case 34: /* command_asgn: lhs '=' command_rhs  */
  ------------------
  |  Branch (6741:3): [True: 0, False: 10.4M]
  ------------------
 6742|      0|#line 1788 "mrbgems/mruby-compiler/core/parse.y"
 6743|      0|                    {
 6744|      0|                      (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 6745|      0|                    }
 6746|      0|#line 6747 "mrbgems/mruby-compiler/core/y.tab.c"
 6747|      0|    break;
 6748|       |
 6749|      0|  case 35: /* command_asgn: var_lhs tOP_ASGN command_rhs  */
  ------------------
  |  Branch (6749:3): [True: 0, False: 10.4M]
  ------------------
 6750|      0|#line 1792 "mrbgems/mruby-compiler/core/parse.y"
 6751|      0|                    {
 6752|      0|                      (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd));
 6753|      0|                    }
 6754|      0|#line 6755 "mrbgems/mruby-compiler/core/y.tab.c"
 6755|      0|    break;
 6756|       |
 6757|      0|  case 36: /* command_asgn: primary_value '[' opt_call_args ']' tOP_ASGN command_rhs  */
  ------------------
  |  Branch (6757:3): [True: 0, False: 10.4M]
  ------------------
 6758|      0|#line 1796 "mrbgems/mruby-compiler/core/parse.y"
 6759|      0|                    {
 6760|      0|                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), intern_op(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd));
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 6761|      0|                    }
 6762|      0|#line 6763 "mrbgems/mruby-compiler/core/y.tab.c"
 6763|      0|    break;
 6764|       |
 6765|      0|  case 37: /* command_asgn: primary_value call_op "local variable or method" tOP_ASGN command_rhs  */
  ------------------
  |  Branch (6765:3): [True: 0, False: 10.4M]
  ------------------
 6766|      0|#line 1800 "mrbgems/mruby-compiler/core/parse.y"
 6767|      0|                    {
 6768|      0|                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd));
 6769|      0|                    }
 6770|      0|#line 6771 "mrbgems/mruby-compiler/core/y.tab.c"
 6771|      0|    break;
 6772|       |
 6773|      0|  case 38: /* command_asgn: primary_value call_op "constant" tOP_ASGN command_rhs  */
  ------------------
  |  Branch (6773:3): [True: 0, False: 10.4M]
  ------------------
 6774|      0|#line 1804 "mrbgems/mruby-compiler/core/parse.y"
 6775|      0|                    {
 6776|      0|                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd));
 6777|      0|                    }
 6778|      0|#line 6779 "mrbgems/mruby-compiler/core/y.tab.c"
 6779|      0|    break;
 6780|       |
 6781|      0|  case 39: /* command_asgn: primary_value "::" "constant" tOP_ASGN command_call  */
  ------------------
  |  Branch (6781:3): [True: 0, False: 10.4M]
  ------------------
 6782|      0|#line 1808 "mrbgems/mruby-compiler/core/parse.y"
 6783|      0|                    {
 6784|      0|                      yyerror(p, "constant re-assignment");
 6785|      0|                      (yyval.nd) = 0;
 6786|      0|                    }
 6787|      0|#line 6788 "mrbgems/mruby-compiler/core/y.tab.c"
 6788|      0|    break;
 6789|       |
 6790|      0|  case 40: /* command_asgn: primary_value "::" "local variable or method" tOP_ASGN command_rhs  */
  ------------------
  |  Branch (6790:3): [True: 0, False: 10.4M]
  ------------------
 6791|      0|#line 1813 "mrbgems/mruby-compiler/core/parse.y"
 6792|      0|                    {
 6793|      0|                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, tCOLON2), (yyvsp[-1].id), (yyvsp[0].nd));
 6794|      0|                    }
 6795|      0|#line 6796 "mrbgems/mruby-compiler/core/y.tab.c"
 6796|      0|    break;
 6797|       |
 6798|      0|  case 41: /* command_asgn: defn_head f_opt_arglist_paren '=' command  */
  ------------------
  |  Branch (6798:3): [True: 0, False: 10.4M]
  ------------------
 6799|      0|#line 1817 "mrbgems/mruby-compiler/core/parse.y"
 6800|      0|                    {
 6801|      0|                      (yyval.nd) = (yyvsp[-3].nd);
 6802|      0|                      endless_method_name(p, (yyvsp[-3].nd));
 6803|      0|                      void_expr_error(p, (yyvsp[0].nd));
 6804|      0|                      defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd));
 6805|      0|                      nvars_unnest(p);
 6806|      0|                      p->in_def--;
 6807|      0|                    }
 6808|      0|#line 6809 "mrbgems/mruby-compiler/core/y.tab.c"
 6809|      0|    break;
 6810|       |
 6811|      0|  case 42: /* command_asgn: defn_head f_opt_arglist_paren '=' command "'rescue' modifier" arg  */
  ------------------
  |  Branch (6811:3): [True: 0, False: 10.4M]
  ------------------
 6812|      0|#line 1826 "mrbgems/mruby-compiler/core/parse.y"
 6813|      0|                    {
 6814|      0|                      (yyval.nd) = (yyvsp[-5].nd);
 6815|      0|                      endless_method_name(p, (yyvsp[-5].nd));
 6816|      0|                      void_expr_error(p, (yyvsp[-2].nd));
 6817|      0|                      defn_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)));
 6818|      0|                      nvars_unnest(p);
 6819|      0|                      p->in_def--;
 6820|      0|                    }
 6821|      0|#line 6822 "mrbgems/mruby-compiler/core/y.tab.c"
 6822|      0|    break;
 6823|       |
 6824|      0|  case 43: /* command_asgn: defs_head f_opt_arglist_paren '=' command  */
  ------------------
  |  Branch (6824:3): [True: 0, False: 10.4M]
  ------------------
 6825|      0|#line 1835 "mrbgems/mruby-compiler/core/parse.y"
 6826|      0|                    {
 6827|      0|                      (yyval.nd) = (yyvsp[-3].nd);
 6828|      0|                      void_expr_error(p, (yyvsp[0].nd));
 6829|      0|                      defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd));
 6830|      0|                      nvars_unnest(p);
 6831|      0|                      p->in_def--;
 6832|      0|                      p->in_single--;
 6833|      0|                    }
 6834|      0|#line 6835 "mrbgems/mruby-compiler/core/y.tab.c"
 6835|      0|    break;
 6836|       |
 6837|      0|  case 44: /* command_asgn: defs_head f_opt_arglist_paren '=' command "'rescue' modifier" arg  */
  ------------------
  |  Branch (6837:3): [True: 0, False: 10.4M]
  ------------------
 6838|      0|#line 1844 "mrbgems/mruby-compiler/core/parse.y"
 6839|      0|                    {
 6840|      0|                      (yyval.nd) = (yyvsp[-5].nd);
 6841|      0|                      void_expr_error(p, (yyvsp[-2].nd));
 6842|      0|                      defs_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)));
 6843|      0|                      nvars_unnest(p);
 6844|      0|                      p->in_def--;
 6845|      0|                      p->in_single--;
 6846|      0|                    }
 6847|      0|#line 6848 "mrbgems/mruby-compiler/core/y.tab.c"
 6848|      0|    break;
 6849|       |
 6850|      0|  case 45: /* command_asgn: backref tOP_ASGN command_rhs  */
  ------------------
  |  Branch (6850:3): [True: 0, False: 10.4M]
  ------------------
 6851|      0|#line 1853 "mrbgems/mruby-compiler/core/parse.y"
 6852|      0|                    {
 6853|      0|                      backref_error(p, (yyvsp[-2].nd));
 6854|      0|                      (yyval.nd) = new_begin(p, 0);
 6855|      0|                    }
 6856|      0|#line 6857 "mrbgems/mruby-compiler/core/y.tab.c"
 6857|      0|    break;
 6858|       |
 6859|      0|  case 47: /* command_rhs: command_call "'rescue' modifier" stmt  */
  ------------------
  |  Branch (6859:3): [True: 0, False: 10.4M]
  ------------------
 6860|      0|#line 1861 "mrbgems/mruby-compiler/core/parse.y"
 6861|      0|                    {
 6862|      0|                      (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 6863|      0|                    }
 6864|      0|#line 6865 "mrbgems/mruby-compiler/core/y.tab.c"
 6865|      0|    break;
 6866|       |
 6867|  4.33k|  case 50: /* expr: expr "'and'" expr  */
  ------------------
  |  Branch (6867:3): [True: 4.33k, False: 10.4M]
  ------------------
 6868|  4.33k|#line 1870 "mrbgems/mruby-compiler/core/parse.y"
 6869|  4.33k|                    {
 6870|  4.33k|                      (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 6871|  4.33k|                    }
 6872|  4.33k|#line 6873 "mrbgems/mruby-compiler/core/y.tab.c"
 6873|  4.33k|    break;
 6874|       |
 6875|  1.88k|  case 51: /* expr: expr "'or'" expr  */
  ------------------
  |  Branch (6875:3): [True: 1.88k, False: 10.4M]
  ------------------
 6876|  1.88k|#line 1874 "mrbgems/mruby-compiler/core/parse.y"
 6877|  1.88k|                    {
 6878|  1.88k|                      (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 6879|  1.88k|                    }
 6880|  1.88k|#line 6881 "mrbgems/mruby-compiler/core/y.tab.c"
 6881|  1.88k|    break;
 6882|       |
 6883|      0|  case 52: /* expr: "'not'" opt_nl expr  */
  ------------------
  |  Branch (6883:3): [True: 0, False: 10.4M]
  ------------------
 6884|      0|#line 1878 "mrbgems/mruby-compiler/core/parse.y"
 6885|      0|                    {
 6886|      0|                      (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!");
 6887|      0|                    }
 6888|      0|#line 6889 "mrbgems/mruby-compiler/core/y.tab.c"
 6889|      0|    break;
 6890|       |
 6891|      0|  case 53: /* expr: '!' command_call  */
  ------------------
  |  Branch (6891:3): [True: 0, False: 10.4M]
  ------------------
 6892|      0|#line 1882 "mrbgems/mruby-compiler/core/parse.y"
 6893|      0|                    {
 6894|      0|                      (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!");
 6895|      0|                    }
 6896|      0|#line 6897 "mrbgems/mruby-compiler/core/y.tab.c"
 6897|      0|    break;
 6898|       |
 6899|    476|  case 55: /* defn_head: "'def'" fname  */
  ------------------
  |  Branch (6899:3): [True: 476, False: 10.4M]
  ------------------
 6900|    476|#line 1890 "mrbgems/mruby-compiler/core/parse.y"
 6901|    476|                    {
 6902|    476|                      (yyval.nd) = new_def(p, (yyvsp[0].id), nint(p->cmdarg_stack), local_switch(p));
  ------------------
  |  |  134|    476|#define nint(x) ((node*)(intptr_t)(x))
  ------------------
 6903|    476|                      p->cmdarg_stack = 0;
 6904|    476|                      p->in_def++;
 6905|    476|                      nvars_block(p);
 6906|    476|                    }
 6907|    476|#line 6908 "mrbgems/mruby-compiler/core/y.tab.c"
 6908|    476|    break;
 6909|       |
 6910|      0|  case 56: /* $@4: %empty  */
  ------------------
  |  Branch (6910:3): [True: 0, False: 10.4M]
  ------------------
 6911|      0|#line 1899 "mrbgems/mruby-compiler/core/parse.y"
 6912|      0|                    {
 6913|      0|                      p->lstate = EXPR_FNAME;
 6914|      0|                    }
 6915|      0|#line 6916 "mrbgems/mruby-compiler/core/y.tab.c"
 6916|      0|    break;
 6917|       |
 6918|      0|  case 57: /* defs_head: "'def'" singleton dot_or_colon $@4 fname  */
  ------------------
  |  Branch (6918:3): [True: 0, False: 10.4M]
  ------------------
 6919|      0|#line 1903 "mrbgems/mruby-compiler/core/parse.y"
 6920|      0|                    {
 6921|      0|                      (yyval.nd) = new_sdef(p, (yyvsp[-3].nd), (yyvsp[0].id), nint(p->cmdarg_stack), local_switch(p));
  ------------------
  |  |  134|      0|#define nint(x) ((node*)(intptr_t)(x))
  ------------------
 6922|      0|                      p->cmdarg_stack = 0;
 6923|      0|                      p->in_def++;
 6924|      0|                      p->in_single++;
 6925|      0|                      nvars_block(p);
 6926|      0|                      p->lstate = EXPR_ENDFN; /* force for args */
 6927|      0|                    }
 6928|      0|#line 6929 "mrbgems/mruby-compiler/core/y.tab.c"
 6929|      0|    break;
 6930|       |
 6931|  18.7k|  case 58: /* expr_value: expr  */
  ------------------
  |  Branch (6931:3): [True: 18.7k, False: 10.4M]
  ------------------
 6932|  18.7k|#line 1914 "mrbgems/mruby-compiler/core/parse.y"
 6933|  18.7k|                    {
 6934|  18.7k|                      if (!(yyvsp[0].nd)) (yyval.nd) = new_nil(p);
  ------------------
  |  Branch (6934:27): [True: 0, False: 18.7k]
  ------------------
 6935|  18.7k|                      else {
 6936|  18.7k|                        (yyval.nd) = (yyvsp[0].nd);
 6937|  18.7k|                      }
 6938|  18.7k|                    }
 6939|  18.7k|#line 6940 "mrbgems/mruby-compiler/core/y.tab.c"
 6940|  18.7k|    break;
 6941|       |
 6942|      0|  case 62: /* block_command: block_call call_op2 operation2 command_args  */
  ------------------
  |  Branch (6942:3): [True: 0, False: 10.4M]
  ------------------
 6943|      0|#line 1928 "mrbgems/mruby-compiler/core/parse.y"
 6944|      0|                    {
 6945|      0|                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num));
 6946|      0|                    }
 6947|      0|#line 6948 "mrbgems/mruby-compiler/core/y.tab.c"
 6948|      0|    break;
 6949|       |
 6950|      0|  case 63: /* $@5: %empty  */
  ------------------
  |  Branch (6950:3): [True: 0, False: 10.4M]
  ------------------
 6951|      0|#line 1934 "mrbgems/mruby-compiler/core/parse.y"
 6952|      0|                    {
 6953|      0|                      local_nest(p);
 6954|      0|                      nvars_nest(p);
 6955|      0|                    }
 6956|      0|#line 6957 "mrbgems/mruby-compiler/core/y.tab.c"
 6957|      0|    break;
 6958|       |
 6959|      0|  case 64: /* cmd_brace_block: "{" $@5 opt_block_param compstmt '}'  */
  ------------------
  |  Branch (6959:3): [True: 0, False: 10.4M]
  ------------------
 6960|      0|#line 1941 "mrbgems/mruby-compiler/core/parse.y"
 6961|      0|                    {
 6962|      0|                      (yyval.nd) = new_block(p, (yyvsp[-2].nd), (yyvsp[-1].nd));
 6963|      0|                      local_unnest(p);
 6964|      0|                      nvars_unnest(p);
 6965|      0|                    }
 6966|      0|#line 6967 "mrbgems/mruby-compiler/core/y.tab.c"
 6967|      0|    break;
 6968|       |
 6969|      0|  case 65: /* command: operation command_args  */
  ------------------
  |  Branch (6969:3): [True: 0, False: 10.4M]
  ------------------
 6970|      0|#line 1949 "mrbgems/mruby-compiler/core/parse.y"
 6971|      0|                    {
 6972|      0|                      (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd));
 6973|      0|                    }
 6974|      0|#line 6975 "mrbgems/mruby-compiler/core/y.tab.c"
 6975|      0|    break;
 6976|       |
 6977|      0|  case 66: /* command: operation command_args cmd_brace_block  */
  ------------------
  |  Branch (6977:3): [True: 0, False: 10.4M]
  ------------------
 6978|      0|#line 1953 "mrbgems/mruby-compiler/core/parse.y"
 6979|      0|                    {
 6980|      0|                      args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd));
 6981|      0|                      (yyval.nd) = new_fcall(p, (yyvsp[-2].id), (yyvsp[-1].nd));
 6982|      0|                    }
 6983|      0|#line 6984 "mrbgems/mruby-compiler/core/y.tab.c"
 6984|      0|    break;
 6985|       |
 6986|      0|  case 67: /* command: primary_value call_op operation2 command_args  */
  ------------------
  |  Branch (6986:3): [True: 0, False: 10.4M]
  ------------------
 6987|      0|#line 1958 "mrbgems/mruby-compiler/core/parse.y"
 6988|      0|                    {
 6989|      0|                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num));
 6990|      0|                    }
 6991|      0|#line 6992 "mrbgems/mruby-compiler/core/y.tab.c"
 6992|      0|    break;
 6993|       |
 6994|      0|  case 68: /* command: primary_value call_op operation2 command_args cmd_brace_block  */
  ------------------
  |  Branch (6994:3): [True: 0, False: 10.4M]
  ------------------
 6995|      0|#line 1962 "mrbgems/mruby-compiler/core/parse.y"
 6996|      0|                    {
 6997|      0|                      args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd));
 6998|      0|                      (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num));
 6999|      0|                   }
 7000|      0|#line 7001 "mrbgems/mruby-compiler/core/y.tab.c"
 7001|      0|    break;
 7002|       |
 7003|      0|  case 69: /* command: primary_value "::" operation2 command_args  */
  ------------------
  |  Branch (7003:3): [True: 0, False: 10.4M]
  ------------------
 7004|      0|#line 1967 "mrbgems/mruby-compiler/core/parse.y"
 7005|      0|                    {
 7006|      0|                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2);
 7007|      0|                    }
 7008|      0|#line 7009 "mrbgems/mruby-compiler/core/y.tab.c"
 7009|      0|    break;
 7010|       |
 7011|      0|  case 70: /* command: primary_value "::" operation2 command_args cmd_brace_block  */
  ------------------
  |  Branch (7011:3): [True: 0, False: 10.4M]
  ------------------
 7012|      0|#line 1971 "mrbgems/mruby-compiler/core/parse.y"
 7013|      0|                    {
 7014|      0|                      args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd));
 7015|      0|                      (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), tCOLON2);
 7016|      0|                    }
 7017|      0|#line 7018 "mrbgems/mruby-compiler/core/y.tab.c"
 7018|      0|    break;
 7019|       |
 7020|      0|  case 71: /* command: "'super'" command_args  */
  ------------------
  |  Branch (7020:3): [True: 0, False: 10.4M]
  ------------------
 7021|      0|#line 1976 "mrbgems/mruby-compiler/core/parse.y"
 7022|      0|                    {
 7023|      0|                      (yyval.nd) = new_super(p, (yyvsp[0].nd));
 7024|      0|                    }
 7025|      0|#line 7026 "mrbgems/mruby-compiler/core/y.tab.c"
 7026|      0|    break;
 7027|       |
 7028|      0|  case 72: /* command: "'yield'" command_args  */
  ------------------
  |  Branch (7028:3): [True: 0, False: 10.4M]
  ------------------
 7029|      0|#line 1980 "mrbgems/mruby-compiler/core/parse.y"
 7030|      0|                    {
 7031|      0|                      (yyval.nd) = new_yield(p, (yyvsp[0].nd));
 7032|      0|                    }
 7033|      0|#line 7034 "mrbgems/mruby-compiler/core/y.tab.c"
 7034|      0|    break;
 7035|       |
 7036|      0|  case 73: /* command: "'return'" call_args  */
  ------------------
  |  Branch (7036:3): [True: 0, False: 10.4M]
  ------------------
 7037|      0|#line 1984 "mrbgems/mruby-compiler/core/parse.y"
 7038|      0|                    {
 7039|      0|                      (yyval.nd) = new_return(p, ret_args(p, (yyvsp[0].nd)));
 7040|      0|                    }
 7041|      0|#line 7042 "mrbgems/mruby-compiler/core/y.tab.c"
 7042|      0|    break;
 7043|       |
 7044|      0|  case 74: /* command: "'break'" call_args  */
  ------------------
  |  Branch (7044:3): [True: 0, False: 10.4M]
  ------------------
 7045|      0|#line 1988 "mrbgems/mruby-compiler/core/parse.y"
 7046|      0|                    {
 7047|      0|                      (yyval.nd) = new_break(p, ret_args(p, (yyvsp[0].nd)));
 7048|      0|                    }
 7049|      0|#line 7050 "mrbgems/mruby-compiler/core/y.tab.c"
 7050|      0|    break;
 7051|       |
 7052|      0|  case 75: /* command: "'next'" call_args  */
  ------------------
  |  Branch (7052:3): [True: 0, False: 10.4M]
  ------------------
 7053|      0|#line 1992 "mrbgems/mruby-compiler/core/parse.y"
 7054|      0|                    {
 7055|      0|                      (yyval.nd) = new_next(p, ret_args(p, (yyvsp[0].nd)));
 7056|      0|                    }
 7057|      0|#line 7058 "mrbgems/mruby-compiler/core/y.tab.c"
 7058|      0|    break;
 7059|       |
 7060|      0|  case 76: /* mlhs: mlhs_basic  */
  ------------------
  |  Branch (7060:3): [True: 0, False: 10.4M]
  ------------------
 7061|      0|#line 1998 "mrbgems/mruby-compiler/core/parse.y"
 7062|      0|                    {
 7063|      0|                      (yyval.nd) = (yyvsp[0].nd);
 7064|      0|                    }
 7065|      0|#line 7066 "mrbgems/mruby-compiler/core/y.tab.c"
 7066|      0|    break;
 7067|       |
 7068|      0|  case 77: /* mlhs: tLPAREN mlhs_inner rparen  */
  ------------------
  |  Branch (7068:3): [True: 0, False: 10.4M]
  ------------------
 7069|      0|#line 2002 "mrbgems/mruby-compiler/core/parse.y"
 7070|      0|                    {
 7071|      0|                      (yyval.nd) = (yyvsp[-1].nd);
 7072|      0|                    }
 7073|      0|#line 7074 "mrbgems/mruby-compiler/core/y.tab.c"
 7074|      0|    break;
 7075|       |
 7076|      0|  case 79: /* mlhs_inner: tLPAREN mlhs_inner rparen  */
  ------------------
  |  Branch (7076:3): [True: 0, False: 10.4M]
  ------------------
 7077|      0|#line 2009 "mrbgems/mruby-compiler/core/parse.y"
 7078|      0|                    {
 7079|      0|                      (yyval.nd) = (yyvsp[-1].nd);
 7080|      0|                    }
 7081|      0|#line 7082 "mrbgems/mruby-compiler/core/y.tab.c"
 7082|      0|    break;
 7083|       |
 7084|      0|  case 80: /* mlhs_basic: mlhs_list  */
  ------------------
  |  Branch (7084:3): [True: 0, False: 10.4M]
  ------------------
 7085|      0|#line 2015 "mrbgems/mruby-compiler/core/parse.y"
 7086|      0|                    {
 7087|      0|                      (yyval.nd) = list1((yyvsp[0].nd));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 7088|      0|                    }
 7089|      0|#line 7090 "mrbgems/mruby-compiler/core/y.tab.c"
 7090|      0|    break;
 7091|       |
 7092|      0|  case 81: /* mlhs_basic: mlhs_list mlhs_item  */
  ------------------
  |  Branch (7092:3): [True: 0, False: 10.4M]
  ------------------
 7093|      0|#line 2019 "mrbgems/mruby-compiler/core/parse.y"
 7094|      0|                    {
 7095|      0|                      (yyval.nd) = list1(push((yyvsp[-1].nd),(yyvsp[0].nd)));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 7096|      0|                    }
 7097|      0|#line 7098 "mrbgems/mruby-compiler/core/y.tab.c"
 7098|      0|    break;
 7099|       |
 7100|      0|  case 82: /* mlhs_basic: mlhs_list "*" mlhs_node  */
  ------------------
  |  Branch (7100:3): [True: 0, False: 10.4M]
  ------------------
 7101|      0|#line 2023 "mrbgems/mruby-compiler/core/parse.y"
 7102|      0|                    {
 7103|      0|                      (yyval.nd) = list2((yyvsp[-2].nd), (yyvsp[0].nd));
  ------------------
  |  |  224|      0|#define list2(a,b) list2_gen(p, (a),(b))
  ------------------
 7104|      0|                    }
 7105|      0|#line 7106 "mrbgems/mruby-compiler/core/y.tab.c"
 7106|      0|    break;
 7107|       |
 7108|      0|  case 83: /* mlhs_basic: mlhs_list "*" mlhs_node ',' mlhs_post  */
  ------------------
  |  Branch (7108:3): [True: 0, False: 10.4M]
  ------------------
 7109|      0|#line 2027 "mrbgems/mruby-compiler/core/parse.y"
 7110|      0|                    {
 7111|      0|                      (yyval.nd) = list3((yyvsp[-4].nd), (yyvsp[-2].nd), (yyvsp[0].nd));
  ------------------
  |  |  231|      0|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 7112|      0|                    }
 7113|      0|#line 7114 "mrbgems/mruby-compiler/core/y.tab.c"
 7114|      0|    break;
 7115|       |
 7116|      0|  case 84: /* mlhs_basic: mlhs_list "*"  */
  ------------------
  |  Branch (7116:3): [True: 0, False: 10.4M]
  ------------------
 7117|      0|#line 2031 "mrbgems/mruby-compiler/core/parse.y"
 7118|      0|                    {
 7119|      0|                      (yyval.nd) = list2((yyvsp[-1].nd), new_nil(p));
  ------------------
  |  |  224|      0|#define list2(a,b) list2_gen(p, (a),(b))
  ------------------
 7120|      0|                    }
 7121|      0|#line 7122 "mrbgems/mruby-compiler/core/y.tab.c"
 7122|      0|    break;
 7123|       |
 7124|      0|  case 85: /* mlhs_basic: mlhs_list "*" ',' mlhs_post  */
  ------------------
  |  Branch (7124:3): [True: 0, False: 10.4M]
  ------------------
 7125|      0|#line 2035 "mrbgems/mruby-compiler/core/parse.y"
 7126|      0|                    {
 7127|      0|                      (yyval.nd) = list3((yyvsp[-3].nd), new_nil(p), (yyvsp[0].nd));
  ------------------
  |  |  231|      0|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 7128|      0|                    }
 7129|      0|#line 7130 "mrbgems/mruby-compiler/core/y.tab.c"
 7130|      0|    break;
 7131|       |
 7132|      0|  case 86: /* mlhs_basic: "*" mlhs_node  */
  ------------------
  |  Branch (7132:3): [True: 0, False: 10.4M]
  ------------------
 7133|      0|#line 2039 "mrbgems/mruby-compiler/core/parse.y"
 7134|      0|                    {
 7135|      0|                      (yyval.nd) = list2(0, (yyvsp[0].nd));
  ------------------
  |  |  224|      0|#define list2(a,b) list2_gen(p, (a),(b))
  ------------------
 7136|      0|                    }
 7137|      0|#line 7138 "mrbgems/mruby-compiler/core/y.tab.c"
 7138|      0|    break;
 7139|       |
 7140|      0|  case 87: /* mlhs_basic: "*" mlhs_node ',' mlhs_post  */
  ------------------
  |  Branch (7140:3): [True: 0, False: 10.4M]
  ------------------
 7141|      0|#line 2043 "mrbgems/mruby-compiler/core/parse.y"
 7142|      0|                    {
 7143|      0|                      (yyval.nd) = list3(0, (yyvsp[-2].nd), (yyvsp[0].nd));
  ------------------
  |  |  231|      0|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 7144|      0|                    }
 7145|      0|#line 7146 "mrbgems/mruby-compiler/core/y.tab.c"
 7146|      0|    break;
 7147|       |
 7148|      0|  case 88: /* mlhs_basic: "*"  */
  ------------------
  |  Branch (7148:3): [True: 0, False: 10.4M]
  ------------------
 7149|      0|#line 2047 "mrbgems/mruby-compiler/core/parse.y"
 7150|      0|                    {
 7151|      0|                      (yyval.nd) = list2(0, new_nil(p));
  ------------------
  |  |  224|      0|#define list2(a,b) list2_gen(p, (a),(b))
  ------------------
 7152|      0|                    }
 7153|      0|#line 7154 "mrbgems/mruby-compiler/core/y.tab.c"
 7154|      0|    break;
 7155|       |
 7156|      0|  case 89: /* mlhs_basic: "*" ',' mlhs_post  */
  ------------------
  |  Branch (7156:3): [True: 0, False: 10.4M]
  ------------------
 7157|      0|#line 2051 "mrbgems/mruby-compiler/core/parse.y"
 7158|      0|                    {
 7159|      0|                      (yyval.nd) = list3(0, new_nil(p), (yyvsp[0].nd));
  ------------------
  |  |  231|      0|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 7160|      0|                    }
 7161|      0|#line 7162 "mrbgems/mruby-compiler/core/y.tab.c"
 7162|      0|    break;
 7163|       |
 7164|      0|  case 91: /* mlhs_item: tLPAREN mlhs_inner rparen  */
  ------------------
  |  Branch (7164:3): [True: 0, False: 10.4M]
  ------------------
 7165|      0|#line 2058 "mrbgems/mruby-compiler/core/parse.y"
 7166|      0|                    {
 7167|      0|                      (yyval.nd) = new_masgn(p, (yyvsp[-1].nd), NULL);
 7168|      0|                    }
 7169|      0|#line 7170 "mrbgems/mruby-compiler/core/y.tab.c"
 7170|      0|    break;
 7171|       |
 7172|      0|  case 92: /* mlhs_list: mlhs_item ','  */
  ------------------
  |  Branch (7172:3): [True: 0, False: 10.4M]
  ------------------
 7173|      0|#line 2064 "mrbgems/mruby-compiler/core/parse.y"
 7174|      0|                    {
 7175|      0|                      (yyval.nd) = list1((yyvsp[-1].nd));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 7176|      0|                    }
 7177|      0|#line 7178 "mrbgems/mruby-compiler/core/y.tab.c"
 7178|      0|    break;
 7179|       |
 7180|      0|  case 93: /* mlhs_list: mlhs_list mlhs_item ','  */
  ------------------
  |  Branch (7180:3): [True: 0, False: 10.4M]
  ------------------
 7181|      0|#line 2068 "mrbgems/mruby-compiler/core/parse.y"
 7182|      0|                    {
 7183|      0|                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[-1].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 7184|      0|                    }
 7185|      0|#line 7186 "mrbgems/mruby-compiler/core/y.tab.c"
 7186|      0|    break;
 7187|       |
 7188|      0|  case 94: /* mlhs_post: mlhs_item  */
  ------------------
  |  Branch (7188:3): [True: 0, False: 10.4M]
  ------------------
 7189|      0|#line 2074 "mrbgems/mruby-compiler/core/parse.y"
 7190|      0|                    {
 7191|      0|                      (yyval.nd) = list1((yyvsp[0].nd));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 7192|      0|                    }
 7193|      0|#line 7194 "mrbgems/mruby-compiler/core/y.tab.c"
 7194|      0|    break;
 7195|       |
 7196|      0|  case 95: /* mlhs_post: mlhs_list mlhs_item  */
  ------------------
  |  Branch (7196:3): [True: 0, False: 10.4M]
  ------------------
 7197|      0|#line 2078 "mrbgems/mruby-compiler/core/parse.y"
 7198|      0|                    {
 7199|      0|                      (yyval.nd) = push((yyvsp[-1].nd), (yyvsp[0].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 7200|      0|                    }
 7201|      0|#line 7202 "mrbgems/mruby-compiler/core/y.tab.c"
 7202|      0|    break;
 7203|       |
 7204|      0|  case 96: /* mlhs_node: variable  */
  ------------------
  |  Branch (7204:3): [True: 0, False: 10.4M]
  ------------------
 7205|      0|#line 2084 "mrbgems/mruby-compiler/core/parse.y"
 7206|      0|                    {
 7207|      0|                      assignable(p, (yyvsp[0].nd));
 7208|      0|                    }
 7209|      0|#line 7210 "mrbgems/mruby-compiler/core/y.tab.c"
 7210|      0|    break;
 7211|       |
 7212|      0|  case 97: /* mlhs_node: primary_value '[' opt_call_args ']'  */
  ------------------
  |  Branch (7212:3): [True: 0, False: 10.4M]
  ------------------
 7213|      0|#line 2088 "mrbgems/mruby-compiler/core/parse.y"
 7214|      0|                    {
 7215|      0|                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.');
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7216|      0|                    }
 7217|      0|#line 7218 "mrbgems/mruby-compiler/core/y.tab.c"
 7218|      0|    break;
 7219|       |
 7220|      0|  case 98: /* mlhs_node: primary_value call_op "local variable or method"  */
  ------------------
  |  Branch (7220:3): [True: 0, False: 10.4M]
  ------------------
 7221|      0|#line 2092 "mrbgems/mruby-compiler/core/parse.y"
 7222|      0|                    {
 7223|      0|                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num));
 7224|      0|                    }
 7225|      0|#line 7226 "mrbgems/mruby-compiler/core/y.tab.c"
 7226|      0|    break;
 7227|       |
 7228|      0|  case 99: /* mlhs_node: primary_value "::" "local variable or method"  */
  ------------------
  |  Branch (7228:3): [True: 0, False: 10.4M]
  ------------------
 7229|      0|#line 2096 "mrbgems/mruby-compiler/core/parse.y"
 7230|      0|                    {
 7231|      0|                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2);
 7232|      0|                    }
 7233|      0|#line 7234 "mrbgems/mruby-compiler/core/y.tab.c"
 7234|      0|    break;
 7235|       |
 7236|      0|  case 100: /* mlhs_node: primary_value call_op "constant"  */
  ------------------
  |  Branch (7236:3): [True: 0, False: 10.4M]
  ------------------
 7237|      0|#line 2100 "mrbgems/mruby-compiler/core/parse.y"
 7238|      0|                    {
 7239|      0|                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num));
 7240|      0|                    }
 7241|      0|#line 7242 "mrbgems/mruby-compiler/core/y.tab.c"
 7242|      0|    break;
 7243|       |
 7244|      0|  case 101: /* mlhs_node: primary_value "::" "constant"  */
  ------------------
  |  Branch (7244:3): [True: 0, False: 10.4M]
  ------------------
 7245|      0|#line 2104 "mrbgems/mruby-compiler/core/parse.y"
 7246|      0|                    {
 7247|      0|                      if (p->in_def || p->in_single)
  ------------------
  |  Branch (7247:27): [True: 0, False: 0]
  |  Branch (7247:40): [True: 0, False: 0]
  ------------------
 7248|      0|                        yyerror(p, "dynamic constant assignment");
 7249|      0|                      (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id));
 7250|      0|                    }
 7251|      0|#line 7252 "mrbgems/mruby-compiler/core/y.tab.c"
 7252|      0|    break;
 7253|       |
 7254|      0|  case 102: /* mlhs_node: tCOLON3 "constant"  */
  ------------------
  |  Branch (7254:3): [True: 0, False: 10.4M]
  ------------------
 7255|      0|#line 2110 "mrbgems/mruby-compiler/core/parse.y"
 7256|      0|                    {
 7257|      0|                      if (p->in_def || p->in_single)
  ------------------
  |  Branch (7257:27): [True: 0, False: 0]
  |  Branch (7257:40): [True: 0, False: 0]
  ------------------
 7258|      0|                        yyerror(p, "dynamic constant assignment");
 7259|      0|                      (yyval.nd) = new_colon3(p, (yyvsp[0].id));
 7260|      0|                    }
 7261|      0|#line 7262 "mrbgems/mruby-compiler/core/y.tab.c"
 7262|      0|    break;
 7263|       |
 7264|      0|  case 103: /* mlhs_node: backref  */
  ------------------
  |  Branch (7264:3): [True: 0, False: 10.4M]
  ------------------
 7265|      0|#line 2116 "mrbgems/mruby-compiler/core/parse.y"
 7266|      0|                    {
 7267|      0|                      backref_error(p, (yyvsp[0].nd));
 7268|      0|                      (yyval.nd) = 0;
 7269|      0|                    }
 7270|      0|#line 7271 "mrbgems/mruby-compiler/core/y.tab.c"
 7271|      0|    break;
 7272|       |
 7273|   120k|  case 104: /* lhs: variable  */
  ------------------
  |  Branch (7273:3): [True: 120k, False: 10.3M]
  ------------------
 7274|   120k|#line 2123 "mrbgems/mruby-compiler/core/parse.y"
 7275|   120k|                    {
 7276|   120k|                      assignable(p, (yyvsp[0].nd));
 7277|   120k|                    }
 7278|   120k|#line 7279 "mrbgems/mruby-compiler/core/y.tab.c"
 7279|   120k|    break;
 7280|       |
 7281|      0|  case 105: /* lhs: primary_value '[' opt_call_args ']'  */
  ------------------
  |  Branch (7281:3): [True: 0, False: 10.4M]
  ------------------
 7282|      0|#line 2127 "mrbgems/mruby-compiler/core/parse.y"
 7283|      0|                    {
 7284|      0|                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.');
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7285|      0|                    }
 7286|      0|#line 7287 "mrbgems/mruby-compiler/core/y.tab.c"
 7287|      0|    break;
 7288|       |
 7289|      0|  case 106: /* lhs: primary_value call_op "local variable or method"  */
  ------------------
  |  Branch (7289:3): [True: 0, False: 10.4M]
  ------------------
 7290|      0|#line 2131 "mrbgems/mruby-compiler/core/parse.y"
 7291|      0|                    {
 7292|      0|                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num));
 7293|      0|                    }
 7294|      0|#line 7295 "mrbgems/mruby-compiler/core/y.tab.c"
 7295|      0|    break;
 7296|       |
 7297|      0|  case 107: /* lhs: primary_value "::" "local variable or method"  */
  ------------------
  |  Branch (7297:3): [True: 0, False: 10.4M]
  ------------------
 7298|      0|#line 2135 "mrbgems/mruby-compiler/core/parse.y"
 7299|      0|                    {
 7300|      0|                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2);
 7301|      0|                    }
 7302|      0|#line 7303 "mrbgems/mruby-compiler/core/y.tab.c"
 7303|      0|    break;
 7304|       |
 7305|      0|  case 108: /* lhs: primary_value call_op "constant"  */
  ------------------
  |  Branch (7305:3): [True: 0, False: 10.4M]
  ------------------
 7306|      0|#line 2139 "mrbgems/mruby-compiler/core/parse.y"
 7307|      0|                    {
 7308|      0|                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num));
 7309|      0|                    }
 7310|      0|#line 7311 "mrbgems/mruby-compiler/core/y.tab.c"
 7311|      0|    break;
 7312|       |
 7313|      0|  case 109: /* lhs: primary_value "::" "constant"  */
  ------------------
  |  Branch (7313:3): [True: 0, False: 10.4M]
  ------------------
 7314|      0|#line 2143 "mrbgems/mruby-compiler/core/parse.y"
 7315|      0|                    {
 7316|      0|                      if (p->in_def || p->in_single)
  ------------------
  |  Branch (7316:27): [True: 0, False: 0]
  |  Branch (7316:40): [True: 0, False: 0]
  ------------------
 7317|      0|                        yyerror(p, "dynamic constant assignment");
 7318|      0|                      (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id));
 7319|      0|                    }
 7320|      0|#line 7321 "mrbgems/mruby-compiler/core/y.tab.c"
 7321|      0|    break;
 7322|       |
 7323|      0|  case 110: /* lhs: tCOLON3 "constant"  */
  ------------------
  |  Branch (7323:3): [True: 0, False: 10.4M]
  ------------------
 7324|      0|#line 2149 "mrbgems/mruby-compiler/core/parse.y"
 7325|      0|                    {
 7326|      0|                      if (p->in_def || p->in_single)
  ------------------
  |  Branch (7326:27): [True: 0, False: 0]
  |  Branch (7326:40): [True: 0, False: 0]
  ------------------
 7327|      0|                        yyerror(p, "dynamic constant assignment");
 7328|      0|                      (yyval.nd) = new_colon3(p, (yyvsp[0].id));
 7329|      0|                    }
 7330|      0|#line 7331 "mrbgems/mruby-compiler/core/y.tab.c"
 7331|      0|    break;
 7332|       |
 7333|      0|  case 111: /* lhs: backref  */
  ------------------
  |  Branch (7333:3): [True: 0, False: 10.4M]
  ------------------
 7334|      0|#line 2155 "mrbgems/mruby-compiler/core/parse.y"
 7335|      0|                    {
 7336|      0|                      backref_error(p, (yyvsp[0].nd));
 7337|      0|                      (yyval.nd) = 0;
 7338|      0|                    }
 7339|      0|#line 7340 "mrbgems/mruby-compiler/core/y.tab.c"
 7340|      0|    break;
 7341|       |
 7342|      0|  case 112: /* lhs: "numbered parameter"  */
  ------------------
  |  Branch (7342:3): [True: 0, False: 10.4M]
  ------------------
 7343|      0|#line 2160 "mrbgems/mruby-compiler/core/parse.y"
 7344|      0|                    {
 7345|      0|                      yyerror(p, "can't assign to numbered parameter");
 7346|      0|                    }
 7347|      0|#line 7348 "mrbgems/mruby-compiler/core/y.tab.c"
 7348|      0|    break;
 7349|       |
 7350|      0|  case 113: /* cname: "local variable or method"  */
  ------------------
  |  Branch (7350:3): [True: 0, False: 10.4M]
  ------------------
 7351|      0|#line 2166 "mrbgems/mruby-compiler/core/parse.y"
 7352|      0|                    {
 7353|      0|                      yyerror(p, "class/module name must be CONSTANT");
 7354|      0|                    }
 7355|      0|#line 7356 "mrbgems/mruby-compiler/core/y.tab.c"
 7356|      0|    break;
 7357|       |
 7358|      0|  case 115: /* cpath: tCOLON3 cname  */
  ------------------
  |  Branch (7358:3): [True: 0, False: 10.4M]
  ------------------
 7359|      0|#line 2173 "mrbgems/mruby-compiler/core/parse.y"
 7360|      0|                    {
 7361|      0|                      (yyval.nd) = cons(nint(1), nsym((yyvsp[0].id)));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
 7362|      0|                    }
 7363|      0|#line 7364 "mrbgems/mruby-compiler/core/y.tab.c"
 7364|      0|    break;
 7365|       |
 7366|      0|  case 116: /* cpath: cname  */
  ------------------
  |  Branch (7366:3): [True: 0, False: 10.4M]
  ------------------
 7367|      0|#line 2177 "mrbgems/mruby-compiler/core/parse.y"
 7368|      0|                    {
 7369|      0|                      (yyval.nd) = cons(nint(0), nsym((yyvsp[0].id)));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
 7370|      0|                    }
 7371|      0|#line 7372 "mrbgems/mruby-compiler/core/y.tab.c"
 7372|      0|    break;
 7373|       |
 7374|      0|  case 117: /* cpath: primary_value "::" cname  */
  ------------------
  |  Branch (7374:3): [True: 0, False: 10.4M]
  ------------------
 7375|      0|#line 2181 "mrbgems/mruby-compiler/core/parse.y"
 7376|      0|                    {
 7377|      0|                      void_expr_error(p, (yyvsp[-2].nd));
 7378|      0|                      (yyval.nd) = cons((yyvsp[-2].nd), nsym((yyvsp[0].id)));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
 7379|      0|                    }
 7380|      0|#line 7381 "mrbgems/mruby-compiler/core/y.tab.c"
 7381|      0|    break;
 7382|       |
 7383|      0|  case 121: /* fname: op  */
  ------------------
  |  Branch (7383:3): [True: 0, False: 10.4M]
  ------------------
 7384|      0|#line 2191 "mrbgems/mruby-compiler/core/parse.y"
 7385|      0|                    {
 7386|      0|                      p->lstate = EXPR_ENDFN;
 7387|      0|                      (yyval.id) = (yyvsp[0].id);
 7388|      0|                    }
 7389|      0|#line 7390 "mrbgems/mruby-compiler/core/y.tab.c"
 7390|      0|    break;
 7391|       |
 7392|      0|  case 122: /* fname: reswords  */
  ------------------
  |  Branch (7392:3): [True: 0, False: 10.4M]
  ------------------
 7393|      0|#line 2196 "mrbgems/mruby-compiler/core/parse.y"
 7394|      0|                    {
 7395|      0|                      p->lstate = EXPR_ENDFN;
 7396|      0|                      (yyval.id) = (yyvsp[0].id);
 7397|      0|                    }
 7398|      0|#line 7399 "mrbgems/mruby-compiler/core/y.tab.c"
 7399|      0|    break;
 7400|       |
 7401|      0|  case 125: /* undef_list: fsym  */
  ------------------
  |  Branch (7401:3): [True: 0, False: 10.4M]
  ------------------
 7402|      0|#line 2207 "mrbgems/mruby-compiler/core/parse.y"
 7403|      0|                    {
 7404|      0|                      (yyval.nd) = new_undef(p, (yyvsp[0].id));
 7405|      0|                    }
 7406|      0|#line 7407 "mrbgems/mruby-compiler/core/y.tab.c"
 7407|      0|    break;
 7408|       |
 7409|      0|  case 126: /* $@6: %empty  */
  ------------------
  |  Branch (7409:3): [True: 0, False: 10.4M]
  ------------------
 7410|      0|#line 2210 "mrbgems/mruby-compiler/core/parse.y"
 7411|      0|                                 {p->lstate = EXPR_FNAME;}
 7412|      0|#line 7413 "mrbgems/mruby-compiler/core/y.tab.c"
 7413|      0|    break;
 7414|       |
 7415|      0|  case 127: /* undef_list: undef_list ',' $@6 fsym  */
  ------------------
  |  Branch (7415:3): [True: 0, False: 10.4M]
  ------------------
 7416|      0|#line 2211 "mrbgems/mruby-compiler/core/parse.y"
 7417|      0|                    {
 7418|      0|                      (yyval.nd) = push((yyvsp[-3].nd), nsym((yyvsp[0].id)));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 7419|      0|                    }
 7420|      0|#line 7421 "mrbgems/mruby-compiler/core/y.tab.c"
 7421|      0|    break;
 7422|       |
 7423|      0|  case 128: /* op: '|'  */
  ------------------
  |  Branch (7423:3): [True: 0, False: 10.4M]
  ------------------
 7424|      0|#line 2216 "mrbgems/mruby-compiler/core/parse.y"
 7425|      0|                                { (yyval.id) = intern_op(or);     }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7426|      0|#line 7427 "mrbgems/mruby-compiler/core/y.tab.c"
 7427|      0|    break;
 7428|       |
 7429|      0|  case 129: /* op: '^'  */
  ------------------
  |  Branch (7429:3): [True: 0, False: 10.4M]
  ------------------
 7430|      0|#line 2217 "mrbgems/mruby-compiler/core/parse.y"
 7431|      0|                                { (yyval.id) = intern_op(xor);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7432|      0|#line 7433 "mrbgems/mruby-compiler/core/y.tab.c"
 7433|      0|    break;
 7434|       |
 7435|      0|  case 130: /* op: '&'  */
  ------------------
  |  Branch (7435:3): [True: 0, False: 10.4M]
  ------------------
 7436|      0|#line 2218 "mrbgems/mruby-compiler/core/parse.y"
 7437|      0|                                { (yyval.id) = intern_op(and);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7438|      0|#line 7439 "mrbgems/mruby-compiler/core/y.tab.c"
 7439|      0|    break;
 7440|       |
 7441|      0|  case 131: /* op: "<=>"  */
  ------------------
  |  Branch (7441:3): [True: 0, False: 10.4M]
  ------------------
 7442|      0|#line 2219 "mrbgems/mruby-compiler/core/parse.y"
 7443|      0|                                { (yyval.id) = intern_op(cmp);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7444|      0|#line 7445 "mrbgems/mruby-compiler/core/y.tab.c"
 7445|      0|    break;
 7446|       |
 7447|      0|  case 132: /* op: "=="  */
  ------------------
  |  Branch (7447:3): [True: 0, False: 10.4M]
  ------------------
 7448|      0|#line 2220 "mrbgems/mruby-compiler/core/parse.y"
 7449|      0|                                { (yyval.id) = intern_op(eq);     }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7450|      0|#line 7451 "mrbgems/mruby-compiler/core/y.tab.c"
 7451|      0|    break;
 7452|       |
 7453|      0|  case 133: /* op: "==="  */
  ------------------
  |  Branch (7453:3): [True: 0, False: 10.4M]
  ------------------
 7454|      0|#line 2221 "mrbgems/mruby-compiler/core/parse.y"
 7455|      0|                                { (yyval.id) = intern_op(eqq);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7456|      0|#line 7457 "mrbgems/mruby-compiler/core/y.tab.c"
 7457|      0|    break;
 7458|       |
 7459|      0|  case 134: /* op: "=~"  */
  ------------------
  |  Branch (7459:3): [True: 0, False: 10.4M]
  ------------------
 7460|      0|#line 2222 "mrbgems/mruby-compiler/core/parse.y"
 7461|      0|                                { (yyval.id) = intern_op(match);  }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7462|      0|#line 7463 "mrbgems/mruby-compiler/core/y.tab.c"
 7463|      0|    break;
 7464|       |
 7465|      0|  case 135: /* op: "!~"  */
  ------------------
  |  Branch (7465:3): [True: 0, False: 10.4M]
  ------------------
 7466|      0|#line 2223 "mrbgems/mruby-compiler/core/parse.y"
 7467|      0|                                { (yyval.id) = intern_op(nmatch); }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7468|      0|#line 7469 "mrbgems/mruby-compiler/core/y.tab.c"
 7469|      0|    break;
 7470|       |
 7471|      0|  case 136: /* op: '>'  */
  ------------------
  |  Branch (7471:3): [True: 0, False: 10.4M]
  ------------------
 7472|      0|#line 2224 "mrbgems/mruby-compiler/core/parse.y"
 7473|      0|                                { (yyval.id) = intern_op(gt);     }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7474|      0|#line 7475 "mrbgems/mruby-compiler/core/y.tab.c"
 7475|      0|    break;
 7476|       |
 7477|      0|  case 137: /* op: ">="  */
  ------------------
  |  Branch (7477:3): [True: 0, False: 10.4M]
  ------------------
 7478|      0|#line 2225 "mrbgems/mruby-compiler/core/parse.y"
 7479|      0|                                { (yyval.id) = intern_op(ge);     }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7480|      0|#line 7481 "mrbgems/mruby-compiler/core/y.tab.c"
 7481|      0|    break;
 7482|       |
 7483|      0|  case 138: /* op: '<'  */
  ------------------
  |  Branch (7483:3): [True: 0, False: 10.4M]
  ------------------
 7484|      0|#line 2226 "mrbgems/mruby-compiler/core/parse.y"
 7485|      0|                                { (yyval.id) = intern_op(lt);     }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7486|      0|#line 7487 "mrbgems/mruby-compiler/core/y.tab.c"
 7487|      0|    break;
 7488|       |
 7489|      0|  case 139: /* op: "<="  */
  ------------------
  |  Branch (7489:3): [True: 0, False: 10.4M]
  ------------------
 7490|      0|#line 2227 "mrbgems/mruby-compiler/core/parse.y"
 7491|      0|                                { (yyval.id) = intern_op(le);     }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7492|      0|#line 7493 "mrbgems/mruby-compiler/core/y.tab.c"
 7493|      0|    break;
 7494|       |
 7495|      0|  case 140: /* op: "!="  */
  ------------------
  |  Branch (7495:3): [True: 0, False: 10.4M]
  ------------------
 7496|      0|#line 2228 "mrbgems/mruby-compiler/core/parse.y"
 7497|      0|                                { (yyval.id) = intern_op(neq);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7498|      0|#line 7499 "mrbgems/mruby-compiler/core/y.tab.c"
 7499|      0|    break;
 7500|       |
 7501|      0|  case 141: /* op: "<<"  */
  ------------------
  |  Branch (7501:3): [True: 0, False: 10.4M]
  ------------------
 7502|      0|#line 2229 "mrbgems/mruby-compiler/core/parse.y"
 7503|      0|                                { (yyval.id) = intern_op(lshift); }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7504|      0|#line 7505 "mrbgems/mruby-compiler/core/y.tab.c"
 7505|      0|    break;
 7506|       |
 7507|      0|  case 142: /* op: ">>"  */
  ------------------
  |  Branch (7507:3): [True: 0, False: 10.4M]
  ------------------
 7508|      0|#line 2230 "mrbgems/mruby-compiler/core/parse.y"
 7509|      0|                                { (yyval.id) = intern_op(rshift); }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7510|      0|#line 7511 "mrbgems/mruby-compiler/core/y.tab.c"
 7511|      0|    break;
 7512|       |
 7513|      0|  case 143: /* op: '+'  */
  ------------------
  |  Branch (7513:3): [True: 0, False: 10.4M]
  ------------------
 7514|      0|#line 2231 "mrbgems/mruby-compiler/core/parse.y"
 7515|      0|                                { (yyval.id) = intern_op(add);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7516|      0|#line 7517 "mrbgems/mruby-compiler/core/y.tab.c"
 7517|      0|    break;
 7518|       |
 7519|      0|  case 144: /* op: '-'  */
  ------------------
  |  Branch (7519:3): [True: 0, False: 10.4M]
  ------------------
 7520|      0|#line 2232 "mrbgems/mruby-compiler/core/parse.y"
 7521|      0|                                { (yyval.id) = intern_op(sub);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7522|      0|#line 7523 "mrbgems/mruby-compiler/core/y.tab.c"
 7523|      0|    break;
 7524|       |
 7525|      0|  case 145: /* op: '*'  */
  ------------------
  |  Branch (7525:3): [True: 0, False: 10.4M]
  ------------------
 7526|      0|#line 2233 "mrbgems/mruby-compiler/core/parse.y"
 7527|      0|                                { (yyval.id) = intern_op(mul);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7528|      0|#line 7529 "mrbgems/mruby-compiler/core/y.tab.c"
 7529|      0|    break;
 7530|       |
 7531|      0|  case 146: /* op: "*"  */
  ------------------
  |  Branch (7531:3): [True: 0, False: 10.4M]
  ------------------
 7532|      0|#line 2234 "mrbgems/mruby-compiler/core/parse.y"
 7533|      0|                                { (yyval.id) = intern_op(mul);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7534|      0|#line 7535 "mrbgems/mruby-compiler/core/y.tab.c"
 7535|      0|    break;
 7536|       |
 7537|      0|  case 147: /* op: '/'  */
  ------------------
  |  Branch (7537:3): [True: 0, False: 10.4M]
  ------------------
 7538|      0|#line 2235 "mrbgems/mruby-compiler/core/parse.y"
 7539|      0|                                { (yyval.id) = intern_op(div);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7540|      0|#line 7541 "mrbgems/mruby-compiler/core/y.tab.c"
 7541|      0|    break;
 7542|       |
 7543|      0|  case 148: /* op: '%'  */
  ------------------
  |  Branch (7543:3): [True: 0, False: 10.4M]
  ------------------
 7544|      0|#line 2236 "mrbgems/mruby-compiler/core/parse.y"
 7545|      0|                                { (yyval.id) = intern_op(mod);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7546|      0|#line 7547 "mrbgems/mruby-compiler/core/y.tab.c"
 7547|      0|    break;
 7548|       |
 7549|      0|  case 149: /* op: tPOW  */
  ------------------
  |  Branch (7549:3): [True: 0, False: 10.4M]
  ------------------
 7550|      0|#line 2237 "mrbgems/mruby-compiler/core/parse.y"
 7551|      0|                                { (yyval.id) = intern_op(pow);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7552|      0|#line 7553 "mrbgems/mruby-compiler/core/y.tab.c"
 7553|      0|    break;
 7554|       |
 7555|      0|  case 150: /* op: "**"  */
  ------------------
  |  Branch (7555:3): [True: 0, False: 10.4M]
  ------------------
 7556|      0|#line 2238 "mrbgems/mruby-compiler/core/parse.y"
 7557|      0|                                { (yyval.id) = intern_op(pow);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7558|      0|#line 7559 "mrbgems/mruby-compiler/core/y.tab.c"
 7559|      0|    break;
 7560|       |
 7561|      0|  case 151: /* op: '!'  */
  ------------------
  |  Branch (7561:3): [True: 0, False: 10.4M]
  ------------------
 7562|      0|#line 2239 "mrbgems/mruby-compiler/core/parse.y"
 7563|      0|                                { (yyval.id) = intern_op(not);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7564|      0|#line 7565 "mrbgems/mruby-compiler/core/y.tab.c"
 7565|      0|    break;
 7566|       |
 7567|      0|  case 152: /* op: '~'  */
  ------------------
  |  Branch (7567:3): [True: 0, False: 10.4M]
  ------------------
 7568|      0|#line 2240 "mrbgems/mruby-compiler/core/parse.y"
 7569|      0|                                { (yyval.id) = intern_op(neg);    }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7570|      0|#line 7571 "mrbgems/mruby-compiler/core/y.tab.c"
 7571|      0|    break;
 7572|       |
 7573|      0|  case 153: /* op: "unary plus"  */
  ------------------
  |  Branch (7573:3): [True: 0, False: 10.4M]
  ------------------
 7574|      0|#line 2241 "mrbgems/mruby-compiler/core/parse.y"
 7575|      0|                                { (yyval.id) = intern_op(plus);   }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7576|      0|#line 7577 "mrbgems/mruby-compiler/core/y.tab.c"
 7577|      0|    break;
 7578|       |
 7579|      0|  case 154: /* op: "unary minus"  */
  ------------------
  |  Branch (7579:3): [True: 0, False: 10.4M]
  ------------------
 7580|      0|#line 2242 "mrbgems/mruby-compiler/core/parse.y"
 7581|      0|                                { (yyval.id) = intern_op(minus);  }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7582|      0|#line 7583 "mrbgems/mruby-compiler/core/y.tab.c"
 7583|      0|    break;
 7584|       |
 7585|      0|  case 155: /* op: tAREF  */
  ------------------
  |  Branch (7585:3): [True: 0, False: 10.4M]
  ------------------
 7586|      0|#line 2243 "mrbgems/mruby-compiler/core/parse.y"
 7587|      0|                                { (yyval.id) = intern_op(aref);   }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7588|      0|#line 7589 "mrbgems/mruby-compiler/core/y.tab.c"
 7589|      0|    break;
 7590|       |
 7591|      0|  case 156: /* op: tASET  */
  ------------------
  |  Branch (7591:3): [True: 0, False: 10.4M]
  ------------------
 7592|      0|#line 2244 "mrbgems/mruby-compiler/core/parse.y"
 7593|      0|                                { (yyval.id) = intern_op(aset);   }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7594|      0|#line 7595 "mrbgems/mruby-compiler/core/y.tab.c"
 7595|      0|    break;
 7596|       |
 7597|      0|  case 157: /* op: '`'  */
  ------------------
  |  Branch (7597:3): [True: 0, False: 10.4M]
  ------------------
 7598|      0|#line 2245 "mrbgems/mruby-compiler/core/parse.y"
 7599|      0|                                { (yyval.id) = intern_op(tick);   }
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7600|      0|#line 7601 "mrbgems/mruby-compiler/core/y.tab.c"
 7601|      0|    break;
 7602|       |
 7603|   120k|  case 198: /* arg: lhs '=' arg_rhs  */
  ------------------
  |  Branch (7603:3): [True: 120k, False: 10.3M]
  ------------------
 7604|   120k|#line 2263 "mrbgems/mruby-compiler/core/parse.y"
 7605|   120k|                    {
 7606|   120k|                      (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 7607|   120k|                    }
 7608|   120k|#line 7609 "mrbgems/mruby-compiler/core/y.tab.c"
 7609|   120k|    break;
 7610|       |
 7611|  20.9k|  case 199: /* arg: var_lhs tOP_ASGN arg_rhs  */
  ------------------
  |  Branch (7611:3): [True: 20.9k, False: 10.4M]
  ------------------
 7612|  20.9k|#line 2267 "mrbgems/mruby-compiler/core/parse.y"
 7613|  20.9k|                    {
 7614|  20.9k|                      (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd));
 7615|  20.9k|                    }
 7616|  20.9k|#line 7617 "mrbgems/mruby-compiler/core/y.tab.c"
 7617|  20.9k|    break;
 7618|       |
 7619|      0|  case 200: /* arg: primary_value '[' opt_call_args ']' tOP_ASGN arg_rhs  */
  ------------------
  |  Branch (7619:3): [True: 0, False: 10.4M]
  ------------------
 7620|      0|#line 2271 "mrbgems/mruby-compiler/core/parse.y"
 7621|      0|                    {
 7622|      0|                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), intern_op(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd));
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 7623|      0|                    }
 7624|      0|#line 7625 "mrbgems/mruby-compiler/core/y.tab.c"
 7625|      0|    break;
 7626|       |
 7627|      0|  case 201: /* arg: primary_value call_op "local variable or method" tOP_ASGN arg_rhs  */
  ------------------
  |  Branch (7627:3): [True: 0, False: 10.4M]
  ------------------
 7628|      0|#line 2275 "mrbgems/mruby-compiler/core/parse.y"
 7629|      0|                    {
 7630|      0|                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd));
 7631|      0|                    }
 7632|      0|#line 7633 "mrbgems/mruby-compiler/core/y.tab.c"
 7633|      0|    break;
 7634|       |
 7635|      0|  case 202: /* arg: primary_value call_op "constant" tOP_ASGN arg_rhs  */
  ------------------
  |  Branch (7635:3): [True: 0, False: 10.4M]
  ------------------
 7636|      0|#line 2279 "mrbgems/mruby-compiler/core/parse.y"
 7637|      0|                    {
 7638|      0|                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd));
 7639|      0|                    }
 7640|      0|#line 7641 "mrbgems/mruby-compiler/core/y.tab.c"
 7641|      0|    break;
 7642|       |
 7643|      0|  case 203: /* arg: primary_value "::" "local variable or method" tOP_ASGN arg_rhs  */
  ------------------
  |  Branch (7643:3): [True: 0, False: 10.4M]
  ------------------
 7644|      0|#line 2283 "mrbgems/mruby-compiler/core/parse.y"
 7645|      0|                    {
 7646|      0|                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, tCOLON2), (yyvsp[-1].id), (yyvsp[0].nd));
 7647|      0|                    }
 7648|      0|#line 7649 "mrbgems/mruby-compiler/core/y.tab.c"
 7649|      0|    break;
 7650|       |
 7651|      0|  case 204: /* arg: primary_value "::" "constant" tOP_ASGN arg_rhs  */
  ------------------
  |  Branch (7651:3): [True: 0, False: 10.4M]
  ------------------
 7652|      0|#line 2287 "mrbgems/mruby-compiler/core/parse.y"
 7653|      0|                    {
 7654|      0|                      yyerror(p, "constant re-assignment");
 7655|      0|                      (yyval.nd) = new_begin(p, 0);
 7656|      0|                    }
 7657|      0|#line 7658 "mrbgems/mruby-compiler/core/y.tab.c"
 7658|      0|    break;
 7659|       |
 7660|      0|  case 205: /* arg: tCOLON3 "constant" tOP_ASGN arg_rhs  */
  ------------------
  |  Branch (7660:3): [True: 0, False: 10.4M]
  ------------------
 7661|      0|#line 2292 "mrbgems/mruby-compiler/core/parse.y"
 7662|      0|                    {
 7663|      0|                      yyerror(p, "constant re-assignment");
 7664|      0|                      (yyval.nd) = new_begin(p, 0);
 7665|      0|                    }
 7666|      0|#line 7667 "mrbgems/mruby-compiler/core/y.tab.c"
 7667|      0|    break;
 7668|       |
 7669|      0|  case 206: /* arg: backref tOP_ASGN arg_rhs  */
  ------------------
  |  Branch (7669:3): [True: 0, False: 10.4M]
  ------------------
 7670|      0|#line 2297 "mrbgems/mruby-compiler/core/parse.y"
 7671|      0|                    {
 7672|      0|                      backref_error(p, (yyvsp[-2].nd));
 7673|      0|                      (yyval.nd) = new_begin(p, 0);
 7674|      0|                    }
 7675|      0|#line 7676 "mrbgems/mruby-compiler/core/y.tab.c"
 7676|      0|    break;
 7677|       |
 7678|      0|  case 207: /* arg: arg ".." arg  */
  ------------------
  |  Branch (7678:3): [True: 0, False: 10.4M]
  ------------------
 7679|      0|#line 2302 "mrbgems/mruby-compiler/core/parse.y"
 7680|      0|                    {
 7681|      0|                      (yyval.nd) = new_dot2(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 7682|      0|                    }
 7683|      0|#line 7684 "mrbgems/mruby-compiler/core/y.tab.c"
 7684|      0|    break;
 7685|       |
 7686|      0|  case 208: /* arg: arg ".."  */
  ------------------
  |  Branch (7686:3): [True: 0, False: 10.4M]
  ------------------
 7687|      0|#line 2306 "mrbgems/mruby-compiler/core/parse.y"
 7688|      0|                    {
 7689|      0|                      (yyval.nd) = new_dot2(p, (yyvsp[-1].nd), new_nil(p));
 7690|      0|                    }
 7691|      0|#line 7692 "mrbgems/mruby-compiler/core/y.tab.c"
 7692|      0|    break;
 7693|       |
 7694|      0|  case 209: /* arg: tBDOT2 arg  */
  ------------------
  |  Branch (7694:3): [True: 0, False: 10.4M]
  ------------------
 7695|      0|#line 2310 "mrbgems/mruby-compiler/core/parse.y"
 7696|      0|                    {
 7697|      0|                      (yyval.nd) = new_dot2(p, new_nil(p), (yyvsp[0].nd));
 7698|      0|                    }
 7699|      0|#line 7700 "mrbgems/mruby-compiler/core/y.tab.c"
 7700|      0|    break;
 7701|       |
 7702|      0|  case 210: /* arg: arg "..." arg  */
  ------------------
  |  Branch (7702:3): [True: 0, False: 10.4M]
  ------------------
 7703|      0|#line 2314 "mrbgems/mruby-compiler/core/parse.y"
 7704|      0|                    {
 7705|      0|                      (yyval.nd) = new_dot3(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 7706|      0|                    }
 7707|      0|#line 7708 "mrbgems/mruby-compiler/core/y.tab.c"
 7708|      0|    break;
 7709|       |
 7710|      0|  case 211: /* arg: arg "..."  */
  ------------------
  |  Branch (7710:3): [True: 0, False: 10.4M]
  ------------------
 7711|      0|#line 2318 "mrbgems/mruby-compiler/core/parse.y"
 7712|      0|                    {
 7713|      0|                      (yyval.nd) = new_dot3(p, (yyvsp[-1].nd), new_nil(p));
 7714|      0|                    }
 7715|      0|#line 7716 "mrbgems/mruby-compiler/core/y.tab.c"
 7716|      0|    break;
 7717|       |
 7718|      0|  case 212: /* arg: tBDOT3 arg  */
  ------------------
  |  Branch (7718:3): [True: 0, False: 10.4M]
  ------------------
 7719|      0|#line 2322 "mrbgems/mruby-compiler/core/parse.y"
 7720|      0|                    {
 7721|      0|                      (yyval.nd) = new_dot3(p, new_nil(p), (yyvsp[0].nd));
 7722|      0|                    }
 7723|      0|#line 7724 "mrbgems/mruby-compiler/core/y.tab.c"
 7724|      0|    break;
 7725|       |
 7726|  12.2k|  case 213: /* arg: arg '+' arg  */
  ------------------
  |  Branch (7726:3): [True: 12.2k, False: 10.4M]
  ------------------
 7727|  12.2k|#line 2326 "mrbgems/mruby-compiler/core/parse.y"
 7728|  12.2k|                    {
 7729|  12.2k|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "+", (yyvsp[0].nd));
 7730|  12.2k|                    }
 7731|  12.2k|#line 7732 "mrbgems/mruby-compiler/core/y.tab.c"
 7732|  12.2k|    break;
 7733|       |
 7734|  20.9k|  case 214: /* arg: arg '-' arg  */
  ------------------
  |  Branch (7734:3): [True: 20.9k, False: 10.4M]
  ------------------
 7735|  20.9k|#line 2330 "mrbgems/mruby-compiler/core/parse.y"
 7736|  20.9k|                    {
 7737|  20.9k|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "-", (yyvsp[0].nd));
 7738|  20.9k|                    }
 7739|  20.9k|#line 7740 "mrbgems/mruby-compiler/core/y.tab.c"
 7740|  20.9k|    break;
 7741|       |
 7742|  8.28k|  case 215: /* arg: arg '*' arg  */
  ------------------
  |  Branch (7742:3): [True: 8.28k, False: 10.4M]
  ------------------
 7743|  8.28k|#line 2334 "mrbgems/mruby-compiler/core/parse.y"
 7744|  8.28k|                    {
 7745|  8.28k|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "*", (yyvsp[0].nd));
 7746|  8.28k|                    }
 7747|  8.28k|#line 7748 "mrbgems/mruby-compiler/core/y.tab.c"
 7748|  8.28k|    break;
 7749|       |
 7750|  12.4k|  case 216: /* arg: arg '/' arg  */
  ------------------
  |  Branch (7750:3): [True: 12.4k, False: 10.4M]
  ------------------
 7751|  12.4k|#line 2338 "mrbgems/mruby-compiler/core/parse.y"
 7752|  12.4k|                    {
 7753|  12.4k|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "/", (yyvsp[0].nd));
 7754|  12.4k|                    }
 7755|  12.4k|#line 7756 "mrbgems/mruby-compiler/core/y.tab.c"
 7756|  12.4k|    break;
 7757|       |
 7758|  5.71k|  case 217: /* arg: arg '%' arg  */
  ------------------
  |  Branch (7758:3): [True: 5.71k, False: 10.4M]
  ------------------
 7759|  5.71k|#line 2342 "mrbgems/mruby-compiler/core/parse.y"
 7760|  5.71k|                    {
 7761|  5.71k|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "%", (yyvsp[0].nd));
 7762|  5.71k|                    }
 7763|  5.71k|#line 7764 "mrbgems/mruby-compiler/core/y.tab.c"
 7764|  5.71k|    break;
 7765|       |
 7766|      0|  case 218: /* arg: arg tPOW arg  */
  ------------------
  |  Branch (7766:3): [True: 0, False: 10.4M]
  ------------------
 7767|      0|#line 2346 "mrbgems/mruby-compiler/core/parse.y"
 7768|      0|                    {
 7769|      0|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd));
 7770|      0|                    }
 7771|      0|#line 7772 "mrbgems/mruby-compiler/core/y.tab.c"
 7772|      0|    break;
 7773|       |
 7774|      0|  case 219: /* arg: tUMINUS_NUM "integer literal" tPOW arg  */
  ------------------
  |  Branch (7774:3): [True: 0, False: 10.4M]
  ------------------
 7775|      0|#line 2350 "mrbgems/mruby-compiler/core/parse.y"
 7776|      0|                    {
 7777|      0|                      (yyval.nd) = new_negate(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)));
 7778|      0|                    }
 7779|      0|#line 7780 "mrbgems/mruby-compiler/core/y.tab.c"
 7780|      0|    break;
 7781|       |
 7782|      0|  case 220: /* arg: tUMINUS_NUM "float literal" tPOW arg  */
  ------------------
  |  Branch (7782:3): [True: 0, False: 10.4M]
  ------------------
 7783|      0|#line 2354 "mrbgems/mruby-compiler/core/parse.y"
 7784|      0|                    {
 7785|      0|                      (yyval.nd) = new_negate(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)));
 7786|      0|                    }
 7787|      0|#line 7788 "mrbgems/mruby-compiler/core/y.tab.c"
 7788|      0|    break;
 7789|       |
 7790|      0|  case 221: /* arg: "unary plus" arg  */
  ------------------
  |  Branch (7790:3): [True: 0, False: 10.4M]
  ------------------
 7791|      0|#line 2358 "mrbgems/mruby-compiler/core/parse.y"
 7792|      0|                    {
 7793|      0|                      (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "+@");
 7794|      0|                    }
 7795|      0|#line 7796 "mrbgems/mruby-compiler/core/y.tab.c"
 7796|      0|    break;
 7797|       |
 7798|      0|  case 222: /* arg: "unary minus" arg  */
  ------------------
  |  Branch (7798:3): [True: 0, False: 10.4M]
  ------------------
 7799|      0|#line 2362 "mrbgems/mruby-compiler/core/parse.y"
 7800|      0|                    {
 7801|      0|                      (yyval.nd) = new_negate(p, (yyvsp[0].nd));
 7802|      0|                    }
 7803|      0|#line 7804 "mrbgems/mruby-compiler/core/y.tab.c"
 7804|      0|    break;
 7805|       |
 7806|      0|  case 223: /* arg: arg '|' arg  */
  ------------------
  |  Branch (7806:3): [True: 0, False: 10.4M]
  ------------------
 7807|      0|#line 2366 "mrbgems/mruby-compiler/core/parse.y"
 7808|      0|                    {
 7809|      0|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "|", (yyvsp[0].nd));
 7810|      0|                    }
 7811|      0|#line 7812 "mrbgems/mruby-compiler/core/y.tab.c"
 7812|      0|    break;
 7813|       |
 7814|  5.74k|  case 224: /* arg: arg '^' arg  */
  ------------------
  |  Branch (7814:3): [True: 5.74k, False: 10.4M]
  ------------------
 7815|  5.74k|#line 2370 "mrbgems/mruby-compiler/core/parse.y"
 7816|  5.74k|                    {
 7817|  5.74k|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "^", (yyvsp[0].nd));
 7818|  5.74k|                    }
 7819|  5.74k|#line 7820 "mrbgems/mruby-compiler/core/y.tab.c"
 7820|  5.74k|    break;
 7821|       |
 7822|      0|  case 225: /* arg: arg '&' arg  */
  ------------------
  |  Branch (7822:3): [True: 0, False: 10.4M]
  ------------------
 7823|      0|#line 2374 "mrbgems/mruby-compiler/core/parse.y"
 7824|      0|                    {
 7825|      0|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "&", (yyvsp[0].nd));
 7826|      0|                    }
 7827|      0|#line 7828 "mrbgems/mruby-compiler/core/y.tab.c"
 7828|      0|    break;
 7829|       |
 7830|      0|  case 226: /* arg: arg "<=>" arg  */
  ------------------
  |  Branch (7830:3): [True: 0, False: 10.4M]
  ------------------
 7831|      0|#line 2378 "mrbgems/mruby-compiler/core/parse.y"
 7832|      0|                    {
 7833|      0|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=>", (yyvsp[0].nd));
 7834|      0|                    }
 7835|      0|#line 7836 "mrbgems/mruby-compiler/core/y.tab.c"
 7836|      0|    break;
 7837|       |
 7838|  2.28k|  case 227: /* arg: arg '>' arg  */
  ------------------
  |  Branch (7838:3): [True: 2.28k, False: 10.4M]
  ------------------
 7839|  2.28k|#line 2382 "mrbgems/mruby-compiler/core/parse.y"
 7840|  2.28k|                    {
 7841|  2.28k|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">", (yyvsp[0].nd));
 7842|  2.28k|                    }
 7843|  2.28k|#line 7844 "mrbgems/mruby-compiler/core/y.tab.c"
 7844|  2.28k|    break;
 7845|       |
 7846|  1.64k|  case 228: /* arg: arg ">=" arg  */
  ------------------
  |  Branch (7846:3): [True: 1.64k, False: 10.4M]
  ------------------
 7847|  1.64k|#line 2386 "mrbgems/mruby-compiler/core/parse.y"
 7848|  1.64k|                    {
 7849|  1.64k|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">=", (yyvsp[0].nd));
 7850|  1.64k|                    }
 7851|  1.64k|#line 7852 "mrbgems/mruby-compiler/core/y.tab.c"
 7852|  1.64k|    break;
 7853|       |
 7854|  1.37k|  case 229: /* arg: arg '<' arg  */
  ------------------
  |  Branch (7854:3): [True: 1.37k, False: 10.4M]
  ------------------
 7855|  1.37k|#line 2390 "mrbgems/mruby-compiler/core/parse.y"
 7856|  1.37k|                    {
 7857|  1.37k|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<", (yyvsp[0].nd));
 7858|  1.37k|                    }
 7859|  1.37k|#line 7860 "mrbgems/mruby-compiler/core/y.tab.c"
 7860|  1.37k|    break;
 7861|       |
 7862|  3.72k|  case 230: /* arg: arg "<=" arg  */
  ------------------
  |  Branch (7862:3): [True: 3.72k, False: 10.4M]
  ------------------
 7863|  3.72k|#line 2394 "mrbgems/mruby-compiler/core/parse.y"
 7864|  3.72k|                    {
 7865|  3.72k|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=", (yyvsp[0].nd));
 7866|  3.72k|                    }
 7867|  3.72k|#line 7868 "mrbgems/mruby-compiler/core/y.tab.c"
 7868|  3.72k|    break;
 7869|       |
 7870|  1.94k|  case 231: /* arg: arg "==" arg  */
  ------------------
  |  Branch (7870:3): [True: 1.94k, False: 10.4M]
  ------------------
 7871|  1.94k|#line 2398 "mrbgems/mruby-compiler/core/parse.y"
 7872|  1.94k|                    {
 7873|  1.94k|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "==", (yyvsp[0].nd));
 7874|  1.94k|                    }
 7875|  1.94k|#line 7876 "mrbgems/mruby-compiler/core/y.tab.c"
 7876|  1.94k|    break;
 7877|       |
 7878|      0|  case 232: /* arg: arg "===" arg  */
  ------------------
  |  Branch (7878:3): [True: 0, False: 10.4M]
  ------------------
 7879|      0|#line 2402 "mrbgems/mruby-compiler/core/parse.y"
 7880|      0|                    {
 7881|      0|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "===", (yyvsp[0].nd));
 7882|      0|                    }
 7883|      0|#line 7884 "mrbgems/mruby-compiler/core/y.tab.c"
 7884|      0|    break;
 7885|       |
 7886|  3.32k|  case 233: /* arg: arg "!=" arg  */
  ------------------
  |  Branch (7886:3): [True: 3.32k, False: 10.4M]
  ------------------
 7887|  3.32k|#line 2406 "mrbgems/mruby-compiler/core/parse.y"
 7888|  3.32k|                    {
 7889|  3.32k|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!=", (yyvsp[0].nd));
 7890|  3.32k|                    }
 7891|  3.32k|#line 7892 "mrbgems/mruby-compiler/core/y.tab.c"
 7892|  3.32k|    break;
 7893|       |
 7894|      0|  case 234: /* arg: arg "=~" arg  */
  ------------------
  |  Branch (7894:3): [True: 0, False: 10.4M]
  ------------------
 7895|      0|#line 2410 "mrbgems/mruby-compiler/core/parse.y"
 7896|      0|                    {
 7897|      0|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "=~", (yyvsp[0].nd));
 7898|      0|                    }
 7899|      0|#line 7900 "mrbgems/mruby-compiler/core/y.tab.c"
 7900|      0|    break;
 7901|       |
 7902|      0|  case 235: /* arg: arg "!~" arg  */
  ------------------
  |  Branch (7902:3): [True: 0, False: 10.4M]
  ------------------
 7903|      0|#line 2414 "mrbgems/mruby-compiler/core/parse.y"
 7904|      0|                    {
 7905|      0|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!~", (yyvsp[0].nd));
 7906|      0|                    }
 7907|      0|#line 7908 "mrbgems/mruby-compiler/core/y.tab.c"
 7908|      0|    break;
 7909|       |
 7910|      0|  case 236: /* arg: '!' arg  */
  ------------------
  |  Branch (7910:3): [True: 0, False: 10.4M]
  ------------------
 7911|      0|#line 2418 "mrbgems/mruby-compiler/core/parse.y"
 7912|      0|                    {
 7913|      0|                      (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!");
 7914|      0|                    }
 7915|      0|#line 7916 "mrbgems/mruby-compiler/core/y.tab.c"
 7916|      0|    break;
 7917|       |
 7918|      0|  case 237: /* arg: '~' arg  */
  ------------------
  |  Branch (7918:3): [True: 0, False: 10.4M]
  ------------------
 7919|      0|#line 2422 "mrbgems/mruby-compiler/core/parse.y"
 7920|      0|                    {
 7921|      0|                      (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "~");
 7922|      0|                    }
 7923|      0|#line 7924 "mrbgems/mruby-compiler/core/y.tab.c"
 7924|      0|    break;
 7925|       |
 7926|      0|  case 238: /* arg: arg "<<" arg  */
  ------------------
  |  Branch (7926:3): [True: 0, False: 10.4M]
  ------------------
 7927|      0|#line 2426 "mrbgems/mruby-compiler/core/parse.y"
 7928|      0|                    {
 7929|      0|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<<", (yyvsp[0].nd));
 7930|      0|                    }
 7931|      0|#line 7932 "mrbgems/mruby-compiler/core/y.tab.c"
 7932|      0|    break;
 7933|       |
 7934|  9.88k|  case 239: /* arg: arg ">>" arg  */
  ------------------
  |  Branch (7934:3): [True: 9.88k, False: 10.4M]
  ------------------
 7935|  9.88k|#line 2430 "mrbgems/mruby-compiler/core/parse.y"
 7936|  9.88k|                    {
 7937|  9.88k|                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">>", (yyvsp[0].nd));
 7938|  9.88k|                    }
 7939|  9.88k|#line 7940 "mrbgems/mruby-compiler/core/y.tab.c"
 7940|  9.88k|    break;
 7941|       |
 7942|      0|  case 240: /* arg: arg "&&" arg  */
  ------------------
  |  Branch (7942:3): [True: 0, False: 10.4M]
  ------------------
 7943|      0|#line 2434 "mrbgems/mruby-compiler/core/parse.y"
 7944|      0|                    {
 7945|      0|                      (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 7946|      0|                    }
 7947|      0|#line 7948 "mrbgems/mruby-compiler/core/y.tab.c"
 7948|      0|    break;
 7949|       |
 7950|      0|  case 241: /* arg: arg "||" arg  */
  ------------------
  |  Branch (7950:3): [True: 0, False: 10.4M]
  ------------------
 7951|      0|#line 2438 "mrbgems/mruby-compiler/core/parse.y"
 7952|      0|                    {
 7953|      0|                      (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 7954|      0|                    }
 7955|      0|#line 7956 "mrbgems/mruby-compiler/core/y.tab.c"
 7956|      0|    break;
 7957|       |
 7958|  6.62k|  case 242: /* arg: arg '?' arg opt_nl ':' arg  */
  ------------------
  |  Branch (7958:3): [True: 6.62k, False: 10.4M]
  ------------------
 7959|  6.62k|#line 2442 "mrbgems/mruby-compiler/core/parse.y"
 7960|  6.62k|                    {
 7961|  6.62k|                      (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd));
 7962|  6.62k|                    }
 7963|  6.62k|#line 7964 "mrbgems/mruby-compiler/core/y.tab.c"
 7964|  6.62k|    break;
 7965|       |
 7966|      0|  case 243: /* arg: arg '?' arg opt_nl "label" arg  */
  ------------------
  |  Branch (7966:3): [True: 0, False: 10.4M]
  ------------------
 7967|      0|#line 2446 "mrbgems/mruby-compiler/core/parse.y"
 7968|      0|                    {
 7969|      0|                      (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd));
 7970|      0|                    }
 7971|      0|#line 7972 "mrbgems/mruby-compiler/core/y.tab.c"
 7972|      0|    break;
 7973|       |
 7974|      0|  case 244: /* arg: defn_head f_opt_arglist_paren '=' arg  */
  ------------------
  |  Branch (7974:3): [True: 0, False: 10.4M]
  ------------------
 7975|      0|#line 2450 "mrbgems/mruby-compiler/core/parse.y"
 7976|      0|                    {
 7977|      0|                      (yyval.nd) = (yyvsp[-3].nd);
 7978|      0|                      endless_method_name(p, (yyvsp[-3].nd));
 7979|      0|                      void_expr_error(p, (yyvsp[0].nd));
 7980|      0|                      defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd));
 7981|      0|                      nvars_unnest(p);
 7982|      0|                      p->in_def--;
 7983|      0|                    }
 7984|      0|#line 7985 "mrbgems/mruby-compiler/core/y.tab.c"
 7985|      0|    break;
 7986|       |
 7987|      0|  case 245: /* arg: defn_head f_opt_arglist_paren '=' arg "'rescue' modifier" arg  */
  ------------------
  |  Branch (7987:3): [True: 0, False: 10.4M]
  ------------------
 7988|      0|#line 2459 "mrbgems/mruby-compiler/core/parse.y"
 7989|      0|                    {
 7990|      0|                      (yyval.nd) = (yyvsp[-5].nd);
 7991|      0|                      endless_method_name(p, (yyvsp[-5].nd));
 7992|      0|                      void_expr_error(p, (yyvsp[-2].nd));
 7993|      0|                      defn_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)));
 7994|      0|                      nvars_unnest(p);
 7995|      0|                      p->in_def--;
 7996|      0|                    }
 7997|      0|#line 7998 "mrbgems/mruby-compiler/core/y.tab.c"
 7998|      0|    break;
 7999|       |
 8000|      0|  case 246: /* arg: defs_head f_opt_arglist_paren '=' arg  */
  ------------------
  |  Branch (8000:3): [True: 0, False: 10.4M]
  ------------------
 8001|      0|#line 2468 "mrbgems/mruby-compiler/core/parse.y"
 8002|      0|                    {
 8003|      0|                      (yyval.nd) = (yyvsp[-3].nd);
 8004|      0|                      void_expr_error(p, (yyvsp[0].nd));
 8005|      0|                      defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd));
 8006|      0|                      nvars_unnest(p);
 8007|      0|                      p->in_def--;
 8008|      0|                      p->in_single--;
 8009|      0|                    }
 8010|      0|#line 8011 "mrbgems/mruby-compiler/core/y.tab.c"
 8011|      0|    break;
 8012|       |
 8013|      0|  case 247: /* arg: defs_head f_opt_arglist_paren '=' arg "'rescue' modifier" arg  */
  ------------------
  |  Branch (8013:3): [True: 0, False: 10.4M]
  ------------------
 8014|      0|#line 2477 "mrbgems/mruby-compiler/core/parse.y"
 8015|      0|                    {
 8016|      0|                      (yyval.nd) = (yyvsp[-5].nd);
 8017|      0|                      void_expr_error(p, (yyvsp[-2].nd));
 8018|      0|                      defs_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)));
 8019|      0|                      nvars_unnest(p);
 8020|      0|                      p->in_def--;
 8021|      0|                      p->in_single--;
 8022|      0|                    }
 8023|      0|#line 8024 "mrbgems/mruby-compiler/core/y.tab.c"
 8024|      0|    break;
 8025|       |
 8026|  1.25M|  case 248: /* arg: primary  */
  ------------------
  |  Branch (8026:3): [True: 1.25M, False: 9.22M]
  ------------------
 8027|  1.25M|#line 2486 "mrbgems/mruby-compiler/core/parse.y"
 8028|  1.25M|                    {
 8029|  1.25M|                      (yyval.nd) = (yyvsp[0].nd);
 8030|  1.25M|                    }
 8031|  1.25M|#line 8032 "mrbgems/mruby-compiler/core/y.tab.c"
 8032|  1.25M|    break;
 8033|       |
 8034|  46.7k|  case 250: /* aref_args: args trailer  */
  ------------------
  |  Branch (8034:3): [True: 46.7k, False: 10.4M]
  ------------------
 8035|  46.7k|#line 2493 "mrbgems/mruby-compiler/core/parse.y"
 8036|  46.7k|                    {
 8037|  46.7k|                      (yyval.nd) = (yyvsp[-1].nd);
 8038|  46.7k|                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
  ------------------
  |  |  125|  46.7k|#define NODE_LINENO(c,n) do {\
  |  |  126|  46.7k|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 46.7k, False: 0]
  |  |  ------------------
  |  |  127|  46.7k|     (c)->filename_index = (n)->filename_index;\
  |  |  128|  46.7k|     (c)->lineno = (n)->lineno;\
  |  |  129|  46.7k|  }\
  |  |  130|  46.7k|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8039|  46.7k|                    }
 8040|  46.7k|#line 8041 "mrbgems/mruby-compiler/core/y.tab.c"
 8041|  46.7k|    break;
 8042|       |
 8043|      0|  case 251: /* aref_args: args comma assocs trailer  */
  ------------------
  |  Branch (8043:3): [True: 0, False: 10.4M]
  ------------------
 8044|      0|#line 2498 "mrbgems/mruby-compiler/core/parse.y"
 8045|      0|                    {
 8046|      0|                      (yyval.nd) = push((yyvsp[-3].nd), new_hash(p, (yyvsp[-1].nd)));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 8047|      0|                    }
 8048|      0|#line 8049 "mrbgems/mruby-compiler/core/y.tab.c"
 8049|      0|    break;
 8050|       |
 8051|      0|  case 252: /* aref_args: assocs trailer  */
  ------------------
  |  Branch (8051:3): [True: 0, False: 10.4M]
  ------------------
 8052|      0|#line 2502 "mrbgems/mruby-compiler/core/parse.y"
 8053|      0|                    {
 8054|      0|                      (yyval.nd) = cons(new_kw_hash(p, (yyvsp[-1].nd)), 0);
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
 8055|      0|                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
  ------------------
  |  |  125|      0|#define NODE_LINENO(c,n) do {\
  |  |  126|      0|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  127|      0|     (c)->filename_index = (n)->filename_index;\
  |  |  128|      0|     (c)->lineno = (n)->lineno;\
  |  |  129|      0|  }\
  |  |  130|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8056|      0|                    }
 8057|      0|#line 8058 "mrbgems/mruby-compiler/core/y.tab.c"
 8058|      0|    break;
 8059|       |
 8060|   141k|  case 253: /* arg_rhs: arg  */
  ------------------
  |  Branch (8060:3): [True: 141k, False: 10.3M]
  ------------------
 8061|   141k|#line 2509 "mrbgems/mruby-compiler/core/parse.y"
 8062|   141k|                    {
 8063|   141k|                      (yyval.nd) = (yyvsp[0].nd);
 8064|   141k|                    }
 8065|   141k|#line 8066 "mrbgems/mruby-compiler/core/y.tab.c"
 8066|   141k|    break;
 8067|       |
 8068|      0|  case 254: /* arg_rhs: arg "'rescue' modifier" arg  */
  ------------------
  |  Branch (8068:3): [True: 0, False: 10.4M]
  ------------------
 8069|      0|#line 2513 "mrbgems/mruby-compiler/core/parse.y"
 8070|      0|                    {
 8071|      0|                      void_expr_error(p, (yyvsp[-2].nd));
 8072|      0|                      (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 8073|      0|                    }
 8074|      0|#line 8075 "mrbgems/mruby-compiler/core/y.tab.c"
 8075|      0|    break;
 8076|       |
 8077|  66.1k|  case 255: /* paren_args: '(' opt_call_args ')'  */
  ------------------
  |  Branch (8077:3): [True: 66.1k, False: 10.4M]
  ------------------
 8078|  66.1k|#line 2520 "mrbgems/mruby-compiler/core/parse.y"
 8079|  66.1k|                    {
 8080|  66.1k|                      (yyval.nd) = (yyvsp[-1].nd);
 8081|  66.1k|                    }
 8082|  66.1k|#line 8083 "mrbgems/mruby-compiler/core/y.tab.c"
 8083|  66.1k|    break;
 8084|       |
 8085|      0|  case 256: /* paren_args: '(' args comma tBDOT3 rparen  */
  ------------------
  |  Branch (8085:3): [True: 0, False: 10.4M]
  ------------------
 8086|      0|#line 2524 "mrbgems/mruby-compiler/core/parse.y"
 8087|      0|                    {
 8088|      0|                      mrb_sym r = intern_op(mul);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 8089|      0|                      mrb_sym k = intern_op(pow);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 8090|      0|                      mrb_sym b = intern_op(and);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 8091|      0|                      (yyval.nd) = new_callargs(p, push((yyvsp[-3].nd), new_splat(p, new_lvar(p, r))),
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 8092|      0|                                        new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k)))),
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 8093|      0|                                        new_block_arg(p, new_lvar(p, b)));
 8094|      0|                    }
 8095|      0|#line 8096 "mrbgems/mruby-compiler/core/y.tab.c"
 8096|      0|    break;
 8097|       |
 8098|      0|  case 257: /* paren_args: '(' tBDOT3 rparen  */
  ------------------
  |  Branch (8098:3): [True: 0, False: 10.4M]
  ------------------
 8099|      0|#line 2533 "mrbgems/mruby-compiler/core/parse.y"
 8100|      0|                    {
 8101|      0|                      mrb_sym r = intern_op(mul);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 8102|      0|                      mrb_sym k = intern_op(pow);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 8103|      0|                      mrb_sym b = intern_op(and);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 8104|      0|                      if (local_var_p(p, r) && local_var_p(p, k) && local_var_p(p, b)) {
  ------------------
  |  Branch (8104:27): [True: 0, False: 0]
  |  Branch (8104:48): [True: 0, False: 0]
  |  Branch (8104:69): [True: 0, False: 0]
  ------------------
 8105|      0|                        (yyval.nd) = new_callargs(p, list1(new_splat(p, new_lvar(p, r))),
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 8106|      0|                                          new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k)))),
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 8107|      0|                                          new_block_arg(p, new_lvar(p, b)));
 8108|      0|                      }
 8109|      0|                      else {
 8110|      0|                        yyerror(p, "unexpected argument forwarding ...");
 8111|      0|                        (yyval.nd) = 0;
 8112|      0|                      }
 8113|      0|                    }
 8114|      0|#line 8115 "mrbgems/mruby-compiler/core/y.tab.c"
 8115|      0|    break;
 8116|       |
 8117|      0|  case 262: /* opt_call_args: args comma  */
  ------------------
  |  Branch (8117:3): [True: 0, False: 10.4M]
  ------------------
 8118|      0|#line 2556 "mrbgems/mruby-compiler/core/parse.y"
 8119|      0|                    {
 8120|      0|                      (yyval.nd) = new_callargs(p,(yyvsp[-1].nd),0,0);
 8121|      0|                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
  ------------------
  |  |  125|      0|#define NODE_LINENO(c,n) do {\
  |  |  126|      0|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  127|      0|     (c)->filename_index = (n)->filename_index;\
  |  |  128|      0|     (c)->lineno = (n)->lineno;\
  |  |  129|      0|  }\
  |  |  130|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8122|      0|                    }
 8123|      0|#line 8124 "mrbgems/mruby-compiler/core/y.tab.c"
 8124|      0|    break;
 8125|       |
 8126|      0|  case 263: /* opt_call_args: args comma assocs comma  */
  ------------------
  |  Branch (8126:3): [True: 0, False: 10.4M]
  ------------------
 8127|      0|#line 2561 "mrbgems/mruby-compiler/core/parse.y"
 8128|      0|                    {
 8129|      0|                      (yyval.nd) = new_callargs(p,(yyvsp[-3].nd),new_kw_hash(p,(yyvsp[-1].nd)),0);
 8130|      0|                      NODE_LINENO((yyval.nd), (yyvsp[-3].nd));
  ------------------
  |  |  125|      0|#define NODE_LINENO(c,n) do {\
  |  |  126|      0|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  127|      0|     (c)->filename_index = (n)->filename_index;\
  |  |  128|      0|     (c)->lineno = (n)->lineno;\
  |  |  129|      0|  }\
  |  |  130|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8131|      0|                    }
 8132|      0|#line 8133 "mrbgems/mruby-compiler/core/y.tab.c"
 8133|      0|    break;
 8134|       |
 8135|      0|  case 264: /* opt_call_args: assocs comma  */
  ------------------
  |  Branch (8135:3): [True: 0, False: 10.4M]
  ------------------
 8136|      0|#line 2566 "mrbgems/mruby-compiler/core/parse.y"
 8137|      0|                    {
 8138|      0|                      (yyval.nd) = new_callargs(p,0,new_kw_hash(p,(yyvsp[-1].nd)),0);
 8139|      0|                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
  ------------------
  |  |  125|      0|#define NODE_LINENO(c,n) do {\
  |  |  126|      0|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  127|      0|     (c)->filename_index = (n)->filename_index;\
  |  |  128|      0|     (c)->lineno = (n)->lineno;\
  |  |  129|      0|  }\
  |  |  130|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8140|      0|                    }
 8141|      0|#line 8142 "mrbgems/mruby-compiler/core/y.tab.c"
 8142|      0|    break;
 8143|       |
 8144|      0|  case 265: /* call_args: command  */
  ------------------
  |  Branch (8144:3): [True: 0, False: 10.4M]
  ------------------
 8145|      0|#line 2573 "mrbgems/mruby-compiler/core/parse.y"
 8146|      0|                    {
 8147|      0|                      void_expr_error(p, (yyvsp[0].nd));
 8148|      0|                      (yyval.nd) = new_callargs(p, list1((yyvsp[0].nd)), 0, 0);
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 8149|      0|                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
  ------------------
  |  |  125|      0|#define NODE_LINENO(c,n) do {\
  |  |  126|      0|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  127|      0|     (c)->filename_index = (n)->filename_index;\
  |  |  128|      0|     (c)->lineno = (n)->lineno;\
  |  |  129|      0|  }\
  |  |  130|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8150|      0|                    }
 8151|      0|#line 8152 "mrbgems/mruby-compiler/core/y.tab.c"
 8152|      0|    break;
 8153|       |
 8154|  60.2k|  case 266: /* call_args: args opt_block_arg  */
  ------------------
  |  Branch (8154:3): [True: 60.2k, False: 10.4M]
  ------------------
 8155|  60.2k|#line 2579 "mrbgems/mruby-compiler/core/parse.y"
 8156|  60.2k|                    {
 8157|  60.2k|                      (yyval.nd) = new_callargs(p, (yyvsp[-1].nd), 0, (yyvsp[0].nd));
 8158|  60.2k|                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
  ------------------
  |  |  125|  60.2k|#define NODE_LINENO(c,n) do {\
  |  |  126|  60.2k|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 60.2k, False: 0]
  |  |  ------------------
  |  |  127|  60.2k|     (c)->filename_index = (n)->filename_index;\
  |  |  128|  60.2k|     (c)->lineno = (n)->lineno;\
  |  |  129|  60.2k|  }\
  |  |  130|  60.2k|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8159|  60.2k|                    }
 8160|  60.2k|#line 8161 "mrbgems/mruby-compiler/core/y.tab.c"
 8161|  60.2k|    break;
 8162|       |
 8163|      0|  case 267: /* call_args: assocs opt_block_arg  */
  ------------------
  |  Branch (8163:3): [True: 0, False: 10.4M]
  ------------------
 8164|      0|#line 2584 "mrbgems/mruby-compiler/core/parse.y"
 8165|      0|                    {
 8166|      0|                      (yyval.nd) = new_callargs(p, 0, new_kw_hash(p, (yyvsp[-1].nd)), (yyvsp[0].nd));
 8167|      0|                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
  ------------------
  |  |  125|      0|#define NODE_LINENO(c,n) do {\
  |  |  126|      0|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  127|      0|     (c)->filename_index = (n)->filename_index;\
  |  |  128|      0|     (c)->lineno = (n)->lineno;\
  |  |  129|      0|  }\
  |  |  130|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8168|      0|                    }
 8169|      0|#line 8170 "mrbgems/mruby-compiler/core/y.tab.c"
 8170|      0|    break;
 8171|       |
 8172|      0|  case 268: /* call_args: args comma assocs opt_block_arg  */
  ------------------
  |  Branch (8172:3): [True: 0, False: 10.4M]
  ------------------
 8173|      0|#line 2589 "mrbgems/mruby-compiler/core/parse.y"
 8174|      0|                    {
 8175|      0|                      (yyval.nd) = new_callargs(p, (yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd)), (yyvsp[0].nd));
 8176|      0|                      NODE_LINENO((yyval.nd), (yyvsp[-3].nd));
  ------------------
  |  |  125|      0|#define NODE_LINENO(c,n) do {\
  |  |  126|      0|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  127|      0|     (c)->filename_index = (n)->filename_index;\
  |  |  128|      0|     (c)->lineno = (n)->lineno;\
  |  |  129|      0|  }\
  |  |  130|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8177|      0|                    }
 8178|      0|#line 8179 "mrbgems/mruby-compiler/core/y.tab.c"
 8179|      0|    break;
 8180|       |
 8181|      0|  case 269: /* call_args: block_arg  */
  ------------------
  |  Branch (8181:3): [True: 0, False: 10.4M]
  ------------------
 8182|      0|#line 2594 "mrbgems/mruby-compiler/core/parse.y"
 8183|      0|                    {
 8184|      0|                      (yyval.nd) = new_callargs(p, 0, 0, (yyvsp[0].nd));
 8185|      0|                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
  ------------------
  |  |  125|      0|#define NODE_LINENO(c,n) do {\
  |  |  126|      0|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  127|      0|     (c)->filename_index = (n)->filename_index;\
  |  |  128|      0|     (c)->lineno = (n)->lineno;\
  |  |  129|      0|  }\
  |  |  130|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8186|      0|                    }
 8187|      0|#line 8188 "mrbgems/mruby-compiler/core/y.tab.c"
 8188|      0|    break;
 8189|       |
 8190|      0|  case 270: /* @7: %empty  */
  ------------------
  |  Branch (8190:3): [True: 0, False: 10.4M]
  ------------------
 8191|      0|#line 2600 "mrbgems/mruby-compiler/core/parse.y"
 8192|      0|                   {
 8193|      0|                      (yyval.stack) = p->cmdarg_stack;
 8194|      0|                      CMDARG_PUSH(1);
  ------------------
  |  |  119|      0|#define CMDARG_PUSH(n)  BITSTACK_PUSH(p->cmdarg_stack, (n))
  |  |  ------------------
  |  |  |  |  109|      0|#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
  |  |  ------------------
  ------------------
 8195|      0|                    }
 8196|      0|#line 8197 "mrbgems/mruby-compiler/core/y.tab.c"
 8197|      0|    break;
 8198|       |
 8199|      0|  case 271: /* command_args: @7 call_args  */
  ------------------
  |  Branch (8199:3): [True: 0, False: 10.4M]
  ------------------
 8200|      0|#line 2605 "mrbgems/mruby-compiler/core/parse.y"
 8201|      0|                    {
 8202|      0|                      p->cmdarg_stack = (yyvsp[-1].stack);
 8203|      0|                      (yyval.nd) = (yyvsp[0].nd);
 8204|      0|                    }
 8205|      0|#line 8206 "mrbgems/mruby-compiler/core/y.tab.c"
 8206|      0|    break;
 8207|       |
 8208|      0|  case 272: /* block_arg: "&" arg  */
  ------------------
  |  Branch (8208:3): [True: 0, False: 10.4M]
  ------------------
 8209|      0|#line 2612 "mrbgems/mruby-compiler/core/parse.y"
 8210|      0|                    {
 8211|      0|                      (yyval.nd) = new_block_arg(p, (yyvsp[0].nd));
 8212|      0|                    }
 8213|      0|#line 8214 "mrbgems/mruby-compiler/core/y.tab.c"
 8214|      0|    break;
 8215|       |
 8216|      0|  case 273: /* block_arg: "&"  */
  ------------------
  |  Branch (8216:3): [True: 0, False: 10.4M]
  ------------------
 8217|      0|#line 2616 "mrbgems/mruby-compiler/core/parse.y"
 8218|      0|                    {
 8219|      0|                      (yyval.nd) = new_block_arg(p, 0);
 8220|      0|                    }
 8221|      0|#line 8222 "mrbgems/mruby-compiler/core/y.tab.c"
 8222|      0|    break;
 8223|       |
 8224|      0|  case 274: /* opt_block_arg: comma block_arg  */
  ------------------
  |  Branch (8224:3): [True: 0, False: 10.4M]
  ------------------
 8225|      0|#line 2622 "mrbgems/mruby-compiler/core/parse.y"
 8226|      0|                    {
 8227|      0|                      (yyval.nd) = (yyvsp[0].nd);
 8228|      0|                    }
 8229|      0|#line 8230 "mrbgems/mruby-compiler/core/y.tab.c"
 8230|      0|    break;
 8231|       |
 8232|  60.2k|  case 275: /* opt_block_arg: none  */
  ------------------
  |  Branch (8232:3): [True: 60.2k, False: 10.4M]
  ------------------
 8233|  60.2k|#line 2626 "mrbgems/mruby-compiler/core/parse.y"
 8234|  60.2k|                    {
 8235|  60.2k|                      (yyval.nd) = 0;
 8236|  60.2k|                    }
 8237|  60.2k|#line 8238 "mrbgems/mruby-compiler/core/y.tab.c"
 8238|  60.2k|    break;
 8239|       |
 8240|   106k|  case 277: /* args: arg  */
  ------------------
  |  Branch (8240:3): [True: 106k, False: 10.3M]
  ------------------
 8241|   106k|#line 2635 "mrbgems/mruby-compiler/core/parse.y"
 8242|   106k|                    {
 8243|   106k|                      void_expr_error(p, (yyvsp[0].nd));
 8244|   106k|                      (yyval.nd) = list1((yyvsp[0].nd));
  ------------------
  |  |  217|   106k|#define list1(a) list1_gen(p, (a))
  ------------------
 8245|   106k|                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
  ------------------
  |  |  125|   106k|#define NODE_LINENO(c,n) do {\
  |  |  126|   106k|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 106k, False: 0]
  |  |  ------------------
  |  |  127|   106k|     (c)->filename_index = (n)->filename_index;\
  |  |  128|   106k|     (c)->lineno = (n)->lineno;\
  |  |  129|   106k|  }\
  |  |  130|   106k|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8246|   106k|                    }
 8247|   106k|#line 8248 "mrbgems/mruby-compiler/core/y.tab.c"
 8248|   106k|    break;
 8249|       |
 8250|      0|  case 278: /* args: "*"  */
  ------------------
  |  Branch (8250:3): [True: 0, False: 10.4M]
  ------------------
 8251|      0|#line 2641 "mrbgems/mruby-compiler/core/parse.y"
 8252|      0|                    {
 8253|      0|                      (yyval.nd) = list1(new_splat(p, new_lvar(p, intern_op(mul))));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 8254|      0|                    }
 8255|      0|#line 8256 "mrbgems/mruby-compiler/core/y.tab.c"
 8256|      0|    break;
 8257|       |
 8258|      0|  case 279: /* args: "*" arg  */
  ------------------
  |  Branch (8258:3): [True: 0, False: 10.4M]
  ------------------
 8259|      0|#line 2645 "mrbgems/mruby-compiler/core/parse.y"
 8260|      0|                    {
 8261|      0|                      (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd)));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 8262|      0|                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
  ------------------
  |  |  125|      0|#define NODE_LINENO(c,n) do {\
  |  |  126|      0|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  127|      0|     (c)->filename_index = (n)->filename_index;\
  |  |  128|      0|     (c)->lineno = (n)->lineno;\
  |  |  129|      0|  }\
  |  |  130|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8263|      0|                    }
 8264|      0|#line 8265 "mrbgems/mruby-compiler/core/y.tab.c"
 8265|      0|    break;
 8266|       |
 8267|   298k|  case 280: /* args: args comma arg  */
  ------------------
  |  Branch (8267:3): [True: 298k, False: 10.1M]
  ------------------
 8268|   298k|#line 2650 "mrbgems/mruby-compiler/core/parse.y"
 8269|   298k|                    {
 8270|   298k|                      void_expr_error(p, (yyvsp[0].nd));
 8271|   298k|                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
  ------------------
  |  |  268|   298k|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|   298k|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 8272|   298k|                    }
 8273|   298k|#line 8274 "mrbgems/mruby-compiler/core/y.tab.c"
 8274|   298k|    break;
 8275|       |
 8276|      0|  case 281: /* args: args comma "*"  */
  ------------------
  |  Branch (8276:3): [True: 0, False: 10.4M]
  ------------------
 8277|      0|#line 2655 "mrbgems/mruby-compiler/core/parse.y"
 8278|      0|                    {
 8279|      0|                      (yyval.nd) = push((yyvsp[-2].nd), new_splat(p, new_lvar(p, intern_op(mul))));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 8280|      0|                    }
 8281|      0|#line 8282 "mrbgems/mruby-compiler/core/y.tab.c"
 8282|      0|    break;
 8283|       |
 8284|      0|  case 282: /* args: args comma "*" arg  */
  ------------------
  |  Branch (8284:3): [True: 0, False: 10.4M]
  ------------------
 8285|      0|#line 2659 "mrbgems/mruby-compiler/core/parse.y"
 8286|      0|                    {
 8287|      0|                      (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd)));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 8288|      0|                    }
 8289|      0|#line 8290 "mrbgems/mruby-compiler/core/y.tab.c"
 8290|      0|    break;
 8291|       |
 8292|      0|  case 283: /* mrhs: args comma arg  */
  ------------------
  |  Branch (8292:3): [True: 0, False: 10.4M]
  ------------------
 8293|      0|#line 2665 "mrbgems/mruby-compiler/core/parse.y"
 8294|      0|                    {
 8295|      0|                      void_expr_error(p, (yyvsp[0].nd));
 8296|      0|                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 8297|      0|                    }
 8298|      0|#line 8299 "mrbgems/mruby-compiler/core/y.tab.c"
 8299|      0|    break;
 8300|       |
 8301|      0|  case 284: /* mrhs: args comma "*" arg  */
  ------------------
  |  Branch (8301:3): [True: 0, False: 10.4M]
  ------------------
 8302|      0|#line 2670 "mrbgems/mruby-compiler/core/parse.y"
 8303|      0|                    {
 8304|      0|                      (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd)));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 8305|      0|                    }
 8306|      0|#line 8307 "mrbgems/mruby-compiler/core/y.tab.c"
 8307|      0|    break;
 8308|       |
 8309|      0|  case 285: /* mrhs: "*" arg  */
  ------------------
  |  Branch (8309:3): [True: 0, False: 10.4M]
  ------------------
 8310|      0|#line 2674 "mrbgems/mruby-compiler/core/parse.y"
 8311|      0|                    {
 8312|      0|                      (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd)));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 8313|      0|                    }
 8314|      0|#line 8315 "mrbgems/mruby-compiler/core/y.tab.c"
 8315|      0|    break;
 8316|       |
 8317|      0|  case 293: /* primary: "numbered parameter"  */
  ------------------
  |  Branch (8317:3): [True: 0, False: 10.4M]
  ------------------
 8318|      0|#line 2687 "mrbgems/mruby-compiler/core/parse.y"
 8319|      0|                    {
 8320|      0|                      (yyval.nd) = new_nvar(p, (yyvsp[0].num));
 8321|      0|                    }
 8322|      0|#line 8323 "mrbgems/mruby-compiler/core/y.tab.c"
 8323|      0|    break;
 8324|       |
 8325|      0|  case 294: /* primary: "method"  */
  ------------------
  |  Branch (8325:3): [True: 0, False: 10.4M]
  ------------------
 8326|      0|#line 2691 "mrbgems/mruby-compiler/core/parse.y"
 8327|      0|                    {
 8328|      0|                      (yyval.nd) = new_fcall(p, (yyvsp[0].id), 0);
 8329|      0|                    }
 8330|      0|#line 8331 "mrbgems/mruby-compiler/core/y.tab.c"
 8331|      0|    break;
 8332|       |
 8333|  20.9k|  case 295: /* @8: %empty  */
  ------------------
  |  Branch (8333:3): [True: 20.9k, False: 10.4M]
  ------------------
 8334|  20.9k|#line 2695 "mrbgems/mruby-compiler/core/parse.y"
 8335|  20.9k|                    {
 8336|  20.9k|                      (yyval.stack) = p->cmdarg_stack;
 8337|  20.9k|                      p->cmdarg_stack = 0;
 8338|  20.9k|                    }
 8339|  20.9k|#line 8340 "mrbgems/mruby-compiler/core/y.tab.c"
 8340|  20.9k|    break;
 8341|       |
 8342|  20.9k|  case 296: /* primary: "'begin'" @8 bodystmt "'end'"  */
  ------------------
  |  Branch (8342:3): [True: 20.9k, False: 10.4M]
  ------------------
 8343|  20.9k|#line 2701 "mrbgems/mruby-compiler/core/parse.y"
 8344|  20.9k|                    {
 8345|  20.9k|                      p->cmdarg_stack = (yyvsp[-2].stack);
 8346|  20.9k|                      (yyval.nd) = (yyvsp[-1].nd);
 8347|  20.9k|                    }
 8348|  20.9k|#line 8349 "mrbgems/mruby-compiler/core/y.tab.c"
 8349|  20.9k|    break;
 8350|       |
 8351|      0|  case 297: /* @9: %empty  */
  ------------------
  |  Branch (8351:3): [True: 0, False: 10.4M]
  ------------------
 8352|      0|#line 2706 "mrbgems/mruby-compiler/core/parse.y"
 8353|      0|                    {
 8354|      0|                      (yyval.stack) = p->cmdarg_stack;
 8355|      0|                      p->cmdarg_stack = 0;
 8356|      0|                    }
 8357|      0|#line 8358 "mrbgems/mruby-compiler/core/y.tab.c"
 8358|      0|    break;
 8359|       |
 8360|      0|  case 298: /* $@10: %empty  */
  ------------------
  |  Branch (8360:3): [True: 0, False: 10.4M]
  ------------------
 8361|      0|#line 2710 "mrbgems/mruby-compiler/core/parse.y"
 8362|      0|                       {p->lstate = EXPR_ENDARG;}
 8363|      0|#line 8364 "mrbgems/mruby-compiler/core/y.tab.c"
 8364|      0|    break;
 8365|       |
 8366|      0|  case 299: /* primary: "(" @9 stmt $@10 rparen  */
  ------------------
  |  Branch (8366:3): [True: 0, False: 10.4M]
  ------------------
 8367|      0|#line 2711 "mrbgems/mruby-compiler/core/parse.y"
 8368|      0|                    {
 8369|      0|                      p->cmdarg_stack = (yyvsp[-3].stack);
 8370|      0|                      (yyval.nd) = (yyvsp[-2].nd);
 8371|      0|                    }
 8372|      0|#line 8373 "mrbgems/mruby-compiler/core/y.tab.c"
 8373|      0|    break;
 8374|       |
 8375|      0|  case 300: /* $@11: %empty  */
  ------------------
  |  Branch (8375:3): [True: 0, False: 10.4M]
  ------------------
 8376|      0|#line 2715 "mrbgems/mruby-compiler/core/parse.y"
 8377|      0|                              {p->lstate = EXPR_ENDARG;}
 8378|      0|#line 8379 "mrbgems/mruby-compiler/core/y.tab.c"
 8379|      0|    break;
 8380|       |
 8381|      0|  case 301: /* primary: "(" $@11 rparen  */
  ------------------
  |  Branch (8381:3): [True: 0, False: 10.4M]
  ------------------
 8382|      0|#line 2716 "mrbgems/mruby-compiler/core/parse.y"
 8383|      0|                    {
 8384|      0|                      (yyval.nd) = new_nil(p);
 8385|      0|                    }
 8386|      0|#line 8387 "mrbgems/mruby-compiler/core/y.tab.c"
 8387|      0|    break;
 8388|       |
 8389|   139k|  case 302: /* primary: tLPAREN compstmt ')'  */
  ------------------
  |  Branch (8389:3): [True: 139k, False: 10.3M]
  ------------------
 8390|   139k|#line 2720 "mrbgems/mruby-compiler/core/parse.y"
 8391|   139k|                    {
 8392|   139k|                      (yyval.nd) = (yyvsp[-1].nd);
 8393|   139k|                    }
 8394|   139k|#line 8395 "mrbgems/mruby-compiler/core/y.tab.c"
 8395|   139k|    break;
 8396|       |
 8397|    785|  case 303: /* primary: primary_value "::" "constant"  */
  ------------------
  |  Branch (8397:3): [True: 785, False: 10.4M]
  ------------------
 8398|    785|#line 2724 "mrbgems/mruby-compiler/core/parse.y"
 8399|    785|                    {
 8400|    785|                      (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id));
 8401|    785|                    }
 8402|    785|#line 8403 "mrbgems/mruby-compiler/core/y.tab.c"
 8403|    785|    break;
 8404|       |
 8405|      0|  case 304: /* primary: tCOLON3 "constant"  */
  ------------------
  |  Branch (8405:3): [True: 0, False: 10.4M]
  ------------------
 8406|      0|#line 2728 "mrbgems/mruby-compiler/core/parse.y"
 8407|      0|                    {
 8408|      0|                      (yyval.nd) = new_colon3(p, (yyvsp[0].id));
 8409|      0|                    }
 8410|      0|#line 8411 "mrbgems/mruby-compiler/core/y.tab.c"
 8411|      0|    break;
 8412|       |
 8413|  46.7k|  case 305: /* primary: "[" aref_args ']'  */
  ------------------
  |  Branch (8413:3): [True: 46.7k, False: 10.4M]
  ------------------
 8414|  46.7k|#line 2732 "mrbgems/mruby-compiler/core/parse.y"
 8415|  46.7k|                    {
 8416|  46.7k|                      (yyval.nd) = new_array(p, (yyvsp[-1].nd));
 8417|  46.7k|                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
  ------------------
  |  |  125|  46.7k|#define NODE_LINENO(c,n) do {\
  |  |  126|  46.7k|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 46.7k, False: 0]
  |  |  ------------------
  |  |  127|  46.7k|     (c)->filename_index = (n)->filename_index;\
  |  |  128|  46.7k|     (c)->lineno = (n)->lineno;\
  |  |  129|  46.7k|  }\
  |  |  130|  46.7k|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8418|  46.7k|                    }
 8419|  46.7k|#line 8420 "mrbgems/mruby-compiler/core/y.tab.c"
 8420|  46.7k|    break;
 8421|       |
 8422|  2.08k|  case 306: /* primary: tLBRACE assoc_list '}'  */
  ------------------
  |  Branch (8422:3): [True: 2.08k, False: 10.4M]
  ------------------
 8423|  2.08k|#line 2737 "mrbgems/mruby-compiler/core/parse.y"
 8424|  2.08k|                    {
 8425|  2.08k|                      (yyval.nd) = new_hash(p, (yyvsp[-1].nd));
 8426|  2.08k|                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
  ------------------
  |  |  125|  2.08k|#define NODE_LINENO(c,n) do {\
  |  |  126|  2.08k|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 2.08k, False: 0]
  |  |  ------------------
  |  |  127|  2.08k|     (c)->filename_index = (n)->filename_index;\
  |  |  128|  2.08k|     (c)->lineno = (n)->lineno;\
  |  |  129|  2.08k|  }\
  |  |  130|  2.08k|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 8427|  2.08k|                    }
 8428|  2.08k|#line 8429 "mrbgems/mruby-compiler/core/y.tab.c"
 8429|  2.08k|    break;
 8430|       |
 8431|      0|  case 307: /* primary: "'return'"  */
  ------------------
  |  Branch (8431:3): [True: 0, False: 10.4M]
  ------------------
 8432|      0|#line 2742 "mrbgems/mruby-compiler/core/parse.y"
 8433|      0|                    {
 8434|      0|                      (yyval.nd) = new_return(p, 0);
 8435|      0|                    }
 8436|      0|#line 8437 "mrbgems/mruby-compiler/core/y.tab.c"
 8437|      0|    break;
 8438|       |
 8439|      0|  case 308: /* primary: "'yield'" opt_paren_args  */
  ------------------
  |  Branch (8439:3): [True: 0, False: 10.4M]
  ------------------
 8440|      0|#line 2746 "mrbgems/mruby-compiler/core/parse.y"
 8441|      0|                    {
 8442|      0|                      (yyval.nd) = new_yield(p, (yyvsp[0].nd));
 8443|      0|                    }
 8444|      0|#line 8445 "mrbgems/mruby-compiler/core/y.tab.c"
 8445|      0|    break;
 8446|       |
 8447|      0|  case 309: /* primary: "'not'" '(' expr rparen  */
  ------------------
  |  Branch (8447:3): [True: 0, False: 10.4M]
  ------------------
 8448|      0|#line 2750 "mrbgems/mruby-compiler/core/parse.y"
 8449|      0|                    {
 8450|      0|                      (yyval.nd) = call_uni_op(p, cond((yyvsp[-1].nd)), "!");
 8451|      0|                    }
 8452|      0|#line 8453 "mrbgems/mruby-compiler/core/y.tab.c"
 8453|      0|    break;
 8454|       |
 8455|      0|  case 310: /* primary: "'not'" '(' rparen  */
  ------------------
  |  Branch (8455:3): [True: 0, False: 10.4M]
  ------------------
 8456|      0|#line 2754 "mrbgems/mruby-compiler/core/parse.y"
 8457|      0|                    {
 8458|      0|                      (yyval.nd) = call_uni_op(p, new_nil(p), "!");
 8459|      0|                    }
 8460|      0|#line 8461 "mrbgems/mruby-compiler/core/y.tab.c"
 8461|      0|    break;
 8462|       |
 8463|      0|  case 311: /* primary: operation brace_block  */
  ------------------
  |  Branch (8463:3): [True: 0, False: 10.4M]
  ------------------
 8464|      0|#line 2758 "mrbgems/mruby-compiler/core/parse.y"
 8465|      0|                    {
 8466|      0|                      (yyval.nd) = new_fcall(p, (yyvsp[-1].id), new_callargs(p, 0, 0, (yyvsp[0].nd)));
 8467|      0|                    }
 8468|      0|#line 8469 "mrbgems/mruby-compiler/core/y.tab.c"
 8469|      0|    break;
 8470|       |
 8471|      0|  case 313: /* primary: method_call brace_block  */
  ------------------
  |  Branch (8471:3): [True: 0, False: 10.4M]
  ------------------
 8472|      0|#line 2763 "mrbgems/mruby-compiler/core/parse.y"
 8473|      0|                    {
 8474|      0|                      call_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd));
 8475|      0|                      (yyval.nd) = (yyvsp[-1].nd);
 8476|      0|                    }
 8477|      0|#line 8478 "mrbgems/mruby-compiler/core/y.tab.c"
 8478|      0|    break;
 8479|       |
 8480|      0|  case 314: /* @12: %empty  */
  ------------------
  |  Branch (8480:3): [True: 0, False: 10.4M]
  ------------------
 8481|      0|#line 2768 "mrbgems/mruby-compiler/core/parse.y"
 8482|      0|                    {
 8483|      0|                      local_nest(p);
 8484|      0|                      nvars_nest(p);
 8485|      0|                      (yyval.num) = p->lpar_beg;
 8486|      0|                      p->lpar_beg = ++p->paren_nest;
 8487|      0|                    }
 8488|      0|#line 8489 "mrbgems/mruby-compiler/core/y.tab.c"
 8489|      0|    break;
 8490|       |
 8491|      0|  case 315: /* @13: %empty  */
  ------------------
  |  Branch (8491:3): [True: 0, False: 10.4M]
  ------------------
 8492|      0|#line 2775 "mrbgems/mruby-compiler/core/parse.y"
 8493|      0|                    {
 8494|      0|                      (yyval.stack) = p->cmdarg_stack;
 8495|      0|                      p->cmdarg_stack = 0;
 8496|      0|                    }
 8497|      0|#line 8498 "mrbgems/mruby-compiler/core/y.tab.c"
 8498|      0|    break;
 8499|       |
 8500|      0|  case 316: /* primary: "->" @12 f_larglist @13 lambda_body  */
  ------------------
  |  Branch (8500:3): [True: 0, False: 10.4M]
  ------------------
 8501|      0|#line 2780 "mrbgems/mruby-compiler/core/parse.y"
 8502|      0|                    {
 8503|      0|                      p->lpar_beg = (yyvsp[-3].num);
 8504|      0|                      (yyval.nd) = new_lambda(p, (yyvsp[-2].nd), (yyvsp[0].nd));
 8505|      0|                      local_unnest(p);
 8506|      0|                      nvars_unnest(p);
 8507|      0|                      p->cmdarg_stack = (yyvsp[-1].stack);
 8508|      0|                      CMDARG_LEXPOP();
  ------------------
  |  |  121|      0|#define CMDARG_LEXPOP() BITSTACK_LEXPOP(p->cmdarg_stack)
  |  |  ------------------
  |  |  |  |  111|      0|#define BITSTACK_LEXPOP(stack)  ((stack) = ((stack) >> 1) | ((stack) & 1))
  |  |  ------------------
  ------------------
 8509|      0|                    }
 8510|      0|#line 8511 "mrbgems/mruby-compiler/core/y.tab.c"
 8511|      0|    break;
 8512|       |
 8513|  18.7k|  case 317: /* primary: "'if'" expr_value then compstmt if_tail "'end'"  */
  ------------------
  |  Branch (8513:3): [True: 18.7k, False: 10.4M]
  ------------------
 8514|  18.7k|#line 2792 "mrbgems/mruby-compiler/core/parse.y"
 8515|  18.7k|                    {
 8516|  18.7k|                      (yyval.nd) = new_if(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd));
 8517|  18.7k|                      SET_LINENO((yyval.nd), (yyvsp[-5].num));
  ------------------
  |  |  124|  18.7k|#define SET_LINENO(c,n) ((c)->lineno = (n))
  ------------------
 8518|  18.7k|                    }
 8519|  18.7k|#line 8520 "mrbgems/mruby-compiler/core/y.tab.c"
 8520|  18.7k|    break;
 8521|       |
 8522|      0|  case 318: /* primary: "'unless'" expr_value then compstmt opt_else "'end'"  */
  ------------------
  |  Branch (8522:3): [True: 0, False: 10.4M]
  ------------------
 8523|      0|#line 2800 "mrbgems/mruby-compiler/core/parse.y"
 8524|      0|                    {
 8525|      0|                      (yyval.nd) = new_unless(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd));
 8526|      0|                      SET_LINENO((yyval.nd), (yyvsp[-5].num));
  ------------------
  |  |  124|      0|#define SET_LINENO(c,n) ((c)->lineno = (n))
  ------------------
 8527|      0|                    }
 8528|      0|#line 8529 "mrbgems/mruby-compiler/core/y.tab.c"
 8529|      0|    break;
 8530|       |
 8531|      0|  case 319: /* $@14: %empty  */
  ------------------
  |  Branch (8531:3): [True: 0, False: 10.4M]
  ------------------
 8532|      0|#line 2804 "mrbgems/mruby-compiler/core/parse.y"
 8533|      0|                                {COND_PUSH(1);}
  ------------------
  |  |  114|      0|#define COND_PUSH(n)    BITSTACK_PUSH(p->cond_stack, (n))
  |  |  ------------------
  |  |  |  |  109|      0|#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
  |  |  ------------------
  ------------------
 8534|      0|#line 8535 "mrbgems/mruby-compiler/core/y.tab.c"
 8535|      0|    break;
 8536|       |
 8537|      0|  case 320: /* $@15: %empty  */
  ------------------
  |  Branch (8537:3): [True: 0, False: 10.4M]
  ------------------
 8538|      0|#line 2804 "mrbgems/mruby-compiler/core/parse.y"
 8539|      0|                                                              {COND_POP();}
  ------------------
  |  |  115|      0|#define COND_POP()      BITSTACK_POP(p->cond_stack)
  |  |  ------------------
  |  |  |  |  110|      0|#define BITSTACK_POP(stack)     ((stack) = (stack) >> 1)
  |  |  ------------------
  ------------------
 8540|      0|#line 8541 "mrbgems/mruby-compiler/core/y.tab.c"
 8541|      0|    break;
 8542|       |
 8543|      0|  case 321: /* primary: "'while'" $@14 expr_value do $@15 compstmt "'end'"  */
  ------------------
  |  Branch (8543:3): [True: 0, False: 10.4M]
  ------------------
 8544|      0|#line 2807 "mrbgems/mruby-compiler/core/parse.y"
 8545|      0|                    {
 8546|      0|                      (yyval.nd) = new_while(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd));
 8547|      0|                      SET_LINENO((yyval.nd), (yyvsp[-6].num));
  ------------------
  |  |  124|      0|#define SET_LINENO(c,n) ((c)->lineno = (n))
  ------------------
 8548|      0|                    }
 8549|      0|#line 8550 "mrbgems/mruby-compiler/core/y.tab.c"
 8550|      0|    break;
 8551|       |
 8552|      0|  case 322: /* $@16: %empty  */
  ------------------
  |  Branch (8552:3): [True: 0, False: 10.4M]
  ------------------
 8553|      0|#line 2811 "mrbgems/mruby-compiler/core/parse.y"
 8554|      0|                                {COND_PUSH(1);}
  ------------------
  |  |  114|      0|#define COND_PUSH(n)    BITSTACK_PUSH(p->cond_stack, (n))
  |  |  ------------------
  |  |  |  |  109|      0|#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
  |  |  ------------------
  ------------------
 8555|      0|#line 8556 "mrbgems/mruby-compiler/core/y.tab.c"
 8556|      0|    break;
 8557|       |
 8558|      0|  case 323: /* $@17: %empty  */
  ------------------
  |  Branch (8558:3): [True: 0, False: 10.4M]
  ------------------
 8559|      0|#line 2811 "mrbgems/mruby-compiler/core/parse.y"
 8560|      0|                                                              {COND_POP();}
  ------------------
  |  |  115|      0|#define COND_POP()      BITSTACK_POP(p->cond_stack)
  |  |  ------------------
  |  |  |  |  110|      0|#define BITSTACK_POP(stack)     ((stack) = (stack) >> 1)
  |  |  ------------------
  ------------------
 8561|      0|#line 8562 "mrbgems/mruby-compiler/core/y.tab.c"
 8562|      0|    break;
 8563|       |
 8564|      0|  case 324: /* primary: "'until'" $@16 expr_value do $@17 compstmt "'end'"  */
  ------------------
  |  Branch (8564:3): [True: 0, False: 10.4M]
  ------------------
 8565|      0|#line 2814 "mrbgems/mruby-compiler/core/parse.y"
 8566|      0|                    {
 8567|      0|                      (yyval.nd) = new_until(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd));
 8568|      0|                      SET_LINENO((yyval.nd), (yyvsp[-6].num));
  ------------------
  |  |  124|      0|#define SET_LINENO(c,n) ((c)->lineno = (n))
  ------------------
 8569|      0|                    }
 8570|      0|#line 8571 "mrbgems/mruby-compiler/core/y.tab.c"
 8571|      0|    break;
 8572|       |
 8573|      0|  case 325: /* primary: "'case'" expr_value opt_terms case_body "'end'"  */
  ------------------
  |  Branch (8573:3): [True: 0, False: 10.4M]
  ------------------
 8574|      0|#line 2821 "mrbgems/mruby-compiler/core/parse.y"
 8575|      0|                    {
 8576|      0|                      (yyval.nd) = new_case(p, (yyvsp[-3].nd), (yyvsp[-1].nd));
 8577|      0|                    }
 8578|      0|#line 8579 "mrbgems/mruby-compiler/core/y.tab.c"
 8579|      0|    break;
 8580|       |
 8581|      0|  case 326: /* primary: "'case'" opt_terms case_body "'end'"  */
  ------------------
  |  Branch (8581:3): [True: 0, False: 10.4M]
  ------------------
 8582|      0|#line 2825 "mrbgems/mruby-compiler/core/parse.y"
 8583|      0|                    {
 8584|      0|                      (yyval.nd) = new_case(p, 0, (yyvsp[-1].nd));
 8585|      0|                    }
 8586|      0|#line 8587 "mrbgems/mruby-compiler/core/y.tab.c"
 8587|      0|    break;
 8588|       |
 8589|      0|  case 327: /* $@18: %empty  */
  ------------------
  |  Branch (8589:3): [True: 0, False: 10.4M]
  ------------------
 8590|      0|#line 2829 "mrbgems/mruby-compiler/core/parse.y"
 8591|      0|                  {COND_PUSH(1);}
  ------------------
  |  |  114|      0|#define COND_PUSH(n)    BITSTACK_PUSH(p->cond_stack, (n))
  |  |  ------------------
  |  |  |  |  109|      0|#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
  |  |  ------------------
  ------------------
 8592|      0|#line 8593 "mrbgems/mruby-compiler/core/y.tab.c"
 8593|      0|    break;
 8594|       |
 8595|      0|  case 328: /* $@19: %empty  */
  ------------------
  |  Branch (8595:3): [True: 0, False: 10.4M]
  ------------------
 8596|      0|#line 2831 "mrbgems/mruby-compiler/core/parse.y"
 8597|      0|                  {COND_POP();}
  ------------------
  |  |  115|      0|#define COND_POP()      BITSTACK_POP(p->cond_stack)
  |  |  ------------------
  |  |  |  |  110|      0|#define BITSTACK_POP(stack)     ((stack) = (stack) >> 1)
  |  |  ------------------
  ------------------
 8598|      0|#line 8599 "mrbgems/mruby-compiler/core/y.tab.c"
 8599|      0|    break;
 8600|       |
 8601|      0|  case 329: /* primary: "'for'" for_var "'in'" $@18 expr_value do $@19 compstmt "'end'"  */
  ------------------
  |  Branch (8601:3): [True: 0, False: 10.4M]
  ------------------
 8602|      0|#line 2834 "mrbgems/mruby-compiler/core/parse.y"
 8603|      0|                    {
 8604|      0|                      (yyval.nd) = new_for(p, (yyvsp[-7].nd), (yyvsp[-4].nd), (yyvsp[-1].nd));
 8605|      0|                      SET_LINENO((yyval.nd), (yyvsp[-8].num));
  ------------------
  |  |  124|      0|#define SET_LINENO(c,n) ((c)->lineno = (n))
  ------------------
 8606|      0|                    }
 8607|      0|#line 8608 "mrbgems/mruby-compiler/core/y.tab.c"
 8608|      0|    break;
 8609|       |
 8610|      0|  case 330: /* @20: %empty  */
  ------------------
  |  Branch (8610:3): [True: 0, False: 10.4M]
  ------------------
 8611|      0|#line 2840 "mrbgems/mruby-compiler/core/parse.y"
 8612|      0|                    {
 8613|      0|                      if (p->in_def || p->in_single)
  ------------------
  |  Branch (8613:27): [True: 0, False: 0]
  |  Branch (8613:40): [True: 0, False: 0]
  ------------------
 8614|      0|                        yyerror(p, "class definition in method body");
 8615|      0|                      (yyval.nd) = local_switch(p);
 8616|      0|                      nvars_block(p);
 8617|      0|                    }
 8618|      0|#line 8619 "mrbgems/mruby-compiler/core/y.tab.c"
 8619|      0|    break;
 8620|       |
 8621|      0|  case 331: /* primary: "'class'" cpath superclass @20 bodystmt "'end'"  */
  ------------------
  |  Branch (8621:3): [True: 0, False: 10.4M]
  ------------------
 8622|      0|#line 2848 "mrbgems/mruby-compiler/core/parse.y"
 8623|      0|                    {
 8624|      0|                      (yyval.nd) = new_class(p, (yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd));
 8625|      0|                      SET_LINENO((yyval.nd), (yyvsp[-5].num));
  ------------------
  |  |  124|      0|#define SET_LINENO(c,n) ((c)->lineno = (n))
  ------------------
 8626|      0|                      local_resume(p, (yyvsp[-2].nd));
 8627|      0|                      nvars_unnest(p);
 8628|      0|                    }
 8629|      0|#line 8630 "mrbgems/mruby-compiler/core/y.tab.c"
 8630|      0|    break;
 8631|       |
 8632|      0|  case 332: /* @21: %empty  */
  ------------------
  |  Branch (8632:3): [True: 0, False: 10.4M]
  ------------------
 8633|      0|#line 2856 "mrbgems/mruby-compiler/core/parse.y"
 8634|      0|                    {
 8635|      0|                      (yyval.num) = p->in_def;
 8636|      0|                      p->in_def = 0;
 8637|      0|                    }
 8638|      0|#line 8639 "mrbgems/mruby-compiler/core/y.tab.c"
 8639|      0|    break;
 8640|       |
 8641|      0|  case 333: /* @22: %empty  */
  ------------------
  |  Branch (8641:3): [True: 0, False: 10.4M]
  ------------------
 8642|      0|#line 2861 "mrbgems/mruby-compiler/core/parse.y"
 8643|      0|                    {
 8644|      0|                      (yyval.nd) = cons(local_switch(p), nint(p->in_single));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
 8645|      0|                      nvars_block(p);
 8646|      0|                      p->in_single = 0;
 8647|      0|                    }
 8648|      0|#line 8649 "mrbgems/mruby-compiler/core/y.tab.c"
 8649|      0|    break;
 8650|       |
 8651|      0|  case 334: /* primary: "'class'" "<<" expr @21 term @22 bodystmt "'end'"  */
  ------------------
  |  Branch (8651:3): [True: 0, False: 10.4M]
  ------------------
 8652|      0|#line 2868 "mrbgems/mruby-compiler/core/parse.y"
 8653|      0|                    {
 8654|      0|                      (yyval.nd) = new_sclass(p, (yyvsp[-5].nd), (yyvsp[-1].nd));
 8655|      0|                      SET_LINENO((yyval.nd), (yyvsp[-7].num));
  ------------------
  |  |  124|      0|#define SET_LINENO(c,n) ((c)->lineno = (n))
  ------------------
 8656|      0|                      local_resume(p, (yyvsp[-2].nd)->car);
 8657|      0|                      nvars_unnest(p);
 8658|      0|                      p->in_def = (yyvsp[-4].num);
 8659|      0|                      p->in_single = intn((yyvsp[-2].nd)->cdr);
  ------------------
  |  |  135|      0|#define intn(x) ((int)(intptr_t)(x))
  ------------------
 8660|      0|                    }
 8661|      0|#line 8662 "mrbgems/mruby-compiler/core/y.tab.c"
 8662|      0|    break;
 8663|       |
 8664|      0|  case 335: /* @23: %empty  */
  ------------------
  |  Branch (8664:3): [True: 0, False: 10.4M]
  ------------------
 8665|      0|#line 2878 "mrbgems/mruby-compiler/core/parse.y"
 8666|      0|                    {
 8667|      0|                      if (p->in_def || p->in_single)
  ------------------
  |  Branch (8667:27): [True: 0, False: 0]
  |  Branch (8667:40): [True: 0, False: 0]
  ------------------
 8668|      0|                        yyerror(p, "module definition in method body");
 8669|      0|                      (yyval.nd) = local_switch(p);
 8670|      0|                      nvars_block(p);
 8671|      0|                    }
 8672|      0|#line 8673 "mrbgems/mruby-compiler/core/y.tab.c"
 8673|      0|    break;
 8674|       |
 8675|      0|  case 336: /* primary: "'module'" cpath @23 bodystmt "'end'"  */
  ------------------
  |  Branch (8675:3): [True: 0, False: 10.4M]
  ------------------
 8676|      0|#line 2886 "mrbgems/mruby-compiler/core/parse.y"
 8677|      0|                    {
 8678|      0|                      (yyval.nd) = new_module(p, (yyvsp[-3].nd), (yyvsp[-1].nd));
 8679|      0|                      SET_LINENO((yyval.nd), (yyvsp[-4].num));
  ------------------
  |  |  124|      0|#define SET_LINENO(c,n) ((c)->lineno = (n))
  ------------------
 8680|      0|                      local_resume(p, (yyvsp[-2].nd));
 8681|      0|                      nvars_unnest(p);
 8682|      0|                    }
 8683|      0|#line 8684 "mrbgems/mruby-compiler/core/y.tab.c"
 8684|      0|    break;
 8685|       |
 8686|    476|  case 337: /* primary: defn_head f_arglist bodystmt "'end'"  */
  ------------------
  |  Branch (8686:3): [True: 476, False: 10.4M]
  ------------------
 8687|    476|#line 2896 "mrbgems/mruby-compiler/core/parse.y"
 8688|    476|                    {
 8689|    476|                      (yyval.nd) = (yyvsp[-3].nd);
 8690|    476|                      defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[-1].nd));
 8691|    476|                      nvars_unnest(p);
 8692|    476|                      p->in_def--;
 8693|    476|                    }
 8694|    476|#line 8695 "mrbgems/mruby-compiler/core/y.tab.c"
 8695|    476|    break;
 8696|       |
 8697|      0|  case 338: /* primary: defs_head f_arglist bodystmt "'end'"  */
  ------------------
  |  Branch (8697:3): [True: 0, False: 10.4M]
  ------------------
 8698|      0|#line 2906 "mrbgems/mruby-compiler/core/parse.y"
 8699|      0|                    {
 8700|      0|                      (yyval.nd) = (yyvsp[-3].nd);
 8701|      0|                      defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[-1].nd));
 8702|      0|                      nvars_unnest(p);
 8703|      0|                      p->in_def--;
 8704|      0|                      p->in_single--;
 8705|      0|                    }
 8706|      0|#line 8707 "mrbgems/mruby-compiler/core/y.tab.c"
 8707|      0|    break;
 8708|       |
 8709|      0|  case 339: /* primary: "'break'"  */
  ------------------
  |  Branch (8709:3): [True: 0, False: 10.4M]
  ------------------
 8710|      0|#line 2914 "mrbgems/mruby-compiler/core/parse.y"
 8711|      0|                    {
 8712|      0|                      (yyval.nd) = new_break(p, 0);
 8713|      0|                    }
 8714|      0|#line 8715 "mrbgems/mruby-compiler/core/y.tab.c"
 8715|      0|    break;
 8716|       |
 8717|      0|  case 340: /* primary: "'next'"  */
  ------------------
  |  Branch (8717:3): [True: 0, False: 10.4M]
  ------------------
 8718|      0|#line 2918 "mrbgems/mruby-compiler/core/parse.y"
 8719|      0|                    {
 8720|      0|                      (yyval.nd) = new_next(p, 0);
 8721|      0|                    }
 8722|      0|#line 8723 "mrbgems/mruby-compiler/core/y.tab.c"
 8723|      0|    break;
 8724|       |
 8725|      0|  case 341: /* primary: "'redo'"  */
  ------------------
  |  Branch (8725:3): [True: 0, False: 10.4M]
  ------------------
 8726|      0|#line 2922 "mrbgems/mruby-compiler/core/parse.y"
 8727|      0|                    {
 8728|      0|                      (yyval.nd) = new_redo(p);
 8729|      0|                    }
 8730|      0|#line 8731 "mrbgems/mruby-compiler/core/y.tab.c"
 8731|      0|    break;
 8732|       |
 8733|      0|  case 342: /* primary: "'retry'"  */
  ------------------
  |  Branch (8733:3): [True: 0, False: 10.4M]
  ------------------
 8734|      0|#line 2926 "mrbgems/mruby-compiler/core/parse.y"
 8735|      0|                    {
 8736|      0|                      (yyval.nd) = new_retry(p);
 8737|      0|                    }
 8738|      0|#line 8739 "mrbgems/mruby-compiler/core/y.tab.c"
 8739|      0|    break;
 8740|       |
 8741|  66.9k|  case 343: /* primary_value: primary  */
  ------------------
  |  Branch (8741:3): [True: 66.9k, False: 10.4M]
  ------------------
 8742|  66.9k|#line 2932 "mrbgems/mruby-compiler/core/parse.y"
 8743|  66.9k|                    {
 8744|  66.9k|                      (yyval.nd) = (yyvsp[0].nd);
 8745|  66.9k|                      if (!(yyval.nd)) (yyval.nd) = new_nil(p);
  ------------------
  |  Branch (8745:27): [True: 0, False: 66.9k]
  ------------------
 8746|  66.9k|                    }
 8747|  66.9k|#line 8748 "mrbgems/mruby-compiler/core/y.tab.c"
 8748|  66.9k|    break;
 8749|       |
 8750|      0|  case 350: /* if_tail: "'elsif'" expr_value then compstmt if_tail  */
  ------------------
  |  Branch (8750:3): [True: 0, False: 10.4M]
  ------------------
 8751|      0|#line 2951 "mrbgems/mruby-compiler/core/parse.y"
 8752|      0|                    {
 8753|      0|                      (yyval.nd) = new_if(p, cond((yyvsp[-3].nd)), (yyvsp[-1].nd), (yyvsp[0].nd));
 8754|      0|                    }
 8755|      0|#line 8756 "mrbgems/mruby-compiler/core/y.tab.c"
 8756|      0|    break;
 8757|       |
 8758|  18.7k|  case 352: /* opt_else: "'else'" compstmt  */
  ------------------
  |  Branch (8758:3): [True: 18.7k, False: 10.4M]
  ------------------
 8759|  18.7k|#line 2958 "mrbgems/mruby-compiler/core/parse.y"
 8760|  18.7k|                    {
 8761|  18.7k|                      (yyval.nd) = (yyvsp[0].nd);
 8762|  18.7k|                    }
 8763|  18.7k|#line 8764 "mrbgems/mruby-compiler/core/y.tab.c"
 8764|  18.7k|    break;
 8765|       |
 8766|      0|  case 353: /* for_var: lhs  */
  ------------------
  |  Branch (8766:3): [True: 0, False: 10.4M]
  ------------------
 8767|      0|#line 2964 "mrbgems/mruby-compiler/core/parse.y"
 8768|      0|                    {
 8769|      0|                      (yyval.nd) = list1(list1((yyvsp[0].nd)));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 8770|      0|                    }
 8771|      0|#line 8772 "mrbgems/mruby-compiler/core/y.tab.c"
 8772|      0|    break;
 8773|       |
 8774|      0|  case 355: /* f_margs: f_arg  */
  ------------------
  |  Branch (8774:3): [True: 0, False: 10.4M]
  ------------------
 8775|      0|#line 2971 "mrbgems/mruby-compiler/core/parse.y"
 8776|      0|                    {
 8777|      0|                      (yyval.nd) = list3((yyvsp[0].nd),0,0);
  ------------------
  |  |  231|      0|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 8778|      0|                    }
 8779|      0|#line 8780 "mrbgems/mruby-compiler/core/y.tab.c"
 8780|      0|    break;
 8781|       |
 8782|      0|  case 356: /* f_margs: f_arg ',' "*" f_norm_arg  */
  ------------------
  |  Branch (8782:3): [True: 0, False: 10.4M]
  ------------------
 8783|      0|#line 2975 "mrbgems/mruby-compiler/core/parse.y"
 8784|      0|                    {
 8785|      0|                      (yyval.nd) = list3((yyvsp[-3].nd), new_arg(p, (yyvsp[0].id)), 0);
  ------------------
  |  |  231|      0|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 8786|      0|                    }
 8787|      0|#line 8788 "mrbgems/mruby-compiler/core/y.tab.c"
 8788|      0|    break;
 8789|       |
 8790|      0|  case 357: /* f_margs: f_arg ',' "*" f_norm_arg ',' f_arg  */
  ------------------
  |  Branch (8790:3): [True: 0, False: 10.4M]
  ------------------
 8791|      0|#line 2979 "mrbgems/mruby-compiler/core/parse.y"
 8792|      0|                    {
 8793|      0|                      (yyval.nd) = list3((yyvsp[-5].nd), new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd));
  ------------------
  |  |  231|      0|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 8794|      0|                    }
 8795|      0|#line 8796 "mrbgems/mruby-compiler/core/y.tab.c"
 8796|      0|    break;
 8797|       |
 8798|      0|  case 358: /* f_margs: f_arg ',' "*"  */
  ------------------
  |  Branch (8798:3): [True: 0, False: 10.4M]
  ------------------
 8799|      0|#line 2983 "mrbgems/mruby-compiler/core/parse.y"
 8800|      0|                    {
 8801|      0|                      local_add_f(p, intern_op(mul));
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 8802|      0|                      (yyval.nd) = list3((yyvsp[-2].nd), nint(-1), 0);
  ------------------
  |  |  231|      0|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 8803|      0|                    }
 8804|      0|#line 8805 "mrbgems/mruby-compiler/core/y.tab.c"
 8805|      0|    break;
 8806|       |
 8807|      0|  case 359: /* f_margs: f_arg ',' "*" ',' f_arg  */
  ------------------
  |  Branch (8807:3): [True: 0, False: 10.4M]
  ------------------
 8808|      0|#line 2988 "mrbgems/mruby-compiler/core/parse.y"
 8809|      0|                    {
 8810|      0|                      (yyval.nd) = list3((yyvsp[-4].nd), nint(-1), (yyvsp[0].nd));
  ------------------
  |  |  231|      0|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 8811|      0|                    }
 8812|      0|#line 8813 "mrbgems/mruby-compiler/core/y.tab.c"
 8813|      0|    break;
 8814|       |
 8815|      0|  case 360: /* f_margs: "*" f_norm_arg  */
  ------------------
  |  Branch (8815:3): [True: 0, False: 10.4M]
  ------------------
 8816|      0|#line 2992 "mrbgems/mruby-compiler/core/parse.y"
 8817|      0|                    {
 8818|      0|                      (yyval.nd) = list3(0, new_arg(p, (yyvsp[0].id)), 0);
  ------------------
  |  |  231|      0|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 8819|      0|                    }
 8820|      0|#line 8821 "mrbgems/mruby-compiler/core/y.tab.c"
 8821|      0|    break;
 8822|       |
 8823|      0|  case 361: /* f_margs: "*" f_norm_arg ',' f_arg  */
  ------------------
  |  Branch (8823:3): [True: 0, False: 10.4M]
  ------------------
 8824|      0|#line 2996 "mrbgems/mruby-compiler/core/parse.y"
 8825|      0|                    {
 8826|      0|                      (yyval.nd) = list3(0, new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd));
  ------------------
  |  |  231|      0|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 8827|      0|                    }
 8828|      0|#line 8829 "mrbgems/mruby-compiler/core/y.tab.c"
 8829|      0|    break;
 8830|       |
 8831|      0|  case 362: /* f_margs: "*"  */
  ------------------
  |  Branch (8831:3): [True: 0, False: 10.4M]
  ------------------
 8832|      0|#line 3000 "mrbgems/mruby-compiler/core/parse.y"
 8833|      0|                    {
 8834|      0|                      local_add_f(p, intern_op(mul));
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 8835|      0|                      (yyval.nd) = list3(0, nint(-1), 0);
  ------------------
  |  |  231|      0|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 8836|      0|                    }
 8837|      0|#line 8838 "mrbgems/mruby-compiler/core/y.tab.c"
 8838|      0|    break;
 8839|       |
 8840|      0|  case 363: /* $@24: %empty  */
  ------------------
  |  Branch (8840:3): [True: 0, False: 10.4M]
  ------------------
 8841|      0|#line 3005 "mrbgems/mruby-compiler/core/parse.y"
 8842|      0|                    {
 8843|      0|                      local_add_f(p, intern_op(mul));
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 8844|      0|                    }
 8845|      0|#line 8846 "mrbgems/mruby-compiler/core/y.tab.c"
 8846|      0|    break;
 8847|       |
 8848|      0|  case 364: /* f_margs: "*" ',' $@24 f_arg  */
  ------------------
  |  Branch (8848:3): [True: 0, False: 10.4M]
  ------------------
 8849|      0|#line 3009 "mrbgems/mruby-compiler/core/parse.y"
 8850|      0|                    {
 8851|      0|                      (yyval.nd) = list3(0, nint(-1), (yyvsp[0].nd));
  ------------------
  |  |  231|      0|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 8852|      0|                    }
 8853|      0|#line 8854 "mrbgems/mruby-compiler/core/y.tab.c"
 8854|      0|    break;
 8855|       |
 8856|      0|  case 365: /* block_args_tail: f_block_kwarg ',' f_kwrest opt_f_block_arg  */
  ------------------
  |  Branch (8856:3): [True: 0, False: 10.4M]
  ------------------
 8857|      0|#line 3015 "mrbgems/mruby-compiler/core/parse.y"
 8858|      0|                    {
 8859|      0|                      (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id));
 8860|      0|                    }
 8861|      0|#line 8862 "mrbgems/mruby-compiler/core/y.tab.c"
 8862|      0|    break;
 8863|       |
 8864|      0|  case 366: /* block_args_tail: f_block_kwarg opt_f_block_arg  */
  ------------------
  |  Branch (8864:3): [True: 0, False: 10.4M]
  ------------------
 8865|      0|#line 3019 "mrbgems/mruby-compiler/core/parse.y"
 8866|      0|                    {
 8867|      0|                      (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id));
 8868|      0|                    }
 8869|      0|#line 8870 "mrbgems/mruby-compiler/core/y.tab.c"
 8870|      0|    break;
 8871|       |
 8872|      0|  case 367: /* block_args_tail: f_kwrest opt_f_block_arg  */
  ------------------
  |  Branch (8872:3): [True: 0, False: 10.4M]
  ------------------
 8873|      0|#line 3023 "mrbgems/mruby-compiler/core/parse.y"
 8874|      0|                    {
 8875|      0|                      (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id));
 8876|      0|                    }
 8877|      0|#line 8878 "mrbgems/mruby-compiler/core/y.tab.c"
 8878|      0|    break;
 8879|       |
 8880|      0|  case 368: /* block_args_tail: f_block_arg  */
  ------------------
  |  Branch (8880:3): [True: 0, False: 10.4M]
  ------------------
 8881|      0|#line 3027 "mrbgems/mruby-compiler/core/parse.y"
 8882|      0|                    {
 8883|      0|                      (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id));
 8884|      0|                    }
 8885|      0|#line 8886 "mrbgems/mruby-compiler/core/y.tab.c"
 8886|      0|    break;
 8887|       |
 8888|      0|  case 369: /* opt_block_args_tail: ',' block_args_tail  */
  ------------------
  |  Branch (8888:3): [True: 0, False: 10.4M]
  ------------------
 8889|      0|#line 3033 "mrbgems/mruby-compiler/core/parse.y"
 8890|      0|                    {
 8891|      0|                      (yyval.nd) = (yyvsp[0].nd);
 8892|      0|                    }
 8893|      0|#line 8894 "mrbgems/mruby-compiler/core/y.tab.c"
 8894|      0|    break;
 8895|       |
 8896|      0|  case 370: /* opt_block_args_tail: %empty  */
  ------------------
  |  Branch (8896:3): [True: 0, False: 10.4M]
  ------------------
 8897|      0|#line 3037 "mrbgems/mruby-compiler/core/parse.y"
 8898|      0|                    {
 8899|      0|                      (yyval.nd) = new_args_tail(p, 0, 0, 0);
 8900|      0|                    }
 8901|      0|#line 8902 "mrbgems/mruby-compiler/core/y.tab.c"
 8902|      0|    break;
 8903|       |
 8904|      0|  case 371: /* block_param: f_arg ',' f_block_optarg ',' f_rest_arg opt_block_args_tail  */
  ------------------
  |  Branch (8904:3): [True: 0, False: 10.4M]
  ------------------
 8905|      0|#line 3043 "mrbgems/mruby-compiler/core/parse.y"
 8906|      0|                    {
 8907|      0|                      (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd));
 8908|      0|                    }
 8909|      0|#line 8910 "mrbgems/mruby-compiler/core/y.tab.c"
 8910|      0|    break;
 8911|       |
 8912|      0|  case 372: /* block_param: f_arg ',' f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail  */
  ------------------
  |  Branch (8912:3): [True: 0, False: 10.4M]
  ------------------
 8913|      0|#line 3047 "mrbgems/mruby-compiler/core/parse.y"
 8914|      0|                    {
 8915|      0|                      (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
 8916|      0|                    }
 8917|      0|#line 8918 "mrbgems/mruby-compiler/core/y.tab.c"
 8918|      0|    break;
 8919|       |
 8920|      0|  case 373: /* block_param: f_arg ',' f_block_optarg opt_block_args_tail  */
  ------------------
  |  Branch (8920:3): [True: 0, False: 10.4M]
  ------------------
 8921|      0|#line 3051 "mrbgems/mruby-compiler/core/parse.y"
 8922|      0|                    {
 8923|      0|                      (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd));
 8924|      0|                    }
 8925|      0|#line 8926 "mrbgems/mruby-compiler/core/y.tab.c"
 8926|      0|    break;
 8927|       |
 8928|      0|  case 374: /* block_param: f_arg ',' f_block_optarg ',' f_arg opt_block_args_tail  */
  ------------------
  |  Branch (8928:3): [True: 0, False: 10.4M]
  ------------------
 8929|      0|#line 3055 "mrbgems/mruby-compiler/core/parse.y"
 8930|      0|                    {
 8931|      0|                      (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd));
 8932|      0|                    }
 8933|      0|#line 8934 "mrbgems/mruby-compiler/core/y.tab.c"
 8934|      0|    break;
 8935|       |
 8936|      0|  case 375: /* block_param: f_arg ',' f_rest_arg opt_block_args_tail  */
  ------------------
  |  Branch (8936:3): [True: 0, False: 10.4M]
  ------------------
 8937|      0|#line 3059 "mrbgems/mruby-compiler/core/parse.y"
 8938|      0|                    {
 8939|      0|                      (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd));
 8940|      0|                    }
 8941|      0|#line 8942 "mrbgems/mruby-compiler/core/y.tab.c"
 8942|      0|    break;
 8943|       |
 8944|      0|  case 376: /* block_param: f_arg ',' opt_block_args_tail  */
  ------------------
  |  Branch (8944:3): [True: 0, False: 10.4M]
  ------------------
 8945|      0|#line 3063 "mrbgems/mruby-compiler/core/parse.y"
 8946|      0|                    {
 8947|      0|                      (yyval.nd) = new_args(p, (yyvsp[-2].nd), 0, 0, 0, (yyvsp[0].nd));
 8948|      0|                    }
 8949|      0|#line 8950 "mrbgems/mruby-compiler/core/y.tab.c"
 8950|      0|    break;
 8951|       |
 8952|      0|  case 377: /* block_param: f_arg ',' f_rest_arg ',' f_arg opt_block_args_tail  */
  ------------------
  |  Branch (8952:3): [True: 0, False: 10.4M]
  ------------------
 8953|      0|#line 3067 "mrbgems/mruby-compiler/core/parse.y"
 8954|      0|                    {
 8955|      0|                      (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
 8956|      0|                    }
 8957|      0|#line 8958 "mrbgems/mruby-compiler/core/y.tab.c"
 8958|      0|    break;
 8959|       |
 8960|      0|  case 378: /* block_param: f_arg opt_block_args_tail  */
  ------------------
  |  Branch (8960:3): [True: 0, False: 10.4M]
  ------------------
 8961|      0|#line 3071 "mrbgems/mruby-compiler/core/parse.y"
 8962|      0|                    {
 8963|      0|                      (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd));
 8964|      0|                    }
 8965|      0|#line 8966 "mrbgems/mruby-compiler/core/y.tab.c"
 8966|      0|    break;
 8967|       |
 8968|      0|  case 379: /* block_param: f_block_optarg ',' f_rest_arg opt_block_args_tail  */
  ------------------
  |  Branch (8968:3): [True: 0, False: 10.4M]
  ------------------
 8969|      0|#line 3075 "mrbgems/mruby-compiler/core/parse.y"
 8970|      0|                    {
 8971|      0|                      (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd));
 8972|      0|                    }
 8973|      0|#line 8974 "mrbgems/mruby-compiler/core/y.tab.c"
 8974|      0|    break;
 8975|       |
 8976|      0|  case 380: /* block_param: f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail  */
  ------------------
  |  Branch (8976:3): [True: 0, False: 10.4M]
  ------------------
 8977|      0|#line 3079 "mrbgems/mruby-compiler/core/parse.y"
 8978|      0|                    {
 8979|      0|                      (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
 8980|      0|                    }
 8981|      0|#line 8982 "mrbgems/mruby-compiler/core/y.tab.c"
 8982|      0|    break;
 8983|       |
 8984|      0|  case 381: /* block_param: f_block_optarg opt_block_args_tail  */
  ------------------
  |  Branch (8984:3): [True: 0, False: 10.4M]
  ------------------
 8985|      0|#line 3083 "mrbgems/mruby-compiler/core/parse.y"
 8986|      0|                    {
 8987|      0|                      (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd));
 8988|      0|                    }
 8989|      0|#line 8990 "mrbgems/mruby-compiler/core/y.tab.c"
 8990|      0|    break;
 8991|       |
 8992|      0|  case 382: /* block_param: f_block_optarg ',' f_arg opt_block_args_tail  */
  ------------------
  |  Branch (8992:3): [True: 0, False: 10.4M]
  ------------------
 8993|      0|#line 3087 "mrbgems/mruby-compiler/core/parse.y"
 8994|      0|                    {
 8995|      0|                      (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd));
 8996|      0|                    }
 8997|      0|#line 8998 "mrbgems/mruby-compiler/core/y.tab.c"
 8998|      0|    break;
 8999|       |
 9000|      0|  case 383: /* block_param: f_rest_arg opt_block_args_tail  */
  ------------------
  |  Branch (9000:3): [True: 0, False: 10.4M]
  ------------------
 9001|      0|#line 3091 "mrbgems/mruby-compiler/core/parse.y"
 9002|      0|                    {
 9003|      0|                      (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd));
 9004|      0|                    }
 9005|      0|#line 9006 "mrbgems/mruby-compiler/core/y.tab.c"
 9006|      0|    break;
 9007|       |
 9008|      0|  case 384: /* block_param: f_rest_arg ',' f_arg opt_block_args_tail  */
  ------------------
  |  Branch (9008:3): [True: 0, False: 10.4M]
  ------------------
 9009|      0|#line 3095 "mrbgems/mruby-compiler/core/parse.y"
 9010|      0|                    {
 9011|      0|                      (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
 9012|      0|                    }
 9013|      0|#line 9014 "mrbgems/mruby-compiler/core/y.tab.c"
 9014|      0|    break;
 9015|       |
 9016|      0|  case 385: /* block_param: block_args_tail  */
  ------------------
  |  Branch (9016:3): [True: 0, False: 10.4M]
  ------------------
 9017|      0|#line 3099 "mrbgems/mruby-compiler/core/parse.y"
 9018|      0|                    {
 9019|      0|                      (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd));
 9020|      0|                    }
 9021|      0|#line 9022 "mrbgems/mruby-compiler/core/y.tab.c"
 9022|      0|    break;
 9023|       |
 9024|      0|  case 386: /* opt_block_param: none  */
  ------------------
  |  Branch (9024:3): [True: 0, False: 10.4M]
  ------------------
 9025|      0|#line 3105 "mrbgems/mruby-compiler/core/parse.y"
 9026|      0|                    {
 9027|      0|                      local_add_blk(p, 0);
 9028|      0|                      (yyval.nd) = 0;
 9029|      0|                    }
 9030|      0|#line 9031 "mrbgems/mruby-compiler/core/y.tab.c"
 9031|      0|    break;
 9032|       |
 9033|      0|  case 387: /* opt_block_param: block_param_def  */
  ------------------
  |  Branch (9033:3): [True: 0, False: 10.4M]
  ------------------
 9034|      0|#line 3110 "mrbgems/mruby-compiler/core/parse.y"
 9035|      0|                   {
 9036|      0|                      p->cmd_start = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 9037|      0|                      (yyval.nd) = (yyvsp[0].nd);
 9038|      0|                    }
 9039|      0|#line 9040 "mrbgems/mruby-compiler/core/y.tab.c"
 9040|      0|    break;
 9041|       |
 9042|      0|  case 388: /* $@25: %empty  */
  ------------------
  |  Branch (9042:3): [True: 0, False: 10.4M]
  ------------------
 9043|      0|#line 3116 "mrbgems/mruby-compiler/core/parse.y"
 9044|      0|                      {local_add_blk(p, 0);}
 9045|      0|#line 9046 "mrbgems/mruby-compiler/core/y.tab.c"
 9046|      0|    break;
 9047|       |
 9048|      0|  case 389: /* block_param_def: '|' $@25 opt_bv_decl '|'  */
  ------------------
  |  Branch (9048:3): [True: 0, False: 10.4M]
  ------------------
 9049|      0|#line 3117 "mrbgems/mruby-compiler/core/parse.y"
 9050|      0|                    {
 9051|      0|                      (yyval.nd) = 0;
 9052|      0|                    }
 9053|      0|#line 9054 "mrbgems/mruby-compiler/core/y.tab.c"
 9054|      0|    break;
 9055|       |
 9056|      0|  case 390: /* block_param_def: "||"  */
  ------------------
  |  Branch (9056:3): [True: 0, False: 10.4M]
  ------------------
 9057|      0|#line 3121 "mrbgems/mruby-compiler/core/parse.y"
 9058|      0|                    {
 9059|      0|                      local_add_blk(p, 0);
 9060|      0|                      (yyval.nd) = 0;
 9061|      0|                    }
 9062|      0|#line 9063 "mrbgems/mruby-compiler/core/y.tab.c"
 9063|      0|    break;
 9064|       |
 9065|      0|  case 391: /* block_param_def: '|' block_param opt_bv_decl '|'  */
  ------------------
  |  Branch (9065:3): [True: 0, False: 10.4M]
  ------------------
 9066|      0|#line 3126 "mrbgems/mruby-compiler/core/parse.y"
 9067|      0|                    {
 9068|      0|                      (yyval.nd) = (yyvsp[-2].nd);
 9069|      0|                    }
 9070|      0|#line 9071 "mrbgems/mruby-compiler/core/y.tab.c"
 9071|      0|    break;
 9072|       |
 9073|      0|  case 392: /* opt_bv_decl: opt_nl  */
  ------------------
  |  Branch (9073:3): [True: 0, False: 10.4M]
  ------------------
 9074|      0|#line 3133 "mrbgems/mruby-compiler/core/parse.y"
 9075|      0|                    {
 9076|      0|                      (yyval.nd) = 0;
 9077|      0|                    }
 9078|      0|#line 9079 "mrbgems/mruby-compiler/core/y.tab.c"
 9079|      0|    break;
 9080|       |
 9081|      0|  case 393: /* opt_bv_decl: opt_nl ';' bv_decls opt_nl  */
  ------------------
  |  Branch (9081:3): [True: 0, False: 10.4M]
  ------------------
 9082|      0|#line 3137 "mrbgems/mruby-compiler/core/parse.y"
 9083|      0|                    {
 9084|      0|                      (yyval.nd) = 0;
 9085|      0|                    }
 9086|      0|#line 9087 "mrbgems/mruby-compiler/core/y.tab.c"
 9087|      0|    break;
 9088|       |
 9089|      0|  case 396: /* bvar: "local variable or method"  */
  ------------------
  |  Branch (9089:3): [True: 0, False: 10.4M]
  ------------------
 9090|      0|#line 3147 "mrbgems/mruby-compiler/core/parse.y"
 9091|      0|                    {
 9092|      0|                      local_add_f(p, (yyvsp[0].id));
 9093|      0|                      new_bv(p, (yyvsp[0].id));
 9094|      0|                    }
 9095|      0|#line 9096 "mrbgems/mruby-compiler/core/y.tab.c"
 9096|      0|    break;
 9097|       |
 9098|      0|  case 398: /* f_larglist: '(' f_args opt_bv_decl ')'  */
  ------------------
  |  Branch (9098:3): [True: 0, False: 10.4M]
  ------------------
 9099|      0|#line 3155 "mrbgems/mruby-compiler/core/parse.y"
 9100|      0|                    {
 9101|      0|                      (yyval.nd) = (yyvsp[-2].nd);
 9102|      0|                    }
 9103|      0|#line 9104 "mrbgems/mruby-compiler/core/y.tab.c"
 9104|      0|    break;
 9105|       |
 9106|      0|  case 399: /* f_larglist: f_args  */
  ------------------
  |  Branch (9106:3): [True: 0, False: 10.4M]
  ------------------
 9107|      0|#line 3159 "mrbgems/mruby-compiler/core/parse.y"
 9108|      0|                    {
 9109|      0|                      (yyval.nd) = (yyvsp[0].nd);
 9110|      0|                    }
 9111|      0|#line 9112 "mrbgems/mruby-compiler/core/y.tab.c"
 9112|      0|    break;
 9113|       |
 9114|      0|  case 400: /* lambda_body: tLAMBEG compstmt '}'  */
  ------------------
  |  Branch (9114:3): [True: 0, False: 10.4M]
  ------------------
 9115|      0|#line 3165 "mrbgems/mruby-compiler/core/parse.y"
 9116|      0|                    {
 9117|      0|                      (yyval.nd) = (yyvsp[-1].nd);
 9118|      0|                    }
 9119|      0|#line 9120 "mrbgems/mruby-compiler/core/y.tab.c"
 9120|      0|    break;
 9121|       |
 9122|      0|  case 401: /* lambda_body: "'do' for lambda" bodystmt "'end'"  */
  ------------------
  |  Branch (9122:3): [True: 0, False: 10.4M]
  ------------------
 9123|      0|#line 3169 "mrbgems/mruby-compiler/core/parse.y"
 9124|      0|                    {
 9125|      0|                      (yyval.nd) = (yyvsp[-1].nd);
 9126|      0|                    }
 9127|      0|#line 9128 "mrbgems/mruby-compiler/core/y.tab.c"
 9128|      0|    break;
 9129|       |
 9130|      0|  case 402: /* @26: %empty  */
  ------------------
  |  Branch (9130:3): [True: 0, False: 10.4M]
  ------------------
 9131|      0|#line 3175 "mrbgems/mruby-compiler/core/parse.y"
 9132|      0|                    {
 9133|      0|                      local_nest(p);
 9134|      0|                      nvars_nest(p);
 9135|      0|                      (yyval.num) = p->lineno;
 9136|      0|                    }
 9137|      0|#line 9138 "mrbgems/mruby-compiler/core/y.tab.c"
 9138|      0|    break;
 9139|       |
 9140|      0|  case 403: /* do_block: "'do' for block" @26 opt_block_param bodystmt "'end'"  */
  ------------------
  |  Branch (9140:3): [True: 0, False: 10.4M]
  ------------------
 9141|      0|#line 3183 "mrbgems/mruby-compiler/core/parse.y"
 9142|      0|                    {
 9143|      0|                      (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd));
 9144|      0|                      SET_LINENO((yyval.nd), (yyvsp[-3].num));
  ------------------
  |  |  124|      0|#define SET_LINENO(c,n) ((c)->lineno = (n))
  ------------------
 9145|      0|                      local_unnest(p);
 9146|      0|                      nvars_unnest(p);
 9147|      0|                    }
 9148|      0|#line 9149 "mrbgems/mruby-compiler/core/y.tab.c"
 9149|      0|    break;
 9150|       |
 9151|      0|  case 404: /* block_call: command do_block  */
  ------------------
  |  Branch (9151:3): [True: 0, False: 10.4M]
  ------------------
 9152|      0|#line 3192 "mrbgems/mruby-compiler/core/parse.y"
 9153|      0|                    {
 9154|      0|                      if (typen((yyvsp[-1].nd)->car) == NODE_YIELD) {
  ------------------
  |  |  136|      0|#define typen(x) ((enum node_type)(intptr_t)(x))
  ------------------
  |  Branch (9154:27): [True: 0, False: 0]
  ------------------
 9155|      0|                        yyerror(p, "block given to yield");
 9156|      0|                      }
 9157|      0|                      else {
 9158|      0|                        call_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd));
 9159|      0|                      }
 9160|      0|                      (yyval.nd) = (yyvsp[-1].nd);
 9161|      0|                    }
 9162|      0|#line 9163 "mrbgems/mruby-compiler/core/y.tab.c"
 9163|      0|    break;
 9164|       |
 9165|      0|  case 405: /* block_call: block_call call_op2 operation2 opt_paren_args  */
  ------------------
  |  Branch (9165:3): [True: 0, False: 10.4M]
  ------------------
 9166|      0|#line 3202 "mrbgems/mruby-compiler/core/parse.y"
 9167|      0|                    {
 9168|      0|                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num));
 9169|      0|                    }
 9170|      0|#line 9171 "mrbgems/mruby-compiler/core/y.tab.c"
 9171|      0|    break;
 9172|       |
 9173|      0|  case 406: /* block_call: block_call call_op2 operation2 opt_paren_args brace_block  */
  ------------------
  |  Branch (9173:3): [True: 0, False: 10.4M]
  ------------------
 9174|      0|#line 3206 "mrbgems/mruby-compiler/core/parse.y"
 9175|      0|                    {
 9176|      0|                      (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num));
 9177|      0|                      call_with_block(p, (yyval.nd), (yyvsp[0].nd));
 9178|      0|                    }
 9179|      0|#line 9180 "mrbgems/mruby-compiler/core/y.tab.c"
 9180|      0|    break;
 9181|       |
 9182|      0|  case 407: /* block_call: block_call call_op2 operation2 command_args do_block  */
  ------------------
  |  Branch (9182:3): [True: 0, False: 10.4M]
  ------------------
 9183|      0|#line 3211 "mrbgems/mruby-compiler/core/parse.y"
 9184|      0|                    {
 9185|      0|                      (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num));
 9186|      0|                      call_with_block(p, (yyval.nd), (yyvsp[0].nd));
 9187|      0|                    }
 9188|      0|#line 9189 "mrbgems/mruby-compiler/core/y.tab.c"
 9189|      0|    break;
 9190|       |
 9191|      0|  case 408: /* method_call: operation paren_args  */
  ------------------
  |  Branch (9191:3): [True: 0, False: 10.4M]
  ------------------
 9192|      0|#line 3218 "mrbgems/mruby-compiler/core/parse.y"
 9193|      0|                    {
 9194|      0|                      (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd));
 9195|      0|                    }
 9196|      0|#line 9197 "mrbgems/mruby-compiler/core/y.tab.c"
 9197|      0|    break;
 9198|       |
 9199|  66.1k|  case 409: /* method_call: primary_value call_op operation2 opt_paren_args  */
  ------------------
  |  Branch (9199:3): [True: 66.1k, False: 10.4M]
  ------------------
 9200|  66.1k|#line 3222 "mrbgems/mruby-compiler/core/parse.y"
 9201|  66.1k|                    {
 9202|  66.1k|                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num));
 9203|  66.1k|                    }
 9204|  66.1k|#line 9205 "mrbgems/mruby-compiler/core/y.tab.c"
 9205|  66.1k|    break;
 9206|       |
 9207|      0|  case 410: /* method_call: primary_value "::" operation2 paren_args  */
  ------------------
  |  Branch (9207:3): [True: 0, False: 10.4M]
  ------------------
 9208|      0|#line 3226 "mrbgems/mruby-compiler/core/parse.y"
 9209|      0|                    {
 9210|      0|                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2);
 9211|      0|                    }
 9212|      0|#line 9213 "mrbgems/mruby-compiler/core/y.tab.c"
 9213|      0|    break;
 9214|       |
 9215|      0|  case 411: /* method_call: primary_value "::" operation3  */
  ------------------
  |  Branch (9215:3): [True: 0, False: 10.4M]
  ------------------
 9216|      0|#line 3230 "mrbgems/mruby-compiler/core/parse.y"
 9217|      0|                    {
 9218|      0|                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2);
 9219|      0|                    }
 9220|      0|#line 9221 "mrbgems/mruby-compiler/core/y.tab.c"
 9221|      0|    break;
 9222|       |
 9223|      0|  case 412: /* method_call: primary_value call_op paren_args  */
  ------------------
  |  Branch (9223:3): [True: 0, False: 10.4M]
  ------------------
 9224|      0|#line 3234 "mrbgems/mruby-compiler/core/parse.y"
 9225|      0|                    {
 9226|      0|                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), (yyvsp[-1].num));
  ------------------
  |  |   26|      0|#define MRB_SYM_2(mrb, name) MRB_SYM__##name
  ------------------
 9227|      0|                    }
 9228|      0|#line 9229 "mrbgems/mruby-compiler/core/y.tab.c"
 9229|      0|    break;
 9230|       |
 9231|      0|  case 413: /* method_call: primary_value "::" paren_args  */
  ------------------
  |  Branch (9231:3): [True: 0, False: 10.4M]
  ------------------
 9232|      0|#line 3238 "mrbgems/mruby-compiler/core/parse.y"
 9233|      0|                    {
 9234|      0|                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), tCOLON2);
  ------------------
  |  |   26|      0|#define MRB_SYM_2(mrb, name) MRB_SYM__##name
  ------------------
 9235|      0|                    }
 9236|      0|#line 9237 "mrbgems/mruby-compiler/core/y.tab.c"
 9237|      0|    break;
 9238|       |
 9239|      0|  case 414: /* method_call: "'super'" paren_args  */
  ------------------
  |  Branch (9239:3): [True: 0, False: 10.4M]
  ------------------
 9240|      0|#line 3242 "mrbgems/mruby-compiler/core/parse.y"
 9241|      0|                    {
 9242|      0|                      (yyval.nd) = new_super(p, (yyvsp[0].nd));
 9243|      0|                    }
 9244|      0|#line 9245 "mrbgems/mruby-compiler/core/y.tab.c"
 9245|      0|    break;
 9246|       |
 9247|      0|  case 415: /* method_call: "'super'"  */
  ------------------
  |  Branch (9247:3): [True: 0, False: 10.4M]
  ------------------
 9248|      0|#line 3246 "mrbgems/mruby-compiler/core/parse.y"
 9249|      0|                    {
 9250|      0|                      (yyval.nd) = new_zsuper(p);
 9251|      0|                    }
 9252|      0|#line 9253 "mrbgems/mruby-compiler/core/y.tab.c"
 9253|      0|    break;
 9254|       |
 9255|      0|  case 416: /* method_call: primary_value '[' opt_call_args ']'  */
  ------------------
  |  Branch (9255:3): [True: 0, False: 10.4M]
  ------------------
 9256|      0|#line 3250 "mrbgems/mruby-compiler/core/parse.y"
 9257|      0|                    {
 9258|      0|                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.');
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
 9259|      0|                    }
 9260|      0|#line 9261 "mrbgems/mruby-compiler/core/y.tab.c"
 9261|      0|    break;
 9262|       |
 9263|      0|  case 417: /* @27: %empty  */
  ------------------
  |  Branch (9263:3): [True: 0, False: 10.4M]
  ------------------
 9264|      0|#line 3256 "mrbgems/mruby-compiler/core/parse.y"
 9265|      0|                    {
 9266|      0|                      local_nest(p);
 9267|      0|                      nvars_nest(p);
 9268|      0|                      (yyval.num) = p->lineno;
 9269|      0|                    }
 9270|      0|#line 9271 "mrbgems/mruby-compiler/core/y.tab.c"
 9271|      0|    break;
 9272|       |
 9273|      0|  case 418: /* brace_block: '{' @27 opt_block_param compstmt '}'  */
  ------------------
  |  Branch (9273:3): [True: 0, False: 10.4M]
  ------------------
 9274|      0|#line 3263 "mrbgems/mruby-compiler/core/parse.y"
 9275|      0|                    {
 9276|      0|                      (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd));
 9277|      0|                      SET_LINENO((yyval.nd), (yyvsp[-3].num));
  ------------------
  |  |  124|      0|#define SET_LINENO(c,n) ((c)->lineno = (n))
  ------------------
 9278|      0|                      local_unnest(p);
 9279|      0|                      nvars_unnest(p);
 9280|      0|                    }
 9281|      0|#line 9282 "mrbgems/mruby-compiler/core/y.tab.c"
 9282|      0|    break;
 9283|       |
 9284|      0|  case 419: /* @28: %empty  */
  ------------------
  |  Branch (9284:3): [True: 0, False: 10.4M]
  ------------------
 9285|      0|#line 3270 "mrbgems/mruby-compiler/core/parse.y"
 9286|      0|                    {
 9287|      0|                      local_nest(p);
 9288|      0|                      nvars_nest(p);
 9289|      0|                      (yyval.num) = p->lineno;
 9290|      0|                    }
 9291|      0|#line 9292 "mrbgems/mruby-compiler/core/y.tab.c"
 9292|      0|    break;
 9293|       |
 9294|      0|  case 420: /* brace_block: "'do'" @28 opt_block_param bodystmt "'end'"  */
  ------------------
  |  Branch (9294:3): [True: 0, False: 10.4M]
  ------------------
 9295|      0|#line 3277 "mrbgems/mruby-compiler/core/parse.y"
 9296|      0|                    {
 9297|      0|                      (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd));
 9298|      0|                      SET_LINENO((yyval.nd), (yyvsp[-3].num));
  ------------------
  |  |  124|      0|#define SET_LINENO(c,n) ((c)->lineno = (n))
  ------------------
 9299|      0|                      local_unnest(p);
 9300|      0|                      nvars_unnest(p);
 9301|      0|                    }
 9302|      0|#line 9303 "mrbgems/mruby-compiler/core/y.tab.c"
 9303|      0|    break;
 9304|       |
 9305|      0|  case 421: /* case_body: "'when'" args then compstmt cases  */
  ------------------
  |  Branch (9305:3): [True: 0, False: 10.4M]
  ------------------
 9306|      0|#line 3288 "mrbgems/mruby-compiler/core/parse.y"
 9307|      0|                    {
 9308|      0|                      (yyval.nd) = cons(cons((yyvsp[-3].nd), (yyvsp[-1].nd)), (yyvsp[0].nd));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
 9309|      0|                    }
 9310|      0|#line 9311 "mrbgems/mruby-compiler/core/y.tab.c"
 9311|      0|    break;
 9312|       |
 9313|      0|  case 422: /* cases: opt_else  */
  ------------------
  |  Branch (9313:3): [True: 0, False: 10.4M]
  ------------------
 9314|      0|#line 3294 "mrbgems/mruby-compiler/core/parse.y"
 9315|      0|                    {
 9316|      0|                      if ((yyvsp[0].nd)) {
  ------------------
  |  Branch (9316:27): [True: 0, False: 0]
  ------------------
 9317|      0|                        (yyval.nd) = cons(cons(0, (yyvsp[0].nd)), 0);
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
 9318|      0|                      }
 9319|      0|                      else {
 9320|      0|                        (yyval.nd) = 0;
 9321|      0|                      }
 9322|      0|                    }
 9323|      0|#line 9324 "mrbgems/mruby-compiler/core/y.tab.c"
 9324|      0|    break;
 9325|       |
 9326|      0|  case 424: /* opt_rescue: "'rescue'" exc_list exc_var then compstmt opt_rescue  */
  ------------------
  |  Branch (9326:3): [True: 0, False: 10.4M]
  ------------------
 9327|      0|#line 3308 "mrbgems/mruby-compiler/core/parse.y"
 9328|      0|                    {
 9329|      0|                      (yyval.nd) = list1(list3((yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd)));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 9330|      0|                      if ((yyvsp[0].nd)) (yyval.nd) = append((yyval.nd), (yyvsp[0].nd));
  ------------------
  |  |  267|      0|#define append(a,b) append_gen(p,(a),(b))
  ------------------
  |  Branch (9330:27): [True: 0, False: 0]
  ------------------
 9331|      0|                    }
 9332|      0|#line 9333 "mrbgems/mruby-compiler/core/y.tab.c"
 9333|      0|    break;
 9334|       |
 9335|      0|  case 426: /* exc_list: arg  */
  ------------------
  |  Branch (9335:3): [True: 0, False: 10.4M]
  ------------------
 9336|      0|#line 3316 "mrbgems/mruby-compiler/core/parse.y"
 9337|      0|                    {
 9338|      0|                        (yyval.nd) = list1((yyvsp[0].nd));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 9339|      0|                    }
 9340|      0|#line 9341 "mrbgems/mruby-compiler/core/y.tab.c"
 9341|      0|    break;
 9342|       |
 9343|      0|  case 429: /* exc_var: "=>" lhs  */
  ------------------
  |  Branch (9343:3): [True: 0, False: 10.4M]
  ------------------
 9344|      0|#line 3324 "mrbgems/mruby-compiler/core/parse.y"
 9345|      0|                    {
 9346|      0|                      (yyval.nd) = (yyvsp[0].nd);
 9347|      0|                    }
 9348|      0|#line 9349 "mrbgems/mruby-compiler/core/y.tab.c"
 9349|      0|    break;
 9350|       |
 9351|      0|  case 431: /* opt_ensure: "'ensure'" compstmt  */
  ------------------
  |  Branch (9351:3): [True: 0, False: 10.4M]
  ------------------
 9352|      0|#line 3331 "mrbgems/mruby-compiler/core/parse.y"
 9353|      0|                    {
 9354|      0|                      (yyval.nd) = (yyvsp[0].nd);
 9355|      0|                    }
 9356|      0|#line 9357 "mrbgems/mruby-compiler/core/y.tab.c"
 9357|      0|    break;
 9358|       |
 9359|      0|  case 438: /* string: string string_fragment  */
  ------------------
  |  Branch (9359:3): [True: 0, False: 10.4M]
  ------------------
 9360|      0|#line 3345 "mrbgems/mruby-compiler/core/parse.y"
 9361|      0|                    {
 9362|      0|                      (yyval.nd) = concat_string(p, (yyvsp[-1].nd), (yyvsp[0].nd));
 9363|      0|                    }
 9364|      0|#line 9365 "mrbgems/mruby-compiler/core/y.tab.c"
 9365|      0|    break;
 9366|       |
 9367|   328k|  case 441: /* string_fragment: "string literal" tSTRING  */
  ------------------
  |  Branch (9367:3): [True: 328k, False: 10.1M]
  ------------------
 9368|   328k|#line 3353 "mrbgems/mruby-compiler/core/parse.y"
 9369|   328k|                    {
 9370|   328k|                      (yyval.nd) = (yyvsp[0].nd);
 9371|   328k|                    }
 9372|   328k|#line 9373 "mrbgems/mruby-compiler/core/y.tab.c"
 9373|   328k|    break;
 9374|       |
 9375|      0|  case 442: /* string_fragment: "string literal" string_rep tSTRING  */
  ------------------
  |  Branch (9375:3): [True: 0, False: 10.4M]
  ------------------
 9376|      0|#line 3357 "mrbgems/mruby-compiler/core/parse.y"
 9377|      0|                    {
 9378|      0|                      node *n = (yyvsp[-1].nd);
 9379|      0|                      if (intn((yyvsp[0].nd)->cdr->cdr) > 0) {
  ------------------
  |  |  135|      0|#define intn(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (9379:27): [True: 0, False: 0]
  ------------------
 9380|      0|                        n = push(n, (yyvsp[0].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 9381|      0|                      }
 9382|      0|                      else {
 9383|      0|                        cons_free((yyvsp[0].nd));
  ------------------
  |  |  172|      0|#define cons_free(c) cons_free_gen(p, (c))
  ------------------
 9384|      0|                      }
 9385|      0|                      (yyval.nd) = new_dstr(p, n);
 9386|      0|                    }
 9387|      0|#line 9388 "mrbgems/mruby-compiler/core/y.tab.c"
 9388|      0|    break;
 9389|       |
 9390|      0|  case 444: /* string_rep: string_rep string_interp  */
  ------------------
  |  Branch (9390:3): [True: 0, False: 10.4M]
  ------------------
 9391|      0|#line 3371 "mrbgems/mruby-compiler/core/parse.y"
 9392|      0|                    {
 9393|      0|                      (yyval.nd) = append((yyvsp[-1].nd), (yyvsp[0].nd));
  ------------------
  |  |  267|      0|#define append(a,b) append_gen(p,(a),(b))
  ------------------
 9394|      0|                    }
 9395|      0|#line 9396 "mrbgems/mruby-compiler/core/y.tab.c"
 9396|      0|    break;
 9397|       |
 9398|      0|  case 445: /* string_interp: tSTRING_MID  */
  ------------------
  |  Branch (9398:3): [True: 0, False: 10.4M]
  ------------------
 9399|      0|#line 3377 "mrbgems/mruby-compiler/core/parse.y"
 9400|      0|                    {
 9401|      0|                      (yyval.nd) = list1((yyvsp[0].nd));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 9402|      0|                    }
 9403|      0|#line 9404 "mrbgems/mruby-compiler/core/y.tab.c"
 9404|      0|    break;
 9405|       |
 9406|      0|  case 446: /* @29: %empty  */
  ------------------
  |  Branch (9406:3): [True: 0, False: 10.4M]
  ------------------
 9407|      0|#line 3381 "mrbgems/mruby-compiler/core/parse.y"
 9408|      0|                    {
 9409|      0|                      (yyval.nd) = push_strterm(p);
 9410|      0|                    }
 9411|      0|#line 9412 "mrbgems/mruby-compiler/core/y.tab.c"
 9412|      0|    break;
 9413|       |
 9414|      0|  case 447: /* string_interp: tSTRING_PART @29 compstmt '}'  */
  ------------------
  |  Branch (9414:3): [True: 0, False: 10.4M]
  ------------------
 9415|      0|#line 3386 "mrbgems/mruby-compiler/core/parse.y"
 9416|      0|                    {
 9417|      0|                      pop_strterm(p,(yyvsp[-2].nd));
 9418|      0|                      (yyval.nd) = list2((yyvsp[-3].nd), (yyvsp[-1].nd));
  ------------------
  |  |  224|      0|#define list2(a,b) list2_gen(p, (a),(b))
  ------------------
 9419|      0|                    }
 9420|      0|#line 9421 "mrbgems/mruby-compiler/core/y.tab.c"
 9421|      0|    break;
 9422|       |
 9423|      0|  case 448: /* string_interp: tLITERAL_DELIM  */
  ------------------
  |  Branch (9423:3): [True: 0, False: 10.4M]
  ------------------
 9424|      0|#line 3391 "mrbgems/mruby-compiler/core/parse.y"
 9425|      0|                    {
 9426|      0|                      (yyval.nd) = list1(new_literal_delim(p));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 9427|      0|                    }
 9428|      0|#line 9429 "mrbgems/mruby-compiler/core/y.tab.c"
 9429|      0|    break;
 9430|       |
 9431|      0|  case 449: /* string_interp: tHD_LITERAL_DELIM heredoc_bodies  */
  ------------------
  |  Branch (9431:3): [True: 0, False: 10.4M]
  ------------------
 9432|      0|#line 3395 "mrbgems/mruby-compiler/core/parse.y"
 9433|      0|                    {
 9434|      0|                      (yyval.nd) = list1(new_literal_delim(p));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 9435|      0|                    }
 9436|      0|#line 9437 "mrbgems/mruby-compiler/core/y.tab.c"
 9437|      0|    break;
 9438|       |
 9439|      0|  case 450: /* xstring: tXSTRING_BEG tXSTRING  */
  ------------------
  |  Branch (9439:3): [True: 0, False: 10.4M]
  ------------------
 9440|      0|#line 3401 "mrbgems/mruby-compiler/core/parse.y"
 9441|      0|                    {
 9442|      0|                        (yyval.nd) = (yyvsp[0].nd);
 9443|      0|                    }
 9444|      0|#line 9445 "mrbgems/mruby-compiler/core/y.tab.c"
 9445|      0|    break;
 9446|       |
 9447|      0|  case 451: /* xstring: tXSTRING_BEG string_rep tXSTRING  */
  ------------------
  |  Branch (9447:3): [True: 0, False: 10.4M]
  ------------------
 9448|      0|#line 3405 "mrbgems/mruby-compiler/core/parse.y"
 9449|      0|                    {
 9450|      0|                      node *n = (yyvsp[-1].nd);
 9451|      0|                      if (intn((yyvsp[0].nd)->cdr->cdr) > 0) {
  ------------------
  |  |  135|      0|#define intn(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (9451:27): [True: 0, False: 0]
  ------------------
 9452|      0|                        n = push(n, (yyvsp[0].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 9453|      0|                      }
 9454|      0|                      else {
 9455|      0|                        cons_free((yyvsp[0].nd));
  ------------------
  |  |  172|      0|#define cons_free(c) cons_free_gen(p, (c))
  ------------------
 9456|      0|                      }
 9457|      0|                      (yyval.nd) = new_dxstr(p, n);
 9458|      0|                    }
 9459|      0|#line 9460 "mrbgems/mruby-compiler/core/y.tab.c"
 9460|      0|    break;
 9461|       |
 9462|      0|  case 452: /* regexp: tREGEXP_BEG tREGEXP  */
  ------------------
  |  Branch (9462:3): [True: 0, False: 10.4M]
  ------------------
 9463|      0|#line 3418 "mrbgems/mruby-compiler/core/parse.y"
 9464|      0|                    {
 9465|      0|                        (yyval.nd) = (yyvsp[0].nd);
 9466|      0|                    }
 9467|      0|#line 9468 "mrbgems/mruby-compiler/core/y.tab.c"
 9468|      0|    break;
 9469|       |
 9470|      0|  case 453: /* regexp: tREGEXP_BEG string_rep tREGEXP  */
  ------------------
  |  Branch (9470:3): [True: 0, False: 10.4M]
  ------------------
 9471|      0|#line 3422 "mrbgems/mruby-compiler/core/parse.y"
 9472|      0|                    {
 9473|      0|                      (yyval.nd) = new_dregx(p, (yyvsp[-1].nd), (yyvsp[0].nd));
 9474|      0|                    }
 9475|      0|#line 9476 "mrbgems/mruby-compiler/core/y.tab.c"
 9476|      0|    break;
 9477|       |
 9478|      0|  case 457: /* heredoc_body: tHEREDOC_END  */
  ------------------
  |  Branch (9478:3): [True: 0, False: 10.4M]
  ------------------
 9479|      0|#line 3435 "mrbgems/mruby-compiler/core/parse.y"
 9480|      0|                    {
 9481|      0|                      parser_heredoc_info *info = parsing_heredoc_info(p);
 9482|      0|                      info->doc = push(info->doc, new_str(p, "", 0));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 9483|      0|                      heredoc_end(p);
 9484|      0|                    }
 9485|      0|#line 9486 "mrbgems/mruby-compiler/core/y.tab.c"
 9486|      0|    break;
 9487|       |
 9488|      0|  case 458: /* heredoc_body: heredoc_string_rep tHEREDOC_END  */
  ------------------
  |  Branch (9488:3): [True: 0, False: 10.4M]
  ------------------
 9489|      0|#line 3441 "mrbgems/mruby-compiler/core/parse.y"
 9490|      0|                    {
 9491|      0|                      heredoc_end(p);
 9492|      0|                    }
 9493|      0|#line 9494 "mrbgems/mruby-compiler/core/y.tab.c"
 9494|      0|    break;
 9495|       |
 9496|      0|  case 461: /* heredoc_string_interp: tHD_STRING_MID  */
  ------------------
  |  Branch (9496:3): [True: 0, False: 10.4M]
  ------------------
 9497|      0|#line 3451 "mrbgems/mruby-compiler/core/parse.y"
 9498|      0|                    {
 9499|      0|                      parser_heredoc_info *info = parsing_heredoc_info(p);
 9500|      0|                      info->doc = push(info->doc, (yyvsp[0].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 9501|      0|                      heredoc_treat_nextline(p);
 9502|      0|                    }
 9503|      0|#line 9504 "mrbgems/mruby-compiler/core/y.tab.c"
 9504|      0|    break;
 9505|       |
 9506|      0|  case 462: /* @30: %empty  */
  ------------------
  |  Branch (9506:3): [True: 0, False: 10.4M]
  ------------------
 9507|      0|#line 3457 "mrbgems/mruby-compiler/core/parse.y"
 9508|      0|                    {
 9509|      0|                      (yyval.nd) = push_strterm(p);
 9510|      0|                    }
 9511|      0|#line 9512 "mrbgems/mruby-compiler/core/y.tab.c"
 9512|      0|    break;
 9513|       |
 9514|      0|  case 463: /* heredoc_string_interp: tHD_STRING_PART @30 compstmt '}'  */
  ------------------
  |  Branch (9514:3): [True: 0, False: 10.4M]
  ------------------
 9515|      0|#line 3462 "mrbgems/mruby-compiler/core/parse.y"
 9516|      0|                    {
 9517|      0|                      pop_strterm(p, (yyvsp[-2].nd));
 9518|      0|                      parser_heredoc_info *info = parsing_heredoc_info(p);
 9519|      0|                      info->doc = push(push(info->doc, (yyvsp[-3].nd)), (yyvsp[-1].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 9520|      0|                    }
 9521|      0|#line 9522 "mrbgems/mruby-compiler/core/y.tab.c"
 9522|      0|    break;
 9523|       |
 9524|      0|  case 464: /* words: tWORDS_BEG tSTRING  */
  ------------------
  |  Branch (9524:3): [True: 0, False: 10.4M]
  ------------------
 9525|      0|#line 3470 "mrbgems/mruby-compiler/core/parse.y"
 9526|      0|                    {
 9527|      0|                      (yyval.nd) = new_words(p, list1((yyvsp[0].nd)));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 9528|      0|                    }
 9529|      0|#line 9530 "mrbgems/mruby-compiler/core/y.tab.c"
 9530|      0|    break;
 9531|       |
 9532|      0|  case 465: /* words: tWORDS_BEG string_rep tSTRING  */
  ------------------
  |  Branch (9532:3): [True: 0, False: 10.4M]
  ------------------
 9533|      0|#line 3474 "mrbgems/mruby-compiler/core/parse.y"
 9534|      0|                    {
 9535|      0|                      node *n = (yyvsp[-1].nd);
 9536|      0|                      if (intn((yyvsp[0].nd)->cdr->cdr) > 0) {
  ------------------
  |  |  135|      0|#define intn(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (9536:27): [True: 0, False: 0]
  ------------------
 9537|      0|                        n = push(n, (yyvsp[0].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 9538|      0|                      }
 9539|      0|                      else {
 9540|      0|                        cons_free((yyvsp[0].nd));
  ------------------
  |  |  172|      0|#define cons_free(c) cons_free_gen(p, (c))
  ------------------
 9541|      0|                      }
 9542|      0|                      (yyval.nd) = new_words(p, n);
 9543|      0|                    }
 9544|      0|#line 9545 "mrbgems/mruby-compiler/core/y.tab.c"
 9545|      0|    break;
 9546|       |
 9547|      0|  case 466: /* symbol: basic_symbol  */
  ------------------
  |  Branch (9547:3): [True: 0, False: 10.4M]
  ------------------
 9548|      0|#line 3488 "mrbgems/mruby-compiler/core/parse.y"
 9549|      0|                    {
 9550|      0|                      p->lstate = EXPR_ENDARG;
 9551|      0|                      (yyval.nd) = new_sym(p, (yyvsp[0].id));
 9552|      0|                    }
 9553|      0|#line 9554 "mrbgems/mruby-compiler/core/y.tab.c"
 9554|      0|    break;
 9555|       |
 9556|      0|  case 467: /* symbol: "symbol" "string literal" string_rep tSTRING  */
  ------------------
  |  Branch (9556:3): [True: 0, False: 10.4M]
  ------------------
 9557|      0|#line 3493 "mrbgems/mruby-compiler/core/parse.y"
 9558|      0|                    {
 9559|      0|                      node *n = (yyvsp[-1].nd);
 9560|      0|                      p->lstate = EXPR_ENDARG;
 9561|      0|                      if (intn((yyvsp[0].nd)->cdr->cdr) > 0) {
  ------------------
  |  |  135|      0|#define intn(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (9561:27): [True: 0, False: 0]
  ------------------
 9562|      0|                        n = push(n, (yyvsp[0].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 9563|      0|                      }
 9564|      0|                      else {
 9565|      0|                        cons_free((yyvsp[0].nd));
  ------------------
  |  |  172|      0|#define cons_free(c) cons_free_gen(p, (c))
  ------------------
 9566|      0|                      }
 9567|      0|                      (yyval.nd) = new_dsym(p, new_dstr(p, n));
 9568|      0|                    }
 9569|      0|#line 9570 "mrbgems/mruby-compiler/core/y.tab.c"
 9570|      0|    break;
 9571|       |
 9572|      0|  case 468: /* basic_symbol: "symbol" sym  */
  ------------------
  |  Branch (9572:3): [True: 0, False: 10.4M]
  ------------------
 9573|      0|#line 3507 "mrbgems/mruby-compiler/core/parse.y"
 9574|      0|                    {
 9575|      0|                      (yyval.id) = (yyvsp[0].id);
 9576|      0|                    }
 9577|      0|#line 9578 "mrbgems/mruby-compiler/core/y.tab.c"
 9578|      0|    break;
 9579|       |
 9580|      0|  case 473: /* sym: tSTRING  */
  ------------------
  |  Branch (9580:3): [True: 0, False: 10.4M]
  ------------------
 9581|      0|#line 3517 "mrbgems/mruby-compiler/core/parse.y"
 9582|      0|                    {
 9583|      0|                      (yyval.id) = new_strsym(p, (yyvsp[0].nd));
 9584|      0|                    }
 9585|      0|#line 9586 "mrbgems/mruby-compiler/core/y.tab.c"
 9586|      0|    break;
 9587|       |
 9588|      0|  case 474: /* sym: "string literal" tSTRING  */
  ------------------
  |  Branch (9588:3): [True: 0, False: 10.4M]
  ------------------
 9589|      0|#line 3521 "mrbgems/mruby-compiler/core/parse.y"
 9590|      0|                    {
 9591|      0|                      (yyval.id) = new_strsym(p, (yyvsp[0].nd));
 9592|      0|                    }
 9593|      0|#line 9594 "mrbgems/mruby-compiler/core/y.tab.c"
 9594|      0|    break;
 9595|       |
 9596|      0|  case 475: /* symbols: tSYMBOLS_BEG tSTRING  */
  ------------------
  |  Branch (9596:3): [True: 0, False: 10.4M]
  ------------------
 9597|      0|#line 3527 "mrbgems/mruby-compiler/core/parse.y"
 9598|      0|                    {
 9599|      0|                      (yyval.nd) = new_symbols(p, list1((yyvsp[0].nd)));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 9600|      0|                    }
 9601|      0|#line 9602 "mrbgems/mruby-compiler/core/y.tab.c"
 9602|      0|    break;
 9603|       |
 9604|      0|  case 476: /* symbols: tSYMBOLS_BEG string_rep tSTRING  */
  ------------------
  |  Branch (9604:3): [True: 0, False: 10.4M]
  ------------------
 9605|      0|#line 3531 "mrbgems/mruby-compiler/core/parse.y"
 9606|      0|                    {
 9607|      0|                      node *n = (yyvsp[-1].nd);
 9608|      0|                      if (intn((yyvsp[0].nd)->cdr->cdr) > 0) {
  ------------------
  |  |  135|      0|#define intn(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (9608:27): [True: 0, False: 0]
  ------------------
 9609|      0|                        n = push(n, (yyvsp[0].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 9610|      0|                      }
 9611|      0|                      (yyval.nd) = new_symbols(p, n);
 9612|      0|                    }
 9613|      0|#line 9614 "mrbgems/mruby-compiler/core/y.tab.c"
 9614|      0|    break;
 9615|       |
 9616|      0|  case 479: /* numeric: tUMINUS_NUM "integer literal"  */
  ------------------
  |  Branch (9616:3): [True: 0, False: 10.4M]
  ------------------
 9617|      0|#line 3543 "mrbgems/mruby-compiler/core/parse.y"
 9618|      0|                    {
 9619|      0|                      (yyval.nd) = new_negate(p, (yyvsp[0].nd));
 9620|      0|                    }
 9621|      0|#line 9622 "mrbgems/mruby-compiler/core/y.tab.c"
 9622|      0|    break;
 9623|       |
 9624|      0|  case 480: /* numeric: tUMINUS_NUM "float literal"  */
  ------------------
  |  Branch (9624:3): [True: 0, False: 10.4M]
  ------------------
 9625|      0|#line 3547 "mrbgems/mruby-compiler/core/parse.y"
 9626|      0|                    {
 9627|      0|                      (yyval.nd) = new_negate(p, (yyvsp[0].nd));
 9628|      0|                    }
 9629|      0|#line 9630 "mrbgems/mruby-compiler/core/y.tab.c"
 9630|      0|    break;
 9631|       |
 9632|   179k|  case 481: /* variable: "local variable or method"  */
  ------------------
  |  Branch (9632:3): [True: 179k, False: 10.2M]
  ------------------
 9633|   179k|#line 3553 "mrbgems/mruby-compiler/core/parse.y"
 9634|   179k|                    {
 9635|   179k|                      (yyval.nd) = new_lvar(p, (yyvsp[0].id));
 9636|   179k|                    }
 9637|   179k|#line 9638 "mrbgems/mruby-compiler/core/y.tab.c"
 9638|   179k|    break;
 9639|       |
 9640|  20.9k|  case 482: /* variable: "instance variable"  */
  ------------------
  |  Branch (9640:3): [True: 20.9k, False: 10.4M]
  ------------------
 9641|  20.9k|#line 3557 "mrbgems/mruby-compiler/core/parse.y"
 9642|  20.9k|                    {
 9643|  20.9k|                      (yyval.nd) = new_ivar(p, (yyvsp[0].id));
 9644|  20.9k|                    }
 9645|  20.9k|#line 9646 "mrbgems/mruby-compiler/core/y.tab.c"
 9646|  20.9k|    break;
 9647|       |
 9648|      0|  case 483: /* variable: "global variable"  */
  ------------------
  |  Branch (9648:3): [True: 0, False: 10.4M]
  ------------------
 9649|      0|#line 3561 "mrbgems/mruby-compiler/core/parse.y"
 9650|      0|                    {
 9651|      0|                      (yyval.nd) = new_gvar(p, (yyvsp[0].id));
 9652|      0|                    }
 9653|      0|#line 9654 "mrbgems/mruby-compiler/core/y.tab.c"
 9654|      0|    break;
 9655|       |
 9656|      0|  case 484: /* variable: "class variable"  */
  ------------------
  |  Branch (9656:3): [True: 0, False: 10.4M]
  ------------------
 9657|      0|#line 3565 "mrbgems/mruby-compiler/core/parse.y"
 9658|      0|                    {
 9659|      0|                      (yyval.nd) = new_cvar(p, (yyvsp[0].id));
 9660|      0|                    }
 9661|      0|#line 9662 "mrbgems/mruby-compiler/core/y.tab.c"
 9662|      0|    break;
 9663|       |
 9664|  20.1k|  case 485: /* variable: "constant"  */
  ------------------
  |  Branch (9664:3): [True: 20.1k, False: 10.4M]
  ------------------
 9665|  20.1k|#line 3569 "mrbgems/mruby-compiler/core/parse.y"
 9666|  20.1k|                    {
 9667|  20.1k|                      (yyval.nd) = new_const(p, (yyvsp[0].id));
 9668|  20.1k|                    }
 9669|  20.1k|#line 9670 "mrbgems/mruby-compiler/core/y.tab.c"
 9670|  20.1k|    break;
 9671|       |
 9672|  20.9k|  case 486: /* var_lhs: variable  */
  ------------------
  |  Branch (9672:3): [True: 20.9k, False: 10.4M]
  ------------------
 9673|  20.9k|#line 3575 "mrbgems/mruby-compiler/core/parse.y"
 9674|  20.9k|                    {
 9675|  20.9k|                      assignable(p, (yyvsp[0].nd));
 9676|  20.9k|                    }
 9677|  20.9k|#line 9678 "mrbgems/mruby-compiler/core/y.tab.c"
 9678|  20.9k|    break;
 9679|       |
 9680|      0|  case 487: /* var_lhs: "numbered parameter"  */
  ------------------
  |  Branch (9680:3): [True: 0, False: 10.4M]
  ------------------
 9681|      0|#line 3579 "mrbgems/mruby-compiler/core/parse.y"
 9682|      0|                    {
 9683|      0|                      yyerror(p, "can't assign to numbered parameter");
 9684|      0|                    }
 9685|      0|#line 9686 "mrbgems/mruby-compiler/core/y.tab.c"
 9686|      0|    break;
 9687|       |
 9688|  79.0k|  case 488: /* var_ref: variable  */
  ------------------
  |  Branch (9688:3): [True: 79.0k, False: 10.3M]
  ------------------
 9689|  79.0k|#line 3585 "mrbgems/mruby-compiler/core/parse.y"
 9690|  79.0k|                    {
 9691|  79.0k|                      (yyval.nd) = var_reference(p, (yyvsp[0].nd));
 9692|  79.0k|                    }
 9693|  79.0k|#line 9694 "mrbgems/mruby-compiler/core/y.tab.c"
 9694|  79.0k|    break;
 9695|       |
 9696|      0|  case 489: /* var_ref: "'nil'"  */
  ------------------
  |  Branch (9696:3): [True: 0, False: 10.4M]
  ------------------
 9697|      0|#line 3589 "mrbgems/mruby-compiler/core/parse.y"
 9698|      0|                    {
 9699|      0|                      (yyval.nd) = new_nil(p);
 9700|      0|                    }
 9701|      0|#line 9702 "mrbgems/mruby-compiler/core/y.tab.c"
 9702|      0|    break;
 9703|       |
 9704|      0|  case 490: /* var_ref: "'self'"  */
  ------------------
  |  Branch (9704:3): [True: 0, False: 10.4M]
  ------------------
 9705|      0|#line 3593 "mrbgems/mruby-compiler/core/parse.y"
 9706|      0|                    {
 9707|      0|                      (yyval.nd) = new_self(p);
 9708|      0|                    }
 9709|      0|#line 9710 "mrbgems/mruby-compiler/core/y.tab.c"
 9710|      0|    break;
 9711|       |
 9712|      0|  case 491: /* var_ref: "'true'"  */
  ------------------
  |  Branch (9712:3): [True: 0, False: 10.4M]
  ------------------
 9713|      0|#line 3597 "mrbgems/mruby-compiler/core/parse.y"
 9714|      0|                    {
 9715|      0|                      (yyval.nd) = new_true(p);
 9716|      0|                    }
 9717|      0|#line 9718 "mrbgems/mruby-compiler/core/y.tab.c"
 9718|      0|    break;
 9719|       |
 9720|      0|  case 492: /* var_ref: "'false'"  */
  ------------------
  |  Branch (9720:3): [True: 0, False: 10.4M]
  ------------------
 9721|      0|#line 3601 "mrbgems/mruby-compiler/core/parse.y"
 9722|      0|                    {
 9723|      0|                      (yyval.nd) = new_false(p);
 9724|      0|                    }
 9725|      0|#line 9726 "mrbgems/mruby-compiler/core/y.tab.c"
 9726|      0|    break;
 9727|       |
 9728|      0|  case 493: /* var_ref: "'__FILE__'"  */
  ------------------
  |  Branch (9728:3): [True: 0, False: 10.4M]
  ------------------
 9729|      0|#line 3605 "mrbgems/mruby-compiler/core/parse.y"
 9730|      0|                    {
 9731|      0|                      const char *fn = mrb_sym_name_len(p->mrb, p->filename_sym, NULL);
 9732|      0|                      if (!fn) {
  ------------------
  |  Branch (9732:27): [True: 0, False: 0]
  ------------------
 9733|      0|                        fn = "(null)";
 9734|      0|                      }
 9735|      0|                      (yyval.nd) = new_str(p, fn, strlen(fn));
 9736|      0|                    }
 9737|      0|#line 9738 "mrbgems/mruby-compiler/core/y.tab.c"
 9738|      0|    break;
 9739|       |
 9740|      0|  case 494: /* var_ref: "'__LINE__'"  */
  ------------------
  |  Branch (9740:3): [True: 0, False: 10.4M]
  ------------------
 9741|      0|#line 3613 "mrbgems/mruby-compiler/core/parse.y"
 9742|      0|                    {
 9743|      0|                      char buf[16];
 9744|       |
 9745|      0|                      dump_int(p->lineno, buf);
 9746|      0|                      (yyval.nd) = new_int(p, buf, 10, 0);
 9747|      0|                    }
 9748|      0|#line 9749 "mrbgems/mruby-compiler/core/y.tab.c"
 9749|      0|    break;
 9750|       |
 9751|      0|  case 495: /* var_ref: "'__ENCODING__'"  */
  ------------------
  |  Branch (9751:3): [True: 0, False: 10.4M]
  ------------------
 9752|      0|#line 3620 "mrbgems/mruby-compiler/core/parse.y"
 9753|      0|                    {
 9754|      0|                      (yyval.nd) = new_fcall(p, MRB_SYM_2(p->mrb, __ENCODING__), 0);
  ------------------
  |  |   26|      0|#define MRB_SYM_2(mrb, name) MRB_SYM__##name
  ------------------
 9755|      0|                    }
 9756|      0|#line 9757 "mrbgems/mruby-compiler/core/y.tab.c"
 9757|      0|    break;
 9758|       |
 9759|      0|  case 498: /* superclass: %empty  */
  ------------------
  |  Branch (9759:3): [True: 0, False: 10.4M]
  ------------------
 9760|      0|#line 3630 "mrbgems/mruby-compiler/core/parse.y"
 9761|      0|                    {
 9762|      0|                      (yyval.nd) = 0;
 9763|      0|                    }
 9764|      0|#line 9765 "mrbgems/mruby-compiler/core/y.tab.c"
 9765|      0|    break;
 9766|       |
 9767|      0|  case 499: /* $@31: %empty  */
  ------------------
  |  Branch (9767:3): [True: 0, False: 10.4M]
  ------------------
 9768|      0|#line 3634 "mrbgems/mruby-compiler/core/parse.y"
 9769|      0|                    {
 9770|      0|                      p->lstate = EXPR_BEG;
 9771|      0|                      p->cmd_start = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 9772|      0|                    }
 9773|      0|#line 9774 "mrbgems/mruby-compiler/core/y.tab.c"
 9774|      0|    break;
 9775|       |
 9776|      0|  case 500: /* superclass: '<' $@31 expr_value term  */
  ------------------
  |  Branch (9776:3): [True: 0, False: 10.4M]
  ------------------
 9777|      0|#line 3639 "mrbgems/mruby-compiler/core/parse.y"
 9778|      0|                    {
 9779|      0|                      (yyval.nd) = (yyvsp[-1].nd);
 9780|      0|                    }
 9781|      0|#line 9782 "mrbgems/mruby-compiler/core/y.tab.c"
 9782|      0|    break;
 9783|       |
 9784|    476|  case 503: /* f_arglist_paren: '(' f_args rparen  */
  ------------------
  |  Branch (9784:3): [True: 476, False: 10.4M]
  ------------------
 9785|    476|#line 3655 "mrbgems/mruby-compiler/core/parse.y"
 9786|    476|                    {
 9787|    476|                      (yyval.nd) = (yyvsp[-1].nd);
 9788|    476|                      p->lstate = EXPR_BEG;
 9789|    476|                      p->cmd_start = TRUE;
  ------------------
  |  |   54|    476|#  define TRUE 1
  ------------------
 9790|    476|                    }
 9791|    476|#line 9792 "mrbgems/mruby-compiler/core/y.tab.c"
 9792|    476|    break;
 9793|       |
 9794|      0|  case 504: /* f_arglist_paren: '(' f_arg ',' tBDOT3 rparen  */
  ------------------
  |  Branch (9794:3): [True: 0, False: 10.4M]
  ------------------
 9795|      0|#line 3661 "mrbgems/mruby-compiler/core/parse.y"
 9796|      0|                    {
 9797|      0|                      (yyval.nd) = new_args_dots(p, (yyvsp[-3].nd));
 9798|      0|                    }
 9799|      0|#line 9800 "mrbgems/mruby-compiler/core/y.tab.c"
 9800|      0|    break;
 9801|       |
 9802|      0|  case 505: /* f_arglist_paren: '(' tBDOT3 rparen  */
  ------------------
  |  Branch (9802:3): [True: 0, False: 10.4M]
  ------------------
 9803|      0|#line 3665 "mrbgems/mruby-compiler/core/parse.y"
 9804|      0|                    {
 9805|      0|                      (yyval.nd) = new_args_dots(p, 0);
 9806|      0|                    }
 9807|      0|#line 9808 "mrbgems/mruby-compiler/core/y.tab.c"
 9808|      0|    break;
 9809|       |
 9810|      0|  case 507: /* f_arglist: f_args term  */
  ------------------
  |  Branch (9810:3): [True: 0, False: 10.4M]
  ------------------
 9811|      0|#line 3672 "mrbgems/mruby-compiler/core/parse.y"
 9812|      0|                    {
 9813|      0|                      (yyval.nd) = (yyvsp[-1].nd);
 9814|      0|                    }
 9815|      0|#line 9816 "mrbgems/mruby-compiler/core/y.tab.c"
 9816|      0|    break;
 9817|       |
 9818|      0|  case 508: /* f_arglist: f_arg ',' tBDOT3 term  */
  ------------------
  |  Branch (9818:3): [True: 0, False: 10.4M]
  ------------------
 9819|      0|#line 3676 "mrbgems/mruby-compiler/core/parse.y"
 9820|      0|                    {
 9821|      0|                      (yyval.nd) = new_args_dots(p, (yyvsp[-3].nd));
 9822|      0|                    }
 9823|      0|#line 9824 "mrbgems/mruby-compiler/core/y.tab.c"
 9824|      0|    break;
 9825|       |
 9826|      0|  case 509: /* f_arglist: "..." term  */
  ------------------
  |  Branch (9826:3): [True: 0, False: 10.4M]
  ------------------
 9827|      0|#line 3680 "mrbgems/mruby-compiler/core/parse.y"
 9828|      0|                    {
 9829|      0|                      (yyval.nd) = new_args_dots(p, 0);
 9830|      0|                    }
 9831|      0|#line 9832 "mrbgems/mruby-compiler/core/y.tab.c"
 9832|      0|    break;
 9833|       |
 9834|      0|  case 510: /* f_label: "local variable or method" "label"  */
  ------------------
  |  Branch (9834:3): [True: 0, False: 10.4M]
  ------------------
 9835|      0|#line 3686 "mrbgems/mruby-compiler/core/parse.y"
 9836|      0|                    {
 9837|      0|                      local_nest(p);
 9838|      0|                    }
 9839|      0|#line 9840 "mrbgems/mruby-compiler/core/y.tab.c"
 9840|      0|    break;
 9841|       |
 9842|      0|  case 511: /* f_label: "numbered parameter" "label"  */
  ------------------
  |  Branch (9842:3): [True: 0, False: 10.4M]
  ------------------
 9843|      0|#line 3690 "mrbgems/mruby-compiler/core/parse.y"
 9844|      0|                    {
 9845|      0|                      local_nest(p);
 9846|      0|                    }
 9847|      0|#line 9848 "mrbgems/mruby-compiler/core/y.tab.c"
 9848|      0|    break;
 9849|       |
 9850|      0|  case 512: /* f_kw: f_label arg  */
  ------------------
  |  Branch (9850:3): [True: 0, False: 10.4M]
  ------------------
 9851|      0|#line 3696 "mrbgems/mruby-compiler/core/parse.y"
 9852|      0|                    {
 9853|      0|                      void_expr_error(p, (yyvsp[0].nd));
 9854|      0|                      (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p)));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
 9855|      0|                      local_unnest(p);
 9856|      0|                    }
 9857|      0|#line 9858 "mrbgems/mruby-compiler/core/y.tab.c"
 9858|      0|    break;
 9859|       |
 9860|      0|  case 513: /* f_kw: f_label  */
  ------------------
  |  Branch (9860:3): [True: 0, False: 10.4M]
  ------------------
 9861|      0|#line 3702 "mrbgems/mruby-compiler/core/parse.y"
 9862|      0|                    {
 9863|      0|                      (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0);
 9864|      0|                      local_unnest(p);
 9865|      0|                    }
 9866|      0|#line 9867 "mrbgems/mruby-compiler/core/y.tab.c"
 9867|      0|    break;
 9868|       |
 9869|      0|  case 514: /* f_block_kw: f_label primary_value  */
  ------------------
  |  Branch (9869:3): [True: 0, False: 10.4M]
  ------------------
 9870|      0|#line 3709 "mrbgems/mruby-compiler/core/parse.y"
 9871|      0|                    {
 9872|      0|                      void_expr_error(p, (yyvsp[0].nd));
 9873|      0|                      (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p)));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
 9874|      0|                      local_unnest(p);
 9875|      0|                    }
 9876|      0|#line 9877 "mrbgems/mruby-compiler/core/y.tab.c"
 9877|      0|    break;
 9878|       |
 9879|      0|  case 515: /* f_block_kw: f_label  */
  ------------------
  |  Branch (9879:3): [True: 0, False: 10.4M]
  ------------------
 9880|      0|#line 3715 "mrbgems/mruby-compiler/core/parse.y"
 9881|      0|                    {
 9882|      0|                      (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0);
 9883|      0|                      local_unnest(p);
 9884|      0|                    }
 9885|      0|#line 9886 "mrbgems/mruby-compiler/core/y.tab.c"
 9886|      0|    break;
 9887|       |
 9888|      0|  case 516: /* f_block_kwarg: f_block_kw  */
  ------------------
  |  Branch (9888:3): [True: 0, False: 10.4M]
  ------------------
 9889|      0|#line 3722 "mrbgems/mruby-compiler/core/parse.y"
 9890|      0|                    {
 9891|      0|                      (yyval.nd) = list1((yyvsp[0].nd));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 9892|      0|                    }
 9893|      0|#line 9894 "mrbgems/mruby-compiler/core/y.tab.c"
 9894|      0|    break;
 9895|       |
 9896|      0|  case 517: /* f_block_kwarg: f_block_kwarg ',' f_block_kw  */
  ------------------
  |  Branch (9896:3): [True: 0, False: 10.4M]
  ------------------
 9897|      0|#line 3726 "mrbgems/mruby-compiler/core/parse.y"
 9898|      0|                    {
 9899|      0|                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 9900|      0|                    }
 9901|      0|#line 9902 "mrbgems/mruby-compiler/core/y.tab.c"
 9902|      0|    break;
 9903|       |
 9904|      0|  case 518: /* f_kwarg: f_kw  */
  ------------------
  |  Branch (9904:3): [True: 0, False: 10.4M]
  ------------------
 9905|      0|#line 3732 "mrbgems/mruby-compiler/core/parse.y"
 9906|      0|                    {
 9907|      0|                      (yyval.nd) = list1((yyvsp[0].nd));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
 9908|      0|                    }
 9909|      0|#line 9910 "mrbgems/mruby-compiler/core/y.tab.c"
 9910|      0|    break;
 9911|       |
 9912|      0|  case 519: /* f_kwarg: f_kwarg ',' f_kw  */
  ------------------
  |  Branch (9912:3): [True: 0, False: 10.4M]
  ------------------
 9913|      0|#line 3736 "mrbgems/mruby-compiler/core/parse.y"
 9914|      0|                    {
 9915|      0|                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
 9916|      0|                    }
 9917|      0|#line 9918 "mrbgems/mruby-compiler/core/y.tab.c"
 9918|      0|    break;
 9919|       |
 9920|      0|  case 522: /* f_kwrest: kwrest_mark "local variable or method"  */
  ------------------
  |  Branch (9920:3): [True: 0, False: 10.4M]
  ------------------
 9921|      0|#line 3746 "mrbgems/mruby-compiler/core/parse.y"
 9922|      0|                    {
 9923|      0|                      (yyval.nd) = new_kw_rest_args(p, (yyvsp[0].id));
 9924|      0|                    }
 9925|      0|#line 9926 "mrbgems/mruby-compiler/core/y.tab.c"
 9926|      0|    break;
 9927|       |
 9928|      0|  case 523: /* f_kwrest: kwrest_mark  */
  ------------------
  |  Branch (9928:3): [True: 0, False: 10.4M]
  ------------------
 9929|      0|#line 3750 "mrbgems/mruby-compiler/core/parse.y"
 9930|      0|                    {
 9931|      0|                      (yyval.nd) = new_kw_rest_args(p, 0);
 9932|      0|                    }
 9933|      0|#line 9934 "mrbgems/mruby-compiler/core/y.tab.c"
 9934|      0|    break;
 9935|       |
 9936|      0|  case 524: /* args_tail: f_kwarg ',' f_kwrest opt_f_block_arg  */
  ------------------
  |  Branch (9936:3): [True: 0, False: 10.4M]
  ------------------
 9937|      0|#line 3756 "mrbgems/mruby-compiler/core/parse.y"
 9938|      0|                    {
 9939|      0|                      (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id));
 9940|      0|                    }
 9941|      0|#line 9942 "mrbgems/mruby-compiler/core/y.tab.c"
 9942|      0|    break;
 9943|       |
 9944|      0|  case 525: /* args_tail: f_kwarg opt_f_block_arg  */
  ------------------
  |  Branch (9944:3): [True: 0, False: 10.4M]
  ------------------
 9945|      0|#line 3760 "mrbgems/mruby-compiler/core/parse.y"
 9946|      0|                    {
 9947|      0|                      (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id));
 9948|      0|                    }
 9949|      0|#line 9950 "mrbgems/mruby-compiler/core/y.tab.c"
 9950|      0|    break;
 9951|       |
 9952|      0|  case 526: /* args_tail: f_kwrest opt_f_block_arg  */
  ------------------
  |  Branch (9952:3): [True: 0, False: 10.4M]
  ------------------
 9953|      0|#line 3764 "mrbgems/mruby-compiler/core/parse.y"
 9954|      0|                    {
 9955|      0|                      (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id));
 9956|      0|                    }
 9957|      0|#line 9958 "mrbgems/mruby-compiler/core/y.tab.c"
 9958|      0|    break;
 9959|       |
 9960|      0|  case 527: /* args_tail: f_block_arg  */
  ------------------
  |  Branch (9960:3): [True: 0, False: 10.4M]
  ------------------
 9961|      0|#line 3768 "mrbgems/mruby-compiler/core/parse.y"
 9962|      0|                    {
 9963|      0|                      (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id));
 9964|      0|                    }
 9965|      0|#line 9966 "mrbgems/mruby-compiler/core/y.tab.c"
 9966|      0|    break;
 9967|       |
 9968|      0|  case 528: /* opt_args_tail: ',' args_tail  */
  ------------------
  |  Branch (9968:3): [True: 0, False: 10.4M]
  ------------------
 9969|      0|#line 3774 "mrbgems/mruby-compiler/core/parse.y"
 9970|      0|                    {
 9971|      0|                      (yyval.nd) = (yyvsp[0].nd);
 9972|      0|                    }
 9973|      0|#line 9974 "mrbgems/mruby-compiler/core/y.tab.c"
 9974|      0|    break;
 9975|       |
 9976|      0|  case 529: /* opt_args_tail: %empty  */
  ------------------
  |  Branch (9976:3): [True: 0, False: 10.4M]
  ------------------
 9977|      0|#line 3778 "mrbgems/mruby-compiler/core/parse.y"
 9978|      0|                    {
 9979|      0|                      (yyval.nd) = new_args_tail(p, 0, 0, 0);
 9980|      0|                    }
 9981|      0|#line 9982 "mrbgems/mruby-compiler/core/y.tab.c"
 9982|      0|    break;
 9983|       |
 9984|      0|  case 530: /* f_args: f_arg ',' f_optarg ',' f_rest_arg opt_args_tail  */
  ------------------
  |  Branch (9984:3): [True: 0, False: 10.4M]
  ------------------
 9985|      0|#line 3784 "mrbgems/mruby-compiler/core/parse.y"
 9986|      0|                    {
 9987|      0|                      (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd));
 9988|      0|                    }
 9989|      0|#line 9990 "mrbgems/mruby-compiler/core/y.tab.c"
 9990|      0|    break;
 9991|       |
 9992|      0|  case 531: /* f_args: f_arg ',' f_optarg ',' f_rest_arg ',' f_arg opt_args_tail  */
  ------------------
  |  Branch (9992:3): [True: 0, False: 10.4M]
  ------------------
 9993|      0|#line 3788 "mrbgems/mruby-compiler/core/parse.y"
 9994|      0|                    {
 9995|      0|                      (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
 9996|      0|                    }
 9997|      0|#line 9998 "mrbgems/mruby-compiler/core/y.tab.c"
 9998|      0|    break;
 9999|       |
10000|      0|  case 532: /* f_args: f_arg ',' f_optarg opt_args_tail  */
  ------------------
  |  Branch (10000:3): [True: 0, False: 10.4M]
  ------------------
10001|      0|#line 3792 "mrbgems/mruby-compiler/core/parse.y"
10002|      0|                    {
10003|      0|                      (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd));
10004|      0|                    }
10005|      0|#line 10006 "mrbgems/mruby-compiler/core/y.tab.c"
10006|      0|    break;
10007|       |
10008|      0|  case 533: /* f_args: f_arg ',' f_optarg ',' f_arg opt_args_tail  */
  ------------------
  |  Branch (10008:3): [True: 0, False: 10.4M]
  ------------------
10009|      0|#line 3796 "mrbgems/mruby-compiler/core/parse.y"
10010|      0|                    {
10011|      0|                      (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd));
10012|      0|                    }
10013|      0|#line 10014 "mrbgems/mruby-compiler/core/y.tab.c"
10014|      0|    break;
10015|       |
10016|      0|  case 534: /* f_args: f_arg ',' f_rest_arg opt_args_tail  */
  ------------------
  |  Branch (10016:3): [True: 0, False: 10.4M]
  ------------------
10017|      0|#line 3800 "mrbgems/mruby-compiler/core/parse.y"
10018|      0|                    {
10019|      0|                      (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd));
10020|      0|                    }
10021|      0|#line 10022 "mrbgems/mruby-compiler/core/y.tab.c"
10022|      0|    break;
10023|       |
10024|      0|  case 535: /* f_args: f_arg ',' f_rest_arg ',' f_arg opt_args_tail  */
  ------------------
  |  Branch (10024:3): [True: 0, False: 10.4M]
  ------------------
10025|      0|#line 3804 "mrbgems/mruby-compiler/core/parse.y"
10026|      0|                    {
10027|      0|                      (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
10028|      0|                    }
10029|      0|#line 10030 "mrbgems/mruby-compiler/core/y.tab.c"
10030|      0|    break;
10031|       |
10032|      0|  case 536: /* f_args: f_arg opt_args_tail  */
  ------------------
  |  Branch (10032:3): [True: 0, False: 10.4M]
  ------------------
10033|      0|#line 3808 "mrbgems/mruby-compiler/core/parse.y"
10034|      0|                    {
10035|      0|                      (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd));
10036|      0|                    }
10037|      0|#line 10038 "mrbgems/mruby-compiler/core/y.tab.c"
10038|      0|    break;
10039|       |
10040|      0|  case 537: /* f_args: f_optarg ',' f_rest_arg opt_args_tail  */
  ------------------
  |  Branch (10040:3): [True: 0, False: 10.4M]
  ------------------
10041|      0|#line 3812 "mrbgems/mruby-compiler/core/parse.y"
10042|      0|                    {
10043|      0|                      (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd));
10044|      0|                    }
10045|      0|#line 10046 "mrbgems/mruby-compiler/core/y.tab.c"
10046|      0|    break;
10047|       |
10048|      0|  case 538: /* f_args: f_optarg ',' f_rest_arg ',' f_arg opt_args_tail  */
  ------------------
  |  Branch (10048:3): [True: 0, False: 10.4M]
  ------------------
10049|      0|#line 3816 "mrbgems/mruby-compiler/core/parse.y"
10050|      0|                    {
10051|      0|                      (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
10052|      0|                    }
10053|      0|#line 10054 "mrbgems/mruby-compiler/core/y.tab.c"
10054|      0|    break;
10055|       |
10056|      0|  case 539: /* f_args: f_optarg opt_args_tail  */
  ------------------
  |  Branch (10056:3): [True: 0, False: 10.4M]
  ------------------
10057|      0|#line 3820 "mrbgems/mruby-compiler/core/parse.y"
10058|      0|                    {
10059|      0|                      (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd));
10060|      0|                    }
10061|      0|#line 10062 "mrbgems/mruby-compiler/core/y.tab.c"
10062|      0|    break;
10063|       |
10064|      0|  case 540: /* f_args: f_optarg ',' f_arg opt_args_tail  */
  ------------------
  |  Branch (10064:3): [True: 0, False: 10.4M]
  ------------------
10065|      0|#line 3824 "mrbgems/mruby-compiler/core/parse.y"
10066|      0|                    {
10067|      0|                      (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd));
10068|      0|                    }
10069|      0|#line 10070 "mrbgems/mruby-compiler/core/y.tab.c"
10070|      0|    break;
10071|       |
10072|      0|  case 541: /* f_args: f_rest_arg opt_args_tail  */
  ------------------
  |  Branch (10072:3): [True: 0, False: 10.4M]
  ------------------
10073|      0|#line 3828 "mrbgems/mruby-compiler/core/parse.y"
10074|      0|                    {
10075|      0|                      (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd));
10076|      0|                    }
10077|      0|#line 10078 "mrbgems/mruby-compiler/core/y.tab.c"
10078|      0|    break;
10079|       |
10080|      0|  case 542: /* f_args: f_rest_arg ',' f_arg opt_args_tail  */
  ------------------
  |  Branch (10080:3): [True: 0, False: 10.4M]
  ------------------
10081|      0|#line 3832 "mrbgems/mruby-compiler/core/parse.y"
10082|      0|                    {
10083|      0|                      (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
10084|      0|                    }
10085|      0|#line 10086 "mrbgems/mruby-compiler/core/y.tab.c"
10086|      0|    break;
10087|       |
10088|      0|  case 543: /* f_args: args_tail  */
  ------------------
  |  Branch (10088:3): [True: 0, False: 10.4M]
  ------------------
10089|      0|#line 3836 "mrbgems/mruby-compiler/core/parse.y"
10090|      0|                    {
10091|      0|                      (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd));
10092|      0|                    }
10093|      0|#line 10094 "mrbgems/mruby-compiler/core/y.tab.c"
10094|      0|    break;
10095|       |
10096|    476|  case 544: /* f_args: %empty  */
  ------------------
  |  Branch (10096:3): [True: 476, False: 10.4M]
  ------------------
10097|    476|#line 3840 "mrbgems/mruby-compiler/core/parse.y"
10098|    476|                    {
10099|    476|                      local_add_f(p, 0);
10100|    476|                      (yyval.nd) = new_args(p, 0, 0, 0, 0, 0);
10101|    476|                    }
10102|    476|#line 10103 "mrbgems/mruby-compiler/core/y.tab.c"
10103|    476|    break;
10104|       |
10105|      0|  case 545: /* f_bad_arg: "constant"  */
  ------------------
  |  Branch (10105:3): [True: 0, False: 10.4M]
  ------------------
10106|      0|#line 3847 "mrbgems/mruby-compiler/core/parse.y"
10107|      0|                    {
10108|      0|                      yyerror(p, "formal argument cannot be a constant");
10109|      0|                      (yyval.nd) = 0;
10110|      0|                    }
10111|      0|#line 10112 "mrbgems/mruby-compiler/core/y.tab.c"
10112|      0|    break;
10113|       |
10114|      0|  case 546: /* f_bad_arg: "instance variable"  */
  ------------------
  |  Branch (10114:3): [True: 0, False: 10.4M]
  ------------------
10115|      0|#line 3852 "mrbgems/mruby-compiler/core/parse.y"
10116|      0|                    {
10117|      0|                      yyerror(p, "formal argument cannot be an instance variable");
10118|      0|                      (yyval.nd) = 0;
10119|      0|                    }
10120|      0|#line 10121 "mrbgems/mruby-compiler/core/y.tab.c"
10121|      0|    break;
10122|       |
10123|      0|  case 547: /* f_bad_arg: "global variable"  */
  ------------------
  |  Branch (10123:3): [True: 0, False: 10.4M]
  ------------------
10124|      0|#line 3857 "mrbgems/mruby-compiler/core/parse.y"
10125|      0|                    {
10126|      0|                      yyerror(p, "formal argument cannot be a global variable");
10127|      0|                      (yyval.nd) = 0;
10128|      0|                    }
10129|      0|#line 10130 "mrbgems/mruby-compiler/core/y.tab.c"
10130|      0|    break;
10131|       |
10132|      0|  case 548: /* f_bad_arg: "class variable"  */
  ------------------
  |  Branch (10132:3): [True: 0, False: 10.4M]
  ------------------
10133|      0|#line 3862 "mrbgems/mruby-compiler/core/parse.y"
10134|      0|                    {
10135|      0|                      yyerror(p, "formal argument cannot be a class variable");
10136|      0|                      (yyval.nd) = 0;
10137|      0|                    }
10138|      0|#line 10139 "mrbgems/mruby-compiler/core/y.tab.c"
10139|      0|    break;
10140|       |
10141|      0|  case 549: /* f_bad_arg: "numbered parameter"  */
  ------------------
  |  Branch (10141:3): [True: 0, False: 10.4M]
  ------------------
10142|      0|#line 3867 "mrbgems/mruby-compiler/core/parse.y"
10143|      0|                    {
10144|      0|                      yyerror(p, "formal argument cannot be a numbered parameter");
10145|      0|                      (yyval.nd) = 0;
10146|      0|                    }
10147|      0|#line 10148 "mrbgems/mruby-compiler/core/y.tab.c"
10148|      0|    break;
10149|       |
10150|      0|  case 550: /* f_norm_arg: f_bad_arg  */
  ------------------
  |  Branch (10150:3): [True: 0, False: 10.4M]
  ------------------
10151|      0|#line 3874 "mrbgems/mruby-compiler/core/parse.y"
10152|      0|                    {
10153|      0|                      (yyval.id) = 0;
10154|      0|                    }
10155|      0|#line 10156 "mrbgems/mruby-compiler/core/y.tab.c"
10156|      0|    break;
10157|       |
10158|      0|  case 551: /* f_norm_arg: "local variable or method"  */
  ------------------
  |  Branch (10158:3): [True: 0, False: 10.4M]
  ------------------
10159|      0|#line 3878 "mrbgems/mruby-compiler/core/parse.y"
10160|      0|                    {
10161|      0|                      local_add_f(p, (yyvsp[0].id));
10162|      0|                      (yyval.id) = (yyvsp[0].id);
10163|      0|                    }
10164|      0|#line 10165 "mrbgems/mruby-compiler/core/y.tab.c"
10165|      0|    break;
10166|       |
10167|      0|  case 552: /* f_arg_item: f_norm_arg  */
  ------------------
  |  Branch (10167:3): [True: 0, False: 10.4M]
  ------------------
10168|      0|#line 3885 "mrbgems/mruby-compiler/core/parse.y"
10169|      0|                    {
10170|      0|                      (yyval.nd) = new_arg(p, (yyvsp[0].id));
10171|      0|                    }
10172|      0|#line 10173 "mrbgems/mruby-compiler/core/y.tab.c"
10173|      0|    break;
10174|       |
10175|      0|  case 553: /* @32: %empty  */
  ------------------
  |  Branch (10175:3): [True: 0, False: 10.4M]
  ------------------
10176|      0|#line 3889 "mrbgems/mruby-compiler/core/parse.y"
10177|      0|                    {
10178|      0|                      (yyval.nd) = local_switch(p);
10179|      0|                    }
10180|      0|#line 10181 "mrbgems/mruby-compiler/core/y.tab.c"
10181|      0|    break;
10182|       |
10183|      0|  case 554: /* f_arg_item: tLPAREN @32 f_margs rparen  */
  ------------------
  |  Branch (10183:3): [True: 0, False: 10.4M]
  ------------------
10184|      0|#line 3893 "mrbgems/mruby-compiler/core/parse.y"
10185|      0|                    {
10186|      0|                      (yyval.nd) = new_masgn_param(p, (yyvsp[-1].nd), p->locals->car);
10187|      0|                      local_resume(p, (yyvsp[-2].nd));
10188|      0|                      local_add_f(p, 0);
10189|      0|                    }
10190|      0|#line 10191 "mrbgems/mruby-compiler/core/y.tab.c"
10191|      0|    break;
10192|       |
10193|      0|  case 555: /* f_arg: f_arg_item  */
  ------------------
  |  Branch (10193:3): [True: 0, False: 10.4M]
  ------------------
10194|      0|#line 3901 "mrbgems/mruby-compiler/core/parse.y"
10195|      0|                    {
10196|      0|                      (yyval.nd) = list1((yyvsp[0].nd));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
10197|      0|                    }
10198|      0|#line 10199 "mrbgems/mruby-compiler/core/y.tab.c"
10199|      0|    break;
10200|       |
10201|      0|  case 556: /* f_arg: f_arg ',' f_arg_item  */
  ------------------
  |  Branch (10201:3): [True: 0, False: 10.4M]
  ------------------
10202|      0|#line 3905 "mrbgems/mruby-compiler/core/parse.y"
10203|      0|                    {
10204|      0|                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
10205|      0|                    }
10206|      0|#line 10207 "mrbgems/mruby-compiler/core/y.tab.c"
10207|      0|    break;
10208|       |
10209|      0|  case 557: /* f_opt_asgn: "local variable or method" '='  */
  ------------------
  |  Branch (10209:3): [True: 0, False: 10.4M]
  ------------------
10210|      0|#line 3911 "mrbgems/mruby-compiler/core/parse.y"
10211|      0|                    {
10212|      0|                      local_add_f(p, (yyvsp[-1].id));
10213|      0|                      local_nest(p);
10214|      0|                      (yyval.id) = (yyvsp[-1].id);
10215|      0|                    }
10216|      0|#line 10217 "mrbgems/mruby-compiler/core/y.tab.c"
10217|      0|    break;
10218|       |
10219|      0|  case 558: /* f_opt: f_opt_asgn arg  */
  ------------------
  |  Branch (10219:3): [True: 0, False: 10.4M]
  ------------------
10220|      0|#line 3919 "mrbgems/mruby-compiler/core/parse.y"
10221|      0|                    {
10222|      0|                      void_expr_error(p, (yyvsp[0].nd));
10223|      0|                      (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p)));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
10224|      0|                      local_unnest(p);
10225|      0|                    }
10226|      0|#line 10227 "mrbgems/mruby-compiler/core/y.tab.c"
10227|      0|    break;
10228|       |
10229|      0|  case 559: /* f_block_opt: f_opt_asgn primary_value  */
  ------------------
  |  Branch (10229:3): [True: 0, False: 10.4M]
  ------------------
10230|      0|#line 3927 "mrbgems/mruby-compiler/core/parse.y"
10231|      0|                    {
10232|      0|                      void_expr_error(p, (yyvsp[0].nd));
10233|      0|                      (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p)));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
10234|      0|                      local_unnest(p);
10235|      0|                    }
10236|      0|#line 10237 "mrbgems/mruby-compiler/core/y.tab.c"
10237|      0|    break;
10238|       |
10239|      0|  case 560: /* f_block_optarg: f_block_opt  */
  ------------------
  |  Branch (10239:3): [True: 0, False: 10.4M]
  ------------------
10240|      0|#line 3935 "mrbgems/mruby-compiler/core/parse.y"
10241|      0|                    {
10242|      0|                      (yyval.nd) = list1((yyvsp[0].nd));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
10243|      0|                    }
10244|      0|#line 10245 "mrbgems/mruby-compiler/core/y.tab.c"
10245|      0|    break;
10246|       |
10247|      0|  case 561: /* f_block_optarg: f_block_optarg ',' f_block_opt  */
  ------------------
  |  Branch (10247:3): [True: 0, False: 10.4M]
  ------------------
10248|      0|#line 3939 "mrbgems/mruby-compiler/core/parse.y"
10249|      0|                    {
10250|      0|                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
10251|      0|                    }
10252|      0|#line 10253 "mrbgems/mruby-compiler/core/y.tab.c"
10253|      0|    break;
10254|       |
10255|      0|  case 562: /* f_optarg: f_opt  */
  ------------------
  |  Branch (10255:3): [True: 0, False: 10.4M]
  ------------------
10256|      0|#line 3945 "mrbgems/mruby-compiler/core/parse.y"
10257|      0|                    {
10258|      0|                      (yyval.nd) = list1((yyvsp[0].nd));
  ------------------
  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  ------------------
10259|      0|                    }
10260|      0|#line 10261 "mrbgems/mruby-compiler/core/y.tab.c"
10261|      0|    break;
10262|       |
10263|      0|  case 563: /* f_optarg: f_optarg ',' f_opt  */
  ------------------
  |  Branch (10263:3): [True: 0, False: 10.4M]
  ------------------
10264|      0|#line 3949 "mrbgems/mruby-compiler/core/parse.y"
10265|      0|                    {
10266|      0|                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
10267|      0|                    }
10268|      0|#line 10269 "mrbgems/mruby-compiler/core/y.tab.c"
10269|      0|    break;
10270|       |
10271|      0|  case 566: /* f_rest_arg: restarg_mark "local variable or method"  */
  ------------------
  |  Branch (10271:3): [True: 0, False: 10.4M]
  ------------------
10272|      0|#line 3959 "mrbgems/mruby-compiler/core/parse.y"
10273|      0|                    {
10274|      0|                      local_add_f(p, (yyvsp[0].id));
10275|      0|                      (yyval.id) = (yyvsp[0].id);
10276|      0|                    }
10277|      0|#line 10278 "mrbgems/mruby-compiler/core/y.tab.c"
10278|      0|    break;
10279|       |
10280|      0|  case 567: /* f_rest_arg: restarg_mark  */
  ------------------
  |  Branch (10280:3): [True: 0, False: 10.4M]
  ------------------
10281|      0|#line 3964 "mrbgems/mruby-compiler/core/parse.y"
10282|      0|                    {
10283|      0|                      (yyval.id) = intern_op(mul);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
10284|      0|                      local_add_f(p, (yyval.id));
10285|      0|                    }
10286|      0|#line 10287 "mrbgems/mruby-compiler/core/y.tab.c"
10287|      0|    break;
10288|       |
10289|      0|  case 570: /* f_block_arg: blkarg_mark "local variable or method"  */
  ------------------
  |  Branch (10289:3): [True: 0, False: 10.4M]
  ------------------
10290|      0|#line 3975 "mrbgems/mruby-compiler/core/parse.y"
10291|      0|                    {
10292|      0|                      (yyval.id) = (yyvsp[0].id);
10293|      0|                    }
10294|      0|#line 10295 "mrbgems/mruby-compiler/core/y.tab.c"
10295|      0|    break;
10296|       |
10297|      0|  case 571: /* f_block_arg: blkarg_mark  */
  ------------------
  |  Branch (10297:3): [True: 0, False: 10.4M]
  ------------------
10298|      0|#line 3979 "mrbgems/mruby-compiler/core/parse.y"
10299|      0|                    {
10300|      0|                      (yyval.id) = intern_op(and);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
10301|      0|                    }
10302|      0|#line 10303 "mrbgems/mruby-compiler/core/y.tab.c"
10303|      0|    break;
10304|       |
10305|      0|  case 572: /* opt_f_block_arg: ',' f_block_arg  */
  ------------------
  |  Branch (10305:3): [True: 0, False: 10.4M]
  ------------------
10306|      0|#line 3985 "mrbgems/mruby-compiler/core/parse.y"
10307|      0|                    {
10308|      0|                      (yyval.id) = (yyvsp[0].id);
10309|      0|                    }
10310|      0|#line 10311 "mrbgems/mruby-compiler/core/y.tab.c"
10311|      0|    break;
10312|       |
10313|      0|  case 573: /* opt_f_block_arg: none  */
  ------------------
  |  Branch (10313:3): [True: 0, False: 10.4M]
  ------------------
10314|      0|#line 3989 "mrbgems/mruby-compiler/core/parse.y"
10315|      0|                    {
10316|      0|                      (yyval.id) = 0;
10317|      0|                    }
10318|      0|#line 10319 "mrbgems/mruby-compiler/core/y.tab.c"
10319|      0|    break;
10320|       |
10321|      0|  case 574: /* singleton: var_ref  */
  ------------------
  |  Branch (10321:3): [True: 0, False: 10.4M]
  ------------------
10322|      0|#line 3995 "mrbgems/mruby-compiler/core/parse.y"
10323|      0|                    {
10324|      0|                      (yyval.nd) = (yyvsp[0].nd);
10325|      0|                      if (!(yyval.nd)) (yyval.nd) = new_nil(p);
  ------------------
  |  Branch (10325:27): [True: 0, False: 0]
  ------------------
10326|      0|                    }
10327|      0|#line 10328 "mrbgems/mruby-compiler/core/y.tab.c"
10328|      0|    break;
10329|       |
10330|      0|  case 575: /* $@33: %empty  */
  ------------------
  |  Branch (10330:3): [True: 0, False: 10.4M]
  ------------------
10331|      0|#line 3999 "mrbgems/mruby-compiler/core/parse.y"
10332|      0|                      {p->lstate = EXPR_BEG;}
10333|      0|#line 10334 "mrbgems/mruby-compiler/core/y.tab.c"
10334|      0|    break;
10335|       |
10336|      0|  case 576: /* singleton: '(' $@33 expr rparen  */
  ------------------
  |  Branch (10336:3): [True: 0, False: 10.4M]
  ------------------
10337|      0|#line 4000 "mrbgems/mruby-compiler/core/parse.y"
10338|      0|                    {
10339|      0|                      if ((yyvsp[-1].nd) == 0) {
  ------------------
  |  Branch (10339:27): [True: 0, False: 0]
  ------------------
10340|      0|                        yyerror(p, "can't define singleton method for ().");
10341|      0|                      }
10342|      0|                      else {
10343|      0|                        switch (typen((yyvsp[-1].nd)->car)) {
  ------------------
  |  |  136|      0|#define typen(x) ((enum node_type)(intptr_t)(x))
  ------------------
10344|      0|                        case NODE_STR:
  ------------------
  |  Branch (10344:25): [True: 0, False: 0]
  ------------------
10345|      0|                        case NODE_DSTR:
  ------------------
  |  Branch (10345:25): [True: 0, False: 0]
  ------------------
10346|      0|                        case NODE_XSTR:
  ------------------
  |  Branch (10346:25): [True: 0, False: 0]
  ------------------
10347|      0|                        case NODE_DXSTR:
  ------------------
  |  Branch (10347:25): [True: 0, False: 0]
  ------------------
10348|      0|                        case NODE_DREGX:
  ------------------
  |  Branch (10348:25): [True: 0, False: 0]
  ------------------
10349|      0|                        case NODE_MATCH:
  ------------------
  |  Branch (10349:25): [True: 0, False: 0]
  ------------------
10350|      0|                        case NODE_FLOAT:
  ------------------
  |  Branch (10350:25): [True: 0, False: 0]
  ------------------
10351|      0|                        case NODE_ARRAY:
  ------------------
  |  Branch (10351:25): [True: 0, False: 0]
  ------------------
10352|      0|                        case NODE_HEREDOC:
  ------------------
  |  Branch (10352:25): [True: 0, False: 0]
  ------------------
10353|      0|                          yyerror(p, "can't define singleton method for literals");
10354|      0|                        default:
  ------------------
  |  Branch (10354:25): [True: 0, False: 0]
  ------------------
10355|      0|                          break;
10356|      0|                        }
10357|      0|                      }
10358|      0|                      (yyval.nd) = (yyvsp[-1].nd);
10359|      0|                    }
10360|      0|#line 10361 "mrbgems/mruby-compiler/core/y.tab.c"
10361|      0|    break;
10362|       |
10363|  2.08k|  case 578: /* assoc_list: assocs trailer  */
  ------------------
  |  Branch (10363:3): [True: 2.08k, False: 10.4M]
  ------------------
10364|  2.08k|#line 4026 "mrbgems/mruby-compiler/core/parse.y"
10365|  2.08k|                    {
10366|  2.08k|                      (yyval.nd) = (yyvsp[-1].nd);
10367|  2.08k|                    }
10368|  2.08k|#line 10369 "mrbgems/mruby-compiler/core/y.tab.c"
10369|  2.08k|    break;
10370|       |
10371|  2.08k|  case 579: /* assocs: assoc  */
  ------------------
  |  Branch (10371:3): [True: 2.08k, False: 10.4M]
  ------------------
10372|  2.08k|#line 4032 "mrbgems/mruby-compiler/core/parse.y"
10373|  2.08k|                    {
10374|  2.08k|                      (yyval.nd) = list1((yyvsp[0].nd));
  ------------------
  |  |  217|  2.08k|#define list1(a) list1_gen(p, (a))
  ------------------
10375|  2.08k|                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
  ------------------
  |  |  125|  2.08k|#define NODE_LINENO(c,n) do {\
  |  |  126|  2.08k|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 2.08k, False: 0]
  |  |  ------------------
  |  |  127|  2.08k|     (c)->filename_index = (n)->filename_index;\
  |  |  128|  2.08k|     (c)->lineno = (n)->lineno;\
  |  |  129|  2.08k|  }\
  |  |  130|  2.08k|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
10376|  2.08k|                    }
10377|  2.08k|#line 10378 "mrbgems/mruby-compiler/core/y.tab.c"
10378|  2.08k|    break;
10379|       |
10380|   162k|  case 580: /* assocs: assocs comma assoc  */
  ------------------
  |  Branch (10380:3): [True: 162k, False: 10.3M]
  ------------------
10381|   162k|#line 4037 "mrbgems/mruby-compiler/core/parse.y"
10382|   162k|                    {
10383|   162k|                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
  ------------------
  |  |  268|   162k|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|   162k|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
10384|   162k|                    }
10385|   162k|#line 10386 "mrbgems/mruby-compiler/core/y.tab.c"
10386|   162k|    break;
10387|       |
10388|   164k|  case 581: /* assoc: arg "=>" arg  */
  ------------------
  |  Branch (10388:3): [True: 164k, False: 10.3M]
  ------------------
10389|   164k|#line 4043 "mrbgems/mruby-compiler/core/parse.y"
10390|   164k|                    {
10391|   164k|                      void_expr_error(p, (yyvsp[-2].nd));
10392|   164k|                      void_expr_error(p, (yyvsp[0].nd));
10393|   164k|                      (yyval.nd) = cons((yyvsp[-2].nd), (yyvsp[0].nd));
  ------------------
  |  |  210|   164k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
10394|   164k|                    }
10395|   164k|#line 10396 "mrbgems/mruby-compiler/core/y.tab.c"
10396|   164k|    break;
10397|       |
10398|      0|  case 582: /* assoc: "local variable or method" "label" arg  */
  ------------------
  |  Branch (10398:3): [True: 0, False: 10.4M]
  ------------------
10399|      0|#line 4049 "mrbgems/mruby-compiler/core/parse.y"
10400|      0|                    {
10401|      0|                      void_expr_error(p, (yyvsp[0].nd));
10402|      0|                      (yyval.nd) = cons(new_sym(p, (yyvsp[-2].id)), (yyvsp[0].nd));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
10403|      0|                    }
10404|      0|#line 10405 "mrbgems/mruby-compiler/core/y.tab.c"
10405|      0|    break;
10406|       |
10407|      0|  case 583: /* assoc: "local variable or method" "label"  */
  ------------------
  |  Branch (10407:3): [True: 0, False: 10.4M]
  ------------------
10408|      0|#line 4054 "mrbgems/mruby-compiler/core/parse.y"
10409|      0|                    {
10410|      0|                      (yyval.nd) = cons(new_sym(p, (yyvsp[-1].id)), label_reference(p, (yyvsp[-1].id)));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
10411|      0|                    }
10412|      0|#line 10413 "mrbgems/mruby-compiler/core/y.tab.c"
10413|      0|    break;
10414|       |
10415|      0|  case 584: /* assoc: "numbered parameter" "label"  */
  ------------------
  |  Branch (10415:3): [True: 0, False: 10.4M]
  ------------------
10416|      0|#line 4058 "mrbgems/mruby-compiler/core/parse.y"
10417|      0|                    {
10418|      0|                      mrb_sym sym = intern_numparam((yyvsp[-1].num));
  ------------------
  |  |  164|      0|#define intern_numparam(n) intern_numparam_gen(p,(n))
  ------------------
10419|      0|                      (yyval.nd) = cons(new_sym(p, sym), label_reference(p, sym));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
10420|      0|                    }
10421|      0|#line 10422 "mrbgems/mruby-compiler/core/y.tab.c"
10422|      0|    break;
10423|       |
10424|      0|  case 585: /* assoc: "numbered parameter" "label" arg  */
  ------------------
  |  Branch (10424:3): [True: 0, False: 10.4M]
  ------------------
10425|      0|#line 4063 "mrbgems/mruby-compiler/core/parse.y"
10426|      0|                    {
10427|      0|                      void_expr_error(p, (yyvsp[0].nd));
10428|      0|                      (yyval.nd) = cons(new_sym(p, intern_numparam((yyvsp[-2].num))), (yyvsp[0].nd));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
10429|      0|                    }
10430|      0|#line 10431 "mrbgems/mruby-compiler/core/y.tab.c"
10431|      0|    break;
10432|       |
10433|      0|  case 586: /* assoc: string_fragment "label" arg  */
  ------------------
  |  Branch (10433:3): [True: 0, False: 10.4M]
  ------------------
10434|      0|#line 4068 "mrbgems/mruby-compiler/core/parse.y"
10435|      0|                    {
10436|      0|                      void_expr_error(p, (yyvsp[0].nd));
10437|      0|                      if (typen((yyvsp[-2].nd)->car) == NODE_DSTR) {
  ------------------
  |  |  136|      0|#define typen(x) ((enum node_type)(intptr_t)(x))
  ------------------
  |  Branch (10437:27): [True: 0, False: 0]
  ------------------
10438|      0|                        (yyval.nd) = cons(new_dsym(p, (yyvsp[-2].nd)), (yyvsp[0].nd));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
10439|      0|                      }
10440|      0|                      else {
10441|      0|                        (yyval.nd) = cons(new_sym(p, new_strsym(p, (yyvsp[-2].nd))), (yyvsp[0].nd));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
10442|      0|                      }
10443|      0|                    }
10444|      0|#line 10445 "mrbgems/mruby-compiler/core/y.tab.c"
10445|      0|    break;
10446|       |
10447|      0|  case 587: /* assoc: "**" arg  */
  ------------------
  |  Branch (10447:3): [True: 0, False: 10.4M]
  ------------------
10448|      0|#line 4078 "mrbgems/mruby-compiler/core/parse.y"
10449|      0|                    {
10450|      0|                      void_expr_error(p, (yyvsp[0].nd));
10451|      0|                      (yyval.nd) = cons(new_kw_rest_args(p, 0), (yyvsp[0].nd));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
10452|      0|                    }
10453|      0|#line 10454 "mrbgems/mruby-compiler/core/y.tab.c"
10454|      0|    break;
10455|       |
10456|      0|  case 588: /* assoc: "**"  */
  ------------------
  |  Branch (10456:3): [True: 0, False: 10.4M]
  ------------------
10457|      0|#line 4083 "mrbgems/mruby-compiler/core/parse.y"
10458|      0|                    {
10459|      0|                      (yyval.nd) = cons(new_kw_rest_args(p, 0), new_lvar(p, intern_op(pow)));
  ------------------
  |  |  210|      0|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
10460|      0|                    }
10461|      0|#line 10462 "mrbgems/mruby-compiler/core/y.tab.c"
10462|      0|    break;
10463|       |
10464|  66.1k|  case 601: /* call_op: '.'  */
  ------------------
  |  Branch (10464:3): [True: 66.1k, False: 10.4M]
  ------------------
10465|  66.1k|#line 4109 "mrbgems/mruby-compiler/core/parse.y"
10466|  66.1k|                    {
10467|  66.1k|                      (yyval.num) = '.';
10468|  66.1k|                    }
10469|  66.1k|#line 10470 "mrbgems/mruby-compiler/core/y.tab.c"
10470|  66.1k|    break;
10471|       |
10472|      0|  case 602: /* call_op: "&."  */
  ------------------
  |  Branch (10472:3): [True: 0, False: 10.4M]
  ------------------
10473|      0|#line 4113 "mrbgems/mruby-compiler/core/parse.y"
10474|      0|                    {
10475|      0|                      (yyval.num) = 0;
10476|      0|                    }
10477|      0|#line 10478 "mrbgems/mruby-compiler/core/y.tab.c"
10478|      0|    break;
10479|       |
10480|      0|  case 604: /* call_op2: "::"  */
  ------------------
  |  Branch (10480:3): [True: 0, False: 10.4M]
  ------------------
10481|      0|#line 4120 "mrbgems/mruby-compiler/core/parse.y"
10482|      0|                    {
10483|      0|                      (yyval.num) = tCOLON2;
10484|      0|                    }
10485|      0|#line 10486 "mrbgems/mruby-compiler/core/y.tab.c"
10486|      0|    break;
10487|       |
10488|      0|  case 613: /* term: ';'  */
  ------------------
  |  Branch (10488:3): [True: 0, False: 10.4M]
  ------------------
10489|      0|#line 4141 "mrbgems/mruby-compiler/core/parse.y"
10490|      0|                      {yyerrok;}
  ------------------
  |  | 5747|      0|#define yyerrok         (yyerrstatus = 0)
  ------------------
10491|      0|#line 10492 "mrbgems/mruby-compiler/core/y.tab.c"
10492|      0|    break;
10493|       |
10494|   271k|  case 615: /* nl: '\n'  */
  ------------------
  |  Branch (10494:3): [True: 271k, False: 10.2M]
  ------------------
10495|   271k|#line 4146 "mrbgems/mruby-compiler/core/parse.y"
10496|   271k|                    {
10497|   271k|                      p->lineno += (yyvsp[0].num);
10498|   271k|                      p->column = 0;
10499|   271k|                    }
10500|   271k|#line 10501 "mrbgems/mruby-compiler/core/y.tab.c"
10501|   271k|    break;
10502|       |
10503|   164k|  case 619: /* none: %empty  */
  ------------------
  |  Branch (10503:3): [True: 164k, False: 10.3M]
  ------------------
10504|   164k|#line 4158 "mrbgems/mruby-compiler/core/parse.y"
10505|   164k|                    {
10506|   164k|                      (yyval.nd) = 0;
10507|   164k|                    }
10508|   164k|#line 10509 "mrbgems/mruby-compiler/core/y.tab.c"
10509|   164k|    break;
10510|       |
10511|       |
10512|      0|#line 10513 "mrbgems/mruby-compiler/core/y.tab.c"
10513|       |
10514|  5.52M|      default: break;
  ------------------
  |  Branch (10514:7): [True: 5.52M, False: 4.94M]
  ------------------
10515|  10.4M|    }
10516|       |  /* User semantic actions sometimes alter yychar, and that requires
10517|       |     that yytoken be updated with the new translation.  We take the
10518|       |     approach of translating immediately before every use of yytoken.
10519|       |     One alternative is translating here after every semantic action,
10520|       |     but that translation would be missed if the semantic action invokes
10521|       |     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
10522|       |     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
10523|       |     incorrect destructor might then be invoked immediately.  In the
10524|       |     case of YYERROR or YYBACKUP, subsequent parser actions might lead
10525|       |     to an incorrect destructor call or verbose syntax error message
10526|       |     before the lookahead is translated.  */
10527|  10.4M|  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
10528|       |
10529|  10.4M|  YYPOPSTACK (yylen);
  ------------------
  |  | 6274|  10.4M|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
10530|  10.4M|  yylen = 0;
10531|       |
10532|  10.4M|  *++yyvsp = yyval;
10533|       |
10534|       |  /* Now 'shift' the result of the reduction.  Determine what state
10535|       |     that goes to, based on the state we popped back to and the rule
10536|       |     number reduced by.  */
10537|  10.4M|  {
10538|  10.4M|    const int yylhs = yyr1[yyn] - YYNTOKENS;
  ------------------
  |  | 2363|  10.4M|#define YYNTOKENS  149
  ------------------
10539|  10.4M|    const int yyi = yypgoto[yylhs] + *yyssp;
10540|  10.4M|    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
  ------------------
  |  | 2360|  18.7M|#define YYLAST   13092
  ------------------
  |  Branch (10540:16): [True: 8.22M, False: 2.24M]
  |  Branch (10540:28): [True: 8.22M, False: 0]
  |  Branch (10540:45): [True: 4.45M, False: 3.77M]
  ------------------
10541|  10.4M|               ? yytable[yyi]
10542|  10.4M|               : yydefgoto[yylhs]);
10543|  10.4M|  }
10544|       |
10545|  10.4M|  goto yynewstate;
10546|       |
10547|       |
10548|       |/*--------------------------------------.
10549|       || yyerrlab -- here on detecting error.  |
10550|       |`--------------------------------------*/
10551|      0|yyerrlab:
10552|       |  /* Make sure we have latest lookahead translation.  See comments at
10553|       |     user semantic actions for why this is necessary.  */
10554|      0|  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
  ------------------
  |  | 2378|      0|  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
  |  |  ------------------
  |  |  |  | 2372|      0|#define YYMAXUTOK   377
  |  |  ------------------
  |  |  |  Branch (2378:4): [True: 0, False: 0]
  |  |  |  Branch (2378:18): [True: 0, False: 0]
  |  |  ------------------
  |  | 2379|      0|   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
  |  |  ------------------
  |  |  |  | 1519|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  |  | 2380|      0|   : YYSYMBOL_YYUNDEF)
  ------------------
  |  Branch (10554:13): [True: 0, False: 0]
  ------------------
10555|       |  /* If not already recovering from an error, report this error.  */
10556|      0|  if (!yyerrstatus)
  ------------------
  |  Branch (10556:7): [True: 0, False: 0]
  ------------------
10557|      0|    {
10558|      0|      ++yynerrs;
10559|      0|      {
10560|      0|        yypcontext_t yyctx
10561|      0|          = {yyssp, yytoken};
10562|      0|        char const *yymsgp = YY_("syntax error");
  ------------------
  |  | 2162|      0|#  define YY_(Msgid) Msgid
  ------------------
10563|      0|        int yysyntax_error_status;
10564|      0|        yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
10565|      0|        if (yysyntax_error_status == 0)
  ------------------
  |  Branch (10565:13): [True: 0, False: 0]
  ------------------
10566|      0|          yymsgp = yymsg;
10567|      0|        else if (yysyntax_error_status == -1)
  ------------------
  |  Branch (10567:18): [True: 0, False: 0]
  ------------------
10568|      0|          {
10569|      0|            if (yymsg != yymsgbuf)
  ------------------
  |  Branch (10569:17): [True: 0, False: 0]
  ------------------
10570|      0|              YYSTACK_FREE (yymsg);
  ------------------
  |  | 2260|      0|#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
  |  |  ------------------
  |  |  |  Branch (2260:56): [Folded - Ignored]
  |  |  ------------------
  ------------------
10571|      0|            yymsg = YY_CAST (char *,
  ------------------
  |  | 1519|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  ------------------
10572|      0|                             YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
10573|      0|            if (yymsg)
  ------------------
  |  Branch (10573:17): [True: 0, False: 0]
  ------------------
10574|      0|              {
10575|      0|                yysyntax_error_status
10576|      0|                  = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
10577|      0|                yymsgp = yymsg;
10578|      0|              }
10579|      0|            else
10580|      0|              {
10581|      0|                yymsg = yymsgbuf;
10582|      0|                yymsg_alloc = sizeof yymsgbuf;
10583|      0|                yysyntax_error_status = YYENOMEM;
10584|      0|              }
10585|      0|          }
10586|      0|        yyerror (p, yymsgp);
10587|      0|        if (yysyntax_error_status == YYENOMEM)
  ------------------
  |  Branch (10587:13): [True: 0, False: 0]
  ------------------
10588|      0|          YYNOMEM;
  ------------------
  |  | 5753|      0|#define YYNOMEM         goto yyexhaustedlab
  ------------------
10589|      0|      }
10590|      0|    }
10591|       |
10592|      0|  if (yyerrstatus == 3)
  ------------------
  |  Branch (10592:7): [True: 0, False: 0]
  ------------------
10593|      0|    {
10594|       |      /* If just tried and failed to reuse lookahead token after an
10595|       |         error, discard it.  */
10596|       |
10597|      0|      if (yychar <= YYEOF)
  ------------------
  |  Branch (10597:11): [True: 0, False: 0]
  ------------------
10598|      0|        {
10599|       |          /* Return failure if at end of input.  */
10600|      0|          if (yychar == YYEOF)
  ------------------
  |  Branch (10600:15): [True: 0, False: 0]
  ------------------
10601|      0|            YYABORT;
  ------------------
  |  | 5751|      0|#define YYABORT         goto yyabortlab
  ------------------
10602|      0|        }
10603|      0|      else
10604|      0|        {
10605|      0|          yydestruct ("Error: discarding",
10606|      0|                      yytoken, &yylval, p);
10607|      0|          yychar = YYEMPTY;
10608|      0|        }
10609|      0|    }
10610|       |
10611|       |  /* Else will try to reuse lookahead token after shifting the error
10612|       |     token.  */
10613|      0|  goto yyerrlab1;
10614|       |
10615|       |
10616|       |/*---------------------------------------------------.
10617|       || yyerrorlab -- error raised explicitly by YYERROR.  |
10618|       |`---------------------------------------------------*/
10619|      0|yyerrorlab:
10620|       |  /* Pacify compilers when the user code never invokes YYERROR and the
10621|       |     label yyerrorlab therefore never appears in user code.  */
10622|      0|  if (0)
  ------------------
  |  Branch (10622:7): [Folded - Ignored]
  ------------------
10623|      0|    YYERROR;
  ------------------
  |  | 5752|      0|#define YYERROR         goto yyerrorlab
  ------------------
10624|      0|  ++yynerrs;
10625|       |
10626|       |  /* Do not reclaim the symbols of the rule whose action triggered
10627|       |     this YYERROR.  */
10628|      0|  YYPOPSTACK (yylen);
  ------------------
  |  | 6274|      0|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
10629|      0|  yylen = 0;
10630|      0|  YY_STACK_PRINT (yyss, yyssp);
10631|      0|  yystate = *yyssp;
10632|      0|  goto yyerrlab1;
10633|       |
10634|       |
10635|       |/*-------------------------------------------------------------.
10636|       || yyerrlab1 -- common code for both syntax error and YYERROR.  |
10637|       |`-------------------------------------------------------------*/
10638|      0|yyerrlab1:
10639|      0|  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
10640|       |
10641|       |  /* Pop stack until we find a state that shifts the error token.  */
10642|      0|  for (;;)
10643|      0|    {
10644|      0|      yyn = yypact[yystate];
10645|      0|      if (!yypact_value_is_default (yyn))
  ------------------
  |  | 2580|      0|  ((Yyn) == YYPACT_NINF)
  |  |  ------------------
  |  |  |  | 2577|      0|#define YYPACT_NINF (-868)
  |  |  ------------------
  ------------------
  |  Branch (10645:11): [True: 0, False: 0]
  ------------------
10646|      0|        {
10647|      0|          yyn += YYSYMBOL_YYerror;
10648|      0|          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
  ------------------
  |  | 2360|      0|#define YYLAST   13092
  ------------------
  |  Branch (10648:15): [True: 0, False: 0]
  |  Branch (10648:27): [True: 0, False: 0]
  |  Branch (10648:44): [True: 0, False: 0]
  ------------------
10649|      0|            {
10650|      0|              yyn = yytable[yyn];
10651|      0|              if (0 < yyn)
  ------------------
  |  Branch (10651:19): [True: 0, False: 0]
  ------------------
10652|      0|                break;
10653|      0|            }
10654|      0|        }
10655|       |
10656|       |      /* Pop the current state because it cannot handle the error token.  */
10657|      0|      if (yyssp == yyss)
  ------------------
  |  Branch (10657:11): [True: 0, False: 0]
  ------------------
10658|      0|        YYABORT;
  ------------------
  |  | 5751|      0|#define YYABORT         goto yyabortlab
  ------------------
10659|       |
10660|       |
10661|      0|      yydestruct ("Error: popping",
10662|      0|                  YY_ACCESSING_SYMBOL (yystate), yyvsp, p);
  ------------------
  |  | 2496|      0|#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
  |  |  ------------------
  |  |  |  | 1519|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  ------------------
10663|      0|      YYPOPSTACK (1);
  ------------------
  |  | 6274|      0|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
10664|      0|      yystate = *yyssp;
10665|      0|      YY_STACK_PRINT (yyss, yyssp);
10666|      0|    }
10667|       |
10668|      0|  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
10669|      0|  *++yyvsp = yylval;
10670|      0|  YY_IGNORE_MAYBE_UNINITIALIZED_END
10671|       |
10672|       |
10673|       |  /* Shift the error token.  */
10674|      0|  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
10675|       |
10676|      0|  yystate = yyn;
10677|      0|  goto yynewstate;
10678|       |
10679|       |
10680|       |/*-------------------------------------.
10681|       || yyacceptlab -- YYACCEPT comes here.  |
10682|       |`-------------------------------------*/
10683|    476|yyacceptlab:
10684|    476|  yyresult = 0;
10685|    476|  goto yyreturnlab;
10686|       |
10687|       |
10688|       |/*-----------------------------------.
10689|       || yyabortlab -- YYABORT comes here.  |
10690|       |`-----------------------------------*/
10691|      0|yyabortlab:
10692|      0|  yyresult = 1;
10693|      0|  goto yyreturnlab;
10694|       |
10695|       |
10696|       |/*-----------------------------------------------------------.
10697|       || yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
10698|       |`-----------------------------------------------------------*/
10699|      0|yyexhaustedlab:
10700|      0|  yyerror (p, YY_("memory exhausted"));
  ------------------
  |  | 2162|      0|#  define YY_(Msgid) Msgid
  ------------------
10701|      0|  yyresult = 2;
10702|      0|  goto yyreturnlab;
10703|       |
10704|       |
10705|       |/*----------------------------------------------------------.
10706|       || yyreturnlab -- parsing is finished, clean up and return.  |
10707|       |`----------------------------------------------------------*/
10708|    476|yyreturnlab:
10709|    476|  if (yychar != YYEMPTY)
  ------------------
  |  Branch (10709:7): [True: 0, False: 476]
  ------------------
10710|      0|    {
10711|       |      /* Make sure we have latest lookahead translation.  See comments at
10712|       |         user semantic actions for why this is necessary.  */
10713|      0|      yytoken = YYTRANSLATE (yychar);
  ------------------
  |  | 2378|      0|  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
  |  |  ------------------
  |  |  |  | 2372|      0|#define YYMAXUTOK   377
  |  |  ------------------
  |  |  |  Branch (2378:4): [True: 0, False: 0]
  |  |  |  Branch (2378:18): [True: 0, False: 0]
  |  |  ------------------
  |  | 2379|      0|   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
  |  |  ------------------
  |  |  |  | 1519|      0|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  |  | 2380|      0|   : YYSYMBOL_YYUNDEF)
  ------------------
10714|      0|      yydestruct ("Cleanup: discarding lookahead",
10715|      0|                  yytoken, &yylval, p);
10716|      0|    }
10717|       |  /* Do not reclaim the symbols of the rule whose action triggered
10718|       |     this YYABORT or YYACCEPT.  */
10719|    476|  YYPOPSTACK (yylen);
  ------------------
  |  | 6274|    476|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
10720|    476|  YY_STACK_PRINT (yyss, yyssp);
10721|  1.42k|  while (yyssp != yyss)
  ------------------
  |  Branch (10721:10): [True: 952, False: 476]
  ------------------
10722|    952|    {
10723|    952|      yydestruct ("Cleanup: popping",
10724|    952|                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, p);
  ------------------
  |  | 2496|    952|#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
  |  |  ------------------
  |  |  |  | 1519|    952|#   define YY_CAST(Type, Val) ((Type) (Val))
  |  |  ------------------
  ------------------
10725|    952|      YYPOPSTACK (1);
  ------------------
  |  | 6274|    952|#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
  ------------------
10726|    952|    }
10727|    476|#ifndef yyoverflow
10728|    476|  if (yyss != yyssa)
  ------------------
  |  Branch (10728:7): [True: 9, False: 467]
  ------------------
10729|      9|    YYSTACK_FREE (yyss);
  ------------------
  |  | 2260|      9|#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
  |  |  ------------------
  |  |  |  Branch (2260:56): [Folded - Ignored]
  |  |  ------------------
  ------------------
10730|    476|#endif
10731|    476|  if (yymsg != yymsgbuf)
  ------------------
  |  Branch (10731:7): [True: 0, False: 476]
  ------------------
10732|      0|    YYSTACK_FREE (yymsg);
  ------------------
  |  | 2260|      0|#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
  |  |  ------------------
  |  |  |  Branch (2260:56): [Folded - Ignored]
  |  |  ------------------
  ------------------
10733|    476|  return yyresult;
10734|      0|}
y.tab.c:yylex:
13160|  3.38M|{
13161|  3.38M|  p->ylval = lval;
13162|  3.38M|  return parser_yylex(p);
13163|  3.38M|}
y.tab.c:parser_yylex:
11829|  3.38M|{
11830|  3.38M|  int32_t c;
11831|  3.38M|  int nlines = 1;
11832|  3.38M|  int space_seen = 0;
11833|  3.38M|  int cmd_state;
11834|  3.38M|  enum mrb_lex_state_enum last_state;
11835|  3.38M|  int token_column;
11836|       |
11837|  3.38M|  if (p->lex_strterm) {
  ------------------
  |  Branch (11837:7): [True: 328k, False: 3.05M]
  ------------------
11838|   328k|    if (is_strterm_type(p, STR_FUNC_HEREDOC)) {
  ------------------
  |  | 1507|   328k|#define is_strterm_type(p,str_func) ((p)->lex_strterm->type & (str_func))
  |  |  ------------------
  |  |  |  Branch (1507:37): [True: 0, False: 328k]
  |  |  ------------------
  ------------------
11839|      0|      if (p->parsing_heredoc != NULL)
  ------------------
  |  Branch (11839:11): [True: 0, False: 0]
  ------------------
11840|      0|        return parse_string(p);
11841|      0|    }
11842|   328k|    else
11843|   328k|      return parse_string(p);
11844|   328k|  }
11845|  3.05M|  cmd_state = p->cmd_start;
11846|  3.05M|  p->cmd_start = FALSE;
  ------------------
  |  |   51|  3.05M|#  define FALSE 0
  ------------------
11847|  4.80M|  retry:
11848|  4.80M|  last_state = p->lstate;
11849|  4.80M|  switch (c = nextc(p)) {
11850|      0|  case '\004':  /* ^D */
  ------------------
  |  Branch (11850:3): [True: 0, False: 4.80M]
  ------------------
11851|      0|  case '\032':  /* ^Z */
  ------------------
  |  Branch (11851:3): [True: 0, False: 4.80M]
  ------------------
11852|      0|  case '\0':    /* NUL */
  ------------------
  |  Branch (11852:3): [True: 0, False: 4.80M]
  ------------------
11853|    476|  case -1:      /* end of script. */
  ------------------
  |  Branch (11853:3): [True: 476, False: 4.80M]
  ------------------
11854|    476|    if (p->heredocs_from_nextline)
  ------------------
  |  Branch (11854:9): [True: 0, False: 476]
  ------------------
11855|      0|      goto maybe_heredoc;
11856|    476|    return 0;
11857|       |
11858|       |  /* white spaces */
11859|  1.30M|  case ' ': case '\t': case '\f': case '\r':
  ------------------
  |  Branch (11859:3): [True: 1.30M, False: 3.49M]
  |  Branch (11859:13): [True: 0, False: 4.80M]
  |  Branch (11859:24): [True: 0, False: 4.80M]
  |  Branch (11859:35): [True: 0, False: 4.80M]
  ------------------
11860|  1.30M|  case '\13':   /* '\v' */
  ------------------
  |  Branch (11860:3): [True: 0, False: 4.80M]
  ------------------
11861|  1.30M|    space_seen = 1;
11862|  1.30M|    goto retry;
11863|       |
11864|      0|  case '#':     /* it's a comment */
  ------------------
  |  Branch (11864:3): [True: 0, False: 4.80M]
  ------------------
11865|      0|    skip(p, '\n');
11866|       |    /* fall through */
11867|      0|  case -2:      /* end of a file */
  ------------------
  |  Branch (11867:3): [True: 0, False: 4.80M]
  ------------------
11868|   707k|  case '\n':
  ------------------
  |  Branch (11868:3): [True: 707k, False: 4.09M]
  ------------------
11869|   707k|  maybe_heredoc:
11870|   707k|    heredoc_treat_nextline(p);
11871|   707k|    p->column = 0;
11872|   707k|    switch (p->lstate) {
11873|   435k|    case EXPR_BEG:
  ------------------
  |  Branch (11873:5): [True: 435k, False: 271k]
  ------------------
11874|   435k|    case EXPR_FNAME:
  ------------------
  |  Branch (11874:5): [True: 0, False: 707k]
  ------------------
11875|   435k|    case EXPR_DOT:
  ------------------
  |  Branch (11875:5): [True: 0, False: 707k]
  ------------------
11876|   435k|    case EXPR_CLASS:
  ------------------
  |  Branch (11876:5): [True: 0, False: 707k]
  ------------------
11877|   435k|    case EXPR_VALUE:
  ------------------
  |  Branch (11877:5): [True: 0, False: 707k]
  ------------------
11878|   435k|      p->lineno++;
11879|   435k|      if (p->parsing_heredoc != NULL) {
  ------------------
  |  Branch (11879:11): [True: 0, False: 435k]
  ------------------
11880|      0|        if (p->lex_strterm) {
  ------------------
  |  Branch (11880:13): [True: 0, False: 0]
  ------------------
11881|      0|          return parse_string(p);
11882|      0|        }
11883|      0|      }
11884|   435k|      goto retry;
11885|   435k|    default:
  ------------------
  |  Branch (11885:5): [True: 271k, False: 435k]
  ------------------
11886|   271k|      break;
11887|   707k|    }
11888|   271k|    if (p->parsing_heredoc != NULL) {
  ------------------
  |  Branch (11888:9): [True: 0, False: 271k]
  ------------------
11889|      0|      pylval.num = nlines;
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
11890|      0|      return '\n';
11891|      0|    }
11892|   271k|    while ((c = nextc(p))) {
  ------------------
  |  Branch (11892:12): [True: 271k, False: 0]
  ------------------
11893|   271k|      switch (c) {
11894|      0|      case ' ': case '\t': case '\f': case '\r':
  ------------------
  |  Branch (11894:7): [True: 0, False: 271k]
  |  Branch (11894:17): [True: 0, False: 271k]
  |  Branch (11894:28): [True: 0, False: 271k]
  |  Branch (11894:39): [True: 0, False: 271k]
  ------------------
11895|      0|      case '\13': /* '\v' */
  ------------------
  |  Branch (11895:7): [True: 0, False: 271k]
  ------------------
11896|      0|        space_seen = 1;
11897|      0|        break;
11898|      0|      case '#': /* comment as a whitespace */
  ------------------
  |  Branch (11898:7): [True: 0, False: 271k]
  ------------------
11899|      0|        skip(p, '\n');
11900|      0|        nlines++;
11901|      0|        break;
11902|      0|      case '.':
  ------------------
  |  Branch (11902:7): [True: 0, False: 271k]
  ------------------
11903|      0|        if (!peek(p, '.')) {
  ------------------
  |  |10980|      0|#define peek(p,c) peek_n((p), (c), 0)
  ------------------
  |  Branch (11903:13): [True: 0, False: 0]
  ------------------
11904|      0|          pushback(p, '.');
11905|      0|          p->lineno+=nlines; nlines=1;
11906|      0|          goto retry;
11907|      0|        }
11908|      0|        pushback(p, c);
11909|      0|        goto normal_newline;
11910|      0|      case '&':
  ------------------
  |  Branch (11910:7): [True: 0, False: 271k]
  ------------------
11911|      0|        if (peek(p, '.')) {
  ------------------
  |  |10980|      0|#define peek(p,c) peek_n((p), (c), 0)
  |  |  ------------------
  |  |  |  Branch (10980:19): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11912|      0|          pushback(p, '&');
11913|      0|          p->lineno+=nlines; nlines=1;
11914|      0|          goto retry;
11915|      0|        }
11916|      0|        pushback(p, c);
11917|      0|        goto normal_newline;
11918|    476|      case -1:                  /* EOF */
  ------------------
  |  Branch (11918:7): [True: 476, False: 271k]
  ------------------
11919|    476|      case -2:                  /* end of a file */
  ------------------
  |  Branch (11919:7): [True: 0, False: 271k]
  ------------------
11920|    476|        goto normal_newline;
11921|   271k|      default:
  ------------------
  |  Branch (11921:7): [True: 271k, False: 476]
  ------------------
11922|   271k|        pushback(p, c);
11923|   271k|        goto normal_newline;
11924|   271k|      }
11925|   271k|    }
11926|   271k|  normal_newline:
11927|   271k|    p->cmd_start = TRUE;
  ------------------
  |  |   54|   271k|#  define TRUE 1
  ------------------
11928|   271k|    p->lstate = EXPR_BEG;
11929|   271k|    pylval.num = nlines;
  ------------------
  |  |10738|   271k|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
11930|   271k|    return '\n';
11931|       |
11932|  8.28k|  case '*':
  ------------------
  |  Branch (11932:3): [True: 8.28k, False: 4.79M]
  ------------------
11933|  8.28k|    if ((c = nextc(p)) == '*') {
  ------------------
  |  Branch (11933:9): [True: 0, False: 8.28k]
  ------------------
11934|      0|      if ((c = nextc(p)) == '=') {
  ------------------
  |  Branch (11934:11): [True: 0, False: 0]
  ------------------
11935|      0|        pylval.id = intern_op(pow);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                      pylval.id = intern_op(pow);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
11936|      0|        p->lstate = EXPR_BEG;
11937|      0|        return tOP_ASGN;
11938|      0|      }
11939|      0|      pushback(p, c);
11940|      0|      if (IS_SPCARG(c)) {
  ------------------
  |  |11139|      0|#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  |11136|      0|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (11136:19): [True: 0, False: 0]
  |  |  |  |  |  Branch (11136:44): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11139:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11941|      0|        yywarning(p, "'**' interpreted as argument prefix");
11942|      0|        c = tDSTAR;
11943|      0|      }
11944|      0|      else if (IS_BEG()) {
  ------------------
  |  |11138|      0|#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
  |  |  ------------------
  |  |  |  Branch (11138:19): [True: 0, False: 0]
  |  |  |  Branch (11138:44): [True: 0, False: 0]
  |  |  |  Branch (11138:69): [True: 0, False: 0]
  |  |  |  Branch (11138:96): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11945|      0|        c = tDSTAR;
11946|      0|      }
11947|      0|      else {
11948|      0|        c = tPOW; /* "**", "argument prefix" */
11949|      0|      }
11950|      0|    }
11951|  8.28k|    else {
11952|  8.28k|      if (c == '=') {
  ------------------
  |  Branch (11952:11): [True: 0, False: 8.28k]
  ------------------
11953|      0|        pylval.id = intern_op(mul);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                      pylval.id = intern_op(mul);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
11954|      0|        p->lstate = EXPR_BEG;
11955|      0|        return tOP_ASGN;
11956|      0|      }
11957|  8.28k|      pushback(p, c);
11958|  8.28k|      if (IS_SPCARG(c)) {
  ------------------
  |  |11139|  8.28k|#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  |11136|  16.5k|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (11136:19): [True: 0, False: 8.28k]
  |  |  |  |  |  Branch (11136:44): [True: 0, False: 8.28k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11139:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11959|      0|        yywarning(p, "'*' interpreted as argument prefix");
11960|      0|        c = tSTAR;
11961|      0|      }
11962|  8.28k|      else if (IS_BEG()) {
  ------------------
  |  |11138|  8.28k|#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
  |  |  ------------------
  |  |  |  Branch (11138:19): [True: 0, False: 8.28k]
  |  |  |  Branch (11138:44): [True: 0, False: 8.28k]
  |  |  |  Branch (11138:69): [True: 0, False: 8.28k]
  |  |  |  Branch (11138:96): [True: 0, False: 8.28k]
  |  |  ------------------
  ------------------
11963|      0|        c = tSTAR;
11964|      0|      }
11965|  8.28k|      else {
11966|  8.28k|        c = '*';
11967|  8.28k|      }
11968|  8.28k|    }
11969|  8.28k|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (11969:9): [True: 0, False: 8.28k]
  |  Branch (11969:36): [True: 0, False: 8.28k]
  ------------------
11970|      0|      p->lstate = EXPR_ARG;
11971|      0|    }
11972|  8.28k|    else {
11973|  8.28k|      p->lstate = EXPR_BEG;
11974|  8.28k|    }
11975|  8.28k|    return c;
11976|       |
11977|  3.32k|  case '!':
  ------------------
  |  Branch (11977:3): [True: 3.32k, False: 4.79M]
  ------------------
11978|  3.32k|    c = nextc(p);
11979|  3.32k|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (11979:9): [True: 0, False: 3.32k]
  |  Branch (11979:36): [True: 0, False: 3.32k]
  ------------------
11980|      0|      p->lstate = EXPR_ARG;
11981|      0|      if (c == '@') {
  ------------------
  |  Branch (11981:11): [True: 0, False: 0]
  ------------------
11982|      0|        return '!';
11983|      0|      }
11984|      0|    }
11985|  3.32k|    else {
11986|  3.32k|      p->lstate = EXPR_BEG;
11987|  3.32k|    }
11988|  3.32k|    if (c == '=') {
  ------------------
  |  Branch (11988:9): [True: 3.32k, False: 0]
  ------------------
11989|  3.32k|      return tNEQ;
11990|  3.32k|    }
11991|      0|    if (c == '~') {
  ------------------
  |  Branch (11991:9): [True: 0, False: 0]
  ------------------
11992|      0|      return tNMATCH;
11993|      0|    }
11994|      0|    pushback(p, c);
11995|      0|    return '!';
11996|       |
11997|   286k|  case '=':
  ------------------
  |  Branch (11997:3): [True: 286k, False: 4.51M]
  ------------------
11998|   286k|    if (p->column == 1) {
  ------------------
  |  Branch (11998:9): [True: 0, False: 286k]
  ------------------
11999|      0|      static const char begin[] = "begin";
12000|      0|      static const char end[] = "\n=end";
12001|      0|      if (peeks(p, begin)) {
  ------------------
  |  Branch (12001:11): [True: 0, False: 0]
  ------------------
12002|      0|        c = peekc_n(p, sizeof(begin)-1);
12003|      0|        if (c < 0 || ISSPACE(c)) {
  ------------------
  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  ------------------
  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12003:13): [True: 0, False: 0]
  ------------------
12004|      0|          do {
12005|      0|            if (!skips(p, end)) {
  ------------------
  |  Branch (12005:17): [True: 0, False: 0]
  ------------------
12006|      0|              yyerror(p, "embedded document meets end of file");
12007|      0|              return 0;
12008|      0|            }
12009|      0|            c = nextc(p);
12010|      0|          } while (!(c < 0 || ISSPACE(c)));
  ------------------
  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  ------------------
  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12010:22): [True: 0, False: 0]
  ------------------
12011|      0|          if (c != '\n') skip(p, '\n');
  ------------------
  |  Branch (12011:15): [True: 0, False: 0]
  ------------------
12012|      0|          p->lineno+=nlines; nlines=1;
12013|      0|          p->column = 0;
12014|      0|          goto retry;
12015|      0|        }
12016|      0|      }
12017|      0|    }
12018|   286k|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (12018:9): [True: 0, False: 286k]
  |  Branch (12018:36): [True: 0, False: 286k]
  ------------------
12019|      0|      p->lstate = EXPR_ARG;
12020|      0|    }
12021|   286k|    else {
12022|   286k|      p->lstate = EXPR_BEG;
12023|   286k|    }
12024|   286k|    if ((c = nextc(p)) == '=') {
  ------------------
  |  Branch (12024:9): [True: 1.94k, False: 284k]
  ------------------
12025|  1.94k|      if ((c = nextc(p)) == '=') {
  ------------------
  |  Branch (12025:11): [True: 0, False: 1.94k]
  ------------------
12026|      0|        return tEQQ;
12027|      0|      }
12028|  1.94k|      pushback(p, c);
12029|  1.94k|      return tEQ;
12030|  1.94k|    }
12031|   284k|    if (c == '~') {
  ------------------
  |  Branch (12031:9): [True: 0, False: 284k]
  ------------------
12032|      0|      return tMATCH;
12033|      0|    }
12034|   284k|    else if (c == '>') {
  ------------------
  |  Branch (12034:14): [True: 164k, False: 120k]
  ------------------
12035|   164k|      return tASSOC;
12036|   164k|    }
12037|   120k|    pushback(p, c);
12038|   120k|    return '=';
12039|       |
12040|  5.09k|  case '<':
  ------------------
  |  Branch (12040:3): [True: 5.09k, False: 4.79M]
  ------------------
12041|  5.09k|    c = nextc(p);
12042|  5.09k|    if (c == '<' &&
  ------------------
  |  Branch (12042:9): [True: 0, False: 5.09k]
  ------------------
12043|  5.09k|        p->lstate != EXPR_DOT &&
  ------------------
  |  Branch (12043:9): [True: 0, False: 0]
  ------------------
12044|  5.09k|        p->lstate != EXPR_CLASS &&
  ------------------
  |  Branch (12044:9): [True: 0, False: 0]
  ------------------
12045|  5.09k|        !IS_END() &&
  ------------------
  |  |11137|  5.09k|#define IS_END() (p->lstate == EXPR_END || p->lstate == EXPR_ENDARG || p->lstate == EXPR_ENDFN)
  |  |  ------------------
  |  |  |  Branch (11137:19): [True: 0, False: 0]
  |  |  |  Branch (11137:44): [True: 0, False: 0]
  |  |  |  Branch (11137:72): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12046|  5.09k|        (!IS_ARG() || space_seen)) {
  ------------------
  |  |11136|      0|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  ------------------
  |  |  |  Branch (11136:19): [True: 0, False: 0]
  |  |  |  Branch (11136:44): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12046:23): [True: 0, False: 0]
  ------------------
12047|      0|      int token = heredoc_identifier(p);
12048|      0|      if (token)
  ------------------
  |  Branch (12048:11): [True: 0, False: 0]
  ------------------
12049|      0|        return token;
12050|      0|    }
12051|  5.09k|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (12051:9): [True: 0, False: 5.09k]
  |  Branch (12051:36): [True: 0, False: 5.09k]
  ------------------
12052|      0|      p->lstate = EXPR_ARG;
12053|      0|    }
12054|  5.09k|    else {
12055|  5.09k|      p->lstate = EXPR_BEG;
12056|  5.09k|      if (p->lstate == EXPR_CLASS) {
  ------------------
  |  Branch (12056:11): [True: 0, False: 5.09k]
  ------------------
12057|      0|        p->cmd_start = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
12058|      0|      }
12059|  5.09k|    }
12060|  5.09k|    if (c == '=') {
  ------------------
  |  Branch (12060:9): [True: 3.72k, False: 1.37k]
  ------------------
12061|  3.72k|      if ((c = nextc(p)) == '>') {
  ------------------
  |  Branch (12061:11): [True: 0, False: 3.72k]
  ------------------
12062|      0|        return tCMP;
12063|      0|      }
12064|  3.72k|      pushback(p, c);
12065|  3.72k|      return tLEQ;
12066|  3.72k|    }
12067|  1.37k|    if (c == '<') {
  ------------------
  |  Branch (12067:9): [True: 0, False: 1.37k]
  ------------------
12068|      0|      if ((c = nextc(p)) == '=') {
  ------------------
  |  Branch (12068:11): [True: 0, False: 0]
  ------------------
12069|      0|        pylval.id = intern_op(lshift);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                      pylval.id = intern_op(lshift);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
12070|      0|        p->lstate = EXPR_BEG;
12071|      0|        return tOP_ASGN;
12072|      0|      }
12073|      0|      pushback(p, c);
12074|      0|      return tLSHFT;
12075|      0|    }
12076|  1.37k|    pushback(p, c);
12077|  1.37k|    return '<';
12078|       |
12079|  13.8k|  case '>':
  ------------------
  |  Branch (12079:3): [True: 13.8k, False: 4.78M]
  ------------------
12080|  13.8k|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (12080:9): [True: 0, False: 13.8k]
  |  Branch (12080:36): [True: 0, False: 13.8k]
  ------------------
12081|      0|      p->lstate = EXPR_ARG;
12082|      0|    }
12083|  13.8k|    else {
12084|  13.8k|      p->lstate = EXPR_BEG;
12085|  13.8k|    }
12086|  13.8k|    if ((c = nextc(p)) == '=') {
  ------------------
  |  Branch (12086:9): [True: 1.64k, False: 12.1k]
  ------------------
12087|  1.64k|      return tGEQ;
12088|  1.64k|    }
12089|  12.1k|    if (c == '>') {
  ------------------
  |  Branch (12089:9): [True: 9.88k, False: 2.28k]
  ------------------
12090|  9.88k|      if ((c = nextc(p)) == '=') {
  ------------------
  |  Branch (12090:11): [True: 0, False: 9.88k]
  ------------------
12091|      0|        pylval.id = intern_op(rshift);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                      pylval.id = intern_op(rshift);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
12092|      0|        p->lstate = EXPR_BEG;
12093|      0|        return tOP_ASGN;
12094|      0|      }
12095|  9.88k|      pushback(p, c);
12096|  9.88k|      return tRSHFT;
12097|  9.88k|    }
12098|  2.28k|    pushback(p, c);
12099|  2.28k|    return '>';
12100|       |
12101|   328k|  case '"':
  ------------------
  |  Branch (12101:3): [True: 328k, False: 4.47M]
  ------------------
12102|   328k|    p->lex_strterm = new_strterm(p, str_dquote, '"', 0);
12103|   328k|    return tSTRING_BEG;
12104|       |
12105|      0|  case '\'':
  ------------------
  |  Branch (12105:3): [True: 0, False: 4.80M]
  ------------------
12106|      0|    p->lex_strterm = new_strterm(p, str_squote, '\'', 0);
12107|      0|    return parse_string(p);
12108|       |
12109|      0|  case '`':
  ------------------
  |  Branch (12109:3): [True: 0, False: 4.80M]
  ------------------
12110|      0|    if (p->lstate == EXPR_FNAME) {
  ------------------
  |  Branch (12110:9): [True: 0, False: 0]
  ------------------
12111|      0|      p->lstate = EXPR_ENDFN;
12112|      0|      return '`';
12113|      0|    }
12114|      0|    if (p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (12114:9): [True: 0, False: 0]
  ------------------
12115|      0|      if (cmd_state)
  ------------------
  |  Branch (12115:11): [True: 0, False: 0]
  ------------------
12116|      0|        p->lstate = EXPR_CMDARG;
12117|      0|      else
12118|      0|        p->lstate = EXPR_ARG;
12119|      0|      return '`';
12120|      0|    }
12121|      0|    p->lex_strterm = new_strterm(p, str_xquote, '`', 0);
12122|      0|    return tXSTRING_BEG;
12123|       |
12124|  6.62k|  case '?':
  ------------------
  |  Branch (12124:3): [True: 6.62k, False: 4.79M]
  ------------------
12125|  6.62k|    if (IS_END()) {
  ------------------
  |  |11137|  6.62k|#define IS_END() (p->lstate == EXPR_END || p->lstate == EXPR_ENDARG || p->lstate == EXPR_ENDFN)
  |  |  ------------------
  |  |  |  Branch (11137:19): [True: 711, False: 5.91k]
  |  |  |  Branch (11137:44): [True: 4.26k, False: 1.65k]
  |  |  |  Branch (11137:72): [True: 1.65k, False: 0]
  |  |  ------------------
  ------------------
12126|  6.62k|      p->lstate = EXPR_VALUE;
12127|  6.62k|      return '?';
12128|  6.62k|    }
12129|      0|    c = nextc(p);
12130|      0|    if (c < 0) {
  ------------------
  |  Branch (12130:9): [True: 0, False: 0]
  ------------------
12131|      0|      yyerror(p, "incomplete character syntax");
12132|      0|      return 0;
12133|      0|    }
12134|      0|    if (ISSPACE(c)) {
  ------------------
  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  ------------------
  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12135|      0|      if (!IS_ARG()) {
  ------------------
  |  |11136|      0|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  ------------------
  |  |  |  Branch (11136:19): [True: 0, False: 0]
  |  |  |  Branch (11136:44): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12136|      0|        int c2;
12137|      0|        switch (c) {
12138|      0|        case ' ':
  ------------------
  |  Branch (12138:9): [True: 0, False: 0]
  ------------------
12139|      0|          c2 = 's';
12140|      0|          break;
12141|      0|        case '\n':
  ------------------
  |  Branch (12141:9): [True: 0, False: 0]
  ------------------
12142|      0|          c2 = 'n';
12143|      0|          break;
12144|      0|        case '\t':
  ------------------
  |  Branch (12144:9): [True: 0, False: 0]
  ------------------
12145|      0|          c2 = 't';
12146|      0|          break;
12147|      0|        case '\v':
  ------------------
  |  Branch (12147:9): [True: 0, False: 0]
  ------------------
12148|      0|          c2 = 'v';
12149|      0|          break;
12150|      0|        case '\r':
  ------------------
  |  Branch (12150:9): [True: 0, False: 0]
  ------------------
12151|      0|          c2 = 'r';
12152|      0|          break;
12153|      0|        case '\f':
  ------------------
  |  Branch (12153:9): [True: 0, False: 0]
  ------------------
12154|      0|          c2 = 'f';
12155|      0|          break;
12156|      0|        default:
  ------------------
  |  Branch (12156:9): [True: 0, False: 0]
  ------------------
12157|      0|          c2 = 0;
12158|      0|          break;
12159|      0|        }
12160|      0|        if (c2) {
  ------------------
  |  Branch (12160:13): [True: 0, False: 0]
  ------------------
12161|      0|          char buf[256];
12162|      0|          char cc[] = { (char)c2, '\0' };
12163|       |
12164|      0|          strcpy(buf, "invalid character syntax; use ?\\");
12165|      0|          strncat(buf, cc, 2);
12166|      0|          yyerror(p, buf);
12167|      0|        }
12168|      0|      }
12169|      0|      ternary:
12170|      0|      pushback(p, c);
12171|      0|      p->lstate = EXPR_VALUE;
12172|      0|      return '?';
12173|      0|    }
12174|      0|    newtok(p);
12175|       |    /* need support UTF-8 if configured */
12176|      0|    if ((ISALNUM(c) || c == '_')) {
  ------------------
  |  | 1344|      0|#define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  ------------------
  |  |  |  | 1341|      0|#define ISALPHA(c) ((((unsigned)(c) | 0x20) - 'a') < 26)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1341:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  ------------------
  |  |  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12176:24): [True: 0, False: 0]
  ------------------
12177|      0|      int c2 = nextc(p);
12178|      0|      pushback(p, c2);
12179|      0|      if ((ISALNUM(c2) || c2 == '_')) {
  ------------------
  |  | 1344|      0|#define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  ------------------
  |  |  |  | 1341|      0|#define ISALPHA(c) ((((unsigned)(c) | 0x20) - 'a') < 26)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1341:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  ------------------
  |  |  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12179:27): [True: 0, False: 0]
  ------------------
12180|      0|        goto ternary;
12181|      0|      }
12182|      0|    }
12183|      0|    if (c == '\\') {
  ------------------
  |  Branch (12183:9): [True: 0, False: 0]
  ------------------
12184|      0|      c = read_escape(p);
12185|      0|      tokadd(p, c);
12186|      0|    }
12187|      0|    else {
12188|      0|      tokadd(p, c);
12189|      0|    }
12190|      0|    tokfix(p);
12191|      0|    pylval.nd = new_str(p, tok(p), toklen(p));
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
12192|      0|    p->lstate = EXPR_ENDARG;
12193|      0|    return tCHAR;
12194|       |
12195|      0|  case '&':
  ------------------
  |  Branch (12195:3): [True: 0, False: 4.80M]
  ------------------
12196|      0|    if ((c = nextc(p)) == '&') {
  ------------------
  |  Branch (12196:9): [True: 0, False: 0]
  ------------------
12197|      0|      p->lstate = EXPR_BEG;
12198|      0|      if ((c = nextc(p)) == '=') {
  ------------------
  |  Branch (12198:11): [True: 0, False: 0]
  ------------------
12199|      0|        pylval.id = intern_op(andand);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                      pylval.id = intern_op(andand);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
12200|      0|        p->lstate = EXPR_BEG;
12201|      0|        return tOP_ASGN;
12202|      0|      }
12203|      0|      pushback(p, c);
12204|      0|      return tANDOP;
12205|      0|    }
12206|      0|    else if (c == '.') {
  ------------------
  |  Branch (12206:14): [True: 0, False: 0]
  ------------------
12207|      0|      p->lstate = EXPR_DOT;
12208|      0|      return tANDDOT;
12209|      0|    }
12210|      0|    else if (c == '=') {
  ------------------
  |  Branch (12210:14): [True: 0, False: 0]
  ------------------
12211|      0|      pylval.id = intern_op(and);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                    pylval.id = intern_op(and);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
12212|      0|      p->lstate = EXPR_BEG;
12213|      0|      return tOP_ASGN;
12214|      0|    }
12215|      0|    pushback(p, c);
12216|      0|    if (IS_SPCARG(c)) {
  ------------------
  |  |11139|      0|#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  |11136|      0|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (11136:19): [True: 0, False: 0]
  |  |  |  |  |  Branch (11136:44): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11139:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12217|      0|      yywarning(p, "'&' interpreted as argument prefix");
12218|      0|      c = tAMPER;
12219|      0|    }
12220|      0|    else if (IS_BEG()) {
  ------------------
  |  |11138|      0|#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
  |  |  ------------------
  |  |  |  Branch (11138:19): [True: 0, False: 0]
  |  |  |  Branch (11138:44): [True: 0, False: 0]
  |  |  |  Branch (11138:69): [True: 0, False: 0]
  |  |  |  Branch (11138:96): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12221|      0|      c = tAMPER;
12222|      0|    }
12223|      0|    else {
12224|      0|      c = '&';
12225|      0|    }
12226|      0|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (12226:9): [True: 0, False: 0]
  |  Branch (12226:36): [True: 0, False: 0]
  ------------------
12227|      0|      p->lstate = EXPR_ARG;
12228|      0|    }
12229|      0|    else {
12230|      0|      p->lstate = EXPR_BEG;
12231|      0|    }
12232|      0|    return c;
12233|       |
12234|  20.9k|  case '|':
  ------------------
  |  Branch (12234:3): [True: 20.9k, False: 4.78M]
  ------------------
12235|  20.9k|    if ((c = nextc(p)) == '|') {
  ------------------
  |  Branch (12235:9): [True: 20.9k, False: 0]
  ------------------
12236|  20.9k|      p->lstate = EXPR_BEG;
12237|  20.9k|      if ((c = nextc(p)) == '=') {
  ------------------
  |  Branch (12237:11): [True: 20.9k, False: 0]
  ------------------
12238|  20.9k|        pylval.id = intern_op(oror);
  ------------------
  |  |10738|  20.9k|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                      pylval.id = intern_op(oror);
  ------------------
  |  |  155|  20.9k|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|  20.9k|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
12239|  20.9k|        p->lstate = EXPR_BEG;
12240|  20.9k|        return tOP_ASGN;
12241|  20.9k|      }
12242|      0|      pushback(p, c);
12243|      0|      return tOROP;
12244|  20.9k|    }
12245|      0|    if (c == '=') {
  ------------------
  |  Branch (12245:9): [True: 0, False: 0]
  ------------------
12246|      0|      pylval.id = intern_op(or);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                    pylval.id = intern_op(or);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
12247|      0|      p->lstate = EXPR_BEG;
12248|      0|      return tOP_ASGN;
12249|      0|    }
12250|      0|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (12250:9): [True: 0, False: 0]
  |  Branch (12250:36): [True: 0, False: 0]
  ------------------
12251|      0|      p->lstate = EXPR_ARG;
12252|      0|    }
12253|      0|    else {
12254|      0|      p->lstate = EXPR_BEG;
12255|      0|    }
12256|      0|    pushback(p, c);
12257|      0|    return '|';
12258|       |
12259|  12.2k|  case '+':
  ------------------
  |  Branch (12259:3): [True: 12.2k, False: 4.79M]
  ------------------
12260|  12.2k|    c = nextc(p);
12261|  12.2k|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (12261:9): [True: 0, False: 12.2k]
  |  Branch (12261:36): [True: 0, False: 12.2k]
  ------------------
12262|      0|      p->lstate = EXPR_ARG;
12263|      0|      if (c == '@') {
  ------------------
  |  Branch (12263:11): [True: 0, False: 0]
  ------------------
12264|      0|        return tUPLUS;
12265|      0|      }
12266|      0|      pushback(p, c);
12267|      0|      return '+';
12268|      0|    }
12269|  12.2k|    if (c == '=') {
  ------------------
  |  Branch (12269:9): [True: 0, False: 12.2k]
  ------------------
12270|      0|      pylval.id = intern_op(add);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                    pylval.id = intern_op(add);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
12271|      0|      p->lstate = EXPR_BEG;
12272|      0|      return tOP_ASGN;
12273|      0|    }
12274|  12.2k|    if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) {
  ------------------
  |  |11138|  24.4k|#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
  |  |  ------------------
  |  |  |  Branch (11138:19): [True: 0, False: 12.2k]
  |  |  |  Branch (11138:44): [True: 0, False: 12.2k]
  |  |  |  Branch (11138:69): [True: 0, False: 12.2k]
  |  |  |  Branch (11138:96): [True: 0, False: 12.2k]
  |  |  ------------------
  ------------------
                  if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) {
  ------------------
  |  |11139|  24.4k|#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  |11136|  24.4k|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (11136:19): [True: 0, False: 12.2k]
  |  |  |  |  |  Branch (11136:44): [True: 0, False: 12.2k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11139:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12274:38): [True: 0, False: 0]
  ------------------
12275|      0|      p->lstate = EXPR_BEG;
12276|      0|      pushback(p, c);
12277|      0|      if (c >= 0 && ISDIGIT(c)) {
  ------------------
  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  ------------------
  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12277:11): [True: 0, False: 0]
  ------------------
12278|      0|        c = '+';
12279|      0|        goto start_num;
12280|      0|      }
12281|      0|      return tUPLUS;
12282|      0|    }
12283|  12.2k|    p->lstate = EXPR_BEG;
12284|  12.2k|    pushback(p, c);
12285|  12.2k|    return '+';
12286|       |
12287|  20.9k|  case '-':
  ------------------
  |  Branch (12287:3): [True: 20.9k, False: 4.78M]
  ------------------
12288|  20.9k|    c = nextc(p);
12289|  20.9k|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (12289:9): [True: 0, False: 20.9k]
  |  Branch (12289:36): [True: 0, False: 20.9k]
  ------------------
12290|      0|      p->lstate = EXPR_ARG;
12291|      0|      if (c == '@') {
  ------------------
  |  Branch (12291:11): [True: 0, False: 0]
  ------------------
12292|      0|        return tUMINUS;
12293|      0|      }
12294|      0|      pushback(p, c);
12295|      0|      return '-';
12296|      0|    }
12297|  20.9k|    if (c == '=') {
  ------------------
  |  Branch (12297:9): [True: 0, False: 20.9k]
  ------------------
12298|      0|      pylval.id = intern_op(sub);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                    pylval.id = intern_op(sub);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
12299|      0|      p->lstate = EXPR_BEG;
12300|      0|      return tOP_ASGN;
12301|      0|    }
12302|  20.9k|    if (c == '>') {
  ------------------
  |  Branch (12302:9): [True: 0, False: 20.9k]
  ------------------
12303|      0|      p->lstate = EXPR_ENDFN;
12304|      0|      return tLAMBDA;
12305|      0|    }
12306|  20.9k|    if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) {
  ------------------
  |  |11138|  41.8k|#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
  |  |  ------------------
  |  |  |  Branch (11138:19): [True: 0, False: 20.9k]
  |  |  |  Branch (11138:44): [True: 0, False: 20.9k]
  |  |  |  Branch (11138:69): [True: 0, False: 20.9k]
  |  |  |  Branch (11138:96): [True: 0, False: 20.9k]
  |  |  ------------------
  ------------------
                  if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) {
  ------------------
  |  |11139|  41.8k|#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  |11136|  41.8k|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (11136:19): [True: 0, False: 20.9k]
  |  |  |  |  |  Branch (11136:44): [True: 0, False: 20.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11139:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12306:38): [True: 0, False: 0]
  ------------------
12307|      0|      p->lstate = EXPR_BEG;
12308|      0|      pushback(p, c);
12309|      0|      if (c >= 0 && ISDIGIT(c)) {
  ------------------
  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  ------------------
  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12309:11): [True: 0, False: 0]
  ------------------
12310|      0|        return tUMINUS_NUM;
12311|      0|      }
12312|      0|      return tUMINUS;
12313|      0|    }
12314|  20.9k|    p->lstate = EXPR_BEG;
12315|  20.9k|    pushback(p, c);
12316|  20.9k|    return '-';
12317|       |
12318|  66.1k|  case '.':
  ------------------
  |  Branch (12318:3): [True: 66.1k, False: 4.73M]
  ------------------
12319|  66.1k|    {
12320|  66.1k|      int is_beg = IS_BEG();
  ------------------
  |  |11138|  66.1k|#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
  |  |  ------------------
  |  |  |  Branch (11138:19): [True: 0, False: 66.1k]
  |  |  |  Branch (11138:44): [True: 0, False: 66.1k]
  |  |  |  Branch (11138:69): [True: 0, False: 66.1k]
  |  |  |  Branch (11138:96): [True: 0, False: 66.1k]
  |  |  ------------------
  ------------------
12321|  66.1k|      p->lstate = EXPR_MID;
12322|  66.1k|      if ((c = nextc(p)) == '.') {
  ------------------
  |  Branch (12322:11): [True: 0, False: 66.1k]
  ------------------
12323|      0|        if ((c = nextc(p)) == '.') {
  ------------------
  |  Branch (12323:13): [True: 0, False: 0]
  ------------------
12324|      0|          return is_beg ? tBDOT3 : tDOT3;
  ------------------
  |  Branch (12324:18): [True: 0, False: 0]
  ------------------
12325|      0|        }
12326|      0|        pushback(p, c);
12327|      0|        return is_beg ? tBDOT2 : tDOT2;
  ------------------
  |  Branch (12327:16): [True: 0, False: 0]
  ------------------
12328|      0|      }
12329|  66.1k|      pushback(p, c);
12330|  66.1k|      p->lstate = EXPR_BEG;
12331|  66.1k|      if (c >= 0 && ISDIGIT(c)) {
  ------------------
  |  | 1342|  66.1k|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  ------------------
  |  |  |  Branch (1342:20): [True: 0, False: 66.1k]
  |  |  ------------------
  ------------------
  |  Branch (12331:11): [True: 66.1k, False: 0]
  ------------------
12332|      0|        yyerror(p, "no .<digit> floating literal anymore; put 0 before dot");
12333|      0|      }
12334|  66.1k|      p->lstate = EXPR_DOT;
12335|  66.1k|      return '.';
12336|  66.1k|    }
12337|       |
12338|      0|    start_num:
12339|   599k|  case '0': case '1': case '2': case '3': case '4':
  ------------------
  |  Branch (12339:3): [True: 6.83k, False: 4.79M]
  |  Branch (12339:13): [True: 589k, False: 4.21M]
  |  Branch (12339:23): [True: 583, False: 4.80M]
  |  Branch (12339:33): [True: 1.53k, False: 4.80M]
  |  Branch (12339:43): [True: 1.39k, False: 4.80M]
  ------------------
12340|   617k|  case '5': case '6': case '7': case '8': case '9':
  ------------------
  |  Branch (12340:3): [True: 1.99k, False: 4.80M]
  |  Branch (12340:13): [True: 5.56k, False: 4.79M]
  |  Branch (12340:23): [True: 2.08k, False: 4.80M]
  |  Branch (12340:33): [True: 6.57k, False: 4.79M]
  |  Branch (12340:43): [True: 1.58k, False: 4.80M]
  ------------------
12341|   617k|  {
12342|   617k|    int is_float, seen_point, seen_e, nondigit;
12343|   617k|    int suffix = 0;
12344|       |
12345|   617k|    is_float = seen_point = seen_e = nondigit = 0;
12346|   617k|    p->lstate = EXPR_ENDARG;
12347|   617k|    newtok(p);
12348|   617k|    if (c == '-' || c == '+') {
  ------------------
  |  Branch (12348:9): [True: 0, False: 617k]
  |  Branch (12348:21): [True: 0, False: 617k]
  ------------------
12349|      0|      tokadd(p, c);
12350|      0|      c = nextc(p);
12351|      0|    }
12352|   617k|    if (c == '0') {
  ------------------
  |  Branch (12352:9): [True: 6.83k, False: 610k]
  ------------------
12353|  6.83k|#define no_digits() do {yyerror(p,"numeric literal without digits"); return 0;} while (0)
12354|  6.83k|      int start = toklen(p);
12355|  6.83k|      c = nextc(p);
12356|  6.83k|      if (c == 'x' || c == 'X') {
  ------------------
  |  Branch (12356:11): [True: 0, False: 6.83k]
  |  Branch (12356:23): [True: 0, False: 6.83k]
  ------------------
12357|       |        /* hexadecimal */
12358|      0|        c = nextc(p);
12359|      0|        if (c >= 0 && ISXDIGIT(c)) {
  ------------------
  |  | 1343|      0|#define ISXDIGIT(c) (ISDIGIT(c) || ((unsigned)(c) | 0x20) - 'a' < 6)
  |  |  ------------------
  |  |  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1343:36): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12359:13): [True: 0, False: 0]
  ------------------
12360|      0|          do {
12361|      0|            if (c == '_') {
  ------------------
  |  Branch (12361:17): [True: 0, False: 0]
  ------------------
12362|      0|              if (nondigit) break;
  ------------------
  |  Branch (12362:19): [True: 0, False: 0]
  ------------------
12363|      0|              nondigit = c;
12364|      0|              continue;
12365|      0|            }
12366|      0|            if (!ISXDIGIT(c)) break;
  ------------------
  |  | 1343|      0|#define ISXDIGIT(c) (ISDIGIT(c) || ((unsigned)(c) | 0x20) - 'a' < 6)
  |  |  ------------------
  |  |  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1343:36): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12367|      0|            nondigit = 0;
12368|      0|            tokadd(p, tolower(c));
12369|      0|          } while ((c = nextc(p)) >= 0);
  ------------------
  |  Branch (12369:20): [True: 0, False: 0]
  ------------------
12370|      0|        }
12371|      0|        pushback(p, c);
12372|      0|        tokfix(p);
12373|      0|        if (toklen(p) == start) {
  ------------------
  |  Branch (12373:13): [True: 0, False: 0]
  ------------------
12374|      0|          no_digits();
  ------------------
  |  |12353|      0|#define no_digits() do {yyerror(p,"numeric literal without digits"); return 0;} while (0)
  |  |  ------------------
  |  |  |  Branch (12353:88): [Folded - Ignored]
  |  |  ------------------
  ------------------
12375|      0|        }
12376|      0|        else if (nondigit) goto trailing_uc;
  ------------------
  |  Branch (12376:18): [True: 0, False: 0]
  ------------------
12377|      0|        suffix = number_literal_suffix(p);
12378|      0|        pylval.nd = new_int(p, tok(p), 16, suffix);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
12379|      0|        return tINTEGER;
12380|      0|      }
12381|  6.83k|      if (c == 'b' || c == 'B') {
  ------------------
  |  Branch (12381:11): [True: 0, False: 6.83k]
  |  Branch (12381:23): [True: 0, False: 6.83k]
  ------------------
12382|       |        /* binary */
12383|      0|        c = nextc(p);
12384|      0|        if (c == '0' || c == '1') {
  ------------------
  |  Branch (12384:13): [True: 0, False: 0]
  |  Branch (12384:25): [True: 0, False: 0]
  ------------------
12385|      0|          do {
12386|      0|            if (c == '_') {
  ------------------
  |  Branch (12386:17): [True: 0, False: 0]
  ------------------
12387|      0|              if (nondigit) break;
  ------------------
  |  Branch (12387:19): [True: 0, False: 0]
  ------------------
12388|      0|              nondigit = c;
12389|      0|              continue;
12390|      0|            }
12391|      0|            if (c != '0' && c != '1') break;
  ------------------
  |  Branch (12391:17): [True: 0, False: 0]
  |  Branch (12391:29): [True: 0, False: 0]
  ------------------
12392|      0|            nondigit = 0;
12393|      0|            tokadd(p, c);
12394|      0|          } while ((c = nextc(p)) >= 0);
  ------------------
  |  Branch (12394:20): [True: 0, False: 0]
  ------------------
12395|      0|        }
12396|      0|        pushback(p, c);
12397|      0|        tokfix(p);
12398|      0|        if (toklen(p) == start) {
  ------------------
  |  Branch (12398:13): [True: 0, False: 0]
  ------------------
12399|      0|          no_digits();
  ------------------
  |  |12353|      0|#define no_digits() do {yyerror(p,"numeric literal without digits"); return 0;} while (0)
  |  |  ------------------
  |  |  |  Branch (12353:88): [Folded - Ignored]
  |  |  ------------------
  ------------------
12400|      0|        }
12401|      0|        else if (nondigit) goto trailing_uc;
  ------------------
  |  Branch (12401:18): [True: 0, False: 0]
  ------------------
12402|      0|        suffix = number_literal_suffix(p);
12403|      0|        pylval.nd = new_int(p, tok(p), 2, suffix);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
12404|      0|        return tINTEGER;
12405|      0|      }
12406|  6.83k|      if (c == 'd' || c == 'D') {
  ------------------
  |  Branch (12406:11): [True: 0, False: 6.83k]
  |  Branch (12406:23): [True: 0, False: 6.83k]
  ------------------
12407|       |        /* decimal */
12408|      0|        c = nextc(p);
12409|      0|        if (c >= 0 && ISDIGIT(c)) {
  ------------------
  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  ------------------
  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12409:13): [True: 0, False: 0]
  ------------------
12410|      0|          do {
12411|      0|            if (c == '_') {
  ------------------
  |  Branch (12411:17): [True: 0, False: 0]
  ------------------
12412|      0|              if (nondigit) break;
  ------------------
  |  Branch (12412:19): [True: 0, False: 0]
  ------------------
12413|      0|              nondigit = c;
12414|      0|              continue;
12415|      0|            }
12416|      0|            if (!ISDIGIT(c)) break;
  ------------------
  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  ------------------
  |  Branch (12416:17): [True: 0, False: 0]
  ------------------
12417|      0|            nondigit = 0;
12418|      0|            tokadd(p, c);
12419|      0|          } while ((c = nextc(p)) >= 0);
  ------------------
  |  Branch (12419:20): [True: 0, False: 0]
  ------------------
12420|      0|        }
12421|      0|        pushback(p, c);
12422|      0|        tokfix(p);
12423|      0|        if (toklen(p) == start) {
  ------------------
  |  Branch (12423:13): [True: 0, False: 0]
  ------------------
12424|      0|          no_digits();
  ------------------
  |  |12353|      0|#define no_digits() do {yyerror(p,"numeric literal without digits"); return 0;} while (0)
  |  |  ------------------
  |  |  |  Branch (12353:88): [Folded - Ignored]
  |  |  ------------------
  ------------------
12425|      0|        }
12426|      0|        else if (nondigit) goto trailing_uc;
  ------------------
  |  Branch (12426:18): [True: 0, False: 0]
  ------------------
12427|      0|        suffix = number_literal_suffix(p);
12428|      0|        pylval.nd = new_int(p, tok(p), 10, suffix);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
12429|      0|        return tINTEGER;
12430|      0|      }
12431|  6.83k|      if (c == '_') {
  ------------------
  |  Branch (12431:11): [True: 0, False: 6.83k]
  ------------------
12432|       |        /* 0_0 */
12433|      0|        goto octal_number;
12434|      0|      }
12435|  6.83k|      if (c == 'o' || c == 'O') {
  ------------------
  |  Branch (12435:11): [True: 0, False: 6.83k]
  |  Branch (12435:23): [True: 0, False: 6.83k]
  ------------------
12436|       |        /* prefixed octal */
12437|      0|        c = nextc(p);
12438|      0|        if (c < 0 || c == '_' || !ISDIGIT(c)) {
  ------------------
  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  ------------------
  |  Branch (12438:13): [True: 0, False: 0]
  |  Branch (12438:22): [True: 0, False: 0]
  |  Branch (12438:34): [True: 0, False: 0]
  ------------------
12439|      0|          no_digits();
  ------------------
  |  |12353|      0|#define no_digits() do {yyerror(p,"numeric literal without digits"); return 0;} while (0)
  |  |  ------------------
  |  |  |  Branch (12353:88): [Folded - Ignored]
  |  |  ------------------
  ------------------
12440|      0|        }
12441|      0|      }
12442|  6.83k|      if (c >= '0' && c <= '7') {
  ------------------
  |  Branch (12442:11): [True: 0, False: 6.83k]
  |  Branch (12442:23): [True: 0, False: 0]
  ------------------
12443|       |        /* octal */
12444|      0|        octal_number:
12445|      0|        do {
12446|      0|          if (c == '_') {
  ------------------
  |  Branch (12446:15): [True: 0, False: 0]
  ------------------
12447|      0|            if (nondigit) break;
  ------------------
  |  Branch (12447:17): [True: 0, False: 0]
  ------------------
12448|      0|            nondigit = c;
12449|      0|            continue;
12450|      0|          }
12451|      0|          if (c < '0' || c > '9') break;
  ------------------
  |  Branch (12451:15): [True: 0, False: 0]
  |  Branch (12451:26): [True: 0, False: 0]
  ------------------
12452|      0|          if (c > '7') goto invalid_octal;
  ------------------
  |  Branch (12452:15): [True: 0, False: 0]
  ------------------
12453|      0|          nondigit = 0;
12454|      0|          tokadd(p, c);
12455|      0|        } while ((c = nextc(p)) >= 0);
  ------------------
  |  Branch (12455:18): [True: 0, False: 0]
  ------------------
12456|       |
12457|      0|        if (toklen(p) > start) {
  ------------------
  |  Branch (12457:13): [True: 0, False: 0]
  ------------------
12458|      0|          pushback(p, c);
12459|      0|          tokfix(p);
12460|      0|          if (nondigit) goto trailing_uc;
  ------------------
  |  Branch (12460:15): [True: 0, False: 0]
  ------------------
12461|      0|          suffix = number_literal_suffix(p);
12462|      0|          pylval.nd = new_int(p, tok(p), 8, suffix);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
12463|      0|          return tINTEGER;
12464|      0|        }
12465|      0|        if (nondigit) {
  ------------------
  |  Branch (12465:13): [True: 0, False: 0]
  ------------------
12466|      0|          pushback(p, c);
12467|      0|          goto trailing_uc;
12468|      0|        }
12469|      0|      }
12470|  6.83k|      if (c > '7' && c <= '9') {
  ------------------
  |  Branch (12470:11): [True: 0, False: 6.83k]
  |  Branch (12470:22): [True: 0, False: 0]
  ------------------
12471|      0|        invalid_octal:
12472|      0|        yyerror(p, "Invalid octal digit");
12473|      0|      }
12474|  6.83k|      else if (c == '.' || c == 'e' || c == 'E') {
  ------------------
  |  Branch (12474:16): [True: 0, False: 6.83k]
  |  Branch (12474:28): [True: 0, False: 6.83k]
  |  Branch (12474:40): [True: 0, False: 6.83k]
  ------------------
12475|      0|        tokadd(p, '0');
12476|      0|      }
12477|  6.83k|      else {
12478|  6.83k|        pushback(p, c);
12479|  6.83k|        suffix = number_literal_suffix(p);
12480|  6.83k|        pylval.nd = new_int(p, "0", 10, suffix);
  ------------------
  |  |10738|  6.83k|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
12481|  6.83k|        return tINTEGER;
12482|  6.83k|      }
12483|  6.83k|    }
12484|       |
12485|  1.22M|    for (;;) {
12486|  1.22M|      switch (c) {
12487|   596k|      case '0': case '1': case '2': case '3': case '4':
  ------------------
  |  Branch (12487:7): [True: 1.14k, False: 1.22M]
  |  Branch (12487:17): [True: 590k, False: 635k]
  |  Branch (12487:27): [True: 2.39k, False: 1.22M]
  |  Branch (12487:37): [True: 1.53k, False: 1.22M]
  |  Branch (12487:47): [True: 1.39k, False: 1.22M]
  ------------------
12488|   614k|      case '5': case '6': case '7': case '8': case '9':
  ------------------
  |  Branch (12488:7): [True: 1.99k, False: 1.22M]
  |  Branch (12488:17): [True: 5.56k, False: 1.21M]
  |  Branch (12488:27): [True: 2.08k, False: 1.22M]
  |  Branch (12488:37): [True: 6.57k, False: 1.21M]
  |  Branch (12488:47): [True: 1.58k, False: 1.22M]
  ------------------
12489|   614k|        nondigit = 0;
12490|   614k|        tokadd(p, c);
12491|   614k|        break;
12492|       |
12493|      0|      case '.':
  ------------------
  |  Branch (12493:7): [True: 0, False: 1.22M]
  ------------------
12494|      0|        if (nondigit) goto trailing_uc;
  ------------------
  |  Branch (12494:13): [True: 0, False: 0]
  ------------------
12495|      0|        if (seen_point || seen_e) {
  ------------------
  |  Branch (12495:13): [True: 0, False: 0]
  |  Branch (12495:27): [True: 0, False: 0]
  ------------------
12496|      0|          goto decode_num;
12497|      0|        }
12498|      0|        else {
12499|      0|          int c0 = nextc(p);
12500|      0|          if (c0 < 0 || !ISDIGIT(c0)) {
  ------------------
  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  ------------------
  |  Branch (12500:15): [True: 0, False: 0]
  |  Branch (12500:25): [True: 0, False: 0]
  ------------------
12501|      0|            pushback(p, c0);
12502|      0|            goto decode_num;
12503|      0|          }
12504|      0|          c = c0;
12505|      0|        }
12506|      0|        tokadd(p, '.');
12507|      0|        tokadd(p, c);
12508|      0|        is_float++;
12509|      0|        seen_point++;
12510|      0|        nondigit = 0;
12511|      0|        break;
12512|       |
12513|      0|      case 'e':
  ------------------
  |  Branch (12513:7): [True: 0, False: 1.22M]
  ------------------
12514|      0|      case 'E':
  ------------------
  |  Branch (12514:7): [True: 0, False: 1.22M]
  ------------------
12515|      0|        if (nondigit) {
  ------------------
  |  Branch (12515:13): [True: 0, False: 0]
  ------------------
12516|      0|          pushback(p, c);
12517|      0|          c = nondigit;
12518|      0|          goto decode_num;
12519|      0|        }
12520|      0|        if (seen_e) {
  ------------------
  |  Branch (12520:13): [True: 0, False: 0]
  ------------------
12521|      0|          goto decode_num;
12522|      0|        }
12523|      0|        tokadd(p, c);
12524|      0|        seen_e++;
12525|      0|        is_float++;
12526|      0|        nondigit = c;
12527|      0|        c = nextc(p);
12528|      0|        if (c != '-' && c != '+') continue;
  ------------------
  |  Branch (12528:13): [True: 0, False: 0]
  |  Branch (12528:25): [True: 0, False: 0]
  ------------------
12529|      0|        tokadd(p, c);
12530|      0|        nondigit = c;
12531|      0|        break;
12532|       |
12533|      0|      case '_':       /* '_' in number just ignored */
  ------------------
  |  Branch (12533:7): [True: 0, False: 1.22M]
  ------------------
12534|      0|        if (nondigit) goto decode_num;
  ------------------
  |  Branch (12534:13): [True: 0, False: 0]
  ------------------
12535|      0|        nondigit = c;
12536|      0|        break;
12537|       |
12538|   610k|      default:
  ------------------
  |  Branch (12538:7): [True: 610k, False: 614k]
  ------------------
12539|   610k|        goto decode_num;
12540|  1.22M|      }
12541|   614k|      c = nextc(p);
12542|   614k|    }
12543|       |
12544|   610k|    decode_num:
12545|   610k|    pushback(p, c);
12546|   610k|    if (nondigit) {
  ------------------
  |  Branch (12546:9): [True: 0, False: 610k]
  ------------------
12547|      0|      trailing_uc:
12548|      0|      yyerror_c(p, "trailing non digit in number: ", (char)nondigit);
12549|      0|    }
12550|   610k|    tokfix(p);
12551|   610k|    if (is_float) {
  ------------------
  |  Branch (12551:9): [True: 0, False: 610k]
  ------------------
12552|       |#ifdef MRB_NO_FLOAT
12553|       |      yywarning_s(p, "floating-point numbers are not supported", tok(p));
12554|       |      pylval.nd = new_int(p, "0", 10, 0);
12555|       |      return tINTEGER;
12556|       |#else
12557|      0|      double d;
12558|       |
12559|      0|      if (!mrb_read_float(tok(p), NULL, &d)) {
  ------------------
  |  Branch (12559:11): [True: 0, False: 0]
  ------------------
12560|      0|        yywarning_s(p, "corrupted float value", tok(p));
12561|      0|      }
12562|      0|      suffix = number_literal_suffix(p);
12563|      0|      if (seen_e && (suffix & NUM_SUFFIX_R)) {
  ------------------
  |  |  138|      0|#define NUM_SUFFIX_R   (1<<0)
  ------------------
  |  Branch (12563:11): [True: 0, False: 0]
  |  Branch (12563:21): [True: 0, False: 0]
  ------------------
12564|      0|        pushback(p, 'r');
12565|      0|        suffix &= ~NUM_SUFFIX_R;
  ------------------
  |  |  138|      0|#define NUM_SUFFIX_R   (1<<0)
  ------------------
12566|      0|      }
12567|      0|      pylval.nd = new_float(p, tok(p), suffix);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
12568|      0|      return tFLOAT;
12569|      0|#endif
12570|      0|    }
12571|   610k|    suffix = number_literal_suffix(p);
12572|   610k|    pylval.nd = new_int(p, tok(p), 10, suffix);
  ------------------
  |  |10738|   610k|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
12573|   610k|    return tINTEGER;
12574|   610k|  }
12575|       |
12576|   205k|  case ')':
  ------------------
  |  Branch (12576:3): [True: 205k, False: 4.59M]
  ------------------
12577|   252k|  case ']':
  ------------------
  |  Branch (12577:3): [True: 46.7k, False: 4.75M]
  ------------------
12578|   252k|    p->paren_nest--;
12579|       |    /* fall through */
12580|   254k|  case '}':
  ------------------
  |  Branch (12580:3): [True: 2.08k, False: 4.80M]
  ------------------
12581|   254k|    COND_LEXPOP();
  ------------------
  |  |  116|   254k|#define COND_LEXPOP()   BITSTACK_LEXPOP(p->cond_stack)
  |  |  ------------------
  |  |  |  |  111|   254k|#define BITSTACK_LEXPOP(stack)  ((stack) = ((stack) >> 1) | ((stack) & 1))
  |  |  ------------------
  ------------------
12582|   254k|    CMDARG_LEXPOP();
  ------------------
  |  |  121|   254k|#define CMDARG_LEXPOP() BITSTACK_LEXPOP(p->cmdarg_stack)
  |  |  ------------------
  |  |  |  |  111|   254k|#define BITSTACK_LEXPOP(stack)  ((stack) = ((stack) >> 1) | ((stack) & 1))
  |  |  ------------------
  ------------------
12583|   254k|    if (c == ')')
  ------------------
  |  Branch (12583:9): [True: 205k, False: 48.8k]
  ------------------
12584|   205k|      p->lstate = EXPR_ENDFN;
12585|  48.8k|    else
12586|  48.8k|      p->lstate = EXPR_END;
12587|   254k|    return c;
12588|       |
12589|  7.41k|  case ':':
  ------------------
  |  Branch (12589:3): [True: 7.41k, False: 4.79M]
  ------------------
12590|  7.41k|    c = nextc(p);
12591|  7.41k|    if (c == ':') {
  ------------------
  |  Branch (12591:9): [True: 785, False: 6.62k]
  ------------------
12592|    785|      if (IS_BEG() || p->lstate == EXPR_CLASS || IS_SPCARG(-1)) {
  ------------------
  |  |11138|  1.57k|#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
  |  |  ------------------
  |  |  |  Branch (11138:19): [True: 0, False: 785]
  |  |  |  Branch (11138:44): [True: 0, False: 785]
  |  |  |  Branch (11138:69): [True: 0, False: 785]
  |  |  |  Branch (11138:96): [True: 0, False: 785]
  |  |  ------------------
  ------------------
                    if (IS_BEG() || p->lstate == EXPR_CLASS || IS_SPCARG(-1)) {
  ------------------
  |  |11139|    785|#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  |11136|  1.57k|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (11136:19): [True: 785, False: 0]
  |  |  |  |  |  Branch (11136:44): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1338:21): [Folded - Ignored]
  |  |  |  |  |  Branch (1338:35): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11139:35): [True: 0, False: 785]
  |  |  ------------------
  ------------------
  |  Branch (12592:23): [True: 0, False: 785]
  ------------------
12593|      0|        p->lstate = EXPR_BEG;
12594|      0|        return tCOLON3;
12595|      0|      }
12596|    785|      p->lstate = EXPR_DOT;
12597|    785|      return tCOLON2;
12598|    785|    }
12599|  6.62k|    if (!space_seen && IS_END()) {
  ------------------
  |  |11137|      0|#define IS_END() (p->lstate == EXPR_END || p->lstate == EXPR_ENDARG || p->lstate == EXPR_ENDFN)
  |  |  ------------------
  |  |  |  Branch (11137:19): [True: 0, False: 0]
  |  |  |  Branch (11137:44): [True: 0, False: 0]
  |  |  |  Branch (11137:72): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12599:9): [True: 0, False: 6.62k]
  ------------------
12600|      0|      pushback(p, c);
12601|      0|      p->lstate = EXPR_BEG;
12602|      0|      return tLABEL_TAG;
12603|      0|    }
12604|  6.62k|    if (IS_END() || ISSPACE(c) || c == '#') {
  ------------------
  |  |11137|  13.2k|#define IS_END() (p->lstate == EXPR_END || p->lstate == EXPR_ENDARG || p->lstate == EXPR_ENDFN)
  |  |  ------------------
  |  |  |  Branch (11137:19): [True: 805, False: 5.82k]
  |  |  |  Branch (11137:44): [True: 4.33k, False: 1.49k]
  |  |  |  Branch (11137:72): [True: 1.49k, False: 0]
  |  |  ------------------
  ------------------
                  if (IS_END() || ISSPACE(c) || c == '#') {
  ------------------
  |  | 1338|  6.62k|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  ------------------
  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12604:35): [True: 0, False: 0]
  ------------------
12605|  6.62k|      pushback(p, c);
12606|  6.62k|      p->lstate = EXPR_BEG;
12607|  6.62k|      return ':';
12608|  6.62k|    }
12609|      0|    pushback(p, c);
12610|      0|    p->lstate = EXPR_FNAME;
12611|      0|    return tSYMBEG;
12612|       |
12613|  12.4k|  case '/':
  ------------------
  |  Branch (12613:3): [True: 12.4k, False: 4.79M]
  ------------------
12614|  12.4k|    if (IS_BEG()) {
  ------------------
  |  |11138|  12.4k|#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
  |  |  ------------------
  |  |  |  Branch (11138:19): [True: 0, False: 12.4k]
  |  |  |  Branch (11138:44): [True: 0, False: 12.4k]
  |  |  |  Branch (11138:69): [True: 0, False: 12.4k]
  |  |  |  Branch (11138:96): [True: 0, False: 12.4k]
  |  |  ------------------
  ------------------
12615|      0|      p->lex_strterm = new_strterm(p, str_regexp, '/', 0);
12616|      0|      return tREGEXP_BEG;
12617|      0|    }
12618|  12.4k|    if ((c = nextc(p)) == '=') {
  ------------------
  |  Branch (12618:9): [True: 0, False: 12.4k]
  ------------------
12619|      0|      pylval.id = intern_op(div);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                    pylval.id = intern_op(div);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
12620|      0|      p->lstate = EXPR_BEG;
12621|      0|      return tOP_ASGN;
12622|      0|    }
12623|  12.4k|    pushback(p, c);
12624|  12.4k|    if (IS_SPCARG(c)) {
  ------------------
  |  |11139|  12.4k|#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  |11136|  24.8k|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (11136:19): [True: 0, False: 12.4k]
  |  |  |  |  |  Branch (11136:44): [True: 0, False: 12.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11139:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12625|      0|      p->lex_strterm = new_strterm(p, str_regexp, '/', 0);
12626|      0|      return tREGEXP_BEG;
12627|      0|    }
12628|  12.4k|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (12628:9): [True: 0, False: 12.4k]
  |  Branch (12628:36): [True: 0, False: 12.4k]
  ------------------
12629|      0|      p->lstate = EXPR_ARG;
12630|      0|    }
12631|  12.4k|    else {
12632|  12.4k|      p->lstate = EXPR_BEG;
12633|  12.4k|    }
12634|  12.4k|    return '/';
12635|       |
12636|  5.74k|  case '^':
  ------------------
  |  Branch (12636:3): [True: 5.74k, False: 4.79M]
  ------------------
12637|  5.74k|    if ((c = nextc(p)) == '=') {
  ------------------
  |  Branch (12637:9): [True: 0, False: 5.74k]
  ------------------
12638|      0|      pylval.id = intern_op(xor);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                    pylval.id = intern_op(xor);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
12639|      0|      p->lstate = EXPR_BEG;
12640|      0|      return tOP_ASGN;
12641|      0|    }
12642|  5.74k|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (12642:9): [True: 0, False: 5.74k]
  |  Branch (12642:36): [True: 0, False: 5.74k]
  ------------------
12643|      0|      p->lstate = EXPR_ARG;
12644|      0|    }
12645|  5.74k|    else {
12646|  5.74k|      p->lstate = EXPR_BEG;
12647|  5.74k|    }
12648|  5.74k|    pushback(p, c);
12649|  5.74k|    return '^';
12650|       |
12651|      0|  case ';':
  ------------------
  |  Branch (12651:3): [True: 0, False: 4.80M]
  ------------------
12652|      0|    p->lstate = EXPR_BEG;
12653|      0|    return ';';
12654|       |
12655|   460k|  case ',':
  ------------------
  |  Branch (12655:3): [True: 460k, False: 4.34M]
  ------------------
12656|   460k|    p->lstate = EXPR_BEG;
12657|   460k|    return ',';
12658|       |
12659|      0|  case '~':
  ------------------
  |  Branch (12659:3): [True: 0, False: 4.80M]
  ------------------
12660|      0|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (12660:9): [True: 0, False: 0]
  |  Branch (12660:36): [True: 0, False: 0]
  ------------------
12661|      0|      if ((c = nextc(p)) != '@') {
  ------------------
  |  Branch (12661:11): [True: 0, False: 0]
  ------------------
12662|      0|        pushback(p, c);
12663|      0|      }
12664|      0|      p->lstate = EXPR_ARG;
12665|      0|    }
12666|      0|    else {
12667|      0|      p->lstate = EXPR_BEG;
12668|      0|    }
12669|      0|    return '~';
12670|       |
12671|   205k|  case '(':
  ------------------
  |  Branch (12671:3): [True: 205k, False: 4.59M]
  ------------------
12672|   205k|    if (IS_BEG()) {
  ------------------
  |  |11138|   205k|#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
  |  |  ------------------
  |  |  |  Branch (11138:19): [True: 125k, False: 80.3k]
  |  |  |  Branch (11138:44): [True: 0, False: 80.3k]
  |  |  |  Branch (11138:69): [True: 13.7k, False: 66.6k]
  |  |  |  Branch (11138:96): [True: 0, False: 66.6k]
  |  |  ------------------
  ------------------
12673|   139k|      c = tLPAREN;
12674|   139k|    }
12675|  66.6k|    else if (IS_SPCARG(-1)) {
  ------------------
  |  |11139|  66.6k|#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  |11136|   133k|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (11136:19): [True: 66.1k, False: 476]
  |  |  |  |  |  Branch (11136:44): [True: 0, False: 476]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1338:21): [Folded - Ignored]
  |  |  |  |  |  Branch (1338:35): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11139:35): [True: 0, False: 66.1k]
  |  |  ------------------
  ------------------
12676|      0|      c = tLPAREN_ARG;
12677|      0|    }
12678|  66.6k|    else if (p->lstate == EXPR_END && space_seen) {
  ------------------
  |  Branch (12678:14): [True: 0, False: 66.6k]
  |  Branch (12678:39): [True: 0, False: 0]
  ------------------
12679|      0|      c = tLPAREN_ARG;
12680|      0|    }
12681|   205k|    p->paren_nest++;
12682|   205k|    COND_PUSH(0);
  ------------------
  |  |  114|   205k|#define COND_PUSH(n)    BITSTACK_PUSH(p->cond_stack, (n))
  |  |  ------------------
  |  |  |  |  109|   205k|#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
  |  |  ------------------
  ------------------
12683|   205k|    CMDARG_PUSH(0);
  ------------------
  |  |  119|   205k|#define CMDARG_PUSH(n)  BITSTACK_PUSH(p->cmdarg_stack, (n))
  |  |  ------------------
  |  |  |  |  109|   205k|#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
  |  |  ------------------
  ------------------
12684|   205k|    p->lstate = EXPR_BEG;
12685|   205k|    return c;
12686|       |
12687|  46.7k|  case '[':
  ------------------
  |  Branch (12687:3): [True: 46.7k, False: 4.75M]
  ------------------
12688|  46.7k|    p->paren_nest++;
12689|  46.7k|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (12689:9): [True: 0, False: 46.7k]
  |  Branch (12689:36): [True: 0, False: 46.7k]
  ------------------
12690|      0|      p->lstate = EXPR_ARG;
12691|      0|      p->paren_nest--;
12692|      0|      if ((c = nextc(p)) == ']') {
  ------------------
  |  Branch (12692:11): [True: 0, False: 0]
  ------------------
12693|      0|        if ((c = nextc(p)) == '=') {
  ------------------
  |  Branch (12693:13): [True: 0, False: 0]
  ------------------
12694|      0|          return tASET;
12695|      0|        }
12696|      0|        pushback(p, c);
12697|      0|        return tAREF;
12698|      0|      }
12699|      0|      pushback(p, c);
12700|      0|      return '[';
12701|      0|    }
12702|  46.7k|    else if (IS_BEG()) {
  ------------------
  |  |11138|  46.7k|#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
  |  |  ------------------
  |  |  |  Branch (11138:19): [True: 46.7k, False: 0]
  |  |  |  Branch (11138:44): [True: 0, False: 0]
  |  |  |  Branch (11138:69): [True: 0, False: 0]
  |  |  |  Branch (11138:96): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12703|  46.7k|      c = tLBRACK;
12704|  46.7k|    }
12705|      0|    else if (IS_ARG() && space_seen) {
  ------------------
  |  |11136|      0|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  ------------------
  |  |  |  Branch (11136:19): [True: 0, False: 0]
  |  |  |  Branch (11136:44): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12705:26): [True: 0, False: 0]
  ------------------
12706|      0|      c = tLBRACK;
12707|      0|    }
12708|  46.7k|    p->lstate = EXPR_BEG;
12709|  46.7k|    COND_PUSH(0);
  ------------------
  |  |  114|  46.7k|#define COND_PUSH(n)    BITSTACK_PUSH(p->cond_stack, (n))
  |  |  ------------------
  |  |  |  |  109|  46.7k|#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
  |  |  ------------------
  ------------------
12710|  46.7k|    CMDARG_PUSH(0);
  ------------------
  |  |  119|  46.7k|#define CMDARG_PUSH(n)  BITSTACK_PUSH(p->cmdarg_stack, (n))
  |  |  ------------------
  |  |  |  |  109|  46.7k|#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
  |  |  ------------------
  ------------------
12711|  46.7k|    return c;
12712|       |
12713|  2.08k|  case '{':
  ------------------
  |  Branch (12713:3): [True: 2.08k, False: 4.80M]
  ------------------
12714|  2.08k|    if (p->lpar_beg && p->lpar_beg == p->paren_nest) {
  ------------------
  |  Branch (12714:9): [True: 0, False: 2.08k]
  |  Branch (12714:24): [True: 0, False: 0]
  ------------------
12715|      0|      p->lstate = EXPR_BEG;
12716|      0|      p->lpar_beg = 0;
12717|      0|      p->paren_nest--;
12718|      0|      COND_PUSH(0);
  ------------------
  |  |  114|      0|#define COND_PUSH(n)    BITSTACK_PUSH(p->cond_stack, (n))
  |  |  ------------------
  |  |  |  |  109|      0|#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
  |  |  ------------------
  ------------------
12719|      0|      CMDARG_PUSH(0);
  ------------------
  |  |  119|      0|#define CMDARG_PUSH(n)  BITSTACK_PUSH(p->cmdarg_stack, (n))
  |  |  ------------------
  |  |  |  |  109|      0|#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
  |  |  ------------------
  ------------------
12720|      0|      return tLAMBEG;
12721|      0|    }
12722|  2.08k|    if (IS_ARG() || p->lstate == EXPR_END || p->lstate == EXPR_ENDFN)
  ------------------
  |  |11136|  4.16k|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  ------------------
  |  |  |  Branch (11136:19): [True: 0, False: 2.08k]
  |  |  |  Branch (11136:44): [True: 0, False: 2.08k]
  |  |  ------------------
  ------------------
  |  Branch (12722:21): [True: 0, False: 2.08k]
  |  Branch (12722:46): [True: 0, False: 2.08k]
  ------------------
12723|      0|      c = '{';          /* block (primary) */
12724|  2.08k|    else if (p->lstate == EXPR_ENDARG)
  ------------------
  |  Branch (12724:14): [True: 0, False: 2.08k]
  ------------------
12725|      0|      c = tLBRACE_ARG;  /* block (expr) */
12726|  2.08k|    else
12727|  2.08k|      c = tLBRACE;      /* hash */
12728|  2.08k|    COND_PUSH(0);
  ------------------
  |  |  114|  2.08k|#define COND_PUSH(n)    BITSTACK_PUSH(p->cond_stack, (n))
  |  |  ------------------
  |  |  |  |  109|  2.08k|#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
  |  |  ------------------
  ------------------
12729|  2.08k|    CMDARG_PUSH(0);
  ------------------
  |  |  119|  2.08k|#define CMDARG_PUSH(n)  BITSTACK_PUSH(p->cmdarg_stack, (n))
  |  |  ------------------
  |  |  |  |  109|  2.08k|#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
  |  |  ------------------
  ------------------
12730|  2.08k|    p->lstate = EXPR_BEG;
12731|  2.08k|    return c;
12732|       |
12733|      0|  case '\\':
  ------------------
  |  Branch (12733:3): [True: 0, False: 4.80M]
  ------------------
12734|      0|    c = nextc(p);
12735|      0|    if (c == '\n') {
  ------------------
  |  Branch (12735:9): [True: 0, False: 0]
  ------------------
12736|      0|      p->lineno+=nlines; nlines=1;
12737|      0|      p->column = 0;
12738|      0|      space_seen = 1;
12739|      0|      goto retry; /* skip \\n */
12740|      0|    }
12741|      0|    pushback(p, c);
12742|      0|    return '\\';
12743|       |
12744|  5.71k|  case '%':
  ------------------
  |  Branch (12744:3): [True: 5.71k, False: 4.79M]
  ------------------
12745|  5.71k|    if (IS_BEG()) {
  ------------------
  |  |11138|  5.71k|#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
  |  |  ------------------
  |  |  |  Branch (11138:19): [True: 0, False: 5.71k]
  |  |  |  Branch (11138:44): [True: 0, False: 5.71k]
  |  |  |  Branch (11138:69): [True: 0, False: 5.71k]
  |  |  |  Branch (11138:96): [True: 0, False: 5.71k]
  |  |  ------------------
  ------------------
12746|      0|      int term;
12747|      0|      int paren;
12748|       |
12749|      0|      c = nextc(p);
12750|      0|      quotation:
12751|      0|      if (c < 0 || !ISALNUM(c)) {
  ------------------
  |  | 1344|      0|#define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  ------------------
  |  |  |  | 1341|      0|#define ISALPHA(c) ((((unsigned)(c) | 0x20) - 'a') < 26)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1341:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  ------------------
  |  |  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12751:11): [True: 0, False: 0]
  ------------------
12752|      0|        term = c;
12753|      0|        c = 'Q';
12754|      0|      }
12755|      0|      else {
12756|      0|        term = nextc(p);
12757|      0|        if (ISALNUM(term)) {
  ------------------
  |  | 1344|      0|#define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  ------------------
  |  |  |  | 1341|      0|#define ISALPHA(c) ((((unsigned)(c) | 0x20) - 'a') < 26)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1341:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  ------------------
  |  |  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12758|      0|          yyerror(p, "unknown type of %string");
12759|      0|          return 0;
12760|      0|        }
12761|      0|      }
12762|      0|      if (c < 0 || term < 0) {
  ------------------
  |  Branch (12762:11): [True: 0, False: 0]
  |  Branch (12762:20): [True: 0, False: 0]
  ------------------
12763|      0|        yyerror(p, "unterminated quoted string meets end of file");
12764|      0|        return 0;
12765|      0|      }
12766|      0|      paren = term;
12767|      0|      if (term == '(') term = ')';
  ------------------
  |  Branch (12767:11): [True: 0, False: 0]
  ------------------
12768|      0|      else if (term == '[') term = ']';
  ------------------
  |  Branch (12768:16): [True: 0, False: 0]
  ------------------
12769|      0|      else if (term == '{') term = '}';
  ------------------
  |  Branch (12769:16): [True: 0, False: 0]
  ------------------
12770|      0|      else if (term == '<') term = '>';
  ------------------
  |  Branch (12770:16): [True: 0, False: 0]
  ------------------
12771|      0|      else paren = 0;
12772|       |
12773|      0|      switch (c) {
12774|      0|      case 'Q':
  ------------------
  |  Branch (12774:7): [True: 0, False: 0]
  ------------------
12775|      0|        p->lex_strterm = new_strterm(p, str_dquote, term, paren);
12776|      0|        return tSTRING_BEG;
12777|       |
12778|      0|      case 'q':
  ------------------
  |  Branch (12778:7): [True: 0, False: 0]
  ------------------
12779|      0|        p->lex_strterm = new_strterm(p, str_squote, term, paren);
12780|      0|        return parse_string(p);
12781|       |
12782|      0|      case 'W':
  ------------------
  |  Branch (12782:7): [True: 0, False: 0]
  ------------------
12783|      0|        p->lex_strterm = new_strterm(p, str_dword, term, paren);
12784|      0|        return tWORDS_BEG;
12785|       |
12786|      0|      case 'w':
  ------------------
  |  Branch (12786:7): [True: 0, False: 0]
  ------------------
12787|      0|        p->lex_strterm = new_strterm(p, str_sword, term, paren);
12788|      0|        return tWORDS_BEG;
12789|       |
12790|      0|      case 'x':
  ------------------
  |  Branch (12790:7): [True: 0, False: 0]
  ------------------
12791|      0|        p->lex_strterm = new_strterm(p, str_xquote, term, paren);
12792|      0|        return tXSTRING_BEG;
12793|       |
12794|      0|      case 'r':
  ------------------
  |  Branch (12794:7): [True: 0, False: 0]
  ------------------
12795|      0|        p->lex_strterm = new_strterm(p, str_regexp, term, paren);
12796|      0|        return tREGEXP_BEG;
12797|       |
12798|      0|      case 's':
  ------------------
  |  Branch (12798:7): [True: 0, False: 0]
  ------------------
12799|      0|        p->lex_strterm = new_strterm(p, str_ssym, term, paren);
12800|      0|        return tSYMBEG;
12801|       |
12802|      0|      case 'I':
  ------------------
  |  Branch (12802:7): [True: 0, False: 0]
  ------------------
12803|      0|        p->lex_strterm = new_strterm(p, str_dsymbols, term, paren);
12804|      0|        return tSYMBOLS_BEG;
12805|       |
12806|      0|      case 'i':
  ------------------
  |  Branch (12806:7): [True: 0, False: 0]
  ------------------
12807|      0|        p->lex_strterm = new_strterm(p, str_ssymbols, term, paren);
12808|      0|        return tSYMBOLS_BEG;
12809|       |
12810|      0|      default:
  ------------------
  |  Branch (12810:7): [True: 0, False: 0]
  ------------------
12811|      0|        yyerror(p, "unknown type of %string");
12812|      0|        return 0;
12813|      0|      }
12814|      0|    }
12815|  5.71k|    if ((c = nextc(p)) == '=') {
  ------------------
  |  Branch (12815:9): [True: 0, False: 5.71k]
  ------------------
12816|      0|      pylval.id = intern_op(mod);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                    pylval.id = intern_op(mod);
  ------------------
  |  |  155|      0|#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
  |  |  ------------------
  |  |  |  |   20|      0|#define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name
  |  |  ------------------
  ------------------
12817|      0|      p->lstate = EXPR_BEG;
12818|      0|      return tOP_ASGN;
12819|      0|    }
12820|  5.71k|    if (IS_SPCARG(c)) {
  ------------------
  |  |11139|  5.71k|#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  |11136|  11.4k|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (11136:19): [True: 0, False: 5.71k]
  |  |  |  |  |  Branch (11136:44): [True: 0, False: 5.71k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
  |  |  ------------------
  |  |  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11139:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12821|      0|      goto quotation;
12822|      0|    }
12823|  5.71k|    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
  ------------------
  |  Branch (12823:9): [True: 0, False: 5.71k]
  |  Branch (12823:36): [True: 0, False: 5.71k]
  ------------------
12824|      0|      p->lstate = EXPR_ARG;
12825|      0|    }
12826|  5.71k|    else {
12827|  5.71k|      p->lstate = EXPR_BEG;
12828|  5.71k|    }
12829|  5.71k|    pushback(p, c);
12830|  5.71k|    return '%';
12831|       |
12832|      0|  case '$':
  ------------------
  |  Branch (12832:3): [True: 0, False: 4.80M]
  ------------------
12833|      0|    p->lstate = EXPR_END;
12834|      0|    token_column = newtok(p);
12835|      0|    c = nextc(p);
12836|      0|    if (c < 0) {
  ------------------
  |  Branch (12836:9): [True: 0, False: 0]
  ------------------
12837|      0|      yyerror(p, "incomplete global variable syntax");
12838|      0|      return 0;
12839|      0|    }
12840|      0|    switch (c) {
12841|      0|    case '_':     /* $_: last read line string */
  ------------------
  |  Branch (12841:5): [True: 0, False: 0]
  ------------------
12842|      0|      c = nextc(p);
12843|      0|      if (c >= 0 && identchar(c)) { /* if there is more after _ it is a variable */
  ------------------
  |  |  105|      0|#define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
  |  |  ------------------
  |  |  |  | 1344|      0|#define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1341|      0|#define ISALPHA(c) ((((unsigned)(c) | 0x20) - 'a') < 26)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1341:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
  |  |  ------------------
  |  |  |  | 1336|      0|#define ISASCII(c) ((unsigned)(c) <= 0x7f)
  |  |  ------------------
  |  |  |  Branch (105:37): [True: 0, False: 0]
  |  |  |  Branch (105:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12843:11): [True: 0, False: 0]
  ------------------
12844|      0|        tokadd(p, '$');
12845|      0|        tokadd(p, c);
12846|      0|        break;
12847|      0|      }
12848|      0|      pushback(p, c);
12849|      0|      c = '_';
12850|       |      /* fall through */
12851|      0|    case '~':     /* $~: match-data */
  ------------------
  |  Branch (12851:5): [True: 0, False: 0]
  ------------------
12852|      0|    case '*':     /* $*: argv */
  ------------------
  |  Branch (12852:5): [True: 0, False: 0]
  ------------------
12853|      0|    case '$':     /* $$: pid */
  ------------------
  |  Branch (12853:5): [True: 0, False: 0]
  ------------------
12854|      0|    case '?':     /* $?: last status */
  ------------------
  |  Branch (12854:5): [True: 0, False: 0]
  ------------------
12855|      0|    case '!':     /* $!: error string */
  ------------------
  |  Branch (12855:5): [True: 0, False: 0]
  ------------------
12856|      0|    case '@':     /* $@: error position */
  ------------------
  |  Branch (12856:5): [True: 0, False: 0]
  ------------------
12857|      0|    case '/':     /* $/: input record separator */
  ------------------
  |  Branch (12857:5): [True: 0, False: 0]
  ------------------
12858|      0|    case '\\':    /* $\: output record separator */
  ------------------
  |  Branch (12858:5): [True: 0, False: 0]
  ------------------
12859|      0|    case ';':     /* $;: field separator */
  ------------------
  |  Branch (12859:5): [True: 0, False: 0]
  ------------------
12860|      0|    case ',':     /* $,: output field separator */
  ------------------
  |  Branch (12860:5): [True: 0, False: 0]
  ------------------
12861|      0|    case '.':     /* $.: last read line number */
  ------------------
  |  Branch (12861:5): [True: 0, False: 0]
  ------------------
12862|      0|    case '=':     /* $=: ignorecase */
  ------------------
  |  Branch (12862:5): [True: 0, False: 0]
  ------------------
12863|      0|    case ':':     /* $:: load path */
  ------------------
  |  Branch (12863:5): [True: 0, False: 0]
  ------------------
12864|      0|    case '<':     /* $<: reading filename */
  ------------------
  |  Branch (12864:5): [True: 0, False: 0]
  ------------------
12865|      0|    case '>':     /* $>: default output handle */
  ------------------
  |  Branch (12865:5): [True: 0, False: 0]
  ------------------
12866|      0|    case '\"':    /* $": already loaded files */
  ------------------
  |  Branch (12866:5): [True: 0, False: 0]
  ------------------
12867|      0|      tokadd(p, '$');
12868|      0|      tokadd(p, c);
12869|      0|      tokfix(p);
12870|      0|      pylval.id = intern(tok(p), toklen(p));
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                    pylval.id = intern(tok(p), toklen(p));
  ------------------
  |  |  153|      0|#define intern(s,len) intern_gen(p,(s),(len))
  ------------------
12871|      0|      return tGVAR;
12872|       |
12873|      0|    case '-':
  ------------------
  |  Branch (12873:5): [True: 0, False: 0]
  ------------------
12874|      0|      tokadd(p, '$');
12875|      0|      tokadd(p, c);
12876|      0|      c = nextc(p);
12877|      0|      pushback(p, c);
12878|      0|      gvar:
12879|      0|      tokfix(p);
12880|      0|      pylval.id = intern(tok(p), toklen(p));
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                    pylval.id = intern(tok(p), toklen(p));
  ------------------
  |  |  153|      0|#define intern(s,len) intern_gen(p,(s),(len))
  ------------------
12881|      0|      return tGVAR;
12882|       |
12883|      0|    case '&':     /* $&: last match */
  ------------------
  |  Branch (12883:5): [True: 0, False: 0]
  ------------------
12884|      0|    case '`':     /* $`: string before last match */
  ------------------
  |  Branch (12884:5): [True: 0, False: 0]
  ------------------
12885|      0|    case '\'':    /* $': string after last match */
  ------------------
  |  Branch (12885:5): [True: 0, False: 0]
  ------------------
12886|      0|    case '+':     /* $+: string matches last pattern */
  ------------------
  |  Branch (12886:5): [True: 0, False: 0]
  ------------------
12887|      0|      if (last_state == EXPR_FNAME) {
  ------------------
  |  Branch (12887:11): [True: 0, False: 0]
  ------------------
12888|      0|        tokadd(p, '$');
12889|      0|        tokadd(p, c);
12890|      0|        goto gvar;
12891|      0|      }
12892|      0|      pylval.nd = new_back_ref(p, c);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
12893|      0|      return tBACK_REF;
12894|       |
12895|      0|    case '1': case '2': case '3':
  ------------------
  |  Branch (12895:5): [True: 0, False: 0]
  |  Branch (12895:15): [True: 0, False: 0]
  |  Branch (12895:25): [True: 0, False: 0]
  ------------------
12896|      0|    case '4': case '5': case '6':
  ------------------
  |  Branch (12896:5): [True: 0, False: 0]
  |  Branch (12896:15): [True: 0, False: 0]
  |  Branch (12896:25): [True: 0, False: 0]
  ------------------
12897|      0|    case '7': case '8': case '9':
  ------------------
  |  Branch (12897:5): [True: 0, False: 0]
  |  Branch (12897:15): [True: 0, False: 0]
  |  Branch (12897:25): [True: 0, False: 0]
  ------------------
12898|      0|      do {
12899|      0|        tokadd(p, c);
12900|      0|        c = nextc(p);
12901|      0|      } while (c >= 0 && ISDIGIT(c));
  ------------------
  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  ------------------
  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (12901:16): [True: 0, False: 0]
  ------------------
12902|      0|      pushback(p, c);
12903|      0|      if (last_state == EXPR_FNAME) goto gvar;
  ------------------
  |  Branch (12903:11): [True: 0, False: 0]
  ------------------
12904|      0|      tokfix(p);
12905|      0|      {
12906|      0|        mrb_int n;
12907|      0|        if (!mrb_read_int(tok(p), NULL, NULL, &n)) {
  ------------------
  |  Branch (12907:13): [True: 0, False: 0]
  ------------------
12908|      0|          yywarning(p, "capture group index too big; always nil");
12909|      0|          return keyword_nil;
12910|      0|        }
12911|      0|        pylval.nd = new_nth_ref(p, (int)n);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
12912|      0|      }
12913|      0|      return tNTH_REF;
12914|       |
12915|      0|    default:
  ------------------
  |  Branch (12915:5): [True: 0, False: 0]
  ------------------
12916|      0|      if (!identchar(c)) {
  ------------------
  |  |  105|      0|#define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
  |  |  ------------------
  |  |  |  | 1344|      0|#define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1341|      0|#define ISALPHA(c) ((((unsigned)(c) | 0x20) - 'a') < 26)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1341:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
  |  |  ------------------
  |  |  |  | 1336|      0|#define ISASCII(c) ((unsigned)(c) <= 0x7f)
  |  |  ------------------
  |  |  |  Branch (105:37): [True: 0, False: 0]
  |  |  |  Branch (105:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12917|      0|        pushback(p,  c);
12918|      0|        return '$';
12919|      0|      }
12920|       |      /* fall through */
12921|      0|    case '0':
  ------------------
  |  Branch (12921:5): [True: 0, False: 0]
  ------------------
12922|      0|      tokadd(p, '$');
12923|      0|    }
12924|      0|    break;
12925|       |
12926|  20.9k|    case '@':
  ------------------
  |  Branch (12926:5): [True: 20.9k, False: 4.78M]
  ------------------
12927|  20.9k|      c = nextc(p);
12928|  20.9k|      token_column = newtok(p);
12929|  20.9k|      tokadd(p, '@');
12930|  20.9k|      if (c == '@') {
  ------------------
  |  Branch (12930:11): [True: 0, False: 20.9k]
  ------------------
12931|      0|        tokadd(p, '@');
12932|      0|        c = nextc(p);
12933|      0|      }
12934|  20.9k|      if (c < 0) {
  ------------------
  |  Branch (12934:11): [True: 0, False: 20.9k]
  ------------------
12935|      0|        if (p->tidx == 1) {
  ------------------
  |  Branch (12935:13): [True: 0, False: 0]
  ------------------
12936|      0|          yyerror(p, "incomplete instance variable syntax");
12937|      0|        }
12938|      0|        else {
12939|      0|          yyerror(p, "incomplete class variable syntax");
12940|      0|        }
12941|      0|        return 0;
12942|      0|      }
12943|  20.9k|      else if (ISDIGIT(c)) {
  ------------------
  |  | 1342|  20.9k|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  ------------------
  |  |  |  Branch (1342:20): [True: 0, False: 20.9k]
  |  |  ------------------
  ------------------
12944|      0|        if (p->tidx == 1) {
  ------------------
  |  Branch (12944:13): [True: 0, False: 0]
  ------------------
12945|      0|          yyerror_c(p, "wrong instance variable name: @", c);
12946|      0|        }
12947|      0|        else {
12948|      0|          yyerror_c(p, "wrong class variable name: @@", c);
12949|      0|        }
12950|      0|        return 0;
12951|      0|      }
12952|  20.9k|      if (!identchar(c)) {
  ------------------
  |  |  105|  20.9k|#define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
  |  |  ------------------
  |  |  |  | 1344|  41.9k|#define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1341|  41.9k|#define ISALPHA(c) ((((unsigned)(c) | 0x20) - 'a') < 26)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1341:20): [True: 20.9k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
  |  |  ------------------
  |  |  |  | 1336|      0|#define ISASCII(c) ((unsigned)(c) <= 0x7f)
  |  |  ------------------
  |  |  |  Branch (105:37): [True: 0, False: 0]
  |  |  |  Branch (105:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12953|      0|        pushback(p, c);
12954|      0|        return '@';
12955|      0|      }
12956|  20.9k|      break;
12957|       |
12958|  20.9k|    case '_':
  ------------------
  |  Branch (12958:5): [True: 0, False: 4.80M]
  ------------------
12959|      0|      token_column = newtok(p);
12960|      0|      break;
12961|       |
12962|   372k|    default:
  ------------------
  |  Branch (12962:5): [True: 372k, False: 4.43M]
  ------------------
12963|   372k|      if (!identchar(c)) {
  ------------------
  |  |  105|   372k|#define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
  |  |  ------------------
  |  |  |  | 1344|   745k|#define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1341|   745k|#define ISALPHA(c) ((((unsigned)(c) | 0x20) - 'a') < 26)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1341:20): [True: 372k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
  |  |  ------------------
  |  |  |  | 1336|      0|#define ISASCII(c) ((unsigned)(c) <= 0x7f)
  |  |  ------------------
  |  |  |  Branch (105:37): [True: 0, False: 0]
  |  |  |  Branch (105:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12964|      0|        char buf[36];
12965|      0|        const char s[] = "Invalid char in expression: 0x";
12966|      0|        const char hexdigits[] = "0123456789ABCDEF";
12967|       |
12968|      0|        strcpy(buf, s);
12969|      0|        buf[sizeof(s)-1] = hexdigits[(c & 0xf0) >> 4];
12970|      0|        buf[sizeof(s)]   = hexdigits[(c & 0x0f)];
12971|      0|        buf[sizeof(s)+1] = 0;
12972|      0|        yyerror(p, buf);
12973|      0|        goto retry;
12974|      0|      }
12975|       |
12976|   372k|      token_column = newtok(p);
12977|   372k|      break;
12978|  4.80M|  }
12979|       |
12980|  2.27M|  do {
12981|  2.27M|    tokadd(p, c);
12982|  2.27M|    c = nextc(p);
12983|  2.27M|    if (c < 0) break;
  ------------------
  |  Branch (12983:9): [True: 0, False: 2.27M]
  ------------------
12984|  2.27M|  } while (identchar(c));
  ------------------
  |  |  105|  2.27M|#define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
  |  |  ------------------
  |  |  |  | 1344|  4.55M|#define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1341|  4.55M|#define ISALPHA(c) ((((unsigned)(c) | 0x20) - 'a') < 26)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1341:20): [True: 1.29M, False: 985k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1342|   985k|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1342:20): [True: 403k, False: 581k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
  |  |  ------------------
  |  |  |  | 1336|   393k|#define ISASCII(c) ((unsigned)(c) <= 0x7f)
  |  |  ------------------
  |  |  |  Branch (105:37): [True: 188k, False: 393k]
  |  |  |  Branch (105:51): [True: 0, False: 393k]
  |  |  ------------------
  ------------------
12985|   393k|  if (token_column == 0 && toklen(p) == 7 && (c < 0 || c == '\n') &&
  ------------------
  |  Branch (12985:7): [True: 218k, False: 174k]
  |  Branch (12985:28): [True: 68.1k, False: 150k]
  |  Branch (12985:47): [True: 0, False: 68.1k]
  |  Branch (12985:56): [True: 0, False: 68.1k]
  ------------------
12986|   393k|      strncmp(tok(p), "__END__", toklen(p)) == 0)
  ------------------
  |  Branch (12986:7): [True: 0, False: 0]
  ------------------
12987|      0|    return -1;
12988|       |
12989|   393k|  switch (tok(p)[0]) {
12990|  20.9k|  case '@': case '$':
  ------------------
  |  Branch (12990:3): [True: 20.9k, False: 372k]
  |  Branch (12990:13): [True: 0, False: 393k]
  ------------------
12991|  20.9k|    pushback(p, c);
12992|  20.9k|    break;
12993|   372k|  default:
  ------------------
  |  Branch (12993:3): [True: 372k, False: 20.9k]
  ------------------
12994|   372k|    if ((c == '!' || c == '?') && !peek(p, '=')) {
  ------------------
  |  |10980|  1.22k|#define peek(p,c) peek_n((p), (c), 0)
  ------------------
  |  Branch (12994:10): [True: 1.22k, False: 371k]
  |  Branch (12994:22): [True: 0, False: 371k]
  |  Branch (12994:35): [True: 1.22k, False: 0]
  ------------------
12995|  1.22k|      tokadd(p, c);
12996|  1.22k|    }
12997|   371k|    else {
12998|   371k|      pushback(p, c);
12999|   371k|    }
13000|   393k|  }
13001|   393k|  tokfix(p);
13002|   393k|  {
13003|   393k|    int result = 0;
13004|       |
13005|   393k|    switch (tok(p)[0]) {
13006|      0|    case '$':
  ------------------
  |  Branch (13006:5): [True: 0, False: 393k]
  ------------------
13007|      0|      p->lstate = EXPR_END;
13008|      0|      result = tGVAR;
13009|      0|      break;
13010|  20.9k|    case '@':
  ------------------
  |  Branch (13010:5): [True: 20.9k, False: 372k]
  ------------------
13011|  20.9k|      p->lstate = EXPR_END;
13012|  20.9k|      if (tok(p)[1] == '@')
  ------------------
  |  Branch (13012:11): [True: 0, False: 20.9k]
  ------------------
13013|      0|        result = tCVAR;
13014|  20.9k|      else
13015|  20.9k|        result = tIVAR;
13016|  20.9k|      break;
13017|       |
13018|      0|    case '_':
  ------------------
  |  Branch (13018:5): [True: 0, False: 393k]
  ------------------
13019|      0|      if (p->lstate != EXPR_FNAME && toklen(p) == 2 && ISDIGIT(tok(p)[1]) && p->nvars) {
  ------------------
  |  | 1342|      0|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  ------------------
  |  |  |  Branch (1342:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (13019:11): [True: 0, False: 0]
  |  Branch (13019:38): [True: 0, False: 0]
  |  Branch (13019:78): [True: 0, False: 0]
  ------------------
13020|      0|        int n = tok(p)[1] - '0';
13021|      0|        int nvar;
13022|       |
13023|      0|        if (n > 0) {
  ------------------
  |  Branch (13023:13): [True: 0, False: 0]
  ------------------
13024|      0|          node *nvars = p->nvars->cdr;
13025|       |
13026|      0|          while (nvars) {
  ------------------
  |  Branch (13026:18): [True: 0, False: 0]
  ------------------
13027|      0|            nvar = intn(nvars->car);
  ------------------
  |  |  135|      0|#define intn(x) ((int)(intptr_t)(x))
  ------------------
13028|      0|            if (nvar == -2) break; /* top of the scope */
  ------------------
  |  Branch (13028:17): [True: 0, False: 0]
  ------------------
13029|      0|            if (nvar > 0) {
  ------------------
  |  Branch (13029:17): [True: 0, False: 0]
  ------------------
13030|      0|              yywarning(p, "numbered parameter used in outer block");
13031|      0|              break;
13032|      0|            }
13033|      0|            nvars->car = nint(-1);
  ------------------
  |  |  134|      0|#define nint(x) ((node*)(intptr_t)(x))
  ------------------
13034|      0|            nvars = nvars->cdr;
13035|      0|          }
13036|      0|          nvar = intn(p->nvars->car);
  ------------------
  |  |  135|      0|#define intn(x) ((int)(intptr_t)(x))
  ------------------
13037|      0|          if (nvar != -2) {     /* numbered parameters never appear on toplevel */
  ------------------
  |  Branch (13037:15): [True: 0, False: 0]
  ------------------
13038|      0|            if (nvar == -1) {
  ------------------
  |  Branch (13038:17): [True: 0, False: 0]
  ------------------
13039|      0|              yywarning(p, "numbered parameter used in inner block");
13040|      0|            }
13041|      0|            else {
13042|      0|              p->nvars->car = nint(nvar > n ? nvar : n);
  ------------------
  |  |  134|      0|#define nint(x) ((node*)(intptr_t)(x))
  |  |  ------------------
  |  |  |  Branch (134:36): [True: 0, False: 0]
  |  |  ------------------
  ------------------
13043|      0|            }
13044|      0|            pylval.num = n;
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
13045|      0|            p->lstate = EXPR_END;
13046|      0|            return tNUMPARAM;
13047|      0|          }
13048|      0|        }
13049|      0|      }
13050|       |      /* fall through */
13051|   372k|    default:
  ------------------
  |  Branch (13051:5): [True: 372k, False: 20.9k]
  ------------------
13052|   372k|      if (toklast(p) == '!' || toklast(p) == '?') {
  ------------------
  |  Branch (13052:11): [True: 1.22k, False: 371k]
  |  Branch (13052:32): [True: 0, False: 371k]
  ------------------
13053|  1.22k|        result = tFID;
13054|  1.22k|      }
13055|   371k|      else {
13056|   371k|        if (p->lstate == EXPR_FNAME) {
  ------------------
  |  Branch (13056:13): [True: 476, False: 370k]
  ------------------
13057|    476|          if ((c = nextc(p)) == '=' && !peek(p, '~') && !peek(p, '>') &&
  ------------------
  |  |10980|    476|#define peek(p,c) peek_n((p), (c), 0)
  ------------------
                        if ((c = nextc(p)) == '=' && !peek(p, '~') && !peek(p, '>') &&
  ------------------
  |  |10980|    476|#define peek(p,c) peek_n((p), (c), 0)
  ------------------
  |  Branch (13057:15): [True: 0, False: 476]
  |  Branch (13057:40): [True: 0, False: 0]
  |  Branch (13057:57): [True: 0, False: 0]
  ------------------
13058|    476|              (!peek(p, '=') || (peek_n(p, '>', 1)))) {
  ------------------
  |  |10980|      0|#define peek(p,c) peek_n((p), (c), 0)
  ------------------
  |  Branch (13058:16): [True: 0, False: 0]
  |  Branch (13058:33): [True: 0, False: 0]
  ------------------
13059|      0|            result = tIDENTIFIER;
13060|      0|            tokadd(p, c);
13061|      0|            tokfix(p);
13062|      0|          }
13063|    476|          else {
13064|    476|            pushback(p, c);
13065|    476|          }
13066|    476|          if ((c = nextc(p)) == '=' && !peek(p, '~') && !peek(p, '>') &&
  ------------------
  |  |10980|    476|#define peek(p,c) peek_n((p), (c), 0)
  ------------------
                        if ((c = nextc(p)) == '=' && !peek(p, '~') && !peek(p, '>') &&
  ------------------
  |  |10980|    476|#define peek(p,c) peek_n((p), (c), 0)
  ------------------
  |  Branch (13066:15): [True: 0, False: 476]
  |  Branch (13066:40): [True: 0, False: 0]
  |  Branch (13066:57): [True: 0, False: 0]
  ------------------
13067|    476|              (!peek(p, '=') || (peek_n(p, '>', 1)))) {
  ------------------
  |  |10980|      0|#define peek(p,c) peek_n((p), (c), 0)
  ------------------
  |  Branch (13067:16): [True: 0, False: 0]
  |  Branch (13067:33): [True: 0, False: 0]
  ------------------
13068|      0|            result = tIDENTIFIER;
13069|      0|            tokadd(p, c);
13070|      0|            tokfix(p);
13071|      0|          }
13072|    476|          else {
13073|    476|            pushback(p, c);
13074|    476|          }
13075|    476|        }
13076|   371k|        if (result == 0 && ISUPPER(tok(p)[0])) {
  ------------------
  |  | 1339|   371k|#define ISUPPER(c) (((unsigned)(c) - 'A') < 26)
  |  |  ------------------
  |  |  |  Branch (1339:20): [True: 20.9k, False: 350k]
  |  |  ------------------
  ------------------
  |  Branch (13076:13): [True: 371k, False: 0]
  ------------------
13077|  20.9k|          result = tCONSTANT;
13078|  20.9k|        }
13079|   350k|        else {
13080|   350k|          result = tIDENTIFIER;
13081|   350k|        }
13082|   371k|      }
13083|       |
13084|   372k|      if (IS_LABEL_POSSIBLE()) {
  ------------------
  |  |11140|   372k|#define IS_LABEL_POSSIBLE() ((p->lstate == EXPR_BEG && !cmd_state) || IS_ARG())
  |  |  ------------------
  |  |  |  |11136|   297k|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (11136:19): [True: 0, False: 297k]
  |  |  |  |  |  Branch (11136:44): [True: 0, False: 297k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11140:31): [True: 293k, False: 79.0k]
  |  |  |  Branch (11140:56): [True: 74.7k, False: 218k]
  |  |  ------------------
  ------------------
13085|  74.7k|        if (IS_LABEL_SUFFIX(0)) {
  ------------------
  |  |11141|  74.7k|#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
  |  |  ------------------
  |  |  |  Branch (11141:29): [True: 785, False: 74.0k]
  |  |  |  Branch (11141:51): [True: 0, False: 785]
  |  |  ------------------
  ------------------
13086|      0|          p->lstate = EXPR_END;
13087|      0|          tokfix(p);
13088|      0|          pylval.id = intern(tok(p), toklen(p));
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                        pylval.id = intern(tok(p), toklen(p));
  ------------------
  |  |  153|      0|#define intern(s,len) intern_gen(p,(s),(len))
  ------------------
13089|      0|          return tIDENTIFIER;
13090|      0|        }
13091|  74.7k|      }
13092|   372k|      if (p->lstate != EXPR_DOT) {
  ------------------
  |  Branch (13092:11): [True: 305k, False: 66.9k]
  ------------------
13093|   305k|        const struct kwtable *kw;
13094|       |
13095|       |        /* See if it is a reserved word.  */
13096|   305k|        kw = mrb_reserved_word(tok(p), toklen(p));
13097|   305k|        if (kw) {
  ------------------
  |  Branch (13097:13): [True: 105k, False: 200k]
  ------------------
13098|   105k|          enum mrb_lex_state_enum state = p->lstate;
13099|   105k|          pylval.num = p->lineno;
  ------------------
  |  |10738|   105k|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
13100|   105k|          p->lstate = kw->state;
13101|   105k|          if (state == EXPR_FNAME) {
  ------------------
  |  Branch (13101:15): [True: 0, False: 105k]
  ------------------
13102|      0|            pylval.id = intern_cstr(kw->name);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
                          pylval.id = intern_cstr(kw->name);
  ------------------
  |  |  146|      0|#define intern_cstr(s) intern_cstr_gen(p,(s))
  ------------------
13103|      0|            return kw->id[0];
13104|      0|          }
13105|   105k|          if (p->lstate == EXPR_BEG) {
  ------------------
  |  Branch (13105:15): [True: 39.7k, False: 65.6k]
  ------------------
13106|  39.7k|            p->cmd_start = TRUE;
  ------------------
  |  |   54|  39.7k|#  define TRUE 1
  ------------------
13107|  39.7k|          }
13108|   105k|          if (kw->id[0] == keyword_do) {
  ------------------
  |  Branch (13108:15): [True: 0, False: 105k]
  ------------------
13109|      0|            if (p->lpar_beg && p->lpar_beg == p->paren_nest) {
  ------------------
  |  Branch (13109:17): [True: 0, False: 0]
  |  Branch (13109:32): [True: 0, False: 0]
  ------------------
13110|      0|              p->lpar_beg = 0;
13111|      0|              p->paren_nest--;
13112|      0|              return keyword_do_LAMBDA;
13113|      0|            }
13114|      0|            if (COND_P()) return keyword_do_cond;
  ------------------
  |  |  117|      0|#define COND_P()        BITSTACK_SET_P(p->cond_stack)
  |  |  ------------------
  |  |  |  |  112|      0|#define BITSTACK_SET_P(stack)   ((stack)&1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:33): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13115|      0|            if (CMDARG_P() && state != EXPR_CMDARG)
  ------------------
  |  |  122|      0|#define CMDARG_P()      BITSTACK_SET_P(p->cmdarg_stack)
  |  |  ------------------
  |  |  |  |  112|      0|#define BITSTACK_SET_P(stack)   ((stack)&1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (112:33): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13115:31): [True: 0, False: 0]
  ------------------
13116|      0|              return keyword_do_block;
13117|      0|            if (state == EXPR_ENDARG || state == EXPR_BEG)
  ------------------
  |  Branch (13117:17): [True: 0, False: 0]
  |  Branch (13117:41): [True: 0, False: 0]
  ------------------
13118|      0|              return keyword_do_block;
13119|      0|            return keyword_do;
13120|      0|          }
13121|   105k|          if (state == EXPR_BEG || state == EXPR_VALUE || state == EXPR_CLASS)
  ------------------
  |  Branch (13121:15): [True: 99.1k, False: 6.22k]
  |  Branch (13121:36): [True: 0, False: 6.22k]
  |  Branch (13121:59): [True: 0, False: 6.22k]
  ------------------
13122|  99.1k|            return kw->id[0];
13123|  6.22k|          else {
13124|  6.22k|            if (kw->id[0] != kw->id[1])
  ------------------
  |  Branch (13124:17): [True: 0, False: 6.22k]
  ------------------
13125|      0|              p->lstate = EXPR_BEG;
13126|  6.22k|            return kw->id[1];
13127|  6.22k|          }
13128|   105k|        }
13129|   305k|      }
13130|       |
13131|   267k|      if (IS_BEG() || p->lstate == EXPR_DOT || IS_ARG()) {
  ------------------
  |  |11138|   534k|#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
  |  |  ------------------
  |  |  |  Branch (11138:19): [True: 194k, False: 72.7k]
  |  |  |  Branch (11138:44): [True: 0, False: 72.7k]
  |  |  |  Branch (11138:69): [True: 5.39k, False: 67.4k]
  |  |  |  Branch (11138:96): [True: 0, False: 67.4k]
  |  |  ------------------
  ------------------
                    if (IS_BEG() || p->lstate == EXPR_DOT || IS_ARG()) {
  ------------------
  |  |11136|    476|#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
  |  |  ------------------
  |  |  |  Branch (11136:19): [True: 0, False: 476]
  |  |  |  Branch (11136:44): [True: 0, False: 476]
  |  |  ------------------
  ------------------
  |  Branch (13131:23): [True: 66.9k, False: 476]
  ------------------
13132|   266k|        if (cmd_state) {
  ------------------
  |  Branch (13132:13): [True: 140k, False: 126k]
  ------------------
13133|   140k|          p->lstate = EXPR_CMDARG;
13134|   140k|        }
13135|   126k|        else {
13136|   126k|          p->lstate = EXPR_ARG;
13137|   126k|        }
13138|   266k|      }
13139|    476|      else if (p->lstate == EXPR_FNAME) {
  ------------------
  |  Branch (13139:16): [True: 476, False: 0]
  ------------------
13140|    476|        p->lstate = EXPR_ENDFN;
13141|    476|      }
13142|      0|      else {
13143|      0|        p->lstate = EXPR_END;
13144|      0|      }
13145|   393k|    }
13146|   288k|    {
13147|   288k|      mrb_sym ident = intern(tok(p), toklen(p));
  ------------------
  |  |  153|   288k|#define intern(s,len) intern_gen(p,(s),(len))
  ------------------
13148|       |
13149|   288k|      pylval.id = ident;
  ------------------
  |  |10738|   288k|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
13150|   288k|      if (last_state != EXPR_DOT && ISLOWER(tok(p)[0]) && local_var_p(p, ident)) {
  ------------------
  |  | 1340|   509k|#define ISLOWER(c) (((unsigned)(c) - 'a') < 26)
  |  |  ------------------
  |  |  |  Branch (1340:20): [True: 180k, False: 41.1k]
  |  |  ------------------
  ------------------
  |  Branch (13150:11): [True: 221k, False: 66.9k]
  |  Branch (13150:59): [True: 110k, False: 69.7k]
  ------------------
13151|   110k|        p->lstate = EXPR_END;
13152|   110k|      }
13153|   288k|    }
13154|   288k|    return result;
13155|   393k|  }
13156|   393k|}
y.tab.c:parse_string:
11431|   328k|{
11432|   328k|  int c;
11433|   328k|  string_type type = (string_type)p->lex_strterm->type;
11434|   328k|  int nest_level = p->lex_strterm->level;
11435|   328k|  int beg = p->lex_strterm->paren;
11436|   328k|  int end = p->lex_strterm->term;
11437|   328k|  parser_heredoc_info *hinfo = (type & STR_FUNC_HEREDOC) ? parsing_heredoc_info(p) : NULL;
  ------------------
  |  |   81|   328k|#define STR_FUNC_HEREDOC 0x40
  ------------------
  |  Branch (11437:32): [True: 0, False: 328k]
  ------------------
11438|       |
11439|   328k|  mrb_bool unindent = hinfo && hinfo->remove_indent;
  ------------------
  |  Branch (11439:23): [True: 0, False: 328k]
  |  Branch (11439:32): [True: 0, False: 0]
  ------------------
11440|   328k|  mrb_bool head = hinfo && hinfo->line_head;
  ------------------
  |  Branch (11440:19): [True: 0, False: 328k]
  |  Branch (11440:28): [True: 0, False: 0]
  ------------------
11441|   328k|  mrb_bool empty = TRUE;
  ------------------
  |  |   54|   328k|#  define TRUE 1
  ------------------
11442|   328k|  size_t spaces = 0;
11443|   328k|  size_t pos = -1;
11444|   328k|  node *escaped = NULL;
11445|   328k|  node *nspaces = NULL;
11446|       |
11447|   328k|  if (beg == 0) beg = -3;       /* should never happen */
  ------------------
  |  Branch (11447:7): [True: 328k, False: 0]
  ------------------
11448|   328k|  if (end == 0) end = -3;
  ------------------
  |  Branch (11448:7): [True: 0, False: 328k]
  ------------------
11449|   328k|  newtok(p);
11450|  6.16M|  while ((c = nextc(p)) != end || nest_level != 0) {
  ------------------
  |  Branch (11450:10): [True: 5.83M, False: 328k]
  |  Branch (11450:35): [True: 0, False: 328k]
  ------------------
11451|  5.83M|    pos++;
11452|  5.83M|    if (hinfo && (c == '\n' || c < 0)) {
  ------------------
  |  Branch (11452:9): [True: 0, False: 5.83M]
  |  Branch (11452:19): [True: 0, False: 0]
  |  Branch (11452:32): [True: 0, False: 0]
  ------------------
11453|      0|      mrb_bool line_head;
11454|      0|      tokadd(p, '\n');
11455|      0|      tokfix(p);
11456|      0|      p->lineno++;
11457|      0|      p->column = 0;
11458|      0|      line_head = hinfo->line_head;
11459|      0|      hinfo->line_head = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
11460|      0|      if (line_head) {
  ------------------
  |  Branch (11460:11): [True: 0, False: 0]
  ------------------
11461|       |        /* check whether end of heredoc */
11462|      0|        const char *s = tok(p);
11463|      0|        int len = toklen(p);
11464|      0|        if (hinfo->allow_indent) {
  ------------------
  |  Branch (11464:13): [True: 0, False: 0]
  ------------------
11465|      0|          while (ISSPACE(*s) && len > 0) {
  ------------------
  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  ------------------
  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11465:33): [True: 0, False: 0]
  ------------------
11466|      0|            s++;
11467|      0|            len--;
11468|      0|          }
11469|      0|        }
11470|      0|        if (hinfo->term_len > 0 && len-1 == hinfo->term_len && strncmp(s, hinfo->term, len-1) == 0) {
  ------------------
  |  Branch (11470:13): [True: 0, False: 0]
  |  Branch (11470:36): [True: 0, False: 0]
  |  Branch (11470:64): [True: 0, False: 0]
  ------------------
11471|      0|          heredoc_remove_indent(p, hinfo);
11472|      0|          return tHEREDOC_END;
11473|      0|        }
11474|      0|      }
11475|      0|      if (c < 0) {
  ------------------
  |  Branch (11475:11): [True: 0, False: 0]
  ------------------
11476|      0|        char buf[256];
11477|      0|        const char s1[] = "can't find heredoc delimiter \"";
11478|      0|        const char s2[] = "\" anywhere before EOF";
11479|       |
11480|      0|        if (sizeof(s1)+sizeof(s2)+strlen(hinfo->term)+1 >= sizeof(buf)) {
  ------------------
  |  Branch (11480:13): [True: 0, False: 0]
  ------------------
11481|      0|          yyerror(p, "can't find heredoc delimiter anywhere before EOF");
11482|      0|        }
11483|      0|        else {
11484|      0|          strcpy(buf, s1);
11485|      0|          strcat(buf, hinfo->term);
11486|      0|          strcat(buf, s2);
11487|      0|          yyerror(p, buf);
11488|      0|        }
11489|      0|        return 0;
11490|      0|      }
11491|      0|      node *nd = new_str(p, tok(p), toklen(p));
11492|      0|      pylval.nd = nd;
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
11493|      0|      if (unindent && head) {
  ------------------
  |  Branch (11493:11): [True: 0, False: 0]
  |  Branch (11493:23): [True: 0, False: 0]
  ------------------
11494|      0|        nspaces = push(nspaces, nint(spaces));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
11495|      0|        heredoc_push_indented(p, hinfo, nd->cdr, escaped, nspaces, empty && line_head);
  ------------------
  |  Branch (11495:68): [True: 0, False: 0]
  |  Branch (11495:77): [True: 0, False: 0]
  ------------------
11496|      0|      }
11497|      0|      return tHD_STRING_MID;
11498|      0|    }
11499|  5.83M|    if (unindent && empty) {
  ------------------
  |  Branch (11499:9): [True: 0, False: 5.83M]
  |  Branch (11499:21): [True: 0, False: 0]
  ------------------
11500|      0|      if (c == '\t')
  ------------------
  |  Branch (11500:11): [True: 0, False: 0]
  ------------------
11501|      0|        spaces += 8;
11502|      0|      else if (ISSPACE(c))
  ------------------
  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  ------------------
  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11503|      0|        spaces++;
11504|      0|      else
11505|      0|        empty = FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
11506|      0|    }
11507|  5.83M|    if (c < 0) {
  ------------------
  |  Branch (11507:9): [True: 0, False: 5.83M]
  ------------------
11508|      0|      yyerror(p, "unterminated string meets end of file");
11509|      0|      return 0;
11510|      0|    }
11511|  5.83M|    else if (c == beg) {
  ------------------
  |  Branch (11511:14): [True: 0, False: 5.83M]
  ------------------
11512|      0|      nest_level++;
11513|      0|      p->lex_strterm->level = nest_level;
11514|      0|    }
11515|  5.83M|    else if (c == end) {
  ------------------
  |  Branch (11515:14): [True: 0, False: 5.83M]
  ------------------
11516|      0|      nest_level--;
11517|      0|      p->lex_strterm->level = nest_level;
11518|      0|    }
11519|  5.83M|    else if (c == '\\') {
  ------------------
  |  Branch (11519:14): [True: 0, False: 5.83M]
  ------------------
11520|      0|      c = nextc(p);
11521|      0|      if (type & STR_FUNC_EXPAND) {
  ------------------
  |  |   76|      0|#define STR_FUNC_EXPAND  0x02
  ------------------
  |  Branch (11521:11): [True: 0, False: 0]
  ------------------
11522|      0|        if (c == end || c == beg) {
  ------------------
  |  Branch (11522:13): [True: 0, False: 0]
  |  Branch (11522:25): [True: 0, False: 0]
  ------------------
11523|      0|          tokadd(p, c);
11524|      0|        }
11525|      0|        else if (c == '\n') {
  ------------------
  |  Branch (11525:18): [True: 0, False: 0]
  ------------------
11526|      0|          p->lineno++;
11527|      0|          p->column = 0;
11528|      0|          if (unindent) {
  ------------------
  |  Branch (11528:15): [True: 0, False: 0]
  ------------------
11529|      0|            nspaces = push(nspaces, nint(spaces));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
11530|      0|            escaped = push(escaped, nint(pos));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
11531|      0|            pos--;
11532|      0|            empty = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
11533|      0|            spaces = 0;
11534|      0|          }
11535|      0|          if (type & STR_FUNC_ARRAY) {
  ------------------
  |  |   80|      0|#define STR_FUNC_ARRAY   0x20
  ------------------
  |  Branch (11535:15): [True: 0, False: 0]
  ------------------
11536|      0|            tokadd(p, '\n');
11537|      0|          }
11538|      0|        }
11539|      0|        else if (type & STR_FUNC_REGEXP) {
  ------------------
  |  |   77|      0|#define STR_FUNC_REGEXP  0x04
  ------------------
  |  Branch (11539:18): [True: 0, False: 0]
  ------------------
11540|      0|          tokadd(p, '\\');
11541|      0|          tokadd(p, c);
11542|      0|        }
11543|      0|        else if (c == 'u' && peek(p, '{')) {
  ------------------
  |  |10980|      0|#define peek(p,c) peek_n((p), (c), 0)
  |  |  ------------------
  |  |  |  Branch (10980:19): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11543:18): [True: 0, False: 0]
  ------------------
11544|       |          /* \u{xxxx xxxx xxxx} form */
11545|      0|          nextc(p);
11546|      0|          while (1) {
  ------------------
  |  Branch (11546:18): [Folded - Ignored]
  ------------------
11547|      0|            do c = nextc(p); while (ISSPACE(c));
  ------------------
  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  ------------------
  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11548|      0|            if (c == '}') break;
  ------------------
  |  Branch (11548:17): [True: 0, False: 0]
  ------------------
11549|      0|            pushback(p, c);
11550|      0|            c = read_escape_unicode(p, 8);
11551|      0|            if (c < 0) break;
  ------------------
  |  Branch (11551:17): [True: 0, False: 0]
  ------------------
11552|      0|            tokadd(p, -c);
11553|      0|          }
11554|      0|          if (hinfo)
  ------------------
  |  Branch (11554:15): [True: 0, False: 0]
  ------------------
11555|      0|            hinfo->line_head = FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
11556|      0|        }
11557|      0|        else {
11558|      0|          pushback(p, c);
11559|      0|          tokadd(p, read_escape(p));
11560|      0|          if (hinfo)
  ------------------
  |  Branch (11560:15): [True: 0, False: 0]
  ------------------
11561|      0|            hinfo->line_head = FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
11562|      0|        }
11563|      0|      }
11564|      0|      else {
11565|      0|        if (c != beg && c != end) {
  ------------------
  |  Branch (11565:13): [True: 0, False: 0]
  |  Branch (11565:25): [True: 0, False: 0]
  ------------------
11566|      0|          if (c == '\n') {
  ------------------
  |  Branch (11566:15): [True: 0, False: 0]
  ------------------
11567|      0|            p->lineno++;
11568|      0|            p->column = 0;
11569|      0|          }
11570|      0|          if (!(c == '\\' || ((type & STR_FUNC_ARRAY) && ISSPACE(c)))) {
  ------------------
  |  |   80|      0|#define STR_FUNC_ARRAY   0x20
  ------------------
                        if (!(c == '\\' || ((type & STR_FUNC_ARRAY) && ISSPACE(c)))) {
  ------------------
  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  ------------------
  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11570:17): [True: 0, False: 0]
  |  Branch (11570:31): [True: 0, False: 0]
  ------------------
11571|      0|            tokadd(p, '\\');
11572|      0|          }
11573|      0|        }
11574|      0|        tokadd(p, c);
11575|      0|      }
11576|      0|      continue;
11577|      0|    }
11578|  5.83M|    else if ((c == '#') && (type & STR_FUNC_EXPAND)) {
  ------------------
  |  |   76|      0|#define STR_FUNC_EXPAND  0x02
  ------------------
  |  Branch (11578:14): [True: 0, False: 5.83M]
  |  Branch (11578:28): [True: 0, False: 0]
  ------------------
11579|      0|      c = nextc(p);
11580|      0|      if (c == '{') {
  ------------------
  |  Branch (11580:11): [True: 0, False: 0]
  ------------------
11581|      0|        tokfix(p);
11582|      0|        p->lstate = EXPR_BEG;
11583|      0|        p->cmd_start = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
11584|      0|        node *nd = new_str(p, tok(p), toklen(p));
11585|      0|        pylval.nd = nd;
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
11586|      0|        if (hinfo) {
  ------------------
  |  Branch (11586:13): [True: 0, False: 0]
  ------------------
11587|      0|          if (unindent && head) {
  ------------------
  |  Branch (11587:15): [True: 0, False: 0]
  |  Branch (11587:27): [True: 0, False: 0]
  ------------------
11588|      0|            nspaces = push(nspaces, nint(spaces));
  ------------------
  |  |  268|      0|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|      0|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
11589|      0|            heredoc_push_indented(p, hinfo, nd->cdr, escaped, nspaces, FALSE);
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
11590|      0|          }
11591|      0|          hinfo->line_head = FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
11592|      0|          return tHD_STRING_PART;
11593|      0|        }
11594|      0|        return tSTRING_PART;
11595|      0|      }
11596|      0|      tokadd(p, '#');
11597|      0|      pushback(p, c);
11598|      0|      continue;
11599|      0|    }
11600|  5.83M|    if ((type & STR_FUNC_ARRAY) && ISSPACE(c)) {
  ------------------
  |  |   80|  5.83M|#define STR_FUNC_ARRAY   0x20
  ------------------
                  if ((type & STR_FUNC_ARRAY) && ISSPACE(c)) {
  ------------------
  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  ------------------
  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11600:9): [True: 0, False: 5.83M]
  ------------------
11601|      0|      if (toklen(p) == 0) {
  ------------------
  |  Branch (11601:11): [True: 0, False: 0]
  ------------------
11602|      0|        do {
11603|      0|          if (c == '\n') {
  ------------------
  |  Branch (11603:15): [True: 0, False: 0]
  ------------------
11604|      0|            p->lineno++;
11605|      0|            p->column = 0;
11606|      0|            heredoc_treat_nextline(p);
11607|      0|            if (p->parsing_heredoc != NULL) {
  ------------------
  |  Branch (11607:17): [True: 0, False: 0]
  ------------------
11608|      0|              return tHD_LITERAL_DELIM;
11609|      0|            }
11610|      0|          }
11611|      0|          c = nextc(p);
11612|      0|        } while (ISSPACE(c));
  ------------------
  |  | 1338|      0|#define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5)
  |  |  ------------------
  |  |  |  Branch (1338:21): [True: 0, False: 0]
  |  |  |  Branch (1338:35): [True: 0, False: 0]
  |  |  ------------------
  ------------------
11613|      0|        pushback(p, c);
11614|      0|        return tLITERAL_DELIM;
11615|      0|      }
11616|      0|      else {
11617|      0|        pushback(p, c);
11618|      0|        tokfix(p);
11619|      0|        pylval.nd = new_str(p, tok(p), toklen(p));
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
11620|      0|        return tSTRING_MID;
11621|      0|      }
11622|      0|    }
11623|  5.83M|    if (c == '\n') {
  ------------------
  |  Branch (11623:9): [True: 0, False: 5.83M]
  ------------------
11624|      0|      p->lineno++;
11625|      0|      p->column = 0;
11626|      0|    }
11627|  5.83M|    tokadd(p, c);
11628|  5.83M|  }
11629|       |
11630|   328k|  tokfix(p);
11631|   328k|  p->lstate = EXPR_ENDARG;
11632|   328k|  end_strterm(p);
11633|       |
11634|   328k|  if (type & STR_FUNC_XQUOTE) {
  ------------------
  |  |   82|   328k|#define STR_FUNC_XQUOTE  0x80
  ------------------
  |  Branch (11634:7): [True: 0, False: 328k]
  ------------------
11635|      0|    pylval.nd = new_xstr(p, tok(p), toklen(p));
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
11636|      0|    return tXSTRING;
11637|      0|  }
11638|       |
11639|   328k|  if (type & STR_FUNC_REGEXP) {
  ------------------
  |  |   77|   328k|#define STR_FUNC_REGEXP  0x04
  ------------------
  |  Branch (11639:7): [True: 0, False: 328k]
  ------------------
11640|      0|    int f = 0;
11641|      0|    int re_opt;
11642|      0|    char *s = strndup(tok(p), toklen(p));
  ------------------
  |  |  280|      0|#define strndup(s,len) parser_strndup(p, s, len)
  ------------------
11643|      0|    char flags[3];
11644|      0|    char *flag = flags;
11645|      0|    char enc = '\0';
11646|      0|    char *encp;
11647|      0|    char *dup;
11648|       |
11649|      0|    newtok(p);
11650|      0|    while (re_opt = nextc(p), re_opt >= 0 && ISALPHA(re_opt)) {
  ------------------
  |  | 1341|      0|#define ISALPHA(c) ((((unsigned)(c) | 0x20) - 'a') < 26)
  |  |  ------------------
  |  |  |  Branch (1341:20): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (11650:12): [True: 0, False: 0]
  |  Branch (11650:31): [True: 0, False: 0]
  ------------------
11651|      0|      switch (re_opt) {
11652|      0|      case 'i': f |= 1; break;
  ------------------
  |  Branch (11652:7): [True: 0, False: 0]
  ------------------
11653|      0|      case 'x': f |= 2; break;
  ------------------
  |  Branch (11653:7): [True: 0, False: 0]
  ------------------
11654|      0|      case 'm': f |= 4; break;
  ------------------
  |  Branch (11654:7): [True: 0, False: 0]
  ------------------
11655|      0|      case 'u': f |= 16; break;
  ------------------
  |  Branch (11655:7): [True: 0, False: 0]
  ------------------
11656|      0|      case 'n': f |= 32; break;
  ------------------
  |  Branch (11656:7): [True: 0, False: 0]
  ------------------
11657|      0|      case 'o': break;
  ------------------
  |  Branch (11657:7): [True: 0, False: 0]
  ------------------
11658|      0|      default: tokadd(p, re_opt); break;
  ------------------
  |  Branch (11658:7): [True: 0, False: 0]
  ------------------
11659|      0|      }
11660|      0|    }
11661|      0|    pushback(p, re_opt);
11662|      0|    if (toklen(p)) {
  ------------------
  |  Branch (11662:9): [True: 0, False: 0]
  ------------------
11663|      0|      char msg[128];
11664|       |
11665|      0|      strcpy(msg, "unknown regexp option");
11666|      0|      tokfix(p);
11667|      0|      if (toklen(p) > 1) {
  ------------------
  |  Branch (11667:11): [True: 0, False: 0]
  ------------------
11668|      0|        strcat(msg, "s");
11669|      0|      }
11670|      0|      strcat(msg, " - ");
11671|      0|      strncat(msg, tok(p), sizeof(msg) - strlen(msg) - 1);
11672|      0|      yyerror(p, msg);
11673|      0|    }
11674|      0|    if (f != 0) {
  ------------------
  |  Branch (11674:9): [True: 0, False: 0]
  ------------------
11675|      0|      if (f & 1) *flag++ = 'i';
  ------------------
  |  Branch (11675:11): [True: 0, False: 0]
  ------------------
11676|      0|      if (f & 2) *flag++ = 'x';
  ------------------
  |  Branch (11676:11): [True: 0, False: 0]
  ------------------
11677|      0|      if (f & 4) *flag++ = 'm';
  ------------------
  |  Branch (11677:11): [True: 0, False: 0]
  ------------------
11678|      0|      if (f & 16) enc = 'u';
  ------------------
  |  Branch (11678:11): [True: 0, False: 0]
  ------------------
11679|      0|      if (f & 32) enc = 'n';
  ------------------
  |  Branch (11679:11): [True: 0, False: 0]
  ------------------
11680|      0|    }
11681|      0|    if (flag > flags) {
  ------------------
  |  Branch (11681:9): [True: 0, False: 0]
  ------------------
11682|      0|      dup = strndup(flags, (size_t)(flag - flags));
  ------------------
  |  |  280|      0|#define strndup(s,len) parser_strndup(p, s, len)
  ------------------
11683|      0|    }
11684|      0|    else {
11685|      0|      dup = NULL;
11686|      0|    }
11687|      0|    if (enc) {
  ------------------
  |  Branch (11687:9): [True: 0, False: 0]
  ------------------
11688|      0|      encp = strndup(&enc, 1);
  ------------------
  |  |  280|      0|#define strndup(s,len) parser_strndup(p, s, len)
  ------------------
11689|      0|    }
11690|      0|    else {
11691|      0|      encp = NULL;
11692|      0|    }
11693|      0|    pylval.nd = new_regx(p, s, dup, encp);
  ------------------
  |  |10738|      0|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
11694|       |
11695|      0|    return tREGEXP;
11696|      0|  }
11697|   328k|  pylval.nd = new_str(p, tok(p), toklen(p));
  ------------------
  |  |10738|   328k|#define pylval  (*((YYSTYPE*)(p->ylval)))
  ------------------
11698|       |
11699|   328k|  return tSTRING;
11700|   328k|}
y.tab.c:end_strterm:
 1450|   328k|{
 1451|   328k|  parser_lex_strterm *term = p->lex_strterm->prev;
 1452|   328k|  parser_pfree(p->lex_strterm);
  ------------------
  |  |  185|   328k|#define parser_pfree(ptr) do { if (sizeof(node) <= sizeof(*(ptr))) cons_free((node*)ptr);} while (0)
  |  |  ------------------
  |  |  |  |  172|   328k|#define cons_free(c) cons_free_gen(p, (c))
  |  |  ------------------
  |  |  |  Branch (185:36): [Folded - Ignored]
  |  |  |  Branch (185:99): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1453|   328k|  p->lex_strterm = term;
 1454|   328k|}
y.tab.c:parser_strndup:
  272|   946k|{
  273|   946k|  char *b = (char*)parser_palloc(p, len+1);
  274|       |
  275|   946k|  memcpy(b, s, len);
  276|   946k|  b[len] = '\0';
  277|   946k|  return b;
  278|   946k|}
y.tab.c:nextc:
10897|  15.3M|{
10898|  15.3M|  int c;
10899|       |
10900|  15.3M|  if (p->pb) {
  ------------------
  |  Branch (10900:7): [True: 2.25M, False: 13.1M]
  ------------------
10901|  2.25M|    node *tmp;
10902|       |
10903|  2.25M|    c = intn(p->pb->car);
  ------------------
  |  |  135|  2.25M|#define intn(x) ((int)(intptr_t)(x))
  ------------------
10904|  2.25M|    tmp = p->pb;
10905|  2.25M|    p->pb = p->pb->cdr;
10906|  2.25M|    cons_free(tmp);
  ------------------
  |  |  172|  2.25M|#define cons_free(c) cons_free_gen(p, (c))
  ------------------
10907|  2.25M|  }
10908|  13.1M|  else {
10909|  13.1M|    c = nextc0(p);
10910|  13.1M|    if (c < 0) goto eof;
  ------------------
  |  Branch (10910:9): [True: 952, False: 13.1M]
  ------------------
10911|  13.1M|  }
10912|  15.3M|  if (c >= 0) {
  ------------------
  |  Branch (10912:7): [True: 15.3M, False: 0]
  ------------------
10913|  15.3M|    p->column++;
10914|  15.3M|  }
10915|  15.3M|  if (c == '\r') {
  ------------------
  |  Branch (10915:7): [True: 0, False: 15.3M]
  ------------------
10916|      0|    const int lf = nextc0(p);
10917|      0|    if (lf == '\n') {
  ------------------
  |  Branch (10917:9): [True: 0, False: 0]
  ------------------
10918|      0|      return '\n';
10919|      0|    }
10920|      0|    if (lf > 0) pushback(p, lf);
  ------------------
  |  Branch (10920:9): [True: 0, False: 0]
  ------------------
10921|      0|  }
10922|  15.3M|  return c;
10923|       |
10924|    952|  eof:
10925|    952|  if (!p->cxt) return -1;
  ------------------
  |  Branch (10925:7): [True: 952, False: 0]
  ------------------
10926|      0|  else {
10927|      0|    if (p->cxt->partial_hook(p) < 0)
  ------------------
  |  Branch (10927:9): [True: 0, False: 0]
  ------------------
10928|      0|      return -1;                /* end of program(s) */
10929|      0|    return -2;                  /* end of a file in the program files */
10930|      0|  }
10931|    952|}
y.tab.c:nextc0:
10878|  13.1M|{
10879|  13.1M|  if (p->s && p->s < p->send) {
  ------------------
  |  Branch (10879:7): [True: 13.1M, False: 0]
  |  Branch (10879:15): [True: 13.1M, False: 952]
  ------------------
10880|  13.1M|    return (unsigned char)*p->s++;
10881|  13.1M|  }
10882|    952|  else {
10883|    952|#ifndef MRB_NO_STDIO
10884|    952|    int c;
10885|       |
10886|    952|    if (p->f) {
  ------------------
  |  Branch (10886:9): [True: 0, False: 952]
  ------------------
10887|      0|      c = fgetc(p->f);
10888|      0|      if (!feof(p->f)) return c;
  ------------------
  |  Branch (10888:11): [True: 0, False: 0]
  ------------------
10889|      0|    }
10890|    952|#endif
10891|    952|    return -1;
10892|    952|  }
10893|  13.1M|}
y.tab.c:peek_n:
10977|  76.8k|{
10978|  76.8k|  return peekc_n(p, n) == c && c >= 0;
  ------------------
  |  Branch (10978:10): [True: 1.57k, False: 75.2k]
  |  Branch (10978:32): [True: 1.57k, False: 0]
  ------------------
10979|  76.8k|}
y.tab.c:pushback:
10935|  2.17M|{
10936|  2.17M|  if (c >= 0) {
  ------------------
  |  Branch (10936:7): [True: 2.17M, False: 0]
  ------------------
10937|  2.17M|    p->column--;
10938|  2.17M|  }
10939|  2.17M|  p->pb = cons(nint(c), p->pb);
  ------------------
  |  |  210|  2.17M|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
10940|  2.17M|}
y.tab.c:peekc_n:
10956|  76.8k|{
10957|  76.8k|  node *list = 0;
10958|  76.8k|  int c0;
10959|       |
10960|  77.5k|  do {
10961|  77.5k|    c0 = nextc(p);
10962|  77.5k|    if (c0 == -1) return c0;    /* do not skip partial EOF */
  ------------------
  |  Branch (10962:9): [True: 0, False: 77.5k]
  ------------------
10963|  77.5k|    if (c0 >= 0) --p->column;
  ------------------
  |  Branch (10963:9): [True: 77.5k, False: 0]
  ------------------
10964|  77.5k|    list = push(list, nint(c0));
  ------------------
  |  |  268|  77.5k|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|  77.5k|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
10965|  77.5k|  } while(n--);
  ------------------
  |  Branch (10965:11): [True: 785, False: 76.8k]
  ------------------
10966|  76.8k|  if (p->pb) {
  ------------------
  |  Branch (10966:7): [True: 0, False: 76.8k]
  ------------------
10967|      0|    p->pb = append(list, p->pb);
  ------------------
  |  |  267|      0|#define append(a,b) append_gen(p,(a),(b))
  ------------------
10968|      0|  }
10969|  76.8k|  else {
10970|  76.8k|    p->pb = list;
10971|  76.8k|  }
10972|  76.8k|  return c0;
10973|  76.8k|}
y.tab.c:new_strterm:
 1438|   328k|{
 1439|   328k|  parser_lex_strterm *lex = (parser_lex_strterm*)parser_palloc(p, sizeof(parser_lex_strterm));
 1440|   328k|  lex->type = type;
 1441|   328k|  lex->level = 0;
 1442|   328k|  lex->term = term;
 1443|   328k|  lex->paren = paren;
 1444|   328k|  lex->prev = p->lex_strterm;
 1445|   328k|  return lex;
 1446|   328k|}
y.tab.c:newtok:
11041|  1.33M|{
11042|  1.33M|  if (p->tokbuf != p->buf) {
  ------------------
  |  Branch (11042:7): [True: 417, False: 1.33M]
  ------------------
11043|    417|    mrb_free(p->mrb, p->tokbuf);
11044|    417|    p->tokbuf = p->buf;
11045|    417|    p->tsiz = MRB_PARSER_TOKBUF_SIZE;
  ------------------
  |  |  112|    417|#define MRB_PARSER_TOKBUF_SIZE 256
  ------------------
11046|    417|  }
11047|  1.33M|  p->tidx = 0;
11048|  1.33M|  return p->column - 1;
11049|  1.33M|}
y.tab.c:tokadd:
11053|  8.75M|{
11054|  8.75M|  char utf8[4];
11055|  8.75M|  int i, len;
11056|       |
11057|       |  /* mrb_assert(-0x10FFFF <= c && c <= 0xFF); */
11058|  8.75M|  if (c >= 0) {
  ------------------
  |  Branch (11058:7): [True: 8.75M, False: 0]
  ------------------
11059|       |    /* Single byte from source or non-Unicode escape */
11060|  8.75M|    utf8[0] = (char)c;
11061|  8.75M|    len = 1;
11062|  8.75M|  }
11063|      0|  else {
11064|       |    /* Unicode character */
11065|      0|    c = -c;
11066|      0|    if (c < 0x80) {
  ------------------
  |  Branch (11066:9): [True: 0, False: 0]
  ------------------
11067|      0|      utf8[0] = (char)c;
11068|      0|      len = 1;
11069|      0|    }
11070|      0|    else if (c < 0x800) {
  ------------------
  |  Branch (11070:14): [True: 0, False: 0]
  ------------------
11071|      0|      utf8[0] = (char)(0xC0 | (c >> 6));
11072|      0|      utf8[1] = (char)(0x80 | (c & 0x3F));
11073|      0|      len = 2;
11074|      0|    }
11075|      0|    else if (c < 0x10000) {
  ------------------
  |  Branch (11075:14): [True: 0, False: 0]
  ------------------
11076|      0|      utf8[0] = (char)(0xE0 |  (c >> 12)        );
11077|      0|      utf8[1] = (char)(0x80 | ((c >>  6) & 0x3F));
11078|      0|      utf8[2] = (char)(0x80 | ( c        & 0x3F));
11079|      0|      len = 3;
11080|      0|    }
11081|      0|    else {
11082|      0|      utf8[0] = (char)(0xF0 |  (c >> 18)        );
11083|      0|      utf8[1] = (char)(0x80 | ((c >> 12) & 0x3F));
11084|      0|      utf8[2] = (char)(0x80 | ((c >>  6) & 0x3F));
11085|      0|      utf8[3] = (char)(0x80 | ( c        & 0x3F));
11086|      0|      len = 4;
11087|      0|    }
11088|      0|  }
11089|  8.75M|  if (p->tidx+len >= p->tsiz) {
  ------------------
  |  Branch (11089:7): [True: 247k, False: 8.50M]
  ------------------
11090|   247k|    if (p->tsiz >= MRB_PARSER_TOKBUF_MAX) {
  ------------------
  |  |  111|   247k|#define MRB_PARSER_TOKBUF_MAX (UINT16_MAX-1)
  ------------------
  |  Branch (11090:9): [True: 246k, False: 1.36k]
  ------------------
11091|   246k|      p->tidx += len;
11092|   246k|      return;
11093|   246k|    }
11094|  1.36k|    p->tsiz *= 2;
11095|  1.36k|    if (p->tokbuf == p->buf) {
  ------------------
  |  Branch (11095:9): [True: 417, False: 946]
  ------------------
11096|    417|      p->tokbuf = (char*)mrb_malloc(p->mrb, p->tsiz);
11097|    417|      memcpy(p->tokbuf, p->buf, MRB_PARSER_TOKBUF_SIZE);
  ------------------
  |  |  112|    417|#define MRB_PARSER_TOKBUF_SIZE 256
  ------------------
11098|    417|    }
11099|    946|    else {
11100|    946|      p->tokbuf = (char*)mrb_realloc(p->mrb, p->tokbuf, p->tsiz);
11101|    946|    }
11102|  1.36k|  }
11103|  17.0M|  for (i = 0; i < len; i++) {
  ------------------
  |  Branch (11103:15): [True: 8.50M, False: 8.50M]
  ------------------
11104|  8.50M|    p->tokbuf[p->tidx++] = utf8[i];
11105|  8.50M|  }
11106|  8.50M|}
y.tab.c:tokfix:
11116|  1.33M|{
11117|  1.33M|  if (p->tidx >= MRB_PARSER_TOKBUF_MAX) {
  ------------------
  |  |  111|  1.33M|#define MRB_PARSER_TOKBUF_MAX (UINT16_MAX-1)
  ------------------
  |  Branch (11117:7): [True: 59, False: 1.33M]
  ------------------
11118|     59|    p->tidx = MRB_PARSER_TOKBUF_MAX-1;
  ------------------
  |  |  111|     59|#define MRB_PARSER_TOKBUF_MAX (UINT16_MAX-1)
  ------------------
11119|     59|    yyerror(p, "string too long (truncated)");
11120|     59|  }
11121|  1.33M|  p->tokbuf[p->tidx] = '\0';
11122|  1.33M|}
y.tab.c:tok:
11126|  2.93M|{
11127|  2.93M|  return p->tokbuf;
11128|  2.93M|}
y.tab.c:toklen:
11132|  1.14M|{
11133|  1.14M|  return p->tidx;
11134|  1.14M|}
y.tab.c:number_literal_suffix:
11704|   617k|{
11705|   617k|  int c, result = 0;
11706|   617k|  node *list = 0;
11707|   617k|  int column = p->column;
11708|   617k|  int mask = NUM_SUFFIX_R|NUM_SUFFIX_I;
  ------------------
  |  |  138|   617k|#define NUM_SUFFIX_R   (1<<0)
  ------------------
                int mask = NUM_SUFFIX_R|NUM_SUFFIX_I;
  ------------------
  |  |  139|   617k|#define NUM_SUFFIX_I   (1<<1)
  ------------------
11709|       |
11710|   617k|  while ((c = nextc(p)) != -1) {
  ------------------
  |  Branch (11710:10): [True: 617k, False: 0]
  ------------------
11711|   617k|    list = push(list, nint(c));
  ------------------
  |  |  268|   617k|#define push(a,b) append_gen(p,(a),list1(b))
  |  |  ------------------
  |  |  |  |  217|   617k|#define list1(a) list1_gen(p, (a))
  |  |  ------------------
  ------------------
11712|       |
11713|   617k|    if ((mask & NUM_SUFFIX_I) && c == 'i') {
  ------------------
  |  |  139|   617k|#define NUM_SUFFIX_I   (1<<1)
  ------------------
  |  Branch (11713:9): [True: 617k, False: 0]
  |  Branch (11713:34): [True: 0, False: 617k]
  ------------------
11714|      0|      result |= (mask & NUM_SUFFIX_I);
  ------------------
  |  |  139|      0|#define NUM_SUFFIX_I   (1<<1)
  ------------------
11715|      0|      mask &= ~NUM_SUFFIX_I;
  ------------------
  |  |  139|      0|#define NUM_SUFFIX_I   (1<<1)
  ------------------
11716|       |      /* r after i, rational of complex is disallowed */
11717|      0|      mask &= ~NUM_SUFFIX_R;
  ------------------
  |  |  138|      0|#define NUM_SUFFIX_R   (1<<0)
  ------------------
11718|      0|      continue;
11719|      0|    }
11720|   617k|    if ((mask & NUM_SUFFIX_R) && c == 'r') {
  ------------------
  |  |  138|   617k|#define NUM_SUFFIX_R   (1<<0)
  ------------------
  |  Branch (11720:9): [True: 617k, False: 0]
  |  Branch (11720:34): [True: 0, False: 617k]
  ------------------
11721|      0|      result |= (mask & NUM_SUFFIX_R);
  ------------------
  |  |  138|      0|#define NUM_SUFFIX_R   (1<<0)
  ------------------
11722|      0|      mask &= ~NUM_SUFFIX_R;
  ------------------
  |  |  138|      0|#define NUM_SUFFIX_R   (1<<0)
  ------------------
11723|      0|      continue;
11724|      0|    }
11725|   617k|    if (!ISASCII(c) || ISALPHA(c) || c == '_') {
  ------------------
  |  | 1336|  1.23M|#define ISASCII(c) ((unsigned)(c) <= 0x7f)
  ------------------
                  if (!ISASCII(c) || ISALPHA(c) || c == '_') {
  ------------------
  |  | 1341|  1.23M|#define ISALPHA(c) ((((unsigned)(c) | 0x20) - 'a') < 26)
  |  |  ------------------
  |  |  |  Branch (1341:20): [True: 0, False: 617k]
  |  |  ------------------
  ------------------
  |  Branch (11725:9): [True: 0, False: 617k]
  |  Branch (11725:38): [True: 0, False: 617k]
  ------------------
11726|      0|      p->column = column;
11727|      0|      if (p->pb) {
  ------------------
  |  Branch (11727:11): [True: 0, False: 0]
  ------------------
11728|      0|        p->pb = append(list, p->pb);
  ------------------
  |  |  267|      0|#define append(a,b) append_gen(p,(a),(b))
  ------------------
11729|      0|      }
11730|      0|      else {
11731|      0|        p->pb = list;
11732|      0|      }
11733|      0|      return 0;
11734|      0|    }
11735|   617k|    pushback(p, c);
11736|   617k|    break;
11737|   617k|  }
11738|   617k|  return result;
11739|   617k|}
y.tab.c:parser_strdup:
  284|   617k|{
  285|   617k|  return parser_strndup(p, s, strlen(s));
  286|   617k|}
y.tab.c:intern_gen:
  150|   288k|{
  151|   288k|  return mrb_intern(p->mrb, s, len);
  152|   288k|}
y.tab.c:toklast:
11110|   744k|{
11111|   744k|  return p->tokbuf[p->tidx-1];
11112|   744k|}
y.tab.c:intern_cstr_gen:
  143|  89.4k|{
  144|  89.4k|  return mrb_intern_cstr(p->mrb, s);
  145|  89.4k|}
y.tab.c:new_scope:
  442|    476|{
  443|    476|  return cons((node*)NODE_SCOPE, cons(locals_node(p), body));
  ------------------
  |  |  210|    476|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  444|    476|}
y.tab.c:new_begin:
  449|   198k|{
  450|   198k|  if (body) {
  ------------------
  |  Branch (450:7): [True: 165k, False: 33.5k]
  ------------------
  451|   165k|    return list2((node*)NODE_BEGIN, body);
  ------------------
  |  |  224|   165k|#define list2(a,b) list2_gen(p, (a),(b))
  ------------------
  452|   165k|  }
  453|  33.5k|  return cons((node*)NODE_BEGIN, 0);
  ------------------
  |  |  210|  33.5k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  454|   198k|}
y.tab.c:local_switch:
  314|    476|{
  315|    476|  node *prev = p->locals;
  316|       |
  317|    476|  p->locals = cons(0, 0);
  ------------------
  |  |  210|    476|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  318|    476|  return prev;
  319|    476|}
y.tab.c:nvars_block:
  429|    476|{
  430|    476|  p->nvars = cons(nint(-2), p->nvars);
  ------------------
  |  |  210|    476|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  431|    476|}
y.tab.c:local_resume:
  323|    476|{
  324|    476|  p->locals = prev;
  325|    476|}
y.tab.c:nvars_unnest:
  435|    476|{
  436|    476|  p->nvars = p->nvars->cdr;
  437|    476|}
y.tab.c:list4_gen:
  235|   202k|{
  236|   202k|  return cons(a, cons(b, cons(c, cons(d, 0))));
  ------------------
  |  |  210|   202k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  237|   202k|}
y.tab.c:new_if:
  509|  25.3k|{
  510|  25.3k|  void_expr_error(p, a);
  511|  25.3k|  return list4((node*)NODE_IF, a, b, c);
  ------------------
  |  |  238|  25.3k|#define list4(a,b,c,d) list4_gen(p, (a),(b),(c),(d))
  ------------------
  512|  25.3k|}
y.tab.c:cond:
 1368|  25.3k|{
 1369|  25.3k|  return n;
 1370|  25.3k|}
y.tab.c:new_asgn:
 1040|   120k|{
 1041|   120k|  void_expr_error(p, b);
 1042|   120k|  return cons((node*)NODE_ASGN, cons(a, b));
  ------------------
  |  |  210|   120k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
 1043|   120k|}
y.tab.c:new_array:
  716|  46.7k|{
  717|  46.7k|  return cons((node*)NODE_ARRAY, a);
  ------------------
  |  |  210|  46.7k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  718|  46.7k|}
y.tab.c:new_lvar:
  761|   179k|{
  762|   179k|  return cons((node*)NODE_LVAR, nsym(sym));
  ------------------
  |  |  210|   179k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  763|   179k|}
y.tab.c:assignable:
 1386|   141k|{
 1387|   141k|  if (intn(lhs->car) == NODE_LVAR) {
  ------------------
  |  |  135|   141k|#define intn(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (1387:7): [True: 120k, False: 20.9k]
  ------------------
 1388|   120k|    local_add(p, sym(lhs->cdr));
  ------------------
  |  |  132|   120k|#define sym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1389|   120k|  }
 1390|   141k|}
y.tab.c:local_add:
  395|   120k|{
  396|   120k|  if (!local_var_p(p, sym)) {
  ------------------
  |  Branch (396:7): [True: 68.8k, False: 52.0k]
  ------------------
  397|  68.8k|    local_add_f(p, sym);
  398|  68.8k|  }
  399|   120k|}
y.tab.c:new_op_asgn:
 1063|  20.9k|{
 1064|  20.9k|  void_expr_error(p, b);
 1065|  20.9k|  return list4((node*)NODE_OP_ASGN, a, nsym(op), b);
  ------------------
  |  |  238|  20.9k|#define list4(a,b,c,d) list4_gen(p, (a),(b),(c),(d))
  ------------------
 1066|  20.9k|}
y.tab.c:new_call:
  578|   155k|{
  579|   155k|  node *n = list4(nint(pass?NODE_CALL:NODE_SCALL), a, nsym(b), c);
  ------------------
  |  |  238|   311k|#define list4(a,b,c,d) list4_gen(p, (a),(b),(c),(d))
  |  |  ------------------
  |  |  |  Branch (238:38): [True: 155k, False: 0]
  |  |  ------------------
  ------------------
  580|   155k|  void_expr_error(p, a);
  581|   155k|  NODE_LINENO(n, a);
  ------------------
  |  |  125|   155k|#define NODE_LINENO(c,n) do {\
  |  |  126|   155k|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 155k, False: 0]
  |  |  ------------------
  |  |  127|   155k|     (c)->filename_index = (n)->filename_index;\
  |  |  128|   155k|     (c)->lineno = (n)->lineno;\
  |  |  129|   155k|  }\
  |  |  130|   155k|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  582|   155k|  return n;
  583|   155k|}
y.tab.c:void_expr_error:
10839|  1.17M|{
10840|  1.17M|  int c;
10841|       |
10842|  1.17M|  if (n == NULL) return;
  ------------------
  |  Branch (10842:7): [True: 0, False: 1.17M]
  ------------------
10843|  1.17M|  c = intn(n->car);
  ------------------
  |  |  135|  1.17M|#define intn(x) ((int)(intptr_t)(x))
  ------------------
10844|  1.17M|  switch (c) {
10845|      0|  case NODE_BREAK:
  ------------------
  |  Branch (10845:3): [True: 0, False: 1.17M]
  ------------------
10846|      0|  case NODE_RETURN:
  ------------------
  |  Branch (10846:3): [True: 0, False: 1.17M]
  ------------------
10847|      0|  case NODE_NEXT:
  ------------------
  |  Branch (10847:3): [True: 0, False: 1.17M]
  ------------------
10848|      0|  case NODE_REDO:
  ------------------
  |  Branch (10848:3): [True: 0, False: 1.17M]
  ------------------
10849|      0|  case NODE_RETRY:
  ------------------
  |  Branch (10849:3): [True: 0, False: 1.17M]
  ------------------
10850|      0|    yyerror(p, "void value expression");
10851|      0|    break;
10852|  3.24k|  case NODE_AND:
  ------------------
  |  Branch (10852:3): [True: 3.24k, False: 1.17M]
  ------------------
10853|  3.92k|  case NODE_OR:
  ------------------
  |  Branch (10853:3): [True: 684, False: 1.17M]
  ------------------
10854|  3.92k|    if (n->cdr) {
  ------------------
  |  Branch (10854:9): [True: 3.92k, False: 0]
  ------------------
10855|  3.92k|      void_expr_error(p, n->cdr->car);
10856|  3.92k|      void_expr_error(p, n->cdr->cdr);
10857|  3.92k|    }
10858|  3.92k|    break;
10859|   110k|  case NODE_BEGIN:
  ------------------
  |  Branch (10859:3): [True: 110k, False: 1.06M]
  ------------------
10860|   110k|    if (n->cdr) {
  ------------------
  |  Branch (10860:9): [True: 107k, False: 2.26k]
  ------------------
10861|   441k|      while (n->cdr) {
  ------------------
  |  Branch (10861:14): [True: 333k, False: 107k]
  ------------------
10862|   333k|        n = n->cdr;
10863|   333k|      }
10864|   107k|      void_expr_error(p, n->car);
10865|   107k|    }
10866|   110k|    break;
10867|  1.06M|  default:
  ------------------
  |  Branch (10867:3): [True: 1.06M, False: 113k]
  ------------------
10868|  1.06M|    break;
10869|  1.17M|  }
10870|  1.17M|}
y.tab.c:defn_setup:
  839|    476|{
  840|    476|  node *n = d->cdr->cdr;
  841|       |
  842|    476|  n->car = locals_node(p);
  843|    476|  p->cmdarg_stack = intn(n->cdr->car);
  ------------------
  |  |  135|    476|#define intn(x) ((int)(intptr_t)(x))
  ------------------
  844|    476|  n->cdr->car = a;
  845|    476|  local_resume(p, n->cdr->cdr->car);
  846|    476|  n->cdr->cdr->car = b;
  847|    476|}
y.tab.c:new_and:
  700|  4.33k|{
  701|  4.33k|  void_expr_error(p, a);
  702|  4.33k|  return cons((node*)NODE_AND, cons(a, b));
  ------------------
  |  |  210|  4.33k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  703|  4.33k|}
y.tab.c:new_or:
  708|  1.88k|{
  709|  1.88k|  void_expr_error(p, a);
  710|  1.88k|  return cons((node*)NODE_OR, cons(a, b));
  ------------------
  |  |  210|  1.88k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  711|  1.88k|}
y.tab.c:new_def:
  833|    476|{
  834|    476|  return list5((node*)NODE_DEF, nsym(m), 0, a, b);
  ------------------
  |  |  245|    476|#define list5(a,b,c,d,e) list5_gen(p, (a),(b),(c),(d),(e))
  ------------------
  835|    476|}
y.tab.c:list5_gen:
  242|    476|{
  243|    476|  return cons(a, cons(b, cons(c, cons(d, cons(e, 0)))));
  ------------------
  |  |  210|    476|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  244|    476|}
y.tab.c:new_fcall:
  588|    476|{
  589|    476|  node *n = list4((node*)NODE_FCALL, 0, nsym(b), c);
  ------------------
  |  |  238|    476|#define list4(a,b,c,d) list4_gen(p, (a),(b),(c),(d))
  ------------------
  590|    476|  NODE_LINENO(n, c);
  ------------------
  |  |  125|    476|#define NODE_LINENO(c,n) do {\
  |  |  126|    476|  if (n) {\
  |  |  ------------------
  |  |  |  Branch (126:7): [True: 0, False: 476]
  |  |  ------------------
  |  |  127|      0|     (c)->filename_index = (n)->filename_index;\
  |  |  128|      0|     (c)->lineno = (n)->lineno;\
  |  |  129|      0|  }\
  |  |  130|    476|} while (0)
  |  |  ------------------
  |  |  |  Branch (130:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  591|    476|  return n;
  592|    476|}
y.tab.c:list2_gen:
  221|   165k|{
  222|   165k|  return cons(a, cons(b,0));
  ------------------
  |  |  210|   165k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  223|   165k|}
y.tab.c:list3_gen:
  228|   617k|{
  229|   617k|  return cons(a, cons(b, cons(c,0)));
  ------------------
  |  |  210|   617k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  230|   617k|}
y.tab.c:new_colon2:
  685|    785|{
  686|    785|  void_expr_error(p, b);
  687|    785|  return cons((node*)NODE_COLON2, cons(b, nsym(c)));
  ------------------
  |  |  210|    785|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  688|    785|}
y.tab.c:call_bin_op:
 1300|  89.4k|{
 1301|  89.4k|  return new_call(p, recv, intern_cstr(m), new_callargs(p, list1(arg1), 0, 0), '.');
  ------------------
  |  |  146|  89.4k|#define intern_cstr(s) intern_cstr_gen(p,(s))
  ------------------
                return new_call(p, recv, intern_cstr(m), new_callargs(p, list1(arg1), 0, 0), '.');
  ------------------
  |  |  217|  89.4k|#define list1(a) list1_gen(p, (a))
  ------------------
 1302|  89.4k|}
y.tab.c:new_hash:
  731|  2.08k|{
  732|  2.08k|  return cons((node*)NODE_HASH, a);
  ------------------
  |  |  210|  2.08k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  733|  2.08k|}
y.tab.c:new_callargs:
  597|   149k|{
  598|   149k|  return cons(a, cons(b, c));
  ------------------
  |  |  210|   149k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  599|   149k|}
y.tab.c:local_var_p:
  343|   359k|{
  344|   359k|  const struct RProc *u;
  345|   359k|  node *l = p->locals;
  346|       |
  347|   499k|  while (l) {
  ------------------
  |  Branch (347:10): [True: 359k, False: 139k]
  ------------------
  348|   359k|    node *n = l->car;
  349|   114M|    while (n) {
  ------------------
  |  Branch (349:12): [True: 113M, False: 139k]
  ------------------
  350|   113M|      if (sym(n->car) == sym) return TRUE;
  ------------------
  |  |  132|   113M|#define sym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
                    if (sym(n->car) == sym) return TRUE;
  ------------------
  |  |   54|   220k|#  define TRUE 1
  ------------------
  |  Branch (350:11): [True: 220k, False: 113M]
  ------------------
  351|   113M|      n = n->cdr;
  352|   113M|    }
  353|   139k|    l = l->cdr;
  354|   139k|  }
  355|       |
  356|   139k|  u = p->upper;
  357|   139k|  while (u && !MRB_PROC_CFUNC_P(u)) {
  ------------------
  |  |   65|      0|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  ------------------
  |  |  |  |   64|      0|#define MRB_PROC_CFUNC_FL 128
  |  |  ------------------
  ------------------
  |  Branch (357:10): [True: 0, False: 139k]
  |  Branch (357:15): [True: 0, False: 0]
  ------------------
  358|      0|    const struct mrb_irep *ir = u->body.irep;
  359|      0|    const mrb_sym *v = ir->lv;
  360|      0|    int i;
  361|       |
  362|      0|    if (v) {
  ------------------
  |  Branch (362:9): [True: 0, False: 0]
  ------------------
  363|      0|      for (i=0; i+1 < ir->nlocals; i++) {
  ------------------
  |  Branch (363:17): [True: 0, False: 0]
  ------------------
  364|      0|        if (v[i] == sym) return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  |  Branch (364:13): [True: 0, False: 0]
  ------------------
  365|      0|      }
  366|      0|    }
  367|      0|    if (MRB_PROC_SCOPE_P(u)) break;
  ------------------
  |  |   86|      0|#define MRB_PROC_SCOPE_P(p) (((p)->flags & MRB_PROC_SCOPE) != 0)
  |  |  ------------------
  |  |  |  |   85|      0|#define MRB_PROC_SCOPE 2048
  |  |  ------------------
  |  |  |  Branch (86:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  368|      0|    u = u->upper;
  369|      0|  }
  370|   139k|  return FALSE;
  ------------------
  |  |   51|   139k|#  define FALSE 0
  ------------------
  371|   139k|}
y.tab.c:new_args:
  912|    476|{
  913|    476|  node *n;
  914|       |
  915|    476|  local_add_margs(p, m);
  916|    476|  local_add_margs(p, m2);
  917|    476|  n = cons(m2, tail);
  ------------------
  |  |  210|    476|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  918|    476|  n = cons(nsym(rest), n);
  ------------------
  |  |  210|    476|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  919|    476|  n = cons(opt, n);
  ------------------
  |  |  210|    476|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  920|    476|  while (opt) {
  ------------------
  |  Branch (920:10): [True: 0, False: 476]
  ------------------
  921|       |    /* opt: (sym . (opt . lv)) -> (sym . opt) */
  922|      0|    local_add_lv(p, opt->car->cdr->cdr);
  923|      0|    opt->car->cdr = opt->car->cdr->car;
  924|      0|    opt = opt->cdr;
  925|      0|  }
  926|    476|  return cons(m, n);
  ------------------
  |  |  210|    476|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  927|    476|}
y.tab.c:local_add_margs:
  878|    952|{
  879|    952|  while (n) {
  ------------------
  |  Branch (879:10): [True: 0, False: 952]
  ------------------
  880|      0|    if (typen(n->car->car) == NODE_MASGN) {
  ------------------
  |  |  136|      0|#define typen(x) ((enum node_type)(intptr_t)(x))
  ------------------
  |  Branch (880:9): [True: 0, False: 0]
  ------------------
  881|      0|      node *t = n->car->cdr->cdr;
  882|       |
  883|      0|      n->car->cdr->cdr = NULL;
  884|      0|      while (t) {
  ------------------
  |  Branch (884:14): [True: 0, False: 0]
  ------------------
  885|      0|        local_add_f(p, sym(t->car));
  ------------------
  |  |  132|      0|#define sym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
  886|      0|        t = t->cdr;
  887|      0|      }
  888|      0|      local_add_margs(p, n->car->cdr->car->car);
  889|      0|      local_add_margs(p, n->car->cdr->car->cdr->cdr->car);
  890|      0|    }
  891|      0|    n = n->cdr;
  892|      0|  }
  893|    952|}
y.tab.c:cons_free_gen:
  168|  2.58M|{
  169|  2.58M|  cons->cdr = p->cells;
  170|  2.58M|  p->cells = cons;
  171|  2.58M|}
y.tab.c:new_str:
 1114|   328k|{
 1115|   328k|  return cons((node*)NODE_STR, cons((node*)strndup(s, len), nint(len)));
  ------------------
  |  |  210|   328k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
 1116|   328k|}
y.tab.c:heredoc_treat_nextline:
 1484|   707k|{
 1485|   707k|  if (p->heredocs_from_nextline == NULL) return;
  ------------------
  |  Branch (1485:7): [True: 707k, False: 0]
  ------------------
 1486|      0|  if (p->parsing_heredoc && p->lex_strterm) {
  ------------------
  |  Branch (1486:7): [True: 0, False: 0]
  |  Branch (1486:29): [True: 0, False: 0]
  ------------------
 1487|      0|    append(p->heredocs_from_nextline, p->parsing_heredoc);
  ------------------
  |  |  267|      0|#define append(a,b) append_gen(p,(a),(b))
  ------------------
 1488|      0|  }
 1489|      0|  p->parsing_heredoc = p->heredocs_from_nextline;
 1490|      0|  p->lex_strterm = new_strterm(p, parsing_heredoc_info(p)->type, 0, 0);
 1491|      0|  p->heredocs_from_nextline = NULL;
 1492|      0|}
y.tab.c:new_ivar:
  775|  20.9k|{
  776|  20.9k|  return cons((node*)NODE_IVAR, nsym(sym));
  ------------------
  |  |  210|  20.9k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  777|  20.9k|}
y.tab.c:new_const:
  796|  20.1k|{
  797|  20.1k|  return cons((node*)NODE_CONST, nsym(sym));
  ------------------
  |  |  210|  20.1k|#define cons(a,b) cons_gen(p,(a),(b))
  ------------------
  798|  20.1k|}
y.tab.c:var_reference:
 1394|  79.0k|{
 1395|  79.0k|  node *n;
 1396|       |
 1397|  79.0k|  if (intn(lhs->car) == NODE_LVAR) {
  ------------------
  |  |  135|  79.0k|#define intn(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (1397:7): [True: 58.9k, False: 20.1k]
  ------------------
 1398|  58.9k|    if (!local_var_p(p, sym(lhs->cdr))) {
  ------------------
  |  |  132|  58.9k|#define sym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
  |  Branch (1398:9): [True: 476, False: 58.4k]
  ------------------
 1399|    476|      n = new_fcall(p, sym(lhs->cdr), 0);
  ------------------
  |  |  132|    476|#define sym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
 1400|    476|      cons_free(lhs);
  ------------------
  |  |  172|    476|#define cons_free(c) cons_free_gen(p, (c))
  ------------------
 1401|    476|      return n;
 1402|    476|    }
 1403|  58.9k|  }
 1404|       |
 1405|  78.5k|  return lhs;
 1406|  79.0k|}
y.tab.c:new_int:
 1084|   617k|{
 1085|   617k|  node* result = list3((node*)NODE_INT, (node*)strdup(s), nint(base));
  ------------------
  |  |  231|   617k|#define list3(a,b,c) list3_gen(p, (a),(b),(c))
  ------------------
 1086|   617k|  if (suffix & NUM_SUFFIX_R) {
  ------------------
  |  |  138|   617k|#define NUM_SUFFIX_R   (1<<0)
  ------------------
  |  Branch (1086:7): [True: 0, False: 617k]
  ------------------
 1087|      0|    result = new_rational(p, result);
 1088|      0|  }
 1089|   617k|  if (suffix & NUM_SUFFIX_I) {
  ------------------
  |  |  139|   617k|#define NUM_SUFFIX_I   (1<<1)
  ------------------
  |  Branch (1089:7): [True: 0, False: 617k]
  ------------------
 1090|      0|    result = new_imaginary(p, result);
 1091|      0|  }
 1092|   617k|  return result;
 1093|   617k|}
y.tab.c:locals_node:
  417|    952|{
  418|    952|  return p->locals ? p->locals->car : NULL;
  ------------------
  |  Branch (418:10): [True: 952, False: 0]
  ------------------
  419|    952|}
y.tab.c:yydestruct:
 6203|    952|{
 6204|    952|  YY_USE (yyvaluep);
  ------------------
  |  | 2185|    952|# define YY_USE(E) ((void) (E))
  ------------------
 6205|    952|  YY_USE (p);
  ------------------
  |  | 2185|    952|# define YY_USE(E) ((void) (E))
  ------------------
 6206|    952|  if (!yymsg)
  ------------------
  |  Branch (6206:7): [True: 0, False: 952]
  ------------------
 6207|      0|    yymsg = "Deleting";
 6208|    952|  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 6209|       |
 6210|    952|  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
 6211|    952|  YY_USE (yykind);
  ------------------
  |  | 2185|    952|# define YY_USE(E) ((void) (E))
  ------------------
 6212|    952|  YY_IGNORE_MAYBE_UNINITIALIZED_END
 6213|    952|}
y.tab.c:parser_update_cxt:
13190|    466|{
13191|    466|  node *n, *n0;
13192|    466|  int i = 0;
13193|       |
13194|    466|  if (!cxt) return;
  ------------------
  |  Branch (13194:7): [True: 466, False: 0]
  ------------------
13195|      0|  if (!p->tree) return;
  ------------------
  |  Branch (13195:7): [True: 0, False: 0]
  ------------------
13196|      0|  if (intn(p->tree->car) != NODE_SCOPE) return;
  ------------------
  |  |  135|      0|#define intn(x) ((int)(intptr_t)(x))
  ------------------
  |  Branch (13196:7): [True: 0, False: 0]
  ------------------
13197|      0|  n0 = n = p->tree->cdr->car;
13198|      0|  while (n) {
  ------------------
  |  Branch (13198:10): [True: 0, False: 0]
  ------------------
13199|      0|    i++;
13200|      0|    n = n->cdr;
13201|      0|  }
13202|      0|  cxt->syms = (mrb_sym*)mrb_realloc(p->mrb, cxt->syms, i*sizeof(mrb_sym));
13203|      0|  cxt->slen = i;
13204|      0|  for (i=0, n=n0; n; i++,n=n->cdr) {
  ------------------
  |  Branch (13204:19): [True: 0, False: 0]
  ------------------
13205|      0|    cxt->syms[i] = sym(n->car);
  ------------------
  |  |  132|      0|#define sym(x) ((mrb_sym)(intptr_t)(x))
  ------------------
13206|      0|  }
13207|      0|}
y.tab.c:yyerror:
10742|     59|{
10743|     59|  char* c;
10744|     59|  size_t n;
10745|       |
10746|     59|  if (! p->capture_errors) {
  ------------------
  |  Branch (10746:7): [True: 59, False: 0]
  ------------------
10747|     59|#ifndef MRB_NO_STDIO
10748|     59|    if (p->filename_sym) {
  ------------------
  |  Branch (10748:9): [True: 0, False: 59]
  ------------------
10749|      0|      const char *filename = mrb_sym_name_len(p->mrb, p->filename_sym, NULL);
10750|      0|      fprintf(stderr, "%s:%d:%d: %s\n", filename, p->lineno, p->column, s);
10751|      0|    }
10752|     59|    else {
10753|     59|      fprintf(stderr, "line %d:%d: %s\n", p->lineno, p->column, s);
10754|     59|    }
10755|     59|#endif
10756|     59|  }
10757|      0|  else if (p->nerr < sizeof(p->error_buffer) / sizeof(p->error_buffer[0])) {
  ------------------
  |  Branch (10757:12): [True: 0, False: 0]
  ------------------
10758|      0|    n = strlen(s);
10759|      0|    c = (char*)parser_palloc(p, n + 1);
10760|      0|    memcpy(c, s, n + 1);
10761|      0|    p->error_buffer[p->nerr].message = c;
10762|      0|    p->error_buffer[p->nerr].lineno = p->lineno;
10763|      0|    p->error_buffer[p->nerr].column = p->column;
10764|      0|  }
10765|     59|  p->nerr++;
10766|     59|}
y.tab.c:parser_palloc:
  176|  7.19M|{
  177|  7.19M|  void *m = mrb_pool_alloc(p->pool, size);
  178|       |
  179|  7.19M|  if (!m) {
  ------------------
  |  Branch (179:7): [True: 0, False: 7.19M]
  ------------------
  180|      0|    MRB_THROW(p->mrb->jmp);
  ------------------
  |  |   48|      0|#define MRB_THROW(buf) MRB_LONGJMP((buf)->impl, 1);
  |  |  ------------------
  |  |  |  |   41|      0|#define MRB_LONGJMP longjmp
  |  |  ------------------
  ------------------
  181|      0|  }
  182|  7.19M|  return m;
  183|  7.19M|}

mrb_mruby_complex_gem_init:
  394|    476|{
  395|    476|  struct RClass *comp;
  396|       |
  397|    476|  comp = mrb_define_class_id(mrb, MRB_SYM(Complex), mrb_class_get_id(mrb, MRB_SYM(Numeric)));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                comp = mrb_define_class_id(mrb, MRB_SYM(Complex), mrb_class_get_id(mrb, MRB_SYM(Numeric)));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  398|    476|  MRB_SET_INSTANCE_TT(comp, MRB_TT_UNDEF);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  399|       |
  400|    476|  mrb_undef_class_method(mrb, comp, "new");
  401|    476|  mrb_define_class_method(mrb, comp, "rectangular", complex_s_rect, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_class_method(mrb, comp, "rectangular", complex_s_rect, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  402|    476|  mrb_define_class_method(mrb, comp, "rect", complex_s_rect, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_class_method(mrb, comp, "rect", complex_s_rect, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  403|    476|  mrb_define_method(mrb, mrb->kernel_module, "Complex", complex_s_rect, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_method(mrb, mrb->kernel_module, "Complex", complex_s_rect, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  404|    476|  mrb_define_method(mrb, comp, "real", complex_real, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  405|    476|  mrb_define_method(mrb, comp, "imaginary", complex_imaginary, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  406|    476|  mrb_define_method(mrb, comp, "to_f", mrb_complex_to_f, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  407|    476|  mrb_define_method(mrb, comp, "to_i", mrb_complex_to_i, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  408|    476|  mrb_define_method(mrb, comp, "to_c", complex_to_c, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  409|    476|  mrb_define_method(mrb, comp, "+", complex_add, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  410|    476|  mrb_define_method(mrb, comp, "-", complex_sub, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  411|    476|  mrb_define_method(mrb, comp, "*", complex_mul, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  412|    476|  mrb_define_method(mrb, comp, "/", complex_div, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  413|    476|  mrb_define_method(mrb, comp, "quo", complex_div, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  414|    476|  mrb_define_method(mrb, comp, "==", complex_eq, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  415|    476|  mrb_define_method(mrb, comp, "hash", complex_hash, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  416|    476|  mrb_define_method(mrb, mrb->nil_class, "to_c", nil_to_c, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  417|    476|}
mrb_mruby_complex_gem_final:
  421|    476|{
  422|    476|}

mrb_mruby_data_gem_init:
  492|    476|{
  493|    476|  struct RClass *d;
  494|    476|  d = mrb_define_class(mrb, "Data",  mrb->object_class);
  495|    476|  MRB_SET_INSTANCE_TT(d, MRB_TT_UNDEF);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  496|       |
  497|    476|  mrb_undef_class_method(mrb, d, "new");
  498|    476|  mrb_define_class_method(mrb, d, "define",          mrb_data_s_def,      MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  499|       |
  500|    476|  mrb_define_method(mrb, d,       "==",              mrb_data_equal,      MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  501|    476|  mrb_define_method(mrb, d,       "members",         mrb_data_members,    MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  502|    476|  mrb_define_method(mrb, d,       "initialize",      mrb_data_initialize, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  503|    476|  mrb_define_method(mrb, d,       "initialize_copy", mrb_data_init_copy,  MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  504|    476|  mrb_define_method(mrb, d,       "eql?",            mrb_data_eql,        MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  505|       |
  506|    476|  mrb_define_method(mrb, d,       "to_h",            mrb_data_to_h,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  507|    476|  mrb_define_method(mrb, d,       "to_s",            mrb_data_to_s,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  508|    476|  mrb_define_method(mrb, d,       "inspect",         mrb_data_to_s,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  509|    476|}
mrb_mruby_data_gem_final:
  513|    476|{
  514|    476|}

mrb_mruby_dir_gem_init:
  302|    476|{
  303|    476|  struct RClass *d;
  304|       |
  305|    476|  d = mrb_define_class(mrb, "Dir", mrb->object_class);
  306|    476|  MRB_SET_INSTANCE_TT(d, MRB_TT_DATA);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  307|    476|  mrb_define_class_method(mrb, d, "delete", mrb_dir_delete, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  308|    476|  mrb_define_class_method(mrb, d, "exist?", mrb_dir_existp, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  309|    476|  mrb_define_class_method(mrb, d, "getwd",  mrb_dir_getwd,  MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  310|    476|  mrb_define_class_method(mrb, d, "mkdir",  mrb_dir_mkdir,  MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_class_method(mrb, d, "mkdir",  mrb_dir_mkdir,  MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  311|    476|  mrb_define_class_method(mrb, d, "_chdir", mrb_dir_chdir,  MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  312|    476|  mrb_define_class_method(mrb, d, "chroot", mrb_dir_chroot, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  313|    476|  mrb_define_class_method(mrb, d, "empty?", mrb_dir_empty, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  314|       |
  315|    476|  mrb_define_method(mrb, d, "close",      mrb_dir_close,  MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  316|    476|  mrb_define_method(mrb, d, "initialize", mrb_dir_init,   MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  317|    476|  mrb_define_method(mrb, d, "read",       mrb_dir_read,   MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  318|    476|  mrb_define_method(mrb, d, "rewind",     mrb_dir_rewind, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  319|    476|  mrb_define_method(mrb, d, "seek",       mrb_dir_seek,   MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  320|    476|  mrb_define_method(mrb, d, "tell",       mrb_dir_tell,   MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  321|       |
  322|    476|  mrb_define_class(mrb, "IOError", E_STANDARD_ERROR);
  ------------------
  |  | 1373|    476|#define E_STANDARD_ERROR     mrb->eStandardError_class
  ------------------
  323|    476|}
mrb_mruby_dir_gem_final:
  327|    476|{
  328|    476|}

mrb_mruby_errno_gem_init:
  299|    476|{
  300|    476|  struct RClass *e, *eno, *sce;
  301|       |
  302|    476|  sce = mrb_define_class(mrb, "SystemCallError", E_STANDARD_ERROR);
  ------------------
  |  | 1373|    476|#define E_STANDARD_ERROR     mrb->eStandardError_class
  ------------------
  303|    476|  mrb_define_class_method(mrb, sce, "_sys_fail", mrb_sce_sys_fail, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  304|    476|  mrb_define_method(mrb, sce, "errno", mrb_sce_errno, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  305|    476|  mrb_define_method(mrb, sce, "initialize", mrb_sce_init_m, MRB_ARGS_ARG(1, 1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
  306|       |
  307|    476|  eno = mrb_define_module_id(mrb, MRB_SYM(Errno));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  308|    476|  mrb_define_class_method(mrb, eno, "__errno_defined?", mrb_errno_defined_p, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  309|    476|  mrb_define_class_method(mrb, eno, "__errno_define", mrb_errno_define, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  310|    476|  mrb_define_class_method(mrb, eno, "__errno_list", mrb_errno_list, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  311|       |
  312|    476|  e = mrb_define_class_under_id(mrb, eno, MRB_SYM(NOERROR), sce);
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  313|    476|  mrb_define_const_id(mrb, e, MRB_SYM(Errno), mrb_fixnum_value(0));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  314|       |  //mrb_define_method(mrb, e, "===", mrb_exxx_cmp, MRB_ARGS_REQ(1));
  315|       |
  316|       |  // Pre-allocation for Errno::ENOMEM only
  317|    476|  mrb_errno_define_exxx(mrb, MRB_SYM(ENOMEM), ENOMEM);
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  318|    476|}
mrb_mruby_errno_gem_final:
  322|    476|{
  323|    476|}
errno.c:mrb_errno_define_exxx:
   56|    476|{
   57|    476|  struct RClass *errno_module = mrb_module_get_id(mrb, MRB_SYM(Errno));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
   58|       |
   59|    476|  if (mrb_const_defined_at(mrb, mrb_obj_value(errno_module), name)) {
  ------------------
  |  Branch (59:7): [True: 0, False: 476]
  ------------------
   60|      0|    mrb_value v = mrb_const_get(mrb, mrb_obj_value(errno_module), name);
   61|       |
   62|      0|    if (mrb_class_p(v)) {
  ------------------
  |  |  193|      0|#define mrb_class_p(o) WORDBOX_OBJ_TYPE_P(o, CLASS)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   63|      0|      return mrb_class_ptr(v);
  ------------------
  |  |   24|      0|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
   64|      0|    }
   65|      0|  }
   66|       |
   67|    476|  struct RClass *sce_class = mrb_exc_get_id(mrb, MRB_SYM(SystemCallError));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
   68|    476|  struct RClass *e = mrb_define_class_under_id(mrb, errno_module, name, sce_class);
   69|    476|  mrb_define_const_id(mrb, e, MRB_SYM(Errno), mrb_fixnum_value(eno));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
   70|       |
   71|    476|  return e;
   72|    476|}

mrb_mruby_error_gem_init:
   75|    476|{
   76|    476|}
mrb_mruby_error_gem_final:
   80|    476|{
   81|    476|}

mrb_mruby_eval_gem_init:
  344|    476|{
  345|    476|  mrb_define_module_function(mrb, mrb->kernel_module, "eval", f_eval, MRB_ARGS_ARG(1, 3));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
  346|    476|  mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(BasicObject)), MRB_SYM(instance_eval), f_instance_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK());
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(BasicObject)), MRB_SYM(instance_eval), f_instance_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK());
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(BasicObject)), MRB_SYM(instance_eval), f_instance_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK());
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
                mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(BasicObject)), MRB_SYM(instance_eval), f_instance_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK());
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
  347|    476|  mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(Module)), MRB_SYM(module_eval), f_class_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK());
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(Module)), MRB_SYM(module_eval), f_class_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK());
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(Module)), MRB_SYM(module_eval), f_class_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK());
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
                mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(Module)), MRB_SYM(module_eval), f_class_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK());
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
  348|    476|  mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(Module)), MRB_SYM(class_eval), f_class_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK());
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(Module)), MRB_SYM(class_eval), f_class_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK());
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(Module)), MRB_SYM(class_eval), f_class_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK());
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
                mrb_define_method_id(mrb, mrb_class_get_id(mrb, MRB_SYM(Module)), MRB_SYM(class_eval), f_class_eval, MRB_ARGS_OPT(3)|MRB_ARGS_BLOCK());
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
  349|       |
  350|    476|  struct RClass *binding = mrb_class_get_id(mrb, MRB_SYM(Binding));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  351|    476|  mrb_define_method(mrb, binding, "eval", mrb_binding_eval, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  352|    476|}
mrb_mruby_eval_gem_final:
  356|    476|{
  357|    476|}

mrb_mruby_fiber_gem_init:
  462|    476|{
  463|    476|  struct RClass *c;
  464|       |
  465|    476|  c = mrb_define_class(mrb, "Fiber", mrb->object_class);
  466|    476|  MRB_SET_INSTANCE_TT(c, MRB_TT_FIBER);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  467|       |
  468|    476|  mrb_define_method(mrb, c, "initialize", fiber_init,    MRB_ARGS_NONE()|MRB_ARGS_BLOCK());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
                mrb_define_method(mrb, c, "initialize", fiber_init,    MRB_ARGS_NONE()|MRB_ARGS_BLOCK());
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
  469|    476|  mrb_define_method(mrb, c, "resume",     fiber_resume,  MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  470|    476|  mrb_define_method(mrb, c, "transfer",   fiber_transfer, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  471|    476|  mrb_define_method(mrb, c, "alive?",     fiber_alive_p, MRB_ARGS_NONE());
  ------------------
  |  |  335|    476|#define fiber_alive_p mrb_fiber_alive_p
  ------------------
                mrb_define_method(mrb, c, "alive?",     fiber_alive_p, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  472|    476|  mrb_define_method(mrb, c, "==",         fiber_eq,      MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  473|       |
  474|    476|  mrb_define_class_method(mrb, c, "yield", fiber_yield, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  475|    476|  mrb_define_class_method(mrb, c, "current", fiber_current, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  476|       |
  477|    476|  mrb_define_class(mrb, "FiberError", E_STANDARD_ERROR);
  ------------------
  |  | 1373|    476|#define E_STANDARD_ERROR     mrb->eStandardError_class
  ------------------
  478|    476|}
mrb_mruby_fiber_gem_final:
  482|    476|{
  483|    476|}

mrb_mruby_hash_ext_gem_init:
  100|    476|{
  101|    476|  struct RClass *h;
  102|       |
  103|    476|  h = mrb->hash_class;
  104|    476|  mrb_define_method(mrb, h, "values_at", hash_values_at, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  105|    476|  mrb_define_method(mrb, h, "slice",     hash_slice, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  106|    476|  mrb_define_method(mrb, h, "except",    hash_except, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  107|    476|}
mrb_mruby_hash_ext_gem_final:
  111|    476|{
  112|    476|}

mrb_init_file:
  646|    476|{
  647|    476|  struct RClass *io, *file, *cnst;
  648|       |
  649|    476|  io   = mrb_class_get_id(mrb, MRB_SYM(IO));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  650|    476|  file = mrb_define_class(mrb, "File", io);
  651|    476|  MRB_SET_INSTANCE_TT(file, MRB_TT_CDATA);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  652|    476|  mrb_define_class_method(mrb, file, "umask",  mrb_file_s_umask, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  653|    476|  mrb_define_class_method(mrb, file, "delete", mrb_file_s_unlink, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  654|    476|  mrb_define_class_method(mrb, file, "unlink", mrb_file_s_unlink, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  655|    476|  mrb_define_class_method(mrb, file, "rename", mrb_file_s_rename, MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  656|    476|  mrb_define_class_method(mrb, file, "symlink", mrb_file_s_symlink, MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  657|    476|  mrb_define_class_method(mrb, file, "chmod", mrb_file_s_chmod, MRB_ARGS_REQ(1) | MRB_ARGS_REST());
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_class_method(mrb, file, "chmod", mrb_file_s_chmod, MRB_ARGS_REQ(1) | MRB_ARGS_REST());
  ------------------
  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  ------------------
  658|    476|  mrb_define_class_method(mrb, file, "readlink", mrb_file_s_readlink, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  659|       |
  660|    476|  mrb_define_class_method(mrb, file, "dirname",   mrb_file_dirname,    MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  661|    476|  mrb_define_class_method(mrb, file, "basename",  mrb_file_basename,   MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  662|    476|  mrb_define_class_method(mrb, file, "realpath",  mrb_file_realpath,   MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_class_method(mrb, file, "realpath",  mrb_file_realpath,   MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  663|    476|  mrb_define_class_method(mrb, file, "_getwd",    mrb_file__getwd,     MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  664|    476|  mrb_define_class_method(mrb, file, "_gethome",  mrb_file__gethome,   MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  665|       |
  666|    476|  mrb_define_method(mrb, file, "flock", mrb_file_flock, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  667|    476|  mrb_define_method(mrb, file, "_atime", mrb_file_atime, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  668|    476|  mrb_define_method(mrb, file, "_ctime", mrb_file_ctime, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  669|    476|  mrb_define_method(mrb, file, "_mtime", mrb_file_mtime, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  670|    476|  mrb_define_method(mrb, file, "size", mrb_file_size, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  671|    476|  mrb_define_method(mrb, file, "truncate", mrb_file_truncate, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  672|       |
  673|    476|  cnst = mrb_define_module_under_id(mrb, file, MRB_SYM(Constants));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  674|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(LOCK_SH), mrb_fixnum_value(LOCK_SH));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  675|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(LOCK_EX), mrb_fixnum_value(LOCK_EX));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  676|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(LOCK_UN), mrb_fixnum_value(LOCK_UN));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  677|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(LOCK_NB), mrb_fixnum_value(LOCK_NB));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  678|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(SEPARATOR), mrb_str_new_cstr(mrb, FILE_SEPARATOR));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(SEPARATOR), mrb_str_new_cstr(mrb, FILE_SEPARATOR));
  ------------------
  |  |   48|    476|#define FILE_SEPARATOR "/"
  ------------------
  679|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(PATH_SEPARATOR), mrb_str_new_cstr(mrb, PATH_SEPARATOR));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(PATH_SEPARATOR), mrb_str_new_cstr(mrb, PATH_SEPARATOR));
  ------------------
  |  |   55|    476|  #define PATH_SEPARATOR ":"
  ------------------
  680|       |#if defined(_WIN32) || defined(_WIN64)
  681|       |  mrb_define_const_id(mrb, cnst, MRB_SYM(ALT_SEPARATOR), mrb_str_new_cstr(mrb, FILE_ALT_SEPARATOR));
  682|       |#else
  683|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(ALT_SEPARATOR), mrb_nil_value());
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  684|    476|#endif
  685|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(NULL), mrb_str_new_cstr(mrb, NULL_FILE));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(NULL), mrb_str_new_cstr(mrb, NULL_FILE));
  ------------------
  |  |   35|    476|  #define NULL_FILE "/dev/null"
  ------------------
  686|       |
  687|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(RDONLY), mrb_fixnum_value(MRB_O_RDONLY));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(RDONLY), mrb_fixnum_value(MRB_O_RDONLY));
  ------------------
  |  |   46|    476|#define MRB_O_RDONLY            0x0000
  ------------------
  688|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(WRONLY), mrb_fixnum_value(MRB_O_WRONLY));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(WRONLY), mrb_fixnum_value(MRB_O_WRONLY));
  ------------------
  |  |   47|    476|#define MRB_O_WRONLY            0x0001
  ------------------
  689|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(RDWR), mrb_fixnum_value(MRB_O_RDWR));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(RDWR), mrb_fixnum_value(MRB_O_RDWR));
  ------------------
  |  |   48|    476|#define MRB_O_RDWR              0x0002
  ------------------
  690|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(APPEND), mrb_fixnum_value(MRB_O_APPEND));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(APPEND), mrb_fixnum_value(MRB_O_APPEND));
  ------------------
  |  |   51|    476|#define MRB_O_APPEND            0x0008
  ------------------
  691|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(CREAT), mrb_fixnum_value(MRB_O_CREAT));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(CREAT), mrb_fixnum_value(MRB_O_CREAT));
  ------------------
  |  |   54|    476|#define MRB_O_CREAT             0x0040
  ------------------
  692|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(EXCL), mrb_fixnum_value(MRB_O_EXCL));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(EXCL), mrb_fixnum_value(MRB_O_EXCL));
  ------------------
  |  |   56|    476|#define MRB_O_EXCL              0x0100
  ------------------
  693|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(TRUNC), mrb_fixnum_value(MRB_O_TRUNC));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(TRUNC), mrb_fixnum_value(MRB_O_TRUNC));
  ------------------
  |  |   55|    476|#define MRB_O_TRUNC             0x0080
  ------------------
  694|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(NONBLOCK), mrb_fixnum_value(MRB_O_NONBLOCK));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(NONBLOCK), mrb_fixnum_value(MRB_O_NONBLOCK));
  ------------------
  |  |   50|    476|#define MRB_O_NONBLOCK          0x0004
  ------------------
  695|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(NOCTTY), mrb_fixnum_value(MRB_O_NOCTTY));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(NOCTTY), mrb_fixnum_value(MRB_O_NOCTTY));
  ------------------
  |  |   57|    476|#define MRB_O_NOCTTY            0x0200
  ------------------
  696|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(BINARY), mrb_fixnum_value(MRB_O_BINARY));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(BINARY), mrb_fixnum_value(MRB_O_BINARY));
  ------------------
  |  |   59|    476|#define MRB_O_BINARY            0x0800
  ------------------
  697|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(SHARE_DELETE), mrb_fixnum_value(MRB_O_SHARE_DELETE));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(SHARE_DELETE), mrb_fixnum_value(MRB_O_SHARE_DELETE));
  ------------------
  |  |   60|    476|#define MRB_O_SHARE_DELETE      0x1000
  ------------------
  698|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(SYNC), mrb_fixnum_value(MRB_O_SYNC));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(SYNC), mrb_fixnum_value(MRB_O_SYNC));
  ------------------
  |  |   52|    476|#define MRB_O_SYNC              0x0010
  ------------------
  699|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(DSYNC), mrb_fixnum_value(MRB_O_DSYNC));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(DSYNC), mrb_fixnum_value(MRB_O_DSYNC));
  ------------------
  |  |   63|    476|#define MRB_O_DSYNC             0x00008000
  ------------------
  700|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(RSYNC), mrb_fixnum_value(MRB_O_RSYNC));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(RSYNC), mrb_fixnum_value(MRB_O_RSYNC));
  ------------------
  |  |   64|    476|#define MRB_O_RSYNC             0x00010000
  ------------------
  701|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(NOFOLLOW), mrb_fixnum_value(MRB_O_NOFOLLOW));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(NOFOLLOW), mrb_fixnum_value(MRB_O_NOFOLLOW));
  ------------------
  |  |   53|    476|#define MRB_O_NOFOLLOW          0x0020
  ------------------
  702|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(NOATIME), mrb_fixnum_value(MRB_O_NOATIME));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(NOATIME), mrb_fixnum_value(MRB_O_NOATIME));
  ------------------
  |  |   62|    476|#define MRB_O_NOATIME           0x4000
  ------------------
  703|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(DIRECT), mrb_fixnum_value(MRB_O_DIRECT));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(DIRECT), mrb_fixnum_value(MRB_O_DIRECT));
  ------------------
  |  |   58|    476|#define MRB_O_DIRECT            0x0400
  ------------------
  704|    476|  mrb_define_const_id(mrb, cnst, MRB_SYM(TMPFILE), mrb_fixnum_value(MRB_O_TMPFILE));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, cnst, MRB_SYM(TMPFILE), mrb_fixnum_value(MRB_O_TMPFILE));
  ------------------
  |  |   61|    476|#define MRB_O_TMPFILE           0x2000
  ------------------
  705|    476|}

mrb_init_file_test:
  337|    476|{
  338|    476|  struct RClass *f;
  339|       |
  340|    476|  f = mrb_define_class(mrb, "FileTest", mrb->object_class);
  341|       |
  342|    476|  mrb_define_class_method(mrb, f, "directory?", mrb_filetest_s_directory_p, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  343|    476|  mrb_define_class_method(mrb, f, "exist?",     mrb_filetest_s_exist_p,     MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  344|    476|  mrb_define_class_method(mrb, f, "exists?",    mrb_filetest_s_exist_p,     MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  345|    476|  mrb_define_class_method(mrb, f, "file?",      mrb_filetest_s_file_p,      MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  346|    476|  mrb_define_class_method(mrb, f, "pipe?",      mrb_filetest_s_pipe_p,      MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  347|    476|  mrb_define_class_method(mrb, f, "size",       mrb_filetest_s_size,        MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  348|    476|  mrb_define_class_method(mrb, f, "size?",      mrb_filetest_s_size_p,      MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  349|    476|  mrb_define_class_method(mrb, f, "socket?",    mrb_filetest_s_socket_p,    MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  350|    476|  mrb_define_class_method(mrb, f, "symlink?",   mrb_filetest_s_symlink_p,   MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  351|    476|  mrb_define_class_method(mrb, f, "zero?",      mrb_filetest_s_zero_p,      MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  352|    476|}

mrb_init_io:
 1918|    476|{
 1919|    476|  struct RClass *io;
 1920|       |
 1921|    476|  io      = mrb_define_class(mrb, "IO", mrb->object_class);
 1922|    476|  MRB_SET_INSTANCE_TT(io, MRB_TT_CDATA);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
 1923|       |
 1924|    476|  mrb_include_module(mrb, io, mrb_module_get(mrb, "Enumerable")); /* 15.2.20.3 */
 1925|    476|  mrb_define_class_method(mrb, io, "_popen",  io_s_popen,   MRB_ARGS_ARG(1,2));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1926|    476|  mrb_define_class_method(mrb, io, "_sysclose",  io_s_sysclose, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1927|    476|  mrb_define_class_method(mrb, io, "for_fd",  io_s_for_fd,   MRB_ARGS_ARG(1,2));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1928|    476|  mrb_define_class_method(mrb, io, "select",  io_s_select,  MRB_ARGS_ARG(1,3));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1929|    476|  mrb_define_class_method(mrb, io, "sysopen", io_s_sysopen, MRB_ARGS_ARG(1,2));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1930|    476|#if !defined(_WIN32) && !(defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE)
 1931|    476|  mrb_define_class_method(mrb, io, "_pipe", io_s_pipe, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1932|    476|#endif
 1933|       |
 1934|    476|  mrb_define_method(mrb, io, "initialize",      io_init, MRB_ARGS_ARG(1,2));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1935|    476|  mrb_define_method(mrb, io, "initialize_copy", io_init_copy, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1936|    476|  mrb_define_method(mrb, io, "isatty",     io_isatty,     MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1937|    476|  mrb_define_method(mrb, io, "eof?",       io_eof,        MRB_ARGS_NONE());   /* 15.2.20.5.6 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1938|    476|  mrb_define_method(mrb, io, "getc",       io_getc,       MRB_ARGS_NONE());   /* 15.2.20.5.8 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1939|    476|  mrb_define_method(mrb, io, "gets",       io_gets,       MRB_ARGS_OPT(2));   /* 15.2.20.5.9 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1940|    476|  mrb_define_method(mrb, io, "read",       io_read,       MRB_ARGS_OPT(2));   /* 15.2.20.5.14 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1941|    476|  mrb_define_method(mrb, io, "readchar",   io_readchar,   MRB_ARGS_NONE());   /* 15.2.20.5.15 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1942|    476|  mrb_define_method(mrb, io, "readline",   io_readline,   MRB_ARGS_OPT(2));   /* 15.2.20.5.16 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1943|    476|  mrb_define_method(mrb, io, "readlines",  io_readlines,  MRB_ARGS_OPT(2));   /* 15.2.20.5.17 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1944|    476|  mrb_define_method(mrb, io, "sync",       io_sync,       MRB_ARGS_NONE());   /* 15.2.20.5.18 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1945|    476|  mrb_define_method(mrb, io, "sync=",      io_set_sync,   MRB_ARGS_REQ(1));   /* 15.2.20.5.19 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1946|    476|  mrb_define_method(mrb, io, "sysread",    io_sysread,    MRB_ARGS_ARG(1,1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1947|    476|  mrb_define_method(mrb, io, "sysseek",    io_sysseek,    MRB_ARGS_ARG(1,1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1948|    476|  mrb_define_method(mrb, io, "syswrite",   io_syswrite,   MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1949|    476|  mrb_define_method(mrb, io, "seek",       io_seek,       MRB_ARGS_ARG(1,1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1950|    476|  mrb_define_method(mrb, io, "close",      io_close,      MRB_ARGS_NONE());   /* 15.2.20.5.1 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1951|    476|  mrb_define_method(mrb, io, "close_write",    io_close_write,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1952|    476|  mrb_define_method(mrb, io, "close_on_exec=", io_set_close_on_exec, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1953|    476|  mrb_define_method(mrb, io, "close_on_exec?", io_close_on_exec_p,   MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1954|    476|  mrb_define_method(mrb, io, "closed?",    io_closed,     MRB_ARGS_NONE());   /* 15.2.20.5.2 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1955|    476|  mrb_define_method(mrb, io, "flush",      io_flush,      MRB_ARGS_NONE());   /* 15.2.20.5.7 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1956|    476|  mrb_define_method(mrb, io, "ungetc",     io_ungetc,     MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1957|    476|  mrb_define_method(mrb, io, "pos",        io_pos,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1958|    476|  mrb_define_method(mrb, io, "pid",        io_pid,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1959|    476|  mrb_define_method(mrb, io, "fileno",     io_fileno,     MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1960|    476|  mrb_define_method(mrb, io, "write",      io_write,      MRB_ARGS_ANY());    /* 15.2.20.5.20 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 1961|    476|  mrb_define_method(mrb, io, "pread",      io_pread,      MRB_ARGS_ANY());    /* ruby 2.5 feature */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 1962|    476|  mrb_define_method(mrb, io, "pwrite",     io_pwrite,     MRB_ARGS_ANY());    /* ruby 2.5 feature */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 1963|    476|  mrb_define_method(mrb, io, "getbyte",    io_getbyte,    MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1964|    476|  mrb_define_method(mrb, io, "readbyte",   io_readbyte,   MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1965|       |
 1966|    476|  mrb_define_const_id(mrb, io, MRB_SYM(SEEK_SET), mrb_fixnum_value(SEEK_SET));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 1967|    476|  mrb_define_const_id(mrb, io, MRB_SYM(SEEK_CUR), mrb_fixnum_value(SEEK_CUR));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 1968|    476|  mrb_define_const_id(mrb, io, MRB_SYM(SEEK_END), mrb_fixnum_value(SEEK_END));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 1969|    476|}
io.c:io_free:
  307|  1.42k|{
  308|  1.42k|  struct mrb_io *io = (struct mrb_io*)ptr;
  309|  1.42k|  if (io != NULL) {
  ------------------
  |  Branch (309:7): [True: 1.42k, False: 0]
  ------------------
  310|  1.42k|    fptr_finalize(mrb, io, TRUE);
  ------------------
  |  |   54|  1.42k|#  define TRUE 1
  ------------------
  311|  1.42k|    mrb_free(mrb, io);
  312|  1.42k|  }
  313|  1.42k|}
io.c:fptr_finalize:
  747|  1.42k|{
  748|  1.42k|  int saved_errno = 0;
  749|  1.42k|  int limit = quiet ? 3 : 0;
  ------------------
  |  Branch (749:15): [True: 1.42k, False: 0]
  ------------------
  750|       |
  751|  1.42k|  if (fptr == NULL) {
  ------------------
  |  Branch (751:7): [True: 0, False: 1.42k]
  ------------------
  752|      0|    return;
  753|      0|  }
  754|       |
  755|  1.42k|  if (fptr->fd >= limit) {
  ------------------
  |  Branch (755:7): [True: 0, False: 1.42k]
  ------------------
  756|       |#ifdef _WIN32
  757|       |    if (fptr->is_socket) {
  758|       |      if (closesocket(fptr->fd) != 0) {
  759|       |        saved_errno = WSAGetLastError();
  760|       |      }
  761|       |      fptr->fd = -1;
  762|       |    }
  763|       |#endif
  764|      0|    if (fptr->fd != -1) {
  ------------------
  |  Branch (764:9): [True: 0, False: 0]
  ------------------
  765|      0|      if (close(fptr->fd) == -1) {
  ------------------
  |  Branch (765:11): [True: 0, False: 0]
  ------------------
  766|      0|        saved_errno = errno;
  767|      0|      }
  768|      0|    }
  769|      0|    fptr->fd = -1;
  770|      0|  }
  771|       |
  772|  1.42k|  if (fptr->fd2 >= limit) {
  ------------------
  |  Branch (772:7): [True: 0, False: 1.42k]
  ------------------
  773|      0|    if (close(fptr->fd2) == -1) {
  ------------------
  |  Branch (773:9): [True: 0, False: 0]
  ------------------
  774|      0|      if (saved_errno == 0) {
  ------------------
  |  Branch (774:11): [True: 0, False: 0]
  ------------------
  775|      0|        saved_errno = errno;
  776|      0|      }
  777|      0|    }
  778|      0|    fptr->fd2 = -1;
  779|      0|  }
  780|       |
  781|  1.42k|#ifndef MRB_NO_IO_POPEN
  782|  1.42k|  if (fptr->pid != 0) {
  ------------------
  |  Branch (782:7): [True: 0, False: 1.42k]
  ------------------
  783|      0|#if !defined(_WIN32) && !defined(_WIN64)
  784|      0|    pid_t pid;
  785|      0|    int status;
  786|      0|    do {
  787|      0|      pid = waitpid(fptr->pid, &status, 0);
  788|      0|    } while (pid == -1 && errno == EINTR);
  ------------------
  |  Branch (788:14): [True: 0, False: 0]
  |  Branch (788:27): [True: 0, False: 0]
  ------------------
  789|      0|    if (!quiet && pid == fptr->pid) {
  ------------------
  |  Branch (789:9): [True: 0, False: 0]
  |  Branch (789:19): [True: 0, False: 0]
  ------------------
  790|      0|      io_set_process_status(mrb, pid, status);
  791|      0|    }
  792|       |#else
  793|       |    HANDLE h = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, fptr->pid);
  794|       |    DWORD status;
  795|       |    if (WaitForSingleObject(h, INFINITE) && GetExitCodeProcess(h, &status))
  796|       |      if (!quiet)
  797|       |        io_set_process_status(mrb, fptr->pid, (int)status);
  798|       |    CloseHandle(h);
  799|       |#endif
  800|      0|    fptr->pid = 0;
  801|       |    /* Note: we don't raise an exception when waitpid(3) fails */
  802|      0|  }
  803|  1.42k|#endif
  804|       |
  805|  1.42k|  if (fptr->buf) {
  ------------------
  |  Branch (805:7): [True: 476, False: 952]
  ------------------
  806|    476|    mrb_free(mrb, fptr->buf);
  807|    476|    fptr->buf = NULL;
  808|    476|  }
  809|       |
  810|  1.42k|  if (!quiet && saved_errno != 0) {
  ------------------
  |  Branch (810:7): [True: 0, False: 1.42k]
  |  Branch (810:17): [True: 0, False: 0]
  ------------------
  811|      0|    errno = saved_errno;
  812|      0|    mrb_sys_fail(mrb, "fptr_finalize failed");
  813|      0|  }
  814|  1.42k|}
io.c:io_mode_to_flags:
  168|  1.42k|{
  169|  1.42k|  if (mrb_nil_p(mode)) {
  ------------------
  |  |  174|  1.42k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 1.42k]
  |  |  ------------------
  ------------------
  170|      0|    return O_RDONLY;
  171|      0|  }
  172|  1.42k|  else if (mrb_string_p(mode)) {
  ------------------
  |  |  187|  1.42k|#define mrb_string_p(o) WORDBOX_OBJ_TYPE_P(o, STRING)
  |  |  ------------------
  |  |  |  |   78|  1.42k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  2.85k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  2.85k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 1.42k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 1.42k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 1.42k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  173|  1.42k|    return io_modestr_to_flags(mrb, RSTRING_CSTR(mrb, mode));
  ------------------
  |  |  105|  1.42k|#define RSTRING_CSTR(mrb,s)  mrb_string_cstr(mrb, s)
  ------------------
  174|  1.42k|  }
  175|      0|  else {
  176|      0|    int flags = 0;
  177|      0|    mrb_int flags0 = mrb_as_int(mrb, mode);
  ------------------
  |  | 1425|      0|#define mrb_as_int(mrb, val) mrb_integer(mrb_ensure_int_type(mrb, val))
  |  |  ------------------
  |  |  |  |  166|      0|#define mrb_integer(o) mrb_integer_func(o)
  |  |  ------------------
  ------------------
  178|       |
  179|      0|    switch (flags0 & MRB_O_ACCMODE) {
  ------------------
  |  |   49|      0|#define MRB_O_ACCMODE           (MRB_O_RDONLY | MRB_O_WRONLY | MRB_O_RDWR)
  |  |  ------------------
  |  |  |  |   46|      0|#define MRB_O_RDONLY            0x0000
  |  |  ------------------
  |  |               #define MRB_O_ACCMODE           (MRB_O_RDONLY | MRB_O_WRONLY | MRB_O_RDWR)
  |  |  ------------------
  |  |  |  |   47|      0|#define MRB_O_WRONLY            0x0001
  |  |  ------------------
  |  |               #define MRB_O_ACCMODE           (MRB_O_RDONLY | MRB_O_WRONLY | MRB_O_RDWR)
  |  |  ------------------
  |  |  |  |   48|      0|#define MRB_O_RDWR              0x0002
  |  |  ------------------
  ------------------
  180|      0|      case MRB_O_RDONLY:
  ------------------
  |  |   46|      0|#define MRB_O_RDONLY            0x0000
  ------------------
  |  Branch (180:7): [True: 0, False: 0]
  ------------------
  181|      0|        flags |= O_RDONLY;
  182|      0|        break;
  183|      0|      case MRB_O_WRONLY:
  ------------------
  |  |   47|      0|#define MRB_O_WRONLY            0x0001
  ------------------
  |  Branch (183:7): [True: 0, False: 0]
  ------------------
  184|      0|        flags |= O_WRONLY;
  185|      0|        break;
  186|      0|      case MRB_O_RDWR:
  ------------------
  |  |   48|      0|#define MRB_O_RDWR              0x0002
  ------------------
  |  Branch (186:7): [True: 0, False: 0]
  ------------------
  187|      0|        flags |= O_RDWR;
  188|      0|        break;
  189|      0|      default:
  ------------------
  |  Branch (189:7): [True: 0, False: 0]
  ------------------
  190|      0|        mrb_raisef(mrb, E_ARGUMENT_ERROR, "illegal access mode %v", mode);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  191|      0|    }
  192|       |
  193|      0|    if (flags0 & MRB_O_APPEND)        flags |= O_APPEND;
  ------------------
  |  |   51|      0|#define MRB_O_APPEND            0x0008
  ------------------
  |  Branch (193:9): [True: 0, False: 0]
  ------------------
  194|      0|    if (flags0 & MRB_O_CREAT)         flags |= O_CREAT;
  ------------------
  |  |   54|      0|#define MRB_O_CREAT             0x0040
  ------------------
  |  Branch (194:9): [True: 0, False: 0]
  ------------------
  195|      0|    if (flags0 & MRB_O_EXCL)          flags |= O_EXCL;
  ------------------
  |  |   56|      0|#define MRB_O_EXCL              0x0100
  ------------------
  |  Branch (195:9): [True: 0, False: 0]
  ------------------
  196|      0|    if (flags0 & MRB_O_TRUNC)         flags |= O_TRUNC;
  ------------------
  |  |   55|      0|#define MRB_O_TRUNC             0x0080
  ------------------
  |  Branch (196:9): [True: 0, False: 0]
  ------------------
  197|      0|#ifdef O_NONBLOCK
  198|      0|    if (flags0 & MRB_O_NONBLOCK)      flags |= O_NONBLOCK;
  ------------------
  |  |   50|      0|#define MRB_O_NONBLOCK          0x0004
  ------------------
  |  Branch (198:9): [True: 0, False: 0]
  ------------------
  199|      0|#endif
  200|      0|#ifdef O_NOCTTY
  201|      0|    if (flags0 & MRB_O_NOCTTY)        flags |= O_NOCTTY;
  ------------------
  |  |   57|      0|#define MRB_O_NOCTTY            0x0200
  ------------------
  |  Branch (201:9): [True: 0, False: 0]
  ------------------
  202|      0|#endif
  203|       |#ifdef O_BINARY
  204|       |    if (flags0 & MRB_O_BINARY)        flags |= O_BINARY;
  205|       |#endif
  206|       |#ifdef O_SHARE_DELETE
  207|       |    if (flags0 & MRB_O_SHARE_DELETE)  flags |= O_SHARE_DELETE;
  208|       |#endif
  209|      0|#ifdef O_SYNC
  210|      0|    if (flags0 & MRB_O_SYNC)          flags |= O_SYNC;
  ------------------
  |  |   52|      0|#define MRB_O_SYNC              0x0010
  ------------------
  |  Branch (210:9): [True: 0, False: 0]
  ------------------
  211|      0|#endif
  212|      0|#ifdef O_DSYNC
  213|      0|    if (flags0 & MRB_O_DSYNC)         flags |= O_DSYNC;
  ------------------
  |  |   63|      0|#define MRB_O_DSYNC             0x00008000
  ------------------
  |  Branch (213:9): [True: 0, False: 0]
  ------------------
  214|      0|#endif
  215|      0|#ifdef O_RSYNC
  216|      0|    if (flags0 & MRB_O_RSYNC)         flags |= O_RSYNC;
  ------------------
  |  |   64|      0|#define MRB_O_RSYNC             0x00010000
  ------------------
  |  Branch (216:9): [True: 0, False: 0]
  ------------------
  217|      0|#endif
  218|      0|#ifdef O_NOFOLLOW
  219|      0|    if (flags0 & MRB_O_NOFOLLOW)      flags |= O_NOFOLLOW;
  ------------------
  |  |   53|      0|#define MRB_O_NOFOLLOW          0x0020
  ------------------
  |  Branch (219:9): [True: 0, False: 0]
  ------------------
  220|      0|#endif
  221|       |#ifdef O_NOATIME
  222|       |    if (flags0 & MRB_O_NOATIME)       flags |= O_NOATIME;
  223|       |#endif
  224|       |#ifdef O_DIRECT
  225|       |    if (flags0 & MRB_O_DIRECT)        flags |= O_DIRECT;
  226|       |#endif
  227|       |#ifdef O_TMPFILE
  228|       |    if (flags0 & MRB_O_TMPFILE)       flags |= O_TMPFILE;
  229|       |#endif
  230|       |
  231|      0|    return flags;
  232|      0|  }
  233|  1.42k|}
io.c:io_modestr_to_flags:
  127|  1.42k|{
  128|  1.42k|  int flags;
  129|  1.42k|  const char *m = mode;
  130|       |
  131|  1.42k|  switch (*m++) {
  132|    476|    case 'r':
  ------------------
  |  Branch (132:5): [True: 476, False: 952]
  ------------------
  133|    476|      flags = O_RDONLY;
  134|    476|      break;
  135|    952|    case 'w':
  ------------------
  |  Branch (135:5): [True: 952, False: 476]
  ------------------
  136|    952|      flags = O_WRONLY | O_CREAT | O_TRUNC;
  137|    952|      break;
  138|      0|    case 'a':
  ------------------
  |  Branch (138:5): [True: 0, False: 1.42k]
  ------------------
  139|      0|      flags = O_WRONLY | O_CREAT | O_APPEND;
  140|      0|      break;
  141|      0|    default:
  ------------------
  |  Branch (141:5): [True: 0, False: 1.42k]
  ------------------
  142|      0|      mrb_raisef(mrb, E_ARGUMENT_ERROR, "illegal access mode %s", mode);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  143|      0|      flags = 0; /* not reached */
  144|  1.42k|  }
  145|       |
  146|  1.42k|  while (*m) {
  ------------------
  |  Branch (146:10): [True: 0, False: 1.42k]
  ------------------
  147|      0|    switch (*m++) {
  148|      0|      case 'b':
  ------------------
  |  Branch (148:7): [True: 0, False: 0]
  ------------------
  149|       |#ifdef O_BINARY
  150|       |        flags |= O_BINARY;
  151|       |#endif
  152|      0|        break;
  153|      0|      case '+':
  ------------------
  |  Branch (153:7): [True: 0, False: 0]
  ------------------
  154|      0|        flags = (flags & ~OPEN_ACCESS_MODE_FLAGS) | O_RDWR;
  ------------------
  |  |   67|      0|#define OPEN_ACCESS_MODE_FLAGS (O_RDONLY | O_WRONLY | O_RDWR)
  ------------------
  155|      0|        break;
  156|      0|      case ':':
  ------------------
  |  Branch (156:7): [True: 0, False: 0]
  ------------------
  157|       |        /* XXX: PASSTHROUGH*/
  158|      0|      default:
  ------------------
  |  Branch (158:7): [True: 0, False: 0]
  ------------------
  159|      0|        mrb_raisef(mrb, E_ARGUMENT_ERROR, "illegal access mode %s", mode);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  160|      0|    }
  161|      0|  }
  162|       |
  163|  1.42k|  return flags;
  164|  1.42k|}
io.c:io_alloc:
  327|  1.42k|{
  328|  1.42k|  struct mrb_io *fptr;
  329|       |
  330|  1.42k|  fptr = (struct mrb_io*)mrb_malloc(mrb, sizeof(struct mrb_io));
  331|  1.42k|  fptr->fd = -1;
  332|  1.42k|  fptr->fd2 = -1;
  333|  1.42k|  fptr->pid = 0;
  334|  1.42k|  fptr->buf = 0;
  335|  1.42k|  fptr->readable = 0;
  336|  1.42k|  fptr->writable = 0;
  337|  1.42k|  fptr->sync = 0;
  338|  1.42k|  fptr->eof = 0;
  339|  1.42k|  fptr->is_socket = 0;
  340|  1.42k|  return fptr;
  341|  1.42k|}
io.c:io_buf_init:
  317|  1.42k|{
  318|  1.42k|  if (fptr->readable) {
  ------------------
  |  Branch (318:7): [True: 476, False: 952]
  ------------------
  319|    476|    fptr->buf = (struct mrb_io_buf*)mrb_malloc(mrb, sizeof(struct mrb_io_buf));
  320|    476|    fptr->buf->start = 0;
  321|    476|    fptr->buf->len = 0;
  322|    476|  }
  323|  1.42k|}
io.c:io_init:
  705|  1.42k|{
  706|  1.42k|  struct mrb_io *fptr;
  707|  1.42k|  mrb_int fd;
  708|  1.42k|  mrb_value mode, opt;          /* opt (Hash) will be ignored */
  709|  1.42k|  int flags;
  710|       |
  711|  1.42k|  mode = opt = mrb_nil_value();
  712|       |
  713|  1.42k|  if (mrb_block_given_p(mrb)) {
  ------------------
  |  Branch (713:7): [True: 0, False: 1.42k]
  ------------------
  714|      0|    mrb_warn(mrb, "File.new() does not take block; use File.open() instead");
  715|      0|  }
  716|  1.42k|  mrb_get_args(mrb, "i|oH", &fd, &mode, &opt);
  717|  1.42k|  switch (fd) {
  718|    476|    case 0: /* STDIN_FILENO */
  ------------------
  |  Branch (718:5): [True: 476, False: 952]
  ------------------
  719|    952|    case 1: /* STDOUT_FILENO */
  ------------------
  |  Branch (719:5): [True: 476, False: 952]
  ------------------
  720|  1.42k|    case 2: /* STDERR_FILENO */
  ------------------
  |  Branch (720:5): [True: 476, False: 952]
  ------------------
  721|  1.42k|      break;
  722|      0|    default:
  ------------------
  |  Branch (722:5): [True: 0, False: 1.42k]
  ------------------
  723|      0|      check_file_descriptor(mrb, fd);
  724|      0|      break;
  725|  1.42k|  }
  726|  1.42k|  flags = io_mode_to_flags(mrb, mode);
  727|       |
  728|  1.42k|  fptr = (struct mrb_io*)DATA_PTR(io);
  ------------------
  |  |   50|  1.42k|#define DATA_PTR(d)        (RDATA(d)->data)
  |  |  ------------------
  |  |  |  |   49|  1.42k|#define RDATA(obj)         ((struct RData*)(mrb_ptr(obj)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|  1.42k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  729|  1.42k|  if (fptr != NULL) {
  ------------------
  |  Branch (729:7): [True: 0, False: 1.42k]
  ------------------
  730|      0|    fptr_finalize(mrb, fptr, TRUE);
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  731|      0|    mrb_free(mrb, fptr);
  732|      0|  }
  733|  1.42k|  fptr = io_alloc(mrb);
  734|       |
  735|  1.42k|  DATA_TYPE(io) = &mrb_io_type;
  ------------------
  |  |   51|  1.42k|#define DATA_TYPE(d)       (RDATA(d)->type)
  |  |  ------------------
  |  |  |  |   49|  1.42k|#define RDATA(obj)         ((struct RData*)(mrb_ptr(obj)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|  1.42k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  736|  1.42k|  DATA_PTR(io) = fptr;
  ------------------
  |  |   50|  1.42k|#define DATA_PTR(d)        (RDATA(d)->data)
  |  |  ------------------
  |  |  |  |   49|  1.42k|#define RDATA(obj)         ((struct RData*)(mrb_ptr(obj)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|  1.42k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  737|       |
  738|  1.42k|  fptr->fd = (int)fd;
  739|  1.42k|  fptr->readable = OPEN_READABLE_P(flags);
  ------------------
  |  |   71|  1.42k|#define OPEN_READABLE_P(f)     ((mrb_bool)(OPEN_RDONLY_P(f) || OPEN_RDWR_P(f)))
  |  |  ------------------
  |  |  |  |   68|  2.85k|#define OPEN_RDONLY_P(f)       ((mrb_bool)(((f) & OPEN_ACCESS_MODE_FLAGS) == O_RDONLY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  1.42k|#define OPEN_ACCESS_MODE_FLAGS (O_RDONLY | O_WRONLY | O_RDWR)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (68:32): [True: 476, False: 952]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define OPEN_READABLE_P(f)     ((mrb_bool)(OPEN_RDONLY_P(f) || OPEN_RDWR_P(f)))
  |  |  ------------------
  |  |  |  |   70|    952|#define OPEN_RDWR_P(f)         ((mrb_bool)(((f) & OPEN_ACCESS_MODE_FLAGS) == O_RDWR))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    952|#define OPEN_ACCESS_MODE_FLAGS (O_RDONLY | O_WRONLY | O_RDWR)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (70:32): [True: 0, False: 952]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  740|  1.42k|  fptr->writable = OPEN_WRITABLE_P(flags);
  ------------------
  |  |   72|  1.42k|#define OPEN_WRITABLE_P(f)     ((mrb_bool)(OPEN_WRONLY_P(f) || OPEN_RDWR_P(f)))
  |  |  ------------------
  |  |  |  |   69|  2.85k|#define OPEN_WRONLY_P(f)       ((mrb_bool)(((f) & OPEN_ACCESS_MODE_FLAGS) == O_WRONLY))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  1.42k|#define OPEN_ACCESS_MODE_FLAGS (O_RDONLY | O_WRONLY | O_RDWR)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (69:32): [True: 952, False: 476]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define OPEN_WRITABLE_P(f)     ((mrb_bool)(OPEN_WRONLY_P(f) || OPEN_RDWR_P(f)))
  |  |  ------------------
  |  |  |  |   70|    476|#define OPEN_RDWR_P(f)         ((mrb_bool)(((f) & OPEN_ACCESS_MODE_FLAGS) == O_RDWR))
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|    476|#define OPEN_ACCESS_MODE_FLAGS (O_RDONLY | O_WRONLY | O_RDWR)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (70:32): [True: 0, False: 476]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  741|  1.42k|  io_buf_init(mrb, fptr);
  742|  1.42k|  return io;
  743|  1.42k|}

mrb_mruby_io_gem_init:
   11|    476|{
   12|    476|  mrb_init_io(mrb); DONE;
  ------------------
  |  |    7|    476|#define DONE mrb_gc_arena_restore(mrb, 0)
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   13|    476|  mrb_init_file(mrb); DONE;
  ------------------
  |  |    7|    476|#define DONE mrb_gc_arena_restore(mrb, 0)
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   14|    476|  mrb_init_file_test(mrb); DONE;
  ------------------
  |  |    7|    476|#define DONE mrb_gc_arena_restore(mrb, 0)
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   15|    476|}
mrb_mruby_io_gem_final:
   19|    476|{
   20|    476|}

mrb_mruby_kernel_ext_gem_init:
  270|    476|{
  271|    476|  struct RClass *krn = mrb->kernel_module;
  272|       |
  273|    476|  mrb_define_module_function(mrb, krn, "fail", mrb_f_raise, MRB_ARGS_OPT(2));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  274|    476|  mrb_define_module_function(mrb, krn, "caller", mrb_f_caller, MRB_ARGS_OPT(2));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  275|    476|  mrb_define_method(mrb, krn, "__method__", mrb_f_method, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  276|    476|  mrb_define_method(mrb, krn, "__callee__", mrb_f_callee, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  277|    476|  mrb_define_module_function(mrb, krn, "Integer", mrb_f_integer, MRB_ARGS_ARG(1,1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
  278|    476|#ifndef MRB_NO_FLOAT
  279|    476|  mrb_define_module_function(mrb, krn, "Float", mrb_f_float, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  280|    476|#endif
  281|    476|  mrb_define_module_function(mrb, krn, "String", mrb_f_string, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  282|    476|  mrb_define_module_function(mrb, krn, "Array", mrb_f_array, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  283|    476|  mrb_define_module_function(mrb, krn, "Hash", mrb_f_hash, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  284|    476|}
mrb_mruby_kernel_ext_gem_final:
  288|    476|{
  289|    476|}

mrb_mruby_math_gem_init:
  669|    476|{
  670|    476|  struct RClass *mrb_math;
  671|    476|  mrb_math = mrb_define_module(mrb, "Math");
  672|       |
  673|    476|  mrb_define_class_under_id(mrb, mrb_math, MRB_SYM(DomainError), E_STANDARD_ERROR);
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_class_under_id(mrb, mrb_math, MRB_SYM(DomainError), E_STANDARD_ERROR);
  ------------------
  |  | 1373|    476|#define E_STANDARD_ERROR     mrb->eStandardError_class
  ------------------
  674|       |
  675|    476|#ifdef M_PI
  676|    476|  mrb_define_const_id(mrb, mrb_math, MRB_SYM(PI), mrb_float_value(mrb, M_PI));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  677|       |#else
  678|       |  mrb_define_const_id(mrb, mrb_math, MRB_SYM(PI), mrb_float_value(mrb, atan(1.0)*4.0));
  679|       |#endif
  680|       |
  681|    476|#ifdef M_E
  682|    476|  mrb_define_const_id(mrb, mrb_math, MRB_SYM(E), mrb_float_value(mrb, M_E));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  683|       |#else
  684|       |  mrb_define_const_id(mrb, mrb_math, MRB_SYM(E), mrb_float_value(mrb, exp(1.0)));
  685|       |#endif
  686|       |
  687|    476|  mrb_define_module_function(mrb, mrb_math, "sin", math_sin, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  688|    476|  mrb_define_module_function(mrb, mrb_math, "cos", math_cos, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  689|    476|  mrb_define_module_function(mrb, mrb_math, "tan", math_tan, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  690|       |
  691|    476|  mrb_define_module_function(mrb, mrb_math, "asin", math_asin, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  692|    476|  mrb_define_module_function(mrb, mrb_math, "acos", math_acos, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  693|    476|  mrb_define_module_function(mrb, mrb_math, "atan", math_atan, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  694|    476|  mrb_define_module_function(mrb, mrb_math, "atan2", math_atan2, MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  695|       |
  696|    476|  mrb_define_module_function(mrb, mrb_math, "sinh", math_sinh, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  697|    476|  mrb_define_module_function(mrb, mrb_math, "cosh", math_cosh, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  698|    476|  mrb_define_module_function(mrb, mrb_math, "tanh", math_tanh, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  699|       |
  700|    476|  mrb_define_module_function(mrb, mrb_math, "asinh", math_asinh, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  701|    476|  mrb_define_module_function(mrb, mrb_math, "acosh", math_acosh, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  702|    476|  mrb_define_module_function(mrb, mrb_math, "atanh", math_atanh, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  703|       |
  704|    476|  mrb_define_module_function(mrb, mrb_math, "exp", math_exp, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  705|    476|  mrb_define_module_function(mrb, mrb_math, "log", math_log, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_module_function(mrb, mrb_math, "log", math_log, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  706|    476|  mrb_define_module_function(mrb, mrb_math, "log2", math_log2, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  707|    476|  mrb_define_module_function(mrb, mrb_math, "log10", math_log10, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  708|    476|  mrb_define_module_function(mrb, mrb_math, "sqrt", math_sqrt, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  709|    476|  mrb_define_module_function(mrb, mrb_math, "cbrt", math_cbrt, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  710|       |
  711|    476|  mrb_define_module_function(mrb, mrb_math, "frexp", math_frexp, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  712|    476|  mrb_define_module_function(mrb, mrb_math, "ldexp", math_ldexp, MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  713|       |
  714|    476|  mrb_define_module_function(mrb, mrb_math, "hypot", math_hypot, MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  715|       |
  716|    476|  mrb_define_module_function(mrb, mrb_math, "erf",  math_erf,  MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  717|    476|  mrb_define_module_function(mrb, mrb_math, "erfc", math_erfc, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  718|    476|}
mrb_mruby_math_gem_final:
  722|    476|{
  723|    476|}
math.c:math_sin:
  192|    151|{
  193|    151|  mrb_float x = sin(get_float_arg(mrb));
  ------------------
  |  |  177|    151|#define get_float_arg(mrb) mrb_as_float((mrb), mrb_get_arg1(mrb))
  |  |  ------------------
  |  |  |  | 1297|    151|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|    151|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  194|    151|  return mrb_float_value(mrb, x);
  195|    151|}
math.c:math_cos:
  206|     95|{
  207|     95|  mrb_float x = cos(get_float_arg(mrb));
  ------------------
  |  |  177|     95|#define get_float_arg(mrb) mrb_as_float((mrb), mrb_get_arg1(mrb))
  |  |  ------------------
  |  |  |  | 1297|     95|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|     95|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  208|     95|  return mrb_float_value(mrb, x);
  209|     95|}
math.c:math_tan:
  219|    139|{
  220|    139|  mrb_float x = tan(get_float_arg(mrb));
  ------------------
  |  |  177|    139|#define get_float_arg(mrb) mrb_as_float((mrb), mrb_get_arg1(mrb))
  |  |  ------------------
  |  |  |  | 1297|    139|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|    139|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  221|    139|  return mrb_float_value(mrb, x);
  222|    139|}
math.c:domain_error:
   18|      1|{
   19|      1|  struct RClass *math = mrb_module_get_id(mrb, MRB_SYM(Math));
  ------------------
  |  |   18|      1|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
   20|      1|  struct RClass *domainerror = mrb_class_get_under_id(mrb, math, MRB_SYM(DomainError));
  ------------------
  |  |   18|      1|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
   21|      1|  mrb_raisef(mrb, domainerror, "Numerical argument is out of domain - %s", func);
   22|      1|}
math.c:math_log:
  449|    354|{
  450|    354|  mrb_float x, base;
  451|    354|  mrb_int argc;
  452|       |
  453|    354|  argc = mrb_get_args(mrb, "f|f", &x, &base);
  454|    354|  if (x < 0.0) {
  ------------------
  |  Branch (454:7): [True: 1, False: 353]
  ------------------
  455|      1|    domain_error(mrb, "log");
  456|      1|  }
  457|    354|  x = log(x);
  458|    354|  if (argc == 2) {
  ------------------
  |  Branch (458:7): [True: 0, False: 354]
  ------------------
  459|      0|    if (base < 0.0) {
  ------------------
  |  Branch (459:9): [True: 0, False: 0]
  ------------------
  460|      0|      domain_error(mrb, "log");
  461|      0|    }
  462|      0|    x /= log(base);
  463|      0|  }
  464|    354|  return mrb_float_value(mrb, x);
  465|    354|}
math.c:math_log2:
  481|    100|{
  482|    100|  mrb_float x = get_float_arg(mrb);
  ------------------
  |  |  177|    100|#define get_float_arg(mrb) mrb_as_float((mrb), mrb_get_arg1(mrb))
  |  |  ------------------
  |  |  |  | 1297|    100|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|    100|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  483|       |
  484|    100|  if (x < 0.0) {
  ------------------
  |  Branch (484:7): [True: 0, False: 100]
  ------------------
  485|      0|    domain_error(mrb, "log2");
  486|      0|  }
  487|    100|  x = log2(x);
  488|       |
  489|    100|  return mrb_float_value(mrb, x);
  490|    100|}
math.c:math_log10:
  505|     51|{
  506|     51|  mrb_float x = get_float_arg(mrb);
  ------------------
  |  |  177|     51|#define get_float_arg(mrb) mrb_as_float((mrb), mrb_get_arg1(mrb))
  |  |  ------------------
  |  |  |  | 1297|     51|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|     51|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  507|       |
  508|     51|  if (x < 0.0) {
  ------------------
  |  Branch (508:7): [True: 0, False: 51]
  ------------------
  509|      0|    domain_error(mrb, "log10");
  510|      0|  }
  511|     51|  x = log10(x);
  512|       |
  513|     51|  return mrb_float_value(mrb, x);
  514|     51|}
math.c:math_sqrt:
  525|    620|{
  526|    620|  mrb_float x = get_float_arg(mrb);
  ------------------
  |  |  177|    620|#define get_float_arg(mrb) mrb_as_float((mrb), mrb_get_arg1(mrb))
  |  |  ------------------
  |  |  |  | 1297|    620|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|    620|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  527|       |
  528|    620|  if (x < 0.0) {
  ------------------
  |  Branch (528:7): [True: 0, False: 620]
  ------------------
  529|      0|    domain_error(mrb, "sqrt");
  530|      0|  }
  531|    620|  x = sqrt(x);
  532|       |
  533|    620|  return mrb_float_value(mrb, x);
  534|    620|}
math.c:math_cbrt:
  570|  1.23k|{
  571|  1.23k|  mrb_float x = cbrt(get_float_arg(mrb));
  ------------------
  |  |  177|  1.23k|#define get_float_arg(mrb) mrb_as_float((mrb), mrb_get_arg1(mrb))
  |  |  ------------------
  |  |  |  | 1297|  1.23k|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|  1.23k|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  572|  1.23k|  return mrb_float_value(mrb, x);
  573|  1.23k|}
math.c:math_erf:
  647|    207|{
  648|    207|  mrb_float x = erf(get_float_arg(mrb));
  ------------------
  |  |  177|    207|#define get_float_arg(mrb) mrb_as_float((mrb), mrb_get_arg1(mrb))
  |  |  ------------------
  |  |  |  | 1297|    207|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|    207|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  649|    207|  return mrb_float_value(mrb, x);
  650|    207|}
math.c:math_erfc:
  661|    261|{
  662|    261|  mrb_float x = erfc(get_float_arg(mrb));
  ------------------
  |  |  177|    261|#define get_float_arg(mrb) mrb_as_float((mrb), mrb_get_arg1(mrb))
  |  |  ------------------
  |  |  |  | 1297|    261|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|    261|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  663|    261|  return mrb_float_value(mrb, x);
  664|    261|}

mrb_mruby_metaprog_gem_init:
  667|    476|{
  668|    476|  struct RClass *krn = mrb->kernel_module;
  669|    476|  struct RClass *mod = mrb->module_class;
  670|       |
  671|    476|  mrb_define_method(mrb, krn, "global_variables", mrb_f_global_variables, MRB_ARGS_NONE()); /* 15.3.1.3.14 (15.3.1.2.4) */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  672|    476|  mrb_define_method(mrb, krn, "local_variables", mrb_local_variables, MRB_ARGS_NONE()); /* 15.3.1.3.28 (15.3.1.2.7) */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  673|       |
  674|    476|  mrb_define_method(mrb, krn, "singleton_class", mrb_singleton_class, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  675|    476|  mrb_define_method(mrb, krn, "instance_variable_defined?", mrb_obj_ivar_defined, MRB_ARGS_REQ(1)); /* 15.3.1.3.20 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  676|    476|  mrb_define_method(mrb, krn, "instance_variable_get", mrb_obj_ivar_get, MRB_ARGS_REQ(1)); /* 15.3.1.3.21 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  677|    476|  mrb_define_method(mrb, krn, "instance_variable_set", mrb_obj_ivar_set, MRB_ARGS_REQ(2)); /* 15.3.1.3.22 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  678|    476|  mrb_define_method(mrb, krn, "instance_variables", mrb_obj_instance_variables, MRB_ARGS_NONE()); /* 15.3.1.3.23 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  679|    476|  mrb_define_method(mrb, krn, "methods", mrb_obj_methods_m, MRB_ARGS_OPT(1)); /* 15.3.1.3.31 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  680|    476|  mrb_define_method(mrb, krn, "private_methods", mrb_obj_private_methods, MRB_ARGS_OPT(1)); /* 15.3.1.3.36 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  681|    476|  mrb_define_method(mrb, krn, "protected_methods", mrb_obj_protected_methods, MRB_ARGS_OPT(1)); /* 15.3.1.3.37 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  682|    476|  mrb_define_method(mrb, krn, "public_methods", mrb_obj_public_methods, MRB_ARGS_OPT(1)); /* 15.3.1.3.38 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  683|    476|  mrb_define_method(mrb, krn, "singleton_methods", mrb_obj_singleton_methods_m, MRB_ARGS_OPT(1)); /* 15.3.1.3.45 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  684|    476|  mrb_define_method(mrb, krn, "define_singleton_method", mod_define_singleton_method, MRB_ARGS_REQ(1)|MRB_ARGS_BLOCK());
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_method(mrb, krn, "define_singleton_method", mod_define_singleton_method, MRB_ARGS_REQ(1)|MRB_ARGS_BLOCK());
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
  685|    476|  mrb_define_method(mrb, krn, "send", mrb_f_send, MRB_ARGS_REQ(1)|MRB_ARGS_REST()|MRB_ARGS_BLOCK()); /* 15.3.1.3.44 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_method(mrb, krn, "send", mrb_f_send, MRB_ARGS_REQ(1)|MRB_ARGS_REST()|MRB_ARGS_BLOCK()); /* 15.3.1.3.44 */
  ------------------
  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  ------------------
                mrb_define_method(mrb, krn, "send", mrb_f_send, MRB_ARGS_REQ(1)|MRB_ARGS_REST()|MRB_ARGS_BLOCK()); /* 15.3.1.3.44 */
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
  686|       |
  687|    476|  mrb_define_method(mrb, mod, "class_variables", mrb_mod_class_variables, MRB_ARGS_OPT(1)); /* 15.2.2.4.19 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  688|    476|  mrb_define_method(mrb, mod, "remove_class_variable", mrb_mod_remove_cvar, MRB_ARGS_REQ(1)); /* 15.2.2.4.39 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  689|    476|  mrb_define_method(mrb, mod, "class_variable_defined?", mrb_mod_cvar_defined, MRB_ARGS_REQ(1)); /* 15.2.2.4.16 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  690|    476|  mrb_define_method(mrb, mod, "class_variable_get", mrb_mod_cvar_get, MRB_ARGS_REQ(1)); /* 15.2.2.4.17 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  691|    476|  mrb_define_method(mrb, mod, "class_variable_set", mrb_mod_cvar_set, MRB_ARGS_REQ(2)); /* 15.2.2.4.18 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  692|    476|  mrb_define_method(mrb, mod, "included_modules", mrb_mod_included_modules, MRB_ARGS_NONE()); /* 15.2.2.4.30 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  693|    476|  mrb_define_method(mrb, mod, "instance_methods", mrb_mod_instance_methods, MRB_ARGS_ANY()); /* 15.2.2.4.33 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  694|    476|  mrb_define_method(mrb, mod, "undefined_instance_methods", mrb_mod_undefined_methods, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  695|    476|  mrb_define_method(mrb, mod, "remove_method", mrb_mod_remove_method, MRB_ARGS_ANY()); /* 15.2.2.4.41 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  696|    476|  mrb_define_method(mrb, mod, "method_removed", mrb_f_nil, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  697|    476|  mrb_define_method(mrb, mod, "constants", mrb_mod_constants, MRB_ARGS_OPT(1)); /* 15.2.2.4.24 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  698|    476|  mrb_define_class_method(mrb, mod, "constants", mrb_mod_s_constants, MRB_ARGS_ANY()); /* 15.2.2.3.1 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  699|    476|  mrb_define_class_method(mrb, mod, "nesting", mrb_mod_s_nesting, MRB_ARGS_NONE()); /* 15.2.2.3.2 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  700|    476|}
mrb_mruby_metaprog_gem_final:
  704|    476|{
  705|    476|}

mrb_mruby_method_gem_init:
  537|    476|{
  538|    476|  struct RClass *unbound_method = mrb_define_class_id(mrb, MRB_SYM(UnboundMethod), mrb->object_class);
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  539|    476|  struct RClass *method = mrb_define_class_id(mrb, MRB_SYM(Method), mrb->object_class);
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  540|       |
  541|    476|  MRB_SET_INSTANCE_TT(unbound_method, MRB_TT_UNDEF);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  542|    476|  mrb_undef_class_method(mrb, unbound_method, "new");
  543|    476|  mrb_define_method(mrb, unbound_method, "bind", unbound_method_bind, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  544|    476|  mrb_define_method(mrb, unbound_method, "super_method", method_super_method, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  545|    476|  mrb_define_method(mrb, unbound_method, "==", method_eql, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  546|    476|  mrb_define_method(mrb, unbound_method, "eql?", method_eql, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  547|    476|  mrb_define_method(mrb, unbound_method, "to_s", method_to_s, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  548|    476|  mrb_define_method(mrb, unbound_method, "inspect", method_to_s, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  549|    476|  mrb_define_method(mrb, unbound_method, "arity", method_arity, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  550|    476|  mrb_define_method(mrb, unbound_method, "source_location", method_source_location, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  551|    476|  mrb_define_method(mrb, unbound_method, "parameters", method_parameters, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  552|    476|  mrb_define_method(mrb, unbound_method, "bind_call", method_bcall, MRB_ARGS_REQ(1)|MRB_ARGS_ANY());
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_method(mrb, unbound_method, "bind_call", method_bcall, MRB_ARGS_REQ(1)|MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  553|    476|  mrb_define_method(mrb, unbound_method, "owner", method_owner, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  554|    476|  mrb_define_method(mrb, unbound_method, "name", method_name, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  555|       |
  556|    476|  MRB_SET_INSTANCE_TT(method, MRB_TT_UNDEF);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  557|    476|  mrb_undef_class_method(mrb, method, "new");
  558|    476|  mrb_define_method(mrb, method, "==", method_eql, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  559|    476|  mrb_define_method(mrb, method, "eql?", method_eql, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  560|    476|  mrb_define_method(mrb, method, "to_s", method_to_s, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  561|    476|  mrb_define_method(mrb, method, "inspect", method_to_s, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  562|    476|  mrb_define_method(mrb, method, "call", method_call, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  563|    476|  mrb_define_method(mrb, method, "[]", method_call, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  564|    476|  mrb_define_method(mrb, method, "unbind", method_unbind, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  565|    476|  mrb_define_method(mrb, method, "super_method", method_super_method, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  566|    476|  mrb_define_method(mrb, method, "arity", method_arity, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  567|    476|  mrb_define_method(mrb, method, "source_location", method_source_location, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  568|    476|  mrb_define_method(mrb, method, "parameters", method_parameters, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  569|    476|  mrb_define_method(mrb, method, "owner", method_owner, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  570|    476|  mrb_define_method(mrb, method, "receiver", method_receiver, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  571|    476|  mrb_define_method(mrb, method, "name", method_name, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  572|       |
  573|    476|  mrb_define_method(mrb, mrb->kernel_module, "method", mrb_kernel_method, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  574|    476|  mrb_define_method(mrb, mrb->kernel_module, "singleton_method", mrb_kernel_singleton_method, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  575|       |
  576|    476|  mrb_define_method(mrb, mrb->module_class, "instance_method", mrb_module_instance_method, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  577|    476|}
mrb_mruby_method_gem_final:
  581|    476|{
  582|    476|}

mrb_mruby_numeric_ext_gem_init:
  220|    476|{
  221|    476|  struct RClass *ic = mrb->integer_class;
  222|       |
  223|    476|  mrb_define_alias(mrb, ic, "modulo", "%");
  224|    476|  mrb_define_method(mrb, ic, "remainder", int_remainder, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  225|       |
  226|    476|  mrb_define_method_id(mrb, ic, MRB_SYM(pow), int_powm, MRB_ARGS_ARG(1,1));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_method_id(mrb, ic, MRB_SYM(pow), int_powm, MRB_ARGS_ARG(1,1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
  227|    476|  mrb_define_method_id(mrb, ic, MRB_SYM(digits), int_digits, MRB_ARGS_OPT(1));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_method_id(mrb, ic, MRB_SYM(digits), int_digits, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  228|       |
  229|    476|#ifndef MRB_NO_FLOAT
  230|    476|  struct RClass *fc = mrb->float_class;
  231|       |
  232|    476|  mrb_define_alias(mrb, fc, "modulo", "%");
  233|    476|  mrb_define_method(mrb, fc, "remainder", flo_remainder, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  234|       |
  235|    476|  mrb_define_const_id(mrb, fc, MRB_SYM(RADIX),        mrb_fixnum_value(MRB_FLT_RADIX));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, fc, MRB_SYM(RADIX),        mrb_fixnum_value(MRB_FLT_RADIX));
  ------------------
  |  |  138|    476|# define MRB_FLT_RADIX          FLT_RADIX
  ------------------
  236|    476|  mrb_define_const_id(mrb, fc, MRB_SYM(MANT_DIG),     mrb_fixnum_value(MRB_FLT_MANT_DIG));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, fc, MRB_SYM(MANT_DIG),     mrb_fixnum_value(MRB_FLT_MANT_DIG));
  ------------------
  |  |  152|    476|#  define MRB_FLT_MANT_DIG      DBL_MANT_DIG
  ------------------
  237|    476|  mrb_define_const_id(mrb, fc, MRB_SYM(EPSILON),      mrb_float_value(mrb, MRB_FLT_EPSILON));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, fc, MRB_SYM(EPSILON),      mrb_float_value(mrb, MRB_FLT_EPSILON));
  ------------------
  |  |  153|    476|#  define MRB_FLT_EPSILON       DBL_EPSILON
  ------------------
  238|    476|  mrb_define_const_id(mrb, fc, MRB_SYM(DIG),          mrb_fixnum_value(MRB_FLT_DIG));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, fc, MRB_SYM(DIG),          mrb_fixnum_value(MRB_FLT_DIG));
  ------------------
  |  |  154|    476|#  define MRB_FLT_DIG           DBL_DIG
  ------------------
  239|    476|  mrb_define_const_id(mrb, fc, MRB_SYM(MIN_EXP),      mrb_fixnum_value(MRB_FLT_MIN_EXP));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, fc, MRB_SYM(MIN_EXP),      mrb_fixnum_value(MRB_FLT_MIN_EXP));
  ------------------
  |  |  155|    476|#  define MRB_FLT_MIN_EXP       DBL_MIN_EXP
  ------------------
  240|    476|  mrb_define_const_id(mrb, fc, MRB_SYM(MIN),          mrb_float_value(mrb, MRB_FLT_MIN));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, fc, MRB_SYM(MIN),          mrb_float_value(mrb, MRB_FLT_MIN));
  ------------------
  |  |  156|    476|#  define MRB_FLT_MIN           DBL_MIN
  ------------------
  241|    476|  mrb_define_const_id(mrb, fc, MRB_SYM(MIN_10_EXP),   mrb_fixnum_value(MRB_FLT_MIN_10_EXP));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, fc, MRB_SYM(MIN_10_EXP),   mrb_fixnum_value(MRB_FLT_MIN_10_EXP));
  ------------------
  |  |  157|    476|#  define MRB_FLT_MIN_10_EXP    DBL_MIN_10_EXP
  ------------------
  242|    476|  mrb_define_const_id(mrb, fc, MRB_SYM(MAX_EXP),      mrb_fixnum_value(MRB_FLT_MAX_EXP));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, fc, MRB_SYM(MAX_EXP),      mrb_fixnum_value(MRB_FLT_MAX_EXP));
  ------------------
  |  |  158|    476|#  define MRB_FLT_MAX_EXP       DBL_MAX_EXP
  ------------------
  243|    476|  mrb_define_const_id(mrb, fc, MRB_SYM(MAX),          mrb_float_value(mrb, MRB_FLT_MAX));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, fc, MRB_SYM(MAX),          mrb_float_value(mrb, MRB_FLT_MAX));
  ------------------
  |  |  159|    476|#  define MRB_FLT_MAX           DBL_MAX
  ------------------
  244|    476|  mrb_define_const_id(mrb, fc, MRB_SYM(MAX_10_EXP),   mrb_fixnum_value(MRB_FLT_MAX_10_EXP));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_const_id(mrb, fc, MRB_SYM(MAX_10_EXP),   mrb_fixnum_value(MRB_FLT_MAX_10_EXP));
  ------------------
  |  |  160|    476|#  define MRB_FLT_MAX_10_EXP    DBL_MAX_10_EXP
  ------------------
  245|    476|#endif /* MRB_NO_FLOAT */
  246|    476|}
mrb_mruby_numeric_ext_gem_final:
  250|    476|{
  251|    476|}

mrb_mruby_object_ext_gem_init:
  115|    476|{
  116|    476|  struct RClass * n = mrb->nil_class;
  117|       |
  118|    476|  mrb_define_method(mrb, n, "to_a", nil_to_a,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  119|    476|#ifndef MRB_NO_FLOAT
  120|    476|  mrb_define_method(mrb, n, "to_f", nil_to_f,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  121|    476|#endif
  122|    476|  mrb_define_method(mrb, n, "to_h", nil_to_h,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  123|    476|  mrb_define_method(mrb, n, "to_i", nil_to_i,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  124|       |
  125|    476|  mrb_define_method(mrb, mrb->kernel_module, "itself", f_itself, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  126|       |
  127|    476|  mrb_define_method(mrb, mrb_class_get_id(mrb, MRB_SYM(BasicObject)), "instance_exec", obj_instance_exec, MRB_ARGS_ANY() | MRB_ARGS_BLOCK());
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                mrb_define_method(mrb, mrb_class_get_id(mrb, MRB_SYM(BasicObject)), "instance_exec", obj_instance_exec, MRB_ARGS_ANY() | MRB_ARGS_BLOCK());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
                mrb_define_method(mrb, mrb_class_get_id(mrb, MRB_SYM(BasicObject)), "instance_exec", obj_instance_exec, MRB_ARGS_ANY() | MRB_ARGS_BLOCK());
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
  128|    476|}
mrb_mruby_object_ext_gem_final:
  132|    476|{
  133|    476|}

mrb_mruby_objectspace_gem_init:
  179|    476|{
  180|    476|  struct RClass *os = mrb_define_module(mrb, "ObjectSpace");
  181|    476|  mrb_define_class_method(mrb, os, "count_objects", os_count_objects, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  182|    476|  mrb_define_class_method(mrb, os, "each_object", os_each_object, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  183|    476|}
mrb_mruby_objectspace_gem_final:
  187|    476|{
  188|    476|}
mruby_objectspace.c:os_count_objects:
   60|  5.54k|{
   61|  5.54k|  struct os_count_struct obj_count = { 0 };
   62|  5.54k|  mrb_int i;
   63|  5.54k|  mrb_value hash;
   64|       |
   65|  5.54k|  if (mrb_get_args(mrb, "|H", &hash) == 0) {
  ------------------
  |  Branch (65:7): [True: 4.59k, False: 957]
  ------------------
   66|  4.59k|    hash = mrb_hash_new(mrb);
   67|  4.59k|  }
   68|       |
   69|  5.54k|  if (!mrb_hash_empty_p(mrb, hash)) {
  ------------------
  |  Branch (69:7): [True: 957, False: 4.59k]
  ------------------
   70|    957|    mrb_hash_clear(mrb, hash);
   71|    957|  }
   72|       |
   73|  5.54k|  mrb_objspace_each_objects(mrb, os_count_object_type, &obj_count);
   74|       |
   75|  5.54k|  mrb_hash_set(mrb, hash, mrb_symbol_value(MRB_SYM(TOTAL)), mrb_fixnum_value(obj_count.total));
  ------------------
  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
   76|  5.54k|  mrb_hash_set(mrb, hash, mrb_symbol_value(MRB_SYM(FREE)), mrb_fixnum_value(obj_count.freed));
  ------------------
  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
   77|       |
   78|   160k|  for (i = MRB_TT_FALSE; i < MRB_TT_MAXDEFINE; i++) {
  ------------------
  |  Branch (78:26): [True: 155k, False: 5.54k]
  ------------------
   79|   155k|    mrb_value type;
   80|   155k|    switch (i) {
   81|      0|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
   82|  5.54k|      COUNT_TYPE(T_INTEGER);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   83|  5.54k|      COUNT_TYPE(T_FLOAT);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   84|  5.54k|      COUNT_TYPE(T_CPTR);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   85|  5.54k|      COUNT_TYPE(T_OBJECT);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   86|  5.54k|      COUNT_TYPE(T_CLASS);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   87|  5.54k|      COUNT_TYPE(T_MODULE);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   88|  5.54k|      COUNT_TYPE(T_ICLASS);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   89|  5.54k|      COUNT_TYPE(T_SCLASS);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   90|  5.54k|      COUNT_TYPE(T_PROC);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   91|  5.54k|      COUNT_TYPE(T_ARRAY);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   92|  5.54k|      COUNT_TYPE(T_HASH);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   93|  5.54k|      COUNT_TYPE(T_STRING);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   94|  5.54k|      COUNT_TYPE(T_RANGE);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   95|  5.54k|      COUNT_TYPE(T_EXCEPTION);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   96|  5.54k|      COUNT_TYPE(T_ENV);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   97|  5.54k|      COUNT_TYPE(T_DATA);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   98|  5.54k|      COUNT_TYPE(T_FIBER);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
   99|  5.54k|      COUNT_TYPE(T_STRUCT);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
  100|  5.54k|      COUNT_TYPE(T_ISTRUCT);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
  101|  5.54k|      COUNT_TYPE(T_BREAK);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
  102|  5.54k|      COUNT_TYPE(T_COMPLEX);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
  103|  5.54k|      COUNT_TYPE(T_RATIONAL);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
  104|  5.54k|      COUNT_TYPE(T_BIGINT);
  ------------------
  |  |   81|  5.54k|#define COUNT_TYPE(t) case (MRB_T ## t): type = mrb_symbol_value(MRB_SYM(t)); break;
  |  |  ------------------
  |  |  |  |   18|  5.54k|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  |  |  |  Branch (81:23): [True: 5.54k, False: 149k]
  |  |  ------------------
  ------------------
  105|      0|#undef COUNT_TYPE
  106|  27.7k|    default:
  ------------------
  |  Branch (106:5): [True: 27.7k, False: 127k]
  ------------------
  107|  27.7k|      type = mrb_fixnum_value(i); break;
  108|   155k|    }
  109|   155k|    if (obj_count.counts[i])
  ------------------
  |  Branch (109:9): [True: 69.6k, False: 85.6k]
  ------------------
  110|  69.6k|      mrb_hash_set(mrb, hash, type, mrb_fixnum_value(obj_count.counts[i]));
  111|   155k|  }
  112|       |
  113|  5.54k|  return hash;
  114|  5.54k|}
mruby_objectspace.c:os_count_object_type:
   23|  6.03M|{
   24|  6.03M|  struct os_count_struct *obj_count;
   25|  6.03M|  obj_count = (struct os_count_struct*)data;
   26|       |
   27|  6.03M|  obj_count->total++;
   28|       |
   29|  6.03M|  if (mrb_object_dead_p(mrb, obj)) {
  ------------------
  |  Branch (29:7): [True: 1.55M, False: 4.48M]
  ------------------
   30|  1.55M|    obj_count->freed++;
   31|  1.55M|  }
   32|  4.48M|  else {
   33|  4.48M|    obj_count->counts[obj->tt]++;
   34|  4.48M|  }
   35|  6.03M|  return MRB_EACH_OBJ_OK;
  ------------------
  |  |   20|  6.03M|#define MRB_EACH_OBJ_OK 0
  ------------------
   36|  6.03M|}

mrb_mruby_pack_gem_init:
 1754|    476|{
 1755|    476|  mrb_define_method(mrb, mrb->array_class, "pack", mrb_pack_pack, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1756|    476|  mrb_define_method(mrb, mrb->string_class, "unpack", mrb_pack_unpack, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1757|    476|  mrb_define_method(mrb, mrb->string_class, "unpack1", mrb_pack_unpack1, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1758|    476|}
mrb_mruby_pack_gem_final:
 1762|    476|{
 1763|    476|}

mrb_mruby_print_gem_init:
   63|    476|{
   64|    476|  mrb_define_method(mrb, mrb->kernel_module, "print", mrb_print, MRB_ARGS_ANY()); /* 15.3.1.3.35 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
   65|    476|}
mrb_mruby_print_gem_final:
   69|    476|{
   70|    476|}

mrb_mruby_proc_ext_gem_init:
  173|    476|{
  174|    476|  struct RClass *p = mrb->proc_class;
  175|    476|  mrb_define_method(mrb, p, "lambda?",         proc_lambda_p,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  176|    476|  mrb_define_method(mrb, p, "source_location", proc_source_location, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  177|    476|  mrb_define_method(mrb, p, "to_s",            proc_inspect,         MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  178|    476|  mrb_define_method(mrb, p, "inspect",         proc_inspect,         MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  179|    476|  mrb_define_method(mrb, p, "parameters",      mrb_proc_parameters,  MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  180|       |
  181|    476|  mrb_define_method(mrb, mrb->kernel_module,   "proc", kernel_proc,  MRB_ARGS_NONE()|MRB_ARGS_BLOCK());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
                mrb_define_method(mrb, mrb->kernel_module,   "proc", kernel_proc,  MRB_ARGS_NONE()|MRB_ARGS_BLOCK());
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
  182|    476|}
mrb_mruby_proc_ext_gem_final:
  186|    476|{
  187|    476|}

mrb_mruby_random_gem_init:
  400|    476|{
  401|    476|  struct RClass *random;
  402|    476|  struct RClass *array = mrb->array_class;
  403|       |
  404|    476|  mrb_static_assert(sizeof(rand_state) <= ISTRUCT_DATA_SIZE);
  ------------------
  |  |  109|    476|    mrb_static_assert_expand(mrb_static_assert_selector(__VA_ARGS__, mrb_static_assert2, mrb_static_assert1, _)(__VA_ARGS__))
  |  |  ------------------
  |  |  |  |   99|    476|# define mrb_static_assert_expand(...) __VA_ARGS__ /* for MSVC behaviour - https://stackoverflow.com/q/5530505 */
  |  |  ------------------
  ------------------
  405|       |
  406|    476|  mrb_define_method(mrb, mrb->kernel_module, "rand", random_f_rand, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  407|    476|  mrb_define_method(mrb, mrb->kernel_module, "srand", random_f_srand, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  408|       |
  409|    476|  random = mrb_define_class(mrb, "Random", mrb->object_class);
  410|    476|  mrb_const_set(mrb, mrb_obj_value(mrb->object_class), ID_RANDOM, mrb_obj_value(random)); // for class check
  ------------------
  |  |  158|    476|#define ID_RANDOM MRB_SYM(mruby_Random)
  |  |  ------------------
  |  |  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  ------------------
  411|    476|  MRB_SET_INSTANCE_TT(random, MRB_TT_ISTRUCT);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  412|    476|  mrb_define_class_method(mrb, random, "rand", random_f_rand, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  413|    476|  mrb_define_class_method(mrb, random, "srand", random_f_srand, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  414|    476|  mrb_define_class_method(mrb, random, "bytes", random_f_bytes, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  415|       |
  416|    476|  mrb_define_method(mrb, random, "initialize", random_m_init, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  417|    476|  mrb_define_method(mrb, random, "rand", random_m_rand, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  418|    476|  mrb_define_method(mrb, random, "srand", random_m_srand, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  419|    476|  mrb_define_method(mrb, random, "bytes", random_m_bytes, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  420|       |
  421|    476|  mrb_define_method(mrb, array, "shuffle", mrb_ary_shuffle, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  422|    476|  mrb_define_method(mrb, array, "shuffle!", mrb_ary_shuffle_bang, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  423|    476|  mrb_define_method(mrb, array, "sample", mrb_ary_sample, MRB_ARGS_OPT(2));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  424|       |
  425|    476|  mrb_value d = mrb_obj_new(mrb, random, 0, NULL);
  426|    476|  rand_state *t = random_ptr(d);
  ------------------
  |  |  171|    476|#define random_ptr(v) (rand_state*)mrb_istruct_ptr(v)
  ------------------
  427|    476|  mrb_iv_set(mrb, mrb_obj_value(random), ID_RANDOM, d);
  ------------------
  |  |  158|    476|#define ID_RANDOM MRB_SYM(mruby_Random)
  |  |  ------------------
  |  |  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  |  |  ------------------
  ------------------
  428|       |
  429|    476|  uint32_t seed = (uint32_t)time(NULL);
  430|    476|  rand_seed(t, seed ^ (uint32_t)(uintptr_t)t);
  431|    476|}
mrb_mruby_random_gem_final:
  434|    476|{
  435|    476|}
random.c:rand_uint32:
   85|  4.76k|{
   86|       |#ifdef XORSHIFT96
   87|       |  uint32_t *seed = state->seed;
   88|       |  uint32_t x = seed[0];
   89|       |  uint32_t y = seed[1];
   90|       |  uint32_t z = seed[2];
   91|       |  uint32_t t;
   92|       |
   93|       |  t = (x ^ (x << 3)) ^ (y ^ (y >> 19)) ^ (z ^ (z << 6));
   94|       |  x = y; y = z; z = t;
   95|       |  seed[0] = x;
   96|       |  seed[1] = y;
   97|       |  seed[2] = z;
   98|       |
   99|       |  return z;
  100|       |#else
  101|  4.76k|  uint32_t *s = state->seed;
  102|  4.76k|  const uint32_t result = rotl(s[0] + s[3], 7) + s[0];
  103|  4.76k|  const uint32_t t = s[1] << 9;
  104|       |
  105|  4.76k|  s[2] ^= s[0];
  106|  4.76k|  s[3] ^= s[1];
  107|  4.76k|  s[1] ^= s[2];
  108|  4.76k|  s[0] ^= s[3];
  109|       |
  110|  4.76k|  s[2] ^= t;
  111|  4.76k|  s[3] = rotl(s[3], 11);
  112|       |
  113|  4.76k|  return result;
  114|  4.76k|#endif  /* XORSHIFT96 */
  115|  4.76k|  }
random.c:rotl:
   78|  9.52k|rotl(const uint32_t x, int k) {
   79|  9.52k|  return (x << k) | (x >> (32 - k));
   80|  9.52k|}
random.c:random_m_init:
  176|    476|{
  177|    476|  mrb_int seed;
  178|    476|  rand_state *t;
  179|       |
  180|    476|  t = random_ptr(self);
  ------------------
  |  |  171|    476|#define random_ptr(v) (rand_state*)mrb_istruct_ptr(v)
  ------------------
  181|    476|  if (mrb_get_args(mrb, "|i", &seed) == 0) {
  ------------------
  |  Branch (181:7): [True: 476, False: 0]
  ------------------
  182|    476|    rand_init(t);
  183|    476|  }
  184|      0|  else {
  185|      0|    rand_seed(t, (uint32_t)seed);
  186|      0|  }
  187|       |
  188|    476|  return self;
  189|    476|}
random.c:rand_init:
   53|    952|{
   54|    952|  t->seed[0] = 123456789;
   55|    952|  t->seed[1] = 362436069;
   56|    952|  t->seed[2] = 521288629;
   57|    952|#ifndef XORSHIFT96
   58|    952|  t->seed[3] = 88675123;
   59|    952|#endif
   60|    952|}
random.c:rand_seed:
   66|    476|{
   67|    476|  uint32_t old_seed = t->seed[SEEDPOS];
  ------------------
  |  |   43|    476|# define SEEDPOS 0
  ------------------
   68|    476|  rand_init(t);
   69|    476|  t->seed[SEEDPOS] = seed;
  ------------------
  |  |   43|    476|# define SEEDPOS 0
  ------------------
   70|  5.23k|  for (int i = 0; i < 10; i++) {
  ------------------
  |  Branch (70:19): [True: 4.76k, False: 476]
  ------------------
   71|  4.76k|    rand_uint32(t);
   72|  4.76k|  }
   73|    476|  return old_seed;
   74|    476|}

mrb_mruby_range_ext_gem_init:
  194|    476|{
  195|    476|  struct RClass * s = mrb->range_class;
  196|       |
  197|    476|  mrb_define_method(mrb, s, "cover?", range_cover, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  198|    476|  mrb_define_method(mrb, s, "size",   range_size,  MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  199|    476|}
mrb_mruby_range_ext_gem_final:
  203|    476|{
  204|    476|}

mrb_mruby_rational_gem_init:
  766|    476|{
  767|    476|  struct RClass *rat;
  768|       |
  769|    476|  rat = mrb_define_class_id(mrb, MRB_SYM(Rational), mrb_class_get_id(mrb, MRB_SYM(Numeric)));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
                rat = mrb_define_class_id(mrb, MRB_SYM(Rational), mrb_class_get_id(mrb, MRB_SYM(Numeric)));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  770|    476|  MRB_SET_INSTANCE_TT(rat, MRB_TT_UNDEF);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  771|    476|  mrb_undef_class_method(mrb, rat, "new");
  772|    476|  mrb_define_class_method(mrb, rat, "_new", rational_s_new, MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  773|    476|  mrb_define_method(mrb, rat, "numerator", rational_numerator, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  774|    476|  mrb_define_method(mrb, rat, "denominator", rational_denominator, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  775|    476|#ifndef MRB_NO_FLOAT
  776|    476|  mrb_define_method(mrb, rat, "to_f", mrb_rational_to_f, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  777|    476|#endif
  778|    476|  mrb_define_method(mrb, rat, "to_i", mrb_rational_to_i, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  779|    476|  mrb_define_method(mrb, rat, "to_r", rational_to_r, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  780|    476|  mrb_define_method(mrb, rat, "negative?", rational_negative_p, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  781|    476|  mrb_define_method(mrb, rat, "==", rational_eq, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  782|    476|  mrb_define_method(mrb, rat, "<=>", rational_cmp, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  783|    476|  mrb_define_method(mrb, rat, "-@", rational_minus, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  784|    476|  mrb_define_method(mrb, rat, "+", rational_add, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  785|    476|  mrb_define_method(mrb, rat, "-", rational_sub, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  786|    476|  mrb_define_method(mrb, rat, "*", rational_mul, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  787|    476|  mrb_define_method(mrb, rat, "/", rational_div, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  788|    476|  mrb_define_method(mrb, rat, "quo", rational_div, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  789|    476|  mrb_define_method(mrb, rat, "**", rational_pow, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  790|    476|  mrb_define_method(mrb, rat, "hash", rational_hash, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  791|    476|#ifndef MRB_NO_FLOAT
  792|    476|  mrb_define_method(mrb, mrb->float_class, "to_r", float_to_r, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  793|    476|#endif
  794|    476|  mrb_define_method(mrb, mrb->integer_class, "to_r", fix_to_r, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  795|    476|  mrb_define_method(mrb, mrb->nil_class, "to_r", nil_to_r, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  796|    476|  mrb_define_method(mrb, mrb->kernel_module, "Rational", rational_m, MRB_ARGS_ARG(1,1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
  797|    476|}
mrb_mruby_rational_gem_final:
  801|    476|{
  802|    476|}

mrb_mruby_socket_gem_init:
 1015|    476|{
 1016|    476|  struct RClass *io, *ai, *sock, *bsock, *ipsock, *tcpsock;
 1017|    476|  struct RClass *constants, *option;
 1018|       |
 1019|       |#ifdef _WIN32
 1020|       |  WSADATA wsaData;
 1021|       |  int result;
 1022|       |  result = WSAStartup(MAKEWORD(2,2), &wsaData);
 1023|       |  if (result != NO_ERROR)
 1024|       |    mrb_raise(mrb, E_RUNTIME_ERROR, "WSAStartup failed");
 1025|       |#endif
 1026|       |
 1027|    476|  ai = mrb_define_class(mrb, "Addrinfo", mrb->object_class);
 1028|    476|  mrb_define_class_method(mrb, ai, "getaddrinfo", mrb_addrinfo_getaddrinfo, MRB_ARGS_REQ(2)|MRB_ARGS_OPT(4));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_class_method(mrb, ai, "getaddrinfo", mrb_addrinfo_getaddrinfo, MRB_ARGS_REQ(2)|MRB_ARGS_OPT(4));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1029|    476|  mrb_define_method(mrb, ai, "getnameinfo", mrb_addrinfo_getnameinfo, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1030|    476|#ifndef _WIN32
 1031|    476|  mrb_define_method(mrb, ai, "unix_path", mrb_addrinfo_unix_path, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1032|    476|#endif
 1033|       |
 1034|    476|  io = mrb_class_get_id(mrb, MRB_SYM(IO));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 1035|       |
 1036|    476|  bsock = mrb_define_class(mrb, "BasicSocket", io);
 1037|    476|  mrb_define_method(mrb, bsock, "_recvfrom", mrb_basicsocket_recvfrom, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_method(mrb, bsock, "_recvfrom", mrb_basicsocket_recvfrom, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1038|    476|  mrb_define_method(mrb, bsock, "_setnonblock", mrb_basicsocket_setnonblock, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1039|    476|  mrb_define_method(mrb, bsock, "getpeereid", mrb_basicsocket_getpeereid, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1040|    476|  mrb_define_method(mrb, bsock, "getpeername", mrb_basicsocket_getpeername, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1041|    476|  mrb_define_method(mrb, bsock, "getsockname", mrb_basicsocket_getsockname, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1042|    476|  mrb_define_method(mrb, bsock, "getsockopt", mrb_basicsocket_getsockopt, MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1043|    476|  mrb_define_method(mrb, bsock, "recv", mrb_basicsocket_recv, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_method(mrb, bsock, "recv", mrb_basicsocket_recv, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1044|       |  // #recvmsg(maxlen, flags=0)
 1045|    476|  mrb_define_method(mrb, bsock, "send", mrb_basicsocket_send, MRB_ARGS_REQ(2)|MRB_ARGS_OPT(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_method(mrb, bsock, "send", mrb_basicsocket_send, MRB_ARGS_REQ(2)|MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1046|       |  // #sendmsg
 1047|       |  // #sendmsg_nonblock
 1048|    476|  mrb_define_method(mrb, bsock, "setsockopt", mrb_basicsocket_setsockopt, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_method(mrb, bsock, "setsockopt", mrb_basicsocket_setsockopt, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(2));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1049|    476|  mrb_define_method(mrb, bsock, "shutdown", mrb_basicsocket_shutdown, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1050|    476|  mrb_define_method(mrb, bsock, "_is_socket=", mrb_basicsocket_set_is_socket, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1051|       |
 1052|    476|  ipsock = mrb_define_class(mrb, "IPSocket", bsock);
 1053|    476|  mrb_define_class_method(mrb, ipsock, "ntop", mrb_ipsocket_ntop, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1054|    476|  mrb_define_class_method(mrb, ipsock, "pton", mrb_ipsocket_pton, MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1055|    476|  mrb_define_method(mrb, ipsock, "recvfrom", mrb_ipsocket_recvfrom, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_method(mrb, ipsock, "recvfrom", mrb_ipsocket_recvfrom, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1056|       |
 1057|    476|  tcpsock = mrb_define_class(mrb, "TCPSocket", ipsock);
 1058|    476|  mrb_define_class_method(mrb, tcpsock, "_allocate", mrb_tcpsocket_allocate, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1059|    476|  mrb_define_class(mrb, "TCPServer", tcpsock);
 1060|       |
 1061|    476|  mrb_define_class(mrb, "UDPSocket", ipsock);
 1062|       |  //#recvfrom_nonblock
 1063|       |
 1064|    476|  sock = mrb_define_class(mrb, "Socket", bsock);
 1065|    476|  mrb_define_class_method(mrb, sock, "_accept", mrb_socket_accept, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1066|    476|  mrb_define_class_method(mrb, sock, "_accept2", mrb_socket_accept2, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1067|    476|  mrb_define_class_method(mrb, sock, "_bind", mrb_socket_bind, MRB_ARGS_REQ(3));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1068|    476|  mrb_define_class_method(mrb, sock, "_connect", mrb_socket_connect, MRB_ARGS_REQ(3));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1069|    476|  mrb_define_class_method(mrb, sock, "_listen", mrb_socket_listen, MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1070|    476|  mrb_define_class_method(mrb, sock, "_sockaddr_family", mrb_socket_sockaddr_family, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1071|    476|  mrb_define_class_method(mrb, sock, "_socket", mrb_socket_socket, MRB_ARGS_REQ(3));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1072|       |  //mrb_define_class_method(mrb, sock, "gethostbyaddr", mrb_socket_gethostbyaddr, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
 1073|       |  //mrb_define_class_method(mrb, sock, "gethostbyname", mrb_socket_gethostbyname, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
 1074|    476|  mrb_define_class_method(mrb, sock, "gethostname", mrb_socket_gethostname, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1075|       |  //mrb_define_class_method(mrb, sock, "getservbyname", mrb_socket_getservbyname, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
 1076|       |  //mrb_define_class_method(mrb, sock, "getservbyport", mrb_socket_getservbyport, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
 1077|    476|  mrb_define_class_method(mrb, sock, "sockaddr_un", mrb_socket_sockaddr_un, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1078|    476|  mrb_define_class_method(mrb, sock, "socketpair", mrb_socket_socketpair, MRB_ARGS_REQ(3));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1079|       |  //mrb_define_method(mrb, sock, "sysaccept", mrb_socket_accept, MRB_ARGS_NONE());
 1080|       |
 1081|    476|#ifndef _WIN32
 1082|    476|  mrb_define_class(mrb, "UNIXSocket", bsock);
 1083|       |  //mrb_define_class_method(mrb, usock, "pair", mrb_unixsocket_open, MRB_ARGS_OPT(2));
 1084|       |  //mrb_define_class_method(mrb, usock, "socketpair", mrb_unixsocket_open, MRB_ARGS_OPT(2));
 1085|       |
 1086|       |  //mrb_define_method(mrb, usock, "recv_io", mrb_unixsocket_peeraddr, MRB_ARGS_NONE());
 1087|       |  //mrb_define_method(mrb, usock, "recvfrom", mrb_unixsocket_peeraddr, MRB_ARGS_NONE());
 1088|       |  //mrb_define_method(mrb, usock, "send_io", mrb_unixsocket_peeraddr, MRB_ARGS_NONE());
 1089|    476|#endif
 1090|       |
 1091|       |  /* Windows IO Method Overrides on BasicSocket */
 1092|       |#ifdef _WIN32
 1093|       |  mrb_define_method(mrb, bsock, "close", mrb_win32_basicsocket_close, MRB_ARGS_NONE());
 1094|       |  mrb_define_method(mrb, bsock, "sysread", mrb_win32_basicsocket_sysread, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
 1095|       |  mrb_define_method(mrb, bsock, "sysseek", mrb_win32_basicsocket_sysseek, MRB_ARGS_REQ(1));
 1096|       |  mrb_define_method(mrb, bsock, "syswrite", mrb_win32_basicsocket_syswrite, MRB_ARGS_REQ(1));
 1097|       |  mrb_define_method(mrb, bsock, "read", mrb_win32_basicsocket_sysread, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
 1098|       |  mrb_define_method(mrb, bsock, "write", mrb_win32_basicsocket_syswrite, MRB_ARGS_REQ(1));
 1099|       |#endif
 1100|       |
 1101|    476|  option = mrb_define_class_under(mrb, sock, "Option", mrb->object_class);
 1102|    476|  mrb_define_class_method(mrb, option, "bool", socket_option_s_bool, MRB_ARGS_REQ(4));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1103|    476|  mrb_define_class_method(mrb, option, "int", socket_option_s_int, MRB_ARGS_REQ(4));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1104|    476|  mrb_define_method(mrb, option, "initialize", socket_option_init, MRB_ARGS_REQ(4));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1105|    476|  mrb_define_method(mrb, option, "inspect", socket_option_inspect, MRB_ARGS_REQ(0));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1106|    476|  mrb_define_method(mrb, option, "family", socket_option_family, MRB_ARGS_REQ(0));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1107|    476|  mrb_define_method(mrb, option, "level", socket_option_level, MRB_ARGS_REQ(0));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1108|    476|  mrb_define_method(mrb, option, "optname", socket_option_optname, MRB_ARGS_REQ(0));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1109|    476|  mrb_define_method(mrb, option, "data", socket_option_data, MRB_ARGS_REQ(0));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1110|    476|  mrb_define_method(mrb, option, "bool", socket_option_bool, MRB_ARGS_REQ(0));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1111|    476|  mrb_define_method(mrb, option, "int", socket_option_int, MRB_ARGS_REQ(0));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1112|       |
 1113|    476|  mrb_define_method(mrb, option, "linger", socket_option_notimp, MRB_ARGS_REQ(0));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1114|    476|  mrb_define_method(mrb, option, "unpack", socket_option_notimp, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1115|       |
 1116|    476|  constants = mrb_define_module_under(mrb, sock, "Constants");
 1117|       |
 1118|    476|#define define_const(SYM) \
 1119|    476|  do {                                                                \
 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
 1121|    476|  } while (0)
 1122|       |
 1123|    476|#include "const.cstub"
  ------------------
  |  |    1|    476|#if defined(AF_INET)
  |  |    2|    476|  define_const(AF_INET);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |    3|    476|#endif
  |  |    4|    476|#if defined(PF_INET)
  |  |    5|    476|  define_const(PF_INET);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |    6|    476|#endif
  |  |    7|    476|#if defined(AF_INET6)
  |  |    8|    476|  define_const(AF_INET6);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |    9|    476|#endif
  |  |   10|    476|#if defined(PF_INET6)
  |  |   11|    476|  define_const(PF_INET6);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   12|    476|#endif
  |  |   13|       |#if defined(AF_LINK)
  |  |   14|       |  define_const(AF_LINK);
  |  |   15|       |#endif
  |  |   16|       |#if defined(PF_LINK)
  |  |   17|       |  define_const(PF_LINK);
  |  |   18|       |#endif
  |  |   19|    476|#if defined(AF_LOCAL)
  |  |   20|    476|  define_const(AF_LOCAL);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   21|    476|#endif
  |  |   22|    476|#if defined(PF_LOCAL)
  |  |   23|    476|  define_const(PF_LOCAL);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   24|    476|#endif
  |  |   25|    476|#if defined(AF_UNIX)
  |  |   26|    476|  define_const(AF_UNIX);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   27|    476|#endif
  |  |   28|    476|#if defined(PF_UNIX)
  |  |   29|    476|  define_const(PF_UNIX);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   30|    476|#endif
  |  |   31|    476|#if defined(AF_MAX)
  |  |   32|    476|  define_const(AF_MAX);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   33|    476|#endif
  |  |   34|    476|#if defined(AF_UNSPEC)
  |  |   35|    476|  define_const(AF_UNSPEC);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|    476|#endif
  |  |   37|    476|#if defined(PF_UNSPEC)
  |  |   38|    476|  define_const(PF_UNSPEC);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   39|    476|#endif
  |  |   40|    476|#if defined(AF_ROUTE)
  |  |   41|    476|  define_const(AF_ROUTE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|    476|#endif
  |  |   43|    476|#if defined(PF_ROUTE)
  |  |   44|    476|  define_const(PF_ROUTE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|    476|#endif
  |  |   46|    476|#if defined(AI_CANONNAME)
  |  |   47|    476|  define_const(AI_CANONNAME);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   48|    476|#endif
  |  |   49|       |#if defined(AI_FQDN)
  |  |   50|       |  define_const(AI_FQDN);
  |  |   51|       |#endif
  |  |   52|    476|#if defined(AI_NUMERICHOST)
  |  |   53|    476|  define_const(AI_NUMERICHOST);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|    476|#endif
  |  |   55|    476|#if defined(AI_NUMERICSERV)
  |  |   56|    476|  define_const(AI_NUMERICSERV);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   57|    476|#endif
  |  |   58|    476|#if defined(AI_PASSIVE)
  |  |   59|    476|  define_const(AI_PASSIVE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   60|    476|#endif
  |  |   61|    476|#if defined(IP_ADD_MEMBERSHIP)
  |  |   62|    476|  define_const(IP_ADD_MEMBERSHIP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   63|    476|#endif
  |  |   64|    476|#if defined(IP_ADD_SOURCE_MEMBERSHIP)
  |  |   65|    476|  define_const(IP_ADD_SOURCE_MEMBERSHIP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   66|    476|#endif
  |  |   67|    476|#if defined(IP_BLOCK_SOURCE)
  |  |   68|    476|  define_const(IP_BLOCK_SOURCE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|    476|#endif
  |  |   70|    476|#if defined(IP_DROP_MEMBERSHIP)
  |  |   71|    476|  define_const(IP_DROP_MEMBERSHIP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|    476|#endif
  |  |   73|    476|#if defined(IP_DROP_SOURCE_MEMBERSHIP)
  |  |   74|    476|  define_const(IP_DROP_SOURCE_MEMBERSHIP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|    476|#endif
  |  |   76|    476|#if defined(IP_FREEBIND)
  |  |   77|    476|  define_const(IP_FREEBIND);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|    476|#endif
  |  |   79|    476|#if defined(IP_HDRINCL)
  |  |   80|    476|  define_const(IP_HDRINCL);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   81|    476|#endif
  |  |   82|    476|#if defined(IP_IPSEC_POLICY)
  |  |   83|    476|  define_const(IP_IPSEC_POLICY);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   84|    476|#endif
  |  |   85|    476|#if defined(IP_MINTTL)
  |  |   86|    476|  define_const(IP_MINTTL);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   87|    476|#endif
  |  |   88|    476|#if defined(IP_MSFILTER)
  |  |   89|    476|  define_const(IP_MSFILTER);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|    476|#endif
  |  |   91|    476|#if defined(IP_MTU)
  |  |   92|    476|  define_const(IP_MTU);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   93|    476|#endif
  |  |   94|    476|#if defined(IP_MTU_DISCOVER)
  |  |   95|    476|  define_const(IP_MTU_DISCOVER);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   96|    476|#endif
  |  |   97|    476|#if defined(IP_MULTICAST_ALL)
  |  |   98|    476|  define_const(IP_MULTICAST_ALL);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   99|    476|#endif
  |  |  100|    476|#if defined(IP_MULTICAST_IF)
  |  |  101|    476|  define_const(IP_MULTICAST_IF);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  102|    476|#endif
  |  |  103|    476|#if defined(IP_MULTICAST_LOOP)
  |  |  104|    476|  define_const(IP_MULTICAST_LOOP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|    476|#endif
  |  |  106|    476|#if defined(IP_MULTICAST_TTL)
  |  |  107|    476|  define_const(IP_MULTICAST_TTL);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  108|    476|#endif
  |  |  109|    476|#if defined(IP_OPTIONS)
  |  |  110|    476|  define_const(IP_OPTIONS);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  111|    476|#endif
  |  |  112|    476|#if defined(IP_ORIGDSTADDR)
  |  |  113|    476|  define_const(IP_ORIGDSTADDR);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  114|    476|#endif
  |  |  115|    476|#if defined(IP_PASSSEC)
  |  |  116|    476|  define_const(IP_PASSSEC);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  117|    476|#endif
  |  |  118|    476|#if defined(IP_PKTINFO)
  |  |  119|    476|  define_const(IP_PKTINFO);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|    476|#endif
  |  |  121|    476|#if defined(IP_PKTOPTIONS)
  |  |  122|    476|  define_const(IP_PKTOPTIONS);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  123|    476|#endif
  |  |  124|    476|#if defined(IP_PMTUDISC_DO)
  |  |  125|    476|  define_const(IP_PMTUDISC_DO);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  126|    476|#endif
  |  |  127|    476|#if defined(IP_PMTUDISC_DONT)
  |  |  128|    476|  define_const(IP_PMTUDISC_DONT);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|    476|#endif
  |  |  130|    476|#if defined(IP_PMTUDISC_PROBE)
  |  |  131|    476|  define_const(IP_PMTUDISC_PROBE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  132|    476|#endif
  |  |  133|    476|#if defined(IP_PMTUDISC_WANT)
  |  |  134|    476|  define_const(IP_PMTUDISC_WANT);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  135|    476|#endif
  |  |  136|       |#if defined(IP_RECVDSTADDR)
  |  |  137|       |  define_const(IP_RECVDSTADDR);
  |  |  138|       |#endif
  |  |  139|    476|#if defined(IP_RECVERR)
  |  |  140|    476|  define_const(IP_RECVERR);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  141|    476|#endif
  |  |  142|    476|#if defined(IP_RECVOPTS)
  |  |  143|    476|  define_const(IP_RECVOPTS);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  144|    476|#endif
  |  |  145|    476|#if defined(IP_RECVORIGDSTADDR)
  |  |  146|    476|  define_const(IP_RECVORIGDSTADDR);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  147|    476|#endif
  |  |  148|    476|#if defined(IP_RECVRETOPTS)
  |  |  149|    476|  define_const(IP_RECVRETOPTS);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  150|    476|#endif
  |  |  151|    476|#if defined(IP_RECVTOS)
  |  |  152|    476|  define_const(IP_RECVTOS);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  153|    476|#endif
  |  |  154|    476|#if defined(IP_RECVTTL)
  |  |  155|    476|  define_const(IP_RECVTTL);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  156|    476|#endif
  |  |  157|    476|#if defined(IP_RETOPTS)
  |  |  158|    476|  define_const(IP_RETOPTS);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  159|    476|#endif
  |  |  160|    476|#if defined(IP_ROUTER_ALERT)
  |  |  161|    476|  define_const(IP_ROUTER_ALERT);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  162|    476|#endif
  |  |  163|    476|#if defined(IP_TOS)
  |  |  164|    476|  define_const(IP_TOS);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  165|    476|#endif
  |  |  166|    476|#if defined(IP_TRANSPARENT)
  |  |  167|    476|  define_const(IP_TRANSPARENT);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  168|    476|#endif
  |  |  169|    476|#if defined(IP_TTL)
  |  |  170|    476|  define_const(IP_TTL);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  171|    476|#endif
  |  |  172|    476|#if defined(IP_UNBLOCK_SOURCE)
  |  |  173|    476|  define_const(IP_UNBLOCK_SOURCE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  174|    476|#endif
  |  |  175|    476|#if defined(IP_XFRM_POLICY)
  |  |  176|    476|  define_const(IP_XFRM_POLICY);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  177|    476|#endif
  |  |  178|    476|#if defined(IPV6_JOIN_GROUP)
  |  |  179|    476|  define_const(IPV6_JOIN_GROUP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  180|    476|#endif
  |  |  181|    476|#if defined(IPV6_LEAVE_GROUP)
  |  |  182|    476|  define_const(IPV6_LEAVE_GROUP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  183|    476|#endif
  |  |  184|    476|#if defined(IPV6_MULTICAST_HOPS)
  |  |  185|    476|  define_const(IPV6_MULTICAST_HOPS);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  186|    476|#endif
  |  |  187|    476|#if defined(IPV6_MULTICAST_IF)
  |  |  188|    476|  define_const(IPV6_MULTICAST_IF);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  189|    476|#endif
  |  |  190|    476|#if defined(IPV6_MULTICAST_LOOP)
  |  |  191|    476|  define_const(IPV6_MULTICAST_LOOP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  192|    476|#endif
  |  |  193|    476|#if defined(IPV6_UNICAST_HOPS)
  |  |  194|    476|  define_const(IPV6_UNICAST_HOPS);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  195|    476|#endif
  |  |  196|    476|#if defined(IPV6_V6ONLY)
  |  |  197|    476|  define_const(IPV6_V6ONLY);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  198|    476|#endif
  |  |  199|    476|#if defined(IPPROTO_AH) || defined(_WINSOCKAPI_)
  |  |  200|    476|  define_const(IPPROTO_AH);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  201|    476|#endif
  |  |  202|    476|#if defined(IPPROTO_DSTOPTS) || defined(_WINSOCKAPI_)
  |  |  203|    476|  define_const(IPPROTO_DSTOPTS);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  204|    476|#endif
  |  |  205|    476|#if defined(IPPROTO_ESP) || defined(_WINSOCKAPI_)
  |  |  206|    476|  define_const(IPPROTO_ESP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  207|    476|#endif
  |  |  208|    476|#if defined(IPPROTO_FRAGMENT) || defined(_WINSOCKAPI_)
  |  |  209|    476|  define_const(IPPROTO_FRAGMENT);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  210|    476|#endif
  |  |  211|    476|#if defined(IPPROTO_ICMP) || defined(_WINSOCKAPI_)
  |  |  212|    476|  define_const(IPPROTO_ICMP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|    476|#endif
  |  |  214|    476|#if defined(IPPROTO_ICMPV6) || defined(_WINSOCKAPI_)
  |  |  215|    476|  define_const(IPPROTO_ICMPV6);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|    476|#endif
  |  |  217|    476|#if defined(IPPROTO_IP) || defined(_WINSOCKAPI_)
  |  |  218|    476|  define_const(IPPROTO_IP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|    476|#endif
  |  |  220|    476|#if defined(IPPROTO_IPV6) || defined(_WINSOCKAPI_)
  |  |  221|    476|  define_const(IPPROTO_IPV6);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|    476|#endif
  |  |  223|    476|#if defined(IPPROTO_NONE) || defined(_WINSOCKAPI_)
  |  |  224|    476|  define_const(IPPROTO_NONE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|    476|#endif
  |  |  226|    476|#if defined(IPPROTO_RAW) || defined(_WINSOCKAPI_)
  |  |  227|    476|  define_const(IPPROTO_RAW);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  228|    476|#endif
  |  |  229|    476|#if defined(IPPROTO_ROUTING) || defined(_WINSOCKAPI_)
  |  |  230|    476|  define_const(IPPROTO_ROUTING);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  231|    476|#endif
  |  |  232|    476|#if defined(IPPROTO_TCP) || defined(_WINSOCKAPI_)
  |  |  233|    476|  define_const(IPPROTO_TCP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  234|    476|#endif
  |  |  235|    476|#if defined(IPPROTO_UDP) || defined(_WINSOCKAPI_)
  |  |  236|    476|  define_const(IPPROTO_UDP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  237|    476|#endif
  |  |  238|    476|#if defined(MCAST_BLOCK_SOURCE)
  |  |  239|    476|  define_const(MCAST_BLOCK_SOURCE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  240|    476|#endif
  |  |  241|    476|#if defined(MCAST_JOIN_GROUP)
  |  |  242|    476|  define_const(MCAST_JOIN_GROUP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  243|    476|#endif
  |  |  244|    476|#if defined(MCAST_JOIN_SOURCE_GROUP)
  |  |  245|    476|  define_const(MCAST_JOIN_SOURCE_GROUP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  246|    476|#endif
  |  |  247|    476|#if defined(MCAST_LEAVE_GROUP)
  |  |  248|    476|  define_const(MCAST_LEAVE_GROUP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  249|    476|#endif
  |  |  250|    476|#if defined(MCAST_LEAVE_SOURCE_GROUP)
  |  |  251|    476|  define_const(MCAST_LEAVE_SOURCE_GROUP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  252|    476|#endif
  |  |  253|    476|#if defined(MCAST_MSFILTER)
  |  |  254|    476|  define_const(MCAST_MSFILTER);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  255|    476|#endif
  |  |  256|    476|#if defined(MCAST_UNBLOCK_SOURCE)
  |  |  257|    476|  define_const(MCAST_UNBLOCK_SOURCE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  258|    476|#endif
  |  |  259|       |#if defined(MSG_BCAST)
  |  |  260|       |  define_const(MSG_BCAST);
  |  |  261|       |#endif
  |  |  262|    476|#if defined(MSG_CTRUNC)
  |  |  263|    476|  define_const(MSG_CTRUNC);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  264|    476|#endif
  |  |  265|    476|#if defined(MSG_DONTROUTE)
  |  |  266|    476|  define_const(MSG_DONTROUTE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  267|    476|#endif
  |  |  268|    476|#if defined(MSG_DONTWAIT)
  |  |  269|    476|  define_const(MSG_DONTWAIT);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  270|    476|#endif
  |  |  271|    476|#if defined(MSG_EOR)
  |  |  272|    476|  define_const(MSG_EOR);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  273|    476|#endif
  |  |  274|       |#if defined(MSG_MCAST)
  |  |  275|       |  define_const(MSG_MCAST);
  |  |  276|       |#endif
  |  |  277|    476|#if defined(MSG_NOSIGNAL)
  |  |  278|    476|  define_const(MSG_NOSIGNAL);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  279|    476|#endif
  |  |  280|    476|#if defined(MSG_OOB)
  |  |  281|    476|  define_const(MSG_OOB);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  282|    476|#endif
  |  |  283|    476|#if defined(MSG_PEEK)
  |  |  284|    476|  define_const(MSG_PEEK);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  285|    476|#endif
  |  |  286|    476|#if defined(MSG_TRUNC)
  |  |  287|    476|  define_const(MSG_TRUNC);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  288|    476|#endif
  |  |  289|    476|#if defined(MSG_WAITALL)
  |  |  290|    476|  define_const(MSG_WAITALL);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  291|    476|#endif
  |  |  292|    476|#if defined(NI_DGRAM)
  |  |  293|    476|  define_const(NI_DGRAM);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  294|    476|#endif
  |  |  295|    476|#if defined(NI_MAXHOST)
  |  |  296|    476|  define_const(NI_MAXHOST);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  297|    476|#endif
  |  |  298|    476|#if defined(NI_MAXSERV)
  |  |  299|    476|  define_const(NI_MAXSERV);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  300|    476|#endif
  |  |  301|    476|#if defined(NI_NAMEREQD)
  |  |  302|    476|  define_const(NI_NAMEREQD);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|    476|#endif
  |  |  304|    476|#if defined(NI_NOFQDN)
  |  |  305|    476|  define_const(NI_NOFQDN);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  306|    476|#endif
  |  |  307|    476|#if defined(NI_NUMERICHOST)
  |  |  308|    476|  define_const(NI_NUMERICHOST);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  309|    476|#endif
  |  |  310|    476|#if defined(NI_NUMERICSERV)
  |  |  311|    476|  define_const(NI_NUMERICSERV);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  312|    476|#endif
  |  |  313|    476|#if defined(SHUT_RD)
  |  |  314|    476|  define_const(SHUT_RD);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  315|    476|#endif
  |  |  316|    476|#if defined(SHUT_WR)
  |  |  317|    476|  define_const(SHUT_WR);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  318|    476|#endif
  |  |  319|    476|#if defined(SHUT_RDWR)
  |  |  320|    476|  define_const(SHUT_RDWR);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  321|    476|#endif
  |  |  322|       |#if defined(SO_BINDANY)
  |  |  323|       |  define_const(SO_BINDANY);
  |  |  324|       |#endif
  |  |  325|    476|#if defined(SO_BROADCAST)
  |  |  326|    476|  define_const(SO_BROADCAST);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  327|    476|#endif
  |  |  328|    476|#if defined(SO_DEBUG)
  |  |  329|    476|  define_const(SO_DEBUG);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  330|    476|#endif
  |  |  331|    476|#if defined(SO_DONTROUTE)
  |  |  332|    476|  define_const(SO_DONTROUTE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  333|    476|#endif
  |  |  334|    476|#if defined(SO_ERROR)
  |  |  335|    476|  define_const(SO_ERROR);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  336|    476|#endif
  |  |  337|    476|#if defined(SO_KEEPALIVE)
  |  |  338|    476|  define_const(SO_KEEPALIVE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  339|    476|#endif
  |  |  340|    476|#if defined(SO_LINGER)
  |  |  341|    476|  define_const(SO_LINGER);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  342|    476|#endif
  |  |  343|       |#if defined(SO_NOSIGPIPE)
  |  |  344|       |  define_const(SO_NOSIGPIPE);
  |  |  345|       |#endif
  |  |  346|    476|#if defined(SO_OOBINLINE)
  |  |  347|    476|  define_const(SO_OOBINLINE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  348|    476|#endif
  |  |  349|    476|#if defined(SO_PEERCRED)
  |  |  350|    476|  define_const(SO_PEERCRED);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  351|    476|#endif
  |  |  352|    476|#if defined(SO_RCVBUF)
  |  |  353|    476|  define_const(SO_RCVBUF);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  354|    476|#endif
  |  |  355|    476|#if defined(SO_RCVLOWAT)
  |  |  356|    476|  define_const(SO_RCVLOWAT);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|    476|#endif
  |  |  358|    476|#if defined(SO_RCVTIMEO)
  |  |  359|    476|  define_const(SO_RCVTIMEO);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  360|    476|#endif
  |  |  361|    476|#if defined(SO_REUSEADDR)
  |  |  362|    476|  define_const(SO_REUSEADDR);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  363|    476|#endif
  |  |  364|    476|#if defined(SO_REUSEPORT)
  |  |  365|    476|  define_const(SO_REUSEPORT);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  366|    476|#endif
  |  |  367|       |#if defined(SO_RTABLE)
  |  |  368|       |  define_const(SO_RTABLE);
  |  |  369|       |#endif
  |  |  370|    476|#if defined(SO_SNDBUF)
  |  |  371|    476|  define_const(SO_SNDBUF);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  372|    476|#endif
  |  |  373|    476|#if defined(SO_SNDLOWAT)
  |  |  374|    476|  define_const(SO_SNDLOWAT);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  375|    476|#endif
  |  |  376|    476|#if defined(SO_SNDTIMEO)
  |  |  377|    476|  define_const(SO_SNDTIMEO);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  378|    476|#endif
  |  |  379|       |#if defined(SO_SPLICE)
  |  |  380|       |  define_const(SO_SPLICE);
  |  |  381|       |#endif
  |  |  382|    476|#if defined(SO_TIMESTAMP)
  |  |  383|    476|  define_const(SO_TIMESTAMP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  384|    476|#endif
  |  |  385|    476|#if defined(SO_TYPE)
  |  |  386|    476|  define_const(SO_TYPE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  387|    476|#endif
  |  |  388|    476|#if defined(SO_INCOMING_CPU)
  |  |  389|    476|  define_const(SO_INCOMING_CPU);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  390|    476|#endif
  |  |  391|    476|#if defined(SO_INCOMING_NAPI_ID)
  |  |  392|    476|  define_const(SO_INCOMING_NAPI_ID);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  393|    476|#endif
  |  |  394|       |#if defined(SO_RTABLE)
  |  |  395|       |  define_const(SO_RTABLE);
  |  |  396|       |#endif
  |  |  397|       |#if defined(SO_SETFIB)
  |  |  398|       |  define_const(SO_SETFIB);
  |  |  399|       |#endif
  |  |  400|       |#if defined(SO_USER_COOKIE)
  |  |  401|       |  define_const(SO_USER_COOKIE);
  |  |  402|       |#endif
  |  |  403|    476|#if defined(SOCK_DGRAM)
  |  |  404|    476|  define_const(SOCK_DGRAM);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  405|    476|#endif
  |  |  406|    476|#if defined(SOCK_RAW)
  |  |  407|    476|  define_const(SOCK_RAW);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  408|    476|#endif
  |  |  409|    476|#if defined(SOCK_SEQPACKET)
  |  |  410|    476|  define_const(SOCK_SEQPACKET);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  411|    476|#endif
  |  |  412|    476|#if defined(SOCK_STREAM)
  |  |  413|    476|  define_const(SOCK_STREAM);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  414|    476|#endif
  |  |  415|    476|#if defined(SOL_SOCKET)
  |  |  416|    476|  define_const(SOL_SOCKET);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|    476|#endif
  |  |  418|    476|#if defined(SOL_IP)
  |  |  419|    476|  define_const(SOL_IP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  420|    476|#endif
  |  |  421|    476|#if defined(SOL_TCP)
  |  |  422|    476|  define_const(SOL_TCP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  423|    476|#endif
  |  |  424|       |#if defined(TCP_CONGCTL)
  |  |  425|       |  define_const(TCP_CONGCTL);
  |  |  426|       |#endif
  |  |  427|    476|#if defined(TCP_CONGESTION)
  |  |  428|    476|  define_const(TCP_CONGESTION);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  429|    476|#endif
  |  |  430|    476|#if defined(TCP_CORK)
  |  |  431|    476|  define_const(TCP_CORK);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  432|    476|#endif
  |  |  433|    476|#if defined(TCP_DEFER_ACCEPT)
  |  |  434|    476|  define_const(TCP_DEFER_ACCEPT);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  435|    476|#endif
  |  |  436|    476|#if defined(TCP_INFO)
  |  |  437|    476|  define_const(TCP_INFO);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  438|    476|#endif
  |  |  439|    476|#if defined(TCP_KEEPCNT)
  |  |  440|    476|  define_const(TCP_KEEPCNT);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  441|    476|#endif
  |  |  442|    476|#if defined(TCP_KEEPIDLE)
  |  |  443|    476|  define_const(TCP_KEEPIDLE);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  444|    476|#endif
  |  |  445|       |#if defined(TCP_KEEPINIT)
  |  |  446|       |  define_const(TCP_KEEPINIT);
  |  |  447|       |#endif
  |  |  448|    476|#if defined(TCP_KEEPINTVL)
  |  |  449|    476|  define_const(TCP_KEEPINTVL);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  450|    476|#endif
  |  |  451|    476|#if defined(TCP_LINGER2)
  |  |  452|    476|  define_const(TCP_LINGER2);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  453|    476|#endif
  |  |  454|    476|#if defined(TCP_MAXSEG)
  |  |  455|    476|  define_const(TCP_MAXSEG);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  456|    476|#endif
  |  |  457|    476|#if defined(TCP_MD5SIG)
  |  |  458|    476|  define_const(TCP_MD5SIG);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  459|    476|#endif
  |  |  460|    476|#if defined(TCP_NODELAY)
  |  |  461|    476|  define_const(TCP_NODELAY);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  462|    476|#endif
  |  |  463|    476|#if defined(TCP_QUICKACK)
  |  |  464|    476|  define_const(TCP_QUICKACK);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  465|    476|#endif
  |  |  466|       |#if defined(TCP_SACK_ENABLE)
  |  |  467|       |  define_const(TCP_SACK_ENABLE);
  |  |  468|       |#endif
  |  |  469|    476|#if defined(TCP_SYNCNT)
  |  |  470|    476|  define_const(TCP_SYNCNT);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  471|    476|#endif
  |  |  472|    476|#if defined(TCP_WINDOW_CLAMP)
  |  |  473|    476|  define_const(TCP_WINDOW_CLAMP);
  |  |  ------------------
  |  |  |  | 1119|    476|  do {                                                                \
  |  |  |  | 1120|    476|    mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM));  \
  |  |  |  | 1121|    476|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1121:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  474|    476|#endif
  |  |  475|       |#if defined(TCP_KEEPALIVE)
  |  |  476|       |  define_const(TCP_KEEPALIVE);
  |  |  477|       |#endif
  |  |  478|       |#if defined(TCP_CONNECTION_INFO)
  |  |  479|       |  define_const(TCP_CONNECTION_INFO);
  |  |  480|       |#endif
  ------------------
 1124|       |
 1125|    476|  mrb_include_module(mrb, sock, constants);
 1126|    476|}
mrb_mruby_socket_gem_final:
 1130|    476|{
 1131|       |#ifdef _WIN32
 1132|       |  WSACleanup();
 1133|       |#endif
 1134|    476|}

mrb_mruby_sprintf_gem_init:
 1114|    476|{
 1115|    476|  struct RClass *krn = mrb->kernel_module;
 1116|    476|  mrb_define_module_function(mrb, krn, "sprintf", mrb_f_sprintf, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 1117|    476|  mrb_define_module_function(mrb, krn, "format",  mrb_f_sprintf, MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 1118|    476|}
mrb_mruby_sprintf_gem_final:
 1122|    476|{
 1123|    476|}

mrb_mruby_string_ext_gem_init:
 1322|    476|{
 1323|    476|  struct RClass * s = mrb->string_class;
 1324|       |
 1325|    476|  mrb_define_method(mrb, s, "dump",            mrb_str_dump,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1326|    476|  mrb_define_method(mrb, s, "swapcase!",       str_swapcase_bang,   MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1327|    476|  mrb_define_method(mrb, s, "swapcase",        str_swapcase,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1328|    476|  mrb_define_method(mrb, s, "concat",          str_concat_m,        MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1329|    476|  mrb_define_method(mrb, s, "<<",              str_concat_m,        MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1330|    476|  mrb_define_method(mrb, s, "count",           str_count,           MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1331|    476|  mrb_define_method(mrb, s, "tr",              str_tr_m,            MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1332|    476|  mrb_define_method(mrb, s, "tr!",             str_tr_bang,         MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1333|    476|  mrb_define_method(mrb, s, "tr_s",            str_tr_s,            MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1334|    476|  mrb_define_method(mrb, s, "tr_s!",           str_tr_s_bang,       MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1335|    476|  mrb_define_method(mrb, s, "squeeze",         str_squeeze_m,       MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1336|    476|  mrb_define_method(mrb, s, "squeeze!",        str_squeeze_bang,    MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1337|    476|  mrb_define_method(mrb, s, "delete",          str_delete_m,        MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1338|    476|  mrb_define_method(mrb, s, "delete!",         str_delete_bang,     MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1339|    476|  mrb_define_method(mrb, s, "start_with?",     str_start_with,      MRB_ARGS_REST());
  ------------------
  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  ------------------
 1340|    476|  mrb_define_method(mrb, s, "end_with?",       str_end_with,        MRB_ARGS_REST());
  ------------------
  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  ------------------
 1341|    476|  mrb_define_method(mrb, s, "hex",             str_hex,             MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1342|    476|  mrb_define_method(mrb, s, "oct",             str_oct,             MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1343|    476|  mrb_define_method(mrb, s, "chr",             str_chr,             MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1344|    476|  mrb_define_method(mrb, s, "succ",            str_succ,            MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1345|    476|  mrb_define_method(mrb, s, "succ!",           str_succ_bang,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1346|    476|  mrb_define_method(mrb, s, "next",            str_succ,            MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1347|    476|  mrb_define_method(mrb, s, "next!",           str_succ_bang,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1348|    476|  mrb_define_method(mrb, s, "ord",             str_ord,             MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1349|    476|  mrb_define_method(mrb, s, "delete_prefix!",  str_del_prefix_bang, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1350|    476|  mrb_define_method(mrb, s, "delete_prefix",   str_del_prefix,      MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1351|    476|  mrb_define_method(mrb, s, "delete_suffix!",  str_del_suffix_bang, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1352|    476|  mrb_define_method(mrb, s, "delete_suffix",   str_del_suffix,      MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1353|    476|  mrb_define_method(mrb, s, "casecmp",         str_casecmp,         MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1354|    476|  mrb_define_method(mrb, s, "casecmp?",        str_casecmp_p,       MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1355|    476|  mrb_define_method(mrb, s, "+@",              str_uplus,           MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1356|    476|  mrb_define_method(mrb, s, "-@",              str_uminus,          MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1357|       |
 1358|    476|  mrb_define_method(mrb, s, "__lines",         str_lines,           MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1359|    476|  mrb_define_method(mrb, s, "__codepoints",    str_codepoints,      MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1360|       |
 1361|    476|  mrb_define_method(mrb, mrb->integer_class, "chr", int_chr, MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1362|    476|}
mrb_mruby_string_ext_gem_final:
 1366|    476|{
 1367|    476|}

mrb_mruby_struct_gem_init:
  697|    476|{
  698|    476|  struct RClass *st;
  699|    476|  st = mrb_define_class(mrb, "Struct",  mrb->object_class);
  700|    476|  MRB_SET_INSTANCE_TT(st, MRB_TT_UNDEF);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  701|       |
  702|    476|  mrb_define_class_method(mrb, st, "new",             mrb_struct_s_def,       MRB_ARGS_ANY());  /* 15.2.18.3.1  */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  703|       |
  704|    476|  mrb_define_method(mrb, st,       "==",              mrb_struct_equal,       MRB_ARGS_REQ(1)); /* 15.2.18.4.1  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  705|    476|  mrb_define_method(mrb, st,       "[]",              mrb_struct_aref,        MRB_ARGS_REQ(1)); /* 15.2.18.4.2  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  706|    476|  mrb_define_method(mrb, st,       "[]=",             mrb_struct_aset,        MRB_ARGS_REQ(2)); /* 15.2.18.4.3  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  707|    476|  mrb_define_method(mrb, st,       "members",         mrb_struct_members,     MRB_ARGS_NONE()); /* 15.2.18.4.6  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  708|    476|  mrb_define_method(mrb, st,       "initialize",      mrb_struct_initialize,  MRB_ARGS_ANY());  /* 15.2.18.4.8  */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  709|    476|  mrb_define_method(mrb, st,       "initialize_copy", mrb_struct_init_copy,   MRB_ARGS_REQ(1)); /* 15.2.18.4.9  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  710|    476|  mrb_define_method(mrb, st,       "eql?",            mrb_struct_eql,         MRB_ARGS_REQ(1)); /* 15.2.18.4.12(x)  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  711|    476|  mrb_define_method(mrb, st,       "to_s",            mrb_struct_to_s,        MRB_ARGS_NONE()); /* 15.2.18.4.11(x) */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  712|    476|  mrb_define_method(mrb, st,       "inspect",         mrb_struct_to_s,        MRB_ARGS_NONE()); /* 15.2.18.4.10(x) */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  713|       |
  714|    476|  mrb_define_method(mrb, st,       "size",            mrb_struct_len,         MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  715|    476|  mrb_define_method(mrb, st,       "length",          mrb_struct_len,         MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  716|    476|  mrb_define_method(mrb, st,       "to_a",            mrb_struct_to_a,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  717|    476|  mrb_define_method(mrb, st,       "values",          mrb_struct_to_a,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  718|    476|  mrb_define_method(mrb, st,       "to_h",            mrb_struct_to_h,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  719|    476|  mrb_define_method(mrb, st,       "values_at",       mrb_struct_values_at,   MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  720|    476|}
mrb_mruby_struct_gem_final:
  724|    476|{
  725|    476|}

mrb_mruby_symbol_ext_gem_init:
   64|    476|{
   65|    476|  struct RClass *s = mrb->symbol_class;
   66|       |#ifdef MRB_USE_ALL_SYMBOLS
   67|       |  mrb_define_class_method(mrb, s, "all_symbols", mrb_sym_all_symbols, MRB_ARGS_NONE());
   68|       |#endif
   69|    476|  mrb_define_method(mrb, s, "length", mrb_sym_length, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
   70|    476|  mrb_define_method(mrb, s, "size", mrb_sym_length, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
   71|    476|}
mrb_mruby_symbol_ext_gem_final:
   75|    476|{
   76|    476|}

mrb_mruby_time_gem_init:
 1098|    476|{
 1099|    476|  struct RClass *tc;
 1100|       |  /* ISO 15.2.19.2 */
 1101|    476|  tc = mrb_define_class(mrb, "Time", mrb->object_class);
 1102|    476|  MRB_SET_INSTANCE_TT(tc, MRB_TT_CDATA);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
 1103|    476|  mrb_include_module(mrb, tc, mrb_module_get(mrb, "Comparable"));
 1104|    476|  mrb_define_class_method(mrb, tc, "at", time_at_m, MRB_ARGS_ARG(1, 1));    /* 15.2.19.6.1 */
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1105|    476|  mrb_define_class_method(mrb, tc, "gm", time_gm, MRB_ARGS_ARG(1,6));       /* 15.2.19.6.2 */
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1106|    476|  mrb_define_class_method(mrb, tc, "local", time_local, MRB_ARGS_ARG(1,6)); /* 15.2.19.6.3 */
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1107|    476|  mrb_define_class_method(mrb, tc, "mktime", time_local, MRB_ARGS_ARG(1,6));/* 15.2.19.6.4 */
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1108|    476|  mrb_define_class_method(mrb, tc, "now", time_now, MRB_ARGS_NONE());       /* 15.2.19.6.5 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1109|    476|  mrb_define_class_method(mrb, tc, "utc", time_gm, MRB_ARGS_ARG(1,6));      /* 15.2.19.6.6 */
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1110|       |
 1111|    476|  mrb_define_method(mrb, tc, "hash"   , time_hash   , MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1112|    476|  mrb_define_method(mrb, tc, "eql?"   , time_eq     , MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1113|    476|  mrb_define_method(mrb, tc, "=="     , time_eq     , MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1114|    476|  mrb_define_method(mrb, tc, "<=>"    , time_cmp    , MRB_ARGS_REQ(1)); /* 15.2.19.7.1 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1115|    476|  mrb_define_method(mrb, tc, "+"      , time_plus   , MRB_ARGS_REQ(1)); /* 15.2.19.7.2 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1116|    476|  mrb_define_method(mrb, tc, "-"      , time_minus  , MRB_ARGS_REQ(1)); /* 15.2.19.7.3 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1117|    476|  mrb_define_method(mrb, tc, "to_s"   , time_to_s   , MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1118|    476|  mrb_define_method(mrb, tc, "inspect", time_to_s   , MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1119|    476|  mrb_define_method(mrb, tc, "asctime", time_asctime, MRB_ARGS_NONE()); /* 15.2.19.7.4 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1120|    476|  mrb_define_method(mrb, tc, "ctime"  , time_asctime, MRB_ARGS_NONE()); /* 15.2.19.7.5 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1121|    476|  mrb_define_method(mrb, tc, "day"    , time_day    , MRB_ARGS_NONE()); /* 15.2.19.7.6 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1122|    476|  mrb_define_method(mrb, tc, "dst?"   , time_dst_p  , MRB_ARGS_NONE()); /* 15.2.19.7.7 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1123|    476|  mrb_define_method(mrb, tc, "getgm"  , time_getutc , MRB_ARGS_NONE()); /* 15.2.19.7.8 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1124|    476|  mrb_define_method(mrb, tc, "getlocal",time_getlocal,MRB_ARGS_NONE()); /* 15.2.19.7.9 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1125|    476|  mrb_define_method(mrb, tc, "getutc" , time_getutc , MRB_ARGS_NONE()); /* 15.2.19.7.10 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1126|    476|  mrb_define_method(mrb, tc, "gmt?"   , time_utc_p  , MRB_ARGS_NONE()); /* 15.2.19.7.11 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1127|    476|  mrb_define_method(mrb, tc, "gmtime" , time_utc    , MRB_ARGS_NONE()); /* 15.2.19.7.13 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1128|    476|  mrb_define_method(mrb, tc, "hour"   , time_hour, MRB_ARGS_NONE());    /* 15.2.19.7.15 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1129|    476|  mrb_define_method(mrb, tc, "localtime", time_localtime, MRB_ARGS_NONE()); /* 15.2.19.7.18 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1130|    476|  mrb_define_method(mrb, tc, "mday"   , time_mday, MRB_ARGS_NONE());    /* 15.2.19.7.19 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1131|    476|  mrb_define_method(mrb, tc, "min"    , time_min, MRB_ARGS_NONE());     /* 15.2.19.7.20 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1132|       |
 1133|    476|  mrb_define_method(mrb, tc, "mon"  , time_mon, MRB_ARGS_NONE());       /* 15.2.19.7.21 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1134|    476|  mrb_define_method(mrb, tc, "month", time_mon, MRB_ARGS_NONE());       /* 15.2.19.7.22 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1135|       |
 1136|    476|  mrb_define_method(mrb, tc, "sec" , time_sec, MRB_ARGS_NONE());        /* 15.2.19.7.23 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1137|    476|  mrb_define_method(mrb, tc, "to_i", time_to_i, MRB_ARGS_NONE());       /* 15.2.19.7.25 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1138|    476|#ifndef MRB_NO_FLOAT
 1139|    476|  mrb_define_method(mrb, tc, "to_f", time_to_f, MRB_ARGS_NONE());       /* 15.2.19.7.24 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1140|    476|#endif
 1141|    476|  mrb_define_method(mrb, tc, "usec", time_usec, MRB_ARGS_NONE());       /* 15.2.19.7.26 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1142|    476|  mrb_define_method(mrb, tc, "utc" , time_utc, MRB_ARGS_NONE());        /* 15.2.19.7.27 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1143|    476|  mrb_define_method(mrb, tc, "utc?", time_utc_p,MRB_ARGS_NONE());       /* 15.2.19.7.28 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1144|    476|  mrb_define_method(mrb, tc, "wday", time_wday, MRB_ARGS_NONE());       /* 15.2.19.7.30 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1145|    476|  mrb_define_method(mrb, tc, "yday", time_yday, MRB_ARGS_NONE());       /* 15.2.19.7.31 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1146|    476|  mrb_define_method(mrb, tc, "year", time_year, MRB_ARGS_NONE());       /* 15.2.19.7.32 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1147|    476|  mrb_define_method(mrb, tc, "zone", time_zone, MRB_ARGS_NONE());       /* 15.2.19.7.33 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1148|       |
 1149|    476|  mrb_define_method(mrb, tc, "initialize", time_init, MRB_ARGS_REQ(1)); /* 15.2.19.7.16 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1150|    476|  mrb_define_method(mrb, tc, "initialize_copy", time_init_copy, MRB_ARGS_REQ(1)); /* 15.2.19.7.17 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1151|       |
 1152|    476|  mrb_define_method(mrb, tc, "sunday?", time_sunday, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1153|    476|  mrb_define_method(mrb, tc, "monday?", time_monday, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1154|    476|  mrb_define_method(mrb, tc, "tuesday?", time_tuesday, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1155|    476|  mrb_define_method(mrb, tc, "wednesday?", time_wednesday, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1156|    476|  mrb_define_method(mrb, tc, "thursday?", time_thursday, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1157|    476|  mrb_define_method(mrb, tc, "friday?", time_friday, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1158|    476|  mrb_define_method(mrb, tc, "saturday?", time_saturday, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1159|       |
 1160|       |  /*
 1161|       |    methods not available:
 1162|       |      gmt_offset(15.2.19.7.12)
 1163|       |      gmtoff(15.2.19.7.14)
 1164|       |      utc_offset(15.2.19.7.29)
 1165|       |  */
 1166|    476|}
mrb_mruby_time_gem_final:
 1170|    476|{
 1171|    476|}
time.c:time_wrap:
  353|  4.99k|{
  354|  4.99k|  return mrb_obj_value(Data_Wrap_Struct(mrb, tc, &time_type, tm));
  ------------------
  |  |   40|  4.99k|  mrb_data_object_alloc(mrb,klass,ptr,type)
  ------------------
  355|  4.99k|}
time.c:time_alloc_time:
  360|  4.99k|{
  361|  4.99k|  struct mrb_time *tm;
  362|       |
  363|  4.99k|  tm = (struct mrb_time*)mrb_malloc(mrb, sizeof(struct mrb_time));
  364|  4.99k|  tm->sec  = sec;
  365|  4.99k|  tm->usec = usec;
  366|  4.99k|  if (!MRB_TIME_T_UINT && tm->usec < 0) {
  ------------------
  |  |  202|  9.98k|#define MRB_TIME_T_UINT (~(time_t)0 > 0)
  ------------------
  |  Branch (366:7): [Folded - Ignored]
  |  Branch (366:27): [True: 0, False: 4.99k]
  ------------------
  367|      0|    long sec2 = (long)NDIV(tm->usec,1000000); /* negative div */
  ------------------
  |  |   26|      0|#define NDIV(x,y) (-(-((x)+1)/(y))-1)
  ------------------
  368|      0|    tm->usec -= sec2 * 1000000;
  369|      0|    tm->sec += sec2;
  370|      0|  }
  371|  4.99k|  else if (tm->usec >= 1000000) {
  ------------------
  |  Branch (371:12): [True: 0, False: 4.99k]
  ------------------
  372|      0|    long sec2 = (long)(tm->usec / 1000000);
  373|      0|    tm->usec -= sec2 * 1000000;
  374|      0|    tm->sec += sec2;
  375|      0|  }
  376|  4.99k|  tm->timezone = timezone;
  377|  4.99k|  time_update_datetime(mrb, tm, TRUE);
  ------------------
  |  |   54|  4.99k|#  define TRUE 1
  ------------------
  378|       |
  379|  4.99k|  return tm;
  380|  4.99k|}
time.c:time_update_datetime:
  328|  4.99k|{
  329|  4.99k|  struct tm *aid;
  330|  4.99k|  time_t t = self->sec;
  331|       |
  332|  4.99k|  if (self->timezone == MRB_TIMEZONE_UTC) {
  ------------------
  |  Branch (332:7): [True: 2.29k, False: 2.69k]
  ------------------
  333|  2.29k|    aid = gmtime_r(&t, &self->datetime);
  334|  2.29k|  }
  335|  2.69k|  else {
  336|  2.69k|    aid = localtime_r(&t, &self->datetime);
  337|  2.69k|  }
  338|  4.99k|  if (!aid) {
  ------------------
  |  Branch (338:7): [True: 0, False: 4.99k]
  ------------------
  339|      0|    if (dealloc) mrb_free(mrb, self);
  ------------------
  |  Branch (339:9): [True: 0, False: 0]
  ------------------
  340|      0|    mrb_raisef(mrb, E_ARGUMENT_ERROR, "%v out of Time range", time_value_from_time_t(mrb, t));
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  341|       |    /* not reached */
  342|      0|    return NULL;
  343|      0|  }
  344|       |#ifdef NO_GMTIME_R
  345|       |  self->datetime = *aid; /* copy data */
  346|       |#endif
  347|       |
  348|  4.99k|  return self;
  349|  4.99k|}
time.c:time_at_m:
  476|  2.69k|{
  477|  2.69k|  mrb_value sec;
  478|  2.69k|  mrb_value usec = mrb_fixnum_value(0);
  479|       |
  480|  2.69k|  mrb_get_args(mrb, "o|o", &sec, &usec);
  481|       |
  482|  2.69k|  return time_make(mrb, mrb_class_ptr(self), sec, usec, MRB_TIMEZONE_LOCAL);
  ------------------
  |  |   24|  2.69k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  2.69k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  483|  2.69k|}
time.c:time_make:
  401|  2.69k|{
  402|  2.69k|  return time_wrap(mrb, c, time_alloc(mrb, sec, usec, timezone));
  403|  2.69k|}
time.c:time_alloc:
  384|  2.69k|{
  385|  2.69k|  time_t tsec, tusec;
  386|       |
  387|  2.69k|  tsec = mrb_to_time_t(mrb, sec, &tusec);
  388|  2.69k|  tusec += mrb_to_time_t(mrb, usec, NULL);
  389|       |
  390|  2.69k|  return time_alloc_time(mrb, tsec, tusec, timezone);
  391|  2.69k|}
time.c:mrb_to_time_t:
  225|  5.39k|{
  226|  5.39k|  time_t t;
  227|       |
  228|  5.39k|  switch (mrb_type(obj)) {
  229|      0|#ifndef MRB_NO_FLOAT
  230|      0|    case MRB_TT_FLOAT:
  ------------------
  |  Branch (230:5): [True: 0, False: 5.39k]
  ------------------
  231|      0|      {
  232|      0|        mrb_float f = mrb_float(obj);
  ------------------
  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  233|       |
  234|      0|        mrb_check_num_exact(mrb, f);
  235|      0|        if (f >= ((mrb_float)MRB_TIME_MAX-1.0) || f < ((mrb_float)MRB_TIME_MIN+1.0)) {
  ------------------
  |  |  207|      0|#define MRB_TIME_MAX (time_t)(                                              \
  |  |  208|      0|  MRB_TIME_T_UINT ? (sizeof(time_t) <= 4 ? UINT32_MAX : UINT64_MAX) :       \
  |  |  ------------------
  |  |  |  |  202|      0|#define MRB_TIME_T_UINT (~(time_t)0 > 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (202:25): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (208:22): [Folded - Ignored]
  |  |  ------------------
  |  |  209|      0|                    (sizeof(time_t) <= 4 ? INT32_MAX : INT64_MAX)           \
  |  |  ------------------
  |  |  |  Branch (209:22): [Folded - Ignored]
  |  |  ------------------
  |  |  210|      0|)
  ------------------
                      if (f >= ((mrb_float)MRB_TIME_MAX-1.0) || f < ((mrb_float)MRB_TIME_MIN+1.0)) {
  ------------------
  |  |  203|      0|#define MRB_TIME_MIN (                                                      \
  |  |  204|      0|  MRB_TIME_T_UINT ? 0 :                                                     \
  |  |  ------------------
  |  |  |  |  202|      0|#define MRB_TIME_T_UINT (~(time_t)0 > 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (202:25): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  205|      0|                    (sizeof(time_t) <= 4 ? INT32_MIN : INT64_MIN)           \
  |  |  ------------------
  |  |  |  Branch (205:22): [Folded - Ignored]
  |  |  ------------------
  |  |  206|      0|)
  ------------------
  |  Branch (235:13): [True: 0, False: 0]
  |  Branch (235:51): [True: 0, False: 0]
  ------------------
  236|      0|          goto out_of_range;
  237|      0|        }
  238|       |
  239|      0|        if (usec) {
  ------------------
  |  Branch (239:13): [True: 0, False: 0]
  ------------------
  240|      0|          double tt = floor(f);
  241|      0|          if (!isfinite(tt)) goto out_of_range;
  ------------------
  |  Branch (241:15): [True: 0, False: 0]
  ------------------
  242|      0|          t = (time_t)tt;
  243|      0|          *usec = (time_t)trunc((f - tt) * 1.0e+6);
  244|      0|        }
  245|      0|        else {
  246|      0|          double tt = round(f);
  247|      0|          if (!isfinite(tt)) goto out_of_range;
  ------------------
  |  Branch (247:15): [True: 0, False: 0]
  ------------------
  248|      0|          t = (time_t)tt;
  249|      0|        }
  250|      0|      }
  251|      0|      break;
  252|      0|#endif /* MRB_NO_FLOAT */
  253|       |
  254|      0|#ifdef MRB_USE_BIGINT
  255|      0|    case MRB_TT_BIGINT:
  ------------------
  |  Branch (255:5): [True: 0, False: 5.39k]
  ------------------
  256|      0|      {
  257|      0|        if (sizeof(time_t) > sizeof(mrb_int)) {
  ------------------
  |  Branch (257:13): [Folded - Ignored]
  ------------------
  258|      0|          if (MRB_TIME_T_UINT) {
  ------------------
  |  |  202|      0|#define MRB_TIME_T_UINT (~(time_t)0 > 0)
  |  |  ------------------
  |  |  |  Branch (202:25): [Folded - Ignored]
  |  |  ------------------
  ------------------
  259|      0|            t = (time_t)mrb_bint_as_uint64(mrb, obj);
  260|      0|          }
  261|      0|          else {
  262|      0|            t = (time_t)mrb_bint_as_int64(mrb, obj);
  ------------------
  |  |  226|      0|#define mrb_bint_as_int64(mrb, x) mrb_bint_as_int((mrb), (x))
  ------------------
  263|      0|          }
  264|      0|          if (usec) { *usec = 0; }
  ------------------
  |  Branch (264:15): [True: 0, False: 0]
  ------------------
  265|      0|          break;
  266|      0|        }
  267|      0|        else {
  268|      0|          mrb_int i = mrb_bint_as_int(mrb, obj);
  269|      0|          obj = mrb_int_value(mrb, i);
  270|      0|        }
  271|      0|      }
  272|       |      /* fall through */
  273|      0|#endif  /* MRB_USE_BIGINT */
  274|       |
  275|  5.39k|    case MRB_TT_INTEGER:
  ------------------
  |  Branch (275:5): [True: 5.39k, False: 0]
  ------------------
  276|  5.39k|      {
  277|  5.39k|        mrb_int i = mrb_integer(obj);
  ------------------
  |  |  166|  5.39k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
  278|       |
  279|  5.39k|        if ((MRB_INT_MAX > MRB_TIME_MAX && i > 0 && (time_t)i > MRB_TIME_MAX) ||
  ------------------
  |  |   82|  5.39k|# define MRB_INT_MAX INT64_MAX
  ------------------
                      if ((MRB_INT_MAX > MRB_TIME_MAX && i > 0 && (time_t)i > MRB_TIME_MAX) ||
  ------------------
  |  |  207|  10.7k|#define MRB_TIME_MAX (time_t)(                                              \
  |  |  208|  10.7k|  MRB_TIME_T_UINT ? (sizeof(time_t) <= 4 ? UINT32_MAX : UINT64_MAX) :       \
  |  |  ------------------
  |  |  |  |  202|  5.39k|#define MRB_TIME_T_UINT (~(time_t)0 > 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (202:25): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (208:22): [Folded - Ignored]
  |  |  ------------------
  |  |  209|  10.7k|                    (sizeof(time_t) <= 4 ? INT32_MAX : INT64_MAX)           \
  |  |  ------------------
  |  |  |  Branch (209:22): [Folded - Ignored]
  |  |  ------------------
  |  |  210|  10.7k|)
  ------------------
                      if ((MRB_INT_MAX > MRB_TIME_MAX && i > 0 && (time_t)i > MRB_TIME_MAX) ||
  ------------------
  |  |  207|      0|#define MRB_TIME_MAX (time_t)(                                              \
  |  |  208|      0|  MRB_TIME_T_UINT ? (sizeof(time_t) <= 4 ? UINT32_MAX : UINT64_MAX) :       \
  |  |  ------------------
  |  |  |  |  202|      0|#define MRB_TIME_T_UINT (~(time_t)0 > 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (202:25): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (208:22): [Folded - Ignored]
  |  |  ------------------
  |  |  209|      0|                    (sizeof(time_t) <= 4 ? INT32_MAX : INT64_MAX)           \
  |  |  ------------------
  |  |  |  Branch (209:22): [Folded - Ignored]
  |  |  ------------------
  |  |  210|      0|)
  ------------------
  |  Branch (279:14): [Folded - Ignored]
  |  Branch (279:44): [True: 0, False: 0]
  |  Branch (279:53): [True: 0, False: 0]
  ------------------
  280|  5.39k|            (0 > MRB_TIME_MIN && MRB_TIME_MIN > MRB_INT_MIN && MRB_TIME_MIN > i)) {
  ------------------
  |  |  203|      0|#define MRB_TIME_MIN (                                                      \
  |  |  204|      0|  MRB_TIME_T_UINT ? 0 :                                                     \
  |  |  ------------------
  |  |  |  |  202|      0|#define MRB_TIME_T_UINT (~(time_t)0 > 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (202:25): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  205|      0|                    (sizeof(time_t) <= 4 ? INT32_MIN : INT64_MIN)           \
  |  |  ------------------
  |  |  |  Branch (205:22): [Folded - Ignored]
  |  |  ------------------
  |  |  206|      0|)
  ------------------
                          (0 > MRB_TIME_MIN && MRB_TIME_MIN > MRB_INT_MIN && MRB_TIME_MIN > i)) {
  ------------------
  |  |  203|      0|#define MRB_TIME_MIN (                                                      \
  |  |  204|      0|  MRB_TIME_T_UINT ? 0 :                                                     \
  |  |  ------------------
  |  |  |  |  202|      0|#define MRB_TIME_T_UINT (~(time_t)0 > 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (202:25): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  205|      0|                    (sizeof(time_t) <= 4 ? INT32_MIN : INT64_MIN)           \
  |  |  ------------------
  |  |  |  Branch (205:22): [Folded - Ignored]
  |  |  ------------------
  |  |  206|      0|)
  ------------------
                          (0 > MRB_TIME_MIN && MRB_TIME_MIN > MRB_INT_MIN && MRB_TIME_MIN > i)) {
  ------------------
  |  |   81|      0|# define MRB_INT_MIN INT64_MIN
  ------------------
                          (0 > MRB_TIME_MIN && MRB_TIME_MIN > MRB_INT_MIN && MRB_TIME_MIN > i)) {
  ------------------
  |  |  203|      0|#define MRB_TIME_MIN (                                                      \
  |  |  204|      0|  MRB_TIME_T_UINT ? 0 :                                                     \
  |  |  ------------------
  |  |  |  |  202|      0|#define MRB_TIME_T_UINT (~(time_t)0 > 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (202:25): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  205|      0|                    (sizeof(time_t) <= 4 ? INT32_MIN : INT64_MIN)           \
  |  |  ------------------
  |  |  |  Branch (205:22): [Folded - Ignored]
  |  |  ------------------
  |  |  206|      0|)
  ------------------
  |  Branch (280:14): [Folded - Ignored]
  |  Branch (280:34): [Folded - Ignored]
  |  Branch (280:64): [True: 0, False: 0]
  ------------------
  281|      0|          goto out_of_range;
  282|      0|        }
  283|       |
  284|  5.39k|        t = (time_t)i;
  285|  5.39k|        if (usec) { *usec = 0; }
  ------------------
  |  Branch (285:13): [True: 2.69k, False: 2.69k]
  ------------------
  286|  5.39k|      }
  287|      0|      break;
  288|       |
  289|      0|    default:
  ------------------
  |  Branch (289:5): [True: 0, False: 5.39k]
  ------------------
  290|      0|      mrb_raisef(mrb, E_TYPE_ERROR, "cannot convert %Y to time", obj);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  291|      0|      return 0;
  292|  5.39k|  }
  293|       |
  294|  5.39k|  return t;
  295|       |
  296|      0|out_of_range:
  297|      0|  mrb_raisef(mrb, E_ARGUMENT_ERROR, "%v out of Time range", obj);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  298|       |
  299|       |  /* not reached */
  300|      0|  return 0;
  301|  5.39k|}
time.c:time_gm:
  541|  2.29k|{
  542|  2.29k|  mrb_int ayear = 0, amonth = 1, aday = 1, ahour = 0, amin = 0, asec = 0, ausec = 0;
  543|       |
  544|  2.29k|  mrb_get_args(mrb, "i|iiiiii",
  545|  2.29k|                &ayear, &amonth, &aday, &ahour, &amin, &asec, &ausec);
  546|  2.29k|  return time_wrap(mrb, mrb_class_ptr(self),
  ------------------
  |  |   24|  2.29k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  2.29k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  547|  2.29k|          time_mktime(mrb, ayear, amonth, aday, ahour, amin, asec, ausec, MRB_TIMEZONE_UTC));
  548|  2.29k|}
time.c:time_mktime:
  489|  2.29k|{
  490|  2.29k|  time_t nowsecs;
  491|  2.29k|  struct tm nowtime = { 0 };
  492|       |
  493|  2.29k|#if MRB_INT_MAX > INT_MAX
  494|  2.29k|#define OUTINT(x) (((MRB_TIME_T_UINT ? 0 : INT_MIN) > (x)) || (x) > INT_MAX)
  495|       |#else
  496|       |#define OUTINT(x) 0
  497|       |#endif
  498|       |
  499|  2.29k|  ayear -= 1900;
  500|  2.29k|  if (OUTINT(ayear) ||
  ------------------
  |  |  494|  4.59k|#define OUTINT(x) (((MRB_TIME_T_UINT ? 0 : INT_MIN) > (x)) || (x) > INT_MAX)
  |  |  ------------------
  |  |  |  |  202|  2.29k|#define MRB_TIME_T_UINT (~(time_t)0 > 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (202:25): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (494:20): [True: 0, False: 2.29k]
  |  |  |  Branch (494:63): [True: 0, False: 2.29k]
  |  |  ------------------
  ------------------
  501|  2.29k|      amonth  < 1 || amonth  > 12 ||
  ------------------
  |  Branch (501:7): [True: 0, False: 2.29k]
  |  Branch (501:22): [True: 0, False: 2.29k]
  ------------------
  502|  2.29k|      aday    < 1 || aday    > 31 ||
  ------------------
  |  Branch (502:7): [True: 0, False: 2.29k]
  |  Branch (502:22): [True: 0, False: 2.29k]
  ------------------
  503|  2.29k|      ahour   < 0 || ahour   > 24 ||
  ------------------
  |  Branch (503:7): [True: 0, False: 2.29k]
  |  Branch (503:22): [True: 0, False: 2.29k]
  ------------------
  504|  2.29k|      (ahour == 24 && (amin > 0 || asec > 0)) ||
  ------------------
  |  Branch (504:8): [True: 0, False: 2.29k]
  |  Branch (504:24): [True: 0, False: 0]
  |  Branch (504:36): [True: 0, False: 0]
  ------------------
  505|  2.29k|      amin    < 0 || amin    > 59 ||
  ------------------
  |  Branch (505:7): [True: 0, False: 2.29k]
  |  Branch (505:22): [True: 0, False: 2.29k]
  ------------------
  506|  2.29k|      asec    < 0 || asec    > 60)
  ------------------
  |  Branch (506:7): [True: 0, False: 2.29k]
  |  Branch (506:22): [True: 0, False: 2.29k]
  ------------------
  507|      0|    mrb_raise(mrb, E_ARGUMENT_ERROR, "argument out of range");
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  508|       |
  509|  2.29k|  nowtime.tm_year  = (int)ayear;
  510|  2.29k|  nowtime.tm_mon   = (int)(amonth - 1);
  511|  2.29k|  nowtime.tm_mday  = (int)aday;
  512|  2.29k|  nowtime.tm_hour  = (int)ahour;
  513|  2.29k|  nowtime.tm_min   = (int)amin;
  514|  2.29k|  nowtime.tm_sec   = (int)asec;
  515|  2.29k|  nowtime.tm_isdst = -1;
  516|       |
  517|  2.29k|  time_t (*mk)(struct tm*);
  518|  2.29k|  if (timezone == MRB_TIMEZONE_UTC) {
  ------------------
  |  Branch (518:7): [True: 2.29k, False: 0]
  ------------------
  519|  2.29k|    mk = timegm;
  ------------------
  |  |  140|  2.29k|#define timegm my_timgm
  ------------------
  520|  2.29k|  }
  521|      0|  else {
  522|      0|    mk = mktime;
  523|      0|  }
  524|  2.29k|  nowsecs = (*mk)(&nowtime);
  525|  2.29k|  if (nowsecs == (time_t)-1) {
  ------------------
  |  Branch (525:7): [True: 0, False: 2.29k]
  ------------------
  526|      0|    nowtime.tm_sec += 1;        /* maybe Epoch-1 sec */
  527|      0|    nowsecs = (*mk)(&nowtime);
  528|      0|    if (nowsecs != 0) {         /* check if Epoch */
  ------------------
  |  Branch (528:9): [True: 0, False: 0]
  ------------------
  529|      0|      mrb_raise(mrb, E_ARGUMENT_ERROR, "Not a valid time");
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  530|      0|    }
  531|      0|    nowsecs = (time_t)-1;       /* valid Epoch-1 */
  532|      0|  }
  533|       |
  534|  2.29k|  return time_alloc_time(mrb, nowsecs, ausec, timezone);
  535|  2.29k|}
time.c:my_timgm:
  150|  2.29k|{
  151|  2.29k|  static const unsigned int ndays[2][12] = {
  152|  2.29k|    {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
  153|  2.29k|    {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
  154|  2.29k|  };
  155|  2.29k|  time_t r = 0;
  156|  2.29k|  int i;
  157|  2.29k|  unsigned int *nday = (unsigned int*) ndays[is_leapyear(tm->tm_year+1900)];
  158|       |
  159|  2.29k|  static const int epoch_year = 70;
  160|  2.29k|  if (tm->tm_year >= epoch_year) {
  ------------------
  |  Branch (160:7): [True: 0, False: 2.29k]
  ------------------
  161|      0|    for (i = epoch_year; i < tm->tm_year; ++i)
  ------------------
  |  Branch (161:26): [True: 0, False: 0]
  ------------------
  162|      0|      r += is_leapyear(i+1900) ? 366*24*60*60 : 365*24*60*60;
  ------------------
  |  Branch (162:12): [True: 0, False: 0]
  ------------------
  163|      0|  }
  164|  2.29k|  else {
  165|  4.52M|    for (i = tm->tm_year; i < epoch_year; ++i)
  ------------------
  |  Branch (165:27): [True: 4.52M, False: 2.29k]
  ------------------
  166|  4.52M|      r -= is_leapyear(i+1900) ? 366*24*60*60 : 365*24*60*60;
  ------------------
  |  Branch (166:12): [True: 1.09M, False: 3.42M]
  ------------------
  167|  2.29k|  }
  168|  2.29k|  for (i = 0; i < tm->tm_mon; ++i)
  ------------------
  |  Branch (168:15): [True: 0, False: 2.29k]
  ------------------
  169|      0|    r += nday[i] * 24 * 60 * 60;
  170|  2.29k|  r += (tm->tm_mday - 1) * 24 * 60 * 60;
  171|  2.29k|  r += tm->tm_hour * 60 * 60;
  172|  2.29k|  r += tm->tm_min * 60;
  173|  2.29k|  r += tm->tm_sec;
  174|  2.29k|  return r;
  175|  2.29k|}
time.c:is_leapyear:
  144|  4.52M|{
  145|  4.52M|  return (y % 4) == 0 && ((y % 100) != 0 || (y % 400) == 0);
  ------------------
  |  Branch (145:10): [True: 1.13M, False: 3.38M]
  |  Branch (145:27): [True: 1.08M, False: 46.9k]
  |  Branch (145:45): [True: 12.5k, False: 34.4k]
  ------------------
  146|  4.52M|}

_Z6FuzzRBPKhm:
   15|    476|int FuzzRB(const uint8_t *Data, size_t size) {
   16|    476|  mrb_value v;
   17|    476|  mrb_state *mrb = mrb_open();
   18|    476|  if (!mrb)
  ------------------
  |  Branch (18:7): [True: 0, False: 476]
  ------------------
   19|      0|    return 0;
   20|       |
   21|    476|  char *code = (char*)malloc(size+1);
   22|    476|  if (!code)
  ------------------
  |  Branch (22:7): [True: 0, False: 476]
  ------------------
   23|      0|    return 0;
   24|    476|  memcpy(code, Data, size);
   25|    476|  code[size] = '\0';
   26|       |
   27|    476|  if (const char *dump_path = getenv("PROTO_FUZZER_DUMP_PATH")) {
  ------------------
  |  Branch (27:19): [True: 0, False: 476]
  ------------------
   28|       |    // With libFuzzer binary run this to generate an RB file x.rb:
   29|       |    // PROTO_FUZZER_DUMP_PATH=x.rb ./a.out proto-input
   30|      0|    std::ofstream of(dump_path);
   31|      0|    of.write(code, size);
   32|      0|  }
   33|    476|  std::cout << "\n\n############\n" << code << "\n############\n\n";
   34|    476|  v = mrb_load_string(mrb, code);
   35|    476|  mrb_close(mrb);
   36|       |
   37|    476|  free(code);
   38|    476|  return 0;
   39|    476|}
mruby_proto_fuzzer.cpp:_ZL17TestOneProtoInputRKN11ruby_fuzzer8FunctionE:
   41|    476|DEFINE_PROTO_FUZZER(const Function &function) {
   42|    476|  protoConverter converter;
   43|    476|  auto s = converter.FunctionToString(function);
   44|    476|  (void)FuzzRB((const uint8_t*)s.data(), s.size());
   45|    476|}

_ZN11ruby_fuzzer14protoConverter13removeSpecialERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
    6|   328k|{
    7|   328k|  std::string tmp(x);
    8|   328k|  if (!tmp.empty())
  ------------------
  |  Branch (8:7): [True: 15.9k, False: 312k]
  ------------------
    9|  15.9k|    tmp.erase(std::remove_if(tmp.begin(), tmp.end(),
   10|  15.9k|                             [](char c) { return !(std::isalpha(c) || std::isdigit(c)); } ), tmp.end());
   11|   328k|  return tmp;
   12|   328k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_7ArrTypeE:
   15|  46.7k|{
   16|  46.7k|  if (x.elements_size() > 0) {
  ------------------
  |  Branch (16:7): [True: 7.26k, False: 39.5k]
  ------------------
   17|  7.26k|    int i = x.elements_size();
   18|  7.26k|    m_output << "[";
   19|   305k|    for (auto &e : x.elements()) {
  ------------------
  |  Branch (19:18): [True: 305k, False: 7.26k]
  ------------------
   20|   305k|      i--;
   21|   305k|      if (i == 0) {
  ------------------
  |  Branch (21:11): [True: 7.26k, False: 298k]
  ------------------
   22|  7.26k|        visit(e);
   23|   298k|      } else {
   24|   298k|        visit(e);
   25|   298k|        m_output << ", ";
   26|   298k|      }
   27|   305k|    }
   28|  7.26k|    m_output << "]";
   29|  39.5k|  } else {
   30|  39.5k|    m_output << "[1]";
   31|  39.5k|  }
   32|  46.7k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_5ArrayE:
   35|  46.7k|{
   36|  46.7k|  switch (x.arr_func()) {
  ------------------
  |  Branch (36:11): [True: 0, False: 46.7k]
  ------------------
   37|  8.28k|    case Array::FLATTEN:
  ------------------
  |  Branch (37:5): [True: 8.28k, False: 38.5k]
  ------------------
   38|  8.28k|      visit(x.arr_arg());
   39|  8.28k|      m_output << ".flatten";
   40|  8.28k|      break;
   41|    139|    case Array::COMPACT:
  ------------------
  |  Branch (41:5): [True: 139, False: 46.6k]
  ------------------
   42|    139|      visit(x.arr_arg());
   43|    139|      m_output << ".compact";
   44|    139|      break;
   45|  1.59k|    case Array::FETCH:
  ------------------
  |  Branch (45:5): [True: 1.59k, False: 45.1k]
  ------------------
   46|  1.59k|      visit(x.arr_arg());
   47|  1.59k|      m_output << ".fetch";
   48|  1.59k|      break;
   49|    785|    case Array::FILL:
  ------------------
  |  Branch (49:5): [True: 785, False: 45.9k]
  ------------------
   50|    785|      visit(x.arr_arg());
   51|    785|      m_output << ".fill";
   52|    785|      break;
   53|    784|    case Array::ROTATE:
  ------------------
  |  Branch (53:5): [True: 784, False: 45.9k]
  ------------------
   54|    784|      visit(x.arr_arg());
   55|    784|      m_output << ".rotate";
   56|    784|      break;
   57|  1.22k|    case Array::ROTATE_E:
  ------------------
  |  Branch (57:5): [True: 1.22k, False: 45.5k]
  ------------------
   58|  1.22k|      visit(x.arr_arg());
   59|  1.22k|      m_output << ".rotate!";
   60|  1.22k|      break;
   61|     12|    case Array::DELETEIF:
  ------------------
  |  Branch (61:5): [True: 12, False: 46.7k]
  ------------------
   62|     12|      visit(x.arr_arg());
   63|     12|      m_output << ".delete_if";
   64|     12|      break;
   65|  1.20k|    case Array::INSERT:
  ------------------
  |  Branch (65:5): [True: 1.20k, False: 45.5k]
  ------------------
   66|  1.20k|      visit(x.arr_arg());
   67|  1.20k|      m_output << ".insert";
   68|  1.20k|      break;
   69|     12|    case Array::BSEARCH:
  ------------------
  |  Branch (69:5): [True: 12, False: 46.7k]
  ------------------
   70|     12|      visit(x.arr_arg());
   71|     12|      m_output << ".bsearch";
   72|     12|      break;
   73|    147|    case Array::KEEPIF:
  ------------------
  |  Branch (73:5): [True: 147, False: 46.6k]
  ------------------
   74|    147|      visit(x.arr_arg());
   75|    147|      m_output << ".keep_if";
   76|    147|      break;
   77|    132|    case Array::SELECT:
  ------------------
  |  Branch (77:5): [True: 132, False: 46.6k]
  ------------------
   78|    132|      visit(x.arr_arg());
   79|    132|      m_output << ".select";
   80|    132|      break;
   81|    673|    case Array::VALUES_AT:
  ------------------
  |  Branch (81:5): [True: 673, False: 46.1k]
  ------------------
   82|    673|      visit(x.arr_arg());
   83|    673|      m_output << ".values_at";
   84|    673|      break;
   85|  1.63k|    case Array::BLOCK:
  ------------------
  |  Branch (85:5): [True: 1.63k, False: 45.1k]
  ------------------
   86|  1.63k|      visit(x.arr_arg());
   87|  1.63k|      m_output << ".index";
   88|  1.63k|      break;
   89|  1.00k|    case Array::DIG:
  ------------------
  |  Branch (89:5): [True: 1.00k, False: 45.7k]
  ------------------
   90|  1.00k|      visit(x.arr_arg());
   91|  1.00k|      m_output << ".dig";
   92|  1.00k|      break;
   93|  1.09k|    case Array::SLICE:
  ------------------
  |  Branch (93:5): [True: 1.09k, False: 45.6k]
  ------------------
   94|  1.09k|      visit(x.arr_arg());
   95|  1.09k|      m_output << ".slice";
   96|  1.09k|      break;
   97|  2.02k|    case Array::PERM:
  ------------------
  |  Branch (97:5): [True: 2.02k, False: 44.7k]
  ------------------
   98|  2.02k|      visit(x.arr_arg());
   99|  2.02k|      m_output << ".permutation";
  100|  2.02k|      break;
  101|  25.3k|    case Array::COMB:
  ------------------
  |  Branch (101:5): [True: 25.3k, False: 21.4k]
  ------------------
  102|  25.3k|      visit(x.arr_arg());
  103|  25.3k|      m_output << ".combination";
  104|  25.3k|      break;
  105|    498|    case Array::ASSOC:
  ------------------
  |  Branch (105:5): [True: 498, False: 46.2k]
  ------------------
  106|    498|      visit(x.arr_arg());
  107|    498|      m_output << ".assoc";
  108|    498|      break;
  109|    186|    case Array::RASSOC:
  ------------------
  |  Branch (109:5): [True: 186, False: 46.5k]
  ------------------
  110|    186|      visit(x.arr_arg());
  111|    186|      m_output << ".rassoc";
  112|    186|      break;
  113|  46.7k|  }
  114|  46.7k|  m_output << "(";
  115|  46.7k|  visit(x.val_arg());
  116|  46.7k|  m_output << ")";
  117|  46.7k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_19AssignmentStatementE:
  120|   120k|{
  121|   120k|  m_output << "var_" << m_numLiveVars << " = ";
  122|   120k|  visit(x.rvalue());
  123|   120k|  m_numVarsPerScope.top()++;
  124|   120k|  m_numLiveVars++;
  125|   120k|  m_output << "\n";
  126|   120k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_8BinaryOpE:
  129|  95.7k|{
  130|  95.7k|  m_output << "(";
  131|  95.7k|  visit(x.left());
  132|  95.7k|  switch (x.op()) {
  ------------------
  |  Branch (132:11): [True: 0, False: 95.7k]
  ------------------
  133|  12.2k|    case BinaryOp::ADD: m_output << " + "; break;
  ------------------
  |  Branch (133:5): [True: 12.2k, False: 83.4k]
  ------------------
  134|  20.9k|    case BinaryOp::SUB: m_output << " - "; break;
  ------------------
  |  Branch (134:5): [True: 20.9k, False: 74.7k]
  ------------------
  135|  8.28k|    case BinaryOp::MUL: m_output << " * "; break;
  ------------------
  |  Branch (135:5): [True: 8.28k, False: 87.4k]
  ------------------
  136|  12.4k|    case BinaryOp::DIV: m_output << " / "; break;
  ------------------
  |  Branch (136:5): [True: 12.4k, False: 83.3k]
  ------------------
  137|  5.71k|    case BinaryOp::MOD: m_output << " % "; break;
  ------------------
  |  Branch (137:5): [True: 5.71k, False: 89.9k]
  ------------------
  138|  5.74k|    case BinaryOp::XOR: m_output << " ^ "; break;
  ------------------
  |  Branch (138:5): [True: 5.74k, False: 89.9k]
  ------------------
  139|  4.33k|    case BinaryOp::AND: m_output << " and "; break;
  ------------------
  |  Branch (139:5): [True: 4.33k, False: 91.3k]
  ------------------
  140|  1.88k|    case BinaryOp::OR: m_output << " or "; break;
  ------------------
  |  Branch (140:5): [True: 1.88k, False: 93.8k]
  ------------------
  141|  1.94k|    case BinaryOp::EQ: m_output << " == "; break;
  ------------------
  |  Branch (141:5): [True: 1.94k, False: 93.7k]
  ------------------
  142|  3.32k|    case BinaryOp::NE: m_output << " != "; break;
  ------------------
  |  Branch (142:5): [True: 3.32k, False: 92.3k]
  ------------------
  143|  3.72k|    case BinaryOp::LE: m_output << " <= "; break;
  ------------------
  |  Branch (143:5): [True: 3.72k, False: 91.9k]
  ------------------
  144|  1.64k|    case BinaryOp::GE: m_output << " >= "; break;
  ------------------
  |  Branch (144:5): [True: 1.64k, False: 94.0k]
  ------------------
  145|  1.37k|    case BinaryOp::LT: m_output << " < "; break;
  ------------------
  |  Branch (145:5): [True: 1.37k, False: 94.3k]
  ------------------
  146|  2.28k|    case BinaryOp::GT: m_output << " > "; break;
  ------------------
  |  Branch (146:5): [True: 2.28k, False: 93.4k]
  ------------------
  147|  9.88k|    case BinaryOp::RS: m_output << " >> "; break;
  ------------------
  |  Branch (147:5): [True: 9.88k, False: 85.8k]
  ------------------
  148|  95.7k|  }
  149|  95.7k|  visit(x.right());
  150|  95.7k|  m_output << ")";
  151|  95.7k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_12BuiltinFuncsE:
  154|  84.6k|{
  155|  84.6k|  switch (x.bifunc_oneof_case()) {
  ------------------
  |  Branch (155:11): [True: 0, False: 84.6k]
  ------------------
  156|  8.00k|    case BuiltinFuncs::kOs:
  ------------------
  |  Branch (156:5): [True: 8.00k, False: 76.6k]
  ------------------
  157|  8.00k|      visit(x.os());
  158|  8.00k|      break;
  159|  6.52k|    case BuiltinFuncs::kTime:
  ------------------
  |  Branch (159:5): [True: 6.52k, False: 78.0k]
  ------------------
  160|  6.52k|      visit(x.time());
  161|  6.52k|      break;
  162|  46.7k|    case BuiltinFuncs::kArr:
  ------------------
  |  Branch (162:5): [True: 46.7k, False: 37.8k]
  ------------------
  163|  46.7k|      visit(x.arr());
  164|  46.7k|      break;
  165|  4.82k|    case BuiltinFuncs::kMops:
  ------------------
  |  Branch (165:5): [True: 4.82k, False: 79.7k]
  ------------------
  166|  4.82k|      visit(x.mops());
  167|  4.82k|      break;
  168|  18.4k|    case BuiltinFuncs::BIFUNC_ONEOF_NOT_SET:
  ------------------
  |  Branch (168:5): [True: 18.4k, False: 66.1k]
  ------------------
  169|  18.4k|      m_output << "1";
  170|  18.4k|      break;
  171|  84.6k|  }
  172|  84.6k|  m_output << "\n";
  173|  84.6k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_5ConstE:
  176|   337k|{
  177|   337k|  switch (x.const_oneof_case()) {
  ------------------
  |  Branch (177:11): [True: 0, False: 337k]
  ------------------
  178|  24.4k|    case Const::kIntLit:
  ------------------
  |  Branch (178:5): [True: 24.4k, False: 313k]
  ------------------
  179|  24.4k|      m_output << "(" << (x.int_lit() % 13) << ")";
  180|  24.4k|      break;
  181|  12.5k|    case Const::kBoolVal:
  ------------------
  |  Branch (181:5): [True: 12.5k, False: 325k]
  ------------------
  182|  12.5k|      m_output << "(" << x.bool_val() << ")";
  183|  12.5k|      break;
  184|   301k|    case Const::CONST_ONEOF_NOT_SET:
  ------------------
  |  Branch (184:5): [True: 301k, False: 36.9k]
  ------------------
  185|   301k|      m_output << "1";
  186|   301k|      break;
  187|   337k|  }
  188|   337k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_8FunctionE:
  191|    476|{
  192|    476|  m_output << "def foo()\nvar_0 = 1\n";
  193|    476|  visit(x.statements());
  194|    476|  m_output << "end\n";
  195|    476|  m_output << "foo\n";
  196|    476|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_8HashTypeE:
  199|  8.00k|{
  200|  8.00k|  if (x.keyval_size() > 0) {
  ------------------
  |  Branch (200:7): [True: 2.08k, False: 5.92k]
  ------------------
  201|  2.08k|    int i = x.keyval_size();
  202|  2.08k|    m_output << "{";
  203|   164k|    for (auto &e : x.keyval()) {
  ------------------
  |  Branch (203:18): [True: 164k, False: 2.08k]
  ------------------
  204|   164k|      i--;
  205|   164k|      if (i == 0) {
  ------------------
  |  Branch (205:11): [True: 2.08k, False: 162k]
  ------------------
  206|  2.08k|        visit(e);
  207|  2.08k|      }
  208|   162k|      else {
  209|   162k|        visit(e);
  210|   162k|        m_output << ", ";
  211|   162k|      }
  212|   164k|    }
  213|  2.08k|    m_output << "}";
  214|  2.08k|  }
  215|  8.00k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_6IfElseE:
  218|  18.7k|{
  219|  18.7k|  m_output << "if ";
  220|  18.7k|  visit(x.cond());
  221|  18.7k|  m_output << "\n";
  222|  18.7k|  visit(x.if_body());
  223|  18.7k|  m_output << "\nelse\n";
  224|  18.7k|  visit(x.else_body());
  225|  18.7k|  m_output << "\nend\n";
  226|  18.7k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_6KVPairE:
  229|   164k|{
  230|   164k|  m_output << "\"" << removeSpecial(x.key()) << "\"";
  231|   164k|  m_output << " => ";
  232|   164k|  m_output << "\"" << removeSpecial(x.val()) << "\"";
  233|   164k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_9MathConstE:
  236|    785|{
  237|    785|  switch (x.math_const()) {
  ------------------
  |  Branch (237:11): [True: 0, False: 785]
  ------------------
  238|    135|    case MathConst::PI:
  ------------------
  |  Branch (238:5): [True: 135, False: 650]
  ------------------
  239|    135|      m_output << "Math::PI";
  240|    135|      break;
  241|    650|    case MathConst::E:
  ------------------
  |  Branch (241:5): [True: 650, False: 135]
  ------------------
  242|    650|      m_output << "Math::E";
  243|    650|      break;
  244|    785|  }
  245|    785|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_7MathOpsE:
  248|  4.82k|{
  249|  4.82k|  switch (x.math_op()) {
  ------------------
  |  Branch (249:11): [True: 0, False: 4.82k]
  ------------------
  250|  1.79k|    case MathOps::CBRT:
  ------------------
  |  Branch (250:5): [True: 1.79k, False: 3.03k]
  ------------------
  251|  1.79k|      m_output << "Math.cbrt(";
  252|  1.79k|      visit(x.math_arg());
  253|  1.79k|      m_output << ")";
  254|  1.79k|      break;
  255|    412|    case MathOps::COS:
  ------------------
  |  Branch (255:5): [True: 412, False: 4.41k]
  ------------------
  256|    412|      m_output << "Math.cos(";
  257|    412|      visit(x.math_arg());
  258|    412|      m_output << ")";
  259|    412|      break;
  260|    374|    case MathOps::ERF:
  ------------------
  |  Branch (260:5): [True: 374, False: 4.45k]
  ------------------
  261|    374|      m_output << "Math.erf(";
  262|    374|      visit(x.math_arg());
  263|    374|      m_output << ")";
  264|    374|      break;
  265|    335|    case MathOps::ERFC:
  ------------------
  |  Branch (265:5): [True: 335, False: 4.49k]
  ------------------
  266|    335|      m_output << "Math.erfc(";
  267|    335|      visit(x.math_arg());
  268|    335|      m_output << ")";
  269|    335|      break;
  270|    566|    case MathOps::LOG:
  ------------------
  |  Branch (270:5): [True: 566, False: 4.26k]
  ------------------
  271|    566|      m_output << "Math.log(";
  272|    566|      visit(x.math_arg());
  273|    566|      m_output << ")";
  274|    566|      break;
  275|     82|    case MathOps::LOG10:
  ------------------
  |  Branch (275:5): [True: 82, False: 4.74k]
  ------------------
  276|     82|      m_output << "Math.log10(";
  277|     82|      visit(x.math_arg());
  278|     82|      m_output << ")";
  279|     82|      break;
  280|    150|    case MathOps::LOG2:
  ------------------
  |  Branch (280:5): [True: 150, False: 4.67k]
  ------------------
  281|    150|      m_output << "Math.log2(";
  282|    150|      visit(x.math_arg());
  283|    150|      m_output << ")";
  284|    150|      break;
  285|    233|    case MathOps::SIN:
  ------------------
  |  Branch (285:5): [True: 233, False: 4.59k]
  ------------------
  286|    233|      m_output << "Math.sin(";
  287|    233|      visit(x.math_arg());
  288|    233|      m_output << ")";
  289|    233|      break;
  290|    649|    case MathOps::SQRT:
  ------------------
  |  Branch (290:5): [True: 649, False: 4.17k]
  ------------------
  291|    649|      m_output << "Math.sqrt(";
  292|    649|      visit(x.math_arg());
  293|    649|      m_output << ")";
  294|    649|      break;
  295|    232|    case MathOps::TAN:
  ------------------
  |  Branch (295:5): [True: 232, False: 4.59k]
  ------------------
  296|    232|      m_output << "Math.tan(";
  297|    232|      visit(x.math_arg());
  298|    232|      m_output << ")";
  299|    232|      break;
  300|  4.82k|  }
  301|  4.82k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_8MathTypeE:
  304|  4.82k|{
  305|  4.82k|  switch (x.math_arg_oneof_case()) {
  ------------------
  |  Branch (305:11): [True: 0, False: 4.82k]
  ------------------
  306|    979|    case MathType::kMathRval:
  ------------------
  |  Branch (306:5): [True: 979, False: 3.84k]
  ------------------
  307|    979|      visit(x.math_rval());
  308|    979|      break;
  309|    785|    case MathType::kMathConst:
  ------------------
  |  Branch (309:5): [True: 785, False: 4.04k]
  ------------------
  310|    785|      visit(x.math_const());
  311|    785|      break;
  312|  3.06k|    case MathType::MATH_ARG_ONEOF_NOT_SET:
  ------------------
  |  Branch (312:5): [True: 3.06k, False: 1.76k]
  ------------------
  313|  3.06k|      m_output << "1";
  314|  3.06k|      break;
  315|  4.82k|  }
  316|  4.82k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_11ObjectSpaceE:
  319|  8.00k|{
  320|  8.00k|  switch (x.os_func()) {
  ------------------
  |  Branch (320:11): [True: 0, False: 8.00k]
  ------------------
  321|  8.00k|    case ObjectSpace::COUNT:
  ------------------
  |  Branch (321:5): [True: 8.00k, False: 0]
  ------------------
  322|  8.00k|      m_output << "ObjectSpace.count_objects";
  323|  8.00k|      break;
  324|  8.00k|  }
  325|  8.00k|  m_output << "(";
  326|  8.00k|  visit(x.os_arg());
  327|  8.00k|  m_output << ")" << "\n";
  328|  8.00k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_6RvalueE:
  331|   398k|{
  332|   398k|  switch (x.rvalue_oneof_case()) {
  ------------------
  |  Branch (332:11): [True: 0, False: 398k]
  ------------------
  333|  58.4k|    case Rvalue::kVarref:
  ------------------
  |  Branch (333:5): [True: 58.4k, False: 339k]
  ------------------
  334|  58.4k|      visit(x.varref());
  335|  58.4k|      break;
  336|  32.3k|    case Rvalue::kCons:
  ------------------
  |  Branch (336:5): [True: 32.3k, False: 365k]
  ------------------
  337|  32.3k|      visit(x.cons());
  338|  32.3k|      break;
  339|  95.7k|    case Rvalue::kBinop:
  ------------------
  |  Branch (339:5): [True: 95.7k, False: 302k]
  ------------------
  340|  95.7k|      visit(x.binop());
  341|  95.7k|      break;
  342|   211k|    case Rvalue::RVALUE_ONEOF_NOT_SET:
  ------------------
  |  Branch (342:5): [True: 211k, False: 186k]
  ------------------
  343|   211k|      m_output << "1";
  344|   211k|      break;
  345|   398k|  }
  346|   398k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_9StatementE:
  349|   343k|{
  350|   343k|  switch (x.stmt_oneof_case()) {
  ------------------
  |  Branch (350:11): [True: 0, False: 343k]
  ------------------
  351|   120k|    case Statement::kAssignment:
  ------------------
  |  Branch (351:5): [True: 120k, False: 223k]
  ------------------
  352|   120k|      visit(x.assignment());
  353|   120k|      break;
  354|  18.7k|    case Statement::kIfelse:
  ------------------
  |  Branch (354:5): [True: 18.7k, False: 324k]
  ------------------
  355|  18.7k|      visit(x.ifelse());
  356|  18.7k|      break;
  357|  6.62k|    case Statement::kTernaryStmt:
  ------------------
  |  Branch (357:5): [True: 6.62k, False: 337k]
  ------------------
  358|  6.62k|      visit(x.ternary_stmt());
  359|  6.62k|      break;
  360|  84.6k|    case Statement::kBuiltins:
  ------------------
  |  Branch (360:5): [True: 84.6k, False: 259k]
  ------------------
  361|  84.6k|      visit(x.builtins());
  362|  84.6k|      break;
  363|  19.5k|    case Statement::kBlockstmt:
  ------------------
  |  Branch (363:5): [True: 19.5k, False: 324k]
  ------------------
  364|  19.5k|      visit(x.blockstmt());
  365|  19.5k|      break;
  366|  93.6k|    case Statement::STMT_ONEOF_NOT_SET:
  ------------------
  |  Branch (366:5): [True: 93.6k, False: 249k]
  ------------------
  367|  93.6k|      break;
  368|   343k|  }
  369|   343k|  m_output << "\n";
  370|   343k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_12StatementSeqE:
  373|  57.5k|{
  374|  57.5k|  if (x.statements_size() > 0) {
  ------------------
  |  Branch (374:7): [True: 20.9k, False: 36.5k]
  ------------------
  375|  20.9k|    m_numVarsPerScope.push(0);
  376|  20.9k|    m_output << "@scope ||= begin\n";
  377|  20.9k|    for (auto &st : x.statements())
  ------------------
  |  Branch (377:19): [True: 343k, False: 20.9k]
  ------------------
  378|   343k|      visit(st);
  379|  20.9k|    m_output << "end\n";
  380|  20.9k|    m_numLiveVars -= m_numVarsPerScope.top();
  381|  20.9k|    m_numVarsPerScope.pop();
  382|  20.9k|  }
  383|  57.5k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_7TernaryE:
  423|  6.62k|{
  424|  6.62k|  m_output << "(";
  425|  6.62k|  visit(x.tern_cond());
  426|  6.62k|  m_output << " ? ";
  427|  6.62k|  visit(x.t_branch());
  428|  6.62k|  m_output << " : ";
  429|  6.62k|  visit(x.f_branch());
  430|  6.62k|  m_output << ")\n";
  431|  6.62k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_4TimeE:
  434|  6.52k|{
  435|  6.52k|  switch (x.t_func()) {
  ------------------
  |  Branch (435:11): [True: 0, False: 6.52k]
  ------------------
  436|  3.66k|    case Time::AT:
  ------------------
  |  Branch (436:5): [True: 3.66k, False: 2.86k]
  ------------------
  437|  3.66k|      m_output << "Time.at";
  438|  3.66k|      break;
  439|  2.86k|    case Time::GM:
  ------------------
  |  Branch (439:5): [True: 2.86k, False: 3.66k]
  ------------------
  440|  2.86k|      m_output << "Time.gm";
  441|  2.86k|      break;
  442|  6.52k|  }
  443|  6.52k|  m_output << "(" << (x.t_arg()% 13) << ")" << "\n";
  444|  6.52k|}
_ZN11ruby_fuzzer14protoConverter5visitERKNS_6VarRefE:
  447|  58.4k|{
  448|  58.4k|  m_output << "var_" << (static_cast<uint32_t>(x.varnum()) % m_numLiveVars);
  449|  58.4k|}
_ZN11ruby_fuzzer14protoConverter16FunctionToStringERKNS_8FunctionE:
  452|    476|{
  453|    476|  visit(input);
  454|    476|  return m_output.str();
  455|    476|}
proto_to_ruby.cpp:_ZZN11ruby_fuzzer14protoConverter13removeSpecialERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEENK3$_0clEc:
   10|  6.35M|                             [](char c) { return !(std::isalpha(c) || std::isdigit(c)); } ), tmp.end());
  ------------------
  |  Branch (10:52): [True: 5.77M, False: 572k]
  |  Branch (10:71): [True: 60.8k, False: 511k]
  ------------------

_ZN11ruby_fuzzer14protoConverterC2Ev:
   13|    476|    protoConverter() {
   14|    476|      m_numLiveVars = 1;
   15|    476|      m_numVarsPerScope.push(m_numLiveVars);
   16|    476|    }
_ZN11ruby_fuzzer14protoConverterD2Ev:
   21|    476|    ~protoConverter() {}

mrb_ary_new_capa:
   66|  3.88k|{
   67|  3.88k|  struct RArray *a = ary_new_capa(mrb, capa);
   68|  3.88k|  return mrb_obj_value(a);
   69|  3.88k|}
mrb_ary_new:
   73|  1.37k|{
   74|  1.37k|  return mrb_ary_new_capa(mrb, 0);
   75|  1.37k|}
mrb_ary_new_from_values:
  111|   159k|{
  112|   159k|  struct RArray *a = ary_new_from_values(mrb, size, vals);
  113|   159k|  return mrb_obj_value(a);
  114|   159k|}
mrb_ary_modify:
  175|  1.15k|{
  176|  1.15k|  mrb_write_barrier(mrb, (struct RBasic*)a);
  177|  1.15k|  ary_modify(mrb, a);
  178|  1.15k|}
mrb_ary_concat:
  330|  23.8k|{
  331|  23.8k|  struct RArray *a2 = mrb_ary_ptr(other);
  ------------------
  |  |   51|  23.8k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  23.8k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  332|       |
  333|  23.8k|  ary_concat(mrb, mrb_ary_ptr(self), a2);
  ------------------
  |  |   51|  23.8k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  23.8k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  334|  23.8k|}
mrb_ary_replace:
  426|  5.99k|{
  427|  5.99k|  struct RArray *a1 = mrb_ary_ptr(self);
  ------------------
  |  |   51|  5.99k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  5.99k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  428|  5.99k|  struct RArray *a2 = mrb_ary_ptr(other);
  ------------------
  |  |   51|  5.99k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  5.99k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  429|       |
  430|  5.99k|  if (a1 != a2) {
  ------------------
  |  Branch (430:7): [True: 5.99k, False: 0]
  ------------------
  431|  5.99k|    ary_replace(mrb, a1, a2);
  432|  5.99k|  }
  433|  5.99k|}
mrb_ary_push:
  524|   112k|{
  525|   112k|  struct RArray *a = mrb_ary_ptr(ary);
  ------------------
  |  |   51|   112k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|   112k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  526|   112k|  mrb_int len = ARY_LEN(a);
  ------------------
  |  |   70|   112k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|   112k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|   112k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 12.8k, False: 100k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  12.8k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  12.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  527|       |
  528|   112k|  ary_modify(mrb, a);
  529|   112k|  if (len == ARY_CAPA(a))
  ------------------
  |  |   82|   112k|#define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   63|   112k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|   112k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 12.8k, False: 100k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   30|  12.8k|# define MRB_ARY_EMBED_LEN_MAX ((mrb_int)(sizeof(void*)*3/sizeof(mrb_value)))
  |  |  ------------------
  ------------------
  |  Branch (529:7): [True: 4.99k, False: 107k]
  ------------------
  530|  4.99k|    ary_expand_capa(mrb, a, len + 1);
  531|   112k|  ARY_PTR(a)[len] = elem;
  ------------------
  |  |   71|   112k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|   112k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|   112k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 11.3k, False: 101k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|  11.3k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  532|   112k|  ARY_SET_LEN(a, len+1);
  ------------------
  |  |   74|   112k|#define ARY_SET_LEN(a,n) do {\
  |  |   75|   112k|  if (ARY_EMBED_P(a)) {\
  |  |  ------------------
  |  |  |  |   63|   112k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|   112k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 11.3k, False: 101k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|  11.3k|    mrb_assert((n) <= MRB_ARY_EMBED_LEN_MAX); \
  |  |  ------------------
  |  |  |  |   68|  11.3k|#define mrb_assert(p) ((void)0)
  |  |  ------------------
  |  |   77|  11.3k|    ARY_SET_EMBED_LEN(a,n);\
  |  |  ------------------
  |  |  |  |   66|  11.3k|#define ARY_SET_EMBED_LEN(a,len) ((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  11.3k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|  11.3k|  }\
  |  |   79|   112k|  else\
  |  |   80|   112k|    (a)->as.heap.len = (n);\
  |  |   81|   112k|} while (0)
  |  |  ------------------
  |  |  |  Branch (81:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  533|   112k|  mrb_field_write_barrier_value(mrb, (struct RBasic*)a, elem);
  ------------------
  |  | 1317|   112k|#define mrb_field_write_barrier_value(mrb, obj, val) do{\
  |  | 1318|   112k|  if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |  148|   112k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|   225k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (148:29): [True: 112k, False: 400]
  |  |  |  |  |  Branch (148:63): [True: 400, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |   22|      0|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1319|   112k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1319:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  534|   112k|}
mrb_ary_set:
  749|  25.5k|{
  750|  25.5k|  struct RArray *a = mrb_ary_ptr(ary);
  ------------------
  |  |   51|  25.5k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  25.5k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  751|  25.5k|  mrb_int len = ARY_LEN(a);
  ------------------
  |  |   70|  25.5k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  25.5k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  25.5k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 721, False: 24.8k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|    721|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|    721|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  752|       |
  753|  25.5k|  ary_modify(mrb, a);
  754|       |  /* range check */
  755|  25.5k|  if (n < 0) {
  ------------------
  |  Branch (755:7): [True: 0, False: 25.5k]
  ------------------
  756|      0|    n += len;
  757|      0|    if (n < 0) {
  ------------------
  |  Branch (757:9): [True: 0, False: 0]
  ------------------
  758|      0|      mrb_raisef(mrb, E_INDEX_ERROR, "index %i out of array", n - len);
  ------------------
  |  | 1378|      0|#define E_INDEX_ERROR        mrb_exc_get_id(mrb, MRB_ERROR_SYM(IndexError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  759|      0|    }
  760|      0|  }
  761|  25.5k|  if (n >= ARY_MAX_SIZE) {
  ------------------
  |  |   23|  25.5k|#define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|  25.5k|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|  25.5k|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|  25.5k|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|      0|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |  |  Branch (23:33): [Folded - Ignored]
  |  |  ------------------
  ------------------
  |  Branch (761:7): [True: 0, False: 25.5k]
  ------------------
  762|      0|    mrb_raise(mrb, E_INDEX_ERROR, "index too big");
  ------------------
  |  | 1378|      0|#define E_INDEX_ERROR        mrb_exc_get_id(mrb, MRB_ERROR_SYM(IndexError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  763|      0|  }
  764|  25.5k|  if (len <= n) {
  ------------------
  |  Branch (764:7): [True: 0, False: 25.5k]
  ------------------
  765|      0|    if (ARY_CAPA(a) <= n)
  ------------------
  |  |   82|      0|#define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   30|      0|# define MRB_ARY_EMBED_LEN_MAX ((mrb_int)(sizeof(void*)*3/sizeof(mrb_value)))
  |  |  ------------------
  ------------------
  |  Branch (765:9): [True: 0, False: 0]
  ------------------
  766|      0|      ary_expand_capa(mrb, a, n + 1);
  767|      0|    ary_fill_with_nil(ARY_PTR(a) + len, n + 1 - len);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  768|      0|    ARY_SET_LEN(a, n+1);
  ------------------
  |  |   74|      0|#define ARY_SET_LEN(a,n) do {\
  |  |   75|      0|  if (ARY_EMBED_P(a)) {\
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|    mrb_assert((n) <= MRB_ARY_EMBED_LEN_MAX); \
  |  |  ------------------
  |  |  |  |   68|      0|#define mrb_assert(p) ((void)0)
  |  |  ------------------
  |  |   77|      0|    ARY_SET_EMBED_LEN(a,n);\
  |  |  ------------------
  |  |  |  |   66|      0|#define ARY_SET_EMBED_LEN(a,len) ((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|      0|  }\
  |  |   79|      0|  else\
  |  |   80|      0|    (a)->as.heap.len = (n);\
  |  |   81|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (81:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  769|      0|  }
  770|       |
  771|  25.5k|  ARY_PTR(a)[n] = val;
  ------------------
  |  |   71|  25.5k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|  25.5k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  25.5k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 721, False: 24.8k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|    721|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  772|  25.5k|  mrb_field_write_barrier_value(mrb, (struct RBasic*)a, val);
  ------------------
  |  | 1317|  25.5k|#define mrb_field_write_barrier_value(mrb, obj, val) do{\
  |  | 1318|  25.5k|  if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |  148|  25.5k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  51.0k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (148:29): [True: 11.4k, False: 14.0k]
  |  |  |  |  |  Branch (148:63): [True: 0, False: 14.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |   22|  14.0k|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|  14.0k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1319|  25.5k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1319:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  773|  25.5k|}
mrb_ary_splice:
  783|  1.15k|{
  784|  1.15k|  struct RArray *a = mrb_ary_ptr(ary);
  ------------------
  |  |   51|  1.15k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  1.15k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  785|  1.15k|  mrb_int alen = ARY_LEN(a);
  ------------------
  |  |   70|  1.15k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  1.15k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  1.15k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 1.12k, False: 29]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  1.12k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  1.12k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  786|  1.15k|  const mrb_value *argv;
  787|  1.15k|  mrb_int argc;
  788|  1.15k|  mrb_int tail;
  789|       |
  790|  1.15k|  ary_modify(mrb, a);
  791|       |
  792|       |  /* len check */
  793|  1.15k|  if (len < 0) mrb_raisef(mrb, E_INDEX_ERROR, "negative length (%i)", len);
  ------------------
  |  | 1378|      0|#define E_INDEX_ERROR        mrb_exc_get_id(mrb, MRB_ERROR_SYM(IndexError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (793:7): [True: 0, False: 1.15k]
  ------------------
  794|       |
  795|       |  /* range check */
  796|  1.15k|  if (head < 0) {
  ------------------
  |  Branch (796:7): [True: 458, False: 692]
  ------------------
  797|    458|    head += alen;
  798|    458|    if (head < 0) goto out_of_range;
  ------------------
  |  Branch (798:9): [True: 0, False: 458]
  ------------------
  799|    458|  }
  800|  1.15k|  if (head > ARY_MAX_SIZE - len) {
  ------------------
  |  |   23|  1.15k|#define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|  1.15k|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|  1.15k|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|  1.15k|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|      0|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |  |  Branch (23:33): [Folded - Ignored]
  |  |  ------------------
  ------------------
  |  Branch (800:7): [True: 0, False: 1.15k]
  ------------------
  801|      0|  out_of_range:
  802|      0|    mrb_raisef(mrb, E_INDEX_ERROR, "index %i is out of array", head);
  ------------------
  |  | 1378|      0|#define E_INDEX_ERROR        mrb_exc_get_id(mrb, MRB_ERROR_SYM(IndexError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  803|      0|  }
  804|  1.15k|  tail = head + len;
  805|  1.15k|  if (alen < len || alen < tail) {
  ------------------
  |  Branch (805:7): [True: 0, False: 1.15k]
  |  Branch (805:21): [True: 186, False: 964]
  ------------------
  806|    186|    len = alen - head;
  807|    186|    tail = head + len;
  808|    186|  }
  809|       |
  810|       |  /* size check */
  811|  1.15k|  if (mrb_array_p(rpl)) {
  ------------------
  |  |  186|  1.15k|#define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
  |  |  ------------------
  |  |  |  |   78|  1.15k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  2.30k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  2.30k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 1.15k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 1.15k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 1.15k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  812|  1.15k|    argc = RARRAY_LEN(rpl);
  ------------------
  |  |   72|  1.15k|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|  1.15k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  1.15k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  1.15k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 1.15k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|  1.15k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  1.15k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  813|  1.15k|    argv = RARRAY_PTR(rpl);
  ------------------
  |  |   73|  1.15k|#define RARRAY_PTR(a) ARY_PTR(RARRAY(a))
  |  |  ------------------
  |  |  |  |   71|  1.15k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  1.15k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  1.15k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 1.15k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  1.15k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  814|  1.15k|    if (argv == ARY_PTR(a)) {
  ------------------
  |  |   71|  1.15k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|  1.15k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  1.15k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 1.12k, False: 29]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|  1.12k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  |  Branch (814:9): [True: 0, False: 1.15k]
  ------------------
  815|      0|      struct RArray *r;
  816|       |
  817|      0|      if (argc > 32767) {
  ------------------
  |  Branch (817:11): [True: 0, False: 0]
  ------------------
  818|      0|        mrb_raise(mrb, E_ARGUMENT_ERROR, "too big recursive splice");
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  819|      0|      }
  820|      0|      r = ary_dup(mrb, a);
  821|      0|      argv = ARY_PTR(r);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  822|      0|    }
  823|  1.15k|  }
  824|      0|  else if (mrb_undef_p(rpl)) {
  ------------------
  |  |  173|      0|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  |  |  ------------------
  |  |  |  Branch (173:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  825|      0|    argc = 0;
  826|      0|    argv = NULL;
  827|      0|  }
  828|      0|  else {
  829|      0|    argc = 1;
  830|      0|    argv = &rpl;
  831|      0|  }
  832|  1.15k|  if (head >= alen) {
  ------------------
  |  Branch (832:7): [True: 625, False: 525]
  ------------------
  833|    625|    if (head > ARY_MAX_SIZE - argc) goto out_of_range;
  ------------------
  |  |   23|    625|#define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|    625|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|    625|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|    625|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|      0|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |  |  Branch (23:33): [Folded - Ignored]
  |  |  ------------------
  ------------------
  |  Branch (833:9): [True: 0, False: 625]
  ------------------
  834|    625|    len = head + argc;
  835|    625|    if (len > ARY_CAPA(a)) {
  ------------------
  |  |   82|    625|#define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   63|    625|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|    625|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 618, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   30|    618|# define MRB_ARY_EMBED_LEN_MAX ((mrb_int)(sizeof(void*)*3/sizeof(mrb_value)))
  |  |  ------------------
  ------------------
  |  Branch (835:9): [True: 184, False: 441]
  ------------------
  836|    184|      ary_expand_capa(mrb, a, len);
  837|    184|    }
  838|    625|    ary_fill_with_nil(ARY_PTR(a) + alen, head - alen);
  ------------------
  |  |   71|    625|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|    625|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|    625|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 441, False: 184]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|    441|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  839|    625|    if (argc > 0) {
  ------------------
  |  Branch (839:9): [True: 0, False: 625]
  ------------------
  840|      0|      array_copy(ARY_PTR(a) + head, argv, argc);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  841|      0|    }
  842|    625|    ARY_SET_LEN(a, len);
  ------------------
  |  |   74|    625|#define ARY_SET_LEN(a,n) do {\
  |  |   75|    625|  if (ARY_EMBED_P(a)) {\
  |  |  ------------------
  |  |  |  |   63|    625|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|    625|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 441, False: 184]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|    441|    mrb_assert((n) <= MRB_ARY_EMBED_LEN_MAX); \
  |  |  ------------------
  |  |  |  |   68|    441|#define mrb_assert(p) ((void)0)
  |  |  ------------------
  |  |   77|    441|    ARY_SET_EMBED_LEN(a,n);\
  |  |  ------------------
  |  |  |  |   66|    441|#define ARY_SET_EMBED_LEN(a,len) ((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|    441|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|    441|  }\
  |  |   79|    625|  else\
  |  |   80|    625|    (a)->as.heap.len = (n);\
  |  |   81|    625|} while (0)
  |  |  ------------------
  |  |  |  Branch (81:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  843|    625|  }
  844|    525|  else {
  845|    525|    mrb_int newlen;
  846|       |
  847|    525|    if (alen - len > ARY_MAX_SIZE - argc) {
  ------------------
  |  |   23|    525|#define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|    525|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|    525|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|    525|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|      0|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |  |  Branch (23:33): [Folded - Ignored]
  |  |  ------------------
  ------------------
  |  Branch (847:9): [True: 0, False: 525]
  ------------------
  848|      0|      head = alen + argc - len;
  849|      0|      goto out_of_range;
  850|      0|    }
  851|    525|    newlen = alen + argc - len;
  852|    525|    if (newlen > ARY_CAPA(a)) {
  ------------------
  |  |   82|    525|#define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   63|    525|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|    525|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 503, False: 22]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   30|    503|# define MRB_ARY_EMBED_LEN_MAX ((mrb_int)(sizeof(void*)*3/sizeof(mrb_value)))
  |  |  ------------------
  ------------------
  |  Branch (852:9): [True: 0, False: 525]
  ------------------
  853|      0|      ary_expand_capa(mrb, a, newlen);
  854|      0|    }
  855|       |
  856|    525|    if (len != argc) {
  ------------------
  |  Branch (856:9): [True: 0, False: 525]
  ------------------
  857|      0|      mrb_value *ptr = ARY_PTR(a);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  858|      0|      value_move(ptr + head + argc, ptr + tail, alen - tail);
  859|      0|      ARY_SET_LEN(a, newlen);
  ------------------
  |  |   74|      0|#define ARY_SET_LEN(a,n) do {\
  |  |   75|      0|  if (ARY_EMBED_P(a)) {\
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|    mrb_assert((n) <= MRB_ARY_EMBED_LEN_MAX); \
  |  |  ------------------
  |  |  |  |   68|      0|#define mrb_assert(p) ((void)0)
  |  |  ------------------
  |  |   77|      0|    ARY_SET_EMBED_LEN(a,n);\
  |  |  ------------------
  |  |  |  |   66|      0|#define ARY_SET_EMBED_LEN(a,len) ((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|      0|  }\
  |  |   79|      0|  else\
  |  |   80|      0|    (a)->as.heap.len = (n);\
  |  |   81|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (81:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  860|      0|    }
  861|    525|    if (argc > 0) {
  ------------------
  |  Branch (861:9): [True: 0, False: 525]
  ------------------
  862|      0|      value_move(ARY_PTR(a) + head, argv, argc);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  863|      0|    }
  864|    525|  }
  865|  1.15k|  mrb_write_barrier(mrb, (struct RBasic*)a);
  866|  1.15k|  return ary;
  867|  1.15k|}
mrb_ary_decref:
  871|  1.04k|{
  872|  1.04k|  shared->refcnt--;
  873|  1.04k|  if (shared->refcnt == 0) {
  ------------------
  |  Branch (873:7): [True: 521, False: 521]
  ------------------
  874|    521|    mrb_free(mrb, shared->ptr);
  875|    521|    mrb_free(mrb, shared);
  876|    521|  }
  877|  1.04k|}
mrb_ary_splat:
 1164|  30.0k|{
 1165|  30.0k|  mrb_value ary;
 1166|  30.0k|  struct RArray *a;
 1167|       |
 1168|  30.0k|  if (mrb_array_p(v)) {
  ------------------
  |  |  186|  30.0k|#define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
  |  |  ------------------
  |  |  |  |   78|  30.0k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  60.0k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  60.0k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 30.0k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 30.0k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 30.0k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1169|  30.0k|    a = ary_dup(mrb, mrb_ary_ptr(v));
  ------------------
  |  |   51|  30.0k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  30.0k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1170|  30.0k|    return mrb_obj_value(a);
 1171|  30.0k|  }
 1172|       |
 1173|      0|  if (!mrb_respond_to(mrb, v, MRB_SYM(to_a))) {
  ------------------
  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  |  Branch (1173:7): [True: 0, False: 0]
  ------------------
 1174|      0|    return mrb_ary_new_from_values(mrb, 1, &v);
 1175|      0|  }
 1176|       |
 1177|      0|  ary = mrb_funcall_argv(mrb, v, MRB_SYM(to_a), 0, NULL);
  ------------------
  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 1178|      0|  if (mrb_nil_p(ary)) {
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1179|      0|    return mrb_ary_new_from_values(mrb, 1, &v);
 1180|      0|  }
 1181|      0|  mrb_ensure_array_type(mrb, ary);
 1182|      0|  a = mrb_ary_ptr(ary);
  ------------------
  |  |   51|      0|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1183|      0|  a = ary_dup(mrb, a);
 1184|      0|  return mrb_obj_value(a);
 1185|      0|}
mrb_ary_entry:
 1235|  2.64k|{
 1236|  2.64k|  struct RArray *a = mrb_ary_ptr(ary);
  ------------------
  |  |   51|  2.64k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  2.64k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1237|  2.64k|  mrb_int len = ARY_LEN(a);
  ------------------
  |  |   70|  2.64k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  2.64k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  2.64k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 2.36k, False: 283]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  2.36k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  2.36k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1238|       |
 1239|       |  /* range check */
 1240|  2.64k|  if (n < 0) n += len;
  ------------------
  |  Branch (1240:7): [True: 382, False: 2.26k]
  ------------------
 1241|  2.64k|  if (n < 0 || len <= n) return mrb_nil_value();
  ------------------
  |  Branch (1241:7): [True: 371, False: 2.27k]
  |  Branch (1241:16): [True: 1.68k, False: 590]
  ------------------
 1242|       |
 1243|    590|  return ARY_PTR(a)[n];
  ------------------
  |  |   71|    590|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|    590|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|    590|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 325, False: 265]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|    325|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
 1244|  2.64k|}
mrb_init_array:
 1403|    476|{
 1404|    476|  struct RClass *a;
 1405|       |
 1406|    476|  mrb->array_class = a = mrb_define_class(mrb, "Array", mrb->object_class);              /* 15.2.12 */
 1407|    476|  MRB_SET_INSTANCE_TT(a, MRB_TT_ARRAY);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
 1408|       |
 1409|    476|  mrb_define_class_method(mrb, a, "[]",        mrb_ary_s_create,     MRB_ARGS_ANY());    /* 15.2.12.4.1 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 1410|       |
 1411|    476|  mrb_define_method(mrb, a, "+",               mrb_ary_plus,         MRB_ARGS_REQ(1));   /* 15.2.12.5.1  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1412|    476|  mrb_define_method(mrb, a, "*",               mrb_ary_times,        MRB_ARGS_REQ(1));   /* 15.2.12.5.2  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1413|    476|  mrb_define_method(mrb, a, "<<",              mrb_ary_push_m,       MRB_ARGS_REQ(1));   /* 15.2.12.5.3  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1414|    476|  mrb_define_method(mrb, a, "[]",              mrb_ary_aget,         MRB_ARGS_ARG(1,1)); /* 15.2.12.5.4  */
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1415|    476|  mrb_define_method(mrb, a, "[]=",             mrb_ary_aset,         MRB_ARGS_ARG(2,1)); /* 15.2.12.5.5  */
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1416|    476|  mrb_define_method(mrb, a, "clear",           mrb_ary_clear_m,      MRB_ARGS_NONE());   /* 15.2.12.5.6  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1417|    476|  mrb_define_method(mrb, a, "concat",          mrb_ary_concat_m,     MRB_ARGS_REQ(1));   /* 15.2.12.5.8  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1418|    476|  mrb_define_method(mrb, a, "delete_at",       mrb_ary_delete_at,    MRB_ARGS_REQ(1));   /* 15.2.12.5.9  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1419|    476|  mrb_define_method(mrb, a, "empty?",          mrb_ary_empty_p,      MRB_ARGS_NONE());   /* 15.2.12.5.12 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1420|    476|  mrb_define_method(mrb, a, "first",           mrb_ary_first,        MRB_ARGS_OPT(1));   /* 15.2.12.5.13 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1421|    476|  mrb_define_method(mrb, a, "index",           mrb_ary_index_m,      MRB_ARGS_REQ(1));   /* 15.2.12.5.14 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1422|    476|  mrb_define_method(mrb, a, "initialize_copy", mrb_ary_replace_m,    MRB_ARGS_REQ(1));   /* 15.2.12.5.16 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1423|    476|  mrb_define_method(mrb, a, "join",            mrb_ary_join_m,       MRB_ARGS_OPT(1));   /* 15.2.12.5.17 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1424|    476|  mrb_define_method(mrb, a, "last",            mrb_ary_last,         MRB_ARGS_OPT(1));   /* 15.2.12.5.18 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1425|    476|  mrb_define_method(mrb, a, "length",          mrb_ary_size,         MRB_ARGS_NONE());   /* 15.2.12.5.19 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1426|    476|  mrb_define_method(mrb, a, "pop",             mrb_ary_pop,          MRB_ARGS_NONE());   /* 15.2.12.5.21 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1427|    476|  mrb_define_method(mrb, a, "push",            mrb_ary_push_m,       MRB_ARGS_ANY());    /* 15.2.12.5.22 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 1428|    476|  mrb_define_method(mrb, a, "replace",         mrb_ary_replace_m,    MRB_ARGS_REQ(1));   /* 15.2.12.5.23 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1429|    476|  mrb_define_method(mrb, a, "reverse",         mrb_ary_reverse,      MRB_ARGS_NONE());   /* 15.2.12.5.24 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1430|    476|  mrb_define_method(mrb, a, "reverse!",        mrb_ary_reverse_bang, MRB_ARGS_NONE());   /* 15.2.12.5.25 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1431|    476|  mrb_define_method(mrb, a, "rindex",          mrb_ary_rindex_m,     MRB_ARGS_REQ(1));   /* 15.2.12.5.26 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1432|    476|  mrb_define_method(mrb, a, "shift",           mrb_ary_shift_m,      MRB_ARGS_OPT(1));   /* 15.2.12.5.27 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1433|    476|  mrb_define_method(mrb, a, "size",            mrb_ary_size,         MRB_ARGS_NONE());   /* 15.2.12.5.28 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1434|    476|  mrb_define_method(mrb, a, "slice",           mrb_ary_aget,         MRB_ARGS_ARG(1,1)); /* 15.2.12.5.29 */
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 1435|    476|  mrb_define_method(mrb, a, "unshift",         mrb_ary_unshift_m,    MRB_ARGS_ANY());    /* 15.2.12.5.30 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 1436|    476|  mrb_define_method(mrb, a, "to_s",            mrb_ary_to_s,         MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1437|    476|  mrb_define_method(mrb, a, "inspect",         mrb_ary_to_s,         MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1438|       |
 1439|    476|  mrb_define_method(mrb, a, "__ary_eq",        mrb_ary_eq,           MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1440|    476|  mrb_define_method(mrb, a, "__ary_cmp",       mrb_ary_cmp,          MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1441|    476|  mrb_define_method(mrb, a, "__ary_index",     mrb_ary_index_m,      MRB_ARGS_REQ(1));   /* kept for mruby-array-ext */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1442|    476|  mrb_define_method(mrb, a, "__svalue",        mrb_ary_svalue,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1443|    476|}
array.c:ary_new_capa:
   44|   193k|{
   45|   193k|  struct RArray *a;
   46|   193k|  size_t blen;
   47|       |
   48|   193k|  ary_check_too_big(mrb, capa, 0);
   49|   193k|  blen = capa * sizeof(mrb_value);
   50|       |
   51|   193k|  a = MRB_OBJ_ALLOC(mrb, MRB_TT_ARRAY, mrb->array_class);
  ------------------
  |  | 1200|   193k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
   52|   193k|  if (capa <= MRB_ARY_EMBED_LEN_MAX) {
  ------------------
  |  |   30|   193k|# define MRB_ARY_EMBED_LEN_MAX ((mrb_int)(sizeof(void*)*3/sizeof(mrb_value)))
  ------------------
  |  Branch (52:7): [True: 191k, False: 2.57k]
  ------------------
   53|   191k|    ARY_SET_EMBED_LEN(a, 0);
  ------------------
  |  |   66|   191k|#define ARY_SET_EMBED_LEN(a,len) ((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1))
  |  |  ------------------
  |  |  |  |   62|   191k|#define MRB_ARY_EMBED_MASK  7
  |  |  ------------------
  ------------------
   54|   191k|  }
   55|  2.57k|  else {
   56|  2.57k|    a->as.heap.ptr = (mrb_value *)mrb_malloc(mrb, blen);
   57|  2.57k|    a->as.heap.aux.capa = capa;
   58|  2.57k|    a->as.heap.len = 0;
   59|  2.57k|  }
   60|       |
   61|   193k|  return a;
   62|   193k|}
array.c:ary_check_too_big:
   33|   228k|{
   34|   228k|  if (a > ARY_MAX_SIZE - b || a < 0)
  ------------------
  |  |   23|   228k|#define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|   228k|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|   228k|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|   228k|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|      0|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |  |  Branch (23:33): [Folded - Ignored]
  |  |  ------------------
  ------------------
  |  Branch (34:7): [True: 0, False: 228k]
  |  Branch (34:31): [True: 0, False: 228k]
  ------------------
   35|      0|    ary_too_big(mrb);
   36|   228k|#if MRB_ARY_LENGTH_MAX != 0
   37|   228k|  if (a > MRB_ARY_LENGTH_MAX - b || a < 0)
  ------------------
  |  |   21|   228k|#define MRB_ARY_LENGTH_MAX 131072
  ------------------
  |  Branch (37:7): [True: 0, False: 228k]
  |  Branch (37:37): [True: 0, False: 228k]
  ------------------
   38|      0|    ary_too_big(mrb);
   39|   228k|#endif
   40|   228k|}
array.c:ary_new_from_values:
  100|   189k|{
  101|   189k|  struct RArray *a = ary_new_capa(mrb, size);
  102|       |
  103|   189k|  array_copy(ARY_PTR(a), vals, size);
  ------------------
  |  |   71|   189k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|   189k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|   189k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 187k, False: 2.57k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|   187k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  104|   189k|  ARY_SET_LEN(a, size);
  ------------------
  |  |   74|   189k|#define ARY_SET_LEN(a,n) do {\
  |  |   75|   189k|  if (ARY_EMBED_P(a)) {\
  |  |  ------------------
  |  |  |  |   63|   189k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|   189k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 187k, False: 2.57k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|   187k|    mrb_assert((n) <= MRB_ARY_EMBED_LEN_MAX); \
  |  |  ------------------
  |  |  |  |   68|   187k|#define mrb_assert(p) ((void)0)
  |  |  ------------------
  |  |   77|   187k|    ARY_SET_EMBED_LEN(a,n);\
  |  |  ------------------
  |  |  |  |   66|   187k|#define ARY_SET_EMBED_LEN(a,len) ((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|   187k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|   187k|  }\
  |  |   79|   189k|  else\
  |  |   80|   189k|    (a)->as.heap.len = (n);\
  |  |   81|   189k|} while (0)
  |  |  ------------------
  |  |  |  Branch (81:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  105|       |
  106|   189k|  return a;
  107|   189k|}
array.c:ary_modify:
  144|   164k|{
  145|   164k|  ary_modify_check(mrb, a);
  ------------------
  |  |  140|   164k|#define ary_modify_check(mrb, a) mrb_check_frozen((mrb), (a))
  ------------------
  146|       |
  147|   164k|  if (ARY_SHARED_P(a)) {
  ------------------
  |  |   84|   164k|#define ARY_SHARED_P(a) ((a)->flags & MRB_ARY_SHARED)
  |  |  ------------------
  |  |  |  |   83|   164k|#define MRB_ARY_SHARED      256
  |  |  ------------------
  |  |  |  Branch (84:25): [True: 0, False: 164k]
  |  |  ------------------
  ------------------
  148|      0|    mrb_shared_array *shared = a->as.heap.aux.shared;
  149|       |
  150|      0|    if (shared->refcnt == 1 && a->as.heap.ptr == shared->ptr) {
  ------------------
  |  Branch (150:9): [True: 0, False: 0]
  |  Branch (150:32): [True: 0, False: 0]
  ------------------
  151|      0|      a->as.heap.ptr = shared->ptr;
  152|      0|      a->as.heap.aux.capa = a->as.heap.len;
  153|      0|      mrb_free(mrb, shared);
  154|      0|    }
  155|      0|    else {
  156|      0|      mrb_value *ptr, *p;
  157|      0|      mrb_int len;
  158|       |
  159|      0|      p = a->as.heap.ptr;
  160|      0|      len = a->as.heap.len * sizeof(mrb_value);
  161|      0|      ptr = (mrb_value*)mrb_malloc(mrb, len);
  162|      0|      if (p) {
  ------------------
  |  Branch (162:11): [True: 0, False: 0]
  ------------------
  163|      0|        array_copy(ptr, p, a->as.heap.len);
  164|      0|      }
  165|      0|      a->as.heap.ptr = ptr;
  166|      0|      a->as.heap.aux.capa = a->as.heap.len;
  167|      0|      mrb_ary_decref(mrb, shared);
  168|      0|    }
  169|      0|    ARY_UNSET_SHARED_FLAG(a);
  ------------------
  |  |   86|      0|#define ARY_UNSET_SHARED_FLAG(a) ((a)->flags &= ~MRB_ARY_SHARED)
  |  |  ------------------
  |  |  |  |   83|      0|#define MRB_ARY_SHARED      256
  |  |  ------------------
  ------------------
  170|      0|  }
  171|   164k|}
array.c:ary_expand_capa:
  203|  10.6k|{
  204|  10.6k|  mrb_int capa = ARY_CAPA(a);
  ------------------
  |  |   82|  10.6k|#define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   63|  10.6k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  10.6k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 1.64k, False: 9.00k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   30|  1.64k|# define MRB_ARY_EMBED_LEN_MAX ((mrb_int)(sizeof(void*)*3/sizeof(mrb_value)))
  |  |  ------------------
  ------------------
  205|       |
  206|  10.6k|  ary_check_too_big(mrb, len, 0);
  207|  10.6k|  if (capa < ARY_DEFAULT_LEN) {
  ------------------
  |  |   17|  10.6k|#define ARY_DEFAULT_LEN   4
  ------------------
  |  Branch (207:7): [True: 7.12k, False: 3.53k]
  ------------------
  208|  7.12k|    capa = ARY_DEFAULT_LEN;
  ------------------
  |  |   17|  7.12k|#define ARY_DEFAULT_LEN   4
  ------------------
  209|  7.12k|  }
  210|  14.7k|  while (capa < len) {
  ------------------
  |  Branch (210:10): [True: 4.10k, False: 10.6k]
  ------------------
  211|  4.10k|    if (capa <= ARY_MAX_SIZE / 2) {
  ------------------
  |  |   23|  4.10k|#define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|  4.10k|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|  4.10k|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|  4.10k|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|      0|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |  |  Branch (23:33): [Folded - Ignored]
  |  |  ------------------
  ------------------
  |  Branch (211:9): [True: 4.10k, False: 0]
  ------------------
  212|  4.10k|      capa *= 2;
  213|  4.10k|    }
  214|      0|    else {
  215|      0|      capa = len;
  216|      0|    }
  217|  4.10k|  }
  218|  10.6k|  if (capa < len || capa > ARY_MAX_SIZE) {
  ------------------
  |  |   23|  10.6k|#define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|  10.6k|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|  10.6k|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   19|  10.6k|#define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
  |  |  ------------------
  |  |               #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
  |  |  ------------------
  |  |  |  |   82|      0|# define MRB_INT_MAX INT64_MAX
  |  |  ------------------
  |  |  |  Branch (23:33): [Folded - Ignored]
  |  |  ------------------
  ------------------
  |  Branch (218:7): [True: 0, False: 10.6k]
  |  Branch (218:21): [True: 0, False: 10.6k]
  ------------------
  219|      0|    ary_too_big(mrb);
  220|      0|  }
  221|       |
  222|  10.6k|  if (ARY_EMBED_P(a)) {
  ------------------
  |  |   63|  10.6k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  ------------------
  |  |  |  |   62|  10.6k|#define MRB_ARY_EMBED_MASK  7
  |  |  ------------------
  |  |  |  Branch (63:24): [True: 1.64k, False: 9.00k]
  |  |  ------------------
  ------------------
  223|  1.64k|    mrb_value *ptr = ARY_EMBED_PTR(a);
  ------------------
  |  |   67|  1.64k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  ------------------
  224|  1.64k|    mrb_int len = ARY_EMBED_LEN(a);
  ------------------
  |  |   65|  1.64k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  ------------------
  |  |  |  |   62|  1.64k|#define MRB_ARY_EMBED_MASK  7
  |  |  ------------------
  ------------------
  225|  1.64k|    mrb_value *expanded_ptr = (mrb_value*)mrb_malloc(mrb, sizeof(mrb_value)*capa);
  226|       |
  227|  1.64k|    ARY_UNSET_EMBED_FLAG(a);
  ------------------
  |  |   64|  1.64k|#define ARY_UNSET_EMBED_FLAG(a) ((a)->flags &= ~(MRB_ARY_EMBED_MASK))
  |  |  ------------------
  |  |  |  |   62|  1.64k|#define MRB_ARY_EMBED_MASK  7
  |  |  ------------------
  ------------------
  228|  1.64k|    array_copy(expanded_ptr, ptr, len);
  229|  1.64k|    a->as.heap.len = len;
  230|  1.64k|    a->as.heap.aux.capa = capa;
  231|  1.64k|    a->as.heap.ptr = expanded_ptr;
  232|  1.64k|  }
  233|  9.00k|  else if (capa > a->as.heap.aux.capa) {
  ------------------
  |  Branch (233:12): [True: 9.00k, False: 0]
  ------------------
  234|  9.00k|    mrb_value *expanded_ptr = (mrb_value*)mrb_realloc(mrb, a->as.heap.ptr, sizeof(mrb_value)*capa);
  235|       |
  236|  9.00k|    a->as.heap.aux.capa = capa;
  237|  9.00k|    a->as.heap.ptr = expanded_ptr;
  238|  9.00k|  }
  239|  10.6k|}
array.c:ary_fill_with_nil:
  132|    625|{
  133|    625|  mrb_value nil = mrb_nil_value();
  134|       |
  135|  2.41k|  while (size--) {
  ------------------
  |  Branch (135:10): [True: 1.79k, False: 625]
  ------------------
  136|  1.79k|    *ptr++ = nil;
  137|  1.79k|  }
  138|    625|}
array.c:ary_concat:
  309|  23.8k|{
  310|  23.8k|  mrb_int len;
  311|       |
  312|  23.8k|  if (ARY_LEN(a) == 0) {
  ------------------
  |  |   70|  23.8k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  23.8k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 23.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  23.8k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (312:7): [True: 0, False: 23.8k]
  ------------------
  313|      0|    ary_replace(mrb, a, a2);
  314|      0|    return;
  315|      0|  }
  316|  23.8k|  ary_check_too_big(mrb, ARY_LEN(a2), ARY_LEN(a));
  ------------------
  |  |   70|  23.8k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  23.8k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 23.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  23.8k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                ary_check_too_big(mrb, ARY_LEN(a2), ARY_LEN(a));
  ------------------
  |  |   70|  23.8k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  23.8k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 23.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  23.8k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  317|  23.8k|  len = ARY_LEN(a) + ARY_LEN(a2);
  ------------------
  |  |   70|  23.8k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  23.8k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 23.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  23.8k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                len = ARY_LEN(a) + ARY_LEN(a2);
  ------------------
  |  |   70|  23.8k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  23.8k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 23.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  23.8k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  318|       |
  319|  23.8k|  ary_modify(mrb, a);
  320|  23.8k|  if (ARY_CAPA(a) < len) {
  ------------------
  |  |   82|  23.8k|#define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   63|  23.8k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 23.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   30|  23.8k|# define MRB_ARY_EMBED_LEN_MAX ((mrb_int)(sizeof(void*)*3/sizeof(mrb_value)))
  |  |  ------------------
  ------------------
  |  Branch (320:7): [True: 0, False: 23.8k]
  ------------------
  321|      0|    ary_expand_capa(mrb, a, len);
  322|      0|  }
  323|  23.8k|  array_copy(ARY_PTR(a)+ARY_LEN(a), ARY_PTR(a2), ARY_LEN(a2));
  ------------------
  |  |   71|  23.8k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|  23.8k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 23.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|  23.8k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
                array_copy(ARY_PTR(a)+ARY_LEN(a), ARY_PTR(a2), ARY_LEN(a2));
  ------------------
  |  |   70|  23.8k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  23.8k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 23.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  23.8k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                array_copy(ARY_PTR(a)+ARY_LEN(a), ARY_PTR(a2), ARY_LEN(a2));
  ------------------
  |  |   71|  23.8k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|  23.8k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 23.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|  23.8k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
                array_copy(ARY_PTR(a)+ARY_LEN(a), ARY_PTR(a2), ARY_LEN(a2));
  ------------------
  |  |   70|  23.8k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  23.8k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 23.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  23.8k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  324|  23.8k|  mrb_write_barrier(mrb, (struct RBasic*)a);
  325|  23.8k|  ARY_SET_LEN(a, len);
  ------------------
  |  |   74|  23.8k|#define ARY_SET_LEN(a,n) do {\
  |  |   75|  23.8k|  if (ARY_EMBED_P(a)) {\
  |  |  ------------------
  |  |  |  |   63|  23.8k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 23.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|  23.8k|    mrb_assert((n) <= MRB_ARY_EMBED_LEN_MAX); \
  |  |  ------------------
  |  |  |  |   68|  23.8k|#define mrb_assert(p) ((void)0)
  |  |  ------------------
  |  |   77|  23.8k|    ARY_SET_EMBED_LEN(a,n);\
  |  |  ------------------
  |  |  |  |   66|  23.8k|#define ARY_SET_EMBED_LEN(a,len) ((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  23.8k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|  23.8k|  }\
  |  |   79|  23.8k|  else\
  |  |   80|  23.8k|    (a)->as.heap.len = (n);\
  |  |   81|  23.8k|} while (0)
  |  |  ------------------
  |  |  |  Branch (81:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  326|  23.8k|}
array.c:ary_replace:
  385|  5.99k|{
  386|  5.99k|  mrb_int len = ARY_LEN(b);
  ------------------
  |  |   70|  5.99k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  5.99k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  5.99k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 4.98k, False: 1.01k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  4.98k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  4.98k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  387|       |
  388|  5.99k|  ary_modify_check(mrb, a);
  ------------------
  |  |  140|  5.99k|#define ary_modify_check(mrb, a) mrb_check_frozen((mrb), (a))
  ------------------
  389|  5.99k|  if (a == b) return;
  ------------------
  |  Branch (389:7): [True: 0, False: 5.99k]
  ------------------
  390|  5.99k|  if (ARY_SHARED_P(a)) {
  ------------------
  |  |   84|  5.99k|#define ARY_SHARED_P(a) ((a)->flags & MRB_ARY_SHARED)
  |  |  ------------------
  |  |  |  |   83|  5.99k|#define MRB_ARY_SHARED      256
  |  |  ------------------
  |  |  |  Branch (84:25): [True: 0, False: 5.99k]
  |  |  ------------------
  ------------------
  391|      0|    mrb_ary_decref(mrb, a->as.heap.aux.shared);
  392|      0|    a->as.heap.aux.capa = 0;
  393|      0|    a->as.heap.len = 0;
  394|      0|    a->as.heap.ptr = NULL;
  395|      0|    ARY_UNSET_SHARED_FLAG(a);
  ------------------
  |  |   86|      0|#define ARY_UNSET_SHARED_FLAG(a) ((a)->flags &= ~MRB_ARY_SHARED)
  |  |  ------------------
  |  |  |  |   83|      0|#define MRB_ARY_SHARED      256
  |  |  ------------------
  ------------------
  396|      0|  }
  397|  5.99k|  if (ARY_SHARED_P(b)) {
  ------------------
  |  |   84|  5.99k|#define ARY_SHARED_P(a) ((a)->flags & MRB_ARY_SHARED)
  |  |  ------------------
  |  |  |  |   83|  5.99k|#define MRB_ARY_SHARED      256
  |  |  ------------------
  |  |  |  Branch (84:25): [True: 0, False: 5.99k]
  |  |  ------------------
  ------------------
  398|    521|  shared_b:
  399|    521|    if (ARY_EMBED_P(a)) {
  ------------------
  |  |   63|    521|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  ------------------
  |  |  |  |   62|    521|#define MRB_ARY_EMBED_MASK  7
  |  |  ------------------
  |  |  |  Branch (63:24): [True: 0, False: 521]
  |  |  ------------------
  ------------------
  400|      0|      ARY_UNSET_EMBED_FLAG(a);
  ------------------
  |  |   64|      0|#define ARY_UNSET_EMBED_FLAG(a) ((a)->flags &= ~(MRB_ARY_EMBED_MASK))
  |  |  ------------------
  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  ------------------
  ------------------
  401|      0|    }
  402|    521|    else {
  403|    521|      mrb_free(mrb, a->as.heap.ptr);
  404|    521|    }
  405|    521|    a->as.heap.ptr = b->as.heap.ptr;
  406|    521|    a->as.heap.len = len;
  407|    521|    a->as.heap.aux.shared = b->as.heap.aux.shared;
  408|    521|    a->as.heap.aux.shared->refcnt++;
  409|    521|    ARY_SET_SHARED_FLAG(a);
  ------------------
  |  |   85|    521|#define ARY_SET_SHARED_FLAG(a) ((a)->flags |= MRB_ARY_SHARED)
  |  |  ------------------
  |  |  |  |   83|    521|#define MRB_ARY_SHARED      256
  |  |  ------------------
  ------------------
  410|    521|    mrb_write_barrier(mrb, (struct RBasic*)a);
  411|    521|    return;
  412|      0|  }
  413|  5.99k|  if (!mrb_frozen_p(b) && len > ARY_REPLACE_SHARED_MIN) {
  ------------------
  |  |   28|  5.99k|#define mrb_frozen_p(o) MRB_FROZEN_P(o)
  |  |  ------------------
  |  |  |  |   25|  11.9k|#define MRB_FROZEN_P(o) ((o)->flags & MRB_FL_OBJ_IS_FROZEN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|  5.99k|#define MRB_FL_OBJ_IS_FROZEN (1 << 20)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (!mrb_frozen_p(b) && len > ARY_REPLACE_SHARED_MIN) {
  ------------------
  |  |  381|  5.99k|#define ARY_REPLACE_SHARED_MIN 20
  ------------------
  |  Branch (413:7): [True: 5.99k, False: 0]
  |  Branch (413:27): [True: 521, False: 5.47k]
  ------------------
  414|    521|    ary_make_shared(mrb, b);
  415|    521|    goto shared_b;
  416|    521|  }
  417|  5.47k|  if (ARY_CAPA(a) < len)
  ------------------
  |  |   82|  5.47k|#define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   63|  5.47k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  5.47k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 5.47k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   30|      0|# define MRB_ARY_EMBED_LEN_MAX ((mrb_int)(sizeof(void*)*3/sizeof(mrb_value)))
  |  |  ------------------
  ------------------
  |  Branch (417:7): [True: 5.47k, False: 0]
  ------------------
  418|  5.47k|    ary_expand_capa(mrb, a, len);
  419|  5.47k|  array_copy(ARY_PTR(a), ARY_PTR(b), len);
  ------------------
  |  |   71|  5.47k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|  5.47k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  5.47k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 5.47k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
                array_copy(ARY_PTR(a), ARY_PTR(b), len);
  ------------------
  |  |   71|  5.47k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|  5.47k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  5.47k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 4.98k, False: 493]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|  4.98k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  420|  5.47k|  mrb_write_barrier(mrb, (struct RBasic*)a);
  421|  5.47k|  ARY_SET_LEN(a, len);
  ------------------
  |  |   74|  5.47k|#define ARY_SET_LEN(a,n) do {\
  |  |   75|  5.47k|  if (ARY_EMBED_P(a)) {\
  |  |  ------------------
  |  |  |  |   63|  5.47k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  5.47k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 5.47k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|    mrb_assert((n) <= MRB_ARY_EMBED_LEN_MAX); \
  |  |  ------------------
  |  |  |  |   68|      0|#define mrb_assert(p) ((void)0)
  |  |  ------------------
  |  |   77|      0|    ARY_SET_EMBED_LEN(a,n);\
  |  |  ------------------
  |  |  |  |   66|      0|#define ARY_SET_EMBED_LEN(a,len) ((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|      0|  }\
  |  |   79|  5.47k|  else\
  |  |   80|  5.47k|    (a)->as.heap.len = (n);\
  |  |   81|  5.47k|} while (0)
  |  |  ------------------
  |  |  |  Branch (81:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  422|  5.47k|}
array.c:ary_make_shared:
  182|    521|{
  183|    521|  if (!ARY_SHARED_P(a) && !ARY_EMBED_P(a)) {
  ------------------
  |  |   84|  1.04k|#define ARY_SHARED_P(a) ((a)->flags & MRB_ARY_SHARED)
  |  |  ------------------
  |  |  |  |   83|    521|#define MRB_ARY_SHARED      256
  |  |  ------------------
  ------------------
                if (!ARY_SHARED_P(a) && !ARY_EMBED_P(a)) {
  ------------------
  |  |   63|    521|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  ------------------
  |  |  |  |   62|    521|#define MRB_ARY_EMBED_MASK  7
  |  |  ------------------
  ------------------
  |  Branch (183:7): [True: 521, False: 0]
  |  Branch (183:27): [True: 521, False: 0]
  ------------------
  184|    521|    mrb_shared_array *shared = (mrb_shared_array*)mrb_malloc(mrb, sizeof(mrb_shared_array));
  185|    521|    mrb_value *ptr = a->as.heap.ptr;
  186|    521|    mrb_int len = a->as.heap.len;
  187|       |
  188|    521|    shared->refcnt = 1;
  189|    521|    if (a->as.heap.aux.capa > len) {
  ------------------
  |  Branch (189:9): [True: 290, False: 231]
  ------------------
  190|    290|      a->as.heap.ptr = shared->ptr = (mrb_value*)mrb_realloc(mrb, ptr, sizeof(mrb_value)*len+1);
  191|    290|    }
  192|    231|    else {
  193|    231|      shared->ptr = ptr;
  194|    231|    }
  195|    521|    shared->len = len;
  196|    521|    a->as.heap.aux.shared = shared;
  197|    521|    ARY_SET_SHARED_FLAG(a);
  ------------------
  |  |   85|    521|#define ARY_SET_SHARED_FLAG(a) ((a)->flags |= MRB_ARY_SHARED)
  |  |  ------------------
  |  |  |  |   83|    521|#define MRB_ARY_SHARED      256
  |  |  ------------------
  ------------------
  198|    521|  }
  199|    521|}
array.c:ary_dup:
  777|  30.0k|{
  778|  30.0k|  return ary_new_from_values(mrb, ARY_LEN(a), ARY_PTR(a));
  ------------------
  |  |   70|  30.0k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  30.0k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  30.0k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 29.0k, False: 952]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  29.0k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  29.0k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                return ary_new_from_values(mrb, ARY_LEN(a), ARY_PTR(a));
  ------------------
  |  |   71|  30.0k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|  30.0k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  30.0k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 29.0k, False: 952]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|  29.0k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  779|  30.0k|}
array.c:array_copy:
   92|   220k|{
   93|   583k|  for (mrb_int i = 0; i < size; i++) {
  ------------------
  |  Branch (93:23): [True: 362k, False: 220k]
  ------------------
   94|   362k|    dst[i] = src[i];
   95|   362k|  }
   96|   220k|}
array.c:mrb_ary_push_m:
  538|  52.9k|{
  539|  52.9k|  mrb_int argc;
  540|  52.9k|  const mrb_value *argv;
  541|  52.9k|  mrb_int len, len2;
  542|  52.9k|  struct RArray *a;
  543|       |
  544|  52.9k|  argc = mrb_get_argc(mrb);
  545|  52.9k|  if (argc == 1) {
  ------------------
  |  Branch (545:7): [True: 52.9k, False: 0]
  ------------------
  546|  52.9k|    mrb_ary_push(mrb, self, mrb_get_argv(mrb)[0]);
  547|  52.9k|    return self;
  548|  52.9k|  }
  549|      0|  a = mrb_ary_ptr(self);
  ------------------
  |  |   51|      0|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  550|      0|  ary_modify(mrb, a);
  551|      0|  len = ARY_LEN(a);
  ------------------
  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  552|      0|  len2 = len + argc;
  553|      0|  if (ARY_CAPA(a) < len2) {
  ------------------
  |  |   82|      0|#define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   30|      0|# define MRB_ARY_EMBED_LEN_MAX ((mrb_int)(sizeof(void*)*3/sizeof(mrb_value)))
  |  |  ------------------
  ------------------
  |  Branch (553:7): [True: 0, False: 0]
  ------------------
  554|      0|    ary_expand_capa(mrb, a, len2);
  555|      0|  }
  556|      0|  argv = mrb_get_argv(mrb);
  557|      0|  array_copy(ARY_PTR(a)+len, argv, argc);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  558|      0|  ARY_SET_LEN(a, len2);
  ------------------
  |  |   74|      0|#define ARY_SET_LEN(a,n) do {\
  |  |   75|      0|  if (ARY_EMBED_P(a)) {\
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|    mrb_assert((n) <= MRB_ARY_EMBED_LEN_MAX); \
  |  |  ------------------
  |  |  |  |   68|      0|#define mrb_assert(p) ((void)0)
  |  |  ------------------
  |  |   77|      0|    ARY_SET_EMBED_LEN(a,n);\
  |  |  ------------------
  |  |  |  |   66|      0|#define ARY_SET_EMBED_LEN(a,len) ((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|      0|  }\
  |  |   79|      0|  else\
  |  |   80|      0|    (a)->as.heap.len = (n);\
  |  |   81|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (81:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  559|      0|  while (argc--) {
  ------------------
  |  Branch (559:10): [True: 0, False: 0]
  ------------------
  560|      0|    mrb_field_write_barrier_value(mrb, (struct RBasic*)a, *argv);
  ------------------
  |  | 1317|      0|#define mrb_field_write_barrier_value(mrb, obj, val) do{\
  |  | 1318|      0|  if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |   22|      0|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1319|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1319:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  561|      0|    argv++;
  562|      0|  }
  563|      0|  return self;
  564|  52.9k|}
array.c:mrb_ary_aget:
  954|  1.28k|{
  955|  1.28k|  struct RArray *a = mrb_ary_ptr(self);
  ------------------
  |  |   51|  1.28k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  1.28k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  956|  1.28k|  mrb_int i;
  957|  1.28k|  mrb_int len, alen;
  958|  1.28k|  mrb_value index;
  959|       |
  960|  1.28k|  if (mrb_get_argc(mrb) == 1) {
  ------------------
  |  Branch (960:7): [True: 1.28k, False: 0]
  ------------------
  961|  1.28k|    index = mrb_get_arg1(mrb);
  962|  1.28k|    switch (mrb_type(index)) {
  963|       |      /* a[n..m] */
  964|      0|    case MRB_TT_RANGE:
  ------------------
  |  Branch (964:5): [True: 0, False: 1.28k]
  ------------------
  965|      0|      if (mrb_range_beg_len(mrb, index, &i, &len, ARY_LEN(a), TRUE) == MRB_RANGE_OK) {
  ------------------
  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    if (mrb_range_beg_len(mrb, index, &i, &len, ARY_LEN(a), TRUE) == MRB_RANGE_OK) {
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  |  Branch (965:11): [True: 0, False: 0]
  ------------------
  966|      0|        return ary_subseq(mrb, a, i, len);
  967|      0|      }
  968|      0|      else {
  969|      0|        return mrb_nil_value();
  970|      0|      }
  971|  1.02k|    case MRB_TT_INTEGER:
  ------------------
  |  Branch (971:5): [True: 1.02k, False: 258]
  ------------------
  972|  1.02k|      return mrb_ary_ref(mrb, self, mrb_integer(index));
  ------------------
  |  |  231|  1.02k|#define mrb_ary_ref(mrb, ary, n) mrb_ary_entry(ary, n)
  ------------------
  973|    258|    default:
  ------------------
  |  Branch (973:5): [True: 258, False: 1.02k]
  ------------------
  974|    258|      return mrb_ary_ref(mrb, self, aget_index(mrb, index));
  ------------------
  |  |  231|    258|#define mrb_ary_ref(mrb, ary, n) mrb_ary_entry(ary, n)
  ------------------
  975|  1.28k|    }
  976|  1.28k|  }
  977|       |
  978|      0|  mrb_get_args(mrb, "oi", &index, &len);
  979|      0|  i = aget_index(mrb, index);
  980|      0|  alen = ARY_LEN(a);
  ------------------
  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  981|      0|  if (i < 0) i += alen;
  ------------------
  |  Branch (981:7): [True: 0, False: 0]
  ------------------
  982|      0|  if (i < 0 || alen < i) return mrb_nil_value();
  ------------------
  |  Branch (982:7): [True: 0, False: 0]
  |  Branch (982:16): [True: 0, False: 0]
  ------------------
  983|      0|  if (len < 0) return mrb_nil_value();
  ------------------
  |  Branch (983:7): [True: 0, False: 0]
  ------------------
  984|      0|  if (alen == i) return mrb_ary_new(mrb);
  ------------------
  |  Branch (984:7): [True: 0, False: 0]
  ------------------
  985|      0|  if (len > alen - i) len = alen - i;
  ------------------
  |  Branch (985:7): [True: 0, False: 0]
  ------------------
  986|       |
  987|      0|  return ary_subseq(mrb, a, i, len);
  988|      0|}
array.c:aget_index:
  907|  28.0k|{
  908|  28.0k|  if (mrb_integer_p(index)) {
  ------------------
  |  |  171|  28.0k|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|  56.1k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 27.8k, False: 270]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|    270|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|    540|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|    540|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 270, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  909|  27.8k|    return mrb_integer(index);
  ------------------
  |  |  166|  27.8k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
  910|  27.8k|  }
  911|    270|#ifndef MRB_NO_FLOAT
  912|    270|  else if (mrb_float_p(index)) {
  ------------------
  |  |  179|    270|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|    270|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 270, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  913|    270|    return (mrb_int)mrb_float(index);
  ------------------
  |  |  155|    270|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  914|    270|  }
  915|      0|#endif
  916|      0|  else {
  917|      0|    mrb_int i, argc;
  918|      0|    const mrb_value *argv;
  919|       |
  920|      0|    mrb_get_args(mrb, "i*!", &i, &argv, &argc);
  921|      0|    return i;
  922|      0|  }
  923|  28.0k|}
array.c:mrb_ary_aset:
 1027|  26.6k|{
 1028|  26.6k|  mrb_value v1, v2, v3;
 1029|  26.6k|  mrb_int i, len;
 1030|       |
 1031|  26.6k|  if (mrb_get_argc(mrb) == 2) {
  ------------------
  |  Branch (1031:7): [True: 25.5k, False: 1.15k]
  ------------------
 1032|  25.5k|    const mrb_value *vs = mrb_get_argv(mrb);
 1033|  25.5k|    v1 = vs[0]; v2 = vs[1];
 1034|       |
 1035|       |    /* a[n..m] = v */
 1036|  25.5k|    switch (mrb_range_beg_len(mrb, v1, &i, &len, RARRAY_LEN(self), FALSE)) {
  ------------------
  |  |   72|  25.5k|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|  25.5k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  25.5k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  25.5k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 721, False: 24.8k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    721|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    721|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  switch (mrb_range_beg_len(mrb, v1, &i, &len, RARRAY_LEN(self), FALSE)) {
  ------------------
  |  |   51|  25.5k|#  define FALSE 0
  ------------------
  |  Branch (1036:13): [True: 0, False: 25.5k]
  ------------------
 1037|  25.5k|    case MRB_RANGE_TYPE_MISMATCH:
  ------------------
  |  Branch (1037:5): [True: 25.5k, False: 0]
  ------------------
 1038|  25.5k|      mrb_ary_set(mrb, self, aget_index(mrb, v1), v2);
 1039|  25.5k|      break;
 1040|      0|    case MRB_RANGE_OK:
  ------------------
  |  Branch (1040:5): [True: 0, False: 25.5k]
  ------------------
 1041|      0|      mrb_ary_splice(mrb, self, i, len, v2);
 1042|      0|      break;
 1043|      0|    case MRB_RANGE_OUT:
  ------------------
  |  Branch (1043:5): [True: 0, False: 25.5k]
  ------------------
 1044|      0|      mrb_raisef(mrb, E_RANGE_ERROR, "%v out of range", v1);
  ------------------
  |  | 1379|      0|#define E_RANGE_ERROR        mrb_exc_get_id(mrb, MRB_ERROR_SYM(RangeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1045|      0|      break;
 1046|  25.5k|    }
 1047|  25.5k|    return v2;
 1048|  25.5k|  }
 1049|       |
 1050|  1.15k|  mrb_get_args(mrb, "ooo", &v1, &v2, &v3);
 1051|       |  /* a[n,m] = v */
 1052|  1.15k|  mrb_ary_splice(mrb, self, aget_index(mrb, v1), aget_index(mrb, v2), v3);
 1053|  1.15k|  return v3;
 1054|  26.6k|}
array.c:mrb_ary_index_m:
 1133|  1.47k|{
 1134|  1.47k|  mrb_value obj = mrb_get_arg1(mrb);
 1135|       |
 1136|  6.55k|  for (mrb_int i = 0; i < RARRAY_LEN(self); i++) {
  ------------------
  |  |   72|  6.55k|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|  6.55k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  6.55k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  6.55k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 2.14k, False: 4.40k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|  2.14k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  2.14k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1136:23): [True: 5.89k, False: 658]
  ------------------
 1137|  5.89k|    if (mrb_equal(mrb, RARRAY_PTR(self)[i], obj)) {
  ------------------
  |  |   73|  5.89k|#define RARRAY_PTR(a) ARY_PTR(RARRAY(a))
  |  |  ------------------
  |  |  |  |   71|  5.89k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  5.89k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  5.89k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 1.48k, False: 4.40k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  1.48k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1137:9): [True: 812, False: 5.08k]
  ------------------
 1138|    812|      return mrb_int_value(mrb, i);
 1139|    812|    }
 1140|  5.89k|  }
 1141|    658|  return mrb_nil_value();
 1142|  1.47k|}
array.c:mrb_ary_replace_m:
  437|  5.99k|{
  438|  5.99k|  mrb_value other;
  439|       |
  440|  5.99k|  mrb_get_args(mrb, "A", &other);
  441|  5.99k|  mrb_ary_replace(mrb, self, other);
  442|       |
  443|  5.99k|  return self;
  444|  5.99k|}
array.c:mrb_ary_size:
 1189|  21.1k|{
 1190|  21.1k|  struct RArray *a = mrb_ary_ptr(self);
  ------------------
  |  |   51|  21.1k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  21.1k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1191|       |
 1192|  21.1k|  return mrb_int_value(mrb, ARY_LEN(a));
  ------------------
  |  |   70|  21.1k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  21.1k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  21.1k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 15.0k, False: 6.05k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  15.0k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  15.0k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1193|  21.1k|}
array.c:mrb_ary_reverse_bang:
  482|  5.71k|{
  483|  5.71k|  struct RArray *a = mrb_ary_ptr(self);
  ------------------
  |  |   51|  5.71k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  5.71k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  484|  5.71k|  mrb_int len = ARY_LEN(a);
  ------------------
  |  |   70|  5.71k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  5.71k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  5.71k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 5.71k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  5.71k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  5.71k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  485|       |
  486|  5.71k|  if (len > 1) {
  ------------------
  |  Branch (486:7): [True: 0, False: 5.71k]
  ------------------
  487|      0|    mrb_value *p1, *p2;
  488|       |
  489|      0|    ary_modify(mrb, a);
  490|      0|    p1 = ARY_PTR(a);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  491|      0|    p2 = p1 + len - 1;
  492|       |
  493|      0|    while (p1 < p2) {
  ------------------
  |  Branch (493:12): [True: 0, False: 0]
  ------------------
  494|      0|      mrb_value tmp = *p1;
  495|      0|      *p1++ = *p2;
  496|      0|      *p2-- = tmp;
  497|      0|    }
  498|      0|  }
  499|  5.71k|  return self;
  500|  5.71k|}
array.c:mrb_ary_eq:
 1360|  23.8k|{
 1361|  23.8k|  mrb_value ary2 = mrb_get_arg1(mrb);
 1362|       |
 1363|  23.8k|  mrb->c->ci->mid = 0;
 1364|  23.8k|  if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_true_value();
  ------------------
  |  Branch (1364:7): [True: 0, False: 23.8k]
  ------------------
 1365|  23.8k|  if (!mrb_array_p(ary2)) {
  ------------------
  |  |  186|  23.8k|#define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
  |  |  ------------------
  |  |  |  |   78|  23.8k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  47.6k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  47.6k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 23.8k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 23.8k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 23.8k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1366|  23.8k|    return mrb_false_value();
 1367|  23.8k|  }
 1368|      0|  if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return mrb_false_value();
  ------------------
  |  |   72|      0|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return mrb_false_value();
  ------------------
  |  |   72|      0|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1368:7): [True: 0, False: 0]
  ------------------
 1369|       |
 1370|      0|  return ary2;
 1371|      0|}

mrb_keep_backtrace:
  135|    145|{
  136|    145|  int ai;
  137|       |
  138|    145|  if (mrb->c->ci == NULL) return;
  ------------------
  |  Branch (138:7): [True: 0, False: 145]
  ------------------
  139|    145|  if (mrb_exc_ptr(exc)->backtrace) return;
  ------------------
  |  |   32|    145|#define mrb_exc_ptr(v) ((struct RException*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|    145|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  |  Branch (139:7): [True: 0, False: 145]
  ------------------
  140|    145|  ai = mrb_gc_arena_save(mrb);
  ------------------
  |  | 1306|    145|#define mrb_gc_arena_save(mrb) ((mrb)->gc.arena_idx)
  ------------------
  141|    145|  struct RObject *backtrace = packed_backtrace(mrb);
  142|    145|  store_backtrace(mrb, exc, backtrace);
  143|    145|  mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|    145|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
  144|    145|}
backtrace.c:packed_backtrace:
  102|    145|{
  103|    145|  struct RData *backtrace;
  104|    145|  ptrdiff_t ciidx = mrb->c->ci - mrb->c->cibase;
  105|       |
  106|    145|  if (ciidx >= mrb->c->ciend - mrb->c->cibase)
  ------------------
  |  Branch (106:7): [True: 0, False: 145]
  ------------------
  107|      0|    ciidx = mrb->c->ciend - mrb->c->cibase; /* ciidx is broken... */
  108|       |
  109|       |  /* count the number of backtraces */
  110|    145|  int len = each_backtrace(mrb, ciidx, NULL, NULL);
  111|    145|  backtrace = mrb_data_object_alloc(mrb, NULL, NULL, &bt_type);
  112|    145|  if (len > 0) {
  ------------------
  |  Branch (112:7): [True: 74, False: 71]
  ------------------
  113|     74|    void *ptr = mrb_malloc(mrb, len * sizeof(struct backtrace_location));
  114|     74|    backtrace->data = ptr;
  115|     74|    backtrace->flags = len;
  116|     74|    each_backtrace(mrb, ciidx, pack_backtrace_i, &ptr);
  117|     74|  }
  118|     71|  else {
  119|     71|    backtrace->data = NULL;
  120|     71|    backtrace->flags = 0;
  121|     71|  }
  122|    145|  return (struct RObject*)backtrace;
  123|    145|}
backtrace.c:each_backtrace:
   32|    219|{
   33|    219|  uint32_t n = 0;
   34|       |
   35|    885|  for (ptrdiff_t i=ciidx; i >= 0; i--) {
  ------------------
  |  Branch (35:27): [True: 666, False: 219]
  ------------------
   36|    666|    struct backtrace_location loc;
   37|    666|    mrb_callinfo *ci;
   38|    666|    const mrb_code *pc;
   39|       |
   40|    666|    ci = &mrb->c->cibase[i];
   41|       |
   42|    666|    if (!ci->proc || MRB_PROC_CFUNC_P(ci->proc)) {
  ------------------
  |  |   65|    465|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  ------------------
  |  |  |  |   64|    465|#define MRB_PROC_CFUNC_FL 128
  |  |  ------------------
  |  |  |  Branch (65:29): [True: 0, False: 465]
  |  |  ------------------
  ------------------
  |  Branch (42:9): [True: 201, False: 465]
  ------------------
   43|    201|      if (!ci->mid) continue;
  ------------------
  |  Branch (43:11): [True: 53, False: 148]
  ------------------
   44|    148|      loc.irep = NULL;
   45|    148|    }
   46|    465|    else {
   47|    465|      loc.irep = ci->proc->body.irep;
   48|    465|      if (!loc.irep) continue;
  ------------------
  |  Branch (48:11): [True: 0, False: 465]
  ------------------
   49|    465|      if (!loc.irep->debug_info) continue;
  ------------------
  |  Branch (49:11): [True: 465, False: 0]
  ------------------
   50|      0|      if (mrb->c->cibase[i].pc) {
  ------------------
  |  Branch (50:11): [True: 0, False: 0]
  ------------------
   51|      0|        pc = &mrb->c->cibase[i].pc[-1];
   52|      0|      }
   53|      0|      else {
   54|      0|        continue;
   55|      0|      }
   56|      0|      loc.idx = (uint32_t)(pc - loc.irep->iseq);
   57|      0|    }
   58|    148|    loc.method_id = ci->mid;
   59|    148|    if (loc.irep == NULL) {
  ------------------
  |  Branch (59:9): [True: 148, False: 0]
  ------------------
   60|    444|      for (ptrdiff_t j=i-1; j >= 0; j--) {
  ------------------
  |  Branch (60:29): [True: 296, False: 148]
  ------------------
   61|    296|        ci = &mrb->c->cibase[j];
   62|       |
   63|    296|        if (!ci->proc) continue;
  ------------------
  |  Branch (63:13): [True: 0, False: 296]
  ------------------
   64|    296|        if (MRB_PROC_CFUNC_P(ci->proc)) continue;
  ------------------
  |  |   65|    296|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  ------------------
  |  |  |  |   64|    296|#define MRB_PROC_CFUNC_FL 128
  |  |  ------------------
  |  |  |  Branch (65:29): [True: 0, False: 296]
  |  |  ------------------
  ------------------
   65|       |
   66|    296|        const mrb_irep *irep = ci->proc->body.irep;
   67|    296|        if (!irep) continue;
  ------------------
  |  Branch (67:13): [True: 0, False: 296]
  ------------------
   68|    296|        if (!irep->debug_info) continue;
  ------------------
  |  Branch (68:13): [True: 296, False: 0]
  ------------------
   69|       |
   70|      0|        if (mrb->c->cibase[j].pc) {
  ------------------
  |  Branch (70:13): [True: 0, False: 0]
  ------------------
   71|      0|          pc = &mrb->c->cibase[j].pc[-1];
   72|      0|        }
   73|      0|        else {
   74|      0|          continue;
   75|      0|        }
   76|       |
   77|      0|        loc.irep = irep;
   78|      0|        loc.idx = (uint32_t)(pc - loc.irep->iseq);
   79|      0|        break;
   80|      0|      }
   81|    148|    }
   82|    148|    if (func) func(mrb, &loc, data);
  ------------------
  |  Branch (82:9): [True: 74, False: 74]
  ------------------
   83|    148|    n++;
   84|    148|  }
   85|    219|  return n;
   86|    219|}
backtrace.c:pack_backtrace_i:
   92|     74|{
   93|     74|  struct backtrace_location **pptr = (struct backtrace_location**)data;
   94|     74|  struct backtrace_location *ptr = *pptr;
   95|       |
   96|     74|  *ptr = *loc;
   97|     74|  *pptr = ptr+1;
   98|     74|}
backtrace.c:store_backtrace:
  127|    145|{
  128|    145|  struct RException *e = mrb_exc_ptr(exc);
  ------------------
  |  |   32|    145|#define mrb_exc_ptr(v) ((struct RException*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|    145|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  129|    145|  e->backtrace = backtrace;
  130|    145|  mrb_field_write_barrier(mrb, (struct RBasic*)e, (struct RBasic*)backtrace);
  131|    145|}

mrb_gc_mark_mt:
  286|  1.00M|{
  287|  1.00M|  mt_tbl *t = c->mt;
  288|       |
  289|  1.00M|  if (t == NULL) return;
  ------------------
  |  Branch (289:7): [True: 264k, False: 735k]
  ------------------
  290|   735k|  if (t->alloc == 0) return;
  ------------------
  |  Branch (290:7): [True: 172k, False: 563k]
  ------------------
  291|   563k|  if (t->size == 0) return;
  ------------------
  |  Branch (291:7): [True: 0, False: 563k]
  ------------------
  292|       |
  293|   563k|  mrb_sym *keys = (mrb_sym*)&t->ptr[t->alloc];
  294|   563k|  union mt_ptr *vals = t->ptr;
  295|  13.0M|  for (int i=0; i<t->alloc; i++) {
  ------------------
  |  Branch (295:17): [True: 12.4M, False: 563k]
  ------------------
  296|  12.4M|    if (MT_KEY_P(keys[i]) && (keys[i] & MT_FUNC_P) == 0) { /* Proc pointer */
  ------------------
  |  |   27|  24.9M|#define MT_KEY_P(k) (((k)>>2) != 0)
  |  |  ------------------
  |  |  |  Branch (27:21): [True: 7.83M, False: 4.62M]
  |  |  ------------------
  ------------------
                  if (MT_KEY_P(keys[i]) && (keys[i] & MT_FUNC_P) == 0) { /* Proc pointer */
  ------------------
  |  |   28|  7.83M|#define MT_FUNC_P 1
  ------------------
  |  Branch (296:30): [True: 3.05M, False: 4.77M]
  ------------------
  297|  3.05M|      struct RProc *p = vals[i].proc;
  298|  3.05M|      mrb_gc_mark(mrb, (struct RBasic*)p);
  299|  3.05M|    }
  300|  12.4M|  }
  301|   563k|  return;
  302|   563k|}
mrb_gc_mark_mt_size:
  306|  1.00M|{
  307|  1.00M|  struct mt_tbl *h = c->mt;
  308|       |
  309|  1.00M|  if (!h) return 0;
  ------------------
  |  Branch (309:7): [True: 264k, False: 735k]
  ------------------
  310|   735k|  return (size_t)h->size;
  311|  1.00M|}
mrb_gc_free_mt:
  324|  82.8k|{
  325|  82.8k|  if (c->mt) mt_free(mrb, c->mt);
  ------------------
  |  Branch (325:7): [True: 60.9k, False: 21.8k]
  ------------------
  326|  82.8k|}
mrb_class_name_class:
  330|  43.3k|{
  331|  43.3k|  mrb_value name;
  332|  43.3k|  mrb_sym nsym = MRB_SYM(__classname__);
  ------------------
  |  |   18|  43.3k|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  333|       |
  334|  43.3k|  if (mrb_obj_iv_defined(mrb, (struct RObject*)c, nsym)) return;
  ------------------
  |  Branch (334:7): [True: 4.28k, False: 39.0k]
  ------------------
  335|  39.0k|  if (outer == NULL || outer == mrb->object_class) {
  ------------------
  |  Branch (335:7): [True: 952, False: 38.0k]
  |  Branch (335:24): [True: 33.7k, False: 4.28k]
  ------------------
  336|  34.7k|    name = mrb_symbol_value(id);
  337|  34.7k|  }
  338|  4.28k|  else {
  339|  4.28k|    name = mrb_class_path(mrb, outer);
  340|  4.28k|    if (mrb_nil_p(name)) {      /* unnamed outer class */
  ------------------
  |  |  174|  4.28k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 4.28k]
  |  |  ------------------
  ------------------
  341|      0|      if (outer != mrb->object_class && outer != c) {
  ------------------
  |  Branch (341:11): [True: 0, False: 0]
  |  Branch (341:41): [True: 0, False: 0]
  ------------------
  342|      0|        mrb_obj_iv_set_force(mrb, (struct RObject*)c, MRB_SYM(__outer__),
  ------------------
  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  343|      0|                             mrb_obj_value(outer));
  344|      0|      }
  345|      0|      return;
  346|      0|    }
  347|  4.28k|    else {
  348|  4.28k|      mrb_int len;
  349|  4.28k|      const char *n = mrb_sym_name_len(mrb, id, &len);
  350|       |
  351|  4.28k|      mrb_str_cat_lit(mrb, name, "::");
  ------------------
  |  |  395|  4.28k|#define mrb_str_cat_lit(mrb, str, lit) mrb_str_cat(mrb, str, lit, mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|  4.28k|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
  352|  4.28k|      mrb_str_cat(mrb, name, n, len);
  353|  4.28k|    }
  354|  4.28k|  }
  355|  39.0k|  mrb_obj_iv_set_force(mrb, (struct RObject*)c, nsym, name);
  356|  39.0k|}
mrb_const_name_p:
  360|    476|{
  361|    476|  return len > 0 && ISUPPER(name[0]) && mrb_ident_p(name+1, len-1);
  ------------------
  |  | 1339|    952|#define ISUPPER(c) (((unsigned)(c) - 'A') < 26)
  |  |  ------------------
  |  |  |  Branch (1339:20): [True: 476, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (361:10): [True: 476, False: 0]
  |  Branch (361:41): [True: 476, False: 0]
  ------------------
  362|    476|}
mrb_define_module_id:
  478|    476|{
  479|    476|  return define_module(mrb, name, mrb->object_class);
  480|    476|}
mrb_define_module:
  484|  3.33k|{
  485|  3.33k|  return define_module(mrb, mrb_intern_cstr(mrb, name), mrb->object_class);
  486|  3.33k|}
mrb_vm_define_module:
  490|  6.66k|{
  491|  6.66k|  check_if_class_or_module(mrb, outer);
  492|  6.66k|  if (mrb_const_defined_at(mrb, outer, id)) {
  ------------------
  |  Branch (492:7): [True: 6.66k, False: 0]
  ------------------
  493|  6.66k|    mrb_value old = mrb_const_get(mrb, outer, id);
  494|       |
  495|  6.66k|    if (!mrb_module_p(old)) {
  ------------------
  |  |  194|  6.66k|#define mrb_module_p(o) WORDBOX_OBJ_TYPE_P(o, MODULE)
  |  |  ------------------
  |  |  |  |   78|  6.66k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  13.3k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  13.3k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 6.66k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 6.66k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 6.66k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  496|      0|      mrb_raisef(mrb, E_TYPE_ERROR, "%!v is not a module", old);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  497|      0|    }
  498|  6.66k|    return mrb_class_ptr(old);
  ------------------
  |  |   24|  6.66k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  6.66k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  499|  6.66k|  }
  500|      0|  return define_module(mrb, id, mrb_class_ptr(outer));
  ------------------
  |  |   24|      0|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  501|  6.66k|}
mrb_define_module_under_id:
  505|    476|{
  506|    476|  struct RClass * c = define_module(mrb, name, outer);
  507|       |
  508|    476|  setup_class(mrb, outer, c, name);
  509|    476|  return c;
  510|    476|}
mrb_define_module_under:
  514|    476|{
  515|    476|  mrb_sym id = mrb_intern_cstr(mrb, name);
  516|    476|  struct RClass * c = define_module(mrb, id, outer);
  517|       |
  518|    476|  setup_class(mrb, outer, c, id);
  519|    476|  return c;
  520|    476|}
mrb_define_class_id:
  552|  20.9k|{
  553|  20.9k|  if (!super) {
  ------------------
  |  Branch (553:7): [True: 0, False: 20.9k]
  ------------------
  554|      0|    mrb_warn(mrb, "no super class for '%n', Object assumed", name);
  555|      0|  }
  556|  20.9k|  return define_class(mrb, name, super, mrb->object_class);
  557|  20.9k|}
mrb_define_class:
  561|  19.0k|{
  562|  19.0k|  return mrb_define_class_id(mrb, mrb_intern_cstr(mrb, name), super);
  563|  19.0k|}
mrb_vm_define_class:
  593|  30.4k|{
  594|  30.4k|  struct RClass *s;
  595|  30.4k|  struct RClass *c;
  596|       |
  597|  30.4k|  if (!mrb_nil_p(super)) {
  ------------------
  |  |  174|  30.4k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  ------------------
  |  Branch (597:7): [True: 13.8k, False: 16.6k]
  ------------------
  598|  13.8k|    if (!mrb_class_p(super)) {
  ------------------
  |  |  193|  13.8k|#define mrb_class_p(o) WORDBOX_OBJ_TYPE_P(o, CLASS)
  |  |  ------------------
  |  |  |  |   78|  13.8k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  27.6k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  27.6k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 13.8k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 13.8k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 13.8k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  599|      0|      mrb_raisef(mrb, E_TYPE_ERROR, "superclass must be a Class (%!v given)", super);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  600|      0|    }
  601|  13.8k|    s = mrb_class_ptr(super);
  ------------------
  |  |   24|  13.8k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  13.8k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  602|  13.8k|  }
  603|  16.6k|  else {
  604|  16.6k|    s = NULL;
  605|  16.6k|  }
  606|  30.4k|  check_if_class_or_module(mrb, outer);
  607|  30.4k|  if (mrb_const_defined_at(mrb, outer, id)) {
  ------------------
  |  Branch (607:7): [True: 19.5k, False: 10.9k]
  ------------------
  608|  19.5k|    mrb_value old = mrb_const_get(mrb, outer, id);
  609|       |
  610|  19.5k|    if (!mrb_class_p(old)) {
  ------------------
  |  |  193|  19.5k|#define mrb_class_p(o) WORDBOX_OBJ_TYPE_P(o, CLASS)
  |  |  ------------------
  |  |  |  |   78|  19.5k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  39.0k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  39.0k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 19.5k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 19.5k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 19.5k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  611|      0|      mrb_raisef(mrb, E_TYPE_ERROR, "%!v is not a class", old);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  612|      0|    }
  613|  19.5k|    c = mrb_class_ptr(old);
  ------------------
  |  |   24|  19.5k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  19.5k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  614|  19.5k|    if (s) {
  ------------------
  |  Branch (614:9): [True: 4.76k, False: 14.7k]
  ------------------
  615|       |      /* check super class */
  616|  4.76k|      if (mrb_class_real(c->super) != s) {
  ------------------
  |  Branch (616:11): [True: 0, False: 4.76k]
  ------------------
  617|      0|        mrb_raisef(mrb, E_TYPE_ERROR, "superclass mismatch for class %v", old);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  618|      0|      }
  619|  4.76k|    }
  620|  19.5k|    return c;
  621|  19.5k|  }
  622|  10.9k|  c = define_class(mrb, id, s, mrb_class_ptr(outer));
  ------------------
  |  |   24|  10.9k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  10.9k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  623|  10.9k|  mrb_class_inherited(mrb, mrb_class_real(c->super), c);
  624|       |
  625|  10.9k|  return c;
  626|  30.4k|}
mrb_class_get_under_id:
  664|  4.28k|{
  665|  4.28k|  return class_from_sym(mrb, outer, name);
  666|  4.28k|}
mrb_class_get_id:
  676|  4.28k|{
  677|  4.28k|  return mrb_class_get_under_id(mrb, mrb->object_class, name);
  678|  4.28k|}
mrb_exc_get_id:
  682|    686|{
  683|    686|  struct RClass *exc, *e;
  684|    686|  mrb_value c = mrb_const_get(mrb, mrb_obj_value(mrb->object_class), name);
  685|       |
  686|    686|  if (!mrb_class_p(c)) {
  ------------------
  |  |  193|    686|#define mrb_class_p(o) WORDBOX_OBJ_TYPE_P(o, CLASS)
  |  |  ------------------
  |  |  |  |   78|    686|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  1.37k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  1.37k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 686]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 686]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 686, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  687|      0|    mrb_raise(mrb, E_EXCEPTION, "exception corrupted");
  ------------------
  |  | 1372|      0|#define E_EXCEPTION          mrb->eException_class
  ------------------
  688|      0|  }
  689|    686|  exc = e = mrb_class_ptr(c);
  ------------------
  |  |   24|    686|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|    686|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  690|       |
  691|  2.02k|  while (e) {
  ------------------
  |  Branch (691:10): [True: 2.02k, False: 0]
  ------------------
  692|  2.02k|    if (e == E_EXCEPTION)
  ------------------
  |  | 1372|  2.02k|#define E_EXCEPTION          mrb->eException_class
  ------------------
  |  Branch (692:9): [True: 686, False: 1.33k]
  ------------------
  693|    686|      return exc;
  694|  1.33k|    e = e->super;
  695|  1.33k|  }
  696|      0|  return E_EXCEPTION;
  ------------------
  |  | 1372|      0|#define E_EXCEPTION          mrb->eException_class
  ------------------
  697|    686|}
mrb_module_get_under:
  701|  1.42k|{
  702|  1.42k|  return module_from_sym(mrb, outer, mrb_intern_cstr(mrb, name));
  703|  1.42k|}
mrb_module_get_under_id:
  707|    477|{
  708|    477|  return module_from_sym(mrb, outer, name);
  709|    477|}
mrb_module_get:
  713|  1.42k|{
  714|  1.42k|  return mrb_module_get_under(mrb, mrb->object_class, name);
  715|  1.42k|}
mrb_module_get_id:
  719|    477|{
  720|    477|  return mrb_module_get_under_id(mrb, mrb->object_class, name);
  721|    477|}
mrb_define_class_under_id:
  741|  1.90k|{
  742|  1.90k|  struct RClass * c;
  743|       |
  744|       |#if 0
  745|       |  if (!super) {
  746|       |    mrb_warn(mrb, "no super class for '%C::%n', Object assumed", outer, id);
  747|       |  }
  748|       |#endif
  749|  1.90k|  c = define_class(mrb, name, super, outer);
  750|  1.90k|  setup_class(mrb, outer, c, name);
  751|  1.90k|  return c;
  752|  1.90k|}
mrb_define_class_under:
  756|    476|{
  757|    476|  return mrb_define_class_under_id(mrb, outer, mrb_intern_cstr(mrb, name), super);
  758|    476|}
mrb_define_method_raw:
  762|   656k|{
  763|   656k|  mt_tbl *h;
  764|   656k|  union mt_ptr ptr;
  765|       |
  766|   656k|  MRB_CLASS_ORIGIN(c);
  ------------------
  |  |   65|   656k|#define MRB_CLASS_ORIGIN(c) do {\
  |  |   66|   656k|  if ((c)->flags & MRB_FL_CLASS_IS_PREPENDED) {\
  |  |  ------------------
  |  |  |  |   63|   656k|#define MRB_FL_CLASS_IS_PREPENDED (1 << 19)
  |  |  ------------------
  |  |  |  Branch (66:7): [True: 0, False: 656k]
  |  |  ------------------
  |  |   67|      0|    (c) = (c)->super;\
  |  |   68|      0|    while (!((c)->flags & MRB_FL_CLASS_IS_ORIGIN)) {\
  |  |  ------------------
  |  |  |  |   64|      0|#define MRB_FL_CLASS_IS_ORIGIN (1 << 18)
  |  |  ------------------
  |  |  |  Branch (68:12): [True: 0, False: 0]
  |  |  ------------------
  |  |   69|      0|      (c) = (c)->super;\
  |  |   70|      0|    }\
  |  |   71|      0|  }\
  |  |   72|   656k|} while (0)
  |  |  ------------------
  |  |  |  Branch (72:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  767|   656k|  h = c->mt;
  768|   656k|  if (c->tt == MRB_TT_SCLASS && mrb_frozen_p(c)) {
  ------------------
  |  |   28|   104k|#define mrb_frozen_p(o) MRB_FROZEN_P(o)
  |  |  ------------------
  |  |  |  |   25|   104k|#define MRB_FROZEN_P(o) ((o)->flags & MRB_FL_OBJ_IS_FROZEN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|   104k|#define MRB_FL_OBJ_IS_FROZEN (1 << 20)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (25:25): [True: 0, False: 104k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (768:7): [True: 104k, False: 552k]
  ------------------
  769|      0|    mrb_value v = mrb_iv_get(mrb, mrb_obj_value(c), MRB_SYM(__attached__));
  ------------------
  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  770|      0|    mrb_check_frozen_value(mrb, v);
  771|      0|  }
  772|   656k|  else {
  773|   656k|    mrb_check_frozen(mrb, c);
  774|   656k|  }
  775|   656k|  if (!h) h = c->mt = mt_new(mrb);
  ------------------
  |  Branch (775:7): [True: 20.9k, False: 635k]
  ------------------
  776|   656k|  if (MRB_METHOD_PROC_P(m)) {
  ------------------
  |  |  113|   656k|#define MRB_METHOD_PROC_P(m) (!MRB_METHOD_FUNC_P(m))
  |  |  ------------------
  |  |  |  |  107|   656k|#define MRB_METHOD_FUNC_P(m) (((uintptr_t)(m))&MRB_METHOD_FUNC_FL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|   656k|#define MRB_METHOD_FUNC_FL 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (113:30): [True: 256k, False: 400k]
  |  |  ------------------
  ------------------
  777|   256k|    struct RProc *p = MRB_METHOD_PROC(m);
  ------------------
  |  |  114|   256k|#define MRB_METHOD_PROC(m) ((struct RProc*)(m))
  ------------------
  778|       |
  779|   256k|    ptr.proc = p;
  780|   256k|    if (p) {
  ------------------
  |  Branch (780:9): [True: 247k, False: 8.56k]
  ------------------
  781|   247k|      if (p->color != MRB_GC_RED) {
  ------------------
  |  |   79|   247k|#define MRB_GC_RED 7
  ------------------
  |  Branch (781:11): [True: 246k, False: 1.42k]
  ------------------
  782|   246k|        p->flags |= MRB_PROC_SCOPE;
  ------------------
  |  |   85|   246k|#define MRB_PROC_SCOPE 2048
  ------------------
  783|   246k|        p->c = NULL;
  784|   246k|        mrb_field_write_barrier(mrb, (struct RBasic*)c, (struct RBasic*)p);
  785|   246k|        if (!MRB_PROC_ENV_P(p)) {
  ------------------
  |  |   72|   246k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  ------------------
  |  |  |  |   71|   246k|#define MRB_PROC_ENVSET 1024
  |  |  ------------------
  ------------------
  |  Branch (785:13): [True: 212k, False: 33.7k]
  ------------------
  786|   212k|          MRB_PROC_SET_TARGET_CLASS(p, c);
  ------------------
  |  |   75|   212k|#define MRB_PROC_SET_TARGET_CLASS(p,tc) do {\
  |  |   76|   212k|  if (MRB_PROC_ENV_P(p)) {\
  |  |  ------------------
  |  |  |  |   72|   212k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|   212k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 212k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   77|      0|    (p)->e.env->c = (tc);\
  |  |   78|      0|    mrb_field_write_barrier(mrb, (struct RBasic*)(p)->e.env, (struct RBasic*)(tc));\
  |  |   79|      0|  }\
  |  |   80|   212k|  else {\
  |  |   81|   212k|    (p)->e.target_class = (tc);\
  |  |   82|   212k|    mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)(tc));\
  |  |   83|   212k|  }\
  |  |   84|   212k|} while (0)
  |  |  ------------------
  |  |  |  Branch (84:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  787|   212k|        }
  788|   246k|      }
  789|  1.42k|      else {
  790|  1.42k|        mrb_assert(MRB_FROZEN_P(p) && MRB_PROC_SCOPE_P(p));
  ------------------
  |  |   68|  1.42k|#define mrb_assert(p) ((void)0)
  ------------------
  791|  1.42k|        mrb_assert(p->c == NULL && p->upper == NULL && p->e.target_class == NULL);
  ------------------
  |  |   68|  1.42k|#define mrb_assert(p) ((void)0)
  ------------------
  792|  1.42k|      }
  793|   247k|    }
  794|   256k|  }
  795|   400k|  else {
  796|   400k|    ptr.func = MRB_METHOD_FUNC(m);
  ------------------
  |  |  110|   400k|#define MRB_METHOD_FUNC(m) ((mrb_func_t)((uintptr_t)(m)>>2))
  ------------------
  797|   400k|  }
  798|   656k|  mt_put(mrb, h, mid, MT_FLAGS(MRB_METHOD_FUNC_P(m), MRB_METHOD_NOARG_P(m)), ptr);
  ------------------
  |  |   34|  1.31M|#define MT_FLAGS(func_p, noarg_p) ((func_p)?MT_FUNC_P:0)|((noarg_p)?MT_NOARG_P:0)
  |  |  ------------------
  |  |  |  |   28|   400k|#define MT_FUNC_P 1
  |  |  ------------------
  |  |               #define MT_FLAGS(func_p, noarg_p) ((func_p)?MT_FUNC_P:0)|((noarg_p)?MT_NOARG_P:0)
  |  |  ------------------
  |  |  |  |   29|   143k|#define MT_NOARG_P 2
  |  |  ------------------
  |  |  |  Branch (34:36): [True: 400k, False: 256k]
  |  |  |  Branch (34:59): [True: 143k, False: 513k]
  |  |  |  Branch (34:60): [True: 143k, False: 513k]
  |  |  ------------------
  ------------------
  799|   656k|  mc_clear_by_id(mrb, mid);
  800|   656k|}
mrb_define_method_id:
  804|   390k|{
  805|   390k|  mrb_method_t m;
  806|   390k|  int ai = mrb_gc_arena_save(mrb);
  ------------------
  |  | 1306|   390k|#define mrb_gc_arena_save(mrb) ((mrb)->gc.arena_idx)
  ------------------
  807|       |
  808|   390k|  MRB_METHOD_FROM_FUNC(m, func);
  ------------------
  |  |  111|   390k|#define MRB_METHOD_FROM_FUNC(m,fn) ((m)=(mrb_method_t)((((uintptr_t)(fn))<<2)|MRB_METHOD_FUNC_FL))
  |  |  ------------------
  |  |  |  |  102|   390k|#define MRB_METHOD_FUNC_FL 1
  |  |  ------------------
  ------------------
  809|   390k|#ifndef MRB_USE_METHOD_T_STRUCT
  810|   390k|  mrb_assert(MRB_METHOD_FUNC(m) == func);
  ------------------
  |  |   68|   390k|#define mrb_assert(p) ((void)0)
  ------------------
  811|   390k|#endif
  812|   390k|  if (aspec == MRB_ARGS_NONE()) {
  ------------------
  |  |  919|   390k|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  |  Branch (812:7): [True: 139k, False: 251k]
  ------------------
  813|   139k|    MRB_METHOD_NOARG_SET(m);
  ------------------
  |  |  109|   139k|#define MRB_METHOD_NOARG_SET(m) ((m)=(mrb_method_t)(((uintptr_t)(m))|MRB_METHOD_NOARG_FL))
  |  |  ------------------
  |  |  |  |  103|   139k|#define MRB_METHOD_NOARG_FL 2
  |  |  ------------------
  ------------------
  814|   139k|  }
  815|   390k|  mrb_define_method_raw(mrb, c, mid, m);
  816|   390k|  mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|   390k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
  817|   390k|}
mrb_define_method:
  821|   294k|{
  822|   294k|  mrb_define_method_id(mrb, c, mrb_intern_cstr(mrb, name), func, aspec);
  823|   294k|}
mrb_get_argc:
  857|  81.5k|{
  858|  81.5k|  mrb_int argc = mrb->c->ci->n;
  859|       |
  860|  81.5k|  if (argc == 15) {
  ------------------
  |  Branch (860:7): [True: 0, False: 81.5k]
  ------------------
  861|      0|    struct RArray *a = mrb_ary_ptr(mrb->c->ci->stack[1]);
  ------------------
  |  |   51|      0|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  862|       |
  863|      0|    argc = ARY_LEN(a);
  ------------------
  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  864|      0|  }
  865|  81.5k|  return argc;
  866|  81.5k|}
mrb_get_argv:
  870|  79.1k|{
  871|  79.1k|  mrb_int argc = mrb->c->ci->n;
  872|  79.1k|  mrb_value *array_argv = mrb->c->ci->stack + 1;
  873|  79.1k|  if (argc == 15) {
  ------------------
  |  Branch (873:7): [True: 0, False: 79.1k]
  ------------------
  874|      0|    struct RArray *a = mrb_ary_ptr(*array_argv);
  ------------------
  |  |   51|      0|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  875|       |
  876|      0|    array_argv = ARY_PTR(a);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  877|      0|  }
  878|  79.1k|  return array_argv;
  879|  79.1k|}
mrb_get_arg1:
  883|  62.3k|{
  884|  62.3k|  mrb_callinfo *ci = mrb->c->ci;
  885|  62.3k|  mrb_int argc = ci->n;
  886|  62.3k|  mrb_value *array_argv = ci->stack + 1;
  887|  62.3k|  if (argc == 15) {
  ------------------
  |  Branch (887:7): [True: 0, False: 62.3k]
  ------------------
  888|      0|    struct RArray *a = mrb_ary_ptr(*array_argv);
  ------------------
  |  |   51|      0|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  889|       |
  890|      0|    argc = ARY_LEN(a);
  ------------------
  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  891|      0|    array_argv = ARY_PTR(a);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  892|      0|  }
  893|  62.3k|  if (argc == 0 && ci->nk == 15) {
  ------------------
  |  Branch (893:7): [True: 0, False: 62.3k]
  |  Branch (893:20): [True: 0, False: 0]
  ------------------
  894|      0|    mrb_int n = ci->n;
  895|      0|    if (n == 15) n = 1;
  ------------------
  |  Branch (895:9): [True: 0, False: 0]
  ------------------
  896|      0|    return ci->stack[n+1];      /* kwhash next to positional arguments */
  897|      0|  }
  898|  62.3k|  if (argc != 1) {
  ------------------
  |  Branch (898:7): [True: 0, False: 62.3k]
  ------------------
  899|      0|    mrb_argnum_error(mrb, argc, 1, 1);
  900|      0|  }
  901|  62.3k|  return array_argv[0];
  902|  62.3k|}
mrb_block_given_p:
  906|  1.42k|{
  907|  1.42k|  mrb_callinfo *ci = mrb->c->ci;
  908|  1.42k|  mrb_value b = ci->stack[mrb_ci_bidx(ci)];
  909|       |
  910|  1.42k|  return !mrb_nil_p(b);
  ------------------
  |  |  174|  1.42k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  ------------------
  911|  1.42k|}
mrb_get_args:
 1367|  99.7k|{
 1368|  99.7k|  va_list ap;
 1369|  99.7k|  va_start(ap, format);
 1370|  99.7k|  mrb_int rc = get_args_v(mrb, format, NULL, &ap);
 1371|  99.7k|  va_end(ap);
 1372|  99.7k|  return rc;
 1373|  99.7k|}
mrb_include_module:
 1488|  8.09k|{
 1489|  8.09k|  mrb_check_frozen(mrb, c);
 1490|  8.09k|  if (include_module_at(mrb, c, find_origin(c), m, 1) < 0) {
  ------------------
  |  Branch (1490:7): [True: 0, False: 8.09k]
  ------------------
 1491|      0|    mrb_raise(mrb, E_ARGUMENT_ERROR, "cyclic include detected");
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1492|      0|  }
 1493|  8.09k|  if (c->tt == MRB_TT_MODULE && (c->flags & MRB_FL_CLASS_IS_INHERITED)) {
  ------------------
  |  |   73|    476|#define MRB_FL_CLASS_IS_INHERITED (1 << 17)
  ------------------
  |  Branch (1493:7): [True: 476, False: 7.61k]
  |  Branch (1493:33): [True: 0, False: 476]
  ------------------
 1494|      0|    struct RClass *data[2];
 1495|      0|    data[0] = c;
 1496|      0|    data[1] = m;
 1497|      0|    mrb_objspace_each_objects(mrb, fix_include_module, data);
 1498|      0|  }
 1499|  8.09k|}
mrb_singleton_class_ptr:
 1665|  29.9k|{
 1666|  29.9k|  struct RBasic *obj;
 1667|       |
 1668|  29.9k|  switch (mrb_type(v)) {
 1669|      0|  case MRB_TT_FALSE:
  ------------------
  |  Branch (1669:3): [True: 0, False: 29.9k]
  ------------------
 1670|      0|    if (mrb_nil_p(v))
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1671|      0|      return mrb->nil_class;
 1672|      0|    return mrb->false_class;
 1673|      0|  case MRB_TT_TRUE:
  ------------------
  |  Branch (1673:3): [True: 0, False: 29.9k]
  ------------------
 1674|      0|    return mrb->true_class;
 1675|      0|  case MRB_TT_CPTR:
  ------------------
  |  Branch (1675:3): [True: 0, False: 29.9k]
  ------------------
 1676|      0|  case MRB_TT_SYMBOL:
  ------------------
  |  Branch (1676:3): [True: 0, False: 29.9k]
  ------------------
 1677|      0|  case MRB_TT_INTEGER:
  ------------------
  |  Branch (1677:3): [True: 0, False: 29.9k]
  ------------------
 1678|      0|#ifndef MRB_NO_FLOAT
 1679|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (1679:3): [True: 0, False: 29.9k]
  ------------------
 1680|      0|#endif
 1681|      0|    return NULL;
 1682|  29.9k|  default:
  ------------------
  |  Branch (1682:3): [True: 29.9k, False: 0]
  ------------------
 1683|  29.9k|    break;
 1684|  29.9k|  }
 1685|  29.9k|  obj = mrb_basic_ptr(v);
  ------------------
  |  |   22|  29.9k|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  29.9k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1686|  29.9k|  if (obj->c == NULL) return NULL;
  ------------------
  |  Branch (1686:7): [True: 0, False: 29.9k]
  ------------------
 1687|  29.9k|  prepare_singleton_class(mrb, obj);
 1688|  29.9k|  return obj->c;
 1689|  29.9k|}
mrb_singleton_class:
 1693|  29.9k|{
 1694|  29.9k|  struct RClass *c = mrb_singleton_class_ptr(mrb, v);
 1695|       |
 1696|  29.9k|  if (c == NULL) {
  ------------------
  |  Branch (1696:7): [True: 0, False: 29.9k]
  ------------------
 1697|      0|    mrb_raise(mrb, E_TYPE_ERROR, "can't define singleton");
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1698|      0|  }
 1699|  29.9k|  return mrb_obj_value(c);
 1700|  29.9k|}
mrb_define_singleton_method:
 1704|  44.7k|{
 1705|  44.7k|  prepare_singleton_class(mrb, (struct RBasic*)o);
 1706|  44.7k|  mrb_define_method_id(mrb, o->c, mrb_intern_cstr(mrb, name), func, aspec);
 1707|  44.7k|}
mrb_define_singleton_method_id:
 1711|  24.7k|{
 1712|  24.7k|  prepare_singleton_class(mrb, (struct RBasic*)o);
 1713|  24.7k|  mrb_define_method_id(mrb, o->c, name, func, aspec);
 1714|  24.7k|}
mrb_define_class_method:
 1718|  43.3k|{
 1719|  43.3k|  mrb_define_singleton_method(mrb, (struct RObject*)c, name, func, aspec);
 1720|  43.3k|}
mrb_define_class_method_id:
 1724|  24.7k|{
 1725|  24.7k|  mrb_define_singleton_method_id(mrb, (struct RObject*)c, name, func, aspec);
 1726|  24.7k|}
mrb_define_module_function_id:
 1730|  24.7k|{
 1731|  24.7k|  mrb_define_class_method_id(mrb, c, name, func, aspec);
 1732|  24.7k|  mrb_define_method_id(mrb, c, name, func, aspec);
 1733|  24.7k|}
mrb_define_module_function:
 1737|  24.7k|{
 1738|  24.7k|  mrb_define_module_function_id(mrb, c, mrb_intern_cstr(mrb, name), func, aspec);
 1739|  24.7k|}
mrb_vm_find_method:
 1777|   781k|{
 1778|   781k|  mrb_method_t m;
 1779|   781k|#ifndef MRB_NO_METHOD_CACHE
 1780|   781k|  struct RClass *oc = c;
 1781|   781k|  int h = kh_int_hash_func(mrb, ((intptr_t)oc) ^ mid) & (MRB_METHOD_CACHE_SIZE-1);
  ------------------
  |  |  267|   781k|#define kh_int_hash_func(mrb,key) (khint_t)((key)^((key)<<2)^((key)>>2))
  ------------------
                int h = kh_int_hash_func(mrb, ((intptr_t)oc) ^ mid) & (MRB_METHOD_CACHE_SIZE-1);
  ------------------
  |  |  218|   781k|# define MRB_METHOD_CACHE_SIZE (1<<8)
  ------------------
 1782|   781k|  struct mrb_cache_entry *mc = &mrb->cache[h];
 1783|       |
 1784|   781k|  if (mc->c == c && mc->mid == mid) {
  ------------------
  |  Branch (1784:7): [True: 644k, False: 137k]
  |  Branch (1784:21): [True: 644k, False: 0]
  ------------------
 1785|   644k|    *cp = mc->c0;
 1786|   644k|    return mc->m;
 1787|   644k|  }
 1788|   137k|#endif
 1789|       |
 1790|   417k|  while (c) {
  ------------------
  |  Branch (1790:10): [True: 417k, False: 37]
  ------------------
 1791|   417k|    mt_tbl *h = c->mt;
 1792|       |
 1793|   417k|    if (h) {
  ------------------
  |  Branch (1793:9): [True: 276k, False: 141k]
  ------------------
 1794|   276k|      union mt_ptr ptr;
 1795|   276k|      mrb_sym ret = mt_get(mrb, h, mid, &ptr);
 1796|   276k|      if (ret) {
  ------------------
  |  Branch (1796:11): [True: 137k, False: 139k]
  ------------------
 1797|   137k|        if (ptr.proc == 0) break;
  ------------------
  |  Branch (1797:13): [True: 0, False: 137k]
  ------------------
 1798|   137k|        *cp = c;
 1799|   137k|        m =  create_method_value(mrb, ret, ptr);
 1800|   137k|#ifndef MRB_NO_METHOD_CACHE
 1801|   137k|        mc->c = oc;
 1802|   137k|        mc->c0 = c;
 1803|   137k|        mc->mid = mid;
 1804|   137k|        mc->m = m;
 1805|   137k|#endif
 1806|   137k|        return m;
 1807|   137k|      }
 1808|   276k|    }
 1809|   280k|    c = c->super;
 1810|   280k|  }
 1811|     37|  MRB_METHOD_FROM_PROC(m, NULL);
  ------------------
  |  |  112|     37|#define MRB_METHOD_FROM_PROC(m,pr) ((m)=(mrb_method_t)(pr))
  ------------------
 1812|     37|  return m;                  /* no method */
 1813|   137k|}
mrb_method_search_vm:
 1817|   295k|{
 1818|   295k|  return mrb_vm_find_method(mrb, *cp, cp, mid);
 1819|   295k|}
mrb_method_search:
 1823|  33.7k|{
 1824|  33.7k|  mrb_method_t m;
 1825|       |
 1826|  33.7k|  m = mrb_method_search_vm(mrb, &c, mid);
 1827|  33.7k|  if (MRB_METHOD_UNDEF_P(m)) {
  ------------------
  |  |  115|  33.7k|#define MRB_METHOD_UNDEF_P(m) ((m)==0)
  |  |  ------------------
  |  |  |  Branch (115:31): [True: 0, False: 33.7k]
  |  |  ------------------
  ------------------
 1828|      0|    mrb_name_error(mrb, mid, "undefined method '%n' for class %C", mid, c);
 1829|      0|  }
 1830|  33.7k|  return m;
 1831|  33.7k|}
mrb_obj_new:
 1993|    476|{
 1994|    476|  mrb_value obj;
 1995|    476|  mrb_sym mid;
 1996|       |
 1997|    476|  obj = mrb_instance_alloc(mrb, mrb_obj_value(c));
 1998|    476|  mid = MRB_SYM(initialize);
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 1999|    476|  if (!mrb_func_basic_p(mrb, obj, mid, mrb_do_nothing)) {
  ------------------
  |  Branch (1999:7): [True: 476, False: 0]
  ------------------
 2000|    476|    mrb_funcall_argv(mrb, obj, mid, argc, argv);
 2001|    476|  }
 2002|    476|  return obj;
 2003|    476|}
mrb_obj_equal_m:
 2104|    888|{
 2105|    888|  mrb_value arg = mrb_get_arg1(mrb);
 2106|       |
 2107|    888|  return mrb_bool_value(mrb_obj_equal(mrb, self, arg));
 2108|    888|}
mrb_obj_respond_to:
 2112|    476|{
 2113|    476|  mrb_method_t m;
 2114|       |
 2115|    476|  m = mrb_method_search_vm(mrb, &c, mid);
 2116|    476|  if (MRB_METHOD_UNDEF_P(m)) {
  ------------------
  |  |  115|    476|#define MRB_METHOD_UNDEF_P(m) ((m)==0)
  |  |  ------------------
  |  |  |  Branch (115:31): [True: 0, False: 476]
  |  |  ------------------
  ------------------
 2117|      0|    return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
 2118|      0|  }
 2119|    476|  return TRUE;
  ------------------
  |  |   54|    476|#  define TRUE 1
  ------------------
 2120|    476|}
mrb_class_path:
 2130|  4.30k|{
 2131|  4.30k|  mrb_value path;
 2132|  4.30k|  mrb_sym nsym = MRB_SYM(__classname__);
  ------------------
  |  |   18|  4.30k|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 2133|       |
 2134|  4.30k|  path = mrb_obj_iv_get(mrb, (struct RObject*)c, nsym);
 2135|  4.30k|  if (mrb_nil_p(path)) {
  ------------------
  |  |  174|  4.30k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 4.30k]
  |  |  ------------------
  ------------------
 2136|       |    /* no name (yet) */
 2137|      0|    return mrb_class_find_path(mrb, c);
 2138|      0|  }
 2139|  4.30k|  else if (mrb_symbol_p(path)) {
  ------------------
  |  |  172|  4.30k|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|  4.30k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 4.30k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2140|       |    /* toplevel class/module */
 2141|  4.30k|    return mrb_sym_str(mrb, mrb_symbol(path));
  ------------------
  |  |  167|  4.30k|#define mrb_symbol(o)  (mrb_sym)(((o).w) >> WORDBOX_SYMBOL_SHIFT)
  |  |  ------------------
  |  |  |  |   63|  4.30k|#define WORDBOX_SYMBOL_SHIFT    32
  |  |  ------------------
  ------------------
 2142|  4.30k|  }
 2143|      0|  return mrb_str_dup(mrb, path);
 2144|  4.30k|}
mrb_class_real:
 2148|  16.1k|{
 2149|  16.1k|  if (cl == 0) return NULL;
  ------------------
  |  Branch (2149:7): [True: 0, False: 16.1k]
  ------------------
 2150|  16.6k|  while ((cl->tt == MRB_TT_SCLASS) || (cl->tt == MRB_TT_ICLASS)) {
  ------------------
  |  Branch (2150:10): [True: 0, False: 16.6k]
  |  Branch (2150:39): [True: 476, False: 16.1k]
  ------------------
 2151|    476|    cl = cl->super;
 2152|    476|    if (cl == 0) return NULL;
  ------------------
  |  Branch (2152:9): [True: 0, False: 476]
  ------------------
 2153|    476|  }
 2154|  16.1k|  return cl;
 2155|  16.1k|}
mrb_class_new:
 2201|  33.3k|{
 2202|  33.3k|  struct RClass *c;
 2203|       |
 2204|  33.3k|  if (super) {
  ------------------
  |  Branch (2204:7): [True: 31.4k, False: 1.90k]
  ------------------
 2205|  31.4k|    mrb_check_inheritable(mrb, super);
 2206|  31.4k|  }
 2207|  33.3k|  c = boot_defclass(mrb, super);
 2208|  33.3k|  if (super) {
  ------------------
  |  Branch (2208:7): [True: 31.4k, False: 1.90k]
  ------------------
 2209|  31.4k|    MRB_SET_INSTANCE_TT(c, MRB_INSTANCE_TT(super));
  ------------------
  |  |   75|  31.4k|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|  31.4k|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
 2210|  31.4k|  }
 2211|  33.3k|  make_metaclass(mrb, c);
  ------------------
  |  |  371|  33.3k|#define make_metaclass(mrb, c) prepare_singleton_class((mrb), (struct RBasic*)(c))
  ------------------
 2212|       |
 2213|  33.3k|  return c;
 2214|  33.3k|}
mrb_module_new:
 2221|  4.76k|{
 2222|  4.76k|  struct RClass *m = MRB_OBJ_ALLOC(mrb, MRB_TT_MODULE, mrb->module_class);
  ------------------
  |  | 1200|  4.76k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
 2223|  4.76k|  boot_initmod(mrb, m);
 2224|  4.76k|  return m;
 2225|  4.76k|}
mrb_alias_method:
 2249|  33.7k|{
 2250|  33.7k|  if (a == b) return;
  ------------------
  |  Branch (2250:7): [True: 0, False: 33.7k]
  ------------------
 2251|  33.7k|  mrb_method_t m = mrb_method_search(mrb, c, b);
 2252|       |
 2253|  33.7k|  if (!MRB_METHOD_CFUNC_P(m)) {
  ------------------
  |  |  131|  33.7k|#define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |  107|  33.7k|#define MRB_METHOD_FUNC_P(m) (((uintptr_t)(m))&MRB_METHOD_FUNC_FL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|  33.7k|#define MRB_METHOD_FUNC_FL 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (107:30): [True: 9.52k, False: 24.2k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |   54|  9.52k|#  define TRUE 1
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |  114|  24.2k|#define MRB_METHOD_PROC(m) ((struct RProc*)(m))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:28): [True: 24.2k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |   65|  24.2k|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   64|  24.2k|#define MRB_PROC_CFUNC_FL 128
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |   51|      0|#  define FALSE 0
  |  |  ------------------
  ------------------
  |  Branch (2253:7): [True: 24.2k, False: 9.52k]
  ------------------
 2254|  24.2k|    struct RProc *p = MRB_METHOD_PROC(m);
  ------------------
  |  |  114|  24.2k|#define MRB_METHOD_PROC(m) ((struct RProc*)(m))
  ------------------
 2255|       |
 2256|  24.2k|    if (MRB_PROC_ENV_P(p)) {
  ------------------
  |  |   72|  24.2k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  ------------------
  |  |  |  |   71|  24.2k|#define MRB_PROC_ENVSET 1024
  |  |  ------------------
  |  |  |  Branch (72:27): [True: 2.38k, False: 21.8k]
  |  |  ------------------
  ------------------
 2257|  2.38k|      MRB_PROC_ENV(p)->mid = b;
  ------------------
  |  |   73|  2.38k|#define MRB_PROC_ENV(p) (MRB_PROC_ENV_P(p) ? (p)->e.env : NULL)
  |  |  ------------------
  |  |  |  |   72|  2.38k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  2.38k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 2.38k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2258|  2.38k|    }
 2259|  21.8k|    else if (p->color != MRB_GC_RED) {
  ------------------
  |  |   79|  21.8k|#define MRB_GC_RED 7
  ------------------
  |  Branch (2259:14): [True: 21.8k, False: 0]
  ------------------
 2260|  21.8k|      struct RClass *tc = MRB_PROC_TARGET_CLASS(p);
  ------------------
  |  |   74|  21.8k|#define MRB_PROC_TARGET_CLASS(p) (MRB_PROC_ENV_P(p) ? (p)->e.env->c : (p)->e.target_class)
  |  |  ------------------
  |  |  |  |   72|  21.8k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  21.8k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 21.8k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2261|  21.8k|      struct REnv *e = MRB_OBJ_ALLOC(mrb, MRB_TT_ENV, NULL);
  ------------------
  |  | 1200|  21.8k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
 2262|       |
 2263|  21.8k|      e->mid = b;
 2264|  21.8k|      if (tc) {
  ------------------
  |  Branch (2264:11): [True: 21.8k, False: 0]
  ------------------
 2265|  21.8k|        e->c = tc;
 2266|  21.8k|        mrb_field_write_barrier(mrb, (struct RBasic*)e, (struct RBasic*)tc);
 2267|  21.8k|      }
 2268|  21.8k|      p->e.env = e;
 2269|  21.8k|      p->flags |= MRB_PROC_ENVSET;
  ------------------
  |  |   71|  21.8k|#define MRB_PROC_ENVSET 1024
  ------------------
 2270|  21.8k|      mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)e);
 2271|  21.8k|    }
 2272|  24.2k|  }
 2273|  33.7k|  mrb_define_method_raw(mrb, c, a, m);
 2274|  33.7k|}
mrb_define_alias:
 2285|    952|{
 2286|    952|  mrb_alias_method(mrb, klass, mrb_intern_cstr(mrb, name1), mrb_intern_cstr(mrb, name2));
 2287|    952|}
mrb_mod_to_s:
 2306|     18|{
 2307|     18|  if (mrb_sclass_p(klass)) {
  ------------------
  |  |  196|     18|#define mrb_sclass_p(o) WORDBOX_OBJ_TYPE_P(o, SCLASS)
  |  |  ------------------
  |  |  |  |   78|     18|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|     36|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|     36|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 18]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 18]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2308|      0|    mrb_value v = mrb_iv_get(mrb, klass, MRB_SYM(__attached__));
  ------------------
  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 2309|      0|    mrb_value str = mrb_str_new_lit(mrb, "#<Class:");
  ------------------
  |  | 1209|      0|#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|      0|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
 2310|       |
 2311|      0|    if (class_ptr_p(v)) {
  ------------------
  |  Branch (2311:9): [True: 0, False: 0]
  ------------------
 2312|      0|      mrb_str_cat_str(mrb, str, mrb_inspect(mrb, v));
 2313|      0|    }
 2314|      0|    else {
 2315|      0|      mrb_str_cat_str(mrb, str, mrb_any_to_s(mrb, v));
 2316|      0|    }
 2317|      0|    return mrb_str_cat_lit(mrb, str, ">");
  ------------------
  |  |  395|      0|#define mrb_str_cat_lit(mrb, str, lit) mrb_str_cat(mrb, str, lit, mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|      0|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
 2318|      0|  }
 2319|     18|  else {
 2320|     18|    return class_name_str(mrb, mrb_class_ptr(klass));
  ------------------
  |  |   24|     18|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|     18|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 2321|     18|  }
 2322|     18|}
mrb_undef_method_id:
 2347|    476|{
 2348|    476|  if (!mrb_obj_respond_to(mrb, c, a)) {
  ------------------
  |  Branch (2348:7): [True: 0, False: 476]
  ------------------
 2349|      0|    mrb_name_error(mrb, a, "undefined method '%n' for class '%C'", a, c);
 2350|      0|  }
 2351|    476|  undef_method(mrb, c, a);
 2352|    476|}
mrb_undef_method:
 2356|  8.09k|{
 2357|  8.09k|  undef_method(mrb, c, mrb_intern_cstr(mrb, name));
 2358|  8.09k|}
mrb_undef_class_method:
 2368|  6.18k|{
 2369|  6.18k|  mrb_undef_method(mrb,  mrb_class_ptr(mrb_singleton_class(mrb, mrb_obj_value(c))), name);
  ------------------
  |  |   24|  6.18k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  6.18k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 2370|  6.18k|}
mrb_method_added:
 2559|   245k|{
 2560|   245k|  mrb_sym added;
 2561|   245k|  mrb_value recv = mrb_obj_value(c);
 2562|       |
 2563|   245k|  if (c->tt == MRB_TT_SCLASS) {
  ------------------
  |  Branch (2563:7): [True: 28.5k, False: 216k]
  ------------------
 2564|  28.5k|    added = MRB_SYM(singleton_method_added);
  ------------------
  |  |   18|  28.5k|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 2565|  28.5k|    recv = mrb_iv_get(mrb, recv, MRB_SYM(__attached__));
  ------------------
  |  |   18|  28.5k|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 2566|  28.5k|  }
 2567|   216k|  else {
 2568|   216k|    added = MRB_SYM(method_added);
  ------------------
  |  |   18|   216k|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 2569|   216k|  }
 2570|   245k|  if (!mrb_func_basic_p(mrb, recv, added, mrb_do_nothing)) {
  ------------------
  |  Branch (2570:7): [True: 0, False: 245k]
  ------------------
 2571|      0|    mrb_value sym = mrb_symbol_value(mid);
 2572|      0|    mrb_funcall_argv(mrb, recv, added, 1, &sym);
 2573|      0|  }
 2574|   245k|}
mrb_method_missing:
 2897|     37|{
 2898|     37|  mrb_no_method_error(mrb, name, args, "undefined method '%n'", name);
 2899|     37|}
mrb_init_class:
 2991|    476|{
 2992|    476|  struct RClass *bob;           /* BasicObject */
 2993|    476|  struct RClass *obj;           /* Object */
 2994|    476|  struct RClass *mod;           /* Module */
 2995|    476|  struct RClass *cls;           /* Class */
 2996|       |
 2997|       |  /* boot class hierarchy */
 2998|    476|  bob = boot_defclass(mrb, 0);
 2999|    476|  obj = boot_defclass(mrb, bob); mrb->object_class = obj;
 3000|    476|  mod = boot_defclass(mrb, obj); mrb->module_class = mod;/* obj -> mod */
 3001|    476|  cls = boot_defclass(mrb, mod); mrb->class_class = cls; /* obj -> cls */
 3002|       |  /* fix-up loose ends */
 3003|    476|  bob->c = obj->c = mod->c = cls->c = cls;
 3004|    476|  make_metaclass(mrb, bob);
  ------------------
  |  |  371|    476|#define make_metaclass(mrb, c) prepare_singleton_class((mrb), (struct RBasic*)(c))
  ------------------
 3005|    476|  make_metaclass(mrb, obj);
  ------------------
  |  |  371|    476|#define make_metaclass(mrb, c) prepare_singleton_class((mrb), (struct RBasic*)(c))
  ------------------
 3006|    476|  make_metaclass(mrb, mod);
  ------------------
  |  |  371|    476|#define make_metaclass(mrb, c) prepare_singleton_class((mrb), (struct RBasic*)(c))
  ------------------
 3007|    476|  make_metaclass(mrb, cls);
  ------------------
  |  |  371|    476|#define make_metaclass(mrb, c) prepare_singleton_class((mrb), (struct RBasic*)(c))
  ------------------
 3008|       |
 3009|       |  /* name basic classes */
 3010|    476|  mrb_define_const_id(mrb, bob, MRB_SYM(BasicObject), mrb_obj_value(bob));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 3011|    476|  mrb_define_const_id(mrb, obj, MRB_SYM(Object),      mrb_obj_value(obj));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 3012|    476|  mrb_define_const_id(mrb, obj, MRB_SYM(Module),      mrb_obj_value(mod));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 3013|    476|  mrb_define_const_id(mrb, obj, MRB_SYM(Class),       mrb_obj_value(cls));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 3014|       |
 3015|       |  /* name each classes */
 3016|    476|  mrb_class_name_class(mrb, NULL, bob, MRB_SYM(BasicObject));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 3017|    476|  mrb_class_name_class(mrb, NULL, obj, MRB_SYM(Object)); /* 15.2.1 */
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 3018|    476|  mrb_class_name_class(mrb, NULL, mod, MRB_SYM(Module)); /* 15.2.2 */
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 3019|    476|  mrb_class_name_class(mrb, NULL, cls, MRB_SYM(Class));  /* 15.2.3 */
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 3020|       |
 3021|    476|  mrb->proc_class = mrb_define_class(mrb, "Proc", mrb->object_class);  /* 15.2.17 */
 3022|    476|  MRB_SET_INSTANCE_TT(mrb->proc_class, MRB_TT_PROC);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
 3023|       |
 3024|    476|  MRB_SET_INSTANCE_TT(cls, MRB_TT_CLASS);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
 3025|    476|  mrb_define_method(mrb, bob, "initialize",              mrb_do_nothing,           MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3026|    476|  mrb_define_method(mrb, bob, "!",                       mrb_bob_not,              MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3027|    476|  mrb_define_method(mrb, bob, "==",                      mrb_obj_equal_m,          MRB_ARGS_REQ(1)); /* 15.3.1.3.1  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3028|    476|  mrb_define_method(mrb, bob, "__id__",                  mrb_obj_id_m,             MRB_ARGS_NONE()); /* 15.3.1.3.4  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3029|    476|  mrb_define_method(mrb, bob, "__send__",                mrb_f_send,               MRB_ARGS_REQ(1)|MRB_ARGS_REST()|MRB_ARGS_BLOCK());  /* 15.3.1.3.5  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
                mrb_define_method(mrb, bob, "__send__",                mrb_f_send,               MRB_ARGS_REQ(1)|MRB_ARGS_REST()|MRB_ARGS_BLOCK());  /* 15.3.1.3.5  */
  ------------------
  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  ------------------
                mrb_define_method(mrb, bob, "__send__",                mrb_f_send,               MRB_ARGS_REQ(1)|MRB_ARGS_REST()|MRB_ARGS_BLOCK());  /* 15.3.1.3.5  */
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
 3030|    476|  mrb_define_method(mrb, bob, "equal?",                  mrb_obj_equal_m,          MRB_ARGS_REQ(1)); /* 15.3.1.3.11 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3031|    476|  mrb_define_method(mrb, bob, "instance_eval",           mrb_obj_instance_eval,    MRB_ARGS_OPT(1)|MRB_ARGS_BLOCK());  /* 15.3.1.3.18 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
                mrb_define_method(mrb, bob, "instance_eval",           mrb_obj_instance_eval,    MRB_ARGS_OPT(1)|MRB_ARGS_BLOCK());  /* 15.3.1.3.18 */
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
 3032|    476|  mrb_define_method(mrb, bob, "singleton_method_added",  mrb_do_nothing,           MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3033|    476|  mrb_define_method(mrb, bob, "method_missing",          mrb_obj_missing,          MRB_ARGS_ANY());  /* 15.3.1.3.30 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3034|       |
 3035|    476|  mrb_define_class_method(mrb, cls, "new",               mrb_class_new_class,      MRB_ARGS_OPT(1)|MRB_ARGS_BLOCK());
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
                mrb_define_class_method(mrb, cls, "new",               mrb_class_new_class,      MRB_ARGS_OPT(1)|MRB_ARGS_BLOCK());
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
 3036|    476|  mrb_define_method(mrb, cls, "allocate",                mrb_instance_alloc,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3037|    476|  mrb_define_method(mrb, cls, "superclass",              mrb_class_superclass,     MRB_ARGS_NONE()); /* 15.2.3.3.4 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3038|    476|  mrb_define_method(mrb, cls, "initialize",              mrb_class_initialize,     MRB_ARGS_OPT(1)); /* 15.2.3.3.1 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 3039|    476|  mrb_define_method(mrb, cls, "inherited",               mrb_do_nothing,           MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3040|       |
 3041|    476|  init_class_new(mrb, cls);
 3042|       |
 3043|    476|  MRB_SET_INSTANCE_TT(mod, MRB_TT_MODULE);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
 3044|    476|  mrb_define_method(mrb, mod, "extend_object",           mrb_mod_extend_object,    MRB_ARGS_REQ(1)); /* 15.2.2.4.25 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3045|    476|  mrb_define_method(mrb, mod, "extended",                mrb_do_nothing,           MRB_ARGS_REQ(1)); /* 15.2.2.4.26 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3046|    476|  mrb_define_method(mrb, mod, "prepended",               mrb_do_nothing,           MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3047|    476|  mrb_define_method(mrb, mod, "prepend_features",        mrb_mod_prepend_features, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3048|    476|  mrb_define_method(mrb, mod, "include?",                mrb_mod_include_p,        MRB_ARGS_REQ(1)); /* 15.2.2.4.28 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3049|    476|  mrb_define_method(mrb, mod, "append_features",         mrb_mod_append_features,  MRB_ARGS_REQ(1)); /* 15.2.2.4.10 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3050|    476|  mrb_define_method(mrb, mod, "class_eval",              mrb_mod_module_eval,      MRB_ARGS_ANY());  /* 15.2.2.4.15 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3051|    476|  mrb_define_method(mrb, mod, "included",                mrb_do_nothing,           MRB_ARGS_REQ(1)); /* 15.2.2.4.29 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3052|    476|  mrb_define_method(mrb, mod, "initialize",              mrb_mod_initialize,       MRB_ARGS_NONE()); /* 15.2.2.4.31 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3053|    476|  mrb_define_method(mrb, mod, "module_eval",             mrb_mod_module_eval,      MRB_ARGS_ANY());  /* 15.2.2.4.35 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3054|    476|  mrb_define_method(mrb, mod, "module_function",         mrb_mod_module_function,  MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3055|    476|  mrb_define_method(mrb, mod, "private",                 mrb_mod_dummy_visibility, MRB_ARGS_ANY());  /* 15.2.2.4.36 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3056|    476|  mrb_define_method(mrb, mod, "protected",               mrb_mod_dummy_visibility, MRB_ARGS_ANY());  /* 15.2.2.4.37 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3057|    476|  mrb_define_method(mrb, mod, "public",                  mrb_mod_dummy_visibility, MRB_ARGS_ANY());  /* 15.2.2.4.38 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3058|    476|  mrb_define_method(mrb, mod, "attr_reader",             mrb_mod_attr_reader,      MRB_ARGS_ANY());  /* 15.2.2.4.13 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3059|    476|  mrb_define_method(mrb, mod, "attr_writer",             mrb_mod_attr_writer,      MRB_ARGS_ANY());  /* 15.2.2.4.14 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3060|    476|  mrb_define_method(mrb, mod, "to_s",                    mrb_mod_to_s,             MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3061|    476|  mrb_define_method(mrb, mod, "inspect",                 mrb_mod_to_s,             MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3062|    476|  mrb_define_method(mrb, mod, "alias_method",            mrb_mod_alias,            MRB_ARGS_ANY());  /* 15.2.2.4.8 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3063|    476|  mrb_define_method(mrb, mod, "ancestors",               mrb_mod_ancestors,        MRB_ARGS_NONE()); /* 15.2.2.4.9 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3064|    476|  mrb_define_method(mrb, mod, "undef_method",            mrb_mod_undef,            MRB_ARGS_ANY());  /* 15.2.2.4.41 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3065|    476|  mrb_define_method(mrb, mod, "const_defined?",          mrb_mod_const_defined,    MRB_ARGS_ARG(1,1)); /* 15.2.2.4.20 */
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 3066|    476|  mrb_define_method(mrb, mod, "const_get",               mrb_mod_const_get,        MRB_ARGS_REQ(1)); /* 15.2.2.4.21 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3067|    476|  mrb_define_method(mrb, mod, "const_set",               mrb_mod_const_set,        MRB_ARGS_REQ(2)); /* 15.2.2.4.23 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3068|    476|  mrb_define_method(mrb, mod, "remove_const",            mrb_mod_remove_const,     MRB_ARGS_REQ(1)); /* 15.2.2.4.40 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3069|    476|  mrb_define_method(mrb, mod, "const_missing",           mrb_mod_const_missing,    MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3070|    476|  mrb_define_method(mrb, mod, "method_defined?",         mrb_mod_method_defined,   MRB_ARGS_REQ(1)); /* 15.2.2.4.34 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3071|    476|  mrb_define_method(mrb, mod, "define_method",           mod_define_method,        MRB_ARGS_ARG(1,1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 3072|    476|  mrb_define_method(mrb, mod, "===",                     mrb_mod_eqq,              MRB_ARGS_REQ(1)); /* 15.2.2.4.7 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3073|    476|  mrb_define_method(mrb, mod, "dup",                     mrb_mod_dup,              MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3074|    476|  mrb_define_method(mrb, mod, "method_added",            mrb_do_nothing,           MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3075|       |
 3076|    476|  mrb_undef_method(mrb, cls, "append_features");
 3077|    476|  mrb_undef_method(mrb, cls, "prepend_features");
 3078|    476|  mrb_undef_method(mrb, cls, "extend_object");
 3079|    476|  mrb_undef_method(mrb, cls, "module_function");
 3080|       |
 3081|    476|  mrb->top_self = MRB_OBJ_ALLOC(mrb, MRB_TT_OBJECT, mrb->object_class);
  ------------------
  |  | 1200|    476|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
 3082|    476|  mrb_define_singleton_method(mrb, mrb->top_self, "inspect", inspect_main, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3083|    476|  mrb_define_singleton_method(mrb, mrb->top_self, "to_s", inspect_main, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3084|    476|  mrb_define_singleton_method(mrb, mrb->top_self, "define_method", top_define_method, MRB_ARGS_ARG(1,1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 3085|    476|}
class.c:create_method_value:
  248|   137k|{
  249|   137k|  mrb_method_t m;
  250|       |
  251|   137k|  if (key & MT_FUNC_P) {
  ------------------
  |  |   28|   137k|#define MT_FUNC_P 1
  ------------------
  |  Branch (251:7): [True: 90.5k, False: 46.7k]
  ------------------
  252|  90.5k|    MRB_METHOD_FROM_FUNC(m, val.func);
  ------------------
  |  |  111|  90.5k|#define MRB_METHOD_FROM_FUNC(m,fn) ((m)=(mrb_method_t)((((uintptr_t)(fn))<<2)|MRB_METHOD_FUNC_FL))
  |  |  ------------------
  |  |  |  |  102|  90.5k|#define MRB_METHOD_FUNC_FL 1
  |  |  ------------------
  ------------------
  253|  90.5k|  }
  254|  46.7k|  else {
  255|  46.7k|    MRB_METHOD_FROM_PROC(m, val.proc);
  ------------------
  |  |  112|  46.7k|#define MRB_METHOD_FROM_PROC(m,pr) ((m)=(mrb_method_t)(pr))
  ------------------
  256|  46.7k|  }
  257|   137k|  if (key & MT_NOARG_P) {
  ------------------
  |  |   29|   137k|#define MT_NOARG_P 2
  ------------------
  |  Branch (257:7): [True: 20.4k, False: 116k]
  ------------------
  258|  20.4k|    MRB_METHOD_NOARG_SET(m);
  ------------------
  |  |  109|  20.4k|#define MRB_METHOD_NOARG_SET(m) ((m)=(mrb_method_t)(((uintptr_t)(m))|MRB_METHOD_NOARG_FL))
  |  |  ------------------
  |  |  |  |  103|  20.4k|#define MRB_METHOD_NOARG_FL 2
  |  |  ------------------
  ------------------
  259|  20.4k|  }
  260|   137k|  return m;
  261|   137k|}
class.c:mt_free:
  241|  60.9k|{
  242|  60.9k|  mrb_free(mrb, t->ptr);
  243|  60.9k|  mrb_free(mrb, t);
  244|  60.9k|}
class.c:define_module:
  464|  4.76k|{
  465|  4.76k|  struct RClass *m;
  466|       |
  467|  4.76k|  if (mrb_const_defined_at(mrb, mrb_obj_value(outer), name)) {
  ------------------
  |  Branch (467:7): [True: 0, False: 4.76k]
  ------------------
  468|      0|    return module_from_sym(mrb, outer, name);
  469|      0|  }
  470|  4.76k|  m = mrb_module_new(mrb);
  471|  4.76k|  setup_class(mrb, outer, m, name);
  472|       |
  473|  4.76k|  return m;
  474|  4.76k|}
class.c:check_if_class_or_module:
  456|  37.1k|{
  457|  37.1k|  if (!class_ptr_p(obj)) {
  ------------------
  |  Branch (457:7): [True: 0, False: 37.1k]
  ------------------
  458|      0|    mrb_raisef(mrb, E_TYPE_ERROR, "%!v is not a class/module", obj);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  459|      0|  }
  460|  37.1k|}
class.c:setup_class:
  366|  40.9k|{
  367|  40.9k|  mrb_class_name_class(mrb, outer, c, id);
  368|  40.9k|  mrb_obj_iv_set(mrb, (struct RObject*)outer, id, mrb_obj_value(c));
  369|  40.9k|}
class.c:define_class:
  531|  33.7k|{
  532|  33.7k|  struct RClass * c;
  533|       |
  534|  33.7k|  if (mrb_const_defined_at(mrb, mrb_obj_value(outer), name)) {
  ------------------
  |  Branch (534:7): [True: 476, False: 33.3k]
  ------------------
  535|    476|    c = class_from_sym(mrb, outer, name);
  536|    476|    MRB_CLASS_ORIGIN(c);
  ------------------
  |  |   65|    476|#define MRB_CLASS_ORIGIN(c) do {\
  |  |   66|    476|  if ((c)->flags & MRB_FL_CLASS_IS_PREPENDED) {\
  |  |  ------------------
  |  |  |  |   63|    476|#define MRB_FL_CLASS_IS_PREPENDED (1 << 19)
  |  |  ------------------
  |  |  |  Branch (66:7): [True: 0, False: 476]
  |  |  ------------------
  |  |   67|      0|    (c) = (c)->super;\
  |  |   68|      0|    while (!((c)->flags & MRB_FL_CLASS_IS_ORIGIN)) {\
  |  |  ------------------
  |  |  |  |   64|      0|#define MRB_FL_CLASS_IS_ORIGIN (1 << 18)
  |  |  ------------------
  |  |  |  Branch (68:12): [True: 0, False: 0]
  |  |  ------------------
  |  |   69|      0|      (c) = (c)->super;\
  |  |   70|      0|    }\
  |  |   71|      0|  }\
  |  |   72|    476|} while (0)
  |  |  ------------------
  |  |  |  Branch (72:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  537|    476|    if (super && mrb_class_real(c->super) != super) {
  ------------------
  |  Branch (537:9): [True: 476, False: 0]
  |  Branch (537:18): [True: 0, False: 476]
  ------------------
  538|      0|      mrb_raisef(mrb, E_TYPE_ERROR, "superclass mismatch for Class %n (%C not %C)",
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  539|      0|                 name, c->super, super);
  540|      0|    }
  541|    476|    return c;
  542|    476|  }
  543|       |
  544|  33.3k|  c = mrb_class_new(mrb, super);
  545|  33.3k|  setup_class(mrb, outer, c, name);
  546|       |
  547|  33.3k|  return c;
  548|  33.7k|}
class.c:mrb_class_inherited:
  576|  10.9k|{
  577|  10.9k|  mrb_value s;
  578|  10.9k|  mrb_sym mid;
  579|       |
  580|  10.9k|  if (!super)
  ------------------
  |  Branch (580:7): [True: 0, False: 10.9k]
  ------------------
  581|      0|    super = mrb->object_class;
  582|  10.9k|  super->flags |= MRB_FL_CLASS_IS_INHERITED;
  ------------------
  |  |   73|  10.9k|#define MRB_FL_CLASS_IS_INHERITED (1 << 17)
  ------------------
  583|  10.9k|  s = mrb_obj_value(super);
  584|  10.9k|  mid = MRB_SYM(inherited);
  ------------------
  |  |   18|  10.9k|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  585|  10.9k|  if (!mrb_func_basic_p(mrb, s, mid, mrb_do_nothing)) {
  ------------------
  |  Branch (585:7): [True: 0, False: 10.9k]
  ------------------
  586|      0|    mrb_value c = mrb_obj_value(klass);
  587|      0|    mrb_funcall_argv(mrb, s, mid, 1, &c);
  588|      0|  }
  589|  10.9k|}
class.c:class_from_sym:
  425|  4.76k|{
  426|  4.76k|  mrb_value c = mrb_const_get(mrb, mrb_obj_value(klass), id);
  427|       |
  428|  4.76k|  mrb_check_type(mrb, c, MRB_TT_CLASS);
  429|  4.76k|  return mrb_class_ptr(c);
  ------------------
  |  |   24|  4.76k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  4.76k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  430|  4.76k|}
class.c:module_from_sym:
  434|  1.90k|{
  435|  1.90k|  mrb_value c = mrb_const_get(mrb, mrb_obj_value(klass), id);
  436|       |
  437|  1.90k|  mrb_check_type(mrb, c, MRB_TT_MODULE);
  438|  1.90k|  return mrb_class_ptr(c);
  ------------------
  |  |   24|  1.90k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  1.90k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  439|  1.90k|}
class.c:mt_new:
   53|  60.9k|{
   54|  60.9k|  mt_tbl *t;
   55|       |
   56|  60.9k|  t = (mt_tbl*)mrb_malloc(mrb, sizeof(mt_tbl));
   57|  60.9k|  t->size = 0;
   58|  60.9k|  t->alloc = 0;
   59|  60.9k|  t->ptr = NULL;
   60|       |
   61|  60.9k|  return t;
   62|  60.9k|}
class.c:mt_put:
   97|  1.31M|{
   98|  1.31M|  int hash, pos, start, dpos = -1;
   99|       |
  100|  1.31M|  if (t->alloc == 0) {
  ------------------
  |  Branch (100:7): [True: 46.5k, False: 1.26M]
  ------------------
  101|  46.5k|    mt_rehash(mrb, t);
  102|  46.5k|  }
  103|       |
  104|  1.31M|  mrb_sym *keys = (mrb_sym*)&t->ptr[t->alloc];
  105|  1.31M|  union mt_ptr *vals = t->ptr;
  106|  1.31M|  hash = kh_int_hash_func(mrb, sym);
  ------------------
  |  |  267|  1.31M|#define kh_int_hash_func(mrb,key) (khint_t)((key)^((key)<<2)^((key)>>2))
  ------------------
  107|  1.31M|  start = pos = hash & (t->alloc-1);
  108|  4.16M|  for (;;) {
  109|  4.16M|    mrb_sym key = keys[pos];
  110|  4.16M|    if (MT_KEY_SYM(key) == sym) {
  ------------------
  |  |   35|  4.16M|#define MT_KEY_SYM(k) ((k)>>2)
  ------------------
  |  Branch (110:9): [True: 8.09k, False: 4.15M]
  ------------------
  111|  1.31M|    value_set:
  112|  1.31M|      keys[pos] = MT_KEY(sym, flags);
  ------------------
  |  |   33|  1.31M|#define MT_KEY(sym, flags) ((sym)<<2|(flags))
  ------------------
  113|  1.31M|      vals[pos] = ptr;
  114|  1.31M|      return;
  115|  8.09k|    }
  116|  4.15M|    else if (key == MT_EMPTY) {
  ------------------
  |  |   30|  4.15M|#define MT_EMPTY 0
  ------------------
  |  Branch (116:14): [True: 1.30M, False: 2.84M]
  ------------------
  117|  1.30M|      t->size++;
  118|  1.30M|      goto value_set;
  119|  1.30M|    }
  120|  2.84M|    else if (key == MT_DELETED && dpos < 0) {
  ------------------
  |  |   31|  5.69M|#define MT_DELETED 1
  ------------------
  |  Branch (120:14): [True: 0, False: 2.84M]
  |  Branch (120:35): [True: 0, False: 0]
  ------------------
  121|      0|      dpos = pos;
  122|      0|    }
  123|  2.84M|    pos = (pos+1) & (t->alloc-1);
  124|  2.84M|    if (pos == start) {         /* not found */
  ------------------
  |  Branch (124:9): [True: 40.4k, False: 2.80M]
  ------------------
  125|  40.4k|      if (dpos > 0) {
  ------------------
  |  Branch (125:11): [True: 0, False: 40.4k]
  ------------------
  126|      0|        t->size++;
  127|      0|        pos = dpos;
  128|      0|        goto value_set;
  129|      0|      }
  130|       |      /* no room */
  131|  40.4k|      mt_rehash(mrb, t);
  132|  40.4k|      start = pos = hash & (t->alloc-1);
  133|  40.4k|      keys = (mrb_sym*)&t->ptr[t->alloc];
  134|  40.4k|      vals = t->ptr;
  135|  40.4k|    }
  136|  2.84M|  }
  137|  1.31M|}
class.c:mt_rehash:
   68|  87.0k|{
   69|  87.0k|  int old_alloc = t->alloc;
   70|  87.0k|  int new_alloc = old_alloc+8;
   71|  87.0k|  union mt_ptr *old_ptr = t->ptr;
   72|       |
   73|  87.0k|  khash_power2(new_alloc);
  ------------------
  |  |   41|  87.0k|#define khash_power2(v) do { \
  |  |   42|  87.0k|  v--;\
  |  |   43|  87.0k|  v |= v >> 1;\
  |  |   44|  87.0k|  v |= v >> 2;\
  |  |   45|  87.0k|  v |= v >> 4;\
  |  |   46|  87.0k|  v |= v >> 8;\
  |  |   47|  87.0k|  v |= v >> 16;\
  |  |   48|  87.0k|  v++;\
  |  |   49|  87.0k|} while (0)
  |  |  ------------------
  |  |  |  Branch (49:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
   74|  87.0k|  if (old_alloc == new_alloc) return;
  ------------------
  |  Branch (74:7): [True: 0, False: 87.0k]
  ------------------
   75|       |
   76|  87.0k|  t->ptr = (union mt_ptr*)mrb_calloc(mrb, sizeof(union mt_ptr)+sizeof(mrb_sym), new_alloc);
   77|  87.0k|  t->alloc = new_alloc;
   78|  87.0k|  t->size = 0;
   79|  87.0k|  if (old_alloc == 0) return;
  ------------------
  |  Branch (79:7): [True: 46.5k, False: 40.4k]
  ------------------
   80|       |
   81|  40.4k|  mrb_sym *keys = (mrb_sym*)&old_ptr[old_alloc];
   82|  40.4k|  union mt_ptr *vals = old_ptr;
   83|   699k|  for (int i = 0; i < old_alloc; i++) {
  ------------------
  |  Branch (83:19): [True: 658k, False: 40.4k]
  ------------------
   84|   658k|    mrb_sym key = keys[i];
   85|   658k|    if (MT_KEY_P(key)) {
  ------------------
  |  |   27|   658k|#define MT_KEY_P(k) (((k)>>2) != 0)
  |  |  ------------------
  |  |  |  Branch (27:21): [True: 658k, False: 0]
  |  |  ------------------
  ------------------
   86|   658k|      mt_put(mrb, t, MT_KEY_SYM(key), MT_KEY_FLG(key), vals[i]);
  ------------------
  |  |   35|   658k|#define MT_KEY_SYM(k) ((k)>>2)
  ------------------
                    mt_put(mrb, t, MT_KEY_SYM(key), MT_KEY_FLG(key), vals[i]);
  ------------------
  |  |   36|   658k|#define MT_KEY_FLG(k) ((k)&3)
  ------------------
   87|   658k|    }
   88|   658k|  }
   89|  40.4k|  mrb_free(mrb, old_ptr);
   90|  40.4k|}
class.c:get_args_v:
  917|  99.7k|{
  918|  99.7k|  const char *fmt = format;
  919|  99.7k|  char c;
  920|  99.7k|  mrb_int i = 0;
  921|  99.7k|  mrb_callinfo *ci = mrb->c->ci;
  922|  99.7k|  mrb_int argc = ci->n;
  923|  99.7k|  const mrb_value *argv = ci->stack+1;
  924|  99.7k|  mrb_bool argv_on_stack;
  925|  99.7k|  mrb_bool opt = FALSE;
  ------------------
  |  |   51|  99.7k|#  define FALSE 0
  ------------------
  926|  99.7k|  mrb_bool opt_skip = TRUE;
  ------------------
  |  |   54|  99.7k|#  define TRUE 1
  ------------------
  927|  99.7k|  const mrb_value *pickarg = NULL; /* arguments currently being processed */
  928|  99.7k|  mrb_value kdict = mrb_nil_value();
  929|  99.7k|  mrb_bool reqkarg = FALSE;
  ------------------
  |  |   51|  99.7k|#  define FALSE 0
  ------------------
  930|  99.7k|  int argc_min = 0, argc_max = 0;
  931|       |
  932|   236k|  while ((c = *fmt++)) {
  ------------------
  |  Branch (932:10): [True: 143k, False: 93.1k]
  ------------------
  933|   143k|    switch (c) {
  934|  15.6k|    case '|':
  ------------------
  |  Branch (934:5): [True: 15.6k, False: 127k]
  ------------------
  935|  15.6k|      opt = TRUE;
  ------------------
  |  |   54|  15.6k|#  define TRUE 1
  ------------------
  936|  15.6k|      break;
  937|  6.66k|    case '*':
  ------------------
  |  Branch (937:5): [True: 6.66k, False: 136k]
  ------------------
  938|  6.66k|      opt_skip = FALSE;
  ------------------
  |  |   51|  6.66k|#  define FALSE 0
  ------------------
  939|  6.66k|      argc_max = -1;
  940|  6.66k|      if (!reqkarg) reqkarg = strchr(fmt, ':') ? TRUE : FALSE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
                    if (!reqkarg) reqkarg = strchr(fmt, ':') ? TRUE : FALSE;
  ------------------
  |  |   51|  6.66k|#  define FALSE 0
  ------------------
  |  Branch (940:11): [True: 6.66k, False: 0]
  |  Branch (940:31): [True: 0, False: 6.66k]
  ------------------
  941|  6.66k|      goto check_exit;
  942|      0|    case '!':
  ------------------
  |  Branch (942:5): [True: 0, False: 143k]
  ------------------
  943|      0|    case '+':
  ------------------
  |  Branch (943:5): [True: 0, False: 143k]
  ------------------
  944|      0|      break;
  945|      0|    case ':':
  ------------------
  |  Branch (945:5): [True: 0, False: 143k]
  ------------------
  946|      0|      reqkarg = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  947|       |      /* fall through */
  948|    476|    case '&': case '?':
  ------------------
  |  Branch (948:5): [True: 476, False: 142k]
  |  Branch (948:15): [True: 0, False: 143k]
  ------------------
  949|    476|      if (opt) opt_skip = FALSE;
  ------------------
  |  |   51|    476|#  define FALSE 0
  ------------------
  |  Branch (949:11): [True: 476, False: 0]
  ------------------
  950|    476|      break;
  951|   120k|    default:
  ------------------
  |  Branch (951:5): [True: 120k, False: 22.7k]
  ------------------
  952|   120k|      if (!opt) argc_min++;
  ------------------
  |  Branch (952:11): [True: 91.7k, False: 28.5k]
  ------------------
  953|   120k|      argc_max++;
  954|   120k|      break;
  955|   143k|    }
  956|   143k|  }
  957|       |
  958|  99.7k| check_exit:
  959|  99.7k|  if (!reqkarg && ci->nk > 0) {
  ------------------
  |  Branch (959:7): [True: 99.7k, False: 0]
  |  Branch (959:19): [True: 1.44k, False: 98.3k]
  ------------------
  960|  1.44k|    mrb_assert(ci->nk == 15);
  ------------------
  |  |   68|  1.44k|#define mrb_assert(p) ((void)0)
  ------------------
  961|  1.44k|    kdict = ci->stack[mrb_ci_bidx(ci)-1];
  962|  1.44k|    if (mrb_hash_p(kdict) && mrb_hash_size(mrb, kdict) > 0) {
  ------------------
  |  |  188|  1.44k|#define mrb_hash_p(o) WORDBOX_OBJ_TYPE_P(o, HASH)
  |  |  ------------------
  |  |  |  |   78|  2.88k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  2.88k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  2.88k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 1.44k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 1.44k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 1.44k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (962:30): [True: 0, False: 1.44k]
  ------------------
  963|      0|      if (argc < 14) {
  ------------------
  |  Branch (963:11): [True: 0, False: 0]
  ------------------
  964|      0|        ci->n++;
  965|      0|        argc++;    /* include kdict in normal arguments */
  966|      0|      }
  967|      0|      else {
  968|       |        /* 14+1 == 15 so pack first */
  969|      0|        if (argc == 14) {
  ------------------
  |  Branch (969:13): [True: 0, False: 0]
  ------------------
  970|       |          /* pack arguments and kdict */
  971|      0|          ci->stack[1] = mrb_ary_new_from_values(mrb, argc+1, &ci->stack[1]);
  972|      0|          argc = ci->n = 15;
  973|      0|        }
  974|      0|        else {
  975|       |          /* push kdict to packed arguments */
  976|      0|          mrb_ary_push(mrb, ci->stack[1], kdict);
  977|      0|        }
  978|      0|        ci->stack[2] = ci->stack[mrb_ci_bidx(ci)];
  979|      0|      }
  980|      0|      ci->nk = 0;
  981|      0|    }
  982|  1.44k|  }
  983|  99.7k|  if (reqkarg && ci->nk > 0) {
  ------------------
  |  Branch (983:7): [True: 0, False: 99.7k]
  |  Branch (983:18): [True: 0, False: 0]
  ------------------
  984|      0|    kdict = ci->stack[mrb_ci_bidx(ci)-1];
  985|      0|    mrb_assert(ci->nk == 15);
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
  986|      0|    mrb_assert(mrb_hash_p(kdict));
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
  987|      0|  }
  988|       |
  989|  99.7k|  argv_on_stack = argc < 15;
  990|  99.7k|  if (!argv_on_stack) {
  ------------------
  |  Branch (990:7): [True: 6.20k, False: 93.5k]
  ------------------
  991|  6.20k|    struct RArray *a = mrb_ary_ptr(*argv);
  ------------------
  |  |   51|  6.20k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  6.20k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  992|  6.20k|    argv = ARY_PTR(a);
  ------------------
  |  |   71|  6.20k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|  6.20k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  6.20k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 5.25k, False: 952]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|  5.25k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  993|  6.20k|    argc = ARY_LEN(a);
  ------------------
  |  |   70|  6.20k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  6.20k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  6.20k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 5.25k, False: 952]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  5.25k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  5.25k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  994|  6.20k|  }
  995|       |
  996|  99.7k|  opt = FALSE;
  ------------------
  |  |   51|  99.7k|#  define FALSE 0
  ------------------
  997|  99.7k|  i = 0;
  998|   209k|  while ((c = *format++)) {
  ------------------
  |  Branch (998:10): [True: 120k, False: 88.8k]
  ------------------
  999|   120k|    mrb_bool altmode = FALSE;
  ------------------
  |  |   51|   120k|#  define FALSE 0
  ------------------
 1000|   120k|    mrb_bool needmodify = FALSE;
  ------------------
  |  |   51|   120k|#  define FALSE 0
  ------------------
 1001|       |
 1002|   120k|    for (; *format; format++) {
  ------------------
  |  Branch (1002:12): [True: 31.8k, False: 88.8k]
  ------------------
 1003|  31.8k|      switch (*format) {
 1004|      0|      case '!':
  ------------------
  |  Branch (1004:7): [True: 0, False: 31.8k]
  ------------------
 1005|      0|        if (altmode) goto modifier_exit; /* not accept for multiple '!' */
  ------------------
  |  Branch (1005:13): [True: 0, False: 0]
  ------------------
 1006|      0|        altmode = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 1007|      0|        break;
 1008|      0|      case '+':
  ------------------
  |  Branch (1008:7): [True: 0, False: 31.8k]
  ------------------
 1009|      0|        if (needmodify) goto modifier_exit; /* not accept for multiple '+' */
  ------------------
  |  Branch (1009:13): [True: 0, False: 0]
  ------------------
 1010|      0|        needmodify = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 1011|      0|        break;
 1012|  31.8k|      default:
  ------------------
  |  Branch (1012:7): [True: 31.8k, False: 0]
  ------------------
 1013|  31.8k|        goto modifier_exit;
 1014|  31.8k|      }
 1015|  31.8k|    }
 1016|       |
 1017|   120k|  modifier_exit:
 1018|   120k|    switch (c) {
 1019|  22.7k|    case '|': case '*': case '&': case '?': case ':':
  ------------------
  |  Branch (1019:5): [True: 15.6k, False: 105k]
  |  Branch (1019:15): [True: 6.66k, False: 114k]
  |  Branch (1019:25): [True: 476, False: 120k]
  |  Branch (1019:35): [True: 0, False: 120k]
  |  Branch (1019:45): [True: 0, False: 120k]
  ------------------
 1020|  22.7k|      if (needmodify) {
  ------------------
  |  Branch (1020:11): [True: 0, False: 22.7k]
  ------------------
 1021|      0|      bad_needmodify:
 1022|      0|        mrb_raisef(mrb, E_ARGUMENT_ERROR, "wrong `%c+` modified specifier`", c);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1023|      0|      }
 1024|  22.7k|      break;
 1025|  97.9k|    default:
  ------------------
  |  Branch (1025:5): [True: 97.9k, False: 22.7k]
  ------------------
 1026|  97.9k|      if (i < argc) {
  ------------------
  |  Branch (1026:11): [True: 96.0k, False: 1.90k]
  ------------------
 1027|  96.0k|        pickarg = &argv[i++];
 1028|  96.0k|        if (needmodify && !mrb_nil_p(*pickarg)) {
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  ------------------
  |  Branch (1028:13): [True: 0, False: 96.0k]
  |  Branch (1028:27): [True: 0, False: 0]
  ------------------
 1029|      0|          mrb_check_frozen_value(mrb, *pickarg);
 1030|      0|        }
 1031|  96.0k|      }
 1032|  1.90k|      else {
 1033|  1.90k|        if (opt) {
  ------------------
  |  Branch (1033:13): [True: 1.90k, False: 0]
  ------------------
 1034|  1.90k|          pickarg = NULL;
 1035|  1.90k|        }
 1036|      0|        else {
 1037|      0|          mrb_argnum_error(mrb, argc, argc_min, argc_max);
 1038|      0|        }
 1039|  1.90k|      }
 1040|  97.9k|      break;
 1041|   120k|    }
 1042|       |
 1043|   120k|    switch (c) {
 1044|  7.62k|    case 'o':
  ------------------
  |  Branch (1044:5): [True: 7.62k, False: 113k]
  ------------------
 1045|  7.62k|    case 'C':
  ------------------
  |  Branch (1045:5): [True: 0, False: 120k]
  ------------------
 1046|  8.09k|    case 'S':
  ------------------
  |  Branch (1046:5): [True: 476, False: 120k]
  ------------------
 1047|  14.0k|    case 'A':
  ------------------
  |  Branch (1047:5): [True: 5.99k, False: 114k]
  ------------------
 1048|  16.4k|    case 'H':
  ------------------
  |  Branch (1048:5): [True: 2.38k, False: 118k]
  ------------------
 1049|  16.4k|      {
 1050|  16.4k|        mrb_value *p;
 1051|       |
 1052|  16.4k|        p = GET_ARG(mrb_value*);
  ------------------
  |  |  913|  16.4k|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 16.4k]
  |  |  ------------------
  ------------------
 1053|  16.4k|        if (pickarg) {
  ------------------
  |  Branch (1053:13): [True: 14.5k, False: 1.90k]
  ------------------
 1054|  14.5k|          if (!(altmode && mrb_nil_p(*pickarg))) {
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1054:17): [True: 0, False: 14.5k]
  ------------------
 1055|  14.5k|            switch (c) {
  ------------------
  |  Branch (1055:21): [True: 7.62k, False: 6.95k]
  ------------------
 1056|      0|            case 'C': ensure_class_type(mrb, *pickarg); break;
  ------------------
  |  Branch (1056:13): [True: 0, False: 14.5k]
  ------------------
 1057|      0|            case 'S': mrb_ensure_string_type(mrb, *pickarg); break;
  ------------------
  |  Branch (1057:13): [True: 0, False: 14.5k]
  ------------------
 1058|  5.99k|            case 'A': mrb_ensure_array_type(mrb, *pickarg); break;
  ------------------
  |  Branch (1058:13): [True: 5.99k, False: 8.58k]
  ------------------
 1059|    957|            case 'H': mrb_ensure_hash_type(mrb, *pickarg); break;
  ------------------
  |  Branch (1059:13): [True: 957, False: 13.6k]
  ------------------
 1060|  14.5k|            }
 1061|  14.5k|          }
 1062|  14.5k|          *p = *pickarg;
 1063|  14.5k|        }
 1064|  16.4k|      }
 1065|  16.4k|      break;
 1066|  64.6k|    case 'c':
  ------------------
  |  Branch (1066:5): [True: 64.6k, False: 56.0k]
  ------------------
 1067|  64.6k|      {
 1068|  64.6k|        struct RClass **p;
 1069|       |
 1070|  64.6k|        p = GET_ARG(struct RClass**);
  ------------------
  |  |  913|  64.6k|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 64.6k]
  |  |  ------------------
  ------------------
 1071|  64.6k|        if (pickarg) {
  ------------------
  |  Branch (1071:13): [True: 64.6k, False: 0]
  ------------------
 1072|  64.6k|          if (altmode && mrb_nil_p(*pickarg)) {
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1072:15): [True: 0, False: 64.6k]
  ------------------
 1073|      0|            *p = NULL;
 1074|      0|          }
 1075|  64.6k|          else {
 1076|  64.6k|            ensure_class_type(mrb, *pickarg);
 1077|  64.6k|            *p = mrb_class_ptr(*pickarg);
  ------------------
  |  |   24|  64.6k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  64.6k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1078|  64.6k|          }
 1079|  64.6k|        }
 1080|  64.6k|      }
 1081|  64.6k|      break;
 1082|      0|    case 's':
  ------------------
  |  Branch (1082:5): [True: 0, False: 120k]
  ------------------
 1083|      0|      {
 1084|      0|        const char **ps = NULL;
 1085|      0|        mrb_int *pl = NULL;
 1086|       |
 1087|      0|        ps = GET_ARG(const char**);
  ------------------
  |  |  913|      0|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1088|      0|        pl = GET_ARG(mrb_int*);
  ------------------
  |  |  913|      0|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1089|      0|        if (needmodify) goto bad_needmodify;
  ------------------
  |  Branch (1089:13): [True: 0, False: 0]
  ------------------
 1090|      0|        if (pickarg) {
  ------------------
  |  Branch (1090:13): [True: 0, False: 0]
  ------------------
 1091|      0|          if (altmode && mrb_nil_p(*pickarg)) {
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1091:15): [True: 0, False: 0]
  ------------------
 1092|      0|            *ps = NULL;
 1093|      0|            *pl = 0;
 1094|      0|          }
 1095|      0|          else {
 1096|      0|            mrb_ensure_string_type(mrb, *pickarg);
 1097|      0|            *ps = RSTRING_PTR(*pickarg);
  ------------------
  |  |  100|      0|#define RSTRING_PTR(s)       RSTR_PTR(RSTRING(s))
  |  |  ------------------
  |  |  |  |   65|      0|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  110|      0|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:22): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1098|      0|            *pl = RSTRING_LEN(*pickarg);
  ------------------
  |  |  102|      0|#define RSTRING_LEN(s)       RSTR_LEN(RSTRING(s))
  |  |  ------------------
  |  |  |  |   66|      0|#define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  110|      0|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|  (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  114|      0|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  113|      0|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|      0|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                 (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (66:22): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1099|      0|          }
 1100|      0|        }
 1101|      0|      }
 1102|      0|      break;
 1103|      0|    case 'z':
  ------------------
  |  Branch (1103:5): [True: 0, False: 120k]
  ------------------
 1104|      0|      {
 1105|      0|        const char **ps;
 1106|       |
 1107|      0|        ps = GET_ARG(const char**);
  ------------------
  |  |  913|      0|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1108|      0|        if (needmodify) goto bad_needmodify;
  ------------------
  |  Branch (1108:13): [True: 0, False: 0]
  ------------------
 1109|      0|        if (pickarg) {
  ------------------
  |  Branch (1109:13): [True: 0, False: 0]
  ------------------
 1110|      0|          if (altmode && mrb_nil_p(*pickarg)) {
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1110:15): [True: 0, False: 0]
  ------------------
 1111|      0|            *ps = NULL;
 1112|      0|          }
 1113|      0|          else {
 1114|      0|            mrb_ensure_string_type(mrb, *pickarg);
 1115|      0|            *ps = RSTRING_CSTR(mrb, *pickarg);
  ------------------
  |  |  105|      0|#define RSTRING_CSTR(mrb,s)  mrb_string_cstr(mrb, s)
  ------------------
 1116|      0|          }
 1117|      0|        }
 1118|      0|      }
 1119|      0|      break;
 1120|      0|    case 'a':
  ------------------
  |  Branch (1120:5): [True: 0, False: 120k]
  ------------------
 1121|      0|      {
 1122|      0|        struct RArray *a;
 1123|      0|        const mrb_value **pb;
 1124|      0|        mrb_int *pl;
 1125|       |
 1126|      0|        pb = GET_ARG(const mrb_value**);
  ------------------
  |  |  913|      0|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1127|      0|        pl = GET_ARG(mrb_int*);
  ------------------
  |  |  913|      0|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1128|      0|        if (needmodify) goto bad_needmodify;
  ------------------
  |  Branch (1128:13): [True: 0, False: 0]
  ------------------
 1129|      0|        if (pickarg) {
  ------------------
  |  Branch (1129:13): [True: 0, False: 0]
  ------------------
 1130|      0|          if (altmode && mrb_nil_p(*pickarg)) {
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1130:15): [True: 0, False: 0]
  ------------------
 1131|      0|            *pb = NULL;
 1132|      0|            *pl = 0;
 1133|      0|          }
 1134|      0|          else {
 1135|      0|            mrb_ensure_array_type(mrb, *pickarg);
 1136|      0|            a = mrb_ary_ptr(*pickarg);
  ------------------
  |  |   51|      0|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1137|      0|            *pb = ARY_PTR(a);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
 1138|      0|            *pl = ARY_LEN(a);
  ------------------
  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1139|      0|          }
 1140|      0|        }
 1141|      0|      }
 1142|      0|      break;
 1143|      0|#ifndef MRB_NO_FLOAT
 1144|    354|    case 'f':
  ------------------
  |  Branch (1144:5): [True: 354, False: 120k]
  ------------------
 1145|    354|      {
 1146|    354|        mrb_float *p;
 1147|       |
 1148|    354|        p = GET_ARG(mrb_float*);
  ------------------
  |  |  913|    354|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 354]
  |  |  ------------------
  ------------------
 1149|    354|        if (pickarg) {
  ------------------
  |  Branch (1149:13): [True: 354, False: 0]
  ------------------
 1150|    354|          *p = mrb_as_float(mrb, *pickarg);
  ------------------
  |  | 1297|    354|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|    354|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
 1151|    354|        }
 1152|    354|      }
 1153|    354|      break;
 1154|      0|#endif
 1155|  5.58k|    case 'i':
  ------------------
  |  Branch (1155:5): [True: 5.58k, False: 115k]
  ------------------
 1156|  5.58k|      {
 1157|  5.58k|        mrb_int *p;
 1158|       |
 1159|  5.58k|        p = GET_ARG(mrb_int*);
  ------------------
  |  |  913|  5.58k|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 5.58k]
  |  |  ------------------
  ------------------
 1160|  5.58k|        if (pickarg) {
  ------------------
  |  Branch (1160:13): [True: 5.58k, False: 0]
  ------------------
 1161|  5.58k|          *p = mrb_as_int(mrb, *pickarg);
  ------------------
  |  | 1425|  5.58k|#define mrb_as_int(mrb, val) mrb_integer(mrb_ensure_int_type(mrb, val))
  |  |  ------------------
  |  |  |  |  166|  5.58k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  ------------------
  ------------------
 1162|  5.58k|        }
 1163|  5.58k|      }
 1164|  5.58k|      break;
 1165|    880|    case 'b':
  ------------------
  |  Branch (1165:5): [True: 880, False: 119k]
  ------------------
 1166|    880|      {
 1167|    880|        mrb_bool *boolp = GET_ARG(mrb_bool*);
  ------------------
  |  |  913|    880|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 880]
  |  |  ------------------
  ------------------
 1168|       |
 1169|    880|        if (pickarg) {
  ------------------
  |  Branch (1169:13): [True: 880, False: 0]
  ------------------
 1170|    880|          *boolp = mrb_test(*pickarg);
  ------------------
  |  |  312|    880|#define mrb_test(o)   mrb_bool(o)
  |  |  ------------------
  |  |  |  |  168|    880|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  |  |  ------------------
  ------------------
 1171|    880|        }
 1172|    880|      }
 1173|    880|      break;
 1174|  9.99k|    case 'n':
  ------------------
  |  Branch (1174:5): [True: 9.99k, False: 110k]
  ------------------
 1175|  9.99k|      {
 1176|  9.99k|        mrb_sym *symp;
 1177|       |
 1178|  9.99k|        symp = GET_ARG(mrb_sym*);
  ------------------
  |  |  913|  9.99k|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 9.99k]
  |  |  ------------------
  ------------------
 1179|  9.99k|        if (pickarg) {
  ------------------
  |  Branch (1179:13): [True: 9.99k, False: 0]
  ------------------
 1180|  9.99k|          *symp = to_sym(mrb, *pickarg);
  ------------------
  |  |  853|  9.99k|#define to_sym(mrb, ss) mrb_obj_to_sym(mrb, ss)
  ------------------
 1181|  9.99k|        }
 1182|  9.99k|      }
 1183|  9.99k|      break;
 1184|      0|    case 'd':
  ------------------
  |  Branch (1184:5): [True: 0, False: 120k]
  ------------------
 1185|      0|      {
 1186|      0|        void** datap;
 1187|      0|        struct mrb_data_type const* type;
 1188|       |
 1189|      0|        datap = GET_ARG(void**);
  ------------------
  |  |  913|      0|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1190|      0|        type = GET_ARG(struct mrb_data_type const*);
  ------------------
  |  |  913|      0|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1191|      0|        if (pickarg) {
  ------------------
  |  Branch (1191:13): [True: 0, False: 0]
  ------------------
 1192|      0|          if (altmode && mrb_nil_p(*pickarg)) {
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1192:15): [True: 0, False: 0]
  ------------------
 1193|      0|            *datap = NULL;
 1194|      0|          }
 1195|      0|          else {
 1196|      0|            *datap = mrb_data_get_ptr(mrb, *pickarg, type);
 1197|      0|          }
 1198|      0|        }
 1199|      0|      }
 1200|      0|      break;
 1201|       |
 1202|    476|    case '&':
  ------------------
  |  Branch (1202:5): [True: 476, False: 120k]
  ------------------
 1203|    476|      {
 1204|    476|        mrb_value *p, *bp;
 1205|       |
 1206|    476|        p = GET_ARG(mrb_value*);
  ------------------
  |  |  913|    476|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 476]
  |  |  ------------------
  ------------------
 1207|    476|        bp = ci->stack + mrb_ci_bidx(ci);
 1208|    476|        if (altmode && mrb_nil_p(*bp)) {
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1208:13): [True: 0, False: 476]
  ------------------
 1209|      0|          mrb_raise(mrb, E_ARGUMENT_ERROR, "no block given");
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1210|      0|        }
 1211|    476|        *p = *bp;
 1212|    476|      }
 1213|      0|      break;
 1214|  15.6k|    case '|':
  ------------------
  |  Branch (1214:5): [True: 15.6k, False: 105k]
  ------------------
 1215|  15.6k|      if (opt_skip && i == argc) goto finish;
  ------------------
  |  Branch (1215:11): [True: 15.1k, False: 476]
  |  Branch (1215:23): [True: 10.8k, False: 4.27k]
  ------------------
 1216|  4.75k|      opt = TRUE;
  ------------------
  |  |   54|  4.75k|#  define TRUE 1
  ------------------
 1217|  4.75k|      break;
 1218|      0|    case '?':
  ------------------
  |  Branch (1218:5): [True: 0, False: 120k]
  ------------------
 1219|      0|      {
 1220|      0|        mrb_bool *p;
 1221|       |
 1222|      0|        p = GET_ARG(mrb_bool*);
  ------------------
  |  |  913|      0|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1223|      0|        *p = pickarg ? TRUE : FALSE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
                      *p = pickarg ? TRUE : FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  |  Branch (1223:14): [True: 0, False: 0]
  ------------------
 1224|      0|      }
 1225|      0|      break;
 1226|       |
 1227|  6.66k|    case '*':
  ------------------
  |  Branch (1227:5): [True: 6.66k, False: 114k]
  ------------------
 1228|  6.66k|      {
 1229|  6.66k|        const mrb_value **var;
 1230|  6.66k|        mrb_int *pl;
 1231|  6.66k|        mrb_bool nocopy = (altmode || !argv_on_stack) ? TRUE : FALSE;
  ------------------
  |  |   54|  4.76k|#  define TRUE 1
  ------------------
                      mrb_bool nocopy = (altmode || !argv_on_stack) ? TRUE : FALSE;
  ------------------
  |  |   51|  8.56k|#  define FALSE 0
  ------------------
  |  Branch (1231:28): [True: 0, False: 6.66k]
  |  Branch (1231:39): [True: 4.76k, False: 1.90k]
  ------------------
 1232|       |
 1233|  6.66k|        var = GET_ARG(const mrb_value**);
  ------------------
  |  |  913|  6.66k|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 6.66k]
  |  |  ------------------
  ------------------
 1234|  6.66k|        pl = GET_ARG(mrb_int*);
  ------------------
  |  |  913|  6.66k|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 6.66k]
  |  |  ------------------
  ------------------
 1235|  6.66k|        if (argc > i) {
  ------------------
  |  Branch (1235:13): [True: 6.66k, False: 0]
  ------------------
 1236|  6.66k|          *pl = argc-i;
 1237|  6.66k|          if (*pl > 0) {
  ------------------
  |  Branch (1237:15): [True: 6.66k, False: 0]
  ------------------
 1238|  6.66k|            if (nocopy) {
  ------------------
  |  Branch (1238:17): [True: 4.76k, False: 1.90k]
  ------------------
 1239|  4.76k|              *var = argv+i;
 1240|  4.76k|            }
 1241|  1.90k|            else {
 1242|  1.90k|              mrb_value args = mrb_ary_new_from_values(mrb, *pl, argv+i);
 1243|  1.90k|              RARRAY(args)->c = NULL;
  ------------------
  |  |   53|  1.90k|#define RARRAY(v)  ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  1.90k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1244|  1.90k|              *var = RARRAY_PTR(args);
  ------------------
  |  |   73|  1.90k|#define RARRAY_PTR(a) ARY_PTR(RARRAY(a))
  |  |  ------------------
  |  |  |  |   71|  1.90k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  1.90k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  1.90k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 1.90k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  1.90k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1245|  1.90k|            }
 1246|  6.66k|          }
 1247|  6.66k|          i = argc;
 1248|  6.66k|        }
 1249|      0|        else {
 1250|      0|          *pl = 0;
 1251|      0|          *var = NULL;
 1252|      0|        }
 1253|  6.66k|      }
 1254|  6.66k|      break;
 1255|       |
 1256|      0|    case ':':
  ------------------
  |  Branch (1256:5): [True: 0, False: 120k]
  ------------------
 1257|      0|      {
 1258|      0|        mrb_value ksrc = mrb_hash_p(kdict) ? mrb_hash_dup(mrb, kdict) : mrb_hash_new(mrb);
  ------------------
  |  |  188|      0|#define mrb_hash_p(o) WORDBOX_OBJ_TYPE_P(o, HASH)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1259|      0|        const mrb_kwargs *kwargs = GET_ARG(const mrb_kwargs*);
  ------------------
  |  |  913|      0|#define GET_ARG(_type) (ptr ? ((_type)(*ptr++)) : va_arg((*ap), _type))
  |  |  ------------------
  |  |  |  Branch (913:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1260|      0|        mrb_value *rest;
 1261|       |
 1262|      0|        if (kwargs == NULL) {
  ------------------
  |  Branch (1262:13): [True: 0, False: 0]
  ------------------
 1263|      0|          rest = NULL;
 1264|      0|        }
 1265|      0|        else {
 1266|      0|          mrb_int kwnum = kwargs->num;
 1267|      0|          mrb_int required = kwargs->required;
 1268|      0|          const mrb_sym *kname = kwargs->table;
 1269|      0|          mrb_value *values = kwargs->values;
 1270|      0|          mrb_int j;
 1271|      0|          const uint32_t keyword_max = 40;
 1272|       |
 1273|      0|          mrb_assert(kwnum >= 0);
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 1274|      0|          mrb_assert(required >= 0);
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 1275|      0|          if (kwnum > keyword_max || required > kwnum) {
  ------------------
  |  Branch (1275:15): [True: 0, False: 0]
  |  Branch (1275:38): [True: 0, False: 0]
  ------------------
 1276|      0|            mrb_raise(mrb, E_ARGUMENT_ERROR, "keyword number is too large");
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1277|      0|          }
 1278|       |
 1279|      0|          for (j = required; j > 0; j--, kname++, values++) {
  ------------------
  |  Branch (1279:30): [True: 0, False: 0]
  ------------------
 1280|      0|            mrb_value k = mrb_symbol_value(*kname);
 1281|      0|            if (!mrb_hash_key_p(mrb, ksrc, k)) {
  ------------------
  |  Branch (1281:17): [True: 0, False: 0]
  ------------------
 1282|      0|              mrb_raisef(mrb, E_ARGUMENT_ERROR, "missing keyword: %n", *kname);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1283|      0|            }
 1284|      0|            *values = mrb_hash_delete_key(mrb, ksrc, k);
 1285|      0|            mrb_gc_protect(mrb, *values);
 1286|      0|          }
 1287|       |
 1288|      0|          for (j = kwnum - required; j > 0; j--, kname++, values++) {
  ------------------
  |  Branch (1288:38): [True: 0, False: 0]
  ------------------
 1289|      0|            mrb_value k = mrb_symbol_value(*kname);
 1290|      0|            if (mrb_hash_key_p(mrb, ksrc, k)) {
  ------------------
  |  Branch (1290:17): [True: 0, False: 0]
  ------------------
 1291|      0|              *values = mrb_hash_delete_key(mrb, ksrc, k);
 1292|      0|              mrb_gc_protect(mrb, *values);
 1293|      0|            }
 1294|      0|            else {
 1295|      0|              *values = mrb_undef_value();
 1296|      0|            }
 1297|      0|          }
 1298|       |
 1299|      0|          rest = kwargs->rest;
 1300|      0|        }
 1301|       |
 1302|      0|        if (rest) {
  ------------------
  |  Branch (1302:13): [True: 0, False: 0]
  ------------------
 1303|      0|          *rest = ksrc;
 1304|      0|        }
 1305|      0|        else if (!mrb_hash_empty_p(mrb, ksrc)) {
  ------------------
  |  Branch (1305:18): [True: 0, False: 0]
  ------------------
 1306|      0|          ksrc = mrb_hash_keys(mrb, ksrc);
 1307|      0|          ksrc = RARRAY_PTR(ksrc)[0];
  ------------------
  |  |   73|      0|#define RARRAY_PTR(a) ARY_PTR(RARRAY(a))
  |  |  ------------------
  |  |  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1308|      0|          mrb_raisef(mrb, E_ARGUMENT_ERROR, "unknown keyword: %v", ksrc);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1309|      0|        }
 1310|      0|      }
 1311|      0|      break;
 1312|       |
 1313|      0|    default:
  ------------------
  |  Branch (1313:5): [True: 0, False: 120k]
  ------------------
 1314|      0|      mrb_raisef(mrb, E_ARGUMENT_ERROR, "invalid argument specifier %c", c);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1315|      0|      break;
 1316|   120k|    }
 1317|   120k|  }
 1318|       |
 1319|  88.8k|  if (!c && argc > i) {
  ------------------
  |  Branch (1319:7): [True: 88.8k, False: 0]
  |  Branch (1319:13): [True: 0, False: 88.8k]
  ------------------
 1320|      0|    mrb_argnum_error(mrb, argc, argc_min, argc_max);
 1321|      0|  }
 1322|       |
 1323|  99.7k|finish:
 1324|  99.7k|  return i;
 1325|  88.8k|}
class.c:ensure_class_type:
  847|  64.6k|{
  848|  64.6k|  if (!class_ptr_p(val)) {
  ------------------
  |  Branch (848:7): [True: 0, False: 64.6k]
  ------------------
  849|      0|    mrb_raisef(mrb, E_TYPE_ERROR, "%v is not class/module", val);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  850|      0|  }
  851|  64.6k|}
class.c:include_module_at:
 1429|  8.09k|{
 1430|  8.09k|  struct RClass *p, *ic;
 1431|  8.09k|  void *klass_mt = find_origin(c)->mt;
 1432|       |
 1433|  16.1k|  while (m) {
  ------------------
  |  Branch (1433:10): [True: 8.09k, False: 8.09k]
  ------------------
 1434|  8.09k|    int original_seen = FALSE;
  ------------------
  |  |   51|  8.09k|#  define FALSE 0
  ------------------
 1435|  8.09k|    int superclass_seen = FALSE;
  ------------------
  |  |   51|  8.09k|#  define FALSE 0
  ------------------
 1436|       |
 1437|  8.09k|    if (c == ins_pos) original_seen = TRUE;
  ------------------
  |  |   54|  8.09k|#  define TRUE 1
  ------------------
  |  Branch (1437:9): [True: 8.09k, False: 0]
  ------------------
 1438|  8.09k|    if (m->flags & MRB_FL_CLASS_IS_PREPENDED)
  ------------------
  |  |   63|  8.09k|#define MRB_FL_CLASS_IS_PREPENDED (1 << 19)
  ------------------
  |  Branch (1438:9): [True: 0, False: 8.09k]
  ------------------
 1439|      0|      goto skip;
 1440|       |
 1441|  8.09k|    if (klass_mt && klass_mt == m->mt)
  ------------------
  |  Branch (1441:9): [True: 8.09k, False: 0]
  |  Branch (1441:21): [True: 0, False: 8.09k]
  ------------------
 1442|      0|      return -1;
 1443|       |
 1444|  8.09k|    p = c->super;
 1445|  32.3k|    while (p) {
  ------------------
  |  Branch (1445:12): [True: 24.2k, False: 8.09k]
  ------------------
 1446|  24.2k|      if (c == p) original_seen = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  |  Branch (1446:11): [True: 0, False: 24.2k]
  ------------------
 1447|  24.2k|      if (p->tt == MRB_TT_ICLASS) {
  ------------------
  |  Branch (1447:11): [True: 8.09k, False: 16.1k]
  ------------------
 1448|  8.09k|        if (p->mt == m->mt) {
  ------------------
  |  Branch (1448:13): [True: 0, False: 8.09k]
  ------------------
 1449|      0|          if (!superclass_seen && original_seen) {
  ------------------
  |  Branch (1449:15): [True: 0, False: 0]
  |  Branch (1449:35): [True: 0, False: 0]
  ------------------
 1450|      0|            ins_pos = p; /* move insert point */
 1451|      0|          }
 1452|      0|          goto skip;
 1453|      0|        }
 1454|  8.09k|      }
 1455|  16.1k|      else if (p->tt == MRB_TT_CLASS) {
  ------------------
  |  Branch (1455:16): [True: 16.1k, False: 0]
  ------------------
 1456|  16.1k|        if (!search_super) break;
  ------------------
  |  Branch (1456:13): [True: 0, False: 16.1k]
  ------------------
 1457|  16.1k|        superclass_seen = TRUE;
  ------------------
  |  |   54|  16.1k|#  define TRUE 1
  ------------------
 1458|  16.1k|      }
 1459|  24.2k|      p = p->super;
 1460|  24.2k|    }
 1461|       |
 1462|  8.09k|    ic = include_class_new(mrb, m, ins_pos->super);
 1463|  8.09k|    m->flags |= MRB_FL_CLASS_IS_INHERITED;
  ------------------
  |  |   73|  8.09k|#define MRB_FL_CLASS_IS_INHERITED (1 << 17)
  ------------------
 1464|  8.09k|    ins_pos->super = ic;
 1465|  8.09k|    mrb_field_write_barrier(mrb, (struct RBasic*)ins_pos, (struct RBasic*)ic);
 1466|  8.09k|    ins_pos = ic;
 1467|  8.09k|  skip:
 1468|  8.09k|    m = m->super;
 1469|  8.09k|  }
 1470|  8.09k|  mc_clear(mrb);
 1471|  8.09k|  return 0;
 1472|  8.09k|}
class.c:include_class_new:
 1409|  8.09k|{
 1410|  8.09k|  struct RClass *ic = MRB_OBJ_ALLOC(mrb, MRB_TT_ICLASS, mrb->class_class);
  ------------------
  |  | 1200|  8.09k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
 1411|  8.09k|  if (m->tt == MRB_TT_ICLASS) {
  ------------------
  |  Branch (1411:7): [True: 0, False: 8.09k]
  ------------------
 1412|      0|    m = m->c;
 1413|      0|  }
 1414|  8.09k|  MRB_CLASS_ORIGIN(m);
  ------------------
  |  |   65|  8.09k|#define MRB_CLASS_ORIGIN(c) do {\
  |  |   66|  8.09k|  if ((c)->flags & MRB_FL_CLASS_IS_PREPENDED) {\
  |  |  ------------------
  |  |  |  |   63|  8.09k|#define MRB_FL_CLASS_IS_PREPENDED (1 << 19)
  |  |  ------------------
  |  |  |  Branch (66:7): [True: 0, False: 8.09k]
  |  |  ------------------
  |  |   67|      0|    (c) = (c)->super;\
  |  |   68|      0|    while (!((c)->flags & MRB_FL_CLASS_IS_ORIGIN)) {\
  |  |  ------------------
  |  |  |  |   64|      0|#define MRB_FL_CLASS_IS_ORIGIN (1 << 18)
  |  |  ------------------
  |  |  |  Branch (68:12): [True: 0, False: 0]
  |  |  ------------------
  |  |   69|      0|      (c) = (c)->super;\
  |  |   70|      0|    }\
  |  |   71|      0|  }\
  |  |   72|  8.09k|} while (0)
  |  |  ------------------
  |  |  |  Branch (72:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1415|  8.09k|  ic->iv = m->iv;
 1416|  8.09k|  ic->mt = m->mt;
 1417|  8.09k|  ic->super = super;
 1418|  8.09k|  if (m->tt == MRB_TT_ICLASS) {
  ------------------
  |  Branch (1418:7): [True: 0, False: 8.09k]
  ------------------
 1419|      0|    ic->c = m->c;
 1420|      0|  }
 1421|  8.09k|  else {
 1422|  8.09k|    ic->c = m;
 1423|  8.09k|  }
 1424|  8.09k|  return ic;
 1425|  8.09k|}
class.c:mc_clear:
 1745|  8.09k|{
 1746|  8.09k|  static const struct mrb_cache_entry ce_zero ={0};
 1747|       |
 1748|  2.07M|  for (int i=0; i<MRB_METHOD_CACHE_SIZE; i++) {
  ------------------
  |  |  218|  2.07M|# define MRB_METHOD_CACHE_SIZE (1<<8)
  ------------------
  |  Branch (1748:17): [True: 2.07M, False: 8.09k]
  ------------------
 1749|  2.07M|    mrb->cache[i] = ce_zero;
 1750|  2.07M|  }
 1751|  8.09k|}
class.c:find_origin:
  524|  16.1k|{
  525|  16.1k|  MRB_CLASS_ORIGIN(c);
  ------------------
  |  |   65|  16.1k|#define MRB_CLASS_ORIGIN(c) do {\
  |  |   66|  16.1k|  if ((c)->flags & MRB_FL_CLASS_IS_PREPENDED) {\
  |  |  ------------------
  |  |  |  |   63|  16.1k|#define MRB_FL_CLASS_IS_PREPENDED (1 << 19)
  |  |  ------------------
  |  |  |  Branch (66:7): [True: 0, False: 16.1k]
  |  |  ------------------
  |  |   67|      0|    (c) = (c)->super;\
  |  |   68|      0|    while (!((c)->flags & MRB_FL_CLASS_IS_ORIGIN)) {\
  |  |  ------------------
  |  |  |  |   64|      0|#define MRB_FL_CLASS_IS_ORIGIN (1 << 18)
  |  |  ------------------
  |  |  |  Branch (68:12): [True: 0, False: 0]
  |  |  ------------------
  |  |   69|      0|      (c) = (c)->super;\
  |  |   70|      0|    }\
  |  |   71|      0|  }\
  |  |   72|  16.1k|} while (0)
  |  |  ------------------
  |  |  |  Branch (72:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  526|  16.1k|  return c;
  527|  16.1k|}
class.c:prepare_singleton_class:
  375|   142k|{
  376|   142k|  struct RClass *sc, *c;
  377|       |
  378|   142k|  mrb_assert(o->c);
  ------------------
  |  |   68|   142k|#define mrb_assert(p) ((void)0)
  ------------------
  379|   142k|  if (o->c->tt == MRB_TT_SCLASS) return;
  ------------------
  |  Branch (379:7): [True: 99.4k, False: 42.8k]
  ------------------
  380|  42.8k|  sc = MRB_OBJ_ALLOC(mrb, MRB_TT_SCLASS, mrb->class_class);
  ------------------
  |  | 1200|  42.8k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
  381|  42.8k|  sc->flags |= MRB_FL_CLASS_IS_INHERITED;
  ------------------
  |  |   73|  42.8k|#define MRB_FL_CLASS_IS_INHERITED (1 << 17)
  ------------------
  382|  42.8k|  sc->mt = NULL;
  383|  42.8k|  sc->iv = NULL;
  384|  42.8k|  if (o->tt == MRB_TT_CLASS) {
  ------------------
  |  Branch (384:7): [True: 35.2k, False: 7.61k]
  ------------------
  385|  35.2k|    c = (struct RClass*)o;
  386|  35.2k|    if (!c->super) {
  ------------------
  |  Branch (386:9): [True: 476, False: 34.7k]
  ------------------
  387|    476|      sc->super = mrb->class_class;
  388|    476|    }
  389|  34.7k|    else {
  390|  34.7k|      sc->super = c->super->c;
  391|  34.7k|    }
  392|  35.2k|  }
  393|  7.61k|  else if (o->tt == MRB_TT_SCLASS) {
  ------------------
  |  Branch (393:12): [True: 3.80k, False: 3.80k]
  ------------------
  394|  3.80k|    c = (struct RClass*)o;
  395|  3.80k|    while (c->super->tt == MRB_TT_ICLASS)
  ------------------
  |  Branch (395:12): [True: 0, False: 3.80k]
  ------------------
  396|      0|      c = c->super;
  397|  3.80k|    make_metaclass(mrb, c->super);
  ------------------
  |  |  371|  3.80k|#define make_metaclass(mrb, c) prepare_singleton_class((mrb), (struct RBasic*)(c))
  ------------------
  398|  3.80k|    sc->super = c->super->c;
  399|  3.80k|  }
  400|  3.80k|  else {
  401|  3.80k|    sc->super = o->c;
  402|  3.80k|    prepare_singleton_class(mrb, (struct RBasic*)sc);
  403|  3.80k|  }
  404|  42.8k|  o->c = sc;
  405|  42.8k|  mrb_field_write_barrier(mrb, (struct RBasic*)o, (struct RBasic*)sc);
  406|  42.8k|  mrb_obj_iv_set(mrb, (struct RObject*)sc, MRB_SYM(__attached__), mrb_obj_value(o));
  ------------------
  |  |   18|  42.8k|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  407|  42.8k|  sc->flags |= o->flags & MRB_FL_OBJ_IS_FROZEN;
  ------------------
  |  |   24|  42.8k|#define MRB_FL_OBJ_IS_FROZEN (1 << 20)
  ------------------
  408|  42.8k|}
class.c:mc_clear_by_id:
 1766|   656k|{
 1767|   656k|  struct mrb_cache_entry *mc = mrb->cache;
 1768|       |
 1769|   168M|  for (int i=0; i<MRB_METHOD_CACHE_SIZE; mc++,i++) {
  ------------------
  |  |  218|   168M|# define MRB_METHOD_CACHE_SIZE (1<<8)
  ------------------
  |  Branch (1769:17): [True: 168M, False: 656k]
  ------------------
 1770|   168M|    if (mc->mid == id) mc->c = NULL;
  ------------------
  |  Branch (1770:9): [True: 3.33k, False: 168M]
  ------------------
 1771|   168M|  }
 1772|   656k|}
class.c:mt_get:
  142|   276k|{
  143|   276k|  int hash, pos, start;
  144|       |
  145|   276k|  if (t == NULL) return 0;
  ------------------
  |  Branch (145:7): [True: 0, False: 276k]
  ------------------
  146|   276k|  if (t->alloc == 0) return 0;
  ------------------
  |  Branch (146:7): [True: 7.64k, False: 268k]
  ------------------
  147|   268k|  if (t->size == 0) return 0;
  ------------------
  |  Branch (147:7): [True: 0, False: 268k]
  ------------------
  148|       |
  149|   268k|  mrb_sym *keys = (mrb_sym*)&t->ptr[t->alloc];
  150|   268k|  union mt_ptr *vals = t->ptr;
  151|   268k|  hash = kh_int_hash_func(mrb, sym);
  ------------------
  |  |  267|   268k|#define kh_int_hash_func(mrb,key) (khint_t)((key)^((key)<<2)^((key)>>2))
  ------------------
  152|       |#ifdef MRB_USE_INLINE_METHOD_CACHE
  153|       |  int cpos = (hash^(uintptr_t)t) % MT_INLINE_CACHE_SIZE;
  154|       |  pos = mt_cache[cpos];
  155|       |  if (pos < t->alloc) {
  156|       |    mrb_sym key = keys[pos];
  157|       |    if (key) {
  158|       |      if (MT_KEY_SYM(key) == sym) {
  159|       |        *pp = vals[pos];
  160|       |        return key;
  161|       |      }
  162|       |    }
  163|       |  }
  164|       |#endif
  165|   268k|  start = pos = hash & (t->alloc-1);
  166|   568k|  for (;;) {
  167|   568k|    mrb_sym key = keys[pos];
  168|   568k|    if (MT_KEY_SYM(key) == sym) {
  ------------------
  |  |   35|   568k|#define MT_KEY_SYM(k) ((k)>>2)
  ------------------
  |  Branch (168:9): [True: 137k, False: 430k]
  ------------------
  169|   137k|      *pp = vals[pos];
  170|       |#ifdef MRB_USE_INLINE_METHOD_CACHE
  171|       |      if (pos < 0x100) {
  172|       |        mt_cache[cpos] = pos;
  173|       |      }
  174|       |#endif
  175|   137k|      return key;
  176|   137k|    }
  177|   430k|    else if (key == MT_EMPTY) {
  ------------------
  |  |   30|   430k|#define MT_EMPTY 0
  ------------------
  |  Branch (177:14): [True: 130k, False: 300k]
  ------------------
  178|   130k|      return 0;
  179|   130k|    }
  180|   300k|    pos = (pos+1) & (t->alloc-1);
  181|   300k|    if (pos == start) {         /* not found */
  ------------------
  |  Branch (181:9): [True: 1.11k, False: 299k]
  ------------------
  182|  1.11k|      return 0;
  183|  1.11k|    }
  184|   300k|  }
  185|   268k|}
class.c:mrb_instance_alloc:
 1938|  32.2k|{
 1939|  32.2k|  struct RClass *c = mrb_class_ptr(cv);
  ------------------
  |  |   24|  32.2k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  32.2k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1940|  32.2k|  struct RObject *o;
 1941|  32.2k|  enum mrb_vtype ttype = MRB_INSTANCE_TT(c);
  ------------------
  |  |   76|  32.2k|#define MRB_INSTANCE_TT(c) (enum mrb_vtype)((c)->flags & MRB_INSTANCE_TT_MASK)
  |  |  ------------------
  |  |  |  |   74|  32.2k|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
 1942|       |
 1943|  32.2k|  if (c->tt == MRB_TT_SCLASS)
  ------------------
  |  Branch (1943:7): [True: 0, False: 32.2k]
  ------------------
 1944|      0|    mrb_raise(mrb, E_TYPE_ERROR, "can't create instance of singleton class");
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1945|       |
 1946|  32.2k|  if (c == mrb->nil_class || c == mrb->false_class) {
  ------------------
  |  Branch (1946:7): [True: 0, False: 32.2k]
  |  Branch (1946:30): [True: 0, False: 32.2k]
  ------------------
 1947|      0|    mrb_assert(ttype == 0);
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 1948|      0|  }
 1949|  32.2k|  else if (ttype == 0) {
  ------------------
  |  Branch (1949:12): [True: 24.2k, False: 7.91k]
  ------------------
 1950|  24.2k|    ttype = MRB_TT_OBJECT;
 1951|  24.2k|  }
 1952|  32.2k|  if (ttype <= MRB_TT_CPTR) {
  ------------------
  |  Branch (1952:7): [True: 0, False: 32.2k]
  ------------------
 1953|      0|    if (ttype == MRB_TT_UNDEF) {
  ------------------
  |  Branch (1953:9): [True: 0, False: 0]
  ------------------
 1954|      0|      mrb_raisef(mrb, E_TYPE_ERROR, "allocator undefined for %v", cv);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1955|      0|    }
 1956|      0|    mrb_raisef(mrb, E_TYPE_ERROR, "can't create instance of %v", cv);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1957|      0|  }
 1958|  32.2k|  o = (struct RObject*)mrb_obj_alloc(mrb, ttype, c);
 1959|  32.2k|  return mrb_obj_value(o);
 1960|  32.2k|}
class.c:mrb_do_nothing:
 2061|  6.18k|{
 2062|  6.18k|  return mrb_nil_value();
 2063|  6.18k|}
class.c:class_name_str:
  412|     18|{
  413|     18|  mrb_value path = mrb_class_path(mrb, c);
  414|     18|  if (mrb_nil_p(path)) {
  ------------------
  |  |  174|     18|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 18]
  |  |  ------------------
  ------------------
  415|      0|    path = c->tt == MRB_TT_MODULE ? mrb_str_new_lit(mrb, "#<Module:") :
  ------------------
  |  | 1209|      0|#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|      0|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
  |  Branch (415:12): [True: 0, False: 0]
  ------------------
  416|      0|                                    mrb_str_new_lit(mrb, "#<Class:");
  ------------------
  |  | 1209|      0|#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|      0|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
  417|      0|    mrb_str_cat_str(mrb, path, mrb_ptr_to_str(mrb, c));
  418|      0|    mrb_str_cat_lit(mrb, path, ">");
  ------------------
  |  |  395|      0|#define mrb_str_cat_lit(mrb, str, lit) mrb_str_cat(mrb, str, lit, mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|      0|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
  419|      0|  }
  420|     18|  return path;
  421|     18|}
class.c:mrb_check_inheritable:
 2181|  31.4k|{
 2182|  31.4k|  if (super->tt != MRB_TT_CLASS) {
  ------------------
  |  Branch (2182:7): [True: 0, False: 31.4k]
  ------------------
 2183|      0|    mrb_raisef(mrb, E_TYPE_ERROR, "superclass must be a Class (%C given)", super);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2184|      0|  }
 2185|  31.4k|  if (super->tt == MRB_TT_SCLASS) {
  ------------------
  |  Branch (2185:7): [True: 0, False: 31.4k]
  ------------------
 2186|      0|    mrb_raise(mrb, E_TYPE_ERROR, "can't make subclass of singleton class");
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2187|      0|  }
 2188|  31.4k|  if (super == mrb->class_class) {
  ------------------
  |  Branch (2188:7): [True: 0, False: 31.4k]
  ------------------
 2189|      0|    mrb_raise(mrb, E_TYPE_ERROR, "can't make subclass of Class");
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2190|      0|  }
 2191|  31.4k|}
class.c:boot_defclass:
 1383|  35.2k|{
 1384|  35.2k|  struct RClass *c;
 1385|       |
 1386|  35.2k|  c = MRB_OBJ_ALLOC(mrb, MRB_TT_CLASS, mrb->class_class);
  ------------------
  |  | 1200|  35.2k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
 1387|  35.2k|  if (super) {
  ------------------
  |  Branch (1387:7): [True: 32.8k, False: 2.38k]
  ------------------
 1388|  32.8k|    c->super = super;
 1389|  32.8k|    mrb_field_write_barrier(mrb, (struct RBasic*)c, (struct RBasic*)super);
 1390|  32.8k|    c->flags |= MRB_FL_CLASS_IS_INHERITED;
  ------------------
  |  |   73|  32.8k|#define MRB_FL_CLASS_IS_INHERITED (1 << 17)
  ------------------
 1391|  32.8k|  }
 1392|  2.38k|  else {
 1393|  2.38k|    c->super = mrb->object_class;
 1394|  2.38k|  }
 1395|  35.2k|  c->mt = mt_new(mrb);
 1396|  35.2k|  return c;
 1397|  35.2k|}
class.c:boot_initmod:
 1401|  4.76k|{
 1402|  4.76k|  if (!mod->mt) {
  ------------------
  |  Branch (1402:7): [True: 4.76k, False: 0]
  ------------------
 1403|  4.76k|    mod->mt = mt_new(mrb);
 1404|  4.76k|  }
 1405|  4.76k|}
class.c:class_ptr_p:
  443|   101k|{
  444|   101k|  switch (mrb_type(obj)) {
  445|   101k|  case MRB_TT_CLASS:
  ------------------
  |  Branch (445:3): [True: 101k, False: 0]
  ------------------
  446|   101k|  case MRB_TT_SCLASS:
  ------------------
  |  Branch (446:3): [True: 0, False: 101k]
  ------------------
  447|   101k|  case MRB_TT_MODULE:
  ------------------
  |  Branch (447:3): [True: 0, False: 101k]
  ------------------
  448|   101k|    return TRUE;
  ------------------
  |  |   54|   101k|#  define TRUE 1
  ------------------
  449|      0|  default:
  ------------------
  |  Branch (449:3): [True: 0, False: 101k]
  ------------------
  450|      0|    return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  451|   101k|  }
  452|   101k|}
class.c:undef_method:
 2338|  8.56k|{
 2339|  8.56k|  mrb_method_t m;
 2340|       |
 2341|  8.56k|  MRB_METHOD_FROM_PROC(m, NULL);
  ------------------
  |  |  112|  8.56k|#define MRB_METHOD_FROM_PROC(m,pr) ((m)=(mrb_method_t)(pr))
  ------------------
 2342|  8.56k|  mrb_define_method_raw(mrb, c, a, m);
 2343|  8.56k|}
class.c:mrb_bob_not:
 2067|  2.17k|{
 2068|  2.17k|  return mrb_bool_value(!mrb_test(cv));
  ------------------
  |  |  312|  2.17k|#define mrb_test(o)   mrb_bool(o)
  |  |  ------------------
  |  |  |  |  168|  2.17k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  |  |  ------------------
  ------------------
 2069|  2.17k|}
class.c:init_class_new:
 2981|    476|{
 2982|    476|  mrb_method_t m;
 2983|       |
 2984|    476|  MRB_PRESYM_INIT_SYMBOLS(mrb, new_syms);
  ------------------
  |  |   31|    476|#define MRB_PRESYM_INIT_SYMBOLS(mrb, name) (void)(mrb)
  ------------------
 2985|    476|  MRB_METHOD_FROM_PROC(m, &new_proc);
  ------------------
  |  |  112|    476|#define MRB_METHOD_FROM_PROC(m,pr) ((m)=(mrb_method_t)(pr))
  ------------------
 2986|    476|  mrb_define_method_raw(mrb, cls, MRB_SYM(new), m);
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 2987|    476|}
class.c:mrb_mod_append_features:
 1569|  5.71k|{
 1570|  5.71k|  struct RClass *c;
 1571|       |
 1572|  5.71k|  mrb_check_type(mrb, mod, MRB_TT_MODULE);
 1573|  5.71k|  mrb_get_args(mrb, "c", &c);
 1574|  5.71k|  mrb_include_module(mrb, c, mrb_class_ptr(mod));
  ------------------
  |  |   24|  5.71k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  5.71k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1575|  5.71k|  return mod;
 1576|  5.71k|}
class.c:mrb_mod_dummy_visibility:
 1659|    476|{
 1660|    476|  return mod;
 1661|    476|}
class.c:mrb_mod_attr_reader:
 1916|  4.28k|{
 1917|  4.28k|  return mod_attr_define(mrb, mod, attr_reader, NULL);
 1918|  4.28k|}
class.c:mod_attr_define:
 1879|  6.66k|{
 1880|  6.66k|  struct RClass *c = mrb_class_ptr(mod);
  ------------------
  |  |   24|  6.66k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  6.66k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1881|  6.66k|  const mrb_value *argv;
 1882|  6.66k|  mrb_int argc;
 1883|  6.66k|  int ai;
 1884|       |
 1885|  6.66k|  mrb_get_args(mrb, "*", &argv, &argc);
 1886|  6.66k|  ai = mrb_gc_arena_save(mrb);
  ------------------
  |  | 1306|  6.66k|#define mrb_gc_arena_save(mrb) ((mrb)->gc.arena_idx)
  ------------------
 1887|  16.1k|  for (int i=0; i<argc; i++) {
  ------------------
  |  Branch (1887:17): [True: 9.52k, False: 6.66k]
  ------------------
 1888|  9.52k|    mrb_value name;
 1889|  9.52k|    mrb_sym method;
 1890|  9.52k|    struct RProc *p;
 1891|  9.52k|    mrb_method_t m;
 1892|       |
 1893|  9.52k|    method = to_sym(mrb, argv[i]);
  ------------------
  |  |  853|  9.52k|#define to_sym(mrb, ss) mrb_obj_to_sym(mrb, ss)
  ------------------
 1894|  9.52k|    name = prepare_ivar_name(mrb, method);
 1895|  9.52k|    if (access_name) {
  ------------------
  |  Branch (1895:9): [True: 3.80k, False: 5.71k]
  ------------------
 1896|  3.80k|      method = access_name(mrb, method);
 1897|  3.80k|    }
 1898|       |
 1899|  9.52k|    p = mrb_proc_new_cfunc_with_env(mrb, accessor, 1, &name);
 1900|  9.52k|    MRB_METHOD_FROM_PROC(m, p);
  ------------------
  |  |  112|  9.52k|#define MRB_METHOD_FROM_PROC(m,pr) ((m)=(mrb_method_t)(pr))
  ------------------
 1901|  9.52k|    mrb_define_method_raw(mrb, c, method, m);
 1902|  9.52k|    mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|  9.52k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 1903|  9.52k|  }
 1904|  6.66k|  return mrb_nil_value();
 1905|  6.66k|}
class.c:prepare_ivar_name:
 1865|  9.52k|{
 1866|  9.52k|  sym = prepare_name_common(mrb, sym, "@", NULL);
 1867|  9.52k|  mrb_iv_name_sym_check(mrb, sym);
 1868|  9.52k|  return mrb_symbol_value(sym);
 1869|  9.52k|}
class.c:prepare_name_common:
 1837|  13.3k|{
 1838|  13.3k|  char onstack[ONSTACK_ALLOC_MAX];
 1839|  13.3k|  mrb_int sym_len;
 1840|  13.3k|  const char *sym_str = mrb_sym_name_len(mrb, sym, &sym_len);
 1841|  13.3k|  size_t prefix_len = prefix ? strlen(prefix) : 0;
  ------------------
  |  Branch (1841:23): [True: 9.52k, False: 3.80k]
  ------------------
 1842|  13.3k|  size_t suffix_len = suffix ? strlen(suffix) : 0;
  ------------------
  |  Branch (1842:23): [True: 3.80k, False: 9.52k]
  ------------------
 1843|  13.3k|  size_t name_len = sym_len + prefix_len + suffix_len;
 1844|  13.3k|  char *buf = name_len > sizeof(onstack) ? (char*)mrb_alloca(mrb, name_len) : onstack;
  ------------------
  |  Branch (1844:15): [True: 0, False: 13.3k]
  ------------------
 1845|  13.3k|  char *p = buf;
 1846|       |
 1847|  13.3k|  if (prefix_len > 0) {
  ------------------
  |  Branch (1847:7): [True: 9.52k, False: 3.80k]
  ------------------
 1848|  9.52k|    memcpy(p, prefix, prefix_len);
 1849|  9.52k|    p += prefix_len;
 1850|  9.52k|  }
 1851|       |
 1852|  13.3k|  memcpy(p, sym_str, sym_len);
 1853|  13.3k|  p += sym_len;
 1854|       |
 1855|  13.3k|  if (suffix_len > 0) {
  ------------------
  |  Branch (1855:7): [True: 3.80k, False: 9.52k]
  ------------------
 1856|  3.80k|    memcpy(p, suffix, suffix_len);
 1857|  3.80k|    p += suffix_len;
 1858|  3.80k|  }
 1859|       |
 1860|  13.3k|  return mrb_intern(mrb, buf, name_len);
 1861|  13.3k|}
class.c:mrb_mod_attr_writer:
 1932|  2.38k|{
 1933|  2.38k|  return mod_attr_define(mrb, mod, attr_writer, prepare_writer_name);
 1934|  2.38k|}
class.c:prepare_writer_name:
 1873|  3.80k|{
 1874|  3.80k|  return prepare_name_common(mrb, sym, NULL, "=");
 1875|  3.80k|}
class.c:mrb_mod_alias:
 2326|  4.76k|{
 2327|  4.76k|  struct RClass *c = mrb_class_ptr(mod);
  ------------------
  |  |   24|  4.76k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  4.76k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 2328|  4.76k|  mrb_sym new_name, old_name;
 2329|       |
 2330|  4.76k|  mrb_get_args(mrb, "nn", &new_name, &old_name);
 2331|  4.76k|  mrb_alias_method(mrb, c, new_name, old_name);
 2332|  4.76k|  mrb_method_added(mrb, c, new_name);
 2333|  4.76k|  return mod;
 2334|  4.76k|}
class.c:mrb_mod_const_defined:
 2414|    476|{
 2415|    476|  mrb_sym id;
 2416|    476|  mrb_bool inherit = TRUE;
  ------------------
  |  |   54|    476|#  define TRUE 1
  ------------------
 2417|       |
 2418|    476|  mrb_get_args(mrb, "n|b", &id, &inherit);
 2419|    476|  check_const_name_sym(mrb, id);
 2420|    476|  if (inherit) {
  ------------------
  |  Branch (2420:7): [True: 476, False: 0]
  ------------------
 2421|    476|    return mrb_bool_value(mrb_const_defined(mrb, mod, id));
 2422|    476|  }
 2423|      0|  return mrb_bool_value(mrb_const_defined_at(mrb, mod, id));
 2424|    476|}
class.c:check_const_name_sym:
 2404|    476|{
 2405|    476|  mrb_int len;
 2406|    476|  const char *name = mrb_sym_name_len(mrb, id, &len);
 2407|    476|  if (!mrb_const_name_p(mrb, name, len)) {
  ------------------
  |  Branch (2407:7): [True: 0, False: 476]
  ------------------
 2408|      0|    mrb_name_error(mrb, id, "wrong constant name %n", id);
 2409|      0|  }
 2410|    476|}

mrb_init_comparable:
   11|    476|{
   12|    476|  mrb_define_module(mrb, "Comparable");  /* 15.3.3 */
   13|    476|}

mrb_packed_int_len:
   40|  67.7k|{
   41|  67.7k|  size_t llen = 0;
   42|       |
   43|  67.7k|  do {
   44|  67.7k|    llen++;
   45|  67.7k|  } while (num >>= 7);
  ------------------
  |  Branch (45:12): [True: 0, False: 67.7k]
  ------------------
   46|  67.7k|  return llen;
   47|  67.7k|}
mrb_packed_int_encode:
   51|  67.7k|{
   52|  67.7k|  size_t llen = 0;
   53|       |
   54|  67.7k|  do {
   55|  67.7k|    uint8_t byte = num & 0x7f;
   56|  67.7k|    num >>= 7;
   57|  67.7k|    if (num != 0) byte |= 0x80;
  ------------------
  |  Branch (57:9): [True: 0, False: 67.7k]
  ------------------
   58|  67.7k|    *p++ = byte;
   59|  67.7k|    llen++;
   60|  67.7k|  } while (num != 0);
  ------------------
  |  Branch (60:12): [True: 0, False: 67.7k]
  ------------------
   61|       |
   62|  67.7k|  return llen;
   63|  67.7k|}
mrb_packed_int_decode:
   67|  16.8M|{
   68|  16.8M|  size_t i = 0, shift = 0;
   69|  16.8M|  uint32_t n = 0;
   70|       |
   71|  16.8M|  do {
   72|  16.8M|    n |= ((uint32_t)(p[i] & 0x7f)) << shift;
   73|  16.8M|    i++;
   74|  16.8M|    shift += 7;
   75|  16.8M|  } while (shift < sizeof(uint32_t) * 8 && (p[i - 1] & 0x80));
  ------------------
  |  Branch (75:12): [True: 16.8M, False: 0]
  |  Branch (75:44): [True: 0, False: 16.8M]
  ------------------
   76|  16.8M|  if (newpos) *newpos = p + i;
  ------------------
  |  Branch (76:7): [True: 16.8M, False: 0]
  ------------------
   77|  16.8M|  return n;
   78|  16.8M|}
mrb_debug_info_free:
  226|    932|{
  227|    932|  uint32_t i;
  228|       |
  229|    932|  if (!d) { return; }
  ------------------
  |  Branch (229:7): [True: 932, False: 0]
  ------------------
  230|       |
  231|      0|  if (d->files) {
  ------------------
  |  Branch (231:7): [True: 0, False: 0]
  ------------------
  232|      0|    for (i = 0; i < d->flen; i++) {
  ------------------
  |  Branch (232:17): [True: 0, False: 0]
  ------------------
  233|      0|      if (d->files[i]) {
  ------------------
  |  Branch (233:11): [True: 0, False: 0]
  ------------------
  234|      0|        mrb_free(mrb, d->files[i]->lines.ptr);
  235|      0|        mrb_free(mrb, d->files[i]);
  236|      0|      }
  237|      0|    }
  238|      0|    mrb_free(mrb, d->files);
  239|      0|  }
  240|      0|  mrb_free(mrb, d);
  241|      0|}

mrb_init_enumerable:
   26|    476|{
   27|    476|  struct RClass *enumerable;
   28|    476|  enumerable = mrb_define_module(mrb, "Enumerable");  /* 15.3.2 */
   29|    476|  mrb_define_module_function(mrb, enumerable, "__update_hash", enum_update_hash, MRB_ARGS_REQ(3));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
   30|    476|}

mrb_exc_mesg_set:
   23|  1.17k|{
   24|  1.17k|  if (!mrb_string_p(mesg)) {
  ------------------
  |  |  187|  1.17k|#define mrb_string_p(o) WORDBOX_OBJ_TYPE_P(o, STRING)
  |  |  ------------------
  |  |  |  |   78|  1.17k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  2.35k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  2.35k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 1.17k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 1.17k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 1.17k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   25|      0|    mesg = mrb_obj_as_string(mrb, mesg);
   26|      0|  }
   27|  1.17k|  exc->mesg = mrb_obj_ptr(mesg);
  ------------------
  |  |   34|  1.17k|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  1.17k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
   28|  1.17k|  mrb_field_write_barrier_value(mrb, (struct RBasic*)exc, mesg);
  ------------------
  |  | 1317|  1.17k|#define mrb_field_write_barrier_value(mrb, obj, val) do{\
  |  | 1318|  1.17k|  if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |  148|  1.17k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  2.35k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (148:29): [True: 0, False: 1.17k]
  |  |  |  |  |  Branch (148:63): [True: 0, False: 1.17k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |   22|  1.17k|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|  1.17k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1319|  1.17k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1319:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
   29|  1.17k|}
mrb_exc_new_str:
   40|  1.16k|{
   41|  1.16k|  mrb_ensure_string_type(mrb, str);
   42|       |
   43|  1.16k|  struct RException *e = MRB_OBJ_ALLOC(mrb, MRB_TT_EXCEPTION, c);
  ------------------
  |  | 1200|  1.16k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
   44|  1.16k|  mrb_value exc = mrb_obj_value(e);
   45|  1.16k|  mrb_exc_mesg_set(mrb, e, str);
   46|  1.16k|  return exc;
   47|  1.16k|}
mrb_exc_set:
  178|    148|{
  179|    148|  if (mrb_nil_p(exc)) {
  ------------------
  |  |  174|    148|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 148]
  |  |  ------------------
  ------------------
  180|      0|    mrb->exc = 0;
  181|      0|  }
  182|    148|  else {
  183|    148|    mrb->exc = mrb_obj_ptr(exc);
  ------------------
  |  |   34|    148|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|    148|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  184|    148|    if (mrb->gc.arena_idx > 0 &&
  ------------------
  |  Branch (184:9): [True: 148, False: 0]
  ------------------
  185|    148|        (struct RBasic*)mrb->exc == mrb->gc.arena[mrb->gc.arena_idx-1]) {
  ------------------
  |  Branch (185:9): [True: 145, False: 3]
  ------------------
  186|    145|      mrb->gc.arena_idx--;
  187|    145|    }
  188|    148|    if (!mrb->gc.out_of_memory && !mrb_frozen_p(mrb->exc)) {
  ------------------
  |  |   28|    145|#define mrb_frozen_p(o) MRB_FROZEN_P(o)
  |  |  ------------------
  |  |  |  |   25|    145|#define MRB_FROZEN_P(o) ((o)->flags & MRB_FL_OBJ_IS_FROZEN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|    145|#define MRB_FL_OBJ_IS_FROZEN (1 << 20)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (188:9): [True: 145, False: 3]
  |  Branch (188:35): [True: 145, False: 0]
  ------------------
  189|    145|      mrb_keep_backtrace(mrb, exc);
  190|    145|    }
  191|    148|  }
  192|    148|}
mrb_exc_raise:
  206|    137|{
  207|    137|  if (mrb_break_p(exc)) {
  ------------------
  |  |  203|    137|#define mrb_break_p(o) WORDBOX_OBJ_TYPE_P(o, BREAK)
  |  |  ------------------
  |  |  |  |   78|    137|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|    274|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|    274|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 137]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 137]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 137]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  208|      0|    mrb->exc = mrb_obj_ptr(exc);
  ------------------
  |  |   34|      0|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  209|      0|  }
  210|    137|  else {
  211|    137|    if (mrb_type(exc) != MRB_TT_EXCEPTION) {
  ------------------
  |  Branch (211:9): [True: 0, False: 137]
  ------------------
  212|      0|      mrb_raise(mrb, E_TYPE_ERROR, "exception object expected");
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  213|      0|    }
  214|    137|    mrb_exc_set(mrb, exc);
  215|    137|  }
  216|    137|  exc_throw(mrb, exc);
  217|    137|}
mrb_raise:
  221|     27|{
  222|     27|  mrb_exc_raise(mrb, mrb_exc_new_str(mrb, c, mrb_str_new_cstr(mrb, msg)));
  223|     27|}
mrb_vformat:
  265|    102|{
  266|    102|  const char *chars, *p = format, *b = format, *e;
  267|    102|  char ch;
  268|    102|  size_t len;
  269|    102|  mrb_int i;
  270|    102|  struct RClass *cls;
  271|    102|  mrb_bool inspect = FALSE;
  ------------------
  |  |   51|    102|#  define FALSE 0
  ------------------
  272|    102|  mrb_value result = mrb_str_new_capa(mrb, 128), obj, str;
  273|    102|  int ai = mrb_gc_arena_save(mrb);
  ------------------
  |  | 1306|    102|#define mrb_gc_arena_save(mrb) ((mrb)->gc.arena_idx)
  ------------------
  274|       |
  275|  2.98k|  while (*p) {
  ------------------
  |  Branch (275:10): [True: 2.88k, False: 102]
  ------------------
  276|  2.88k|    const char c = *p++;
  277|  2.88k|    e = p;
  278|  2.88k|    if (c == '%') {
  ------------------
  |  Branch (278:9): [True: 125, False: 2.75k]
  ------------------
  279|    125|      if (*p == '!') {
  ------------------
  |  Branch (279:11): [True: 0, False: 125]
  ------------------
  280|      0|        inspect = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  281|      0|        p++;
  282|      0|      }
  283|    125|      if (!*p) break;
  ------------------
  |  Branch (283:11): [True: 0, False: 125]
  ------------------
  284|    125|      switch (*p) {
  285|      0|        case 'c':
  ------------------
  |  Branch (285:9): [True: 0, False: 125]
  ------------------
  286|      0|          ch = (char)va_arg(ap, int);
  287|      0|          chars = &ch;
  288|      0|          len = 1;
  289|      0|          goto L_cat;
  290|     28|        case 'd': case 'i':
  ------------------
  |  Branch (290:9): [True: 3, False: 122]
  |  Branch (290:19): [True: 25, False: 100]
  ------------------
  291|       |#if MRB_INT_MAX < INT_MAX
  292|       |          i = (mrb_int)va_arg(ap, int);
  293|       |#else
  294|     28|          i = *p == 'd' ? (mrb_int)va_arg(ap, int) : va_arg(ap, mrb_int);
  ------------------
  |  Branch (294:15): [True: 3, False: 25]
  ------------------
  295|     28|#endif
  296|     28|          obj = mrb_int_value(mrb, i);
  297|     28|          goto L_cat_obj;
  298|      0|#ifndef MRB_NO_FLOAT
  299|      0|        case 'f':
  ------------------
  |  Branch (299:9): [True: 0, False: 125]
  ------------------
  300|      0|          obj = mrb_float_value(mrb, (mrb_float)va_arg(ap, double));
  301|      0|          goto L_cat_obj;
  302|      0|#endif
  303|      0|        case 'l':
  ------------------
  |  Branch (303:9): [True: 0, False: 125]
  ------------------
  304|      0|          chars = va_arg(ap, char*);
  305|      0|          len = va_arg(ap, size_t);
  306|      5|        L_cat:
  307|      5|          if (inspect) {
  ------------------
  |  Branch (307:15): [True: 0, False: 5]
  ------------------
  308|      0|            obj = mrb_str_new(mrb, chars, len);
  309|      0|            goto L_cat_obj;
  310|      0|          }
  311|    125|        L_cat_plain:
  312|    125|          mrb_str_cat(mrb, result, b,  e - b - 1);
  313|    125|          mrb_str_cat(mrb, result, chars, len);
  314|    125|          b = ++p;
  315|    125|          mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|    125|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
  316|    125|          break;
  317|     37|        case 'n':
  ------------------
  |  Branch (317:9): [True: 37, False: 88]
  ------------------
  318|       |#if UINT32_MAX < INT_MAX
  319|       |          obj = mrb_symbol_value((mrb_sym)va_arg(ap, int));
  320|       |#else
  321|     37|          obj = mrb_symbol_value(va_arg(ap, mrb_sym));
  322|     37|#endif
  323|     37|          goto L_cat_obj;
  324|      5|        case 's':
  ------------------
  |  Branch (324:9): [True: 5, False: 120]
  ------------------
  325|      5|          chars = va_arg(ap, char*);
  326|      5|          len = strlen(chars);
  327|      5|          goto L_cat;
  328|     18|        case 't':
  ------------------
  |  Branch (328:9): [True: 18, False: 107]
  ------------------
  329|     18|          cls = mrb_class(mrb, va_arg(ap, mrb_value));
  330|     18|          goto L_cat_class;
  331|      0|        case 'v': case 'S':
  ------------------
  |  Branch (331:9): [True: 0, False: 125]
  |  Branch (331:19): [True: 0, False: 125]
  ------------------
  332|      0|          obj = va_arg(ap, mrb_value);
  333|    120|        L_cat_obj:
  334|    120|          str = (inspect ? mrb_inspect : mrb_obj_as_string)(mrb, obj);
  ------------------
  |  Branch (334:18): [True: 37, False: 83]
  ------------------
  335|    120|          if (mrb_type(str) != MRB_TT_STRING) {
  ------------------
  |  Branch (335:15): [True: 0, False: 120]
  ------------------
  336|      0|            chars = "void (no string conversion)";
  337|      0|            len = strlen(chars);
  338|      0|          }
  339|    120|          else {
  340|    120|            chars = RSTRING_PTR(str);
  ------------------
  |  |  100|    120|#define RSTRING_PTR(s)       RSTR_PTR(RSTRING(s))
  |  |  ------------------
  |  |  |  |   65|    120|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|    120|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  110|    120|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|    120|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:22): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  341|    120|            len = RSTRING_LEN(str);
  ------------------
  |  |  102|    120|#define RSTRING_LEN(s)       RSTR_LEN(RSTRING(s))
  |  |  ------------------
  |  |  |  |   66|    120|#define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|    120|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  110|    120|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|    120|  (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  114|    120|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  113|    120|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|    120|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                 (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    120|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (66:22): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  342|    120|          }
  343|    120|          goto L_cat_plain;
  344|      0|        case 'C':
  ------------------
  |  Branch (344:9): [True: 0, False: 125]
  ------------------
  345|      0|          cls = va_arg(ap, struct RClass*);
  346|     18|        L_cat_class:
  347|     18|          obj = mrb_obj_value(cls);
  348|     18|          goto L_cat_obj;
  349|      0|        case 'T':
  ------------------
  |  Branch (349:9): [True: 0, False: 125]
  ------------------
  350|      0|          obj = va_arg(ap, mrb_value);
  351|      0|        L_cat_real_class_of:
  352|      0|          cls = mrb_obj_class(mrb, obj);
  353|      0|          goto L_cat_class;
  354|     37|        case 'Y':
  ------------------
  |  Branch (354:9): [True: 37, False: 88]
  ------------------
  355|     37|          obj = va_arg(ap, mrb_value);
  356|     37|          if (!mrb_test(obj) || mrb_true_p(obj)) {
  ------------------
  |  |  312|     37|#define mrb_test(o)   mrb_bool(o)
  |  |  ------------------
  |  |  |  |  168|     74|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  |  |  ------------------
  ------------------
                        if (!mrb_test(obj) || mrb_true_p(obj)) {
  ------------------
  |  |  176|     19|#define mrb_true_p(o)  ((o).w == MRB_Qtrue)
  |  |  ------------------
  |  |  |  Branch (176:24): [True: 19, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (356:15): [True: 18, False: 19]
  ------------------
  357|     37|            inspect = TRUE;
  ------------------
  |  |   54|     37|#  define TRUE 1
  ------------------
  358|     37|            goto L_cat_obj;
  359|     37|          }
  360|      0|          else {
  361|      0|            goto L_cat_real_class_of;
  362|      0|          }
  363|      0|        case '%':
  ------------------
  |  Branch (363:9): [True: 0, False: 125]
  ------------------
  364|      0|        L_cat_current:
  365|      0|          chars = p;
  366|      0|          len = 1;
  367|      0|          goto L_cat_plain;
  368|      0|        default:
  ------------------
  |  Branch (368:9): [True: 0, False: 125]
  ------------------
  369|      0|          mrb_raisef(mrb, E_ARGUMENT_ERROR, "malformed format string - %%%c", *p);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  370|    125|      }
  371|    125|    }
  372|  2.75k|    else if (c == '\\') {
  ------------------
  |  Branch (372:14): [True: 0, False: 2.75k]
  ------------------
  373|      0|      if (!*p) break;
  ------------------
  |  Branch (373:11): [True: 0, False: 0]
  ------------------
  374|      0|      goto L_cat_current;
  375|       |
  376|      0|    }
  377|  2.88k|  }
  378|       |
  379|    102|  mrb_str_cat(mrb, result, b, p - b);
  380|    102|  return result;
  381|    102|}
mrb_format:
  385|     11|{
  386|     11|  va_list ap;
  387|     11|  mrb_value str;
  388|       |
  389|     11|  va_start(ap, format);
  390|     11|  str = mrb_vformat(mrb, format, ap);
  391|     11|  va_end(ap);
  392|       |
  393|     11|  return str;
  394|     11|}
mrb_raisef:
  405|     54|{
  406|     54|  va_list ap;
  407|     54|  mrb_value exc;
  408|       |
  409|     54|  va_start(ap, fmt);
  410|     54|  exc = error_va(mrb, c, fmt, ap);
  411|     54|  va_end(ap);
  412|       |
  413|     54|  mrb_exc_raise(mrb, exc);
  414|     54|}
mrb_make_exception:
  458|     16|{
  459|     16|  mrb_int n = 1;
  460|       |
  461|     16|  if (mrb_nil_p(mesg)) {
  ------------------
  |  |  174|     16|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 16]
  |  |  ------------------
  ------------------
  462|      0|    n = 0;
  463|      0|  }
  464|     16|  if (mrb_class_p(exc)) {
  ------------------
  |  |  193|     16|#define mrb_class_p(o) WORDBOX_OBJ_TYPE_P(o, CLASS)
  |  |  ------------------
  |  |  |  |   78|     16|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|     32|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|     32|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 16]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 16]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 16, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  465|     16|    exc = mrb_funcall_argv(mrb, exc, MRB_SYM(new), n, &mesg);
  ------------------
  |  |   18|     16|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  466|     16|  }
  467|      0|  else if (mrb_exception_p(exc)) {
  ------------------
  |  |  190|      0|#define mrb_exception_p(o) WORDBOX_OBJ_TYPE_P(o, EXCEPTION)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  468|      0|    if (n > 0) {
  ------------------
  |  Branch (468:9): [True: 0, False: 0]
  ------------------
  469|      0|      exc = mrb_obj_clone(mrb, exc);
  470|      0|      mrb_exc_mesg_set(mrb, mrb_exc_ptr(exc), mesg);
  ------------------
  |  |   32|      0|#define mrb_exc_ptr(v) ((struct RException*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  471|      0|    }
  472|      0|  }
  473|      0|  else {
  474|      0|    mrb_raise(mrb, E_TYPE_ERROR, "exception class/object expected");
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  475|      0|  }
  476|     16|  if (mrb_type(exc) != MRB_TT_EXCEPTION) {
  ------------------
  |  Branch (476:7): [True: 0, False: 16]
  ------------------
  477|      0|    mrb_raise(mrb, E_EXCEPTION, "exception object expected");
  ------------------
  |  | 1372|      0|#define E_EXCEPTION          mrb->eException_class
  ------------------
  478|      0|  }
  479|     16|  return exc;
  480|     16|}
mrb_no_method_error:
  504|     37|{
  505|     37|  va_list ap;
  506|     37|  mrb_value exc;
  507|       |
  508|     37|  va_start(ap, fmt);
  509|     37|  exc = error_va(mrb, E_NOMETHOD_ERROR, fmt, ap);
  ------------------
  |  | 1381|     37|#define E_NOMETHOD_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(NoMethodError))
  |  |  ------------------
  |  |  |  |   35|     37|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|     37|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  510|     37|  va_end(ap);
  511|     37|  mrb_iv_set(mrb, exc, MRB_IVSYM(name), mrb_symbol_value(id));
  ------------------
  |  |   14|     37|#define MRB_IVSYM(name) MRB_IVSYM__##name
  ------------------
  512|     37|  mrb_iv_set(mrb, exc, MRB_IVSYM(args), args);
  ------------------
  |  |   14|     37|#define MRB_IVSYM(name) MRB_IVSYM__##name
  ------------------
  513|     37|  mrb_exc_raise(mrb, exc);
  514|     37|}
mrb_check_frozen:
  530|  1.46M|{
  531|  1.46M|  if (mrb_frozen_p((struct RBasic*)o)) {
  ------------------
  |  |   28|  1.46M|#define mrb_frozen_p(o) MRB_FROZEN_P(o)
  |  |  ------------------
  |  |  |  |   25|  1.46M|#define MRB_FROZEN_P(o) ((o)->flags & MRB_FL_OBJ_IS_FROZEN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|  1.46M|#define MRB_FL_OBJ_IS_FROZEN (1 << 20)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (25:25): [True: 0, False: 1.46M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  532|      0|    mrb_frozen_error(mrb, o);
  533|      0|  }
  534|  1.46M|}
mrb_argnum_error:
  546|      3|{
  547|      3|#define FMT(exp) "wrong number of arguments (given %i, expected " exp ")"
  548|      3|  if (min == max)
  ------------------
  |  Branch (548:7): [True: 3, False: 0]
  ------------------
  549|      3|    mrb_raisef(mrb, E_ARGUMENT_ERROR, FMT("%d"), argc, min);
  ------------------
  |  | 1377|      3|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      3|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      3|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  mrb_raisef(mrb, E_ARGUMENT_ERROR, FMT("%d"), argc, min);
  ------------------
  |  |  547|      3|#define FMT(exp) "wrong number of arguments (given %i, expected " exp ")"
  ------------------
  550|      0|  else if (max < 0)
  ------------------
  |  Branch (550:12): [True: 0, False: 0]
  ------------------
  551|      0|    mrb_raisef(mrb, E_ARGUMENT_ERROR, FMT("%d+"), argc, min);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  mrb_raisef(mrb, E_ARGUMENT_ERROR, FMT("%d+"), argc, min);
  ------------------
  |  |  547|      0|#define FMT(exp) "wrong number of arguments (given %i, expected " exp ")"
  ------------------
  552|      0|  else
  553|      0|    mrb_raisef(mrb, E_ARGUMENT_ERROR, FMT("%d..%d"), argc, min, max);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  mrb_raisef(mrb, E_ARGUMENT_ERROR, FMT("%d..%d"), argc, min, max);
  ------------------
  |  |  547|      0|#define FMT(exp) "wrong number of arguments (given %i, expected " exp ")"
  ------------------
  554|      3|#undef FMT
  555|      3|}
mrb_core_init_protect:
  561|    952|{
  562|    952|  struct mrb_jmpbuf *prev_jmp = mrb->jmp;
  563|    952|  struct mrb_jmpbuf c_jmp;
  564|    952|  int err = 1;
  565|       |
  566|    952|  MRB_TRY(&c_jmp) {
  ------------------
  |  |   44|    952|#define MRB_TRY(buf) if (MRB_SETJMP((buf)->impl) == 0) {
  |  |  ------------------
  |  |  |  |   40|    952|#define MRB_SETJMP setjmp
  |  |  ------------------
  |  |  |  Branch (44:26): [True: 952, False: 0]
  |  |  ------------------
  ------------------
  567|    952|    mrb->jmp = &c_jmp;
  568|    952|    body(mrb, opaque);
  569|    952|    err = 0;
  570|    952|  } MRB_CATCH(&c_jmp) {
  ------------------
  |  |   45|    952|#define MRB_CATCH(buf) } else {
  ------------------
  571|      0|    if (mrb->exc) {
  ------------------
  |  Branch (571:9): [True: 0, False: 0]
  ------------------
  572|      0|      mrb_print_error(mrb);
  573|      0|      mrb->exc = NULL;
  574|      0|    }
  575|      0|    else {
  576|      0|      mrb_core_init_printabort();
  577|      0|    }
  578|      0|  } MRB_END_EXC(&c_jmp);
  ------------------
  |  |   46|      0|#define MRB_END_EXC(buf) }
  ------------------
  579|       |
  580|    952|  mrb->jmp = prev_jmp;
  581|       |
  582|    952|  return err;
  583|    952|}
mrb_protect_atexit:
  594|    476|{
  595|    476|  if (mrb->atexit_stack_len > 0) {
  ------------------
  |  Branch (595:7): [True: 476, False: 0]
  ------------------
  596|    476|    struct mrb_jmpbuf *prev_jmp = mrb->jmp;
  597|    476|    struct mrb_jmpbuf c_jmp;
  598|    952|    for (int i = mrb->atexit_stack_len; i > 0; --i) {
  ------------------
  |  Branch (598:41): [True: 476, False: 476]
  ------------------
  599|    476|      MRB_TRY(&c_jmp) {
  ------------------
  |  |   44|    476|#define MRB_TRY(buf) if (MRB_SETJMP((buf)->impl) == 0) {
  |  |  ------------------
  |  |  |  |   40|    476|#define MRB_SETJMP setjmp
  |  |  ------------------
  |  |  |  Branch (44:26): [True: 476, False: 0]
  |  |  ------------------
  ------------------
  600|    476|        mrb->jmp = &c_jmp;
  601|    476|        mrb->atexit_stack[i - 1](mrb);
  602|    476|        mrb->jmp = prev_jmp;
  603|    476|      } MRB_CATCH(&c_jmp) {
  ------------------
  |  |   45|    476|#define MRB_CATCH(buf) } else {
  ------------------
  604|       |        /* ignore atexit errors */
  605|      0|      } MRB_END_EXC(&c_jmp);
  ------------------
  |  |   46|      0|#define MRB_END_EXC(buf) }
  ------------------
  606|    476|    }
  607|    476|#ifndef MRB_FIXED_STATE_ATEXIT_STACK
  608|    476|    mrb_free(mrb, mrb->atexit_stack);
  609|    476|#endif
  610|    476|    mrb->jmp = prev_jmp;
  611|    476|  }
  612|    476|}
mrb_raise_nomemory:
  616|      3|{
  617|      3|  if (mrb->nomem_err) {
  ------------------
  |  Branch (617:7): [True: 3, False: 0]
  ------------------
  618|      3|    mrb_exc_raise(mrb, mrb_obj_value(mrb->nomem_err));
  619|      3|  }
  620|      0|  else {
  621|      0|    mrb_core_init_abort(mrb);
  622|      0|  }
  623|      3|}
mrb_init_exception:
  665|    476|{
  666|    476|  struct RClass *exception, *script_error, *stack_error, *nomem_error;
  667|       |
  668|    476|  mrb->eException_class = exception = mrb_define_class(mrb, "Exception", mrb->object_class); /* 15.2.22 */
  669|    476|  MRB_SET_INSTANCE_TT(exception, MRB_TT_EXCEPTION);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  670|    476|  mrb_define_class_method(mrb, exception, "exception", mrb_instance_new,  MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  671|    476|  mrb_define_method(mrb, exception, "exception",       exc_exception,     MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  672|    476|  mrb_define_method(mrb, exception, "initialize",      exc_initialize,    MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  673|    476|  mrb_define_method(mrb, exception, "to_s",            exc_to_s,          MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  674|    476|  mrb_define_method(mrb, exception, "inspect",         mrb_exc_inspect,   MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  675|    476|  mrb_define_method(mrb, exception, "backtrace",       mrb_exc_backtrace, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  676|    476|  mrb_define_method(mrb, exception, "set_backtrace",   exc_set_backtrace, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  677|       |
  678|    476|  mrb->eStandardError_class = mrb_define_class(mrb, "StandardError", mrb->eException_class); /* 15.2.23 */
  679|    476|  mrb_define_class(mrb, "RuntimeError", E_STANDARD_ERROR);          /* 15.2.28 */
  ------------------
  |  | 1373|    476|#define E_STANDARD_ERROR     mrb->eStandardError_class
  ------------------
  680|    476|  script_error = mrb_define_class(mrb, "ScriptError", exception);                /* 15.2.37 */
  681|    476|  mrb_define_class(mrb, "SyntaxError", script_error);                                        /* 15.2.38 */
  682|    476|  stack_error = mrb_define_class(mrb, "SystemStackError", exception);
  683|    476|  mrb->stack_err = mrb_obj_ptr(mrb_exc_new_lit(mrb, stack_error, "stack level too deep"));
  ------------------
  |  |   34|    476|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|    476|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  684|       |
  685|    476|  nomem_error = mrb_define_class(mrb, "NoMemoryError", exception);
  686|    476|  mrb->nomem_err = mrb_obj_ptr(mrb_exc_new_lit(mrb, nomem_error, "Out of memory"));
  ------------------
  |  |   34|    476|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|    476|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  687|       |#ifdef MRB_GC_FIXED_ARENA
  688|       |  mrb->arena_err = mrb_obj_ptr(mrb_exc_new_lit(mrb, nomem_error, "arena overflow error"));
  689|       |#endif
  690|    476|}
error.c:exc_throw:
  196|    137|{
  197|    137|  if (!mrb->jmp) {
  ------------------
  |  Branch (197:7): [True: 0, False: 137]
  ------------------
  198|      0|    mrb_print_error(mrb);
  199|      0|    abort();
  200|      0|  }
  201|    137|  MRB_THROW(mrb->jmp);
  ------------------
  |  |   48|    137|#define MRB_THROW(buf) MRB_LONGJMP((buf)->impl, 1);
  |  |  ------------------
  |  |  |  |   41|    274|#define MRB_LONGJMP longjmp
  |  |  ------------------
  ------------------
  202|      0|}
error.c:error_va:
  398|     91|{
  399|     91|  mrb_value mesg = mrb_vformat(mrb, fmt, ap);
  400|     91|  return mrb_exc_new_str(mrb, c, mesg);
  401|     91|}
error.c:exc_initialize:
   65|     16|{
   66|     16|  mrb_value mesg;
   67|       |
   68|     16|  if (mrb_get_args(mrb, "|o", &mesg) == 1) {
  ------------------
  |  Branch (68:7): [True: 16, False: 0]
  ------------------
   69|     16|    mrb_exc_mesg_set(mrb, mrb_exc_ptr(exc), mesg);
  ------------------
  |  |   32|     16|#define mrb_exc_ptr(v) ((struct RException*)mrb_ptr(v))
  |  |  ------------------
  |  |  |  |  150|     16|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
   70|     16|  }
   71|     16|  return exc;
   72|     16|}

mrb_data_object_alloc:
   16|  5.13k|{
   17|  5.13k|  struct RData *data;
   18|       |
   19|  5.13k|  data = MRB_OBJ_ALLOC(mrb, MRB_TT_CDATA, klass);
  ------------------
  |  | 1200|  5.13k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
   20|  5.13k|  data->data = ptr;
   21|  5.13k|  data->type = type;
   22|       |
   23|  5.13k|  return data;
   24|  5.13k|}
mrb_obj_to_sym:
   67|  19.5k|{
   68|  19.5k|  if (mrb_symbol_p(name)) return mrb_symbol(name);
  ------------------
  |  |  172|  19.5k|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|  19.5k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 19.5k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (mrb_symbol_p(name)) return mrb_symbol(name);
  ------------------
  |  |  167|  19.5k|#define mrb_symbol(o)  (mrb_sym)(((o).w) >> WORDBOX_SYMBOL_SHIFT)
  |  |  ------------------
  |  |  |  |   63|  19.5k|#define WORDBOX_SYMBOL_SHIFT    32
  |  |  ------------------
  ------------------
   69|      0|  if (mrb_string_p(name)) return mrb_intern_str(mrb, name);
  ------------------
  |  |  187|      0|#define mrb_string_p(o) WORDBOX_OBJ_TYPE_P(o, STRING)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|      0|  mrb_raisef(mrb, E_TYPE_ERROR, "%!v is not a symbol nor a string", name);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  | 1371|      0|#define MRB_ERROR_SYM(sym) mrb_intern_lit(mrb, #sym)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1164|      0|#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, (lit ""), mrb_strlen_lit(lit))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1075|      0|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   71|      0|  return 0;  /* not reached */
   72|      0|}
mrb_word_boxing_float_value:
  152|  18.5k|{
  153|  18.5k|  union mrb_value_ v;
  154|       |
  155|       |#ifdef MRB_WORDBOX_NO_FLOAT_TRUNCATE
  156|       |  v.p = mrb_obj_alloc(mrb, MRB_TT_FLOAT, mrb->float_class);
  157|       |  v.fp->f = f;
  158|       |  MRB_SET_FROZEN_FLAG(v.bp);
  159|       |#elif defined(MRB_64BIT) && defined(MRB_USE_FLOAT32)
  160|       |  v.w = 0;
  161|       |  v.f = f;
  162|       |  v.w = (v.w<<2) | 2;
  163|       |#else
  164|  18.5k|  v.f = f;
  165|  18.5k|  v.w = (v.w & ~3) | 2;
  166|  18.5k|#endif
  167|  18.5k|  return v.value;
  168|  18.5k|}
mrb_word_boxing_value_float:
  174|  18.2k|{
  175|  18.2k|  union mrb_value_ u;
  176|  18.2k|  u.value = v;
  177|       |#if defined(MRB_64BIT) && defined(MRB_USE_FLOAT32)
  178|       |  u.w >>= 2;
  179|       |#else
  180|  18.2k|  u.w &= ~3;
  181|  18.2k|#endif
  182|  18.2k|  return u.f;
  183|  18.2k|}
mrb_boxing_int_value:
  202|   191k|{
  203|   191k|  if (FIXABLE(n)) return mrb_fixnum_value(n);
  ------------------
  |  |   24|   191k|#define FIXABLE(f) TYPED_FIXABLE(f,mrb_int)
  |  |  ------------------
  |  |  |  |   21|   191k|#define TYPED_FIXABLE(f,t) (TYPED_POSFIXABLE(f,t) && TYPED_NEGFIXABLE(f,t))
  |  |  |  |  ------------------
  |  |  |  |  |  |   19|   382k|#define TYPED_POSFIXABLE(f,t) ((f) <= (t)MRB_FIXNUM_MAX)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   42|   191k|# define MRB_FIXNUM_MAX (INT64_MAX>>MRB_FIXNUM_SHIFT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   36|   191k|#define MRB_FIXNUM_SHIFT        WORDBOX_FIXNUM_SHIFT
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   49|   191k|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   48|   191k|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (19:31): [True: 189k, False: 1.39k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define TYPED_FIXABLE(f,t) (TYPED_POSFIXABLE(f,t) && TYPED_NEGFIXABLE(f,t))
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|   189k|#define TYPED_NEGFIXABLE(f,t) ((f) >= (t)MRB_FIXNUM_MIN)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|   189k|# define MRB_FIXNUM_MIN (INT64_MIN>>MRB_FIXNUM_SHIFT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   36|   189k|#define MRB_FIXNUM_SHIFT        WORDBOX_FIXNUM_SHIFT
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   49|   189k|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   48|   189k|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (20:31): [True: 187k, False: 1.92k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  204|  3.32k|  else {
  205|  3.32k|    mrb_value v;
  206|  3.32k|    struct RInteger *p;
  207|       |
  208|  3.32k|    p = (struct RInteger*)mrb_obj_alloc(mrb, MRB_TT_INTEGER, mrb->integer_class);
  209|  3.32k|    p->i = n;
  210|  3.32k|    MRB_SET_FROZEN_FLAG((struct RBasic*)p);
  ------------------
  |  |   26|  3.32k|#define MRB_SET_FROZEN_FLAG(o) ((o)->flags |= MRB_FL_OBJ_IS_FROZEN)
  |  |  ------------------
  |  |  |  |   24|  3.32k|#define MRB_FL_OBJ_IS_FROZEN (1 << 20)
  |  |  ------------------
  ------------------
  211|  3.32k|    SET_OBJ_VALUE(v, p);
  ------------------
  |  |  217|  3.32k|#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
  ------------------
  212|  3.32k|    return v;
  213|  3.32k|  }
  214|   191k|}

mrb_realloc_simple:
  194|   632k|{
  195|   632k|  void *p2;
  196|       |
  197|       |#if defined(MRB_GC_STRESS) && defined(MRB_DEBUG)
  198|       |  mrb_full_gc(mrb);
  199|       |#endif
  200|   632k|  p2 = (mrb->allocf)(mrb, p, len, mrb->allocf_ud);
  201|   632k|  if (!p2 && len > 0 && mrb->gc.heaps) {
  ------------------
  |  Branch (201:7): [True: 950, False: 631k]
  |  Branch (201:14): [True: 3, False: 947]
  |  Branch (201:25): [True: 3, False: 0]
  ------------------
  202|      3|    mrb_full_gc(mrb);
  203|      3|    p2 = (mrb->allocf)(mrb, p, len, mrb->allocf_ud);
  204|      3|  }
  205|       |
  206|   632k|  return p2;
  207|   632k|}
mrb_realloc:
  211|   605k|{
  212|   605k|  void *p2;
  213|       |
  214|   605k|  p2 = mrb_realloc_simple(mrb, p, len);
  215|   605k|  if (len == 0) return p2;
  ------------------
  |  Branch (215:7): [True: 0, False: 605k]
  ------------------
  216|   605k|  if (p2 == NULL) {
  ------------------
  |  Branch (216:7): [True: 3, False: 605k]
  ------------------
  217|      3|    mrb->gc.out_of_memory = TRUE;
  ------------------
  |  |   54|      3|#  define TRUE 1
  ------------------
  218|      3|    mrb_raise_nomemory(mrb);
  219|      3|  }
  220|   605k|  else {
  221|   605k|    mrb->gc.out_of_memory = FALSE;
  ------------------
  |  |   51|   605k|#  define FALSE 0
  ------------------
  222|   605k|  }
  223|       |
  224|   605k|  return p2;
  225|   605k|}
mrb_malloc:
  229|   517k|{
  230|   517k|  return mrb_realloc(mrb, 0, len);
  231|   517k|}
mrb_malloc_simple:
  235|  19.7k|{
  236|  19.7k|  return mrb_realloc_simple(mrb, 0, len);
  237|  19.7k|}
mrb_calloc:
  241|   251k|{
  242|   251k|  void *p;
  243|       |
  244|   251k|  if (nelem > 0 && len > 0 &&
  ------------------
  |  Branch (244:7): [True: 251k, False: 0]
  |  Branch (244:20): [True: 251k, False: 0]
  ------------------
  245|   251k|      nelem <= SIZE_MAX / len) {
  ------------------
  |  Branch (245:7): [True: 251k, False: 0]
  ------------------
  246|   251k|    size_t size;
  247|   251k|    size = nelem * len;
  248|   251k|    p = mrb_malloc(mrb, size);
  249|       |
  250|   251k|    memset(p, 0, size);
  251|   251k|  }
  252|      0|  else {
  253|      0|    p = NULL;
  254|      0|  }
  255|       |
  256|   251k|  return p;
  257|   251k|}
mrb_free:
  261|   657k|{
  262|   657k|  (mrb->allocf)(mrb, p, 0, mrb->allocf_ud);
  263|   657k|}
mrb_object_dead_p:
  293|  6.03M|{
  294|  6.03M|  mrb_gc *gc = &mrb->gc;
  295|  6.03M|  if (!heap_p(gc, object)) return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  |  Branch (295:7): [True: 0, False: 6.03M]
  ------------------
  296|  6.03M|  return is_dead(gc, object);
  ------------------
  |  |  182|  6.03M|#define is_dead(s, o) (((o)->color & other_white_part(s) & GC_WHITES) || (o)->tt == MRB_TT_FREE)
  |  |  ------------------
  |  |  |  |  181|  6.03M|#define other_white_part(s) ((s)->current_white_part ^ GC_WHITES)
  |  |  |  |  ------------------
  |  |  |  |  |  |  168|  6.03M|#define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  164|  6.03M|#define GC_WHITE_A 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|  6.03M|#define GC_WHITE_B 2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define is_dead(s, o) (((o)->color & other_white_part(s) & GC_WHITES) || (o)->tt == MRB_TT_FREE)
  |  |  ------------------
  |  |  |  |  168|  6.03M|#define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  6.03M|#define GC_WHITE_A 1
  |  |  |  |  ------------------
  |  |  |  |               #define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  6.03M|#define GC_WHITE_B 2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (182:24): [True: 544k, False: 5.49M]
  |  |  |  Branch (182:74): [True: 1.00M, False: 4.48M]
  |  |  ------------------
  ------------------
  297|  6.03M|}
mrb_gc_init:
  330|    476|{
  331|    476|#ifndef MRB_GC_FIXED_ARENA
  332|    476|  gc->arena = (struct RBasic**)mrb_malloc(mrb, sizeof(struct RBasic*)*MRB_GC_ARENA_SIZE);
  ------------------
  |  |   28|    476|#define MRB_GC_ARENA_SIZE 100
  ------------------
  333|    476|  gc->arena_capa = MRB_GC_ARENA_SIZE;
  ------------------
  |  |   28|    476|#define MRB_GC_ARENA_SIZE 100
  ------------------
  334|    476|#endif
  335|       |
  336|    476|  gc->current_white_part = GC_WHITE_A;
  ------------------
  |  |  164|    476|#define GC_WHITE_A 1
  ------------------
  337|    476|  gc->heaps = NULL;
  338|    476|  gc->free_heaps = NULL;
  339|    476|  add_heap(mrb, gc);
  340|    476|  gc->interval_ratio = DEFAULT_GC_INTERVAL_RATIO;
  ------------------
  |  |  320|    476|#define DEFAULT_GC_INTERVAL_RATIO 200
  ------------------
  341|    476|  gc->step_ratio = DEFAULT_GC_STEP_RATIO;
  ------------------
  |  |  321|    476|#define DEFAULT_GC_STEP_RATIO 200
  ------------------
  342|    476|#ifndef MRB_GC_TURN_OFF_GENERATIONAL
  343|    476|  gc->generational = TRUE;
  ------------------
  |  |   54|    476|#  define TRUE 1
  ------------------
  344|    476|  gc->full = TRUE;
  ------------------
  |  |   54|    476|#  define TRUE 1
  ------------------
  345|    476|#endif
  346|    476|}
mrb_gc_destroy:
  370|    476|{
  371|    476|  free_heap(mrb, gc);
  372|    476|#ifndef MRB_GC_FIXED_ARENA
  373|    476|  mrb_free(mrb, gc->arena);
  374|    476|#endif
  375|    476|}
mrb_gc_protect:
  400|   352k|{
  401|   352k|  if (mrb_immediate_p(obj)) return;
  ------------------
  |  |  148|   352k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|   705k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 93.0k, False: 259k]
  |  |  |  Branch (148:63): [True: 72.7k, False: 186k]
  |  |  ------------------
  ------------------
  402|   186k|  struct RBasic *p = mrb_basic_ptr(obj);
  ------------------
  |  |   22|   186k|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|   186k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  403|   186k|  if (is_red(p)) return;
  ------------------
  |  |  179|   186k|#define is_red(o) ((o)->color == GC_RED)
  |  |  ------------------
  |  |  |  |  167|   186k|#define GC_RED MRB_GC_RED
  |  |  |  |  ------------------
  |  |  |  |  |  |   79|   186k|#define MRB_GC_RED 7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (179:19): [True: 0, False: 186k]
  |  |  ------------------
  ------------------
  404|   186k|  gc_protect(mrb, &mrb->gc, p);
  405|   186k|}
mrb_obj_alloc:
  461|   898k|{
  462|   898k|  static const RVALUE RVALUE_zero = { { { NULL, NULL, MRB_TT_FALSE } } };
  463|   898k|  mrb_gc *gc = &mrb->gc;
  464|       |
  465|   898k|  if (cls) {
  ------------------
  |  Branch (465:7): [True: 858k, False: 39.6k]
  ------------------
  466|   858k|    enum mrb_vtype tt;
  467|       |
  468|   858k|    switch (cls->tt) {
  469|   858k|    case MRB_TT_CLASS:
  ------------------
  |  Branch (469:5): [True: 858k, False: 0]
  ------------------
  470|   858k|    case MRB_TT_SCLASS:
  ------------------
  |  Branch (470:5): [True: 0, False: 858k]
  ------------------
  471|   858k|    case MRB_TT_MODULE:
  ------------------
  |  Branch (471:5): [True: 0, False: 858k]
  ------------------
  472|   858k|    case MRB_TT_ENV:
  ------------------
  |  Branch (472:5): [True: 0, False: 858k]
  ------------------
  473|   858k|      break;
  474|      0|    default:
  ------------------
  |  Branch (474:5): [True: 0, False: 858k]
  ------------------
  475|      0|      mrb_raise(mrb, E_TYPE_ERROR, "allocation failure");
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  476|   858k|    }
  477|   858k|    tt = MRB_INSTANCE_TT(cls);
  ------------------
  |  |   76|   858k|#define MRB_INSTANCE_TT(c) (enum mrb_vtype)((c)->flags & MRB_INSTANCE_TT_MASK)
  |  |  ------------------
  |  |  |  |   74|   858k|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  478|   858k|    if (tt != MRB_TT_FALSE &&
  ------------------
  |  Branch (478:9): [True: 831k, False: 27.6k]
  ------------------
  479|   858k|        tt != MRB_TT_UNDEF &&
  ------------------
  |  Branch (479:9): [True: 798k, False: 32.5k]
  ------------------
  480|   858k|        ttype != MRB_TT_SCLASS &&
  ------------------
  |  Branch (480:9): [True: 758k, False: 40.4k]
  ------------------
  481|   858k|        ttype != MRB_TT_ICLASS &&
  ------------------
  |  Branch (481:9): [True: 750k, False: 8.09k]
  ------------------
  482|   858k|        ttype != MRB_TT_ENV &&
  ------------------
  |  Branch (482:9): [True: 750k, False: 0]
  ------------------
  483|   858k|        ttype != MRB_TT_BIGINT &&
  ------------------
  |  Branch (483:9): [True: 750k, False: 0]
  ------------------
  484|   858k|        ttype != tt) {
  ------------------
  |  Branch (484:9): [True: 0, False: 750k]
  ------------------
  485|      0|      mrb_raisef(mrb, E_TYPE_ERROR, "allocation failure of %C", cls);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  486|      0|    }
  487|   858k|  }
  488|   898k|  if (ttype <= MRB_TT_FREE) {
  ------------------
  |  Branch (488:7): [True: 0, False: 898k]
  ------------------
  489|      0|    mrb_raisef(mrb, E_TYPE_ERROR, "allocation failure of %C (type %d)", cls, (int)ttype);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  490|      0|  }
  491|       |
  492|       |#ifdef MRB_GC_STRESS
  493|       |  mrb_full_gc(mrb);
  494|       |#endif
  495|   898k|  if (gc->threshold < gc->live) {
  ------------------
  |  Branch (495:7): [True: 861, False: 897k]
  ------------------
  496|    861|    mrb_incremental_gc(mrb);
  497|    861|  }
  498|   898k|  if (gc->free_heaps == NULL) {
  ------------------
  |  Branch (498:7): [True: 470, False: 898k]
  ------------------
  499|    470|    add_heap(mrb, gc);
  500|    470|  }
  501|       |
  502|   898k|  struct RBasic *p = gc->free_heaps->freelist;
  503|   898k|  gc->free_heaps->freelist = ((struct free_obj*)p)->next;
  504|   898k|  if (gc->free_heaps->freelist == NULL) {
  ------------------
  |  Branch (504:7): [True: 802, False: 897k]
  ------------------
  505|    802|    gc->free_heaps = gc->free_heaps->free_next;
  506|    802|  }
  507|       |
  508|   898k|  gc->live++;
  509|   898k|  gc_protect(mrb, gc, p);
  510|   898k|  *(RVALUE*)p = RVALUE_zero;
  511|   898k|  p->tt = ttype;
  512|   898k|  p->c = cls;
  513|   898k|  paint_partial_white(gc, p);
  ------------------
  |  |  175|   898k|#define paint_partial_white(s, o) ((o)->color = (s)->current_white_part)
  ------------------
  514|   898k|  return p;
  515|   898k|}
mrb_gc_mark:
  700|  16.5M|{
  701|  16.5M|  if (obj == 0) return;
  ------------------
  |  Branch (701:7): [True: 3.44M, False: 13.1M]
  ------------------
  702|  13.1M|  if (!is_white(obj)) return;
  ------------------
  |  |  177|  13.1M|#define is_white(o) ((o)->color & GC_WHITES)
  |  |  ------------------
  |  |  |  |  168|  13.1M|#define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  13.1M|#define GC_WHITE_A 1
  |  |  |  |  ------------------
  |  |  |  |               #define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  13.1M|#define GC_WHITE_B 2
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (702:7): [True: 8.02M, False: 5.09M]
  ------------------
  703|  5.09M|  if (is_red(obj)) return;
  ------------------
  |  |  179|  5.09M|#define is_red(o) ((o)->color == GC_RED)
  |  |  ------------------
  |  |  |  |  167|  5.09M|#define GC_RED MRB_GC_RED
  |  |  |  |  ------------------
  |  |  |  |  |  |   79|  5.09M|#define MRB_GC_RED 7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (179:19): [True: 367k, False: 4.72M]
  |  |  ------------------
  ------------------
  704|  4.72M|  mrb_assert((obj)->tt != MRB_TT_FREE);
  ------------------
  |  |   68|  4.72M|#define mrb_assert(p) ((void)0)
  ------------------
  705|  4.72M|  add_gray_list(mrb, &mrb->gc, obj);
  706|  4.72M|}
mrb_incremental_gc:
 1212|    861|{
 1213|    861|  mrb_gc *gc = &mrb->gc;
 1214|       |
 1215|    861|  if (gc->disabled || gc->iterating) return;
  ------------------
  |  Branch (1215:7): [True: 0, False: 861]
  |  Branch (1215:23): [True: 0, False: 861]
  ------------------
 1216|       |
 1217|    861|  if (is_minor_gc(gc)) {
  ------------------
  |  |  326|    861|#define is_minor_gc(gc) (is_generational(gc) && !(gc)->full)
  |  |  ------------------
  |  |  |  |  324|  1.72k|#define is_generational(gc) ((gc)->generational)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (324:29): [True: 861, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (326:49): [True: 311, False: 550]
  |  |  ------------------
  ------------------
 1218|    311|    incremental_gc_finish(mrb, gc);
 1219|    311|  }
 1220|    550|  else {
 1221|    550|    incremental_gc_step(mrb, gc);
 1222|    550|  }
 1223|       |
 1224|    861|  if (gc->state == MRB_GC_STATE_ROOT) {
  ------------------
  |  Branch (1224:7): [True: 799, False: 62]
  ------------------
 1225|    799|    mrb_assert(gc->live >= gc->live_after_mark);
  ------------------
  |  |   68|    799|#define mrb_assert(p) ((void)0)
  ------------------
 1226|    799|    gc->threshold = (gc->live_after_mark/100) * gc->interval_ratio;
 1227|    799|    if (gc->threshold < GC_STEP_SIZE) {
  ------------------
  |  |  160|    799|#define GC_STEP_SIZE 1024
  ------------------
  |  Branch (1227:9): [True: 476, False: 323]
  ------------------
 1228|    476|      gc->threshold = GC_STEP_SIZE;
  ------------------
  |  |  160|    476|#define GC_STEP_SIZE 1024
  ------------------
 1229|    476|    }
 1230|       |
 1231|    799|    if (is_major_gc(gc)) {
  ------------------
  |  |  325|    799|#define is_major_gc(gc) (is_generational(gc) && (gc)->full)
  |  |  ------------------
  |  |  |  |  324|  1.59k|#define is_generational(gc) ((gc)->generational)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (324:29): [True: 799, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (325:49): [True: 488, False: 311]
  |  |  ------------------
  ------------------
 1232|    488|      size_t threshold = gc->live_after_mark/100 * MAJOR_GC_INC_RATIO;
  ------------------
  |  |  322|    488|#define MAJOR_GC_INC_RATIO 120
  ------------------
 1233|       |
 1234|    488|      gc->full = FALSE;
  ------------------
  |  |   51|    488|#  define FALSE 0
  ------------------
 1235|    488|      if (threshold < MAJOR_GC_TOOMANY) {
  ------------------
  |  |  323|    488|#define MAJOR_GC_TOOMANY 10000
  ------------------
  |  Branch (1235:11): [True: 488, False: 0]
  ------------------
 1236|    488|        gc->oldgen_threshold = threshold;
 1237|    488|      }
 1238|      0|      else {
 1239|       |        /* too many objects allocated during incremental GC, */
 1240|       |        /* instead of increasing threshold, invoke full GC. */
 1241|      0|        mrb_full_gc(mrb);
 1242|      0|      }
 1243|    488|    }
 1244|    311|    else if (is_minor_gc(gc) && gc->live > gc->oldgen_threshold) {
  ------------------
  |  |  326|    622|#define is_minor_gc(gc) (is_generational(gc) && !(gc)->full)
  |  |  ------------------
  |  |  |  |  324|    622|#define is_generational(gc) ((gc)->generational)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (324:29): [True: 311, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (326:49): [True: 311, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1244:33): [True: 164, False: 147]
  ------------------
 1245|    164|      clear_all_old(mrb, gc);
 1246|    164|      gc->full = TRUE;
  ------------------
  |  |   54|    164|#  define TRUE 1
  ------------------
 1247|    164|    }
 1248|    799|  }
 1249|    861|}
mrb_full_gc:
 1254|  5.55k|{
 1255|  5.55k|  mrb_gc *gc = &mrb->gc;
 1256|       |
 1257|  5.55k|  if (!mrb->c) return;
  ------------------
  |  Branch (1257:7): [True: 0, False: 5.55k]
  ------------------
 1258|  5.55k|  if (gc->disabled || gc->iterating) return;
  ------------------
  |  Branch (1258:7): [True: 0, False: 5.55k]
  |  Branch (1258:23): [True: 0, False: 5.55k]
  ------------------
 1259|       |
 1260|  5.55k|  if (is_generational(gc)) {
  ------------------
  |  |  324|  5.55k|#define is_generational(gc) ((gc)->generational)
  |  |  ------------------
  |  |  |  Branch (324:29): [True: 5.55k, False: 0]
  |  |  ------------------
  ------------------
 1261|       |    /* clear all the old objects back to young */
 1262|  5.55k|    clear_all_old(mrb, gc);
 1263|  5.55k|    gc->full = TRUE;
  ------------------
  |  |   54|  5.55k|#  define TRUE 1
  ------------------
 1264|  5.55k|  }
 1265|      0|  else if (gc->state != MRB_GC_STATE_ROOT) {
  ------------------
  |  Branch (1265:12): [True: 0, False: 0]
  ------------------
 1266|       |    /* finish half baked GC cycle */
 1267|      0|    incremental_gc_finish(mrb, gc);
 1268|      0|  }
 1269|       |
 1270|  5.55k|  incremental_gc_finish(mrb, gc);
 1271|  5.55k|  gc->threshold = (gc->live_after_mark/100) * gc->interval_ratio;
 1272|       |
 1273|  5.55k|  if (is_generational(gc)) {
  ------------------
  |  |  324|  5.55k|#define is_generational(gc) ((gc)->generational)
  |  |  ------------------
  |  |  |  Branch (324:29): [True: 5.55k, False: 0]
  |  |  ------------------
  ------------------
 1274|  5.55k|    gc->oldgen_threshold = gc->live_after_mark/100 * MAJOR_GC_INC_RATIO;
  ------------------
  |  |  322|  5.55k|#define MAJOR_GC_INC_RATIO 120
  ------------------
 1275|  5.55k|    gc->full = FALSE;
  ------------------
  |  |   51|  5.55k|#  define FALSE 0
  ------------------
 1276|  5.55k|  }
 1277|       |
 1278|       |#ifdef MRB_USE_MALLOC_TRIM
 1279|       |  malloc_trim(0);
 1280|       |#endif
 1281|  5.55k|}
mrb_field_write_barrier:
 1296|   982k|{
 1297|   982k|  mrb_gc *gc = &mrb->gc;
 1298|       |
 1299|   982k|  if (!value) return;
  ------------------
  |  Branch (1299:7): [True: 0, False: 982k]
  ------------------
 1300|   982k|  if (!is_black(obj)) return;
  ------------------
  |  |  178|   982k|#define is_black(o) ((o)->color == GC_BLACK)
  |  |  ------------------
  |  |  |  |  166|   982k|#define GC_BLACK   4
  |  |  ------------------
  ------------------
  |  Branch (1300:7): [True: 951k, False: 31.7k]
  ------------------
 1301|  31.7k|  if (!is_white(value)) return;
  ------------------
  |  |  177|  31.7k|#define is_white(o) ((o)->color & GC_WHITES)
  |  |  ------------------
  |  |  |  |  168|  31.7k|#define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  31.7k|#define GC_WHITE_A 1
  |  |  |  |  ------------------
  |  |  |  |               #define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  31.7k|#define GC_WHITE_B 2
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1301:7): [True: 4.88k, False: 26.8k]
  ------------------
 1302|  26.8k|  if (is_red(value)) return;
  ------------------
  |  |  179|  26.8k|#define is_red(o) ((o)->color == GC_RED)
  |  |  ------------------
  |  |  |  |  167|  26.8k|#define GC_RED MRB_GC_RED
  |  |  |  |  ------------------
  |  |  |  |  |  |   79|  26.8k|#define MRB_GC_RED 7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (179:19): [True: 0, False: 26.8k]
  |  |  ------------------
  ------------------
 1303|       |
 1304|  26.8k|  mrb_assert(gc->state == MRB_GC_STATE_MARK || (!is_dead(gc, value) && !is_dead(gc, obj)));
  ------------------
  |  |   68|  26.8k|#define mrb_assert(p) ((void)0)
  ------------------
 1305|  26.8k|  mrb_assert(is_generational(gc) || gc->state != MRB_GC_STATE_ROOT);
  ------------------
  |  |   68|  26.8k|#define mrb_assert(p) ((void)0)
  ------------------
 1306|       |
 1307|  26.8k|  if (is_generational(gc) || gc->state == MRB_GC_STATE_MARK) {
  ------------------
  |  |  324|  53.7k|#define is_generational(gc) ((gc)->generational)
  |  |  ------------------
  |  |  |  Branch (324:29): [True: 26.8k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1307:30): [True: 0, False: 0]
  ------------------
 1308|  26.8k|    add_gray_list(mrb, gc, value);
 1309|  26.8k|  }
 1310|      0|  else {
 1311|      0|    mrb_assert(gc->state == MRB_GC_STATE_SWEEP);
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 1312|      0|    paint_partial_white(gc, obj); /* for never write barriers */
  ------------------
  |  |  175|      0|#define paint_partial_white(s, o) ((o)->color = (s)->current_white_part)
  ------------------
 1313|      0|  }
 1314|  26.8k|}
mrb_write_barrier:
 1327|  38.3k|{
 1328|  38.3k|  mrb_gc *gc = &mrb->gc;
 1329|       |
 1330|  38.3k|  if (!is_black(obj)) return;
  ------------------
  |  |  178|  38.3k|#define is_black(o) ((o)->color == GC_BLACK)
  |  |  ------------------
  |  |  |  |  166|  38.3k|#define GC_BLACK   4
  |  |  ------------------
  ------------------
  |  Branch (1330:7): [True: 38.2k, False: 25]
  ------------------
 1331|       |
 1332|     25|  mrb_assert(!is_dead(gc, obj));
  ------------------
  |  |   68|     25|#define mrb_assert(p) ((void)0)
  ------------------
 1333|     25|  mrb_assert(is_generational(gc) || gc->state != MRB_GC_STATE_ROOT);
  ------------------
  |  |   68|     25|#define mrb_assert(p) ((void)0)
  ------------------
 1334|     25|  paint_gray(obj);
  ------------------
  |  |  172|     25|#define paint_gray(o) ((o)->color = GC_GRAY)
  |  |  ------------------
  |  |  |  |  163|     25|#define GC_GRAY 0
  |  |  ------------------
  ------------------
 1335|     25|  obj->gcnext = gc->atomic_gray_list;
 1336|     25|  gc->atomic_gray_list = obj;
 1337|     25|}
mrb_objspace_each_objects:
 1540|  5.54k|{
 1541|  5.54k|  mrb_bool iterating = mrb->gc.iterating;
 1542|       |
 1543|  5.54k|  mrb_full_gc(mrb);
 1544|  5.54k|  mrb->gc.iterating = TRUE;
  ------------------
  |  |   54|  5.54k|#  define TRUE 1
  ------------------
 1545|  5.54k|  if (iterating) {
  ------------------
  |  Branch (1545:7): [True: 0, False: 5.54k]
  ------------------
 1546|      0|    gc_each_objects(mrb, &mrb->gc, callback, data);
 1547|      0|  }
 1548|  5.54k|  else {
 1549|  5.54k|    struct mrb_jmpbuf *prev_jmp = mrb->jmp;
 1550|  5.54k|    struct mrb_jmpbuf c_jmp;
 1551|       |
 1552|  5.54k|    MRB_TRY(&c_jmp) {
  ------------------
  |  |   44|  5.54k|#define MRB_TRY(buf) if (MRB_SETJMP((buf)->impl) == 0) {
  |  |  ------------------
  |  |  |  |   40|  5.54k|#define MRB_SETJMP setjmp
  |  |  ------------------
  |  |  |  Branch (44:26): [True: 5.54k, False: 0]
  |  |  ------------------
  ------------------
 1553|  5.54k|      mrb->jmp = &c_jmp;
 1554|  5.54k|      gc_each_objects(mrb, &mrb->gc, callback, data);
 1555|  5.54k|      mrb->jmp = prev_jmp;
 1556|  5.54k|      mrb->gc.iterating = iterating;
 1557|  5.54k|    } MRB_CATCH(&c_jmp) {
  ------------------
  |  |   45|  5.54k|#define MRB_CATCH(buf) } else {
  ------------------
 1558|      0|      mrb->gc.iterating = iterating;
 1559|      0|      mrb->jmp = prev_jmp;
 1560|      0|      MRB_THROW(prev_jmp);
  ------------------
  |  |   48|      0|#define MRB_THROW(buf) MRB_LONGJMP((buf)->impl, 1);
  |  |  ------------------
  |  |  |  |   41|      0|#define MRB_LONGJMP longjmp
  |  |  ------------------
  ------------------
 1561|  5.54k|    } MRB_END_EXC(&c_jmp);
  ------------------
  |  |   46|      0|#define MRB_END_EXC(buf) }
  ------------------
 1562|  5.54k|  }
 1563|  5.54k|}
mrb_init_gc:
 1574|    476|{
 1575|    476|  struct RClass *gc;
 1576|       |
 1577|    476|  mrb_static_assert_object_size(RVALUE);
  ------------------
  |  |   44|    476|  mrb_static_assert(sizeof(st) <= sizeof(void*) * 6, \
  |  |  ------------------
  |  |  |  |  109|    476|    mrb_static_assert_expand(mrb_static_assert_selector(__VA_ARGS__, mrb_static_assert2, mrb_static_assert1, _)(__VA_ARGS__))
  |  |  |  |  ------------------
  |  |  |  |  |  |   99|    476|# define mrb_static_assert_expand(...) __VA_ARGS__ /* for MSVC behaviour - https://stackoverflow.com/q/5530505 */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|    476|                    #st " size must be within 6 words")
  ------------------
 1578|       |
 1579|    476|  gc = mrb_define_module(mrb, "GC");
 1580|       |
 1581|    476|  mrb_define_class_method(mrb, gc, "start", gc_start, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1582|    476|  mrb_define_class_method(mrb, gc, "enable", gc_enable, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1583|    476|  mrb_define_class_method(mrb, gc, "disable", gc_disable, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1584|    476|  mrb_define_class_method(mrb, gc, "interval_ratio", gc_interval_ratio_get, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1585|    476|  mrb_define_class_method(mrb, gc, "interval_ratio=", gc_interval_ratio_set, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1586|    476|  mrb_define_class_method(mrb, gc, "step_ratio", gc_step_ratio_get, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1587|    476|  mrb_define_class_method(mrb, gc, "step_ratio=", gc_step_ratio_set, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1588|    476|  mrb_define_class_method(mrb, gc, "generational_mode=", gc_generational_mode_set, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1589|    476|  mrb_define_class_method(mrb, gc, "generational_mode", gc_generational_mode_get, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1590|    476|}
gc.c:heap_p:
  275|  6.03M|{
  276|  6.03M|  mrb_heap_page* page;
  277|       |
  278|  6.03M|  page = gc->heaps;
  279|  6.39M|  while (page) {
  ------------------
  |  Branch (279:10): [True: 6.39M, False: 0]
  ------------------
  280|  6.39M|    RVALUE *p;
  281|       |
  282|  6.39M|    p = objects(page);
  ------------------
  |  |  188|  6.39M|#define objects(p) ((RVALUE*)&p[1])
  ------------------
  283|  6.39M|    if (&p[0].as.basic <= object && object <= &p[MRB_HEAP_PAGE_SIZE - 1].as.basic) {
  ------------------
  |  |  148|  6.10M|#define MRB_HEAP_PAGE_SIZE 1024
  ------------------
  |  Branch (283:9): [True: 6.10M, False: 283k]
  |  Branch (283:37): [True: 6.03M, False: 69.6k]
  ------------------
  284|  6.03M|      return TRUE;
  ------------------
  |  |   54|  6.03M|#  define TRUE 1
  ------------------
  285|  6.03M|    }
  286|   353k|    page = page->next;
  287|   353k|  }
  288|      0|  return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  289|  6.03M|}
gc.c:add_heap:
  301|    946|{
  302|    946|  mrb_heap_page *page = (mrb_heap_page*)mrb_calloc(mrb, 1, sizeof(mrb_heap_page) + MRB_HEAP_PAGE_SIZE * sizeof(RVALUE));
  ------------------
  |  |  148|    946|#define MRB_HEAP_PAGE_SIZE 1024
  ------------------
  303|    946|  RVALUE *p, *e;
  304|    946|  struct RBasic *prev = NULL;
  305|       |
  306|   969k|  for (p = objects(page), e=p+MRB_HEAP_PAGE_SIZE; p<e; p++) {
  ------------------
  |  |  188|    946|#define objects(p) ((RVALUE*)&p[1])
  ------------------
                for (p = objects(page), e=p+MRB_HEAP_PAGE_SIZE; p<e; p++) {
  ------------------
  |  |  148|    946|#define MRB_HEAP_PAGE_SIZE 1024
  ------------------
  |  Branch (306:51): [True: 968k, False: 946]
  ------------------
  307|   968k|    p->as.free.tt = MRB_TT_FREE;
  308|   968k|    p->as.free.next = prev;
  309|   968k|    prev = &p->as.basic;
  310|   968k|  }
  311|    946|  page->freelist = prev;
  312|       |
  313|    946|  page->next = gc->heaps;
  314|    946|  gc->heaps = page;
  315|       |
  316|    946|  page->free_next = gc->free_heaps;
  317|    946|  gc->free_heaps = page;
  318|    946|}
gc.c:free_heap:
  352|    476|{
  353|    476|  mrb_heap_page *page = gc->heaps;
  354|    476|  mrb_heap_page *tmp;
  355|    476|  RVALUE *p, *e;
  356|       |
  357|  1.06k|  while (page) {
  ------------------
  |  Branch (357:10): [True: 585, False: 476]
  ------------------
  358|    585|    tmp = page;
  359|    585|    page = page->next;
  360|   599k|    for (p = objects(tmp), e=p+MRB_HEAP_PAGE_SIZE; p<e; p++) {
  ------------------
  |  |  188|    585|#define objects(p) ((RVALUE*)&p[1])
  ------------------
                  for (p = objects(tmp), e=p+MRB_HEAP_PAGE_SIZE; p<e; p++) {
  ------------------
  |  |  148|    585|#define MRB_HEAP_PAGE_SIZE 1024
  ------------------
  |  Branch (360:52): [True: 599k, False: 585]
  ------------------
  361|   599k|      if (p->as.free.tt != MRB_TT_FREE)
  ------------------
  |  Branch (361:11): [True: 433k, False: 165k]
  ------------------
  362|   433k|        obj_free(mrb, &p->as.basic, TRUE);
  ------------------
  |  |   54|   433k|#  define TRUE 1
  ------------------
  363|   599k|    }
  364|    585|    mrb_free(mrb, tmp);
  365|    585|  }
  366|    476|}
gc.c:obj_free:
  710|   898k|{
  711|   898k|  DEBUG(fprintf(stderr, "obj_free(%p,tt=%d)\n",obj,obj->tt));
  712|   898k|  switch (obj->tt) {
  713|  24.7k|  case MRB_TT_OBJECT:
  ------------------
  |  Branch (713:3): [True: 24.7k, False: 873k]
  ------------------
  714|  24.7k|    mrb_gc_free_iv(mrb, (struct RObject*)obj);
  715|  24.7k|    break;
  716|       |
  717|  1.17k|  case MRB_TT_EXCEPTION:
  ------------------
  |  Branch (717:3): [True: 1.17k, False: 897k]
  ------------------
  718|  1.17k|    mrb_gc_free_iv(mrb, (struct RObject*)obj);
  719|  1.17k|    break;
  720|       |
  721|  35.2k|  case MRB_TT_CLASS:
  ------------------
  |  Branch (721:3): [True: 35.2k, False: 863k]
  ------------------
  722|  39.9k|  case MRB_TT_MODULE:
  ------------------
  |  Branch (722:3): [True: 4.76k, False: 893k]
  ------------------
  723|  82.8k|  case MRB_TT_SCLASS:
  ------------------
  |  Branch (723:3): [True: 42.8k, False: 855k]
  ------------------
  724|  82.8k|    mrb_gc_free_mt(mrb, (struct RClass*)obj);
  725|  82.8k|    mrb_gc_free_iv(mrb, (struct RObject*)obj);
  726|  82.8k|    if (!end)
  ------------------
  |  Branch (726:9): [True: 0, False: 82.8k]
  ------------------
  727|      0|      mrb_mc_clear_by_class(mrb, (struct RClass*)obj);
  728|  82.8k|    break;
  729|  8.09k|  case MRB_TT_ICLASS:
  ------------------
  |  Branch (729:3): [True: 8.09k, False: 890k]
  ------------------
  730|  8.09k|    if (MRB_FLAG_TEST(obj, MRB_FL_CLASS_IS_ORIGIN))
  ------------------
  |  |   17|  8.09k|#define MRB_FLAG_TEST(obj, flag) ((obj)->flags & (flag))
  |  |  ------------------
  |  |  |  Branch (17:34): [True: 0, False: 8.09k]
  |  |  ------------------
  ------------------
  731|      0|      mrb_gc_free_mt(mrb, (struct RClass*)obj);
  732|  8.09k|    if (!end)
  ------------------
  |  Branch (732:9): [True: 0, False: 8.09k]
  ------------------
  733|      0|      mrb_mc_clear_by_class(mrb, (struct RClass*)obj);
  734|  8.09k|    break;
  735|  37.6k|  case MRB_TT_ENV:
  ------------------
  |  Branch (735:3): [True: 37.6k, False: 860k]
  ------------------
  736|  37.6k|    {
  737|  37.6k|      struct REnv *e = (struct REnv*)obj;
  738|       |
  739|  37.6k|      if (MRB_ENV_ONSTACK_P(e)) {
  ------------------
  |  |   30|  37.6k|#define MRB_ENV_ONSTACK_P(e) (((e)->flags & MRB_ENV_CLOSED) == 0)
  |  |  ------------------
  |  |  |  |   28|  37.6k|#define MRB_ENV_CLOSED (1<<20)
  |  |  ------------------
  |  |  |  Branch (30:30): [True: 21.8k, False: 15.7k]
  |  |  ------------------
  ------------------
  740|       |        /* cannot be freed */
  741|  21.8k|        e->stack = NULL;
  742|  21.8k|        break;
  743|  21.8k|      }
  744|  15.7k|      mrb_free(mrb, e->stack);
  745|  15.7k|      e->stack = NULL;
  746|  15.7k|    }
  747|      0|    break;
  748|       |
  749|      0|  case MRB_TT_FIBER:
  ------------------
  |  Branch (749:3): [True: 0, False: 898k]
  ------------------
  750|      0|    {
  751|      0|      struct mrb_context *c = ((struct RFiber*)obj)->cxt;
  752|       |
  753|      0|      if (c != mrb->root_c) {
  ------------------
  |  Branch (753:11): [True: 0, False: 0]
  ------------------
  754|      0|        mrb_free_context(mrb, c);
  755|      0|      }
  756|      0|    }
  757|      0|    break;
  758|       |
  759|      0|  case MRB_TT_STRUCT:
  ------------------
  |  Branch (759:3): [True: 0, False: 898k]
  ------------------
  760|   199k|  case MRB_TT_ARRAY:
  ------------------
  |  Branch (760:3): [True: 199k, False: 698k]
  ------------------
  761|   199k|    if (ARY_SHARED_P(obj))
  ------------------
  |  |   84|   199k|#define ARY_SHARED_P(a) ((a)->flags & MRB_ARY_SHARED)
  |  |  ------------------
  |  |  |  |   83|   199k|#define MRB_ARY_SHARED      256
  |  |  ------------------
  |  |  |  Branch (84:25): [True: 1.04k, False: 198k]
  |  |  ------------------
  ------------------
  762|  1.04k|      mrb_ary_decref(mrb, ((struct RArray*)obj)->as.heap.aux.shared);
  763|   198k|    else if (!ARY_EMBED_P(obj))
  ------------------
  |  |   63|   198k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  ------------------
  |  |  |  |   62|   198k|#define MRB_ARY_EMBED_MASK  7
  |  |  ------------------
  ------------------
  |  Branch (763:14): [True: 9.17k, False: 189k]
  ------------------
  764|  9.17k|      mrb_free(mrb, ((struct RArray*)obj)->as.heap.ptr);
  765|   199k|    break;
  766|       |
  767|  37.2k|  case MRB_TT_HASH:
  ------------------
  |  Branch (767:3): [True: 37.2k, False: 861k]
  ------------------
  768|  37.2k|    mrb_gc_free_iv(mrb, (struct RObject*)obj);
  769|  37.2k|    mrb_gc_free_hash(mrb, (struct RHash*)obj);
  770|  37.2k|    break;
  771|       |
  772|   206k|  case MRB_TT_STRING:
  ------------------
  |  Branch (772:3): [True: 206k, False: 691k]
  ------------------
  773|   206k|    mrb_gc_free_str(mrb, (struct RString*)obj);
  774|   206k|    break;
  775|       |
  776|   260k|  case MRB_TT_PROC:
  ------------------
  |  Branch (776:3): [True: 260k, False: 637k]
  ------------------
  777|   260k|    {
  778|   260k|      struct RProc *p = (struct RProc*)obj;
  779|       |
  780|   260k|      if (!MRB_PROC_CFUNC_P(p) && p->body.irep) {
  ------------------
  |  |   65|   521k|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  ------------------
  |  |  |  |   64|   260k|#define MRB_PROC_CFUNC_FL 128
  |  |  ------------------
  ------------------
  |  Branch (780:11): [True: 251k, False: 9.52k]
  |  Branch (780:35): [True: 251k, False: 0]
  ------------------
  781|   251k|        mrb_irep *irep = (mrb_irep*)p->body.irep;
  782|   251k|        if (end) {
  ------------------
  |  Branch (782:13): [True: 243k, False: 7.35k]
  ------------------
  783|   243k|          mrb_irep_cutref(mrb, irep);
  784|   243k|        }
  785|   251k|        mrb_irep_decref(mrb, irep);
  786|   251k|      }
  787|   260k|    }
  788|   260k|    break;
  789|       |
  790|      0|  case MRB_TT_RANGE:
  ------------------
  |  Branch (790:3): [True: 0, False: 898k]
  ------------------
  791|      0|    mrb_gc_free_range(mrb, ((struct RRange*)obj));
  ------------------
  |  |   28|      0|# define mrb_gc_free_range(mrb, p) ((void)0)
  ------------------
  792|      0|    break;
  793|       |
  794|  6.56k|  case MRB_TT_CDATA:
  ------------------
  |  Branch (794:3): [True: 6.56k, False: 892k]
  ------------------
  795|  6.56k|    {
  796|  6.56k|      struct RData *d = (struct RData*)obj;
  797|  6.56k|      if (d->type && d->type->dfree) {
  ------------------
  |  Branch (797:11): [True: 6.56k, False: 0]
  |  Branch (797:22): [True: 6.56k, False: 0]
  ------------------
  798|  6.56k|        d->type->dfree(mrb, d->data);
  799|  6.56k|      }
  800|  6.56k|      mrb_gc_free_iv(mrb, (struct RObject*)obj);
  801|  6.56k|    }
  802|  6.56k|    break;
  803|       |
  804|       |#if defined(MRB_USE_RATIONAL) && defined(MRB_INT64) && defined(MRB_32BIT)
  805|       |  case MRB_TT_RATIONAL:
  806|       |    {
  807|       |      struct RData *o = (struct RData*)obj;
  808|       |      mrb_free(mrb, o->iv);
  809|       |    }
  810|       |    break;
  811|       |#endif
  812|       |
  813|       |#if defined(MRB_USE_COMPLEX) && defined(MRB_32BIT) && !defined(MRB_USE_FLOAT32)
  814|       |  case MRB_TT_COMPLEX:
  815|       |    {
  816|       |      struct RData *o = (struct RData*)obj;
  817|       |      mrb_free(mrb, o->iv);
  818|       |    }
  819|       |    break;
  820|       |#endif
  821|       |
  822|      0|#ifdef MRB_USE_BIGINT
  823|  29.2k|  case MRB_TT_BIGINT:
  ------------------
  |  Branch (823:3): [True: 29.2k, False: 869k]
  ------------------
  824|  29.2k|    mrb_gc_free_bint(mrb, obj);
  825|  29.2k|    break;
  826|      0|#endif
  827|       |
  828|  3.79k|  default:
  ------------------
  |  Branch (828:3): [True: 3.79k, False: 894k]
  ------------------
  829|  3.79k|    break;
  830|   898k|  }
  831|       |#if defined(MRB_GC_STRESS) && defined(MRB_DEBUG)
  832|       |  memset(obj, -1, sizeof(RVALUE));
  833|       |  paint_white(obj);
  834|       |#endif
  835|   898k|  obj->tt = MRB_TT_FREE;
  836|   898k|}
gc.c:gc_protect:
  379|  1.08M|{
  380|       |#ifdef MRB_GC_FIXED_ARENA
  381|       |  if (gc->arena_idx >= MRB_GC_ARENA_SIZE) {
  382|       |    /* arena overflow error */
  383|       |    gc->arena_idx = MRB_GC_ARENA_SIZE - 4; /* force room in arena */
  384|       |    mrb_exc_raise(mrb, mrb_obj_value(mrb->arena_err));
  385|       |  }
  386|       |#else
  387|  1.08M|  if (gc->arena_idx >= gc->arena_capa) {
  ------------------
  |  Branch (387:7): [True: 241, False: 1.08M]
  ------------------
  388|       |    /* extend arena */
  389|    241|    int newcapa = gc->arena_capa * 3 / 2;
  390|    241|    gc->arena = (struct RBasic**)mrb_realloc(mrb, gc->arena, sizeof(struct RBasic*)*newcapa);
  391|    241|    gc->arena_capa = newcapa;
  392|    241|  }
  393|  1.08M|#endif
  394|  1.08M|  gc->arena[gc->arena_idx++] = p;
  395|  1.08M|}
gc.c:add_gray_list:
  519|  4.75M|{
  520|       |#ifdef MRB_GC_STRESS
  521|       |  if (obj->tt > MRB_TT_MAXDEFINE) {
  522|       |    abort();
  523|       |  }
  524|       |#endif
  525|  4.75M|  paint_gray(obj);
  ------------------
  |  |  172|  4.75M|#define paint_gray(o) ((o)->color = GC_GRAY)
  |  |  ------------------
  |  |  |  |  163|  4.75M|#define GC_GRAY 0
  |  |  ------------------
  ------------------
  526|  4.75M|  obj->gcnext = gc->gray_list;
  527|  4.75M|  gc->gray_list = obj;
  528|  4.75M|}
gc.c:incremental_gc_finish:
 1172|  11.6k|{
 1173|  41.0k|  do {
 1174|  41.0k|    incremental_gc(mrb, gc, SIZE_MAX);
 1175|  41.0k|  } while (gc->state != MRB_GC_STATE_ROOT);
  ------------------
  |  Branch (1175:12): [True: 29.4k, False: 11.6k]
  ------------------
 1176|  11.6k|}
gc.c:incremental_gc:
 1140|  43.6k|{
 1141|  43.6k|  switch (gc->state) {
 1142|  6.42k|  case MRB_GC_STATE_ROOT:
  ------------------
  |  Branch (1142:3): [True: 6.42k, False: 37.1k]
  ------------------
 1143|  6.42k|    root_scan_phase(mrb, gc);
 1144|  6.42k|    gc->state = MRB_GC_STATE_MARK;
 1145|  6.42k|    flip_white_part(gc);
  ------------------
  |  |  180|  6.42k|#define flip_white_part(s) ((s)->current_white_part = other_white_part(s))
  |  |  ------------------
  |  |  |  |  181|  6.42k|#define other_white_part(s) ((s)->current_white_part ^ GC_WHITES)
  |  |  |  |  ------------------
  |  |  |  |  |  |  168|  6.42k|#define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  164|  6.42k|#define GC_WHITE_A 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|  6.42k|#define GC_WHITE_B 2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1146|  6.42k|    return 0;
 1147|  12.8k|  case MRB_GC_STATE_MARK:
  ------------------
  |  Branch (1147:3): [True: 12.8k, False: 30.7k]
  ------------------
 1148|  12.8k|    if (gc->gray_list) {
  ------------------
  |  Branch (1148:9): [True: 6.45k, False: 6.42k]
  ------------------
 1149|  6.45k|      return incremental_marking_phase(mrb, gc, limit);
 1150|  6.45k|    }
 1151|  6.42k|    else {
 1152|  6.42k|      final_marking_phase(mrb, gc);
 1153|  6.42k|      prepare_incremental_sweep(mrb, gc);
 1154|  6.42k|      return 0;
 1155|  6.42k|    }
 1156|  24.3k|  case MRB_GC_STATE_SWEEP: {
  ------------------
  |  Branch (1156:3): [True: 24.3k, False: 19.3k]
  ------------------
 1157|  24.3k|     size_t tried_sweep = 0;
 1158|  24.3k|     tried_sweep = incremental_sweep_phase(mrb, gc, limit);
 1159|  24.3k|     if (tried_sweep == 0)
  ------------------
  |  Branch (1159:10): [True: 12.1k, False: 12.1k]
  ------------------
 1160|  12.1k|       gc->state = MRB_GC_STATE_ROOT;
 1161|  24.3k|     return tried_sweep;
 1162|  12.8k|  }
 1163|      0|  default:
  ------------------
  |  Branch (1163:3): [True: 0, False: 43.6k]
  ------------------
 1164|       |    /* unknown state */
 1165|      0|    mrb_assert(0);
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 1166|      0|    return 0;
 1167|  43.6k|  }
 1168|  43.6k|}
gc.c:root_scan_phase:
  840|  6.42k|{
  841|  6.42k|  int i, e;
  842|       |
  843|  6.42k|  if (!is_minor_gc(gc)) {
  ------------------
  |  |  326|  6.42k|#define is_minor_gc(gc) (is_generational(gc) && !(gc)->full)
  |  |  ------------------
  |  |  |  |  324|  12.8k|#define is_generational(gc) ((gc)->generational)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (324:29): [True: 6.42k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (326:49): [True: 311, False: 6.11k]
  |  |  ------------------
  ------------------
  844|  6.11k|    gc->gray_list = NULL;
  845|  6.11k|    gc->atomic_gray_list = NULL;
  846|  6.11k|  }
  847|       |
  848|  6.42k|  mrb_gc_mark_gv(mrb);
  849|       |  /* mark arena */
  850|  32.4k|  for (i=0,e=gc->arena_idx; i<e; i++) {
  ------------------
  |  Branch (850:29): [True: 26.0k, False: 6.42k]
  ------------------
  851|  26.0k|    mrb_gc_mark(mrb, gc->arena[i]);
  852|  26.0k|  }
  853|       |  /* mark class hierarchy */
  854|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->object_class);
  855|       |
  856|       |  /* mark built-in classes */
  857|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->class_class);
  858|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->module_class);
  859|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->proc_class);
  860|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->string_class);
  861|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->array_class);
  862|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->hash_class);
  863|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->range_class);
  864|       |
  865|  6.42k|#ifndef MRB_NO_FLOAT
  866|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->float_class);
  867|  6.42k|#endif
  868|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->integer_class);
  869|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->true_class);
  870|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->false_class);
  871|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->nil_class);
  872|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->symbol_class);
  873|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->kernel_module);
  874|       |
  875|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->eException_class);
  876|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->eStandardError_class);
  877|       |
  878|       |  /* mark top_self */
  879|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->top_self);
  880|       |  /* mark exception */
  881|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->exc);
  882|       |
  883|  6.42k|  mark_context(mrb, mrb->c);
  884|  6.42k|  if (mrb->root_c != mrb->c) {
  ------------------
  |  Branch (884:7): [True: 0, False: 6.42k]
  ------------------
  885|      0|    mark_context(mrb, mrb->root_c);
  886|      0|  }
  887|  6.42k|}
gc.c:mark_context:
  561|  12.8k|{
  562|  12.8k|  mrb_callinfo *ci;
  563|       |
  564|  12.8k| start:
  565|  12.8k|  if (c->status == MRB_FIBER_TERMINATED) return;
  ------------------
  |  Branch (565:7): [True: 0, False: 12.8k]
  ------------------
  566|       |
  567|       |  /* mark VM stack */
  568|  12.8k|  mark_context_stack(mrb, c);
  569|       |
  570|       |  /* mark call stack */
  571|  12.8k|  if (c->cibase) {
  ------------------
  |  Branch (571:7): [True: 11.9k, False: 952]
  ------------------
  572|  47.8k|    for (ci = c->cibase; ci <= c->ci; ci++) {
  ------------------
  |  Branch (572:26): [True: 35.8k, False: 11.9k]
  ------------------
  573|  35.8k|      mrb_gc_mark(mrb, (struct RBasic*)ci->proc);
  574|  35.8k|      mrb_gc_mark(mrb, (struct RBasic*)ci->u.target_class);
  575|  35.8k|    }
  576|  11.9k|  }
  577|       |  /* mark fibers */
  578|  12.8k|  mrb_gc_mark(mrb, (struct RBasic*)c->fib);
  579|  12.8k|  if (c->prev) {
  ------------------
  |  Branch (579:7): [True: 0, False: 12.8k]
  ------------------
  580|      0|    c = c->prev;
  581|      0|    goto start;
  582|      0|  }
  583|  12.8k|}
gc.c:mark_context_stack:
  532|  12.8k|{
  533|  12.8k|  size_t i, e;
  534|  12.8k|  mrb_value nil;
  535|       |
  536|  12.8k|  if (c->stbase == NULL) return;
  ------------------
  |  Branch (536:7): [True: 952, False: 11.9k]
  ------------------
  537|  11.9k|  if (c->ci) {
  ------------------
  |  Branch (537:7): [True: 11.9k, False: 0]
  ------------------
  538|  11.9k|    e = (c->ci->stack ? c->ci->stack - c->stbase : 0);
  ------------------
  |  Branch (538:10): [True: 11.9k, False: 0]
  ------------------
  539|  11.9k|    e += mrb_ci_nregs(c->ci);
  540|  11.9k|  }
  541|      0|  else {
  542|      0|    e = 0;
  543|      0|  }
  544|  11.9k|  if (c->stbase + e > c->stend) e = c->stend - c->stbase;
  ------------------
  |  Branch (544:7): [True: 0, False: 11.9k]
  ------------------
  545|  1.81M|  for (i=0; i<e; i++) {
  ------------------
  |  Branch (545:13): [True: 1.80M, False: 11.9k]
  ------------------
  546|  1.80M|    mrb_value v = c->stbase[i];
  547|       |
  548|  1.80M|    if (!mrb_immediate_p(v)) {
  ------------------
  |  |  148|  1.80M|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|  3.60M|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 979k, False: 821k]
  |  |  |  Branch (148:63): [True: 625k, False: 196k]
  |  |  ------------------
  ------------------
  549|   196k|      mrb_gc_mark(mrb, mrb_basic_ptr(v));
  ------------------
  |  |   22|   196k|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|   196k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  550|   196k|    }
  551|  1.80M|  }
  552|  11.9k|  e = c->stend - c->stbase;
  553|  11.9k|  nil = mrb_nil_value();
  554|  2.03M|  for (; i<e; i++) {
  ------------------
  |  Branch (554:10): [True: 2.02M, False: 11.9k]
  ------------------
  555|  2.02M|    c->stbase[i] = nil;
  556|  2.02M|  }
  557|  11.9k|}
gc.c:incremental_marking_phase:
  992|  6.45k|{
  993|  6.45k|  size_t tried_marks = 0;
  994|       |
  995|  4.74M|  while (gc->gray_list && tried_marks < limit) {
  ------------------
  |  Branch (995:10): [True: 4.73M, False: 6.41k]
  |  Branch (995:27): [True: 4.73M, False: 32]
  ------------------
  996|  4.73M|    struct RBasic *obj = gc->gray_list;
  997|  4.73M|    gc->gray_list = obj->gcnext;
  998|  4.73M|    obj->gcnext = NULL;
  999|  4.73M|    gc_mark_children(mrb, gc, obj);
 1000|  4.73M|    tried_marks += gc_gray_counts(mrb, gc, obj);
 1001|  4.73M|  }
 1002|       |
 1003|  6.45k|  return tried_marks;
 1004|  6.45k|}
gc.c:gc_mark_children:
  587|  4.74M|{
  588|  4.74M|  mrb_assert(is_gray(obj));
  ------------------
  |  |   68|  4.74M|#define mrb_assert(p) ((void)0)
  ------------------
  589|  4.74M|  paint_black(obj);
  ------------------
  |  |  173|  4.74M|#define paint_black(o) ((o)->color = GC_BLACK)
  |  |  ------------------
  |  |  |  |  166|  4.74M|#define GC_BLACK   4
  |  |  ------------------
  ------------------
  590|  4.74M|  mrb_gc_mark(mrb, (struct RBasic*)obj->c);
  591|  4.74M|  switch (obj->tt) {
  592|  97.6k|  case MRB_TT_ICLASS:
  ------------------
  |  Branch (592:3): [True: 97.6k, False: 4.64M]
  ------------------
  593|  97.6k|    {
  594|  97.6k|      struct RClass *c = (struct RClass*)obj;
  595|  97.6k|      if (MRB_FLAG_TEST(c, MRB_FL_CLASS_IS_ORIGIN))
  ------------------
  |  |   17|  97.6k|#define MRB_FLAG_TEST(obj, flag) ((obj)->flags & (flag))
  |  |  ------------------
  |  |  |  Branch (17:34): [True: 0, False: 97.6k]
  |  |  ------------------
  ------------------
  596|      0|        mrb_gc_mark_mt(mrb, c);
  597|  97.6k|      mrb_gc_mark(mrb, (struct RBasic*)((struct RClass*)obj)->super);
  598|  97.6k|    }
  599|  97.6k|    break;
  600|       |
  601|   425k|  case MRB_TT_CLASS:
  ------------------
  |  Branch (601:3): [True: 425k, False: 4.31M]
  ------------------
  602|   483k|  case MRB_TT_MODULE:
  ------------------
  |  Branch (602:3): [True: 57.4k, False: 4.68M]
  ------------------
  603|  1.00M|  case MRB_TT_SCLASS:
  ------------------
  |  Branch (603:3): [True: 517k, False: 4.22M]
  ------------------
  604|  1.00M|    {
  605|  1.00M|      struct RClass *c = (struct RClass*)obj;
  606|       |
  607|  1.00M|      mrb_gc_mark_mt(mrb, c);
  608|  1.00M|      mrb_gc_mark(mrb, (struct RBasic*)c->super);
  609|  1.00M|    }
  610|       |    /* fall through */
  611|       |
  612|  1.01M|  case MRB_TT_OBJECT:
  ------------------
  |  Branch (612:3): [True: 11.8k, False: 4.73M]
  ------------------
  613|  1.02M|  case MRB_TT_CDATA:
  ------------------
  |  Branch (613:3): [True: 17.3k, False: 4.72M]
  ------------------
  614|  1.02M|    mrb_gc_mark_iv(mrb, (struct RObject*)obj);
  615|  1.02M|    break;
  616|       |
  617|  2.99M|  case MRB_TT_PROC:
  ------------------
  |  Branch (617:3): [True: 2.99M, False: 1.74M]
  ------------------
  618|  2.99M|    {
  619|  2.99M|      struct RProc *p = (struct RProc*)obj;
  620|       |
  621|  2.99M|      mrb_gc_mark(mrb, (struct RBasic*)p->upper);
  622|  2.99M|      mrb_gc_mark(mrb, (struct RBasic*)p->e.env);
  623|  2.99M|    }
  624|  2.99M|    break;
  625|       |
  626|   384k|  case MRB_TT_ENV:
  ------------------
  |  Branch (626:3): [True: 384k, False: 4.36M]
  ------------------
  627|   384k|    {
  628|   384k|      struct REnv *e = (struct REnv*)obj;
  629|       |
  630|   384k|      if (MRB_ENV_ONSTACK_P(e) && e->cxt && e->cxt->fib) {
  ------------------
  |  |   30|   769k|#define MRB_ENV_ONSTACK_P(e) (((e)->flags & MRB_ENV_CLOSED) == 0)
  |  |  ------------------
  |  |  |  |   28|   384k|#define MRB_ENV_CLOSED (1<<20)
  |  |  ------------------
  |  |  |  Branch (30:30): [True: 264k, False: 120k]
  |  |  ------------------
  ------------------
  |  Branch (630:35): [True: 0, False: 264k]
  |  Branch (630:45): [True: 0, False: 0]
  ------------------
  631|      0|        mrb_gc_mark(mrb, (struct RBasic*)e->cxt->fib);
  632|      0|      }
  633|   384k|      mrb_int len = MRB_ENV_LEN(e);
  ------------------
  |  |   27|   384k|#define MRB_ENV_LEN(e) ((mrb_int)((e)->flags & 0xff))
  ------------------
  634|   505k|      for (mrb_int i=0; i<len; i++) {
  ------------------
  |  Branch (634:25): [True: 120k, False: 384k]
  ------------------
  635|   120k|        mrb_gc_mark_value(mrb, e->stack[i]);
  ------------------
  |  | 1313|   120k|#define mrb_gc_mark_value(mrb,val) do {\
  |  | 1314|   120k|  if (!mrb_immediate_p(val)) mrb_gc_mark((mrb), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |  148|   120k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|   241k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (148:29): [True: 114k, False: 5.74k]
  |  |  |  |  |  Branch (148:63): [True: 0, False: 5.74k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (!mrb_immediate_p(val)) mrb_gc_mark((mrb), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |   22|  5.74k|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|  5.74k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1315|   120k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1315:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  636|   120k|      }
  637|   384k|    }
  638|   384k|    break;
  639|       |
  640|      0|  case MRB_TT_FIBER:
  ------------------
  |  Branch (640:3): [True: 0, False: 4.74M]
  ------------------
  641|      0|    {
  642|      0|      struct mrb_context *c = ((struct RFiber*)obj)->cxt;
  643|       |
  644|      0|      if (c) mark_context(mrb, c);
  ------------------
  |  Branch (644:11): [True: 0, False: 0]
  ------------------
  645|      0|    }
  646|      0|    break;
  647|       |
  648|      0|  case MRB_TT_STRUCT:
  ------------------
  |  Branch (648:3): [True: 0, False: 4.74M]
  ------------------
  649|  2.44k|  case MRB_TT_ARRAY:
  ------------------
  |  Branch (649:3): [True: 2.44k, False: 4.74M]
  ------------------
  650|  2.44k|    {
  651|  2.44k|      struct RArray *a = (struct RArray*)obj;
  652|  2.44k|      size_t e=ARY_LEN(a);
  ------------------
  |  |   70|  2.44k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  2.44k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  2.44k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 1.21k, False: 1.23k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  1.21k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  1.21k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  653|  2.44k|      mrb_value *p = ARY_PTR(a);
  ------------------
  |  |   71|  2.44k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|  2.44k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  2.44k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 1.21k, False: 1.23k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|  1.21k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
  654|       |
  655|  5.15k|      for (size_t i=0; i<e; i++) {
  ------------------
  |  Branch (655:24): [True: 2.70k, False: 2.44k]
  ------------------
  656|  2.70k|        mrb_gc_mark_value(mrb, p[i]);
  ------------------
  |  | 1313|  2.70k|#define mrb_gc_mark_value(mrb,val) do {\
  |  | 1314|  2.70k|  if (!mrb_immediate_p(val)) mrb_gc_mark((mrb), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |  148|  2.70k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  5.41k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (148:29): [True: 2.58k, False: 127]
  |  |  |  |  |  Branch (148:63): [True: 0, False: 127]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (!mrb_immediate_p(val)) mrb_gc_mark((mrb), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |   22|    127|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|    127|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1315|  2.70k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1315:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  657|  2.70k|      }
  658|  2.44k|    }
  659|  2.44k|    break;
  660|       |
  661|  6.21k|  case MRB_TT_HASH:
  ------------------
  |  Branch (661:3): [True: 6.21k, False: 4.73M]
  ------------------
  662|  6.21k|    mrb_gc_mark_iv(mrb, (struct RObject*)obj);
  663|  6.21k|    mrb_gc_mark_hash(mrb, (struct RHash*)obj);
  664|  6.21k|    break;
  665|       |
  666|   217k|  case MRB_TT_STRING:
  ------------------
  |  Branch (666:3): [True: 217k, False: 4.52M]
  ------------------
  667|   217k|    if (RSTR_FSHARED_P(obj)) {
  ------------------
  |  |   73|   217k|#define RSTR_FSHARED_P(s) ((s)->flags & MRB_STR_FSHARED)
  |  |  ------------------
  |  |  |  |  108|   217k|#define MRB_STR_FSHARED   2
  |  |  ------------------
  |  |  |  Branch (73:27): [True: 0, False: 217k]
  |  |  ------------------
  ------------------
  668|      0|      struct RString *s = (struct RString*)obj;
  669|      0|      mrb_gc_mark(mrb, (struct RBasic*)s->as.heap.aux.fshared);
  670|      0|    }
  671|   217k|    break;
  672|       |
  673|      0|  case MRB_TT_RANGE:
  ------------------
  |  Branch (673:3): [True: 0, False: 4.74M]
  ------------------
  674|      0|    mrb_gc_mark_range(mrb, (struct RRange*)obj);
  675|      0|    break;
  676|       |
  677|      0|  case MRB_TT_BREAK:
  ------------------
  |  Branch (677:3): [True: 0, False: 4.74M]
  ------------------
  678|      0|    {
  679|      0|      struct RBreak *brk = (struct RBreak*)obj;
  680|      0|      mrb_gc_mark(mrb, (struct RBasic*)mrb_break_proc_get(brk));
  ------------------
  |  |   70|      0|#define mrb_break_proc_get(brk) ((brk)->proc)
  ------------------
  681|      0|      mrb_gc_mark_value(mrb, mrb_break_value_get(brk));
  ------------------
  |  | 1313|      0|#define mrb_gc_mark_value(mrb,val) do {\
  |  | 1314|      0|  if (!mrb_immediate_p(val)) mrb_gc_mark((mrb), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (!mrb_immediate_p(val)) mrb_gc_mark((mrb), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |   22|      0|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1315|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1315:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  682|      0|    }
  683|      0|    break;
  684|       |
  685|      0|  case MRB_TT_EXCEPTION:
  ------------------
  |  Branch (685:3): [True: 0, False: 4.74M]
  ------------------
  686|      0|    mrb_gc_mark_iv(mrb, (struct RObject*)obj);
  687|      0|    if (((struct RException*)obj)->mesg) {
  ------------------
  |  Branch (687:9): [True: 0, False: 0]
  ------------------
  688|      0|      mrb_gc_mark(mrb, (struct RBasic*)((struct RException*)obj)->mesg);
  689|      0|    }
  690|      0|    mrb_gc_mark(mrb, (struct RBasic*)((struct RException*)obj)->backtrace);
  691|      0|    break;
  692|       |
  693|  7.90k|  default:
  ------------------
  |  Branch (693:3): [True: 7.90k, False: 4.73M]
  ------------------
  694|  7.90k|    break;
  695|  4.74M|  }
  696|  4.74M|}
gc.c:gc_gray_counts:
  892|  4.73M|{
  893|  4.73M|  size_t children = 0;
  894|       |
  895|  4.73M|  switch (obj->tt) {
  896|  97.6k|  case MRB_TT_ICLASS:
  ------------------
  |  Branch (896:3): [True: 97.6k, False: 4.64M]
  ------------------
  897|  97.6k|    children++;
  898|  97.6k|    break;
  899|       |
  900|   425k|  case MRB_TT_CLASS:
  ------------------
  |  Branch (900:3): [True: 425k, False: 4.31M]
  ------------------
  901|   942k|  case MRB_TT_SCLASS:
  ------------------
  |  Branch (901:3): [True: 517k, False: 4.22M]
  ------------------
  902|  1.00M|  case MRB_TT_MODULE:
  ------------------
  |  Branch (902:3): [True: 57.4k, False: 4.68M]
  ------------------
  903|  1.00M|    {
  904|  1.00M|      struct RClass *c = (struct RClass*)obj;
  905|       |
  906|  1.00M|      children += mrb_gc_mark_iv_size(mrb, (struct RObject*)obj);
  907|  1.00M|      children += mrb_gc_mark_mt_size(mrb, c);
  908|  1.00M|      children++;
  909|  1.00M|    }
  910|  1.00M|    break;
  911|       |
  912|  11.8k|  case MRB_TT_OBJECT:
  ------------------
  |  Branch (912:3): [True: 11.8k, False: 4.72M]
  ------------------
  913|  29.1k|  case MRB_TT_CDATA:
  ------------------
  |  Branch (913:3): [True: 17.3k, False: 4.72M]
  ------------------
  914|  29.1k|    children += mrb_gc_mark_iv_size(mrb, (struct RObject*)obj);
  915|  29.1k|    break;
  916|       |
  917|   384k|  case MRB_TT_ENV:
  ------------------
  |  Branch (917:3): [True: 384k, False: 4.35M]
  ------------------
  918|   384k|    children += MRB_ENV_LEN(obj);
  ------------------
  |  |   27|   384k|#define MRB_ENV_LEN(e) ((mrb_int)((e)->flags & 0xff))
  ------------------
  919|   384k|    break;
  920|       |
  921|      0|  case MRB_TT_FIBER:
  ------------------
  |  Branch (921:3): [True: 0, False: 4.73M]
  ------------------
  922|      0|    {
  923|      0|      struct mrb_context *c = ((struct RFiber*)obj)->cxt;
  924|      0|      size_t i;
  925|      0|      mrb_callinfo *ci;
  926|       |
  927|      0|      if (!c || c->status == MRB_FIBER_TERMINATED) break;
  ------------------
  |  Branch (927:11): [True: 0, False: 0]
  |  Branch (927:17): [True: 0, False: 0]
  ------------------
  928|      0|      if (!c->ci) break;
  ------------------
  |  Branch (928:11): [True: 0, False: 0]
  ------------------
  929|       |
  930|       |      /* mark stack */
  931|      0|      i = c->ci->stack - c->stbase;
  932|      0|      i += mrb_ci_nregs(c->ci);
  933|      0|      if (c->stbase + i > c->stend) i = c->stend - c->stbase;
  ------------------
  |  Branch (933:11): [True: 0, False: 0]
  ------------------
  934|      0|      children += i;
  935|       |
  936|       |      /* mark closure */
  937|      0|      if (c->cibase) {
  ------------------
  |  Branch (937:11): [True: 0, False: 0]
  ------------------
  938|      0|        for (i=0, ci = c->cibase; ci <= c->ci; i++, ci++)
  ------------------
  |  Branch (938:35): [True: 0, False: 0]
  ------------------
  939|      0|          ;
  940|      0|      }
  941|      0|      children += i;
  942|      0|    }
  943|      0|    break;
  944|       |
  945|      0|  case MRB_TT_STRUCT:
  ------------------
  |  Branch (945:3): [True: 0, False: 4.73M]
  ------------------
  946|  2.42k|  case MRB_TT_ARRAY:
  ------------------
  |  Branch (946:3): [True: 2.42k, False: 4.73M]
  ------------------
  947|  2.42k|    {
  948|  2.42k|      struct RArray *a = (struct RArray*)obj;
  949|  2.42k|      children += ARY_LEN(a);
  ------------------
  |  |   70|  2.42k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  2.42k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  2.42k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 1.19k, False: 1.23k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  1.19k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  1.19k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  950|  2.42k|    }
  951|  2.42k|    break;
  952|       |
  953|  6.20k|  case MRB_TT_HASH:
  ------------------
  |  Branch (953:3): [True: 6.20k, False: 4.73M]
  ------------------
  954|  6.20k|    children += mrb_gc_mark_iv_size(mrb, (struct RObject*)obj);
  955|  6.20k|    children += mrb_gc_mark_hash_size(mrb, (struct RHash*)obj);
  956|  6.20k|    break;
  957|       |
  958|  2.99M|  case MRB_TT_PROC:
  ------------------
  |  Branch (958:3): [True: 2.99M, False: 1.73M]
  ------------------
  959|  2.99M|  case MRB_TT_RANGE:
  ------------------
  |  Branch (959:3): [True: 0, False: 4.73M]
  ------------------
  960|  2.99M|  case MRB_TT_BREAK:
  ------------------
  |  Branch (960:3): [True: 0, False: 4.73M]
  ------------------
  961|  2.99M|    children+=2;
  962|  2.99M|    break;
  963|       |
  964|      0|  case MRB_TT_EXCEPTION:
  ------------------
  |  Branch (964:3): [True: 0, False: 4.73M]
  ------------------
  965|      0|    children += mrb_gc_mark_iv_size(mrb, (struct RObject*)obj);
  966|      0|    if (((struct RException*)obj)->mesg) {
  ------------------
  |  Branch (966:9): [True: 0, False: 0]
  ------------------
  967|      0|      children++;
  968|      0|    }
  969|      0|    if (((struct RException*)obj)->backtrace) {
  ------------------
  |  Branch (969:9): [True: 0, False: 0]
  ------------------
  970|      0|      children++;
  971|      0|    }
  972|      0|    break;
  973|       |
  974|   217k|  default:
  ------------------
  |  Branch (974:3): [True: 217k, False: 4.52M]
  ------------------
  975|   217k|    break;
  976|  4.73M|  }
  977|  4.73M|  return children;
  978|  4.73M|}
gc.c:final_marking_phase:
 1022|  6.42k|{
 1023|  6.42k|  int i, e;
 1024|       |
 1025|       |  /* mark arena */
 1026|  28.5k|  for (i=0,e=gc->arena_idx; i<e; i++) {
  ------------------
  |  Branch (1026:29): [True: 22.1k, False: 6.42k]
  ------------------
 1027|  22.1k|    mrb_gc_mark(mrb, gc->arena[i]);
 1028|  22.1k|  }
 1029|  6.42k|  mrb_gc_mark_gv(mrb);
 1030|  6.42k|  mark_context(mrb, mrb->c);
 1031|  6.42k|  if (mrb->c != mrb->root_c) {
  ------------------
  |  Branch (1031:7): [True: 0, False: 6.42k]
  ------------------
 1032|      0|    mark_context(mrb, mrb->root_c);
 1033|      0|  }
 1034|  6.42k|  mrb_gc_mark(mrb, (struct RBasic*)mrb->exc);
 1035|       |
 1036|       |  /* mark pre-allocated exception */
 1037|  6.42k|  clear_error_object(mrb, mrb->nomem_err);
 1038|  6.42k|  clear_error_object(mrb, mrb->stack_err);
 1039|       |#ifdef MRB_GC_FIXED_ARENA
 1040|       |  clear_error_object(mrb, mrb->arena_err);
 1041|       |#endif
 1042|       |
 1043|  6.42k|  gc_mark_gray_list(mrb, gc);
 1044|  6.42k|  mrb_assert(gc->gray_list == NULL);
  ------------------
  |  |   68|  6.42k|#define mrb_assert(p) ((void)0)
  ------------------
 1045|  6.42k|  gc->gray_list = gc->atomic_gray_list;
 1046|  6.42k|  gc->atomic_gray_list = NULL;
 1047|  6.42k|  gc_mark_gray_list(mrb, gc);
 1048|  6.42k|  mrb_assert(gc->gray_list == NULL);
  ------------------
  |  |   68|  6.42k|#define mrb_assert(p) ((void)0)
  ------------------
 1049|  6.42k|}
gc.c:clear_error_object:
 1008|  12.8k|{
 1009|  12.8k|  if (obj == 0) return;
  ------------------
  |  Branch (1009:7): [True: 952, False: 11.9k]
  ------------------
 1010|  11.9k|  if (!is_white(obj)) return;
  ------------------
  |  |  177|  11.9k|#define is_white(o) ((o)->color & GC_WHITES)
  |  |  ------------------
  |  |  |  |  168|  11.9k|#define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  11.9k|#define GC_WHITE_A 1
  |  |  |  |  ------------------
  |  |  |  |               #define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  11.9k|#define GC_WHITE_B 2
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1010:7): [True: 414, False: 11.4k]
  ------------------
 1011|  11.4k|  paint_black(obj);
  ------------------
  |  |  173|  11.4k|#define paint_black(o) ((o)->color = GC_BLACK)
  |  |  ------------------
  |  |  |  |  166|  11.4k|#define GC_BLACK   4
  |  |  ------------------
  ------------------
 1012|  11.4k|  mrb_gc_mark(mrb, (struct RBasic*)obj->c);
 1013|  11.4k|  mrb_gc_free_iv(mrb, obj);
 1014|  11.4k|  struct RException *err = (struct RException*)obj;
 1015|  11.4k|  err->iv = NULL;
 1016|  11.4k|  err->mesg = NULL;
 1017|  11.4k|  err->backtrace = NULL;
 1018|  11.4k|}
gc.c:gc_mark_gray_list:
  981|  12.8k|gc_mark_gray_list(mrb_state *mrb, mrb_gc *gc) {
  982|  20.6k|  while (gc->gray_list) {
  ------------------
  |  Branch (982:10): [True: 7.81k, False: 12.8k]
  ------------------
  983|  7.81k|    struct RBasic *obj = gc->gray_list;
  984|  7.81k|    gc->gray_list = obj->gcnext;
  985|  7.81k|    obj->gcnext = NULL;
  986|  7.81k|    gc_mark_children(mrb, gc, obj);
  987|  7.81k|  }
  988|  12.8k|}
gc.c:prepare_incremental_sweep:
 1053|  12.1k|{
 1054|       |  //  mrb_assert(gc->atomic_gray_list == NULL);
 1055|       |  //  mrb_assert(gc->gray_list == NULL);
 1056|  12.1k|  gc->state = MRB_GC_STATE_SWEEP;
 1057|  12.1k|  gc->sweeps = NULL;
 1058|  12.1k|  gc->live_after_mark = gc->live;
 1059|  12.1k|}
gc.c:incremental_sweep_phase:
 1063|  24.3k|{
 1064|  24.3k|  mrb_heap_page *prev = gc->sweeps;
 1065|  24.3k|  mrb_heap_page *page = prev ? prev->next : gc->heaps;
  ------------------
  |  Branch (1065:25): [True: 12.1k, False: 12.1k]
  ------------------
 1066|  24.3k|  size_t tried_sweep = 0;
 1067|       |
 1068|  38.4k|  while (page && (tried_sweep < limit)) {
  ------------------
  |  Branch (1068:10): [True: 14.1k, False: 24.2k]
  |  Branch (1068:18): [True: 14.1k, False: 25]
  ------------------
 1069|  14.1k|    RVALUE *p = objects(page);
  ------------------
  |  |  188|  14.1k|#define objects(p) ((RVALUE*)&p[1])
  ------------------
 1070|  14.1k|    RVALUE *e = p + MRB_HEAP_PAGE_SIZE;
  ------------------
  |  |  148|  14.1k|#define MRB_HEAP_PAGE_SIZE 1024
  ------------------
 1071|  14.1k|    size_t freed = 0;
 1072|  14.1k|    mrb_bool dead_slot = TRUE;
  ------------------
  |  |   54|  14.1k|#  define TRUE 1
  ------------------
 1073|       |
 1074|  14.1k|    if (is_minor_gc(gc) && page->old) {
  ------------------
  |  |  326|  28.3k|#define is_minor_gc(gc) (is_generational(gc) && !(gc)->full)
  |  |  ------------------
  |  |  |  |  324|  28.3k|#define is_generational(gc) ((gc)->generational)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (324:29): [True: 7.62k, False: 6.54k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (326:49): [True: 670, False: 6.95k]
  |  |  ------------------
  ------------------
  |  Branch (1074:28): [True: 0, False: 670]
  ------------------
 1075|       |      /* skip a slot which doesn't contain any young object */
 1076|      0|      p = e;
 1077|      0|      dead_slot = FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
 1078|      0|    }
 1079|  14.5M|    while (p<e) {
  ------------------
  |  Branch (1079:12): [True: 14.5M, False: 14.1k]
  ------------------
 1080|  14.5M|      if (is_dead(gc, &p->as.basic)) {
  ------------------
  |  |  182|  14.5M|#define is_dead(s, o) (((o)->color & other_white_part(s) & GC_WHITES) || (o)->tt == MRB_TT_FREE)
  |  |  ------------------
  |  |  |  |  181|  14.5M|#define other_white_part(s) ((s)->current_white_part ^ GC_WHITES)
  |  |  |  |  ------------------
  |  |  |  |  |  |  168|  14.5M|#define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  164|  14.5M|#define GC_WHITE_A 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  165|  14.5M|#define GC_WHITE_B 2
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define is_dead(s, o) (((o)->color & other_white_part(s) & GC_WHITES) || (o)->tt == MRB_TT_FREE)
  |  |  ------------------
  |  |  |  |  168|  14.5M|#define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  ------------------
  |  |  |  |  |  |  164|  14.5M|#define GC_WHITE_A 1
  |  |  |  |  ------------------
  |  |  |  |               #define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
  |  |  |  |  ------------------
  |  |  |  |  |  |  165|  14.5M|#define GC_WHITE_B 2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (182:24): [True: 1.38M, False: 13.1M]
  |  |  |  Branch (182:74): [True: 3.27M, False: 9.84M]
  |  |  ------------------
  ------------------
 1081|  4.65M|        if (p->as.basic.tt != MRB_TT_FREE) {
  ------------------
  |  Branch (1081:13): [True: 465k, False: 4.19M]
  ------------------
 1082|   465k|          obj_free(mrb, &p->as.basic, FALSE);
  ------------------
  |  |   51|   465k|#  define FALSE 0
  ------------------
 1083|   465k|          if (p->as.basic.tt == MRB_TT_FREE) {
  ------------------
  |  Branch (1083:15): [True: 465k, False: 0]
  ------------------
 1084|   465k|            p->as.free.next = page->freelist;
 1085|   465k|            page->freelist = (struct RBasic*)p;
 1086|   465k|            freed++;
 1087|   465k|          }
 1088|      0|          else {
 1089|      0|            dead_slot = FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
 1090|      0|          }
 1091|   465k|        }
 1092|  4.65M|      }
 1093|  9.84M|      else {
 1094|  9.84M|        if (!is_generational(gc))
  ------------------
  |  |  324|  9.84M|#define is_generational(gc) ((gc)->generational)
  ------------------
  |  Branch (1094:13): [True: 4.90M, False: 4.94M]
  ------------------
 1095|  4.90M|          paint_partial_white(gc, &p->as.basic); /* next gc target */
  ------------------
  |  |  175|  4.90M|#define paint_partial_white(s, o) ((o)->color = (s)->current_white_part)
  ------------------
 1096|  9.84M|        dead_slot = FALSE;
  ------------------
  |  |   51|  9.84M|#  define FALSE 0
  ------------------
 1097|  9.84M|      }
 1098|  14.5M|      p++;
 1099|  14.5M|    }
 1100|       |
 1101|       |    /* free dead slot */
 1102|  14.1k|    if (dead_slot) {
  ------------------
  |  Branch (1102:9): [True: 361, False: 13.8k]
  ------------------
 1103|    361|      mrb_heap_page *next = page->next;
 1104|       |
 1105|    361|      if (prev) prev->next = next;
  ------------------
  |  Branch (1105:11): [True: 25, False: 336]
  ------------------
 1106|    361|      if (gc->heaps == page)
  ------------------
  |  Branch (1106:11): [True: 336, False: 25]
  ------------------
 1107|    336|        gc->heaps = page->next;
 1108|       |
 1109|    361|      mrb_free(mrb, page);
 1110|    361|      page = next;
 1111|    361|    }
 1112|  13.8k|    else {
 1113|  13.8k|      if (page->freelist == NULL && is_minor_gc(gc))
  ------------------
  |  |  326|    450|#define is_minor_gc(gc) (is_generational(gc) && !(gc)->full)
  |  |  ------------------
  |  |  |  |  324|    900|#define is_generational(gc) ((gc)->generational)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (324:29): [True: 94, False: 356]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (326:49): [True: 55, False: 39]
  |  |  ------------------
  ------------------
  |  Branch (1113:11): [True: 450, False: 13.3k]
  ------------------
 1114|     55|        page->old = TRUE;
  ------------------
  |  |   54|     55|#  define TRUE 1
  ------------------
 1115|  13.7k|      else
 1116|  13.7k|        page->old = FALSE;
  ------------------
  |  |   51|  13.7k|#  define FALSE 0
  ------------------
 1117|  13.8k|      prev = page;
 1118|  13.8k|      page = page->next;
 1119|  13.8k|    }
 1120|  14.1k|    tried_sweep += MRB_HEAP_PAGE_SIZE;
  ------------------
  |  |  148|  14.1k|#define MRB_HEAP_PAGE_SIZE 1024
  ------------------
 1121|  14.1k|    gc->live -= freed;
 1122|  14.1k|    gc->live_after_mark -= freed;
 1123|  14.1k|  }
 1124|  24.3k|  gc->sweeps = prev;
 1125|       |
 1126|       |  /* rebuild free_heaps link */
 1127|  24.3k|  gc->free_heaps = NULL;
 1128|  52.0k|  for (mrb_heap_page *p = gc->heaps; p; p=p->next) {
  ------------------
  |  Branch (1128:38): [True: 27.7k, False: 24.3k]
  ------------------
 1129|  27.7k|    if (p->freelist) {
  ------------------
  |  Branch (1129:9): [True: 26.7k, False: 1.05k]
  ------------------
 1130|  26.7k|      p->free_next = gc->free_heaps;
 1131|  26.7k|      gc->free_heaps = p;
 1132|  26.7k|    }
 1133|  27.7k|  }
 1134|       |
 1135|  24.3k|  return tried_sweep;
 1136|  24.3k|}
gc.c:incremental_gc_step:
 1180|    550|{
 1181|    550|  size_t limit = 0, result = 0;
 1182|    550|  limit = (GC_STEP_SIZE/100) * gc->step_ratio;
  ------------------
  |  |  160|    550|#define GC_STEP_SIZE 1024
  ------------------
 1183|  2.59k|  while (result < limit) {
  ------------------
  |  Branch (1183:10): [True: 2.52k, False: 62]
  ------------------
 1184|  2.52k|    result += incremental_gc(mrb, gc, limit);
 1185|  2.52k|    if (gc->state == MRB_GC_STATE_ROOT)
  ------------------
  |  Branch (1185:9): [True: 488, False: 2.04k]
  ------------------
 1186|    488|      break;
 1187|  2.52k|  }
 1188|       |
 1189|    550|  gc->threshold = gc->live + GC_STEP_SIZE;
  ------------------
  |  |  160|    550|#define GC_STEP_SIZE 1024
  ------------------
 1190|    550|}
gc.c:clear_all_old:
 1194|  5.71k|{
 1195|  5.71k|  mrb_assert(is_generational(gc));
  ------------------
  |  |   68|  5.71k|#define mrb_assert(p) ((void)0)
  ------------------
 1196|  5.71k|  if (gc->full) {
  ------------------
  |  Branch (1196:7): [True: 79, False: 5.63k]
  ------------------
 1197|       |    /* finish the half baked GC */
 1198|     79|    incremental_gc_finish(mrb, gc);
 1199|     79|  }
 1200|       |  /* Sweep the dead objects, then reset all the live objects
 1201|       |   * (including all the old objects, of course) to white. */
 1202|  5.71k|  gc->generational = FALSE;
  ------------------
  |  |   51|  5.71k|#  define FALSE 0
  ------------------
 1203|  5.71k|  prepare_incremental_sweep(mrb, gc);
 1204|  5.71k|  incremental_gc_finish(mrb, gc);
 1205|  5.71k|  gc->generational = TRUE;
  ------------------
  |  |   54|  5.71k|#  define TRUE 1
  ------------------
 1206|       |  /* The gray objects have already been painted as white */
 1207|  5.71k|  gc->atomic_gray_list = gc->gray_list = NULL;
 1208|  5.71k|}
gc.c:gc_each_objects:
 1522|  5.54k|{
 1523|  5.54k|  mrb_heap_page* page;
 1524|       |
 1525|  5.54k|  page = gc->heaps;
 1526|  11.4k|  while (page != NULL) {
  ------------------
  |  Branch (1526:10): [True: 5.89k, False: 5.54k]
  ------------------
 1527|  5.89k|    RVALUE *p;
 1528|       |
 1529|  5.89k|    p = objects(page);
  ------------------
  |  |  188|  5.89k|#define objects(p) ((RVALUE*)&p[1])
  ------------------
 1530|  6.03M|    for (int i=0; i < MRB_HEAP_PAGE_SIZE; i++) {
  ------------------
  |  |  148|  6.03M|#define MRB_HEAP_PAGE_SIZE 1024
  ------------------
  |  Branch (1530:19): [True: 6.03M, False: 5.89k]
  ------------------
 1531|  6.03M|      if ((*callback)(mrb, &p[i].as.basic, data) == MRB_EACH_OBJ_BREAK)
  ------------------
  |  |   21|  6.03M|#define MRB_EACH_OBJ_BREAK 1
  ------------------
  |  Branch (1531:11): [True: 0, False: 6.03M]
  ------------------
 1532|      0|        return;
 1533|  6.03M|    }
 1534|  5.89k|    page = page->next;
 1535|  5.89k|  }
 1536|  5.54k|}

mrb_gc_mark_hash:
 1077|  6.21k|{
 1078|  6.21k|  h_each(h, entry, {
  ------------------
  |  |  209|  6.21k|#define h_each(h, entry_var, code) do {                                       \
  |  |  210|  6.21k|  struct RHash *h__ = h;                                                      \
  |  |  211|  6.21k|  hash_entry *h_e_ea__;                                                       \
  |  |  212|  6.21k|  uint32_t h_e_size__;                                                        \
  |  |  213|  6.21k|  h_ar_p(h) ? (h_e_ea__ = ar_ea(h__), h_e_size__ = ar_size(h__)) :            \
  |  |  ------------------
  |  |  |  |  286|  6.21k|#define h_ar_p(h) (!h_ht_p(h))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (286:19): [True: 6.14k, False: 61]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  6.21k|              (h_e_ea__ = ht_ea(h__), h_e_size__ = ht_size(h__));             \
  |  |  215|  6.21k|  ea_each(h_e_ea__, h_e_size__, entry_var, code);                             \
  |  |  ------------------
  |  |  |  |  178|  6.21k|#define ea_each(ea, size, entry_var, code) do {                               \
  |  |  |  |  179|  6.21k|  hash_entry *entry_var = ea;                                                 \
  |  |  |  |  180|  6.21k|  uint32_t size__ = size;                                                     \
  |  |  |  |  181|  9.04k|  for (; 0 < size__; entry_var++) {                                           \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (181:10): [True: 2.83k, False: 6.21k]
  |  |  |  |  ------------------
  |  |  |  |  182|  2.83k|    if (entry_deleted_p(entry_var)) continue;                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (182:9): [True: 0, False: 2.83k]
  |  |  |  |  ------------------
  |  |  |  |  183|  2.83k|    --size__;                                                                 \
  |  |  |  |  184|  25.7k|    code;                                                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (184:5): [True: 2.07k, False: 765]
  |  |  |  |  |  Branch (184:5): [True: 0, False: 765]
  |  |  |  |  |  Branch (184:5): [Folded - Ignored]
  |  |  |  |  |  Branch (184:5): [True: 2.07k, False: 765]
  |  |  |  |  |  Branch (184:5): [True: 0, False: 765]
  |  |  |  |  |  Branch (184:5): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |  185|  2.83k|  }                                                                           \
  |  |  |  |  186|  6.21k|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (186:10): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  6.21k|} while (0)
  |  |  ------------------
  |  |  |  Branch (216:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1079|  6.21k|    mrb_gc_mark_value(mrb, entry->key);
 1080|  6.21k|    mrb_gc_mark_value(mrb, entry->val);
 1081|  6.21k|  });
 1082|  6.21k|}
mrb_gc_mark_hash_size:
 1086|  6.20k|{
 1087|  6.20k|  return h_size(h) * 2;
 1088|  6.20k|}
mrb_gc_free_hash:
 1092|  37.2k|{
 1093|  37.2k|  h_free_table(mrb, h);
 1094|  37.2k|}
mrb_hash_new:
 1122|  36.3k|{
 1123|  36.3k|  struct RHash *h = h_alloc(mrb);
 1124|  36.3k|  return mrb_obj_value(h);
 1125|  36.3k|}
mrb_hash_new_capa:
 1133|  32.6k|{
 1134|  32.6k|  if (capa < 0 || EA_MAX_CAPA < capa) {
  ------------------
  |  |   60|  32.6k|#define EA_MAX_CAPA U32(lesser(IB_MAX_CAPA - EA_N_RESERVED_INDICES, MRB_INT_MAX))
  |  |  ------------------
  |  |  |  |  285|  65.3k|#define U32(v) ((uint32_t)(v))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:28): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1134:7): [True: 0, False: 32.6k]
  |  Branch (1134:19): [True: 0, False: 32.6k]
  ------------------
 1135|      0|    mrb_raise(mrb, E_ARGUMENT_ERROR, "hash too big");
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1136|      0|    return mrb_nil_value();  /* not reached */
 1137|      0|  }
 1138|  32.6k|  else if (capa == 0) {
  ------------------
  |  Branch (1138:12): [True: 31.7k, False: 957]
  ------------------
 1139|  31.7k|    return mrb_hash_new(mrb);
 1140|  31.7k|  }
 1141|    957|  else {
 1142|    957|    uint32_t size = U32(capa);
  ------------------
  |  |  285|    957|#define U32(v) ((uint32_t)(v))
  ------------------
 1143|    957|    struct RHash *h = h_alloc(mrb);
 1144|    957|    hash_entry *ea = ea_resize(mrb, NULL, size);
 1145|    957|    if (size <= AR_MAX_SIZE) {
  ------------------
  |  |   70|    957|#define AR_MAX_SIZE 16
  ------------------
  |  Branch (1145:9): [True: 776, False: 181]
  ------------------
 1146|    776|      ar_init(h, 0, ea, size, 0);
 1147|    776|    }
 1148|    181|    else {
 1149|    181|      ht_init(mrb, h, 0, ea, size, NULL, ib_bit_for(size));
 1150|    181|    }
 1151|    957|    return mrb_obj_value(h);
 1152|    957|  }
 1153|  32.6k|}
mrb_hash_set:
 1247|   145k|{
 1248|   145k|  hash_modify(mrb, hash);
 1249|   145k|  key = h_key_for(mrb, key);
 1250|   145k|  h_set(mrb, mrb_hash_ptr(hash), key, val);
  ------------------
  |  |   35|   145k|#define mrb_hash_ptr(v)    ((struct RHash*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|   145k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1251|   145k|  mrb_field_write_barrier_value(mrb, mrb_basic_ptr(hash), key);
  ------------------
  |  | 1317|   145k|#define mrb_field_write_barrier_value(mrb, obj, val) do{\
  |  | 1318|   145k|  if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |  148|   145k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|   291k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (148:29): [True: 80.7k, False: 65.1k]
  |  |  |  |  |  Branch (148:63): [True: 0, False: 65.1k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |   22|  65.1k|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|  65.1k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1319|   145k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1319:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1252|   145k|  mrb_field_write_barrier_value(mrb, mrb_basic_ptr(hash), val);
  ------------------
  |  | 1317|   145k|#define mrb_field_write_barrier_value(mrb, obj, val) do{\
  |  | 1318|   145k|  if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |  148|   145k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|   291k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (148:29): [True: 80.7k, False: 65.1k]
  |  |  |  |  |  Branch (148:63): [True: 0, False: 65.1k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |   22|  65.1k|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|  65.1k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1319|   145k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1319:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1253|   145k|}
mrb_hash_clear:
 1539|    957|{
 1540|    957|  hash_modify(mrb, hash);
 1541|    957|  h_clear(mrb, mrb_hash_ptr(hash));
  ------------------
  |  |   35|    957|#define mrb_hash_ptr(v)    ((struct RHash*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|    957|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1542|    957|  return hash;
 1543|    957|}
mrb_hash_size:
 1582|  7.44k|{
 1583|  7.44k|  return (mrb_int)h_size(mrb_hash_ptr(hash));
  ------------------
  |  |   35|  7.44k|#define mrb_hash_ptr(v)    ((struct RHash*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  7.44k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1584|  7.44k|}
mrb_hash_empty_p:
 1609|  6.02k|{
 1610|  6.02k|  return h_size(mrb_hash_ptr(self)) == 0;
  ------------------
  |  |   35|  6.02k|#define mrb_hash_ptr(v)    ((struct RHash*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  6.02k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1611|  6.02k|}
mrb_init_hash:
 1865|    476|{
 1866|    476|  struct RClass *h;
 1867|       |
 1868|    476|  mrb->hash_class = h = mrb_define_class(mrb, "Hash", mrb->object_class);              /* 15.2.13 */
 1869|    476|  MRB_SET_INSTANCE_TT(h, MRB_TT_HASH);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
 1870|       |
 1871|    476|  mrb_define_method(mrb, h, "[]",              mrb_hash_aget,        MRB_ARGS_REQ(1)); /* 15.2.13.4.2  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1872|    476|  mrb_define_method(mrb, h, "[]=",             mrb_hash_aset,        MRB_ARGS_REQ(2)); /* 15.2.13.4.3  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1873|    476|  mrb_define_method(mrb, h, "clear",           mrb_hash_clear,       MRB_ARGS_NONE()); /* 15.2.13.4.4  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1874|    476|  mrb_define_method(mrb, h, "default",         mrb_hash_default,     MRB_ARGS_OPT(1)); /* 15.2.13.4.5  */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 1875|    476|  mrb_define_method(mrb, h, "default=",        mrb_hash_set_default, MRB_ARGS_REQ(1)); /* 15.2.13.4.6  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1876|    476|  mrb_define_method(mrb, h, "default_proc",    mrb_hash_default_proc,MRB_ARGS_NONE()); /* 15.2.13.4.7  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1877|    476|  mrb_define_method(mrb, h, "default_proc=",   mrb_hash_set_default_proc,MRB_ARGS_REQ(1)); /* 15.2.13.4.7  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1878|    476|  mrb_define_method(mrb, h, "__delete",        mrb_hash_delete,      MRB_ARGS_REQ(1)); /* core of 15.2.13.4.8  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1879|    476|  mrb_define_method(mrb, h, "empty?",          mrb_hash_empty_m,     MRB_ARGS_NONE()); /* 15.2.13.4.12 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1880|    476|  mrb_define_method(mrb, h, "has_key?",        mrb_hash_has_key,     MRB_ARGS_REQ(1)); /* 15.2.13.4.13 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1881|    476|  mrb_define_method(mrb, h, "has_value?",      mrb_hash_has_value,   MRB_ARGS_REQ(1)); /* 15.2.13.4.14 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1882|    476|  mrb_define_method(mrb, h, "include?",        mrb_hash_has_key,     MRB_ARGS_REQ(1)); /* 15.2.13.4.15 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1883|    476|  mrb_define_method(mrb, h, "initialize",      mrb_hash_init,        MRB_ARGS_OPT(1)|MRB_ARGS_BLOCK()); /* 15.2.13.4.16 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
                mrb_define_method(mrb, h, "initialize",      mrb_hash_init,        MRB_ARGS_OPT(1)|MRB_ARGS_BLOCK()); /* 15.2.13.4.16 */
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
 1884|    476|  mrb_define_method(mrb, h, "initialize_copy", mrb_hash_init_copy,   MRB_ARGS_REQ(1)); /* 15.2.13.4.17 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1885|    476|  mrb_define_method(mrb, h, "key?",            mrb_hash_has_key,     MRB_ARGS_REQ(1)); /* 15.2.13.4.18 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1886|    476|  mrb_define_method(mrb, h, "keys",            mrb_hash_keys,        MRB_ARGS_NONE()); /* 15.2.13.4.19 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1887|    476|  mrb_define_method(mrb, h, "length",          mrb_hash_size_m,      MRB_ARGS_NONE()); /* 15.2.13.4.20 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1888|    476|  mrb_define_method(mrb, h, "member?",         mrb_hash_has_key,     MRB_ARGS_REQ(1)); /* 15.2.13.4.21 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1889|    476|  mrb_define_method(mrb, h, "replace",         mrb_hash_init_copy,   MRB_ARGS_REQ(1)); /* 15.2.13.4.23 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1890|    476|  mrb_define_method(mrb, h, "shift",           mrb_hash_shift,       MRB_ARGS_NONE()); /* 15.2.13.4.24 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1891|    476|  mrb_define_method(mrb, h, "size",            mrb_hash_size_m,      MRB_ARGS_NONE()); /* 15.2.13.4.25 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1892|    476|  mrb_define_method(mrb, h, "store",           mrb_hash_aset,        MRB_ARGS_REQ(2)); /* 15.2.13.4.26 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1893|    476|  mrb_define_method(mrb, h, "value?",          mrb_hash_has_value,   MRB_ARGS_REQ(1)); /* 15.2.13.4.27 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1894|    476|  mrb_define_method(mrb, h, "values",          mrb_hash_values,      MRB_ARGS_NONE()); /* 15.2.13.4.28 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1895|    476|  mrb_define_method(mrb, h, "to_s",            mrb_hash_to_s,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1896|    476|  mrb_define_method(mrb, h, "inspect",         mrb_hash_to_s,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1897|    476|  mrb_define_method(mrb, h, "rehash",          mrb_hash_rehash,      MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1898|    476|  mrb_define_method(mrb, h, "__merge",         mrb_hash_merge_m,     MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 1899|    476|  mrb_define_method(mrb, h, "__compact",       mrb_hash_compact,     MRB_ARGS_NONE()); /* implementation of Hash#compact! */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 1900|    476|}
hash.c:h_ht_p:
  143|   190k|  MRB_INLINE mrb_bool h_##n_##_p(const struct RHash *h) {                     \
  144|   190k|    return (h->flags & MRB_HASH_##k_) == MRB_HASH_##k_;                       \
  145|   190k|  }
hash.c:ar_ea:
  110|   223k|  MRB_INLINE t_ c_##_##n_(const struct RHash *h) {return h->p_;}
hash.c:ar_size:
  110|  87.7k|  MRB_INLINE t_ c_##_##n_(const struct RHash *h) {return h->p_;}
hash.c:ht_ea:
  110|   136k|  MRB_INLINE t_ c_##_##n_(const struct RHash *h) {return h->p_;}
hash.c:ht_size:
  110|  68.2k|  MRB_INLINE t_ c_##_##n_(const struct RHash *h) {return h->p_;}
hash.c:entry_deleted_p:
  387|   552k|{
  388|   552k|  return mrb_undef_p(entry->key);
  ------------------
  |  |  173|   552k|#define mrb_undef_p(o) ((o).w == MRB_Qundef)
  ------------------
  389|   552k|}
hash.c:h_size:
  110|  19.6k|  MRB_INLINE t_ c_##_##n_(const struct RHash *h) {return h->p_;}
hash.c:h_free_table:
  993|  38.2k|{
  994|  38.2k|  (h_ar_p(h) ? ar_free : ht_free)(mrb, h);
  ------------------
  |  |  286|  38.2k|#define h_ar_p(h) (!h_ht_p(h))
  |  |  ------------------
  |  |  |  Branch (286:19): [True: 37.5k, False: 648]
  |  |  ------------------
  ------------------
  995|  38.2k|}
hash.c:ar_free:
  489|  37.5k|{
  490|  37.5k|  mrb_free(mrb, ar_ea(h));
  491|  37.5k|}
hash.c:ht_free:
  799|    648|{
  800|    648|  mrb_free(mrb, ht_ea(h));
  801|    648|  mrb_free(mrb, h_ht(h));
  802|    648|}
hash.c:h_ht:
  110|    653|  MRB_INLINE t_ c_##_##n_(const struct RHash *h) {return h->p_;}
hash.c:ar_ea_capa:
  110|  81.5k|  MRB_INLINE t_ c_##_##n_(const struct RHash *h) {return h->p_;}
hash.c:ht_ea_capa:
  110|  3.40k|  MRB_INLINE t_ c_##_##n_(const struct RHash *h) {return h->p_;}
hash.c:ib_byte_size_for:
  758|    653|{
  759|    653|  mrb_assert(IB_INIT_BIT <= ib_bit);
  ------------------
  |  |   68|    653|#define mrb_assert(p) ((void)0)
  ------------------
  760|    653|  uint32_t ary_size = IB_INIT_BIT == 4 ?
  ------------------
  |  |   63|    653|#define IB_INIT_BIT (                                                         \
  |  |   64|    653|  ib_upper_bound_for(32) <= AR_MAX_SIZE ? 6 :                                 \
  |  |  ------------------
  |  |  |  |   70|    653|#define AR_MAX_SIZE 16
  |  |  ------------------
  |  |  |  Branch (64:3): [True: 0, False: 653]
  |  |  ------------------
  |  |   65|    653|  ib_upper_bound_for(16) <= AR_MAX_SIZE ? 5 :                                 \
  |  |  ------------------
  |  |  |  |   70|    653|#define AR_MAX_SIZE 16
  |  |  ------------------
  |  |  |  Branch (65:3): [True: 653, False: 0]
  |  |  ------------------
  |  |   66|    653|  4                                                                           \
  |  |   67|    653|)
  ------------------
  |  Branch (760:23): [True: 0, False: 653]
  ------------------
  761|      0|    ib_bit_to_capa(ib_bit) * 2 / IB_TYPE_BIT * ib_bit / 2 :
  ------------------
  |  |   62|      0|#define IB_TYPE_BIT 32
  ------------------
  762|    653|    ib_bit_to_capa(ib_bit) / IB_TYPE_BIT * ib_bit;
  ------------------
  |  |   62|    653|#define IB_TYPE_BIT 32
  ------------------
  763|    653|  return U32(sizeof(uint32_t) * ary_size);
  ------------------
  |  |  285|    653|#define U32(v) ((uint32_t)(v))
  ------------------
  764|    653|}
hash.c:ib_upper_bound_for:
  744|  67.1k|{
  745|  67.1k|  return (capa >> 2) | (capa >> 1);  /* 3/4 */
  746|  67.1k|}
hash.c:ib_bit_to_capa:
  738|   137k|{
  739|   137k|  return U32(1) << bit;
  ------------------
  |  |  285|   137k|#define U32(v) ((uint32_t)(v))
  ------------------
  740|   137k|}
hash.c:ib_bit:
  117|   137k|  MRB_INLINE t_ c_##_##n_(const struct RHash *h) {                            \
  118|   137k|    return (t_)((h->flags & MRB_HASH_##k_##_MASK) >> MRB_HASH_##k_##_SHIFT);  \
  119|   137k|  }
hash.c:h_alloc:
  981|  37.2k|{
  982|  37.2k|  return MRB_OBJ_ALLOC(mrb, MRB_TT_HASH, mrb->hash_class);
  ------------------
  |  | 1200|  37.2k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
  983|  37.2k|}
hash.c:ea_resize:
  418|  18.0k|{
  419|  18.0k|  return (hash_entry*)mrb_realloc(mrb, ea, sizeof(hash_entry) * capa);
  420|  18.0k|}
hash.c:ar_init:
  479|  1.73k|{
  480|  1.73k|  h_ar_on(h);
  ------------------
  |  |  287|  1.73k|#define h_ar_on(h) h_ht_off(h)
  ------------------
  481|  1.73k|  ar_set_size(h, size);
  482|  1.73k|  ar_set_ea(h, ea);
  483|  1.73k|  ar_set_ea_capa(h, ea_capa);
  484|  1.73k|  ar_set_ea_n_used(h, ea_n_used);
  485|  1.73k|}
hash.c:h_ht_off:
  140|  1.73k|  MRB_INLINE void h_##n_##_off(struct RHash *h) {                             \
  141|  1.73k|    h->flags &= ~MRB_HASH_##k_;                                               \
  142|  1.73k|  }                                                                           \
hash.c:ar_set_size:
  112|  82.8k|  MRB_INLINE void c_##_set_##n_(struct RHash *h, t_ v) {h->p_ = v;}
hash.c:ar_set_ea:
  112|  18.3k|  MRB_INLINE void c_##_set_##n_(struct RHash *h, t_ v) {h->p_ = v;}
hash.c:ar_set_ea_capa:
  112|  18.3k|  MRB_INLINE void c_##_set_##n_(struct RHash *h, t_ v) {h->p_ = v;}
hash.c:ar_set_ea_n_used:
  112|  82.8k|  MRB_INLINE void c_##_set_##n_(struct RHash *h, t_ v) {h->p_ = v;}
hash.c:ht_init:
  784|    653|{
  785|    653|  size_t ib_byte_size = ib_byte_size_for(ib_bit);
  786|    653|  size_t ht_byte_size = sizeof(hash_table) + ib_byte_size;
  787|    653|  ht = (hash_table*)mrb_realloc(mrb, ht, ht_byte_size);
  788|    653|  h_ht_on(h);
  789|    653|  h_set_ht(h, ht);
  790|    653|  ht_set_size(h, size);
  791|    653|  ht_set_ea(h, ea);
  792|    653|  ht_set_ea_capa(h, ea_capa);
  793|    653|  ht_set_ea_n_used(h, size);
  794|    653|  ib_init(mrb, h, ib_bit, ib_byte_size);
  795|    653|}
hash.c:h_ht_on:
  137|    653|  MRB_INLINE void h_##n_##_on(struct RHash *h) {                              \
  138|    653|    h->flags |= MRB_HASH_##k_;                                                \
  139|    653|  }                                                                           \
hash.c:h_set_ht:
  112|    653|  MRB_INLINE void c_##_set_##n_(struct RHash *h, t_ v) {h->p_ = v;}
hash.c:ht_set_size:
  112|  4.05k|  MRB_INLINE void c_##_set_##n_(struct RHash *h, t_ v) {h->p_ = v;}
hash.c:ht_set_ea:
  112|  1.13k|  MRB_INLINE void c_##_set_##n_(struct RHash *h, t_ v) {h->p_ = v;}
hash.c:ht_set_ea_capa:
  112|  1.13k|  MRB_INLINE void c_##_set_##n_(struct RHash *h, t_ v) {h->p_ = v;}
hash.c:ht_set_ea_n_used:
  112|  4.05k|  MRB_INLINE void c_##_set_##n_(struct RHash *h, t_ v) {h->p_ = v;}
hash.c:ib_init:
  768|    653|{
  769|    653|  hash_entry *ea = ht_ea(h);
  770|    653|  memset(ht_ib(h), 0xff, ib_byte_size);
  771|    653|  ib_set_bit(h, ib_bit);
  772|    653|  ea_each_used(ea, ht_ea_n_used(h), entry, {
  ------------------
  |  |  171|    653|#define ea_each_used(ea, n_used, entry_var, code) do {                        \
  |  |  172|    653|  hash_entry *entry_var = ea, *ea_end__ = entry_var + (n_used);               \
  |  |  173|  8.34k|  for (; entry_var < ea_end__; entry_var++) {                                 \
  |  |  ------------------
  |  |  |  Branch (173:10): [True: 7.68k, False: 653]
  |  |  ------------------
  |  |  174|   206k|    code;                                                                     \
  |  |  ------------------
  |  |  |  Branch (174:5): [True: 56.0k, False: 7.68k]
  |  |  |  Branch (174:5): [Folded - Ignored]
  |  |  ------------------
  |  |  175|  7.68k|  }                                                                           \
  |  |  176|    653|} while (0)
  |  |  ------------------
  |  |  |  Branch (176:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  773|    653|    ib_cycle_by_key(mrb, h, entry->key, it, {
  774|    653|      if (!ib_it_empty_p(it)) continue;
  775|    653|      ib_it_set(it, U32(entry - ea));
  776|    653|      break;
  777|    653|    });
  778|    653|  });
  779|    653|}
hash.c:ht_ib:
  110|   170k|  MRB_INLINE t_ c_##_##n_(const struct RHash *h) {return h->p_;}
hash.c:ib_set_bit:
  121|    653|  MRB_INLINE void c_##_set_##n_(struct RHash *h, t_ v) {                      \
  122|    653|    h->flags &= ~MRB_HASH_##k_##_MASK;                                        \
  123|    653|    h->flags |= v << MRB_HASH_##k_##_SHIFT;                                   \
  124|    653|  }
hash.c:ht_ea_n_used:
  110|  68.7k|  MRB_INLINE t_ c_##_##n_(const struct RHash *h) {return h->p_;}
hash.c:ib_it_init:
  641|  72.4k|{
  642|  72.4k|  it->h = h;
  643|  72.4k|  it->bit = ib_bit(h);
  644|  72.4k|  it->mask = ib_bit_to_capa(it->bit) - 1;
  645|  72.4k|  it->pos = ib_it_pos_for(it, obj_hash_code(mrb, key, h));
  646|  72.4k|  it->step = 0;
  647|  72.4k|}
hash.c:ib_it_pos_for:
  605|   209k|{
  606|   209k|  return v & it->mask;
  607|   209k|}
hash.c:obj_hash_code:
  320|  72.4k|{
  321|  72.4k|  enum mrb_vtype tt = mrb_type(key);
  322|  72.4k|  uint32_t hash_code;
  323|  72.4k|  mrb_value hash_code_obj;
  324|  72.4k|  switch (tt) {
  325|  64.4k|  case MRB_TT_STRING:
  ------------------
  |  Branch (325:3): [True: 64.4k, False: 7.93k]
  ------------------
  326|  64.4k|    hash_code = mrb_str_hash(mrb, key);
  327|  64.4k|    break;
  328|      0|  case MRB_TT_TRUE:
  ------------------
  |  Branch (328:3): [True: 0, False: 72.4k]
  ------------------
  329|      0|  case MRB_TT_FALSE:
  ------------------
  |  Branch (329:3): [True: 0, False: 72.4k]
  ------------------
  330|  7.93k|  case MRB_TT_SYMBOL:
  ------------------
  |  Branch (330:3): [True: 7.93k, False: 64.4k]
  ------------------
  331|  7.93k|    hash_code = U32(mrb_fixnum(key));
  ------------------
  |  |  285|  7.93k|#define U32(v) ((uint32_t)(v))
  ------------------
  332|  7.93k|    break;
  333|      0|  case MRB_TT_INTEGER:
  ------------------
  |  Branch (333:3): [True: 0, False: 72.4k]
  ------------------
  334|      0|    if (mrb_fixnum_p(key)) {
  ------------------
  |  |  170|      0|#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
  |  |  ------------------
  |  |  |  |   76|      0|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  335|      0|      hash_code = U32(mrb_fixnum(key));
  ------------------
  |  |  285|      0|#define U32(v) ((uint32_t)(v))
  ------------------
  336|      0|      break;
  337|      0|    }
  338|      0|#ifndef MRB_NO_FLOAT
  339|       |    /* fall through */
  340|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (340:3): [True: 0, False: 72.4k]
  ------------------
  341|      0|#endif
  342|      0|    hash_code = U32(mrb_obj_id(key));
  ------------------
  |  |  285|      0|#define U32(v) ((uint32_t)(v))
  ------------------
  343|      0|    break;
  344|      0|  default:
  ------------------
  |  Branch (344:3): [True: 0, False: 72.4k]
  ------------------
  345|      0|    h_check_modified(mrb, h, {
  ------------------
  |  |  261|      0|#define h_check_modified(mrb, h, code) do {                                     \
  |  |  262|      0|  struct RHash *h__ = h;                                                        \
  |  |  263|      0|  uint32_t mask__ = MRB_HASH_HT|MRB_HASH_IB_BIT_MASK|MRB_HASH_AR_EA_CAPA_MASK;  \
  |  |  ------------------
  |  |  |  |  224|      0|#define MRB_HASH_HT                 (1 << (MRB_HASH_SIZE_FLAGS_SHIFT + 2))
  |  |  |  |  ------------------
  |  |  |  |  |  |  218|      0|#define MRB_HASH_SIZE_FLAGS_SHIFT   (MRB_HASH_AR_EA_CAPA_BIT * 2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  214|      0|#define MRB_HASH_AR_EA_CAPA_BIT     5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 uint32_t mask__ = MRB_HASH_HT|MRB_HASH_IB_BIT_MASK|MRB_HASH_AR_EA_CAPA_MASK;  \
  |  |  ------------------
  |  |  |  |  219|      0|#define MRB_HASH_IB_BIT_MASK        ((1 << MRB_HASH_IB_BIT_BIT) - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#define MRB_HASH_IB_BIT_BIT         5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 uint32_t mask__ = MRB_HASH_HT|MRB_HASH_IB_BIT_MASK|MRB_HASH_AR_EA_CAPA_MASK;  \
  |  |  ------------------
  |  |  |  |  220|      0|#define MRB_HASH_AR_EA_CAPA_MASK    ((1 << MRB_HASH_AR_EA_CAPA_BIT) - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  214|      0|#define MRB_HASH_AR_EA_CAPA_BIT     5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  264|      0|  uint32_t flags__ = h__->flags & mask__;                                       \
  |  |  265|      0|  void* tbl__ = (mrb_assert(h__->hsh.ht), h__->hsh.ht);                         \
  |  |  ------------------
  |  |  |  |   68|      0|#define mrb_assert(p) ((void)0)
  |  |  ------------------
  |  |  266|      0|  uint32_t ht_ea_capa__ = 0;                                                    \
  |  |  267|      0|  hash_entry *ht_ea__ = NULL;                                                   \
  |  |  268|      0|  if (H_CHECK_MODIFIED_USE_HT_EA_CAPA_FOR_AR || h_ht_p(h__)) {                  \
  |  |  ------------------
  |  |  |  |  233|      0|# define H_CHECK_MODIFIED_USE_HT_EA_CAPA_FOR_AR TRUE
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#  define TRUE 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (54:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (268:49): [True: 0, False: 0]
  |  |  ------------------
  |  |  269|      0|    ht_ea_capa__ = ht_ea_capa(h__);                                             \
  |  |  270|      0|  }                                                                             \
  |  |  271|      0|  if (H_CHECK_MODIFIED_USE_HT_EA_FOR_AR || h_ht_p(h__)) {                       \
  |  |  ------------------
  |  |  |  |  232|      0|# define H_CHECK_MODIFIED_USE_HT_EA_FOR_AR TRUE
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#  define TRUE 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (54:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (271:44): [True: 0, False: 0]
  |  |  ------------------
  |  |  272|      0|    ht_ea__ = ht_ea(h__);                                                       \
  |  |  273|      0|  }                                                                             \
  |  |  274|      0|  code;                                                                         \
  |  |  275|      0|  if (flags__ != (h__->flags & mask__) ||                                       \
  |  |  ------------------
  |  |  |  Branch (275:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  276|      0|      tbl__ != h__->hsh.ht ||                                                   \
  |  |  ------------------
  |  |  |  Branch (276:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  277|      0|      ((H_CHECK_MODIFIED_USE_HT_EA_CAPA_FOR_AR || h_ht_p(h__)) &&               \
  |  |  ------------------
  |  |  |  |  233|      0|# define H_CHECK_MODIFIED_USE_HT_EA_CAPA_FOR_AR TRUE
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#  define TRUE 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (54:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (277:51): [True: 0, False: 0]
  |  |  ------------------
  |  |  278|      0|       ht_ea_capa__ != ht_ea_capa(h__)) ||                                      \
  |  |  ------------------
  |  |  |  Branch (278:8): [True: 0, False: 0]
  |  |  ------------------
  |  |  279|      0|      ((H_CHECK_MODIFIED_USE_HT_EA_FOR_AR || h_ht_p(h__)) &&                    \
  |  |  ------------------
  |  |  |  |  232|      0|# define H_CHECK_MODIFIED_USE_HT_EA_FOR_AR TRUE
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#  define TRUE 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (54:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (279:46): [True: 0, False: 0]
  |  |  ------------------
  |  |  280|      0|       ht_ea__ != ht_ea(h__))) {                                                \
  |  |  ------------------
  |  |  |  Branch (280:8): [True: 0, False: 0]
  |  |  ------------------
  |  |  281|      0|    mrb_raise(mrb, E_RUNTIME_ERROR, "hash modified");                           \
  |  |  ------------------
  |  |  |  | 1374|      0|#define E_RUNTIME_ERROR      mrb_exc_get_id(mrb, MRB_ERROR_SYM(RuntimeError))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  282|      0|  }                                                                             \
  |  |  283|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (283:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  346|      0|      hash_code_obj = mrb_funcall_argv(mrb, key, MRB_SYM(hash), 0, NULL);
  347|      0|    });
  348|       |
  349|      0|    hash_code = U32(tt) ^ U32(mrb_integer(hash_code_obj));
  ------------------
  |  |  285|      0|#define U32(v) ((uint32_t)(v))
  ------------------
                  hash_code = U32(tt) ^ U32(mrb_integer(hash_code_obj));
  ------------------
  |  |  285|      0|#define U32(v) ((uint32_t)(v))
  ------------------
  350|      0|    break;
  351|  72.4k|  }
  352|  72.4k|  return hash_code ^ (hash_code << 2) ^ (hash_code >> 2);
  353|  72.4k|}
hash.c:ib_it_next:
  651|   136k|{
  652|       |  /*
  653|       |   * [IB image]
  654|       |   *
  655|       |   *                  ary_index(1) --.
  656|       |   *                                  \          .-- shift1(3)  .-- shift2(29)
  657|       |   *                     pos(6) --.    \        /              /
  658|       |   *  View    |                    \    \    <-o-> <----------o---------->
  659|       |   * -------- +---------------------\----\--+-----------------------------+-----
  660|       |   *  array   |               0      `--. `-|--- o          1             | ...
  661|       |   *          +---------+---------+-----+\--+-----+---------+---------+---+-----
  662|       |   *  buckets |    0    |    1    | ... | o  6    |    7    |    8    |     ...
  663|       |   *          +---------+---------+-----+=========+---------+---------+---------
  664|       |   *  bit set |1 1 1 0 0|0 0 0 1 1| ... |0 1 0 1 1|0 1 1 1 0|0 1 0 1 0|     ...
  665|       |   *          +---------+---------+-----+========*+---------+---------+---------
  666|       |   *           <---o--->                          \
  667|       |   *                \                              `-- bit_pos(34)
  668|       |   *                 `-- bit(5)
  669|       |   */
  670|       |
  671|       |  /* Slide to handle as `capa == 32` to avoid 64-bit operations */
  672|   136k|  uint32_t slid_pos = it->pos & (IB_TYPE_BIT - 1);
  ------------------
  |  |   62|   136k|#define IB_TYPE_BIT 32
  ------------------
  673|   136k|  uint32_t slid_bit_pos = it->bit * (slid_pos + 1) - 1;
  674|   136k|  uint32_t slid_ary_index = slid_bit_pos / IB_TYPE_BIT;
  ------------------
  |  |   62|   136k|#define IB_TYPE_BIT 32
  ------------------
  675|   136k|  it->ary_index = slid_ary_index + it->pos / IB_TYPE_BIT * it->bit;
  ------------------
  |  |   62|   136k|#define IB_TYPE_BIT 32
  ------------------
  676|   136k|  it->shift2 = (slid_ary_index + 1) * IB_TYPE_BIT - slid_bit_pos - 1;
  ------------------
  |  |   62|   136k|#define IB_TYPE_BIT 32
  ------------------
  677|   136k|  it->ea_index = (ht_ib(it->h)[it->ary_index] >> it->shift2) & it->mask;
  678|   136k|  if (IB_TYPE_BIT - it->bit < it->shift2) {
  ------------------
  |  |   62|   136k|#define IB_TYPE_BIT 32
  ------------------
  |  Branch (678:7): [True: 8.29k, False: 128k]
  ------------------
  679|  8.29k|    it->shift1 = IB_TYPE_BIT - it->shift2;
  ------------------
  |  |   62|  8.29k|#define IB_TYPE_BIT 32
  ------------------
  680|  8.29k|    it->ea_index |= (ht_ib(it->h)[it->ary_index - 1] << it->shift1) & it->mask;
  681|  8.29k|  }
  682|   128k|  else {
  683|   128k|    it->shift1 = 0;
  684|   128k|  }
  685|   136k|  it->pos = ib_it_pos_for(it, it->pos + (++it->step));
  686|   136k|}
hash.c:ib_it_empty_p:
  623|  63.7k|{
  624|  63.7k|  return it->ea_index == ib_it_empty_value(it);
  625|  63.7k|}
hash.c:ib_it_empty_value:
  611|  63.7k|{
  612|  63.7k|  return it->mask;
  613|  63.7k|}
hash.c:ib_it_set:
  696|  11.0k|{
  697|  11.0k|  uint32_t mask, i;
  698|  11.0k|  it->ea_index = ea_index;
  699|  11.0k|  if (it->shift1) {
  ------------------
  |  Branch (699:7): [True: 1.50k, False: 9.57k]
  ------------------
  700|  1.50k|    i = it->ary_index - 1;
  701|  1.50k|    mask = it->mask >> it->shift1;
  702|  1.50k|    ht_ib(it->h)[i] = (ht_ib(it->h)[i] & ~mask) | (ea_index >> it->shift1);
  703|  1.50k|  }
  704|  11.0k|  i = it->ary_index;
  705|  11.0k|  mask = it->mask << it->shift2;
  706|  11.0k|  ht_ib(it->h)[i] = (ht_ib(it->h)[i] & ~mask) | (ea_index << it->shift2);
  707|  11.0k|}
hash.c:ib_bit_for:
  750|    181|{
  751|    181|  uint32_t capa = next_power2(size);
  752|    181|  if (capa != IB_MAX_CAPA && ib_upper_bound_for(capa) < size) capa *= 2;
  ------------------
  |  |   61|    362|#define IB_MAX_CAPA (U32(1) << IB_MAX_BIT)
  |  |  ------------------
  |  |  |  |  285|    181|#define U32(v) ((uint32_t)(v))
  |  |  ------------------
  |  |               #define IB_MAX_CAPA (U32(1) << IB_MAX_BIT)
  |  |  ------------------
  |  |  |  |   68|    181|#define IB_MAX_BIT (IB_TYPE_BIT - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|    181|#define IB_TYPE_BIT 32
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (752:7): [True: 181, False: 0]
  |  Branch (752:30): [True: 68, False: 113]
  ------------------
  753|    181|  return ib_capa_to_bit(capa);
  754|    181|}
hash.c:next_power2:
  303|    181|{
  304|    181|  mrb_assert(v != 0);
  ------------------
  |  |   68|    181|#define mrb_assert(p) ((void)0)
  ------------------
  305|    181|#ifdef __GNUC__
  306|    181|  return U32(1) << ((sizeof(unsigned) * CHAR_BIT) - __builtin_clz(v));
  ------------------
  |  |  285|    181|#define U32(v) ((uint32_t)(v))
  ------------------
  307|       |#else
  308|       |  v |= v >> 1;
  309|       |  v |= v >> 2;
  310|       |  v |= v >> 4;
  311|       |  v |= v >> 8;
  312|       |  v |= v >> 16;
  313|       |  v++;
  314|       |  return v;
  315|       |#endif
  316|    181|}
hash.c:ib_capa_to_bit:
  723|    181|{
  724|    181|#ifdef __GNUC__
  725|    181|  return U32(__builtin_ctz(capa));
  ------------------
  |  |  285|    181|#define U32(v) ((uint32_t)(v))
  ------------------
  726|       |#else
  727|       |  /* http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBruijn */
  728|       |  static const uint32_t MultiplyDeBruijnBitPosition2[] = {
  729|       |    0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
  730|       |    31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
  731|       |  };
  732|       |  return MultiplyDeBruijnBitPosition2[U32(capa * 0x077CB531U) >> 27];
  733|       |#endif
  734|    181|}
hash.c:ar_ea_n_used:
  110|  81.5k|  MRB_INLINE t_ c_##_##n_(const struct RHash *h) {return h->p_;}
hash.c:obj_eql:
  357|   619k|{
  358|   619k|  enum mrb_vtype tt = mrb_type(a);
  359|   619k|  mrb_bool eql;
  360|       |
  361|   619k|  switch (tt) {
  362|  62.0k|  case MRB_TT_STRING:
  ------------------
  |  Branch (362:3): [True: 62.0k, False: 557k]
  ------------------
  363|  62.0k|    return mrb_str_equal(mrb, a, b);
  364|       |
  365|   557k|  case MRB_TT_SYMBOL:
  ------------------
  |  Branch (365:3): [True: 557k, False: 62.0k]
  ------------------
  366|   557k|    if (!mrb_symbol_p(b)) return FALSE;
  ------------------
  |  |  172|   557k|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|   557k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
                  if (!mrb_symbol_p(b)) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  |  Branch (366:9): [True: 0, False: 557k]
  ------------------
  367|   557k|    return mrb_symbol(a) == mrb_symbol(b);
  ------------------
  |  |  167|   557k|#define mrb_symbol(o)  (mrb_sym)(((o).w) >> WORDBOX_SYMBOL_SHIFT)
  |  |  ------------------
  |  |  |  |   63|   557k|#define WORDBOX_SYMBOL_SHIFT    32
  |  |  ------------------
  ------------------
                  return mrb_symbol(a) == mrb_symbol(b);
  ------------------
  |  |  167|   557k|#define mrb_symbol(o)  (mrb_sym)(((o).w) >> WORDBOX_SYMBOL_SHIFT)
  |  |  ------------------
  |  |  |  |   63|   557k|#define WORDBOX_SYMBOL_SHIFT    32
  |  |  ------------------
  ------------------
  368|       |
  369|      0|  case MRB_TT_INTEGER:
  ------------------
  |  Branch (369:3): [True: 0, False: 619k]
  ------------------
  370|      0|    if (!mrb_integer_p(b)) return FALSE;
  ------------------
  |  |  171|      0|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|      0|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (!mrb_integer_p(b)) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  371|      0|    return mrb_integer(a) == mrb_integer(b);
  ------------------
  |  |  166|      0|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
                  return mrb_integer(a) == mrb_integer(b);
  ------------------
  |  |  166|      0|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
  372|       |
  373|      0|#ifndef MRB_NO_FLOAT
  374|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (374:3): [True: 0, False: 619k]
  ------------------
  375|      0|    if (!mrb_float_p(b)) return FALSE;
  ------------------
  |  |  179|      0|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|      0|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
                  if (!mrb_float_p(b)) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  |  Branch (375:9): [True: 0, False: 0]
  ------------------
  376|      0|    return mrb_float(a) == mrb_float(b);
  ------------------
  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
                  return mrb_float(a) == mrb_float(b);
  ------------------
  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  377|      0|#endif
  378|       |
  379|      0|  default:
  ------------------
  |  Branch (379:3): [True: 0, False: 619k]
  ------------------
  380|      0|    h_check_modified(mrb, h, {eql = mrb_eql(mrb, a, b);});
  ------------------
  |  |  261|      0|#define h_check_modified(mrb, h, code) do {                                     \
  |  |  262|      0|  struct RHash *h__ = h;                                                        \
  |  |  263|      0|  uint32_t mask__ = MRB_HASH_HT|MRB_HASH_IB_BIT_MASK|MRB_HASH_AR_EA_CAPA_MASK;  \
  |  |  ------------------
  |  |  |  |  224|      0|#define MRB_HASH_HT                 (1 << (MRB_HASH_SIZE_FLAGS_SHIFT + 2))
  |  |  |  |  ------------------
  |  |  |  |  |  |  218|      0|#define MRB_HASH_SIZE_FLAGS_SHIFT   (MRB_HASH_AR_EA_CAPA_BIT * 2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  214|      0|#define MRB_HASH_AR_EA_CAPA_BIT     5
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 uint32_t mask__ = MRB_HASH_HT|MRB_HASH_IB_BIT_MASK|MRB_HASH_AR_EA_CAPA_MASK;  \
  |  |  ------------------
  |  |  |  |  219|      0|#define MRB_HASH_IB_BIT_MASK        ((1 << MRB_HASH_IB_BIT_BIT) - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#define MRB_HASH_IB_BIT_BIT         5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 uint32_t mask__ = MRB_HASH_HT|MRB_HASH_IB_BIT_MASK|MRB_HASH_AR_EA_CAPA_MASK;  \
  |  |  ------------------
  |  |  |  |  220|      0|#define MRB_HASH_AR_EA_CAPA_MASK    ((1 << MRB_HASH_AR_EA_CAPA_BIT) - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  214|      0|#define MRB_HASH_AR_EA_CAPA_BIT     5
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  264|      0|  uint32_t flags__ = h__->flags & mask__;                                       \
  |  |  265|      0|  void* tbl__ = (mrb_assert(h__->hsh.ht), h__->hsh.ht);                         \
  |  |  ------------------
  |  |  |  |   68|      0|#define mrb_assert(p) ((void)0)
  |  |  ------------------
  |  |  266|      0|  uint32_t ht_ea_capa__ = 0;                                                    \
  |  |  267|      0|  hash_entry *ht_ea__ = NULL;                                                   \
  |  |  268|      0|  if (H_CHECK_MODIFIED_USE_HT_EA_CAPA_FOR_AR || h_ht_p(h__)) {                  \
  |  |  ------------------
  |  |  |  |  233|      0|# define H_CHECK_MODIFIED_USE_HT_EA_CAPA_FOR_AR TRUE
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#  define TRUE 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (54:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (268:49): [True: 0, False: 0]
  |  |  ------------------
  |  |  269|      0|    ht_ea_capa__ = ht_ea_capa(h__);                                             \
  |  |  270|      0|  }                                                                             \
  |  |  271|      0|  if (H_CHECK_MODIFIED_USE_HT_EA_FOR_AR || h_ht_p(h__)) {                       \
  |  |  ------------------
  |  |  |  |  232|      0|# define H_CHECK_MODIFIED_USE_HT_EA_FOR_AR TRUE
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#  define TRUE 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (54:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (271:44): [True: 0, False: 0]
  |  |  ------------------
  |  |  272|      0|    ht_ea__ = ht_ea(h__);                                                       \
  |  |  273|      0|  }                                                                             \
  |  |  274|      0|  code;                                                                         \
  |  |  275|      0|  if (flags__ != (h__->flags & mask__) ||                                       \
  |  |  ------------------
  |  |  |  Branch (275:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  276|      0|      tbl__ != h__->hsh.ht ||                                                   \
  |  |  ------------------
  |  |  |  Branch (276:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  277|      0|      ((H_CHECK_MODIFIED_USE_HT_EA_CAPA_FOR_AR || h_ht_p(h__)) &&               \
  |  |  ------------------
  |  |  |  |  233|      0|# define H_CHECK_MODIFIED_USE_HT_EA_CAPA_FOR_AR TRUE
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#  define TRUE 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (54:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (277:51): [True: 0, False: 0]
  |  |  ------------------
  |  |  278|      0|       ht_ea_capa__ != ht_ea_capa(h__)) ||                                      \
  |  |  ------------------
  |  |  |  Branch (278:8): [True: 0, False: 0]
  |  |  ------------------
  |  |  279|      0|      ((H_CHECK_MODIFIED_USE_HT_EA_FOR_AR || h_ht_p(h__)) &&                    \
  |  |  ------------------
  |  |  |  |  232|      0|# define H_CHECK_MODIFIED_USE_HT_EA_FOR_AR TRUE
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      0|#  define TRUE 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (54:16): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (279:46): [True: 0, False: 0]
  |  |  ------------------
  |  |  280|      0|       ht_ea__ != ht_ea(h__))) {                                                \
  |  |  ------------------
  |  |  |  Branch (280:8): [True: 0, False: 0]
  |  |  ------------------
  |  |  281|      0|    mrb_raise(mrb, E_RUNTIME_ERROR, "hash modified");                           \
  |  |  ------------------
  |  |  |  | 1374|      0|#define E_RUNTIME_ERROR      mrb_exc_get_id(mrb, MRB_ERROR_SYM(RuntimeError))
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  282|      0|  }                                                                             \
  |  |  283|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (283:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  381|      0|    return eql;
  382|   619k|  }
  383|   619k|}
hash.c:ib_it_deleted_value:
  617|  72.8k|{
  618|  72.8k|  return it->mask - 1;
  619|  72.8k|}
hash.c:ib_it_entry:
  717|   130k|{
  718|   130k|  return ea_get(ht_ea(it->h), it->ea_index);
  719|   130k|}
hash.c:ea_get:
  465|   130k|{
  466|   130k|  return &ea[index];
  467|   130k|}
hash.c:hash_modify:
 1159|   146k|{
 1160|   146k|  mrb_check_frozen(mrb, mrb_hash_ptr(hash));
  ------------------
  |  |   35|   146k|#define mrb_hash_ptr(v)    ((struct RHash*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|   146k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1161|   146k|}
hash.c:h_key_for:
  971|   145k|{
  972|   145k|  if (mrb_string_p(key) && !MRB_FROZEN_P(mrb_str_ptr(key))) {
  ------------------
  |  |  187|   145k|#define mrb_string_p(o) WORDBOX_OBJ_TYPE_P(o, STRING)
  |  |  ------------------
  |  |  |  |   78|   291k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|   291k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|   291k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 80.7k, False: 65.1k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 65.1k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 65.1k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (mrb_string_p(key) && !MRB_FROZEN_P(mrb_str_ptr(key))) {
  ------------------
  |  |   25|  65.1k|#define MRB_FROZEN_P(o) ((o)->flags & MRB_FL_OBJ_IS_FROZEN)
  |  |  ------------------
  |  |  |  |   24|  65.1k|#define MRB_FL_OBJ_IS_FROZEN (1 << 20)
  |  |  ------------------
  ------------------
  |  Branch (972:28): [True: 65.1k, False: 0]
  ------------------
  973|  65.1k|    key = mrb_str_dup(mrb, key);
  974|  65.1k|    MRB_SET_FROZEN_FLAG(mrb_str_ptr(key));
  ------------------
  |  |   26|  65.1k|#define MRB_SET_FROZEN_FLAG(o) ((o)->flags |= MRB_FL_OBJ_IS_FROZEN)
  |  |  ------------------
  |  |  |  |   24|  65.1k|#define MRB_FL_OBJ_IS_FROZEN (1 << 20)
  |  |  ------------------
  ------------------
  975|  65.1k|  }
  976|   145k|  return key;
  977|   145k|}
hash.c:h_set:
 1012|   145k|{
 1013|   145k|  (h_ar_p(h) ? ar_set : ht_set)(mrb, h, key, val);
  ------------------
  |  |  286|   145k|#define h_ar_p(h) (!h_ht_p(h))
  |  |  ------------------
  |  |  |  Branch (286:19): [True: 81.6k, False: 64.2k]
  |  |  ------------------
  ------------------
 1014|   145k|}
hash.c:ar_set:
  524|  81.6k|{
  525|  81.6k|  uint32_t size = ar_size(h);
  526|  81.6k|  hash_entry *entry;
  527|  81.6k|  if ((entry = ea_get_by_key(mrb, ar_ea(h), size, key, h))) {
  ------------------
  |  Branch (527:7): [True: 69, False: 81.5k]
  ------------------
  528|     69|    entry->val = val;
  529|     69|  }
  530|  81.5k|  else {
  531|  81.5k|    uint32_t ea_capa = ar_ea_capa(h), ea_n_used = ar_ea_n_used(h);
  532|  81.5k|    if (ea_capa == ea_n_used) {
  ------------------
  |  Branch (532:9): [True: 17.1k, False: 64.4k]
  ------------------
  533|  17.1k|      if (size == ea_n_used) {
  ------------------
  |  Branch (533:11): [True: 17.1k, False: 0]
  ------------------
  534|  17.1k|        if (size == AR_MAX_SIZE) {
  ------------------
  |  |   70|  17.1k|#define AR_MAX_SIZE 16
  ------------------
  |  Branch (534:13): [True: 467, False: 16.6k]
  ------------------
  535|    467|          ht_init(mrb, h, size, ar_ea(h), ea_capa, NULL, IB_INIT_BIT);
  ------------------
  |  |   63|    467|#define IB_INIT_BIT (                                                         \
  |  |   64|    467|  ib_upper_bound_for(32) <= AR_MAX_SIZE ? 6 :                                 \
  |  |  ------------------
  |  |  |  |   70|    467|#define AR_MAX_SIZE 16
  |  |  ------------------
  |  |  |  Branch (64:3): [True: 0, False: 467]
  |  |  ------------------
  |  |   65|    467|  ib_upper_bound_for(16) <= AR_MAX_SIZE ? 5 :                                 \
  |  |  ------------------
  |  |  |  |   70|    467|#define AR_MAX_SIZE 16
  |  |  ------------------
  |  |  |  Branch (65:3): [True: 467, False: 0]
  |  |  ------------------
  |  |   66|    467|  4                                                                           \
  |  |   67|    467|)
  ------------------
  536|    467|          ht_set(mrb, h, key, val);
  537|    467|          return;
  538|    467|        }
  539|  16.6k|        else {
  540|  16.6k|          ar_adjust_ea(mrb, h, size, AR_MAX_SIZE);
  ------------------
  |  |   70|  16.6k|#define AR_MAX_SIZE 16
  ------------------
  541|  16.6k|        }
  542|  17.1k|      }
  543|      0|      else {
  544|      0|        ar_compress(mrb, h);
  545|      0|        ea_n_used = size;
  546|      0|      }
  547|  17.1k|    }
  548|  81.1k|    ea_set(ar_ea(h), ea_n_used, key, val);
  549|  81.1k|    ar_set_size(h, ++size);
  550|  81.1k|    ar_set_ea_n_used(h, ++ea_n_used);
  551|  81.1k|  }
  552|  81.6k|}
hash.c:ea_get_by_key:
  456|  81.6k|{
  457|  81.6k|  ea_each(ea, size, entry, {
  ------------------
  |  |  178|  81.6k|#define ea_each(ea, size, entry_var, code) do {                               \
  |  |  179|  81.6k|  hash_entry *entry_var = ea;                                                 \
  |  |  180|  81.6k|  uint32_t size__ = size;                                                     \
  |  |  181|   631k|  for (; 0 < size__; entry_var++) {                                           \
  |  |  ------------------
  |  |  |  Branch (181:10): [True: 549k, False: 81.5k]
  |  |  ------------------
  |  |  182|   549k|    if (entry_deleted_p(entry_var)) continue;                                 \
  |  |  ------------------
  |  |  |  Branch (182:9): [True: 0, False: 549k]
  |  |  ------------------
  |  |  183|   549k|    --size__;                                                                 \
  |  |  184|   549k|    code;                                                                     \
  |  |  ------------------
  |  |  |  Branch (184:5): [True: 69, False: 549k]
  |  |  ------------------
  |  |  185|   549k|  }                                                                           \
  |  |  186|  81.6k|} while (0)
  |  |  ------------------
  |  |  |  Branch (186:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  458|  81.6k|    if (obj_eql(mrb, key, entry->key, h)) return entry;
  459|  81.6k|  });
  460|  81.5k|  return NULL;
  461|  81.6k|}
hash.c:ar_adjust_ea:
  495|  16.6k|{
  496|  16.6k|  uint32_t ea_capa = size;
  497|  16.6k|  hash_entry *ea = ea_adjust(mrb, ar_ea(h), &ea_capa, max_ea_capa);
  498|  16.6k|  ar_set_ea(h, ea);
  499|  16.6k|  ar_set_ea_capa(h, ea_capa);
  500|  16.6k|}
hash.c:ea_adjust:
  440|  17.1k|{
  441|  17.1k|  *capap = ea_next_capa_for(*capap, max_capa);
  442|  17.1k|  return ea_resize(mrb, ea, *capap);
  443|  17.1k|}
hash.c:ea_next_capa_for:
  399|  17.1k|{
  400|  17.1k|  if (size < AR_DEFAULT_CAPA) {
  ------------------
  |  |   69|  17.1k|#define AR_DEFAULT_CAPA 4
  ------------------
  |  Branch (400:7): [True: 5.54k, False: 11.5k]
  ------------------
  401|  5.54k|    return AR_DEFAULT_CAPA;
  ------------------
  |  |   69|  5.54k|#define AR_DEFAULT_CAPA 4
  ------------------
  402|  5.54k|  }
  403|  11.5k|  else {
  404|       |    /*
  405|       |     * For 32-bit CPU, the theoretical value of maximum EA capacity is
  406|       |     * `UINT32_MAX / sizeof (hash_entry)`. At this time, if
  407|       |     * `EA_INCREASE_RATIO` is the current value, 32-bit range will not be
  408|       |     * exceeded during the calculation of `capa`, so `size_t` is used.
  409|       |     */
  410|  11.5k|    size_t capa = (size_t)size * EA_INCREASE_RATIO, inc = capa - size;
  ------------------
  |  |   58|  11.5k|#define EA_INCREASE_RATIO 6 / 5 + 6
  ------------------
  411|  11.5k|    if (EA_MAX_INCREASE < inc) capa = size + EA_MAX_INCREASE;
  ------------------
  |  |   59|  11.5k|#define EA_MAX_INCREASE UINT16_MAX
  ------------------
                  if (EA_MAX_INCREASE < inc) capa = size + EA_MAX_INCREASE;
  ------------------
  |  |   59|      0|#define EA_MAX_INCREASE UINT16_MAX
  ------------------
  |  Branch (411:9): [True: 0, False: 11.5k]
  ------------------
  412|  11.5k|    return capa <= max_capa ? U32(capa) : max_capa;
  ------------------
  |  |  285|  6.02k|#define U32(v) ((uint32_t)(v))
  ------------------
  |  Branch (412:12): [True: 6.02k, False: 5.54k]
  ------------------
  413|  11.5k|  }
  414|  17.1k|}
hash.c:ea_set:
  471|  84.5k|{
  472|  84.5k|  ea[index].key = key;
  473|  84.5k|  ea[index].val = val;
  474|  84.5k|}
hash.c:ht_set:
  878|  64.7k|{
  879|  64.7k|  uint32_t size = ht_size(h);
  880|  64.7k|  uint32_t ib_bit_width = ib_bit(h), ib_capa = ib_bit_to_capa(ib_bit_width);
  881|  64.7k|  if (ib_upper_bound_for(ib_capa) <= size) {
  ------------------
  |  Branch (881:7): [True: 5, False: 64.7k]
  ------------------
  882|      5|    if (size != ht_ea_n_used(h)) ea_compress(ht_ea(h), ht_ea_n_used(h));
  ------------------
  |  Branch (882:9): [True: 0, False: 5]
  ------------------
  883|      5|    ht_init(mrb, h, size, ht_ea(h), ht_ea_capa(h), h_ht(h), ++ib_bit_width);
  884|      5|  }
  885|  64.7k|  else if (size != ht_ea_n_used(h)) {
  ------------------
  |  Branch (885:12): [True: 0, False: 64.7k]
  ------------------
  886|      0|    if (ib_capa - EA_N_RESERVED_INDICES <= ht_ea_n_used(h)) goto compress;
  ------------------
  |  |   57|      0|#define EA_N_RESERVED_INDICES 2  /* empty and deleted */
  ------------------
  |  Branch (886:9): [True: 0, False: 0]
  ------------------
  887|      0|    if (ht_ea_capa(h) == ht_ea_n_used(h)) {
  ------------------
  |  Branch (887:9): [True: 0, False: 0]
  ------------------
  888|      0|      if (size <= AR_MAX_SIZE) {ht_set_as_ar(mrb, h, key, val); return;}
  ------------------
  |  |   70|      0|#define AR_MAX_SIZE 16
  ------------------
  |  Branch (888:11): [True: 0, False: 0]
  ------------------
  889|      0|      if (ea_next_capa_for(size, EA_MAX_CAPA) <= ht_ea_capa(h)) {
  ------------------
  |  |   60|      0|#define EA_MAX_CAPA U32(lesser(IB_MAX_CAPA - EA_N_RESERVED_INDICES, MRB_INT_MAX))
  |  |  ------------------
  |  |  |  |  285|      0|#define U32(v) ((uint32_t)(v))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (285:28): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (889:11): [True: 0, False: 0]
  ------------------
  890|      0|       compress:
  891|      0|        ea_compress(ht_ea(h), ht_ea_n_used(h));
  892|      0|        ht_adjust_ea(mrb, h, size, ht_ea_capa(h));
  893|      0|        ht_init(mrb, h, size, ht_ea(h), ht_ea_capa(h), h_ht(h), ib_bit_width);
  894|      0|      }
  895|      0|    }
  896|      0|  }
  897|  64.7k|  ht_set_without_ib_adjustment(mrb, h, key, val);
  898|  64.7k|}
hash.c:ht_adjust_ea:
  815|    477|{
  816|    477|  uint32_t ea_capa = size;
  817|    477|  hash_entry *ea = ea_adjust(mrb, ht_ea(h), &ea_capa, max_ea_capa);
  818|    477|  ht_set_ea(h, ea);
  819|    477|  ht_set_ea_capa(h, ea_capa);
  820|    477|}
hash.c:ht_set_without_ib_adjustment:
  853|  64.7k|{
  854|  64.7k|  mrb_assert(ht_size(h) < ib_bit_to_capa(ib_bit(h)));
  ------------------
  |  |   68|  64.7k|#define mrb_assert(p) ((void)0)
  ------------------
  855|  64.7k|  ib_cycle_by_key(mrb, h, key, it, {
  ------------------
  |  |  188|  64.7k|#define ib_cycle_by_key(mrb, h, key, it_var, code) do {                       \
  |  |  189|  64.7k|  index_buckets_iter it_var[1];                                               \
  |  |  190|  64.7k|  ib_it_init(mrb, it_var, h, key);                                            \
  |  |  191|  72.8k|  for (;;) {                                                                  \
  |  |  192|  72.8k|    ib_it_next(it_var);                                                       \
  |  |  193|   367k|    code;                                                                     \
  |  |  ------------------
  |  |  |  Branch (193:5): [True: 8.06k, False: 61.3k]
  |  |  |  Branch (193:5): [Folded - Ignored]
  |  |  |  Branch (193:5): [True: 0, False: 3.39k]
  |  |  |  Branch (193:5): [Folded - Ignored]
  |  |  |  Branch (193:5): [True: 477, False: 2.92k]
  |  |  |  Branch (193:5): [True: 69.4k, False: 3.39k]
  |  |  ------------------
  |  |  194|      0|  }                                                                           \
  |  |  195|  64.7k|} while (0)
  |  |  ------------------
  |  |  |  Branch (195:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  856|  64.7k|    if (ib_it_active_p(it)) {
  857|  64.7k|      if (!obj_eql(mrb, key, ib_it_entry(it)->key, h)) continue;
  858|  64.7k|      ib_it_entry(it)->val = val;
  859|  64.7k|    }
  860|  64.7k|    else {
  861|  64.7k|      uint32_t ea_n_used = ht_ea_n_used(h);
  862|  64.7k|      if (ea_n_used == H_MAX_SIZE) {
  863|  64.7k|        mrb_assert(ht_size(h) == ea_n_used);
  864|  64.7k|        mrb_raise(mrb, E_ARGUMENT_ERROR, "hash too big");
  865|  64.7k|      }
  866|  64.7k|      if (ea_n_used == ht_ea_capa(h)) ht_adjust_ea(mrb, h, ea_n_used, EA_MAX_CAPA);
  867|  64.7k|      ib_it_set(it, ea_n_used);
  868|  64.7k|      ea_set(ht_ea(h), ea_n_used, key, val);
  869|  64.7k|      ht_inc_size(h);
  870|  64.7k|      ht_set_ea_n_used(h, ++ea_n_used);
  871|  64.7k|    }
  872|  64.7k|    return;
  873|  64.7k|  });
  874|  64.7k|}
hash.c:ib_it_active_p:
  635|  72.8k|{
  636|  72.8k|  return it->ea_index < ib_it_deleted_value(it);
  637|  72.8k|}
hash.c:ht_inc_size:
  129|  3.39k|  MRB_INLINE void c_##_inc_##n_(struct RHash *h) {                            \
  130|  3.39k|    c_##_set_##n_(h, c_##_##n_(h) + 1);                                       \
  131|  3.39k|  }
hash.c:h_clear:
  999|    957|{
 1000|    957|  h_free_table(mrb, h);
 1001|    957|  h_init(h);
 1002|    957|}
hash.c:h_init:
  987|    957|{
  988|    957|  ar_init(h, 0, NULL, 0, 0);
  989|    957|}

mrb_init_core:
   31|    476|{
   32|    476|  mrb_init_symtbl(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   33|       |
   34|    476|  mrb_init_class(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   35|    476|  mrb_init_object(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   36|    476|  mrb_init_kernel(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   37|    476|  mrb_init_comparable(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   38|    476|  mrb_init_enumerable(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   39|       |
   40|    476|  mrb_init_symbol(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   41|    476|  mrb_init_string(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   42|    476|  mrb_init_exception(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   43|    476|  mrb_init_proc(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   44|    476|  mrb_init_array(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   45|    476|  mrb_init_hash(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   46|    476|  mrb_init_numeric(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   47|    476|  mrb_init_range(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   48|    476|  mrb_init_gc(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   49|    476|  mrb_init_version(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   50|    476|  mrb_init_mrblib(mrb); DONE;
  ------------------
  |  |   28|    476|#define DONE mrb_gc_arena_restore(mrb, 0);
  |  |  ------------------
  |  |  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  |  |  ------------------
  ------------------
   51|    476|}

mrb_func_basic_p:
   21|   261k|{
   22|   261k|  struct RClass *c = mrb_class(mrb, obj);
   23|   261k|  mrb_method_t m = mrb_method_search_vm(mrb, &c, mid);
   24|   261k|  const struct RProc *p;
   25|       |
   26|   261k|  if (MRB_METHOD_UNDEF_P(m)) return FALSE;
  ------------------
  |  |  115|   261k|#define MRB_METHOD_UNDEF_P(m) ((m)==0)
  |  |  ------------------
  |  |  |  Branch (115:31): [True: 0, False: 261k]
  |  |  ------------------
  ------------------
                if (MRB_METHOD_UNDEF_P(m)) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
   27|   261k|  if (MRB_METHOD_FUNC_P(m))
  ------------------
  |  |  107|   261k|#define MRB_METHOD_FUNC_P(m) (((uintptr_t)(m))&MRB_METHOD_FUNC_FL)
  |  |  ------------------
  |  |  |  |  102|   261k|#define MRB_METHOD_FUNC_FL 1
  |  |  ------------------
  |  |  |  Branch (107:30): [True: 261k, False: 0]
  |  |  ------------------
  ------------------
   28|   261k|    return MRB_METHOD_FUNC(m) == func;
  ------------------
  |  |  110|   261k|#define MRB_METHOD_FUNC(m) ((mrb_func_t)((uintptr_t)(m)>>2))
  ------------------
   29|      0|  p = MRB_METHOD_PROC(m);
  ------------------
  |  |  114|      0|#define MRB_METHOD_PROC(m) ((struct RProc*)(m))
  ------------------
   30|      0|  if (MRB_PROC_CFUNC_P(p) && (MRB_PROC_CFUNC(p) == func))
  ------------------
  |  |   65|      0|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  ------------------
  |  |  |  |   64|      0|#define MRB_PROC_CFUNC_FL 128
  |  |  ------------------
  |  |  |  Branch (65:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                if (MRB_PROC_CFUNC_P(p) && (MRB_PROC_CFUNC(p) == func))
  ------------------
  |  |   66|      0|#define MRB_PROC_CFUNC(p) (p)->body.func
  ------------------
  |  Branch (30:30): [True: 0, False: 0]
  ------------------
   31|      0|    return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
   32|      0|  return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
   33|      0|}
mrb_obj_freeze:
  265|     37|{
  266|     37|  if (!mrb_immediate_p(self)) {
  ------------------
  |  |  148|     37|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|     74|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 0, False: 37]
  |  |  |  Branch (148:63): [True: 0, False: 37]
  |  |  ------------------
  ------------------
  267|     37|    struct RBasic *b = mrb_basic_ptr(self);
  ------------------
  |  |   22|     37|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|     37|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  268|     37|    if (!mrb_frozen_p(b)) {
  ------------------
  |  |   28|     37|#define mrb_frozen_p(o) MRB_FROZEN_P(o)
  |  |  ------------------
  |  |  |  |   25|     37|#define MRB_FROZEN_P(o) ((o)->flags & MRB_FL_OBJ_IS_FROZEN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   24|     37|#define MRB_FL_OBJ_IS_FROZEN (1 << 20)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (268:9): [True: 37, False: 0]
  ------------------
  269|     37|      MRB_SET_FROZEN_FLAG(b);
  ------------------
  |  |   26|     37|#define MRB_SET_FROZEN_FLAG(o) ((o)->flags |= MRB_FL_OBJ_IS_FROZEN)
  |  |  ------------------
  |  |  |  |   24|     37|#define MRB_FL_OBJ_IS_FROZEN (1 << 20)
  |  |  ------------------
  ------------------
  270|     37|      if (b->c->tt == MRB_TT_SCLASS) MRB_SET_FROZEN_FLAG(b->c);
  ------------------
  |  |   26|      0|#define MRB_SET_FROZEN_FLAG(o) ((o)->flags |= MRB_FL_OBJ_IS_FROZEN)
  |  |  ------------------
  |  |  |  |   24|      0|#define MRB_FL_OBJ_IS_FROZEN (1 << 20)
  |  |  ------------------
  ------------------
  |  Branch (270:11): [True: 0, False: 37]
  ------------------
  271|     37|    }
  272|     37|  }
  273|     37|  return self;
  274|     37|}
mrb_f_raise:
  416|     16|{
  417|     16|  mrb_value exc, mesg;
  418|     16|  mrb_int argc;
  419|       |
  420|     16|  argc = mrb_get_args(mrb, "|oo", &exc, &mesg);
  421|     16|  mrb->c->ci->mid = 0;
  422|     16|  switch (argc) {
  423|      0|  case 0:
  ------------------
  |  Branch (423:3): [True: 0, False: 16]
  ------------------
  424|      0|    mrb_raise(mrb, E_RUNTIME_ERROR, "");
  ------------------
  |  | 1374|      0|#define E_RUNTIME_ERROR      mrb_exc_get_id(mrb, MRB_ERROR_SYM(RuntimeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  425|      0|    break;
  426|      0|  case 1:
  ------------------
  |  Branch (426:3): [True: 0, False: 16]
  ------------------
  427|      0|    if (mrb_string_p(exc)) {
  ------------------
  |  |  187|      0|#define mrb_string_p(o) WORDBOX_OBJ_TYPE_P(o, STRING)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  428|      0|      mesg = exc;
  429|      0|      exc = mrb_obj_value(E_RUNTIME_ERROR);
  ------------------
  |  | 1374|      0|#define E_RUNTIME_ERROR      mrb_exc_get_id(mrb, MRB_ERROR_SYM(RuntimeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  430|      0|    }
  431|      0|    else {
  432|      0|      mesg = mrb_nil_value();
  433|      0|    }
  434|       |    /* fall through */
  435|     16|  default:
  ------------------
  |  Branch (435:3): [True: 16, False: 0]
  ------------------
  436|     16|    exc = mrb_make_exception(mrb, exc, mesg);
  437|     16|    mrb_exc_raise(mrb, exc);
  438|      0|    break;
  439|     16|  }
  440|      0|  return mrb_nil_value();            /* not reached */
  441|     16|}
mrb_init_kernel:
  563|    476|{
  564|    476|  struct RClass *krn;
  565|       |
  566|    476|  mrb->kernel_module = krn = mrb_define_module(mrb, "Kernel");                                                    /* 15.3.1 */
  567|    476|  mrb_define_class_method(mrb, krn, "block_given?",         mrb_f_block_given_p_m,           MRB_ARGS_NONE());    /* 15.3.1.2.2  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  568|    476|  mrb_define_class_method(mrb, krn, "iterator?",            mrb_f_block_given_p_m,           MRB_ARGS_NONE());    /* 15.3.1.2.5  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  569|    476|  mrb_define_class_method(mrb, krn, "raise",                mrb_f_raise,                     MRB_ARGS_OPT(2));    /* 15.3.1.2.12 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
  570|       |
  571|    476|  mrb_define_method(mrb, krn, "===",                        mrb_eqq_m,                       MRB_ARGS_REQ(1));    /* 15.3.1.3.2  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  572|    476|  mrb_define_method(mrb, krn, "<=>",                        mrb_cmp_m,                       MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  573|    476|  mrb_define_method(mrb, krn, "block_given?",               mrb_f_block_given_p_m,           MRB_ARGS_NONE());    /* 15.3.1.3.6  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  574|    476|  mrb_define_method(mrb, krn, "class",                      mrb_obj_class_m,                 MRB_ARGS_NONE());    /* 15.3.1.3.7  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  575|    476|  mrb_define_method(mrb, krn, "clone",                      mrb_obj_clone,                   MRB_ARGS_NONE());    /* 15.3.1.3.8  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  576|    476|  mrb_define_method(mrb, krn, "dup",                        mrb_obj_dup,                     MRB_ARGS_NONE());    /* 15.3.1.3.9  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  577|    476|  mrb_define_method(mrb, krn, "eql?",                       mrb_obj_equal_m,                 MRB_ARGS_REQ(1));    /* 15.3.1.3.10 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  578|    476|  mrb_define_method(mrb, krn, "freeze",                     mrb_obj_freeze,                  MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  579|    476|  mrb_define_method(mrb, krn, "frozen?",                    mrb_obj_frozen,                  MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  580|    476|  mrb_define_method(mrb, krn, "hash",                       mrb_obj_hash,                    MRB_ARGS_NONE());    /* 15.3.1.3.15 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  581|    476|  mrb_define_method(mrb, krn, "initialize_copy",            mrb_obj_init_copy,               MRB_ARGS_REQ(1));    /* 15.3.1.3.16 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  582|    476|  mrb_define_method(mrb, krn, "inspect",                    mrb_obj_inspect,                 MRB_ARGS_NONE());    /* 15.3.1.3.17 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  583|    476|  mrb_define_method(mrb, krn, "instance_of?",               obj_is_instance_of,              MRB_ARGS_REQ(1));    /* 15.3.1.3.19 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  584|       |
  585|    476|  mrb_define_method(mrb, krn, "is_a?",                      mrb_obj_is_kind_of_m,            MRB_ARGS_REQ(1));    /* 15.3.1.3.24 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  586|    476|  mrb_define_method(mrb, krn, "iterator?",                  mrb_f_block_given_p_m,           MRB_ARGS_NONE());    /* 15.3.1.3.25 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  587|    476|  mrb_define_method(mrb, krn, "kind_of?",                   mrb_obj_is_kind_of_m,            MRB_ARGS_REQ(1));    /* 15.3.1.3.26 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  588|    476|  mrb_define_method(mrb, krn, "nil?",                       mrb_false,                       MRB_ARGS_NONE());    /* 15.3.1.3.32 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  589|    476|  mrb_define_method(mrb, krn, "object_id",                  mrb_obj_id_m,                    MRB_ARGS_NONE());    /* 15.3.1.3.33 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  590|    476|  mrb_define_method(mrb, krn, "raise",                      mrb_f_raise,                     MRB_ARGS_ANY());     /* 15.3.1.3.40 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  591|    476|  mrb_define_method(mrb, krn, "remove_instance_variable",   mrb_obj_remove_instance_variable,MRB_ARGS_REQ(1));    /* 15.3.1.3.41 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  592|    476|  mrb_define_method(mrb, krn, "respond_to?",                obj_respond_to,                  MRB_ARGS_ARG(1,1));     /* 15.3.1.3.43 */
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
  593|    476|  mrb_define_method(mrb, krn, "to_s",                       mrb_any_to_s,                    MRB_ARGS_NONE());    /* 15.3.1.3.46 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  594|    476|  mrb_define_method(mrb, krn, "__case_eqq",                 mrb_obj_ceqq,                    MRB_ARGS_REQ(1));    /* internal */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  595|    476|  mrb_define_method(mrb, krn, "__to_int",                   mrb_ensure_int_type,             MRB_ARGS_NONE());    /* internal */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  596|    476|  mrb_define_method(mrb, krn, "__ENCODING__",               mrb_encoding,                    MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  597|    476|  mrb_define_method(mrb, krn, "respond_to_missing?",        mrb_false,                       MRB_ARGS_ARG(1,1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
  598|    476|  mrb_define_method(mrb, krn, "__inspect_recursive?",       mrb_obj_inspect_recursive_p,     MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  599|       |
  600|    476|  mrb_include_module(mrb, mrb->object_class, mrb->kernel_module);
  601|    476|}
kernel.c:mrb_obj_is_kind_of_m:
  371|  58.9k|{
  372|  58.9k|  struct RClass *c;
  373|       |
  374|  58.9k|  mrb_get_args(mrb, "c", &c);
  375|       |
  376|  58.9k|  return mrb_bool_value(mrb_obj_is_kind_of(mrb, self, c));
  377|  58.9k|}
kernel.c:mrb_false:
  389|  1.41k|{
  390|  1.41k|  return mrb_false_value();
  391|  1.41k|}

mrb_load_proc:
  713|  12.3k|{
  714|  12.3k|  return mrb_top_run(mrb, proc, mrb_top_self(mrb), 0);
  715|  12.3k|}

mrb_int_overflow:
   26|      4|{
   27|      4|  mrb_raisef(mrb, E_RANGE_ERROR, "integer overflow in %s", reason);
  ------------------
  |  | 1379|      4|#define E_RANGE_ERROR        mrb_exc_get_id(mrb, MRB_ERROR_SYM(RangeError))
  |  |  ------------------
  |  |  |  |   35|      4|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      4|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   28|      4|}
mrb_int_zerodiv:
   32|     13|{
   33|     13|  mrb_raise(mrb, E_ZERODIV_ERROR, "divided by 0");
  ------------------
  |  | 1376|     13|#define E_ZERODIV_ERROR      mrb_exc_get_id(mrb, MRB_ERROR_SYM(ZeroDivisionError))
  |  |  ------------------
  |  |  |  |   35|     13|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|     13|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   34|     13|}
mrb_div_int:
  118|  4.70k|{
  119|  4.70k|  mrb_int div = x / y;
  120|       |
  121|  4.70k|  if ((x ^ y) < 0 && x != div * y) {
  ------------------
  |  Branch (121:7): [True: 2.36k, False: 2.34k]
  |  Branch (121:22): [True: 687, False: 1.67k]
  ------------------
  122|    687|    div -= 1;
  123|    687|  }
  124|  4.70k|  return div;
  125|  4.70k|}
mrb_div_int_value:
  129|  2.66k|{
  130|  2.66k|  if (y == 0) {
  ------------------
  |  Branch (130:7): [True: 7, False: 2.66k]
  ------------------
  131|      7|    mrb_int_zerodiv(mrb);
  132|      7|  }
  133|  2.66k|  else if (x == MRB_INT_MIN && y == -1) {
  ------------------
  |  |   81|  5.32k|# define MRB_INT_MIN INT64_MIN
  ------------------
  |  Branch (133:12): [True: 1.05k, False: 1.60k]
  |  Branch (133:32): [True: 553, False: 499]
  ------------------
  134|    553|#ifdef MRB_USE_BIGINT
  135|    553|    return mrb_bint_mul_ii(mrb, x, y);
  136|       |#else
  137|       |    mrb_int_overflow(mrb, "division");
  138|       |#endif
  139|    553|  }
  140|  2.10k|  return mrb_int_value(mrb, mrb_div_int(x, y));
  141|  2.66k|}
mrb_div_float:
  301|  1.77k|{
  302|  1.77k|  if (y != 0.0) {
  ------------------
  |  Branch (302:7): [True: 1.48k, False: 297]
  ------------------
  303|  1.48k|    return x / y;
  304|  1.48k|  }
  305|    297|  else if (x == 0.0) {
  ------------------
  |  Branch (305:12): [True: 124, False: 173]
  ------------------
  306|    124|    return NAN;
  307|    124|  }
  308|    173|  else {
  309|    173|    return x * (signbit(y) ? -1.0 : 1.0) * INFINITY;
  310|    173|  }
  311|  1.77k|}
mrb_check_num_exact:
  816|     64|{
  817|     64|  if (isinf(num)) {
  818|      0|    mrb_raise(mrb, E_FLOATDOMAIN_ERROR, num < 0 ? "-Infinity" : "Infinity");
  ------------------
  |  | 1390|      0|# define E_FLOATDOMAIN_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(FloatDomainError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (818:41): [True: 0, False: 0]
  ------------------
  819|      0|  }
  820|     64|  if (isnan(num)) {
  821|      0|    mrb_raise(mrb, E_FLOATDOMAIN_ERROR, "NaN");
  ------------------
  |  | 1390|      0|# define E_FLOATDOMAIN_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(FloatDomainError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  822|      0|  }
  823|     64|}
mrb_int_mul:
 1123|    885|{
 1124|    885|  mrb_int a;
 1125|       |
 1126|    885|  a = mrb_integer(x);
  ------------------
  |  |  166|    885|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1127|    885|  if (mrb_integer_p(y)) {
  ------------------
  |  |  171|    885|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|  1.77k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 885]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|    885|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  1.77k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  1.77k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 8, False: 877]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 877]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 877]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1128|      0|    mrb_int b, c;
 1129|       |
 1130|      0|    if (a == 0) return x;
  ------------------
  |  Branch (1130:9): [True: 0, False: 0]
  ------------------
 1131|      0|    if (a == 1) return y;
  ------------------
  |  Branch (1131:9): [True: 0, False: 0]
  ------------------
 1132|      0|    b = mrb_integer(y);
  ------------------
  |  |  166|      0|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1133|      0|    if (b == 0) return y;
  ------------------
  |  Branch (1133:9): [True: 0, False: 0]
  ------------------
 1134|      0|    if (b == 1) return x;
  ------------------
  |  Branch (1134:9): [True: 0, False: 0]
  ------------------
 1135|      0|    if (mrb_int_mul_overflow(a, b, &c)) {
  ------------------
  |  Branch (1135:9): [True: 0, False: 0]
  ------------------
 1136|      0|#ifdef MRB_USE_BIGINT
 1137|      0|      x = mrb_bint_new_int(mrb, a);
 1138|      0|      return mrb_bint_mul(mrb, x, y);
 1139|       |#else
 1140|       |      mrb_int_overflow(mrb, "multiplication");
 1141|       |#endif
 1142|      0|    }
 1143|      0|    return mrb_int_value(mrb, c);
 1144|      0|  }
 1145|    885|  switch (mrb_type(y)) {
 1146|      0|#ifdef MRB_USE_BIGINT
 1147|    877|  case MRB_TT_BIGINT:
  ------------------
  |  Branch (1147:3): [True: 877, False: 8]
  ------------------
 1148|    877|    if (a == 0) return x;
  ------------------
  |  Branch (1148:9): [True: 382, False: 495]
  ------------------
 1149|    495|    if (a == 1) return y;
  ------------------
  |  Branch (1149:9): [True: 225, False: 270]
  ------------------
 1150|    270|    return mrb_bint_mul(mrb, y, x);
 1151|      0|#endif
 1152|      0|#ifdef MRB_USE_RATIONAL
 1153|      0|  case MRB_TT_RATIONAL:
  ------------------
  |  Branch (1153:3): [True: 0, False: 885]
  ------------------
 1154|      0|    if (a == 0) return x;
  ------------------
  |  Branch (1154:9): [True: 0, False: 0]
  ------------------
 1155|      0|    if (a == 1) return y;
  ------------------
  |  Branch (1155:9): [True: 0, False: 0]
  ------------------
 1156|      0|    return mrb_rational_mul(mrb, y, x);
 1157|      0|#endif
 1158|      0|#ifdef MRB_USE_COMPLEX
 1159|      0|  case MRB_TT_COMPLEX:
  ------------------
  |  Branch (1159:3): [True: 0, False: 885]
  ------------------
 1160|      0|    if (a == 0) return x;
  ------------------
  |  Branch (1160:9): [True: 0, False: 0]
  ------------------
 1161|      0|    if (a == 1) return y;
  ------------------
  |  Branch (1161:9): [True: 0, False: 0]
  ------------------
 1162|      0|    return mrb_complex_mul(mrb, y, x);
 1163|      0|#endif
 1164|      0|#ifndef MRB_NO_FLOAT
 1165|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (1165:3): [True: 0, False: 885]
  ------------------
 1166|      0|    return mrb_float_value(mrb, (mrb_float)a * mrb_as_float(mrb, y));
  ------------------
  |  | 1297|      0|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
 1167|      0|#endif
 1168|      8|  default:
  ------------------
  |  Branch (1168:3): [True: 8, False: 877]
  ------------------
 1169|      8|    mrb_int_noconv(mrb, y);
 1170|    885|  }
 1171|    885|}
mrb_num_shift:
 1471|  6.60k|{
 1472|  6.60k|  if (width < 0) {              /* rshift */
  ------------------
  |  Branch (1472:7): [True: 2.81k, False: 3.79k]
  ------------------
 1473|  2.81k|    if (width == MRB_INT_MIN || -width >= NUMERIC_SHIFT_WIDTH_MAX) {
  ------------------
  |  |   81|  5.62k|# define MRB_INT_MIN INT64_MIN
  ------------------
                  if (width == MRB_INT_MIN || -width >= NUMERIC_SHIFT_WIDTH_MAX) {
  ------------------
  |  | 1467|  2.81k|#define NUMERIC_SHIFT_WIDTH_MAX (MRB_INT_BIT-1)
  |  |  ------------------
  |  |  |  |   80|  2.81k|# define MRB_INT_BIT 64
  |  |  ------------------
  ------------------
  |  Branch (1473:9): [True: 0, False: 2.81k]
  |  Branch (1473:33): [True: 425, False: 2.38k]
  ------------------
 1474|    425|      if (val < 0) {
  ------------------
  |  Branch (1474:11): [True: 70, False: 355]
  ------------------
 1475|     70|        *num = -1;
 1476|     70|      }
 1477|    355|      else {
 1478|    355|        *num = 0;
 1479|    355|      }
 1480|    425|    }
 1481|  2.38k|    else {
 1482|  2.38k|      *num = val >> -width;
 1483|  2.38k|    }
 1484|  2.81k|  }
 1485|  3.79k|  else if (val > 0) {
  ------------------
  |  Branch (1485:12): [True: 2.23k, False: 1.56k]
  ------------------
 1486|  2.23k|    if ((width > NUMERIC_SHIFT_WIDTH_MAX) ||
  ------------------
  |  | 1467|  2.23k|#define NUMERIC_SHIFT_WIDTH_MAX (MRB_INT_BIT-1)
  |  |  ------------------
  |  |  |  |   80|  2.23k|# define MRB_INT_BIT 64
  |  |  ------------------
  ------------------
  |  Branch (1486:9): [True: 190, False: 2.04k]
  ------------------
 1487|  2.23k|        (val   > (MRB_INT_MAX >> width))) {
  ------------------
  |  |   82|  2.04k|# define MRB_INT_MAX INT64_MAX
  ------------------
  |  Branch (1487:9): [True: 235, False: 1.80k]
  ------------------
 1488|    425|      return FALSE;
  ------------------
  |  |   51|    425|#  define FALSE 0
  ------------------
 1489|    425|    }
 1490|  1.80k|    *num = val << width;
 1491|  1.80k|  }
 1492|  1.56k|  else {
 1493|  1.56k|    if ((width > NUMERIC_SHIFT_WIDTH_MAX) ||
  ------------------
  |  | 1467|  1.56k|#define NUMERIC_SHIFT_WIDTH_MAX (MRB_INT_BIT-1)
  |  |  ------------------
  |  |  |  |   80|  1.56k|# define MRB_INT_BIT 64
  |  |  ------------------
  ------------------
  |  Branch (1493:9): [True: 106, False: 1.45k]
  ------------------
 1494|  1.56k|        (val   < (MRB_INT_MIN >> width))) {
  ------------------
  |  |   81|  1.45k|# define MRB_INT_MIN INT64_MIN
  ------------------
  |  Branch (1494:9): [True: 69, False: 1.38k]
  ------------------
 1495|    175|      return FALSE;
  ------------------
  |  |   51|    175|#  define FALSE 0
  ------------------
 1496|    175|    }
 1497|  1.38k|    if (width == NUMERIC_SHIFT_WIDTH_MAX)
  ------------------
  |  | 1467|  1.38k|#define NUMERIC_SHIFT_WIDTH_MAX (MRB_INT_BIT-1)
  |  |  ------------------
  |  |  |  |   80|  1.38k|# define MRB_INT_BIT 64
  |  |  ------------------
  ------------------
  |  Branch (1497:9): [True: 584, False: 805]
  ------------------
 1498|    584|      *num = MRB_INT_MIN;
  ------------------
  |  |   81|    584|# define MRB_INT_MIN INT64_MIN
  ------------------
 1499|    805|    else
 1500|    805|      *num = val * ((mrb_int)1 << width);
 1501|  1.38k|  }
 1502|  6.00k|  return TRUE;
  ------------------
  |  |   54|  6.00k|#  define TRUE 1
  ------------------
 1503|  6.60k|}
mrb_float_to_integer:
 1800|     64|{
 1801|     64|  if (!mrb_float_p(x)) {
  ------------------
  |  |  179|     64|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|     64|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
  |  Branch (1801:7): [True: 0, False: 64]
  ------------------
 1802|      0|    mrb_raise(mrb, E_TYPE_ERROR, "non float value");
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1803|      0|  }
 1804|     64|  mrb_float f = mrb_float(x);
  ------------------
  |  |  155|     64|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 1805|     64|  if (isinf(f) || isnan(f)) {
 1806|      0|    mrb_raisef(mrb, E_RANGE_ERROR, "float %f out of range", f);
  ------------------
  |  | 1379|      0|#define E_RANGE_ERROR        mrb_exc_get_id(mrb, MRB_ERROR_SYM(RangeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1807|      0|  }
 1808|     64|  return flo_to_i(mrb, x);
 1809|     64|}
mrb_int_add:
 1814|    834|{
 1815|    834|  mrb_int a;
 1816|       |
 1817|    834|  a = mrb_integer(x);
  ------------------
  |  |  166|    834|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1818|    834|  if (mrb_integer_p(y)) {
  ------------------
  |  |  171|    834|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|  1.66k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 834]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|    834|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  1.66k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  1.66k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 11, False: 823]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 823]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 823]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1819|      0|    mrb_int b, c;
 1820|       |
 1821|      0|    if (a == 0) return y;
  ------------------
  |  Branch (1821:9): [True: 0, False: 0]
  ------------------
 1822|      0|    b = mrb_integer(y);
  ------------------
  |  |  166|      0|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1823|      0|    if (b == 0) return x;
  ------------------
  |  Branch (1823:9): [True: 0, False: 0]
  ------------------
 1824|      0|    if (mrb_int_add_overflow(a, b, &c)) {
  ------------------
  |  Branch (1824:9): [True: 0, False: 0]
  ------------------
 1825|      0|#ifdef MRB_USE_BIGINT
 1826|      0|      x = mrb_bint_new_int(mrb, a);
 1827|      0|      return mrb_bint_add(mrb, x, y);
 1828|       |#else
 1829|       |      mrb_int_overflow(mrb, "addition");
 1830|       |#endif
 1831|      0|    }
 1832|      0|    return mrb_int_value(mrb, c);
 1833|      0|  }
 1834|    834|  switch (mrb_type(y)) {
 1835|      0|#ifdef MRB_USE_BIGINT
 1836|    823|  case MRB_TT_BIGINT:
  ------------------
  |  Branch (1836:3): [True: 823, False: 11]
  ------------------
 1837|    823|    return mrb_bint_add(mrb, y, x);
 1838|      0|#endif
 1839|      0|#ifdef MRB_USE_RATIONAL
 1840|      0|  case MRB_TT_RATIONAL:
  ------------------
  |  Branch (1840:3): [True: 0, False: 834]
  ------------------
 1841|      0|    return mrb_rational_add(mrb, y, x);
 1842|      0|#endif
 1843|      0|#ifdef MRB_USE_COMPLEX
 1844|      0|  case MRB_TT_COMPLEX:
  ------------------
  |  Branch (1844:3): [True: 0, False: 834]
  ------------------
 1845|      0|    return mrb_complex_add(mrb, y, x);
 1846|      0|#endif
 1847|     11|  default:
  ------------------
  |  Branch (1847:3): [True: 11, False: 823]
  ------------------
 1848|       |#ifdef MRB_NO_FLOAT
 1849|       |    mrb_raise(mrb, E_TYPE_ERROR, "non integer addition");
 1850|       |#else
 1851|     11|    return mrb_float_value(mrb, (mrb_float)a + mrb_as_float(mrb, y));
  ------------------
  |  | 1297|     11|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|     11|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
 1852|    834|#endif
 1853|    834|  }
 1854|    834|}
mrb_int_sub:
 1880|  2.15k|{
 1881|  2.15k|  mrb_int a;
 1882|       |
 1883|  2.15k|  a = mrb_integer(x);
  ------------------
  |  |  166|  2.15k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1884|  2.15k|  if (mrb_integer_p(y)) {
  ------------------
  |  |  171|  2.15k|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|  4.31k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 2.15k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|  2.15k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  4.31k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  4.31k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 7, False: 2.15k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 2.15k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 2.15k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1885|      0|    mrb_int b, c;
 1886|       |
 1887|      0|    b = mrb_integer(y);
  ------------------
  |  |  166|      0|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1888|      0|    if (mrb_int_sub_overflow(a, b, &c)) {
  ------------------
  |  Branch (1888:9): [True: 0, False: 0]
  ------------------
 1889|      0|#ifdef MRB_USE_BIGINT
 1890|      0|      x = mrb_bint_new_int(mrb, a);
 1891|      0|      return mrb_bint_sub(mrb, x, y);
 1892|       |#else
 1893|       |      mrb_int_overflow(mrb, "subtraction");
 1894|       |#endif
 1895|      0|    }
 1896|      0|    return mrb_int_value(mrb, c);
 1897|      0|  }
 1898|  2.15k|  switch (mrb_type(y)) {
 1899|      0|#ifdef MRB_USE_BIGINT
 1900|  2.15k|  case MRB_TT_BIGINT:
  ------------------
  |  Branch (1900:3): [True: 2.15k, False: 7]
  ------------------
 1901|  2.15k|    return mrb_bint_sub(mrb, mrb_bint_new_int(mrb, a), y);
 1902|      0|#endif
 1903|      0|#ifdef MRB_USE_RATIONAL
 1904|      0|  case MRB_TT_RATIONAL:
  ------------------
  |  Branch (1904:3): [True: 0, False: 2.15k]
  ------------------
 1905|      0|    return mrb_rational_sub(mrb, mrb_rational_new(mrb, a, 1), y);
 1906|      0|#endif
 1907|      0|#ifdef MRB_USE_COMPLEX
 1908|      0|  case MRB_TT_COMPLEX:
  ------------------
  |  Branch (1908:3): [True: 0, False: 2.15k]
  ------------------
 1909|      0|    return mrb_complex_sub(mrb, mrb_complex_new(mrb, (mrb_float)a, 0), y);
 1910|      0|#endif
 1911|      7|  default:
  ------------------
  |  Branch (1911:3): [True: 7, False: 2.15k]
  ------------------
 1912|       |#ifdef MRB_NO_FLOAT
 1913|       |    mrb_raise(mrb, E_TYPE_ERROR, "non integer subtraction");
 1914|       |#else
 1915|      7|    return mrb_float_value(mrb, (mrb_float)a - mrb_as_float(mrb, y));
  ------------------
  |  | 1297|      7|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|      7|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
 1916|  2.15k|#endif
 1917|  2.15k|  }
 1918|  2.15k|}
mrb_int_to_cstr:
 1944|     76|{
 1945|     76|  char *bufend = buf + len;
 1946|     76|  char *b = bufend-1;
 1947|       |
 1948|     76|  if (base < 2 || 36 < base) return NULL;
  ------------------
  |  Branch (1948:7): [True: 0, False: 76]
  |  Branch (1948:19): [True: 0, False: 76]
  ------------------
 1949|     76|  if (len < 2) return NULL;
  ------------------
  |  Branch (1949:7): [True: 0, False: 76]
  ------------------
 1950|       |
 1951|     76|  if (n == 0) {
  ------------------
  |  Branch (1951:7): [True: 14, False: 62]
  ------------------
 1952|     14|    buf[0] = '0';
 1953|     14|    buf[1] = '\0';
 1954|     14|    return buf;
 1955|     14|  }
 1956|       |
 1957|     62|  *b = '\0';
 1958|     62|  if (n < 0) {
  ------------------
  |  Branch (1958:7): [True: 16, False: 46]
  ------------------
 1959|     16|    do {
 1960|     16|      if (b-- == buf) return NULL;
  ------------------
  |  Branch (1960:11): [True: 0, False: 16]
  ------------------
 1961|     16|      *b = mrb_digitmap[-(n % base)];
 1962|     16|    } while (n /= base);
  ------------------
  |  Branch (1962:14): [True: 0, False: 16]
  ------------------
 1963|     16|    if (b-- == buf) return NULL;
  ------------------
  |  Branch (1963:9): [True: 0, False: 16]
  ------------------
 1964|     16|    *b = '-';
 1965|     16|  }
 1966|     46|  else {
 1967|     46|    do {
 1968|     46|      if (b-- == buf) return NULL;
  ------------------
  |  Branch (1968:11): [True: 0, False: 46]
  ------------------
 1969|     46|      *b = mrb_digitmap[(int)(n % base)];
 1970|     46|    } while (n /= base);
  ------------------
  |  Branch (1970:14): [True: 0, False: 46]
  ------------------
 1971|     46|  }
 1972|     62|  return b;
 1973|     62|}
mrb_integer_to_str:
 1977|     76|{
 1978|     76|  char buf[MRB_INT_BIT+1];
 1979|     76|  mrb_int val = mrb_integer(x);
  ------------------
  |  |  166|     76|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1980|       |
 1981|     76|  if (base < 2 || 36 < base) {
  ------------------
  |  Branch (1981:7): [True: 0, False: 76]
  |  Branch (1981:19): [True: 0, False: 76]
  ------------------
 1982|      0|    mrb_raisef(mrb, E_ARGUMENT_ERROR, "invalid radix %i", base);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1983|      0|  }
 1984|     76|#ifdef MRB_USE_BIGINT
 1985|     76|  if (mrb_bigint_p(x)) {
  ------------------
  |  |  314|     76|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 0, False: 76]
  |  |  ------------------
  ------------------
 1986|      0|    return mrb_bint_to_s(mrb, x, base);
 1987|      0|  }
 1988|     76|#endif
 1989|     76|  const char *p = mrb_int_to_cstr(buf, sizeof(buf), val, base);
 1990|     76|  mrb_assert(p != NULL);
  ------------------
  |  |   68|     76|#define mrb_assert(p) ((void)0)
  ------------------
 1991|     76|  mrb_value str = mrb_str_new_cstr(mrb, p);
 1992|     76|  RSTR_SET_ASCII_FLAG(mrb_str_ptr(str));
  ------------------
  |  |   89|     76|# define RSTR_SET_ASCII_FLAG(s) (void)0
  ------------------
 1993|     76|  return str;
 1994|     76|}
mrb_init_numeric:
 2211|    476|{
 2212|    476|  struct RClass *numeric, *integer;
 2213|    476|#ifndef MRB_NO_FLOAT
 2214|    476|  struct RClass *fl;
 2215|    476|#endif
 2216|       |
 2217|       |  /* Numeric Class */
 2218|    476|  numeric = mrb_define_class(mrb, "Numeric",  mrb->object_class);                /* 15.2.7 */
 2219|    476|  mrb_define_method(mrb, numeric, "finite?",  num_finite_p,    MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2220|    476|  mrb_define_method(mrb, numeric, "infinite?",num_infinite_p,  MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2221|    476|  mrb_define_method(mrb, numeric, "eql?",     num_eql,         MRB_ARGS_REQ(1)); /* 15.2.8.3.16 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2222|       |
 2223|       |  /* Integer Class */
 2224|    476|  mrb->integer_class = integer = mrb_define_class(mrb, "Integer",  numeric);     /* 15.2.8 */
 2225|    476|  MRB_SET_INSTANCE_TT(integer, MRB_TT_UNDEF);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
 2226|    476|  mrb_undef_class_method(mrb, integer, "new");
 2227|    476|  mrb_define_method(mrb, integer, "**",       int_pow,         MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2228|    476|  mrb_define_method(mrb, integer, "<=>",      num_cmp,         MRB_ARGS_REQ(1)); /* 15.2.8.3.1  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2229|    476|  mrb_define_method(mrb, integer, "<",        num_lt,          MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2230|    476|  mrb_define_method(mrb, integer, "<=",       num_le,          MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2231|    476|  mrb_define_method(mrb, integer, ">",        num_gt,          MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2232|    476|  mrb_define_method(mrb, integer, ">=",       num_ge,          MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2233|       |
 2234|    476|  mrb_define_method(mrb, integer, "to_i",     int_to_i,        MRB_ARGS_NONE()); /* 15.2.8.3.24 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2235|    476|  mrb_define_method(mrb, integer, "to_int",   int_to_i,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2236|       |
 2237|    476|  mrb_define_method(mrb, integer, "+",        int_add,         MRB_ARGS_REQ(1)); /* 15.2.8.3.1 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2238|    476|  mrb_define_method(mrb, integer, "-",        int_sub,         MRB_ARGS_REQ(1)); /* 15.2.8.3.2 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2239|    476|  mrb_define_method(mrb, integer, "*",        int_mul,         MRB_ARGS_REQ(1)); /* 15.2.8.3.3 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2240|    476|  mrb_define_method(mrb, integer, "%",        int_mod,         MRB_ARGS_REQ(1)); /* 15.2.8.3.5 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2241|    476|  mrb_define_method(mrb, integer, "/",        int_div,         MRB_ARGS_REQ(1)); /* 15.2.8.3.6 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2242|    476|  mrb_define_method(mrb, integer, "quo",      int_quo,         MRB_ARGS_REQ(1)); /* 15.2.7.4.5(x) */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2243|    476|  mrb_define_method(mrb, integer, "div",      int_idiv,        MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2244|    476|  mrb_define_method(mrb, integer, "==",       int_equal,       MRB_ARGS_REQ(1)); /* 15.2.8.3.7 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2245|    476|  mrb_define_method(mrb, integer, "~",        int_rev,         MRB_ARGS_NONE()); /* 15.2.8.3.8 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2246|    476|  mrb_define_method(mrb, integer, "&",        int_and,         MRB_ARGS_REQ(1)); /* 15.2.8.3.9 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2247|    476|  mrb_define_method(mrb, integer, "|",        int_or,          MRB_ARGS_REQ(1)); /* 15.2.8.3.10 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2248|    476|  mrb_define_method(mrb, integer, "^",        int_xor,         MRB_ARGS_REQ(1)); /* 15.2.8.3.11 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2249|    476|  mrb_define_method(mrb, integer, "<<",       int_lshift,      MRB_ARGS_REQ(1)); /* 15.2.8.3.12 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2250|    476|  mrb_define_method(mrb, integer, ">>",       int_rshift,      MRB_ARGS_REQ(1)); /* 15.2.8.3.13 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2251|    476|  mrb_define_method(mrb, integer, "ceil",     int_ceil,        MRB_ARGS_OPT(1)); /* 15.2.8.3.14 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 2252|    476|  mrb_define_method(mrb, integer, "floor",    int_floor,       MRB_ARGS_OPT(1)); /* 15.2.8.3.17 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 2253|    476|  mrb_define_method(mrb, integer, "round",    int_round,       MRB_ARGS_OPT(1)); /* 15.2.8.3.20 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 2254|    476|  mrb_define_method(mrb, integer, "truncate", int_truncate,    MRB_ARGS_OPT(1)); /* 15.2.8.3.26 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 2255|    476|  mrb_define_method(mrb, integer, "hash",     int_hash,        MRB_ARGS_NONE()); /* 15.2.8.3.18 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2256|    476|#ifndef MRB_NO_FLOAT
 2257|    476|  mrb_define_method(mrb, integer, "to_f",     int_to_f,        MRB_ARGS_NONE()); /* 15.2.8.3.23 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2258|    476|#endif
 2259|    476|  mrb_define_method(mrb, integer, "to_s",     int_to_s,        MRB_ARGS_OPT(1)); /* 15.2.8.3.25 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 2260|    476|  mrb_define_method(mrb, integer, "inspect",  int_to_s,        MRB_ARGS_OPT(1));
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 2261|    476|  mrb_define_method(mrb, integer, "divmod",   int_divmod,      MRB_ARGS_REQ(1)); /* 15.2.8.3.30(x) */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2262|    476|  mrb_define_method(mrb, integer, "__coerce_step_counter", coerce_step_counter, MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2263|       |
 2264|       |  /* Fixnum Class for compatibility */
 2265|    476|  mrb_define_const(mrb, mrb->object_class, "Fixnum", mrb_obj_value(integer));
 2266|       |
 2267|    476|#ifndef MRB_NO_FLOAT
 2268|       |  /* Float Class */
 2269|    476|  mrb->float_class = fl = mrb_define_class(mrb, "Float", numeric);                 /* 15.2.9 */
 2270|    476|  MRB_SET_INSTANCE_TT(fl, MRB_TT_UNDEF);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
 2271|    476|  mrb_undef_class_method(mrb,  fl, "new");
 2272|    476|  mrb_define_method(mrb, fl,      "**",        flo_pow,        MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2273|    476|  mrb_define_method(mrb, fl,      "/",         flo_div,        MRB_ARGS_REQ(1)); /* 15.2.9.3.6 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2274|    476|  mrb_define_method(mrb, fl,      "quo",       flo_div,        MRB_ARGS_REQ(1)); /* 15.2.7.4.5(x) */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2275|    476|  mrb_define_method(mrb, fl,      "div",       flo_idiv,       MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2276|    476|  mrb_define_method(mrb, fl,      "+",         flo_add,        MRB_ARGS_REQ(1)); /* 15.2.9.3.3 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2277|    476|  mrb_define_method(mrb, fl,      "-",         flo_sub,        MRB_ARGS_REQ(1)); /* 15.2.9.3.4 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2278|    476|  mrb_define_method(mrb, fl,      "*",         flo_mul,        MRB_ARGS_REQ(1)); /* 15.2.9.3.5 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2279|    476|  mrb_define_method(mrb, fl,      "%",         flo_mod,        MRB_ARGS_REQ(1)); /* 15.2.9.3.7 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2280|    476|  mrb_define_method(mrb, fl,      "<=>",       num_cmp,        MRB_ARGS_REQ(1)); /* 15.2.9.3.1 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2281|    476|  mrb_define_method(mrb, fl,      "<",         num_lt,         MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2282|    476|  mrb_define_method(mrb, fl,      "<=",        num_le,         MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2283|    476|  mrb_define_method(mrb, fl,      ">",         num_gt,         MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2284|    476|  mrb_define_method(mrb, fl,      ">=",        num_ge,         MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2285|    476|  mrb_define_method(mrb, fl,      "==",        flo_eq,         MRB_ARGS_REQ(1)); /* 15.2.9.3.2 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2286|    476|  mrb_define_method(mrb, fl,      "~",         flo_rev,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2287|    476|  mrb_define_method(mrb, fl,      "&",         flo_and,        MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2288|    476|  mrb_define_method(mrb, fl,      "|",         flo_or,         MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2289|    476|  mrb_define_method(mrb, fl,      "^",         flo_xor,        MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2290|    476|  mrb_define_method(mrb, fl,      ">>",        flo_rshift,     MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2291|    476|  mrb_define_method(mrb, fl,      "<<",        flo_lshift,     MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2292|    476|  mrb_define_method(mrb, fl,      "ceil",      flo_ceil,       MRB_ARGS_OPT(1)); /* 15.2.9.3.8  */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 2293|    476|  mrb_define_method(mrb, fl,      "finite?",   flo_finite_p,   MRB_ARGS_NONE()); /* 15.2.9.3.9  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2294|    476|  mrb_define_method(mrb, fl,      "floor",     flo_floor,      MRB_ARGS_OPT(1)); /* 15.2.9.3.10 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 2295|    476|  mrb_define_method(mrb, fl,      "infinite?", flo_infinite_p, MRB_ARGS_NONE()); /* 15.2.9.3.11 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2296|    476|  mrb_define_method(mrb, fl,      "round",     flo_round,      MRB_ARGS_OPT(1)); /* 15.2.9.3.12 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 2297|    476|  mrb_define_method(mrb, fl,      "to_f",      flo_to_f,       MRB_ARGS_NONE()); /* 15.2.9.3.13 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2298|    476|  mrb_define_method(mrb, fl,      "to_i",      flo_to_i,       MRB_ARGS_NONE()); /* 15.2.9.3.14 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2299|    476|  mrb_define_method(mrb, fl,      "truncate",  flo_truncate,   MRB_ARGS_OPT(1)); /* 15.2.9.3.15 */
  ------------------
  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  ------------------
 2300|    476|  mrb_define_method(mrb, fl,      "divmod",    flo_divmod,     MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 2301|       |
 2302|    476|  mrb_define_method(mrb, fl,      "to_s",      flo_to_s,       MRB_ARGS_NONE()); /* 15.2.9.3.16(x) */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2303|    476|  mrb_define_method(mrb, fl,      "inspect",   flo_to_s,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2304|    476|  mrb_define_method(mrb, fl,      "nan?",      flo_nan_p,      MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2305|    476|  mrb_define_method(mrb, fl,      "abs",       flo_abs,        MRB_ARGS_NONE()); /* 15.2.7.4.3 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2306|    476|  mrb_define_method(mrb, fl,      "hash",      flo_hash,       MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 2307|       |
 2308|    476|#ifdef INFINITY
 2309|    476|  mrb_define_const_id(mrb, fl, MRB_SYM(INFINITY), mrb_float_value(mrb, INFINITY));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 2310|    476|#endif
 2311|    476|#ifdef NAN
 2312|    476|  mrb_define_const_id(mrb, fl, MRB_SYM(NAN), mrb_float_value(mrb, NAN));
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 2313|    476|#endif
 2314|    476|#endif
 2315|    476|}
numeric.c:mrb_int_noconv:
   38|      8|{
   39|      8|  mrb_raisef(mrb, E_TYPE_ERROR, "can't convert %Y into Integer", y);
  ------------------
  |  | 1375|      8|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      8|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      8|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   40|      8|}
numeric.c:flo_to_i:
 1050|     64|{
 1051|     64|  mrb_float f = mrb_float(num);
  ------------------
  |  |  155|     64|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 1052|       |
 1053|     64|  mrb_check_num_exact(mrb, f);
 1054|     64|  if (!FIXABLE_FLOAT(f)) {
  ------------------
  |  |   27|     64|#define FIXABLE_FLOAT(f) ((f)>=-9223372036854775808.0 && (f)<9223372036854775808.0)
  |  |  ------------------
  |  |  |  Branch (27:27): [True: 61, False: 3]
  |  |  |  Branch (27:58): [True: 58, False: 3]
  |  |  ------------------
  ------------------
 1055|      6|#ifdef MRB_USE_BIGINT
 1056|      6|    return mrb_bint_new_float(mrb, f);
 1057|       |#else
 1058|       |    mrb_int_overflow(mrb, "to_f");
 1059|       |#endif
 1060|      6|  }
 1061|     58|  if (f > 0.0) f = floor(f);
  ------------------
  |  Branch (1061:7): [True: 15, False: 43]
  ------------------
 1062|     58|  if (f < 0.0) f = ceil(f);
  ------------------
  |  Branch (1062:7): [True: 32, False: 26]
  ------------------
 1063|       |
 1064|     58|  return mrb_int_value(mrb, (mrb_int)f);
 1065|     64|}
numeric.c:cmpnum:
 2024|  2.12k|{
 2025|  2.12k|#ifdef MRB_USE_BIGINT
 2026|  2.12k|  if (mrb_bigint_p(v1)) {
  ------------------
  |  |  314|  2.12k|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 2.11k, False: 6]
  |  |  ------------------
  ------------------
 2027|  2.11k|    return mrb_bint_cmp(mrb, v1, v2);
 2028|  2.11k|  }
 2029|      6|#endif
 2030|       |
 2031|       |#ifdef MRB_NO_FLOAT
 2032|       |  mrb_int x, y;
 2033|       |#else
 2034|      6|  mrb_float x, y;
 2035|      6|#endif
 2036|       |
 2037|       |#ifdef MRB_NO_FLOAT
 2038|       |  x = mrb_integer(v1);
 2039|       |#else
 2040|      6|  x = mrb_as_float(mrb, v1);
  ------------------
  |  | 1297|      6|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|      6|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
 2041|      6|#endif
 2042|      6|  switch (mrb_type(v2)) {
 2043|      0|  case MRB_TT_INTEGER:
  ------------------
  |  Branch (2043:3): [True: 0, False: 6]
  ------------------
 2044|       |#ifdef MRB_NO_FLOAT
 2045|       |    y = mrb_integer(v2);
 2046|       |#else
 2047|      0|    y = (mrb_float)mrb_integer(v2);
  ------------------
  |  |  166|      0|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 2048|      0|#endif
 2049|      0|    break;
 2050|      0|#ifndef MRB_NO_FLOAT
 2051|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (2051:3): [True: 0, False: 6]
  ------------------
 2052|      0|    y = mrb_float(v2);
  ------------------
  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 2053|      0|    break;
 2054|      0|#ifdef MRB_USE_RATIONAL
 2055|      0|  case MRB_TT_RATIONAL:
  ------------------
  |  Branch (2055:3): [True: 0, False: 6]
  ------------------
 2056|      0|    y = mrb_as_float(mrb, v2);
  ------------------
  |  | 1297|      0|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
 2057|      0|    break;
 2058|      0|#endif
 2059|      0|#endif
 2060|      6|  default:
  ------------------
  |  Branch (2060:3): [True: 6, False: 0]
  ------------------
 2061|      6|    return -2;
 2062|      6|  }
 2063|      0|  if (x > y)
  ------------------
  |  Branch (2063:7): [True: 0, False: 0]
  ------------------
 2064|      0|    return 1;
 2065|      0|  else {
 2066|      0|    if (x < y)
  ------------------
  |  Branch (2066:9): [True: 0, False: 0]
  ------------------
 2067|      0|      return -1;
 2068|      0|    return 0;
 2069|      0|  }
 2070|      0|}
numeric.c:num_lt:
 2116|     14|{
 2117|     14|  mrb_value other = mrb_get_arg1(mrb);
 2118|     14|  mrb_int n;
 2119|       |
 2120|     14|  n = cmpnum(mrb, self, other);
 2121|     14|  if (n == -2) cmperr(mrb, self, other);
  ------------------
  |  Branch (2121:7): [True: 2, False: 12]
  ------------------
 2122|     12|  if (n < 0) return mrb_true_value();
  ------------------
  |  Branch (2122:7): [True: 5, False: 7]
  ------------------
 2123|      7|  return mrb_false_value();
 2124|     12|}
numeric.c:cmperr:
 2110|      9|{
 2111|      9|  mrb_raisef(mrb, E_ARGUMENT_ERROR, "comparison of %t with %t failed", v1, v2);
  ------------------
  |  | 1377|      9|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      9|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      9|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2112|      9|}
numeric.c:num_le:
 2128|  1.34k|{
 2129|  1.34k|  mrb_value other = mrb_get_arg1(mrb);
 2130|  1.34k|  mrb_int n;
 2131|       |
 2132|  1.34k|  n = cmpnum(mrb, self, other);
 2133|  1.34k|  if (n == -2) cmperr(mrb, self, other);
  ------------------
  |  Branch (2133:7): [True: 4, False: 1.34k]
  ------------------
 2134|  1.34k|  if (n <= 0) return mrb_true_value();
  ------------------
  |  Branch (2134:7): [True: 646, False: 698]
  ------------------
 2135|    698|  return mrb_false_value();
 2136|  1.34k|}
numeric.c:num_gt:
 2140|    720|{
 2141|    720|  mrb_value other = mrb_get_arg1(mrb);
 2142|    720|  mrb_int n;
 2143|       |
 2144|    720|  n = cmpnum(mrb, self, other);
 2145|    720|  if (n == -2) cmperr(mrb, self, other);
  ------------------
  |  Branch (2145:7): [True: 3, False: 717]
  ------------------
 2146|    717|  if (n > 0) return mrb_true_value();
  ------------------
  |  Branch (2146:7): [True: 621, False: 96]
  ------------------
 2147|     96|  return mrb_false_value();
 2148|    717|}
numeric.c:num_ge:
 2152|     43|{
 2153|     43|  mrb_value other = mrb_get_arg1(mrb);
 2154|     43|  mrb_int n;
 2155|       |
 2156|     43|  n = cmpnum(mrb, self, other);
 2157|     43|  if (n == -2) cmperr(mrb, self, other);
  ------------------
  |  Branch (2157:7): [True: 0, False: 43]
  ------------------
 2158|     43|  if (n >= 0) return mrb_true_value();
  ------------------
  |  Branch (2158:7): [True: 40, False: 3]
  ------------------
 2159|      3|  return mrb_false_value();
 2160|     43|}
numeric.c:int_add:
 1867|  2.43k|{
 1868|  2.43k|  mrb_value other = mrb_get_arg1(mrb);
 1869|       |
 1870|  2.43k|#ifdef MRB_USE_BIGINT
 1871|  2.43k|  if (mrb_bigint_p(self)) {
  ------------------
  |  |  314|  2.43k|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 1.59k, False: 834]
  |  |  ------------------
  ------------------
 1872|  1.59k|    return mrb_bint_add(mrb, self, other);
 1873|  1.59k|  }
 1874|    834|#endif
 1875|    834|  return mrb_int_add(mrb, self, other);
 1876|  2.43k|}
numeric.c:int_sub:
 1931|  3.69k|{
 1932|  3.69k|  mrb_value other = mrb_get_arg1(mrb);
 1933|       |
 1934|  3.69k|#ifdef MRB_USE_BIGINT
 1935|  3.69k|  if (mrb_bigint_p(self)) {
  ------------------
  |  |  314|  3.69k|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 1.53k, False: 2.15k]
  |  |  ------------------
  ------------------
 1936|  1.53k|    return mrb_bint_sub(mrb, self, other);
 1937|  1.53k|  }
 1938|  2.15k|#endif
 1939|  2.15k|  return mrb_int_sub(mrb, self, other);
 1940|  3.69k|}
numeric.c:int_mul:
 1185|  1.77k|{
 1186|  1.77k|  mrb_value y = mrb_get_arg1(mrb);
 1187|       |
 1188|  1.77k|#ifdef MRB_USE_BIGINT
 1189|  1.77k|  if (mrb_bigint_p(x)) {
  ------------------
  |  |  314|  1.77k|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 893, False: 885]
  |  |  ------------------
  ------------------
 1190|    893|    return mrb_bint_mul(mrb, x, y);
 1191|    893|  }
 1192|    885|#endif
 1193|    885|  return mrb_int_mul(mrb, x, y);
 1194|  1.77k|}
numeric.c:int_mod:
 1229|  3.85k|{
 1230|  3.85k|  mrb_value y = mrb_get_arg1(mrb);
 1231|  3.85k|  mrb_int a, b;
 1232|       |
 1233|  3.85k|#ifdef MRB_USE_BIGINT
 1234|  3.85k|  if (mrb_bigint_p(x)) {
  ------------------
  |  |  314|  3.85k|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 1.82k, False: 2.02k]
  |  |  ------------------
  ------------------
 1235|  1.82k|    return mrb_bint_mod(mrb, x, y);
 1236|  1.82k|  }
 1237|  2.02k|#endif
 1238|  2.02k|  a = mrb_integer(x);
  ------------------
  |  |  166|  2.02k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1239|  2.02k|  if (a == 0) return x;
  ------------------
  |  Branch (1239:7): [True: 336, False: 1.69k]
  ------------------
 1240|  1.69k|  if (mrb_integer_p(y)) {
  ------------------
  |  |  171|  1.69k|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|  3.38k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 528, False: 1.16k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|  1.16k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  2.33k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  2.33k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 303, False: 862]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 862]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 206, False: 656]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1241|    734|    b = mrb_integer(y);
  ------------------
  |  |  166|    734|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1242|    734|    if (b == 0) mrb_int_zerodiv(mrb);
  ------------------
  |  Branch (1242:9): [True: 4, False: 730]
  ------------------
 1243|    730|    if (a == MRB_INT_MIN && b == -1) return mrb_fixnum_value(0);
  ------------------
  |  |   81|  1.46k|# define MRB_INT_MIN INT64_MIN
  ------------------
  |  Branch (1243:9): [True: 1, False: 729]
  |  Branch (1243:29): [True: 0, False: 1]
  ------------------
 1244|    730|    mrb_int mod = a % b;
 1245|    730|    if ((a < 0) != (b < 0) && mod != 0) {
  ------------------
  |  Branch (1245:9): [True: 320, False: 410]
  |  Branch (1245:31): [True: 246, False: 74]
  ------------------
 1246|    246|      mod += b;
 1247|    246|    }
 1248|    730|    return mrb_int_value(mrb, mod);
 1249|    730|  }
 1250|       |#ifdef MRB_NO_FLOAT
 1251|       |  mrb_raise(mrb, E_TYPE_ERROR, "non integer modulo");
 1252|       |#else
 1253|    959|  mrb_float mod;
 1254|       |
 1255|    959|  flodivmod(mrb, (mrb_float)a, mrb_as_float(mrb, y), NULL, &mod);
  ------------------
  |  | 1297|    959|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|    959|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
 1256|    959|  return mrb_float_value(mrb, mod);
 1257|  1.69k|#endif
 1258|  1.69k|}
numeric.c:flodivmod:
  485|  1.88k|{
  486|  1.88k|  double div, mod;
  487|       |
  488|  1.88k|  if (isnan(y)) {
  489|       |    /* y is NaN so all results are NaN */
  490|    367|    div = mod = y;
  491|    367|    goto exit;
  492|    367|  }
  493|  1.51k|  if (y == 0.0) {
  ------------------
  |  Branch (493:7): [True: 2, False: 1.51k]
  ------------------
  494|      2|    mrb_int_zerodiv(mrb);
  495|      2|  }
  496|  1.51k|  if (isinf(y) && !isinf(x)) {
  ------------------
  |  Branch (496:19): [True: 29, False: 45]
  ------------------
  497|     29|    mod = x;
  498|     29|  }
  499|  1.48k|  else {
  500|  1.48k|    mod = fmod(x, y);
  501|  1.48k|  }
  502|  1.51k|  if (isinf(x) && !isinf(y)) {
  ------------------
  |  Branch (502:19): [True: 144, False: 45]
  ------------------
  503|    144|    div = x;
  504|    144|  }
  505|  1.37k|  else {
  506|  1.37k|    div = (x - mod) / y;
  507|  1.37k|    if (modp && divp) div = round(div);
  ------------------
  |  Branch (507:9): [True: 1.37k, False: 0]
  |  Branch (507:17): [True: 0, False: 1.37k]
  ------------------
  508|  1.37k|  }
  509|  1.51k|  if (div == 0) div = 0.0;
  ------------------
  |  Branch (509:7): [True: 756, False: 758]
  ------------------
  510|  1.51k|  if (mod == 0) mod = 0.0;
  ------------------
  |  Branch (510:7): [True: 360, False: 1.15k]
  ------------------
  511|  1.51k|  if (y*mod < 0) {
  ------------------
  |  Branch (511:7): [True: 269, False: 1.24k]
  ------------------
  512|    269|    mod += y;
  513|    269|    div -= 1.0;
  514|    269|  }
  515|  1.88k| exit:
  516|  1.88k|  if (modp) *modp = mod;
  ------------------
  |  Branch (516:7): [True: 1.88k, False: 0]
  ------------------
  517|  1.88k|  if (divp) *divp = div;
  ------------------
  |  Branch (517:7): [True: 0, False: 1.88k]
  ------------------
  518|  1.88k|}
numeric.c:int_div:
  154|  3.96k|{
  155|  3.96k|  mrb_value y = mrb_get_arg1(mrb);
  156|  3.96k|#ifdef MRB_USE_BIGINT
  157|  3.96k|  if (mrb_bigint_p(x)) {
  ------------------
  |  |  314|  3.96k|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 1.73k, False: 2.23k]
  |  |  ------------------
  ------------------
  158|  1.73k|    return mrb_bint_div(mrb, x, y);
  159|  1.73k|  }
  160|  2.23k|#endif
  161|  2.23k| mrb_int a = mrb_integer(x);
  ------------------
  |  |  166|  2.23k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
  162|       |
  163|  2.23k|  if (mrb_integer_p(y)) {
  ------------------
  |  |  171|  2.23k|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|  4.46k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 2.23k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|  2.23k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  4.46k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  4.46k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 2.23k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 2.23k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 2.23k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|      0|    return mrb_div_int_value(mrb, a, mrb_integer(y));
  ------------------
  |  |  166|      0|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
  165|      0|  }
  166|  2.23k|  switch (mrb_type(y)) {
  167|      0|#ifdef MRB_USE_BIGINT
  168|  2.23k|  case MRB_TT_BIGINT:
  ------------------
  |  Branch (168:3): [True: 2.23k, False: 0]
  ------------------
  169|  2.23k|    return mrb_bint_div(mrb, mrb_bint_new_int(mrb, a), y);
  170|      0|#endif
  171|      0|#ifdef MRB_USE_RATIONAL
  172|      0|  case MRB_TT_RATIONAL:
  ------------------
  |  Branch (172:3): [True: 0, False: 2.23k]
  ------------------
  173|      0|    return mrb_rational_div(mrb, mrb_rational_new(mrb, a, 1), y);
  174|      0|#endif
  175|      0|#ifdef MRB_USE_COMPLEX
  176|      0|  case MRB_TT_COMPLEX:
  ------------------
  |  Branch (176:3): [True: 0, False: 2.23k]
  ------------------
  177|      0|    x = mrb_complex_new(mrb, (mrb_float)a, 0);
  178|      0|    return mrb_complex_div(mrb, x, y);
  179|      0|#endif
  180|      0|#ifndef MRB_NO_FLOAT
  181|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (181:3): [True: 0, False: 2.23k]
  ------------------
  182|      0|    return mrb_float_value(mrb, mrb_div_float((mrb_float)a, mrb_as_float(mrb, y)));
  ------------------
  |  | 1297|      0|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
  183|      0|#endif
  184|      0|  default:
  ------------------
  |  Branch (184:3): [True: 0, False: 2.23k]
  ------------------
  185|      0|    mrb_int_noconv(mrb, y);
  186|  2.23k|  }
  187|  2.23k|}
numeric.c:int_equal:
 1331|  6.59k|{
 1332|  6.59k|  mrb_value y = mrb_get_arg1(mrb);
 1333|       |
 1334|  6.59k|  switch (mrb_type(y)) {
 1335|  4.83k|  case MRB_TT_INTEGER:
  ------------------
  |  Branch (1335:3): [True: 4.83k, False: 1.76k]
  ------------------
 1336|  4.83k|    return mrb_bool_value(mrb_integer(x) == mrb_integer(y));
  ------------------
  |  |  166|  4.83k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
                  return mrb_bool_value(mrb_integer(x) == mrb_integer(y));
  ------------------
  |  |  166|  4.83k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1337|      0|#ifndef MRB_NO_FLOAT
 1338|     10|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (1338:3): [True: 10, False: 6.58k]
  ------------------
 1339|     10|    return mrb_bool_value((mrb_float)mrb_integer(x) == mrb_float(y));
  ------------------
  |  |  166|     10|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
                  return mrb_bool_value((mrb_float)mrb_integer(x) == mrb_float(y));
  ------------------
  |  |  155|     10|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 1340|      0|#endif
 1341|      0|#ifdef MRB_USE_BIGINT
 1342|     55|  case MRB_TT_BIGINT:
  ------------------
  |  Branch (1342:3): [True: 55, False: 6.53k]
  ------------------
 1343|     55|    return mrb_bool_value(mrb_bint_cmp(mrb, y, x) == 0);
 1344|      0|#endif
 1345|      0|#ifdef MRB_USE_RATIONAL
 1346|      0|  case MRB_TT_RATIONAL:
  ------------------
  |  Branch (1346:3): [True: 0, False: 6.59k]
  ------------------
 1347|      0|    return mrb_bool_value(mrb_equal(mrb, y, x));
 1348|      0|#endif
 1349|      0|#ifdef MRB_USE_COMPLEX
 1350|      0|  case MRB_TT_COMPLEX:
  ------------------
  |  Branch (1350:3): [True: 0, False: 6.59k]
  ------------------
 1351|      0|    return mrb_bool_value(mrb_equal(mrb, y, x));
 1352|      0|#endif
 1353|  1.69k|  default:
  ------------------
  |  Branch (1353:3): [True: 1.69k, False: 4.89k]
  ------------------
 1354|  1.69k|    return mrb_false_value();
 1355|  6.59k|  }
 1356|  6.59k|}
numeric.c:int_xor:
 1453|  2.53k|{
 1454|  2.53k|  mrb_value y = mrb_get_arg1(mrb);
 1455|       |
 1456|  2.53k|#ifdef MRB_USE_BIGINT
 1457|  2.53k|  if (mrb_bigint_p(x)) {
  ------------------
  |  |  314|  2.53k|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 1.10k, False: 1.43k]
  |  |  ------------------
  ------------------
 1458|  1.10k|    return mrb_bint_xor(mrb, x, y);
 1459|  1.10k|  }
 1460|  1.43k|  if (mrb_bigint_p(y)) {
  ------------------
  |  |  314|  1.43k|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 843, False: 589]
  |  |  ------------------
  ------------------
 1461|    843|    return mrb_bint_xor(mrb, mrb_as_bint(mrb, x), y);
 1462|    843|  }
 1463|    589|#endif
 1464|    589|  bit_op(x, y, or, ^);
  ------------------
  |  | 1389|    589|#define bit_op(x,y,op1,op2) do {\
  |  | 1390|    589|  if (mrb_integer_p(y)) return mrb_int_value(mrb, (mrb_integer(x) op2 mrb_integer(y))); \
  |  |  ------------------
  |  |  |  |  171|    589|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|  1.17k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (76:3): [True: 513, False: 76]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  |  |  ------------------
  |  |  |  |  |  |   78|     76|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  148|    152|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   71|    152|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (148:29): [True: 38, False: 38]
  |  |  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 38]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (78:27): [True: 38, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (mrb_integer_p(y)) return mrb_int_value(mrb, (mrb_integer(x) op2 mrb_integer(y))); \
  |  |  ------------------
  |  |  |  |  166|    551|#define mrb_integer(o) mrb_integer_func(o)
  |  |  ------------------
  |  |                 if (mrb_integer_p(y)) return mrb_int_value(mrb, (mrb_integer(x) op2 mrb_integer(y))); \
  |  |  ------------------
  |  |  |  |  166|    551|#define mrb_integer(o) mrb_integer_func(o)
  |  |  ------------------
  |  | 1391|    589|  return flo_ ## op1(mrb, mrb_float_value(mrb, (mrb_float)mrb_integer(x)));\
  |  |  ------------------
  |  |  |  |  166|     38|#define mrb_integer(o) mrb_integer_func(o)
  |  |  ------------------
  |  | 1392|    589|} while(0)
  |  |  ------------------
  |  |  |  Branch (1392:9): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1465|    589|}
numeric.c:int_rshift:
 1550|  1.77k|{
 1551|  1.77k|  mrb_int width, val;
 1552|       |
 1553|  1.77k|  width = mrb_as_int(mrb, mrb_get_arg1(mrb));
  ------------------
  |  | 1425|  1.77k|#define mrb_as_int(mrb, val) mrb_integer(mrb_ensure_int_type(mrb, val))
  |  |  ------------------
  |  |  |  |  166|  1.77k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  ------------------
  ------------------
 1554|  1.77k|  if (width == 0) {
  ------------------
  |  Branch (1554:7): [True: 204, False: 1.56k]
  ------------------
 1555|    204|    return x;
 1556|    204|  }
 1557|  1.56k|  if (width == MRB_INT_MIN) mrb_int_overflow(mrb, "bit shift");
  ------------------
  |  |   81|  1.56k|# define MRB_INT_MIN INT64_MIN
  ------------------
  |  Branch (1557:7): [True: 3, False: 1.56k]
  ------------------
 1558|  1.56k|#ifdef MRB_USE_BIGINT
 1559|  1.56k|  if (mrb_bigint_p(x)) {
  ------------------
  |  |  314|  1.56k|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 716, False: 847]
  |  |  ------------------
  ------------------
 1560|    716|    return mrb_bint_rshift(mrb, x, width);
 1561|    716|  }
 1562|    847|#endif
 1563|    847|  val = mrb_integer(x);
  ------------------
  |  |  166|    847|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1564|    847|  if (val == 0) return x;
  ------------------
  |  Branch (1564:7): [True: 172, False: 675]
  ------------------
 1565|    675|  if (!mrb_num_shift(mrb, val, -width, &val)) {
  ------------------
  |  Branch (1565:7): [True: 229, False: 446]
  ------------------
 1566|    229|#ifdef MRB_USE_BIGINT
 1567|    229|    return mrb_bint_rshift(mrb, mrb_bint_new_int(mrb, val), width);
 1568|       |#else
 1569|       |    mrb_int_overflow(mrb, "bit shift");
 1570|       |#endif
 1571|    229|  }
 1572|    446|  return mrb_int_value(mrb, val);
 1573|    675|}
numeric.c:flo_div:
  322|    256|{
  323|    256|  mrb_value y = mrb_get_arg1(mrb);
  324|    256|  mrb_float a = mrb_float(x);
  ------------------
  |  |  155|    256|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  325|       |
  326|    256|  switch(mrb_type(y)) {
  327|      0|#ifdef MRB_USE_COMPLEX
  328|      0|  case MRB_TT_COMPLEX:
  ------------------
  |  Branch (328:3): [True: 0, False: 256]
  ------------------
  329|      0|    return mrb_complex_div(mrb, mrb_complex_new(mrb, a, 0), y);
  330|      0|#endif
  331|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (331:3): [True: 0, False: 256]
  ------------------
  332|      0|    a = mrb_div_float(a, mrb_float(y));
  ------------------
  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  333|      0|    return mrb_float_value(mrb, a);
  334|    256|  default:
  ------------------
  |  Branch (334:3): [True: 256, False: 0]
  ------------------
  335|    256|    a = mrb_div_float(a, mrb_as_float(mrb, y));
  ------------------
  |  | 1297|    256|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|    256|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
  336|    256|    return mrb_float_value(mrb, a);
  337|    256|  }
  338|      0|  return mrb_float_value(mrb, a);
  339|    256|}
numeric.c:flo_add:
  413|     81|{
  414|     81|  mrb_value y = mrb_get_arg1(mrb);
  415|     81|  mrb_float a = mrb_float(x);
  ------------------
  |  |  155|     81|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  416|       |
  417|     81|  switch (mrb_type(y)) {
  418|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (418:3): [True: 0, False: 81]
  ------------------
  419|      0|    return mrb_float_value(mrb, a + mrb_float(y));
  ------------------
  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  420|      0|#if defined(MRB_USE_COMPLEX)
  421|      0|  case MRB_TT_COMPLEX:
  ------------------
  |  Branch (421:3): [True: 0, False: 81]
  ------------------
  422|      0|    return mrb_complex_add(mrb, y, x);
  423|      0|#endif
  424|     81|  default:
  ------------------
  |  Branch (424:3): [True: 81, False: 0]
  ------------------
  425|     81|    return mrb_float_value(mrb, a + mrb_as_float(mrb, y));
  ------------------
  |  | 1297|     81|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|     81|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
  426|     81|  }
  427|     81|}
numeric.c:flo_sub:
  440|     49|{
  441|     49|  mrb_value y = mrb_get_arg1(mrb);
  442|     49|  mrb_float a = mrb_float(x);
  ------------------
  |  |  155|     49|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  443|       |
  444|     49|  switch (mrb_type(y)) {
  445|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (445:3): [True: 0, False: 49]
  ------------------
  446|      0|    return mrb_float_value(mrb, a - mrb_float(y));
  ------------------
  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  447|      0|#if defined(MRB_USE_COMPLEX)
  448|      0|  case MRB_TT_COMPLEX:
  ------------------
  |  Branch (448:3): [True: 0, False: 49]
  ------------------
  449|      0|    return mrb_complex_sub(mrb, mrb_complex_new(mrb, a, 0), y);
  450|      0|#endif
  451|     49|  default:
  ------------------
  |  Branch (451:3): [True: 49, False: 0]
  ------------------
  452|     49|    return mrb_float_value(mrb, a - mrb_as_float(mrb, y));
  ------------------
  |  | 1297|     49|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|     49|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
  453|     49|  }
  454|     49|}
numeric.c:flo_mul:
  467|     62|{
  468|     62|  mrb_value y = mrb_get_arg1(mrb);
  469|     62|  mrb_float a = mrb_float(x);
  ------------------
  |  |  155|     62|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  470|       |
  471|     62|  switch (mrb_type(y)) {
  472|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (472:3): [True: 0, False: 62]
  ------------------
  473|      0|    return mrb_float_value(mrb, a * mrb_float(y));
  ------------------
  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  474|      0|#if defined(MRB_USE_COMPLEX)
  475|      0|  case MRB_TT_COMPLEX:
  ------------------
  |  Branch (475:3): [True: 0, False: 62]
  ------------------
  476|      0|    return mrb_complex_mul(mrb, y, x);
  477|      0|#endif
  478|     62|  default:
  ------------------
  |  Branch (478:3): [True: 62, False: 0]
  ------------------
  479|     62|    return mrb_float_value(mrb, a * mrb_as_float(mrb, y));
  ------------------
  |  | 1297|     62|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|     62|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
  480|     62|  }
  481|     62|}
numeric.c:flo_mod:
  534|    927|{
  535|    927|  mrb_value y = mrb_get_arg1(mrb);
  536|    927|  mrb_float mod;
  537|       |
  538|    927|  flodivmod(mrb, mrb_float(x), mrb_as_float(mrb, y), NULL, &mod);
  ------------------
  |  |  155|    927|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
                flodivmod(mrb, mrb_float(x), mrb_as_float(mrb, y), NULL, &mod);
  ------------------
  |  | 1297|    927|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|    927|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
  539|    927|  return mrb_float_value(mrb, mod);
  540|    927|}
numeric.c:flo_eq:
  594|    416|{
  595|    416|  mrb_value y = mrb_get_arg1(mrb);
  596|       |
  597|    416|  switch (mrb_type(y)) {
  598|      0|  case MRB_TT_INTEGER:
  ------------------
  |  Branch (598:3): [True: 0, False: 416]
  ------------------
  599|      0|    return mrb_bool_value(mrb_float(x) == (mrb_float)mrb_integer(y));
  ------------------
  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
                  return mrb_bool_value(mrb_float(x) == (mrb_float)mrb_integer(y));
  ------------------
  |  |  166|      0|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
  600|      0|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (600:3): [True: 0, False: 416]
  ------------------
  601|      0|    return mrb_bool_value(mrb_float(x) == mrb_float(y));
  ------------------
  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
                  return mrb_bool_value(mrb_float(x) == mrb_float(y));
  ------------------
  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  602|      0|#ifdef MRB_USE_RATIONAL
  603|      0|  case MRB_TT_RATIONAL:
  ------------------
  |  Branch (603:3): [True: 0, False: 416]
  ------------------
  604|      0|    return mrb_bool_value(mrb_float(x) == mrb_as_float(mrb, y));
  ------------------
  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
                  return mrb_bool_value(mrb_float(x) == mrb_as_float(mrb, y));
  ------------------
  |  | 1297|      0|#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
  |  |  ------------------
  |  |  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  ------------------
  ------------------
  605|      0|#endif
  606|      0|#ifdef MRB_USE_COMPLEX
  607|      0|  case MRB_TT_COMPLEX:
  ------------------
  |  Branch (607:3): [True: 0, False: 416]
  ------------------
  608|      0|    return mrb_bool_value(mrb_equal(mrb, y, x));
  609|      0|#endif
  610|    416|  default:
  ------------------
  |  Branch (610:3): [True: 416, False: 0]
  ------------------
  611|    416|    return mrb_false_value();
  612|    416|  }
  613|    416|}
numeric.c:value_int64:
  617|    653|{
  618|    653|  switch (mrb_type(x)) {
  619|    279|  case MRB_TT_INTEGER:
  ------------------
  |  Branch (619:3): [True: 279, False: 374]
  ------------------
  620|    279|    return (int64_t)mrb_integer(x);
  ------------------
  |  |  166|    279|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
  621|    373|  case MRB_TT_FLOAT:
  ------------------
  |  Branch (621:3): [True: 373, False: 280]
  ------------------
  622|    373|    {
  623|    373|      double f = mrb_float(x);
  ------------------
  |  |  155|    373|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  624|       |
  625|    373|      if ((mrb_float)INT64_MAX >= f && f >= (mrb_float)INT64_MIN)
  ------------------
  |  Branch (625:11): [True: 372, False: 1]
  |  Branch (625:40): [True: 372, False: 0]
  ------------------
  626|    372|        return (int64_t)f;
  627|    373|    }
  628|      2|  default:
  ------------------
  |  Branch (628:3): [True: 1, False: 652]
  ------------------
  629|      2|    mrb_raise(mrb, E_TYPE_ERROR, "cannot convert to Integer");
  ------------------
  |  | 1375|      2|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      2|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      2|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  630|      0|    break;
  631|    653|  }
  632|       |  /* not reached */
  633|      0|  return 0;
  634|    653|}
numeric.c:int64_value:
  638|    325|{
  639|    325|  if (!TYPED_FIXABLE(v,int64_t)) {
  ------------------
  |  |   21|    325|#define TYPED_FIXABLE(f,t) (TYPED_POSFIXABLE(f,t) && TYPED_NEGFIXABLE(f,t))
  |  |  ------------------
  |  |  |  |   19|    650|#define TYPED_POSFIXABLE(f,t) ((f) <= (t)MRB_FIXNUM_MAX)
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|    325|# define MRB_FIXNUM_MAX (INT64_MAX>>MRB_FIXNUM_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   36|    325|#define MRB_FIXNUM_SHIFT        WORDBOX_FIXNUM_SHIFT
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   49|    325|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   48|    325|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (19:31): [True: 325, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define TYPED_FIXABLE(f,t) (TYPED_POSFIXABLE(f,t) && TYPED_NEGFIXABLE(f,t))
  |  |  ------------------
  |  |  |  |   20|    325|#define TYPED_NEGFIXABLE(f,t) ((f) >= (t)MRB_FIXNUM_MIN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|    325|# define MRB_FIXNUM_MIN (INT64_MIN>>MRB_FIXNUM_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   36|    325|#define MRB_FIXNUM_SHIFT        WORDBOX_FIXNUM_SHIFT
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   49|    325|#define WORDBOX_FIXNUM_SHIFT    WORDBOX_FIXNUM_BIT_POS
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   48|    325|#define WORDBOX_FIXNUM_BIT_POS  1
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (20:31): [True: 324, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  640|      1|    mrb_int_overflow(mrb, "bit operation");
  641|      1|  }
  642|    324|  return mrb_fixnum_value((mrb_int)v);
  643|    325|}
numeric.c:flo_or:
  665|     38|{
  666|     38|  mrb_value y = mrb_get_arg1(mrb);
  667|     38|  int64_t v1, v2;
  668|       |
  669|     38|  v1 = value_int64(mrb, x);
  670|     38|  v2 = value_int64(mrb, y);
  671|     38|  return int64_value(mrb, v1 | v2);
  672|     38|}
numeric.c:flo_xor:
  676|    289|{
  677|    289|  mrb_value y = mrb_get_arg1(mrb);
  678|    289|  int64_t v1, v2;
  679|       |
  680|    289|  v1 = value_int64(mrb, x);
  681|    289|  v2 = value_int64(mrb, y);
  682|    289|  return int64_value(mrb, v1 ^ v2);
  683|    289|}
numeric.c:flo_rshift:
  732|    503|{
  733|    503|  mrb_int width = mrb_as_int(mrb, mrb_get_arg1(mrb));
  ------------------
  |  | 1425|    503|#define mrb_as_int(mrb, val) mrb_integer(mrb_ensure_int_type(mrb, val))
  |  |  ------------------
  |  |  |  |  166|    503|#define mrb_integer(o) mrb_integer_func(o)
  |  |  ------------------
  ------------------
  734|    503|  if (width == MRB_INT_MIN) return flo_shift(mrb, x, -MRB_INT_BIT);
  ------------------
  |  |   81|    503|# define MRB_INT_MIN INT64_MIN
  ------------------
                if (width == MRB_INT_MIN) return flo_shift(mrb, x, -MRB_INT_BIT);
  ------------------
  |  |   80|     66|# define MRB_INT_BIT 64
  ------------------
  |  Branch (734:7): [True: 66, False: 437]
  ------------------
  735|    437|  return flo_shift(mrb, x, -width);
  736|    503|}
numeric.c:flo_shift:
  687|    503|{
  688|    503|  mrb_float val;
  689|       |
  690|    503|  if (width == 0) {
  ------------------
  |  Branch (690:7): [True: 9, False: 494]
  ------------------
  691|      9|    return x;
  692|      9|  }
  693|    494|  val = mrb_float(x);
  ------------------
  |  |  155|    494|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  694|    494|  if (width < -MRB_INT_BIT/2) {
  ------------------
  |  |   80|    494|# define MRB_INT_BIT 64
  ------------------
  |  Branch (694:7): [True: 72, False: 422]
  ------------------
  695|     72|    if (val < 0) return mrb_fixnum_value(-1);
  ------------------
  |  Branch (695:9): [True: 37, False: 35]
  ------------------
  696|     35|    return mrb_fixnum_value(0);
  697|     72|  }
  698|    422|  if (width < 0) {
  ------------------
  |  Branch (698:7): [True: 417, False: 5]
  ------------------
  699|    839|    while (width++) {
  ------------------
  |  Branch (699:12): [True: 453, False: 386]
  ------------------
  700|    453|      val /= 2;
  701|    453|      if (val < 1.0) {
  ------------------
  |  Branch (701:11): [True: 31, False: 422]
  ------------------
  702|     31|        val = 0;
  703|     31|        break;
  704|     31|      }
  705|    453|    }
  706|       |#if defined(_ISOC99_SOURCE)
  707|       |    val = trunc(val);
  708|       |#else
  709|    417|    if (val > 0){
  ------------------
  |  Branch (709:9): [True: 236, False: 181]
  ------------------
  710|    236|      val = floor(val);
  711|    236|    }
  712|    181|    else {
  713|    181|      val = ceil(val);
  714|    181|    }
  715|    417|#endif
  716|    417|    if (val == 0 && mrb_float(x) < 0) {
  ------------------
  |  |  155|     31|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  |  Branch (716:9): [True: 31, False: 386]
  |  Branch (716:21): [True: 23, False: 8]
  ------------------
  717|     23|      return mrb_fixnum_value(-1);
  718|     23|    }
  719|    417|  }
  720|      5|  else {
  721|     24|    while (width--) {
  ------------------
  |  Branch (721:12): [True: 19, False: 5]
  ------------------
  722|     19|      val *= 2;
  723|     19|    }
  724|      5|  }
  725|    399|  if (FIXABLE_FLOAT(val))
  ------------------
  |  |   27|    399|#define FIXABLE_FLOAT(f) ((f)>=-9223372036854775808.0 && (f)<9223372036854775808.0)
  |  |  ------------------
  |  |  |  Branch (27:27): [True: 249, False: 150]
  |  |  |  Branch (27:58): [True: 30, False: 219]
  |  |  ------------------
  ------------------
  726|     30|    return mrb_int_value(mrb, (mrb_int)val);
  727|    369|  return mrb_float_value(mrb, val);
  728|    399|}

mrb_obj_eq:
   17|  95.4k|{
   18|       |#if defined(MRB_NAN_BOXING)
   19|       |  return v1.u == v2.u;
   20|       |#elif defined(MRB_WORD_BOXING)
   21|  95.4k|  return v1.w == v2.w;
   22|       |#else  /* MRB_NO_BOXING */
   23|       |  if (mrb_type(v1) != mrb_type(v2)) return FALSE;
   24|       |  switch (mrb_type(v1)) {
   25|       |  case MRB_TT_TRUE:
   26|       |    return TRUE;
   27|       |
   28|       |  case MRB_TT_FALSE:
   29|       |    return (mrb_fixnum(v1) == mrb_fixnum(v2));
   30|       |  case MRB_TT_INTEGER:
   31|       |    return (mrb_integer(v1) == mrb_integer(v2));
   32|       |  case MRB_TT_SYMBOL:
   33|       |    return (mrb_symbol(v1) == mrb_symbol(v2));
   34|       |
   35|       |#ifndef MRB_NO_FLOAT
   36|       |  case MRB_TT_FLOAT:
   37|       |    return (mrb_float(v1) == mrb_float(v2));
   38|       |#endif
   39|       |
   40|       |  default:
   41|       |    return (mrb_ptr(v1) == mrb_ptr(v2));
   42|       |  }
   43|       |#endif
   44|  95.4k|}
mrb_obj_equal:
   48|  24.7k|{
   49|       |  /* temporary definition */
   50|  24.7k|  return mrb_obj_eq(mrb, v1, v2);
   51|  24.7k|}
mrb_equal:
   55|  5.89k|{
   56|  5.89k|  if (mrb_obj_eq(mrb, obj1, obj2)) return TRUE;
  ------------------
  |  |   54|    812|#  define TRUE 1
  ------------------
  |  Branch (56:7): [True: 812, False: 5.08k]
  ------------------
   57|  5.08k|#ifndef MRB_NO_FLOAT
   58|       |  /* value mixing with integer and float */
   59|  5.08k|  else if (mrb_integer_p(obj1) && mrb_float_p(obj2)) {
  ------------------
  |  |  171|  10.1k|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|  10.1k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 5.08k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                else if (mrb_integer_p(obj1) && mrb_float_p(obj2)) {
  ------------------
  |  |  179|  5.08k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|  5.08k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 384, False: 4.69k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   60|    384|    if ((mrb_float)mrb_integer(obj1) == mrb_float(obj2))
  ------------------
  |  |  166|    384|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
                  if ((mrb_float)mrb_integer(obj1) == mrb_float(obj2))
  ------------------
  |  |  155|    384|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
  |  Branch (60:9): [True: 0, False: 384]
  ------------------
   61|      0|      return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
   62|    384|  }
   63|  4.69k|  else if (mrb_float_p(obj1) && mrb_integer_p(obj2)) {
  ------------------
  |  |  179|  4.69k|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|  9.39k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 4.69k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                else if (mrb_float_p(obj1) && mrb_integer_p(obj2)) {
  ------------------
  |  |  171|      0|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|      0|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   64|      0|    if (mrb_float(obj1) == (mrb_float)mrb_integer(obj2))
  ------------------
  |  |  155|      0|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
                  if (mrb_float(obj1) == (mrb_float)mrb_integer(obj2))
  ------------------
  |  |  166|      0|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
  |  Branch (64:9): [True: 0, False: 0]
  ------------------
   65|      0|      return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
   66|      0|  }
   67|  4.69k|#endif
   68|  4.69k|#ifdef MRB_USE_BIGINT
   69|  4.69k|  else if (mrb_bigint_p(obj1) &&
  ------------------
  |  |  314|  9.39k|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 0, False: 4.69k]
  |  |  ------------------
  ------------------
   70|  4.69k|      (mrb_integer_p(obj2) || mrb_bigint_p(obj2) || mrb_float_p(obj2))) {
  ------------------
  |  |  171|      0|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|      0|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    (mrb_integer_p(obj2) || mrb_bigint_p(obj2) || mrb_float_p(obj2))) {
  ------------------
  |  |  314|      0|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                    (mrb_integer_p(obj2) || mrb_bigint_p(obj2) || mrb_float_p(obj2))) {
  ------------------
  |  |  179|      0|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|      0|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   71|      0|    if (mrb_bint_cmp(mrb, obj1, obj2) == 0)
  ------------------
  |  Branch (71:9): [True: 0, False: 0]
  ------------------
   72|      0|      return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
   73|      0|  }
   74|  4.69k|#endif
   75|  4.69k|  else if (!mrb_func_basic_p(mrb, obj1, MRB_OPSYM(eq), mrb_obj_equal_m)) {
  ------------------
  |  |   12|  4.69k|#define MRB_OPSYM(name) MRB_OPSYM__##name
  ------------------
  |  Branch (75:12): [True: 4.69k, False: 0]
  ------------------
   76|  4.69k|    mrb_value result = mrb_funcall_argv(mrb, obj1, MRB_OPSYM(eq), 1, &obj2);
  ------------------
  |  |   12|  4.69k|#define MRB_OPSYM(name) MRB_OPSYM__##name
  ------------------
   77|  4.69k|    if (mrb_test(result)) return TRUE;
  ------------------
  |  |  312|  4.69k|#define mrb_test(o)   mrb_bool(o)
  |  |  ------------------
  |  |  |  |  168|  4.69k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (168:24): [True: 0, False: 4.69k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (mrb_test(result)) return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
   78|  4.69k|  }
   79|  5.08k|  return FALSE;
  ------------------
  |  |   51|  5.08k|#  define FALSE 0
  ------------------
   80|  5.89k|}
mrb_init_object:
  300|    476|{
  301|    476|  struct RClass *n;
  302|    476|  struct RClass *t;
  303|    476|  struct RClass *f;
  304|       |
  305|    476|  mrb->nil_class   = n = mrb_define_class(mrb, "NilClass",   mrb->object_class);
  306|    476|  MRB_SET_INSTANCE_TT(n, MRB_TT_FALSE);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  307|    476|  mrb_undef_class_method(mrb, n, "new");
  308|    476|  mrb_define_method(mrb, n, "&",    false_and,      MRB_ARGS_REQ(1));  /* 15.2.4.3.1  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  309|    476|  mrb_define_method(mrb, n, "^",    false_xor,      MRB_ARGS_REQ(1));  /* 15.2.4.3.2  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  310|    476|  mrb_define_method(mrb, n, "|",    false_or,       MRB_ARGS_REQ(1));  /* 15.2.4.3.3  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  311|    476|  mrb_define_method(mrb, n, "nil?", mrb_true,       MRB_ARGS_NONE());  /* 15.2.4.3.4  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  312|    476|  mrb_define_method(mrb, n, "to_s", nil_to_s,       MRB_ARGS_NONE());  /* 15.2.4.3.5  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  313|    476|  mrb_define_method(mrb, n, "inspect", nil_inspect, MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  314|       |
  315|    476|  mrb->true_class  = t = mrb_define_class(mrb, "TrueClass",  mrb->object_class);
  316|    476|  MRB_SET_INSTANCE_TT(t, MRB_TT_TRUE);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  317|    476|  mrb_undef_class_method(mrb, t, "new");
  318|    476|  mrb_define_method(mrb, t, "&",    true_and,       MRB_ARGS_REQ(1));  /* 15.2.5.3.1  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  319|    476|  mrb_define_method(mrb, t, "^",    true_xor,       MRB_ARGS_REQ(1));  /* 15.2.5.3.2  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  320|    476|  mrb_define_method(mrb, t, "to_s", true_to_s,      MRB_ARGS_NONE());  /* 15.2.5.3.3  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  321|    476|  mrb_define_method(mrb, t, "|",    true_or,        MRB_ARGS_REQ(1));  /* 15.2.5.3.4  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  322|    476|  mrb_define_method(mrb, t, "inspect", true_to_s,   MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  323|       |
  324|    476|  mrb->false_class = f = mrb_define_class(mrb, "FalseClass", mrb->object_class);
  325|    476|  MRB_SET_INSTANCE_TT(f, MRB_TT_FALSE);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  326|    476|  mrb_undef_class_method(mrb, f, "new");
  327|    476|  mrb_define_method(mrb, f, "&",    false_and,      MRB_ARGS_REQ(1));  /* 15.2.6.3.1  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  328|    476|  mrb_define_method(mrb, f, "^",    false_xor,      MRB_ARGS_REQ(1));  /* 15.2.6.3.2  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  329|    476|  mrb_define_method(mrb, f, "to_s", false_to_s,     MRB_ARGS_NONE());  /* 15.2.6.3.3  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  330|    476|  mrb_define_method(mrb, f, "|",    false_or,       MRB_ARGS_REQ(1));  /* 15.2.6.3.4  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  331|    476|  mrb_define_method(mrb, f, "inspect", false_to_s,  MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  332|    476|}
mrb_check_type:
  387|  12.3k|{
  388|  12.3k|  enum mrb_vtype xt = mrb_type(x);
  389|  12.3k|  const char *tname, *ename;
  390|       |
  391|  12.3k|  if (t == xt) return;
  ------------------
  |  Branch (391:7): [True: 12.3k, False: 0]
  ------------------
  392|       |
  393|      0|  tname = type_name(t);
  394|      0|  if (mrb_nil_p(x)) {
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  395|      0|    ename = "nil";
  396|      0|  }
  397|      0|  else if (mrb_integer_p(x)) {
  ------------------
  |  |  171|      0|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|      0|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  398|      0|    ename = "Integer";
  399|      0|  }
  400|      0|  else if (mrb_symbol_p(x)) {
  ------------------
  |  |  172|      0|#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
  |  |  ------------------
  |  |  |  |   76|      0|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  401|      0|    ename = "Symbol";
  402|      0|  }
  403|      0|  else if (mrb_immediate_p(x)) {
  ------------------
  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  ------------------
  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  404|      0|    ename = RSTRING_PTR(mrb_obj_as_string(mrb, x));
  ------------------
  |  |  100|      0|#define RSTRING_PTR(s)       RSTR_PTR(RSTRING(s))
  |  |  ------------------
  |  |  |  |   65|      0|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  110|      0|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|      0|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:22): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  405|      0|  }
  406|      0|  else {
  407|      0|    ename = mrb_obj_classname(mrb, x);
  408|      0|  }
  409|      0|  if (tname) {
  ------------------
  |  Branch (409:7): [True: 0, False: 0]
  ------------------
  410|      0|    mrb_raisef(mrb, E_TYPE_ERROR, "wrong argument type %s (expected %s)",
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  411|      0|               ename, tname);
  412|      0|  }
  413|      0|  mrb_raisef(mrb, E_TYPE_ERROR, "unknown type %d (%s given)", t, ename);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  414|      0|}
mrb_obj_is_kind_of:
  472|  58.9k|{
  473|  58.9k|  struct RClass *cl = mrb_class(mrb, obj);
  474|       |
  475|  58.9k|  switch (c->tt) {
  476|      0|    case MRB_TT_MODULE:
  ------------------
  |  Branch (476:5): [True: 0, False: 58.9k]
  ------------------
  477|  58.9k|    case MRB_TT_CLASS:
  ------------------
  |  Branch (477:5): [True: 58.9k, False: 0]
  ------------------
  478|  58.9k|    case MRB_TT_ICLASS:
  ------------------
  |  Branch (478:5): [True: 0, False: 58.9k]
  ------------------
  479|  58.9k|    case MRB_TT_SCLASS:
  ------------------
  |  Branch (479:5): [True: 0, False: 58.9k]
  ------------------
  480|  58.9k|      break;
  481|       |
  482|      0|    default:
  ------------------
  |  Branch (482:5): [True: 0, False: 58.9k]
  ------------------
  483|      0|      mrb_raise(mrb, E_TYPE_ERROR, "class or module required");
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  484|  58.9k|  }
  485|       |
  486|  58.9k|  MRB_CLASS_ORIGIN(c);
  ------------------
  |  |   65|  58.9k|#define MRB_CLASS_ORIGIN(c) do {\
  |  |   66|  58.9k|  if ((c)->flags & MRB_FL_CLASS_IS_PREPENDED) {\
  |  |  ------------------
  |  |  |  |   63|  58.9k|#define MRB_FL_CLASS_IS_PREPENDED (1 << 19)
  |  |  ------------------
  |  |  |  Branch (66:7): [True: 0, False: 58.9k]
  |  |  ------------------
  |  |   67|      0|    (c) = (c)->super;\
  |  |   68|      0|    while (!((c)->flags & MRB_FL_CLASS_IS_ORIGIN)) {\
  |  |  ------------------
  |  |  |  |   64|      0|#define MRB_FL_CLASS_IS_ORIGIN (1 << 18)
  |  |  ------------------
  |  |  |  Branch (68:12): [True: 0, False: 0]
  |  |  ------------------
  |  |   69|      0|      (c) = (c)->super;\
  |  |   70|      0|    }\
  |  |   71|      0|  }\
  |  |   72|  58.9k|} while (0)
  |  |  ------------------
  |  |  |  Branch (72:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  487|   376k|  while (cl) {
  ------------------
  |  Branch (487:10): [True: 323k, False: 52.9k]
  ------------------
  488|   323k|    if (cl == c || cl->mt == c->mt)
  ------------------
  |  Branch (488:9): [True: 5.99k, False: 317k]
  |  Branch (488:20): [True: 0, False: 317k]
  ------------------
  489|  5.99k|      return TRUE;
  ------------------
  |  |   54|  5.99k|#  define TRUE 1
  ------------------
  490|   317k|    cl = cl->super;
  491|   317k|  }
  492|  52.9k|  return FALSE;
  ------------------
  |  |   51|  52.9k|#  define FALSE 0
  ------------------
  493|  58.9k|}
mrb_ensure_integer_type:
  508|  13.7k|{
  509|  13.7k|  if (!mrb_integer_p(val)) {
  ------------------
  |  |  171|  13.7k|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|  27.4k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 12.2k, False: 1.45k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|  1.45k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  2.91k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  2.91k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 66, False: 1.39k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 1.39k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 1.38k, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  510|     72|#ifndef MRB_NO_FLOAT
  511|     72|    if (mrb_float_p(val)) {
  ------------------
  |  |  179|     72|#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
  |  |  ------------------
  |  |  |  |   76|     72|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 64, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  512|     64|      return mrb_float_to_integer(mrb, val);
  513|     64|    }
  514|      8|    else {
  515|      8|      switch (mrb_type(val)) {
  516|      0|#ifdef MRB_USE_BIGINT
  517|      6|      case MRB_TT_BIGINT:
  ------------------
  |  Branch (517:7): [True: 6, False: 2]
  ------------------
  518|      6|        return val;
  519|      0|#endif
  520|      0|#ifdef MRB_USE_RATIONAL
  521|      0|      case MRB_TT_RATIONAL:
  ------------------
  |  Branch (521:7): [True: 0, False: 8]
  ------------------
  522|      0|        return mrb_rational_to_i(mrb, val);
  523|      0|#endif
  524|      0|#ifdef MRB_USE_COMPLEX
  525|      0|      case MRB_TT_COMPLEX:
  ------------------
  |  Branch (525:7): [True: 0, False: 8]
  ------------------
  526|      0|        return mrb_complex_to_i(mrb, val);
  527|      0|#endif
  528|      2|      default:
  ------------------
  |  Branch (528:7): [True: 2, False: 6]
  ------------------
  529|      2|        break;
  530|      8|      }
  531|      8|    }
  532|      2|#endif
  533|      2|    mrb_raisef(mrb, E_TYPE_ERROR, "%Y cannot be converted to Integer", val);
  ------------------
  |  | 1375|      2|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      2|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      2|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  534|     72|  }
  535|  13.6k|  return val;
  536|  13.7k|}
mrb_ensure_int_type:
  540|  13.7k|{
  541|  13.7k|  val = mrb_ensure_integer_type(mrb, val);
  542|  13.7k|#ifdef MRB_USE_BIGINT
  543|  13.7k|  if (mrb_bigint_p(val)) {
  ------------------
  |  |  314|  13.7k|#define mrb_bigint_p(o) (mrb_type(o) == MRB_TT_BIGINT)
  |  |  ------------------
  |  |  |  Branch (314:25): [True: 12, False: 13.6k]
  |  |  ------------------
  ------------------
  544|     12|    return mrb_int_value(mrb, mrb_bint_as_int(mrb, val));
  545|     12|  }
  546|  13.6k|#endif
  547|  13.6k|  return val;
  548|  13.7k|}
mrb_ensure_float_type:
  553|  5.56k|{
  554|  5.56k|  if (mrb_nil_p(val)) {
  ------------------
  |  |  174|  5.56k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 5.56k]
  |  |  ------------------
  ------------------
  555|      0|    mrb_raise(mrb, E_TYPE_ERROR, "can't convert nil into Float");
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  556|      0|  }
  557|  5.56k|  switch (mrb_type(val)) {
  558|  3.14k|    case MRB_TT_INTEGER:
  ------------------
  |  Branch (558:5): [True: 3.14k, False: 2.42k]
  ------------------
  559|  3.14k|      return mrb_float_value(mrb, (mrb_float)mrb_integer(val));
  ------------------
  |  |  166|  3.14k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
  560|       |
  561|  1.23k|    case MRB_TT_FLOAT:
  ------------------
  |  Branch (561:5): [True: 1.23k, False: 4.33k]
  ------------------
  562|  1.23k|      return val;
  563|       |
  564|      0|#ifdef MRB_USE_RATIONAL
  565|      0|    case MRB_TT_RATIONAL:
  ------------------
  |  Branch (565:5): [True: 0, False: 5.56k]
  ------------------
  566|      0|      return mrb_rational_to_f(mrb, val);
  567|      0|#endif
  568|       |
  569|      0|#ifdef MRB_USE_COMPLEX
  570|      0|    case MRB_TT_COMPLEX:
  ------------------
  |  Branch (570:5): [True: 0, False: 5.56k]
  ------------------
  571|      0|      return mrb_complex_to_f(mrb, val);
  572|      0|#endif
  573|       |
  574|      0|#ifdef MRB_USE_BIGINT
  575|  1.16k|    case MRB_TT_BIGINT:
  ------------------
  |  Branch (575:5): [True: 1.16k, False: 4.40k]
  ------------------
  576|  1.16k|      return mrb_float_value(mrb, mrb_bint_as_float(mrb, val));
  577|      0|#endif
  578|       |
  579|     27|    default:
  ------------------
  |  Branch (579:5): [True: 27, False: 5.54k]
  ------------------
  580|     27|      mrb_raisef(mrb, E_TYPE_ERROR, "%Y cannot be converted to Float", val);
  ------------------
  |  | 1375|     27|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|     27|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|     27|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  581|       |      /* not reached */
  582|      0|      return val;
  583|  5.56k|  }
  584|  5.56k|}
mrb_ensure_string_type:
  589|  2.59k|{
  590|  2.59k|  if (!mrb_string_p(str)) {
  ------------------
  |  |  187|  2.59k|#define mrb_string_p(o) WORDBOX_OBJ_TYPE_P(o, STRING)
  |  |  ------------------
  |  |  |  |   78|  2.59k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  5.18k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  5.18k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 2.59k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 2.59k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 2.59k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  591|      0|    mrb_raisef(mrb, E_TYPE_ERROR, "%Y cannot be converted to String", str);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  592|      0|  }
  593|  2.59k|  return str;
  594|  2.59k|}
mrb_ensure_array_type:
  605|  5.99k|{
  606|  5.99k|  if (!mrb_array_p(ary)) {
  ------------------
  |  |  186|  5.99k|#define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
  |  |  ------------------
  |  |  |  |   78|  5.99k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  11.9k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  11.9k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 5.99k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 5.99k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 5.99k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  607|      0|    mrb_raisef(mrb, E_TYPE_ERROR, "%Y cannot be converted to Array", ary);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  608|      0|  }
  609|  5.99k|  return ary;
  610|  5.99k|}
mrb_check_array_type:
  614|    615|{
  615|    615|  if (!mrb_array_p(ary)) return mrb_nil_value();
  ------------------
  |  |  186|    615|#define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
  |  |  ------------------
  |  |  |  |   78|    615|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  1.23k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  1.23k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 615, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  616|      0|  return ary;
  617|    615|}
mrb_ensure_hash_type:
  621|  33.5k|{
  622|  33.5k|  if (!mrb_hash_p(hash)) {
  ------------------
  |  |  188|  33.5k|#define mrb_hash_p(o) WORDBOX_OBJ_TYPE_P(o, HASH)
  |  |  ------------------
  |  |  |  |   78|  33.5k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  67.0k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  67.0k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 33.5k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 33.5k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 33.5k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  623|      0|    mrb_raisef(mrb, E_TYPE_ERROR, "%Y cannot be converted to Hash", hash);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  624|      0|  }
  625|  33.5k|  return hash;
  626|  33.5k|}
mrb_inspect:
  637|     37|{
  638|     37|  mrb_value v = mrb_funcall_argv(mrb, obj, MRB_SYM(inspect), 0, NULL);
  ------------------
  |  |   18|     37|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  639|     37|  if (!mrb_string_p(v)) {
  ------------------
  |  |  187|     37|#define mrb_string_p(o) WORDBOX_OBJ_TYPE_P(o, STRING)
  |  |  ------------------
  |  |  |  |   78|     37|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|     74|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|     74|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 37]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 37]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 37, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  640|      0|    v = mrb_obj_as_string(mrb, obj);
  641|      0|  }
  642|     37|  return v;
  643|     37|}
object.c:false_xor:
  255|    359|{
  256|    359|  mrb_bool obj2;
  257|       |
  258|    359|  mrb_get_args(mrb, "b", &obj2);
  259|    359|  return mrb_bool_value(obj2);
  260|    359|}
object.c:mrb_true:
   98|  1.41k|{
   99|  1.41k|  return mrb_true_value();
  100|  1.41k|}
object.c:true_xor:
  166|    521|{
  167|    521|  mrb_bool obj2;
  168|       |
  169|    521|  mrb_get_args(mrb, "b", &obj2);
  170|    521|  return mrb_bool_value(!obj2);
  171|    521|}
object.c:true_to_s:
  183|     19|{
  184|     19|  mrb_value str = mrb_str_new_lit_frozen(mrb, "true");
  ------------------
  |  | 1215|     19|#define mrb_str_new_lit_frozen(mrb,lit) mrb_obj_freeze(mrb,mrb_str_new_lit(mrb,lit))
  |  |  ------------------
  |  |  |  | 1209|     19|#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1075|     19|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|     19|  RSTR_SET_ASCII_FLAG(mrb_str_ptr(str));
  ------------------
  |  |   89|     19|# define RSTR_SET_ASCII_FLAG(s) (void)0
  ------------------
  186|     19|  return str;
  187|     19|}
object.c:false_to_s:
  292|     18|{
  293|     18|  mrb_value str = mrb_str_new_lit_frozen(mrb, "false");
  ------------------
  |  | 1215|     18|#define mrb_str_new_lit_frozen(mrb,lit) mrb_obj_freeze(mrb,mrb_str_new_lit(mrb,lit))
  |  |  ------------------
  |  |  |  | 1209|     18|#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1075|     18|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  294|     18|  RSTR_SET_ASCII_FLAG(mrb_str_ptr(str));
  ------------------
  |  |   89|     18|# define RSTR_SET_ASCII_FLAG(s) (void)0
  ------------------
  295|     18|  return str;
  296|     18|}

mrb_pool_open:
   65|  1.87k|{
   66|  1.87k|  mrb_pool *pool = (mrb_pool*)mrb_malloc_simple(mrb, sizeof(mrb_pool));
   67|       |
   68|  1.87k|  if (pool) {
  ------------------
  |  Branch (68:7): [True: 1.87k, False: 0]
  ------------------
   69|  1.87k|    pool->mrb = mrb;
   70|  1.87k|    pool->pages = NULL;
   71|  1.87k|  }
   72|       |
   73|  1.87k|  return pool;
   74|  1.87k|}
mrb_pool_close:
   78|  1.87k|{
   79|  1.87k|  struct mrb_pool_page *page, *tmp;
   80|       |
   81|  1.87k|  if (!pool) return;
  ------------------
  |  Branch (81:7): [True: 0, False: 1.87k]
  ------------------
   82|  1.87k|  page = pool->pages;
   83|  13.5k|  while (page) {
  ------------------
  |  Branch (83:10): [True: 11.6k, False: 1.87k]
  ------------------
   84|  11.6k|    tmp = page;
   85|  11.6k|    page = page->next;
   86|  11.6k|    mrb_free(pool->mrb, tmp);
   87|  11.6k|  }
   88|  1.87k|  mrb_free(pool->mrb, pool);
   89|  1.87k|}
mrb_pool_alloc:
  109|  7.19M|{
  110|  7.19M|  struct mrb_pool_page *page;
  111|  7.19M|  size_t n;
  112|       |
  113|  7.19M|  if (!pool) return NULL;
  ------------------
  |  Branch (113:7): [True: 0, False: 7.19M]
  ------------------
  114|  7.19M|  len += ALIGN_PADDING(len);
  ------------------
  |  |   58|  7.19M|#  define ALIGN_PADDING(x) ((SIZE_MAX - (x) + 1) & (POOL_ALIGNMENT - 1))
  |  |  ------------------
  |  |  |  |   15|  7.19M|#define POOL_ALIGNMENT 8
  |  |  ------------------
  ------------------
  115|  7.19M|  page = pool->pages;
  116|  7.54M|  while (page) {
  ------------------
  |  Branch (116:10): [True: 7.53M, False: 11.6k]
  ------------------
  117|  7.53M|    if (page->offset + len <= page->len) {
  ------------------
  |  Branch (117:9): [True: 7.18M, False: 346k]
  ------------------
  118|  7.18M|      n = page->offset;
  119|  7.18M|      page->offset += len;
  120|  7.18M|      page->last = (char*)page->page+n;
  121|  7.18M|      return page->last;
  122|  7.18M|    }
  123|   346k|    page = page->next;
  124|   346k|  }
  125|  11.6k|  page = page_alloc(pool, len);
  126|  11.6k|  if (!page) return NULL;
  ------------------
  |  Branch (126:7): [True: 0, False: 11.6k]
  ------------------
  127|  11.6k|  page->offset = len;
  128|  11.6k|  page->next = pool->pages;
  129|  11.6k|  pool->pages = page;
  130|       |
  131|  11.6k|  page->last = (void*)page->page;
  132|  11.6k|  return page->last;
  133|  11.6k|}
pool.c:page_alloc:
   93|  11.6k|{
   94|  11.6k|  struct mrb_pool_page *page;
   95|       |
   96|  11.6k|  if (len < POOL_PAGE_SIZE)
  ------------------
  |  |   22|  11.6k|#define POOL_PAGE_SIZE 16000
  ------------------
  |  Branch (96:7): [True: 11.5k, False: 131]
  ------------------
   97|  11.5k|    len = POOL_PAGE_SIZE;
  ------------------
  |  |   22|  11.5k|#define POOL_PAGE_SIZE 16000
  ------------------
   98|  11.6k|  page = (struct mrb_pool_page*)mrb_malloc_simple(pool->mrb, sizeof(struct mrb_pool_page)+len);
   99|  11.6k|  if (page) {
  ------------------
  |  Branch (99:7): [True: 11.6k, False: 0]
  ------------------
  100|  11.6k|    page->offset = 0;
  101|  11.6k|    page->len = len;
  102|  11.6k|  }
  103|       |
  104|  11.6k|  return page;
  105|  11.6k|}

mrb_proc_new:
   46|   251k|{
   47|   251k|  struct RProc *p;
   48|   251k|  mrb_callinfo *ci = mrb->c->ci;
   49|       |
   50|   251k|  p = MRB_OBJ_ALLOC(mrb, MRB_TT_PROC, mrb->proc_class);
  ------------------
  |  | 1200|   251k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
   51|   251k|  if (ci) {
  ------------------
  |  Branch (51:7): [True: 251k, False: 0]
  ------------------
   52|   251k|    struct RClass *tc = NULL;
   53|       |
   54|   251k|    if (ci->proc) {
  ------------------
  |  Branch (54:9): [True: 251k, False: 0]
  ------------------
   55|   251k|      tc = MRB_PROC_TARGET_CLASS(ci->proc);
  ------------------
  |  |   74|   251k|#define MRB_PROC_TARGET_CLASS(p) (MRB_PROC_ENV_P(p) ? (p)->e.env->c : (p)->e.target_class)
  |  |  ------------------
  |  |  |  |   72|   251k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|   251k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 476, False: 250k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   56|   251k|    }
   57|   251k|    if (tc == NULL) {
  ------------------
  |  Branch (57:9): [True: 30.8k, False: 220k]
  ------------------
   58|  30.8k|      tc = mrb_vm_ci_target_class(ci);
   59|  30.8k|    }
   60|   251k|    p->upper = ci->proc;
   61|   251k|    p->e.target_class = tc;
   62|   251k|  }
   63|   251k|  if (irep) {
  ------------------
  |  Branch (63:7): [True: 251k, False: 0]
  ------------------
   64|   251k|    mrb_irep_incref(mrb, (mrb_irep*)irep);
   65|   251k|  }
   66|   251k|  p->body.irep = irep;
   67|       |
   68|   251k|  return p;
   69|   251k|}
mrb_env_new:
   73|  15.7k|{
   74|  15.7k|  struct REnv *e;
   75|  15.7k|  mrb_int bidx = 1;
   76|  15.7k|  int n = ci->n;
   77|  15.7k|  int nk = ci->nk;
   78|       |
   79|  15.7k|  e = MRB_OBJ_ALLOC(mrb, MRB_TT_ENV, NULL);
  ------------------
  |  | 1200|  15.7k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
   80|  15.7k|  e->c = tc;
   81|  15.7k|  MRB_ENV_SET_LEN(e, nstacks);
  ------------------
  |  |   26|  15.7k|#define MRB_ENV_SET_LEN(e,len) ((e)->flags = (((e)->flags & ~0xff)|((unsigned int)(len) & 0xff)))
  ------------------
   82|  15.7k|  bidx += (n == 15) ? 1 : n;
  ------------------
  |  Branch (82:11): [True: 7.61k, False: 8.09k]
  ------------------
   83|  15.7k|  bidx += (nk == 15) ? 1 : (2*nk);
  ------------------
  |  Branch (83:11): [True: 0, False: 15.7k]
  ------------------
   84|  15.7k|  MRB_ENV_SET_BIDX(e, bidx);
  ------------------
  |  |   32|  15.7k|#define MRB_ENV_SET_BIDX(e,idx) ((e)->flags = (((e)->flags & ~(0xff<<8))|((unsigned int)(idx) & 0xff)<<8))
  ------------------
   85|  15.7k|  e->mid = ci->mid;
   86|  15.7k|  e->stack = stack;
   87|  15.7k|  e->cxt = c;
   88|       |
   89|  15.7k|  return e;
   90|  15.7k|}
mrb_closure_new:
  120|  6.18k|{
  121|  6.18k|  struct RProc *p = mrb_proc_new(mrb, irep);
  122|       |
  123|  6.18k|  closure_setup(mrb, p);
  124|  6.18k|  return p;
  125|  6.18k|}
mrb_proc_new_cfunc:
  129|  9.52k|{
  130|  9.52k|  struct RProc *p;
  131|       |
  132|  9.52k|  p = MRB_OBJ_ALLOC(mrb, MRB_TT_PROC, mrb->proc_class);
  ------------------
  |  | 1200|  9.52k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  ------------------
  133|  9.52k|  p->body.func = func;
  134|  9.52k|  p->flags |= MRB_PROC_CFUNC_FL;
  ------------------
  |  |   64|  9.52k|#define MRB_PROC_CFUNC_FL 128
  ------------------
  135|  9.52k|  p->upper = 0;
  136|  9.52k|  p->e.target_class = 0;
  137|       |
  138|  9.52k|  return p;
  139|  9.52k|}
mrb_proc_new_cfunc_with_env:
  143|  9.52k|{
  144|  9.52k|  struct RProc *p = mrb_proc_new_cfunc(mrb, func);
  145|  9.52k|  struct REnv *e;
  146|  9.52k|  int i;
  147|       |
  148|  9.52k|  p->e.env = e = mrb_env_new(mrb, mrb->c, mrb->c->ci, 0, NULL, NULL);
  149|  9.52k|  p->flags |= MRB_PROC_ENVSET;
  ------------------
  |  |   71|  9.52k|#define MRB_PROC_ENVSET 1024
  ------------------
  150|  9.52k|  mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)e);
  151|  9.52k|  MRB_ENV_CLOSE(e);
  ------------------
  |  |   29|  9.52k|#define MRB_ENV_CLOSE(e) ((e)->flags |= MRB_ENV_CLOSED)
  |  |  ------------------
  |  |  |  |   28|  9.52k|#define MRB_ENV_CLOSED (1<<20)
  |  |  ------------------
  ------------------
  152|       |
  153|  9.52k|  e->stack = (mrb_value*)mrb_malloc(mrb, sizeof(mrb_value) * argc);
  154|  9.52k|  MRB_ENV_SET_LEN(e, argc);
  ------------------
  |  |   26|  9.52k|#define MRB_ENV_SET_LEN(e,len) ((e)->flags = (((e)->flags & ~0xff)|((unsigned int)(len) & 0xff)))
  ------------------
  155|       |
  156|  9.52k|  if (argv) {
  ------------------
  |  Branch (156:7): [True: 9.52k, False: 0]
  ------------------
  157|  19.0k|    for (i = 0; i < argc; i++) {
  ------------------
  |  Branch (157:17): [True: 9.52k, False: 9.52k]
  ------------------
  158|  9.52k|      e->stack[i] = argv[i];
  159|  9.52k|    }
  160|  9.52k|  }
  161|      0|  else {
  162|      0|    for (i = 0; i < argc; i++) {
  ------------------
  |  Branch (162:17): [True: 0, False: 0]
  ------------------
  163|      0|      SET_NIL_VALUE(e->stack[i]);
  ------------------
  |  |  210|      0|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
  164|      0|    }
  165|      0|  }
  166|  9.52k|  return p;
  167|  9.52k|}
mrb_init_proc:
  491|    476|{
  492|    476|  mrb_method_t m;
  493|       |
  494|    476|  mrb_define_class_method(mrb, mrb->proc_class, "new", mrb_proc_s_new, MRB_ARGS_NONE()|MRB_ARGS_BLOCK());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
                mrb_define_class_method(mrb, mrb->proc_class, "new", mrb_proc_s_new, MRB_ARGS_NONE()|MRB_ARGS_BLOCK());
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
  495|    476|  mrb_define_method(mrb, mrb->proc_class, "initialize_copy", mrb_proc_init_copy, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  496|    476|  mrb_define_method(mrb, mrb->proc_class, "arity", proc_arity, MRB_ARGS_NONE()); /* 15.2.17.4.2 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  497|    476|  mrb_define_method(mrb, mrb->proc_class, "==", proc_eql, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  498|    476|  mrb_define_method(mrb, mrb->proc_class, "eql?", proc_eql, MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  499|    476|  mrb_define_method(mrb, mrb->proc_class, "hash", proc_hash, MRB_ARGS_NONE()); /* 15.2.17.4.2 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  500|       |
  501|    476|  MRB_METHOD_FROM_PROC(m, &call_proc);
  ------------------
  |  |  112|    476|#define MRB_METHOD_FROM_PROC(m,pr) ((m)=(mrb_method_t)(pr))
  ------------------
  502|    476|  mrb_define_method_raw(mrb, mrb->proc_class, MRB_SYM(call), m);   /* 15.2.17.4.3 */
  ------------------
  |  |   18|    476|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  503|    476|  mrb_define_method_raw(mrb, mrb->proc_class, MRB_OPSYM(aref), m); /* 15.2.17.4.1 */
  ------------------
  |  |   12|    476|#define MRB_OPSYM(name) MRB_OPSYM__##name
  ------------------
  504|       |
  505|    476|  mrb_define_method(mrb, mrb->kernel_module,       "lambda", proc_lambda, MRB_ARGS_NONE()|MRB_ARGS_BLOCK()); /* 15.3.1.3.27 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
                mrb_define_method(mrb, mrb->kernel_module,       "lambda", proc_lambda, MRB_ARGS_NONE()|MRB_ARGS_BLOCK()); /* 15.3.1.3.27 */
  ------------------
  |  |  909|    476|#define MRB_ARGS_BLOCK()    ((mrb_aspec)1)
  ------------------
  506|    476|}
proc.c:closure_setup:
   94|  6.18k|{
   95|  6.18k|  mrb_callinfo *ci = mrb->c->ci;
   96|  6.18k|  const struct RProc *up = p->upper;
   97|  6.18k|  struct REnv *e = NULL;
   98|       |
   99|  6.18k|  if (ci && (e = mrb_vm_ci_env(ci)) != NULL) {
  ------------------
  |  Branch (99:7): [True: 6.18k, False: 0]
  |  Branch (99:13): [True: 0, False: 6.18k]
  ------------------
  100|       |    /* do nothing, because e is assigned already */
  101|      0|  }
  102|  6.18k|  else if (up) {
  ------------------
  |  Branch (102:12): [True: 6.18k, False: 0]
  ------------------
  103|  6.18k|    struct RClass *tc = ci->u.target_class;
  104|       |
  105|  6.18k|    e = mrb_env_new(mrb, mrb->c, ci, up->body.irep->nlocals, ci->stack, tc);
  106|  6.18k|    ci->u.env = e;
  107|  6.18k|    if (MRB_PROC_ENV_P(up) && MRB_PROC_ENV(up)->cxt == NULL) {
  ------------------
  |  |   72|  12.3k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  ------------------
  |  |  |  |   71|  6.18k|#define MRB_PROC_ENVSET 1024
  |  |  ------------------
  |  |  |  Branch (72:27): [True: 0, False: 6.18k]
  |  |  ------------------
  ------------------
                  if (MRB_PROC_ENV_P(up) && MRB_PROC_ENV(up)->cxt == NULL) {
  ------------------
  |  |   73|      0|#define MRB_PROC_ENV(p) (MRB_PROC_ENV_P(p) ? (p)->e.env : NULL)
  |  |  ------------------
  |  |  |  |   72|      0|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (107:31): [True: 0, False: 0]
  ------------------
  108|      0|      e->mid = MRB_PROC_ENV(up)->mid;
  ------------------
  |  |   73|      0|#define MRB_PROC_ENV(p) (MRB_PROC_ENV_P(p) ? (p)->e.env : NULL)
  |  |  ------------------
  |  |  |  |   72|      0|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  109|      0|    }
  110|  6.18k|  }
  111|  6.18k|  if (e) {
  ------------------
  |  Branch (111:7): [True: 6.18k, False: 0]
  ------------------
  112|  6.18k|    p->e.env = e;
  113|  6.18k|    p->flags |= MRB_PROC_ENVSET;
  ------------------
  |  |   71|  6.18k|#define MRB_PROC_ENVSET 1024
  ------------------
  114|  6.18k|    mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)e);
  115|  6.18k|  }
  116|  6.18k|}

mrb_get_values_at:
  413|    664|{
  414|    664|  mrb_int i, j, beg, len;
  415|    664|  mrb_value result;
  416|    664|  result = mrb_ary_new(mrb);
  417|       |
  418|  1.32k|  for (i = 0; i < argc; i++) {
  ------------------
  |  Branch (418:15): [True: 664, False: 664]
  ------------------
  419|    664|    if (mrb_integer_p(argv[i])) {
  ------------------
  |  |  171|    664|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|  1.32k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 664, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  420|    664|      mrb_ary_push(mrb, result, func(mrb, obj, mrb_integer(argv[i])));
  ------------------
  |  |  166|    664|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
  421|    664|    }
  422|      0|    else if (mrb_range_beg_len(mrb, argv[i], &beg, &len, olen, FALSE) == MRB_RANGE_OK) {
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  |  Branch (422:14): [True: 0, False: 0]
  ------------------
  423|      0|      mrb_int const end = olen < beg + len ? olen : beg + len;
  ------------------
  |  Branch (423:27): [True: 0, False: 0]
  ------------------
  424|      0|      for (j = beg; j < end; j++) {
  ------------------
  |  Branch (424:21): [True: 0, False: 0]
  ------------------
  425|      0|        mrb_ary_push(mrb, result, func(mrb, obj, j));
  426|      0|      }
  427|       |
  428|      0|      for (; j < beg + len; j++) {
  ------------------
  |  Branch (428:14): [True: 0, False: 0]
  ------------------
  429|      0|        mrb_ary_push(mrb, result, mrb_nil_value());
  430|      0|      }
  431|      0|    }
  432|      0|    else {
  433|      0|      mrb_raisef(mrb, E_TYPE_ERROR, "invalid values selector: %v", argv[i]);
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  434|      0|    }
  435|    664|  }
  436|       |
  437|    664|  return result;
  438|    664|}
mrb_range_beg_len:
  470|  25.5k|{
  471|  25.5k|  mrb_int beg, end;
  472|  25.5k|  mrb_bool excl;
  473|  25.5k|  struct RRange *r;
  474|       |
  475|  25.5k|  if (!mrb_range_p(range)) return MRB_RANGE_TYPE_MISMATCH;
  ------------------
  |  |  198|  25.5k|#define mrb_range_p(o) WORDBOX_OBJ_TYPE_P(o, RANGE)
  |  |  ------------------
  |  |  |  |   78|  25.5k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  51.0k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  51.0k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 25.5k, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  476|      0|  r = mrb_range_ptr(mrb, range);
  477|       |
  478|      0|  beg = mrb_nil_p(RANGE_BEG(r)) ? 0 : mrb_as_int(mrb, RANGE_BEG(r));
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                beg = mrb_nil_p(RANGE_BEG(r)) ? 0 : mrb_as_int(mrb, RANGE_BEG(r));
  ------------------
  |  | 1425|      0|#define mrb_as_int(mrb, val) mrb_integer(mrb_ensure_int_type(mrb, val))
  |  |  ------------------
  |  |  |  |  166|      0|#define mrb_integer(o) mrb_integer_func(o)
  |  |  ------------------
  ------------------
  479|      0|  end = mrb_nil_p(RANGE_END(r)) ? -1 : mrb_as_int(mrb, RANGE_END(r));
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                end = mrb_nil_p(RANGE_END(r)) ? -1 : mrb_as_int(mrb, RANGE_END(r));
  ------------------
  |  | 1425|      0|#define mrb_as_int(mrb, val) mrb_integer(mrb_ensure_int_type(mrb, val))
  |  |  ------------------
  |  |  |  |  166|      0|#define mrb_integer(o) mrb_integer_func(o)
  |  |  ------------------
  ------------------
  480|      0|  excl = mrb_nil_p(RANGE_END(r)) ? 0 : RANGE_EXCL(r);
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                excl = mrb_nil_p(RANGE_END(r)) ? 0 : RANGE_EXCL(r);
  ------------------
  |  |   51|      0|#define RANGE_EXCL(p) ((p)->excl)
  ------------------
  481|       |
  482|      0|  if (beg < 0) {
  ------------------
  |  Branch (482:7): [True: 0, False: 0]
  ------------------
  483|      0|    beg += len;
  484|      0|    if (beg < 0) return MRB_RANGE_OUT;
  ------------------
  |  Branch (484:9): [True: 0, False: 0]
  ------------------
  485|      0|  }
  486|       |
  487|      0|  if (trunc) {
  ------------------
  |  Branch (487:7): [True: 0, False: 0]
  ------------------
  488|      0|    if (beg > len) return MRB_RANGE_OUT;
  ------------------
  |  Branch (488:9): [True: 0, False: 0]
  ------------------
  489|      0|    if (end > len) end = len;
  ------------------
  |  Branch (489:9): [True: 0, False: 0]
  ------------------
  490|      0|  }
  491|       |
  492|      0|  if (end < 0) end += len;
  ------------------
  |  Branch (492:7): [True: 0, False: 0]
  ------------------
  493|      0|  if (!excl && (!trunc || end < len)) end++;  /* include end point */
  ------------------
  |  Branch (493:7): [True: 0, False: 0]
  |  Branch (493:17): [True: 0, False: 0]
  |  Branch (493:27): [True: 0, False: 0]
  ------------------
  494|      0|  len = end - beg;
  495|      0|  if (len < 0) len = 0;
  ------------------
  |  Branch (495:7): [True: 0, False: 0]
  ------------------
  496|       |
  497|      0|  *begp = beg;
  498|      0|  *lenp = len;
  499|      0|  return MRB_RANGE_OK;
  500|      0|}
mrb_init_range:
  504|    476|{
  505|    476|  struct RClass *r;
  506|       |
  507|    476|  r = mrb_define_class(mrb, "Range", mrb->object_class);                                /* 15.2.14 */
  508|    476|  mrb->range_class = r;
  509|    476|  MRB_SET_INSTANCE_TT(r, MRB_TT_RANGE);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  510|       |
  511|    476|  mrb_define_method(mrb, r, "begin",           range_beg,             MRB_ARGS_NONE()); /* 15.2.14.4.3  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  512|    476|  mrb_define_method(mrb, r, "end",             range_end,             MRB_ARGS_NONE()); /* 15.2.14.4.5  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  513|    476|  mrb_define_method(mrb, r, "==",              range_eq,              MRB_ARGS_REQ(1)); /* 15.2.14.4.1  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  514|    476|  mrb_define_method(mrb, r, "===",             range_include,         MRB_ARGS_REQ(1)); /* 15.2.14.4.2  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  515|    476|  mrb_define_method(mrb, r, "exclude_end?",    range_excl,            MRB_ARGS_NONE()); /* 15.2.14.4.6  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  516|    476|  mrb_define_method(mrb, r, "first",           range_beg,             MRB_ARGS_NONE()); /* 15.2.14.4.7  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  517|    476|  mrb_define_method(mrb, r, "include?",        range_include,         MRB_ARGS_REQ(1)); /* 15.2.14.4.8  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  518|    476|  mrb_define_method(mrb, r, "initialize",      range_initialize,      MRB_ARGS_ANY());  /* 15.2.14.4.9  */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
  519|    476|  mrb_define_method(mrb, r, "last",            range_end,             MRB_ARGS_NONE()); /* 15.2.14.4.10 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  520|    476|  mrb_define_method(mrb, r, "member?",         range_include,         MRB_ARGS_REQ(1)); /* 15.2.14.4.11 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  521|    476|  mrb_define_method(mrb, r, "to_s",            range_to_s,            MRB_ARGS_NONE()); /* 15.2.14.4.12(x) */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  522|    476|  mrb_define_method(mrb, r, "inspect",         range_inspect,         MRB_ARGS_NONE()); /* 15.2.14.4.13(x) */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  523|    476|  mrb_define_method(mrb, r, "eql?",            range_eql,             MRB_ARGS_REQ(1)); /* 15.2.14.4.14(x) */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  524|    476|  mrb_define_method(mrb, r, "initialize_copy", range_initialize_copy, MRB_ARGS_REQ(1)); /* 15.2.14.4.15(x) */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  525|    476|  mrb_define_method(mrb, r, "__num_to_a",      range_num_to_a,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  526|    476|}

mrb_open_core:
   40|    476|{
   41|    476|  static const mrb_state mrb_state_zero = { 0 };
   42|    476|  mrb_state *mrb;
   43|       |
   44|    476|  if (f == NULL) f = mrb_default_allocf;
  ------------------
  |  Branch (44:7): [True: 0, False: 476]
  ------------------
   45|    476|  mrb = (mrb_state*)(f)(NULL, NULL, sizeof(mrb_state), ud);
   46|    476|  if (mrb == NULL) return NULL;
  ------------------
  |  Branch (46:7): [True: 0, False: 476]
  ------------------
   47|       |
   48|    476|  *mrb = mrb_state_zero;
   49|    476|  mrb->allocf_ud = ud;
   50|    476|  mrb->allocf = f;
   51|    476|  mrb->atexit_stack_len = 0;
   52|       |
   53|    476|  if (mrb_core_init_protect(mrb, init_gc_and_core, NULL)) {
  ------------------
  |  Branch (53:7): [True: 0, False: 476]
  ------------------
   54|      0|    mrb_close(mrb);
   55|      0|    return NULL;
   56|      0|  }
   57|       |
   58|    476|  return mrb;
   59|    476|}
mrb_default_allocf:
   63|  1.29M|{
   64|  1.29M|  if (size == 0) {
  ------------------
  |  Branch (64:7): [True: 658k, False: 632k]
  ------------------
   65|   658k|    free(p);
   66|   658k|    return NULL;
   67|   658k|  }
   68|   632k|  else {
   69|   632k|    return realloc(p, size);
   70|   632k|  }
   71|  1.29M|}
mrb_open:
   75|    476|{
   76|    476|  mrb_state *mrb = mrb_open_allocf(mrb_default_allocf, NULL);
   77|       |
   78|    476|  return mrb;
   79|    476|}
mrb_open_allocf:
   91|    476|{
   92|    476|  mrb_state *mrb = mrb_open_core(f, ud);
   93|       |
   94|    476|  if (mrb == NULL) {
  ------------------
  |  Branch (94:7): [True: 0, False: 476]
  ------------------
   95|      0|    return NULL;
   96|      0|  }
   97|       |
   98|    476|#ifndef MRB_NO_GEMS
   99|    476|  if (mrb_core_init_protect(mrb, init_mrbgems, NULL)) {
  ------------------
  |  Branch (99:7): [True: 0, False: 476]
  ------------------
  100|      0|    mrb_close(mrb);
  101|      0|    return NULL;
  102|      0|  }
  103|    476|  mrb_gc_arena_restore(mrb, 0);
  ------------------
  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
  104|    476|#endif
  105|    476|  return mrb;
  106|    476|}
mrb_irep_incref:
  112|   251k|{
  113|   251k|  if (irep->flags & MRB_IREP_NO_FREE) return;
  ------------------
  |  |   82|   251k|#define MRB_IREP_NO_FREE 2
  ------------------
  |  Branch (113:7): [True: 250k, False: 788]
  ------------------
  114|    788|  if (irep->refcnt == UINT16_MAX) {
  ------------------
  |  Branch (114:7): [True: 0, False: 788]
  ------------------
  115|      0|    mrb_garbage_collect(mrb);
  116|      0|    if (irep->refcnt == UINT16_MAX) {
  ------------------
  |  Branch (116:9): [True: 0, False: 0]
  ------------------
  117|      0|      mrb_raise(mrb, E_RUNTIME_ERROR, "too many irep references");
  ------------------
  |  | 1374|      0|#define E_RUNTIME_ERROR      mrb_exc_get_id(mrb, MRB_ERROR_SYM(RuntimeError))
  |  |  ------------------
  |  |  |  | 1371|      0|#define MRB_ERROR_SYM(sym) mrb_intern_lit(mrb, #sym)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1164|      0|#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, (lit ""), mrb_strlen_lit(lit))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1075|      0|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  118|      0|    }
  119|      0|  }
  120|    788|  irep->refcnt++;
  121|    788|}
mrb_irep_decref:
  125|   252k|{
  126|   252k|  if (irep->flags & MRB_IREP_NO_FREE) return;
  ------------------
  |  |   82|   252k|#define MRB_IREP_NO_FREE 2
  ------------------
  |  Branch (126:7): [True: 250k, False: 1.72k]
  ------------------
  127|  1.72k|  irep->refcnt--;
  128|  1.72k|  if (irep->refcnt == 0) {
  ------------------
  |  Branch (128:7): [True: 932, False: 788]
  ------------------
  129|    932|    mrb_irep_free(mrb, irep);
  130|    932|  }
  131|  1.72k|}
mrb_irep_cutref:
  135|   243k|{
  136|   243k|  mrb_irep **reps;
  137|   243k|  int i;
  138|       |
  139|   243k|  if (irep->flags & MRB_IREP_NO_FREE) return;
  ------------------
  |  |   82|   243k|#define MRB_IREP_NO_FREE 2
  ------------------
  |  Branch (139:7): [True: 243k, False: 788]
  ------------------
  140|    788|  reps = (mrb_irep**)irep->reps;
  141|    788|  if (!reps) return;
  ------------------
  |  Branch (141:7): [True: 394, False: 394]
  ------------------
  142|    788|  for (i=0; i<irep->rlen; i++) {
  ------------------
  |  Branch (142:13): [True: 394, False: 394]
  ------------------
  143|    394|    mrb_irep *tmp = reps[i];
  144|    394|    reps[i] = NULL;
  145|    394|    if (tmp) mrb_irep_decref(mrb, tmp);
  ------------------
  |  Branch (145:9): [True: 394, False: 0]
  ------------------
  146|    394|  }
  147|    394|}
mrb_irep_free:
  151|    932|{
  152|    932|  int i;
  153|       |
  154|    932|  if (irep->flags & MRB_IREP_NO_FREE) return;
  ------------------
  |  |   82|    932|#define MRB_IREP_NO_FREE 2
  ------------------
  |  Branch (154:7): [True: 0, False: 932]
  ------------------
  155|    932|  if (!(irep->flags & MRB_ISEQ_NO_FREE))
  ------------------
  |  |   81|    932|#define MRB_ISEQ_NO_FREE 1
  ------------------
  |  Branch (155:7): [True: 932, False: 0]
  ------------------
  156|    932|    mrb_free(mrb, (void*)irep->iseq);
  157|    932|  if (irep->pool) {
  ------------------
  |  Branch (157:7): [True: 235, False: 697]
  ------------------
  158|  3.17k|    for (i=0; i<irep->plen; i++) {
  ------------------
  |  Branch (158:15): [True: 2.93k, False: 235]
  ------------------
  159|  2.93k|      if ((irep->pool[i].tt & 3) == IREP_TT_STR ||
  ------------------
  |  Branch (159:11): [True: 2.74k, False: 196]
  ------------------
  160|  2.93k|          irep->pool[i].tt == IREP_TT_BIGINT) {
  ------------------
  |  Branch (160:11): [True: 0, False: 196]
  ------------------
  161|  2.74k|        mrb_free(mrb, (void*)irep->pool[i].u.str);
  162|  2.74k|      }
  163|  2.93k|    }
  164|    235|    mrb_free(mrb, (void*)irep->pool);
  165|    235|  }
  166|    932|  mrb_free(mrb, (void*)irep->syms);
  167|    932|  if (irep->reps) {
  ------------------
  |  Branch (167:7): [True: 394, False: 538]
  ------------------
  168|    788|    for (i=0; i<irep->rlen; i++) {
  ------------------
  |  Branch (168:15): [True: 394, False: 394]
  ------------------
  169|    394|      if (irep->reps[i])
  ------------------
  |  Branch (169:11): [True: 0, False: 394]
  ------------------
  170|      0|        mrb_irep_decref(mrb, (mrb_irep*)irep->reps[i]);
  171|    394|    }
  172|    394|    mrb_free(mrb, (void*)irep->reps);
  173|    394|  }
  174|    932|  mrb_free(mrb, (void*)irep->lv);
  175|    932|  mrb_debug_info_free(mrb, irep->debug_info);
  176|    932|  mrb_free(mrb, irep);
  177|    932|}
mrb_free_context:
  181|    476|{
  182|    476|  if (!c) return;
  ------------------
  |  Branch (182:7): [True: 0, False: 476]
  ------------------
  183|    476|  mrb_free(mrb, c->stbase);
  184|    476|  mrb_free(mrb, c->cibase);
  185|    476|  mrb_free(mrb, c);
  186|    476|}
mrb_close:
  192|    476|{
  193|    476|  if (!mrb) return;
  ------------------
  |  Branch (193:7): [True: 0, False: 476]
  ------------------
  194|    476|  mrb_protect_atexit(mrb);
  195|       |
  196|       |  /* free */
  197|    476|  mrb_gc_destroy(mrb, &mrb->gc);
  198|    476|  mrb_free_context(mrb, mrb->root_c);
  199|    476|  mrb_gc_free_gv(mrb);
  200|    476|  mrb_free_symtbl(mrb);
  201|    476|  mrb_free(mrb, mrb);
  202|    476|}
mrb_add_irep:
  206|    932|{
  207|    932|  static const mrb_irep mrb_irep_zero = { 0 };
  208|    932|  mrb_irep *irep;
  209|       |
  210|    932|  irep = (mrb_irep*)mrb_malloc(mrb, sizeof(mrb_irep));
  211|    932|  *irep = mrb_irep_zero;
  212|    932|  irep->refcnt = 1;
  213|       |
  214|    932|  return irep;
  215|    932|}
mrb_top_self:
  219|  12.7k|{
  220|  12.7k|  return mrb_obj_value(mrb->top_self);
  221|  12.7k|}
mrb_state_atexit:
  225|    476|{
  226|       |#ifdef MRB_FIXED_STATE_ATEXIT_STACK
  227|       |  if (mrb->atexit_stack_len + 1 > MRB_FIXED_STATE_ATEXIT_STACK_SIZE) {
  228|       |    mrb_raise(mrb, E_RUNTIME_ERROR, "exceeded fixed state atexit stack limit");
  229|       |  }
  230|       |#else
  231|    476|  size_t stack_size;
  232|       |
  233|    476|  stack_size = sizeof(mrb_atexit_func) * (mrb->atexit_stack_len + 1);
  234|    476|  if (mrb->atexit_stack_len == 0) {
  ------------------
  |  Branch (234:7): [True: 476, False: 0]
  ------------------
  235|    476|    mrb->atexit_stack = (mrb_atexit_func*)mrb_malloc(mrb, stack_size);
  236|    476|  }
  237|      0|  else {
  238|      0|    mrb->atexit_stack = (mrb_atexit_func*)mrb_realloc(mrb, mrb->atexit_stack, stack_size);
  239|      0|  }
  240|    476|#endif
  241|       |
  242|    476|  mrb->atexit_stack[mrb->atexit_stack_len++] = f;
  243|    476|}
state.c:init_gc_and_core:
   27|    476|{
   28|    476|  static const struct mrb_context mrb_context_zero = { 0 };
   29|       |
   30|    476|  mrb_gc_init(mrb, &mrb->gc);
   31|    476|  mrb->c = (struct mrb_context*)mrb_malloc(mrb, sizeof(struct mrb_context));
   32|    476|  *mrb->c = mrb_context_zero;
   33|    476|  mrb->root_c = mrb->c;
   34|       |
   35|    476|  mrb_init_core(mrb);
   36|    476|}
state.c:init_mrbgems:
   84|    476|{
   85|    476|  mrb_init_mrbgems(mrb);
   86|    476|}

mrb_str_new_capa:
  152|    102|{
  153|    102|  struct RString *s = mrb_obj_alloc_string(mrb);
  ------------------
  |  |   29|    102|#define mrb_obj_alloc_string(mrb) MRB_OBJ_ALLOC((mrb), MRB_TT_STRING, (mrb)->string_class)
  |  |  ------------------
  |  |  |  | 1200|    102|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  |  |  ------------------
  ------------------
  154|       |
  155|    102|  if (RSTR_EMBEDDABLE_P(capa)) {
  ------------------
  |  |   63|    102|#define RSTR_EMBEDDABLE_P(len) ((len) <= RSTRING_EMBED_LEN_MAX)
  |  |  ------------------
  |  |  |  |   20|    102|  ((mrb_int)(sizeof(void*) * 3 + sizeof(void*) - 32 / CHAR_BIT - 1))
  |  |  ------------------
  |  |  |  Branch (63:32): [True: 0, False: 102]
  |  |  ------------------
  ------------------
  156|      0|    s = str_init_embed(s, NULL, 0);
  157|      0|  }
  158|    102|  else {
  159|    102|    s = str_init_normal_capa(mrb, s, NULL, 0, capa);
  160|    102|  }
  161|    102|  return mrb_obj_value(s);
  162|    102|}
mrb_str_new:
  181|   131k|{
  182|   131k|  return mrb_obj_value(str_new(mrb, p, len));
  183|   131k|}
mrb_str_new_cstr:
  187|  1.53k|{
  188|  1.53k|  struct RString *s;
  189|  1.53k|  mrb_int len;
  190|       |
  191|  1.53k|  if (p) {
  ------------------
  |  Branch (191:7): [True: 1.53k, False: 0]
  ------------------
  192|  1.53k|    len = strlen(p);
  193|  1.53k|  }
  194|      0|  else {
  195|      0|    len = 0;
  196|      0|  }
  197|       |
  198|  1.53k|  s = str_new(mrb, p, len);
  199|       |
  200|  1.53k|  return mrb_obj_value(s);
  201|  1.53k|}
mrb_str_new_static:
  205|  8.26k|{
  206|  8.26k|  struct RString *s = str_new_static(mrb, p, len);
  207|  8.26k|  return mrb_obj_value(s);
  208|  8.26k|}
mrb_gc_free_str:
  252|   206k|{
  253|   206k|  if (RSTR_EMBED_P(str))
  ------------------
  |  |   44|   206k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  ------------------
  |  |  |  |  110|   206k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  ------------------
  |  |  |  Branch (44:25): [True: 204k, False: 2.02k]
  |  |  ------------------
  ------------------
  254|   204k|    /* no code */;
  255|  2.02k|  else if (RSTR_SHARED_P(str))
  ------------------
  |  |   69|  2.02k|#define RSTR_SHARED_P(s) ((s)->flags & MRB_STR_SHARED)
  |  |  ------------------
  |  |  |  |  107|  2.02k|#define MRB_STR_SHARED    1
  |  |  ------------------
  |  |  |  Branch (69:26): [True: 1.01k, False: 1.00k]
  |  |  ------------------
  ------------------
  256|  1.01k|    str_decref(mrb, str->as.heap.aux.shared);
  257|  1.00k|  else if (!RSTR_NOFREE_P(str) && !RSTR_FSHARED_P(str))
  ------------------
  |  |   77|  2.00k|#define RSTR_NOFREE_P(s) ((s)->flags & MRB_STR_NOFREE)
  |  |  ------------------
  |  |  |  |  109|  1.00k|#define MRB_STR_NOFREE    4
  |  |  ------------------
  ------------------
                else if (!RSTR_NOFREE_P(str) && !RSTR_FSHARED_P(str))
  ------------------
  |  |   73|    528|#define RSTR_FSHARED_P(s) ((s)->flags & MRB_STR_FSHARED)
  |  |  ------------------
  |  |  |  |  108|    528|#define MRB_STR_FSHARED   2
  |  |  ------------------
  ------------------
  |  Branch (257:12): [True: 528, False: 476]
  |  Branch (257:35): [True: 528, False: 0]
  ------------------
  258|    528|    mrb_free(mrb, str->as.heap.ptr);
  259|   206k|}
mrb_str_modify_keep_ascii:
  754|  8.96k|{
  755|  8.96k|  mrb_check_frozen(mrb, s);
  756|  8.96k|  str_modify_keep_ascii(mrb, s);
  757|  8.96k|}
mrb_str_modify:
  761|  8.96k|{
  762|  8.96k|  mrb_str_modify_keep_ascii(mrb, s);
  763|  8.96k|  RSTR_UNSET_ASCII_FLAG(s);
  ------------------
  |  |   90|  8.96k|# define RSTR_UNSET_ASCII_FLAG(s) (void)0
  ------------------
  764|  8.96k|}
mrb_str_concat:
  799|     80|{
  800|     80|  other = mrb_obj_as_string(mrb, other);
  801|     80|  mrb_str_cat_str(mrb, self, other);
  802|     80|}
mrb_str_equal:
  992|  62.0k|{
  993|  62.0k|  if (!mrb_string_p(str2)) return FALSE;
  ------------------
  |  |  187|  62.0k|#define mrb_string_p(o) WORDBOX_OBJ_TYPE_P(o, STRING)
  |  |  ------------------
  |  |  |  |   78|  62.0k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|   124k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|   124k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 62.0k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 62.0k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 62.0k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (!mrb_string_p(str2)) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  994|  62.0k|  return str_eql(mrb, str1, str2);
  995|  62.0k|}
mrb_str_dup:
 1019|  65.1k|{
 1020|  65.1k|  struct RString *s = mrb_str_ptr(str);
  ------------------
  |  |   98|  65.1k|#define mrb_str_ptr(s)       ((struct RString*)(mrb_ptr(s)))
  |  |  ------------------
  |  |  |  |  150|  65.1k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1021|  65.1k|  struct RString *dup = str_new(mrb, 0, 0);
 1022|       |
 1023|  65.1k|  return str_replace(mrb, dup, s);
 1024|  65.1k|}
mrb_byte_hash_step:
 1665|   204k|{
 1666|   204k|  const uint8_t *send = s + len;
 1667|       |
 1668|       |  /*
 1669|       |   * FNV-1 hash each octet in the buffer
 1670|       |   */
 1671|  1.25M|  while (s < send) {
  ------------------
  |  Branch (1671:10): [True: 1.05M, False: 204k]
  ------------------
 1672|       |    /* multiply by the 32 bit FNV magic prime mod 2^32 */
 1673|       |#if defined(NO_FNV_GCC_OPTIMIZATION)
 1674|       |    hval *= FNV_32_PRIME;
 1675|       |#else
 1676|  1.05M|    hval += (hval<<1) + (hval<<4) + (hval<<7) + (hval<<8) + (hval<<24);
 1677|  1.05M|#endif
 1678|       |
 1679|       |    /* xor the bottom with the current octet */
 1680|  1.05M|    hval ^= (uint32_t)*s++;
 1681|  1.05M|  }
 1682|       |
 1683|       |  /* return our new hash value */
 1684|   204k|  return hval;
 1685|   204k|}
mrb_byte_hash:
 1689|   204k|{
 1690|   204k|  return mrb_byte_hash_step(s, len, FNV1_32_INIT);
  ------------------
  |  | 1661|   204k|#define FNV1_32_INIT ((uint32_t)0x811c9dc5)
  ------------------
 1691|   204k|}
mrb_str_hash:
 1695|  64.4k|{
 1696|  64.4k|  struct RString *s = mrb_str_ptr(str);
  ------------------
  |  |   98|  64.4k|#define mrb_str_ptr(s)       ((struct RString*)(mrb_ptr(s)))
  |  |  ------------------
  |  |  |  |  150|  64.4k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1697|  64.4k|  return mrb_byte_hash((uint8_t*)RSTR_PTR(s), RSTR_LEN(s));
  ------------------
  |  |   65|  64.4k|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   44|  64.4k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  64.4k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   60|  64.1k|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  ------------------
  |  |  |  Branch (65:22): [True: 64.1k, False: 393]
  |  |  ------------------
  ------------------
                return mrb_byte_hash((uint8_t*)RSTR_PTR(s), RSTR_LEN(s));
  ------------------
  |  |   66|  64.4k|#define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   44|  64.4k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  64.4k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   62|  64.1k|  (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  114|  64.1k|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  113|  64.1k|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  64.1k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  64.1k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (66:22): [True: 64.1k, False: 393]
  |  |  ------------------
  ------------------
 1698|  64.4k|}
mrb_obj_as_string:
 1882|    163|{
 1883|    163|  switch (mrb_type(obj)) {
 1884|     32|  case MRB_TT_STRING:
  ------------------
  |  Branch (1884:3): [True: 32, False: 131]
  ------------------
 1885|     32|    return obj;
 1886|     37|  case MRB_TT_SYMBOL:
  ------------------
  |  Branch (1886:3): [True: 37, False: 126]
  ------------------
 1887|     37|    return mrb_sym_str(mrb, mrb_symbol(obj));
  ------------------
  |  |  167|     37|#define mrb_symbol(o)  (mrb_sym)(((o).w) >> WORDBOX_SYMBOL_SHIFT)
  |  |  ------------------
  |  |  |  |   63|     37|#define WORDBOX_SYMBOL_SHIFT    32
  |  |  ------------------
  ------------------
 1888|     76|  case MRB_TT_INTEGER:
  ------------------
  |  Branch (1888:3): [True: 76, False: 87]
  ------------------
 1889|     76|    return mrb_integer_to_str(mrb, obj, 10);
 1890|      0|  case MRB_TT_SCLASS:
  ------------------
  |  Branch (1890:3): [True: 0, False: 163]
  ------------------
 1891|     18|  case MRB_TT_CLASS:
  ------------------
  |  Branch (1891:3): [True: 18, False: 145]
  ------------------
 1892|     18|  case MRB_TT_MODULE:
  ------------------
  |  Branch (1892:3): [True: 0, False: 163]
  ------------------
 1893|     18|    return mrb_mod_to_s(mrb, obj);
 1894|      0|  default:
  ------------------
  |  Branch (1894:3): [True: 0, False: 163]
  ------------------
 1895|      0|    return mrb_type_convert(mrb, obj, MRB_TT_STRING, MRB_SYM(to_s));
  ------------------
  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
 1896|    163|  }
 1897|    163|}
mrb_string_value_cstr:
 2424|  1.42k|{
 2425|  1.42k|  struct RString *ps;
 2426|  1.42k|  const char *p;
 2427|  1.42k|  mrb_int len;
 2428|       |
 2429|  1.42k|  mrb_ensure_string_type(mrb, *ptr);
 2430|  1.42k|  ps = mrb_str_ptr(*ptr);
  ------------------
  |  |   98|  1.42k|#define mrb_str_ptr(s)       ((struct RString*)(mrb_ptr(s)))
  |  |  ------------------
  |  |  |  |  150|  1.42k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 2431|  1.42k|  check_null_byte(mrb, ps);
 2432|  1.42k|  p = RSTR_PTR(ps);
  ------------------
  |  |   65|  1.42k|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   44|  1.42k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  1.42k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   60|  1.42k|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  ------------------
  |  |  |  Branch (65:22): [True: 1.42k, False: 0]
  |  |  ------------------
  ------------------
 2433|  1.42k|  len = RSTR_LEN(ps);
  ------------------
  |  |   66|  1.42k|#define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   44|  1.42k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  1.42k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   62|  1.42k|  (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  114|  1.42k|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  113|  1.42k|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  1.42k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  1.42k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (66:22): [True: 1.42k, False: 0]
  |  |  ------------------
  ------------------
 2434|  1.42k|  if (p[len] == '\0') {
  ------------------
  |  Branch (2434:7): [True: 1.42k, False: 0]
  ------------------
 2435|  1.42k|    return p;
 2436|  1.42k|  }
 2437|       |
 2438|       |  /*
 2439|       |   * Even after str_modify_keep_ascii(), NULL termination is not ensured if
 2440|       |   * RSTR_SET_LEN() is used explicitly (e.g. String#delete_suffix!).
 2441|       |   */
 2442|      0|  str_modify_keep_ascii(mrb, ps);
 2443|      0|  RSTR_PTR(ps)[len] = '\0';
  ------------------
  |  |   65|      0|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   44|      0|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|      0|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   60|      0|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  ------------------
  |  |  |  Branch (65:22): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2444|      0|  return RSTR_PTR(ps);
  ------------------
  |  |   65|      0|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   44|      0|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|      0|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   60|      0|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  ------------------
  |  |  |  Branch (65:22): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2445|  1.42k|}
mrb_string_cstr:
 2449|  1.42k|{
 2450|  1.42k|  return mrb_string_value_cstr(mrb, &str);
 2451|  1.42k|}
mrb_str_cat:
 2696|  9.00k|{
 2697|  9.00k|  struct RString *s = mrb_str_ptr(str);
  ------------------
  |  |   98|  9.00k|#define mrb_str_ptr(s)       ((struct RString*)(mrb_ptr(s)))
  |  |  ------------------
  |  |  |  |  150|  9.00k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 2698|  9.00k|  mrb_int capa;
 2699|  9.00k|  mrb_int total;
 2700|  9.00k|  ptrdiff_t off = -1;
 2701|       |
 2702|  9.00k|  if (len == 0) return str;
  ------------------
  |  Branch (2702:7): [True: 34, False: 8.96k]
  ------------------
 2703|  8.96k|  mrb_str_modify(mrb, s);
 2704|  8.96k|  if (ptr >= RSTR_PTR(s) && ptr <= RSTR_PTR(s) + (size_t)RSTR_LEN(s)) {
  ------------------
  |  |   65|  17.9k|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   44|  8.96k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  8.96k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   60|  8.60k|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  ------------------
  |  |  |  Branch (65:22): [True: 8.60k, False: 366]
  |  |  ------------------
  ------------------
                if (ptr >= RSTR_PTR(s) && ptr <= RSTR_PTR(s) + (size_t)RSTR_LEN(s)) {
  ------------------
  |  |   65|    132|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   44|    132|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|    132|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   60|      0|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  ------------------
  |  |  |  Branch (65:22): [True: 0, False: 132]
  |  |  ------------------
  ------------------
                if (ptr >= RSTR_PTR(s) && ptr <= RSTR_PTR(s) + (size_t)RSTR_LEN(s)) {
  ------------------
  |  |   66|    132|#define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   44|    132|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|    132|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   62|      0|  (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  114|      0|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  113|      0|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (66:22): [True: 0, False: 132]
  |  |  ------------------
  ------------------
  |  Branch (2704:7): [True: 132, False: 8.83k]
  |  Branch (2704:29): [True: 0, False: 132]
  ------------------
 2705|      0|      off = ptr - RSTR_PTR(s);
  ------------------
  |  |   65|      0|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   44|      0|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|      0|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   60|      0|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  ------------------
  |  |  |  Branch (65:22): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2706|      0|  }
 2707|       |
 2708|  8.96k|  capa = RSTR_CAPA(s);
  ------------------
  |  |   67|  8.96k|#define RSTR_CAPA(s) (RSTR_EMBED_P(s) ? RSTRING_EMBED_LEN_MAX : (s)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   44|  8.96k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  8.96k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (44:25): [True: 8.60k, False: 366]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_CAPA(s) (RSTR_EMBED_P(s) ? RSTRING_EMBED_LEN_MAX : (s)->as.heap.aux.capa)
  |  |  ------------------
  |  |  |  |   20|  8.60k|  ((mrb_int)(sizeof(void*) * 3 + sizeof(void*) - 32 / CHAR_BIT - 1))
  |  |  ------------------
  ------------------
 2709|  8.96k|  if (mrb_int_add_overflow(RSTR_LEN(s), len, &total)) {
  ------------------
  |  |   66|  8.96k|#define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   44|  8.96k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  8.96k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   62|  8.60k|  (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  114|  8.60k|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  113|  8.60k|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  8.60k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  8.60k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (66:22): [True: 8.60k, False: 366]
  |  |  ------------------
  ------------------
  |  Branch (2709:7): [True: 0, False: 8.96k]
  ------------------
 2710|      0|  size_error:
 2711|      0|    mrb_raise(mrb, E_ARGUMENT_ERROR, "string size too big");
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2712|      0|  }
 2713|  8.96k|  if (capa <= total) {
  ------------------
  |  Branch (2713:7): [True: 16, False: 8.95k]
  ------------------
 2714|     16|    if (capa == 0) capa = 1;
  ------------------
  |  Branch (2714:9): [True: 0, False: 16]
  ------------------
 2715|     32|    while (capa <= total) {
  ------------------
  |  Branch (2715:12): [True: 16, False: 16]
  ------------------
 2716|     16|      if (mrb_int_mul_overflow(capa, 2, &capa)) goto size_error;
  ------------------
  |  Branch (2716:11): [True: 0, False: 16]
  ------------------
 2717|     16|    }
 2718|     16|    resize_capa(mrb, s, capa);
 2719|     16|  }
 2720|  8.96k|  if (off != -1) {
  ------------------
  |  Branch (2720:7): [True: 0, False: 8.96k]
  ------------------
 2721|      0|      ptr = RSTR_PTR(s) + off;
  ------------------
  |  |   65|      0|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   44|      0|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|      0|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   60|      0|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  ------------------
  |  |  |  Branch (65:22): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2722|      0|  }
 2723|  8.96k|  memcpy(RSTR_PTR(s) + RSTR_LEN(s), ptr, len);
  ------------------
  |  |   65|  8.96k|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   44|  8.96k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  8.96k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   60|  8.58k|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  ------------------
  |  |  |  Branch (65:22): [True: 8.58k, False: 382]
  |  |  ------------------
  ------------------
                memcpy(RSTR_PTR(s) + RSTR_LEN(s), ptr, len);
  ------------------
  |  |   66|  8.96k|#define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   44|  8.96k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  8.96k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   62|  8.58k|  (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  114|  8.58k|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  113|  8.58k|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  8.58k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  8.58k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (66:22): [True: 8.58k, False: 382]
  |  |  ------------------
  ------------------
 2724|  8.96k|  RSTR_SET_LEN(s, total);
  ------------------
  |  |   52|  8.96k|#define RSTR_SET_LEN(s, n) do {\
  |  |   53|  8.96k|  if (RSTR_EMBED_P(s)) {\
  |  |  ------------------
  |  |  |  |   44|  8.96k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  8.96k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (44:25): [True: 8.58k, False: 382]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  8.58k|    RSTR_SET_EMBED_LEN((s),(n));\
  |  |  ------------------
  |  |  |  |   47|  8.58k|#define RSTR_SET_EMBED_LEN(s, n) do {\
  |  |  |  |   48|  8.58k|  size_t tmp_n = (n);\
  |  |  |  |   49|  8.58k|  (s)->flags &= ~MRB_STR_EMBED_LEN_MASK;\
  |  |  |  |  ------------------
  |  |  |  |  |  |  114|  8.58k|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  113|  8.58k|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  8.58k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   50|  8.58k|  (s)->flags |= (tmp_n) << MRB_STR_EMBED_LEN_SHIFT;\
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  8.58k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  ------------------
  |  |  |  |   51|  8.58k|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:10): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|  8.58k|  }\
  |  |   56|  8.96k|  else {\
  |  |   57|    382|    (s)->as.heap.len = (mrb_ssize)(n);\
  |  |   58|    382|  }\
  |  |   59|  8.96k|} while (0)
  |  |  ------------------
  |  |  |  Branch (59:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2725|  8.96k|  RSTR_PTR(s)[total] = '\0';   /* sentinel */
  ------------------
  |  |   65|  8.96k|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   44|  8.96k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  8.96k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   60|  8.58k|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  ------------------
  |  |  |  Branch (65:22): [True: 8.58k, False: 382]
  |  |  ------------------
  ------------------
 2726|  8.96k|  return str;
 2727|  8.96k|}
mrb_str_cat_str:
 2737|     80|{
 2738|     80|  if (mrb_str_ptr(str) == mrb_str_ptr(str2)) {
  ------------------
  |  |   98|     80|#define mrb_str_ptr(s)       ((struct RString*)(mrb_ptr(s)))
  |  |  ------------------
  |  |  |  |  150|     80|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
                if (mrb_str_ptr(str) == mrb_str_ptr(str2)) {
  ------------------
  |  |   98|     80|#define mrb_str_ptr(s)       ((struct RString*)(mrb_ptr(s)))
  |  |  ------------------
  |  |  |  |  150|     80|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  |  Branch (2738:7): [True: 0, False: 80]
  ------------------
 2739|      0|    mrb_str_modify(mrb, mrb_str_ptr(str));
  ------------------
  |  |   98|      0|#define mrb_str_ptr(s)       ((struct RString*)(mrb_ptr(s)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 2740|      0|  }
 2741|     80|  return mrb_str_cat(mrb, str, RSTRING_PTR(str2), RSTRING_LEN(str2));
  ------------------
  |  |  100|     80|#define RSTRING_PTR(s)       RSTR_PTR(RSTRING(s))
  |  |  ------------------
  |  |  |  |   65|     80|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|     80|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  110|     80|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|     80|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:22): [True: 80, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                return mrb_str_cat(mrb, str, RSTRING_PTR(str2), RSTRING_LEN(str2));
  ------------------
  |  |  102|     80|#define RSTRING_LEN(s)       RSTR_LEN(RSTRING(s))
  |  |  ------------------
  |  |  |  |   66|     80|#define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|     80|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  110|     80|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|     80|  (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  114|     80|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  113|     80|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     80|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                 (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     80|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (66:22): [True: 80, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2742|     80|}
mrb_init_string:
 3037|    476|{
 3038|    476|  struct RClass *s;
 3039|       |
 3040|    476|  mrb_static_assert(RSTRING_EMBED_LEN_MAX < (1 << MRB_STR_EMBED_LEN_BIT),
  ------------------
  |  |  109|    476|    mrb_static_assert_expand(mrb_static_assert_selector(__VA_ARGS__, mrb_static_assert2, mrb_static_assert1, _)(__VA_ARGS__))
  |  |  ------------------
  |  |  |  |   99|    476|# define mrb_static_assert_expand(...) __VA_ARGS__ /* for MSVC behaviour - https://stackoverflow.com/q/5530505 */
  |  |  ------------------
  ------------------
 3041|    476|                    "pointer size too big for embedded string");
 3042|       |
 3043|    476|  mrb->string_class = s = mrb_define_class(mrb, "String", mrb->object_class);             /* 15.2.10 */
 3044|    476|  MRB_SET_INSTANCE_TT(s, MRB_TT_STRING);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
 3045|       |
 3046|    476|  mrb_define_method(mrb, s, "bytesize",        mrb_str_bytesize,        MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3047|       |
 3048|    476|  mrb_define_method(mrb, s, "<=>",             mrb_str_cmp_m,           MRB_ARGS_REQ(1)); /* 15.2.10.5.1  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3049|    476|  mrb_define_method(mrb, s, "==",              mrb_str_equal_m,         MRB_ARGS_REQ(1)); /* 15.2.10.5.2  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3050|    476|  mrb_define_method(mrb, s, "+",               mrb_str_plus_m,          MRB_ARGS_REQ(1)); /* 15.2.10.5.4  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3051|    476|  mrb_define_method(mrb, s, "*",               mrb_str_times,           MRB_ARGS_REQ(1)); /* 15.2.10.5.5  */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3052|    476|  mrb_define_method(mrb, s, "[]",              mrb_str_aref_m,          MRB_ARGS_ANY());  /* 15.2.10.5.6  */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3053|    476|  mrb_define_method(mrb, s, "[]=",             mrb_str_aset_m,          MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3054|    476|  mrb_define_method(mrb, s, "capitalize",      mrb_str_capitalize,      MRB_ARGS_NONE()); /* 15.2.10.5.7  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3055|    476|  mrb_define_method(mrb, s, "capitalize!",     mrb_str_capitalize_bang, MRB_ARGS_NONE()); /* 15.2.10.5.8  */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3056|    476|  mrb_define_method(mrb, s, "chomp",           mrb_str_chomp,           MRB_ARGS_ANY());  /* 15.2.10.5.9  */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3057|    476|  mrb_define_method(mrb, s, "chomp!",          mrb_str_chomp_bang,      MRB_ARGS_ANY());  /* 15.2.10.5.10 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3058|    476|  mrb_define_method(mrb, s, "chop",            mrb_str_chop,            MRB_ARGS_NONE()); /* 15.2.10.5.11 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3059|    476|  mrb_define_method(mrb, s, "chop!",           mrb_str_chop_bang,       MRB_ARGS_NONE()); /* 15.2.10.5.12 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3060|    476|  mrb_define_method(mrb, s, "downcase",        mrb_str_downcase,        MRB_ARGS_NONE()); /* 15.2.10.5.13 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3061|    476|  mrb_define_method(mrb, s, "downcase!",       mrb_str_downcase_bang,   MRB_ARGS_NONE()); /* 15.2.10.5.14 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3062|    476|  mrb_define_method(mrb, s, "empty?",          mrb_str_empty_p,         MRB_ARGS_NONE()); /* 15.2.10.5.16 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3063|    476|  mrb_define_method(mrb, s, "eql?",            mrb_str_eql,             MRB_ARGS_REQ(1)); /* 15.2.10.5.17 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3064|       |
 3065|    476|  mrb_define_method(mrb, s, "hash",            mrb_str_hash_m,          MRB_ARGS_NONE()); /* 15.2.10.5.20 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3066|    476|  mrb_define_method(mrb, s, "include?",        mrb_str_include,         MRB_ARGS_REQ(1)); /* 15.2.10.5.21 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3067|    476|  mrb_define_method(mrb, s, "index",           mrb_str_index_m,         MRB_ARGS_ARG(1,1));  /* 15.2.10.5.22 */
  ------------------
  |  | 1812|    476|#define mrb_str_index_m mrb_str_byteindex_m
  ------------------
                mrb_define_method(mrb, s, "index",           mrb_str_index_m,         MRB_ARGS_ARG(1,1));  /* 15.2.10.5.22 */
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 3068|    476|  mrb_define_method(mrb, s, "initialize",      mrb_str_init,            MRB_ARGS_REQ(1)); /* 15.2.10.5.23 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3069|    476|  mrb_define_method(mrb, s, "initialize_copy", mrb_str_replace,         MRB_ARGS_REQ(1)); /* 15.2.10.5.24 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3070|    476|  mrb_define_method(mrb, s, "intern",          mrb_str_intern,          MRB_ARGS_NONE()); /* 15.2.10.5.25 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3071|    476|  mrb_define_method(mrb, s, "length",          mrb_str_size,            MRB_ARGS_NONE()); /* 15.2.10.5.26 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3072|    476|  mrb_define_method(mrb, s, "replace",         mrb_str_replace,         MRB_ARGS_REQ(1)); /* 15.2.10.5.28 */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3073|    476|  mrb_define_method(mrb, s, "reverse",         mrb_str_reverse,         MRB_ARGS_NONE()); /* 15.2.10.5.29 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3074|    476|  mrb_define_method(mrb, s, "reverse!",        mrb_str_reverse_bang,    MRB_ARGS_NONE()); /* 15.2.10.5.30 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3075|    476|  mrb_define_method(mrb, s, "rindex",          mrb_str_rindex_m,        MRB_ARGS_ANY());  /* 15.2.10.5.31 */
  ------------------
  |  | 2092|    476|#define mrb_str_rindex_m mrb_str_byterindex_m
  ------------------
                mrb_define_method(mrb, s, "rindex",          mrb_str_rindex_m,        MRB_ARGS_ANY());  /* 15.2.10.5.31 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3076|    476|  mrb_define_method(mrb, s, "size",            mrb_str_size,            MRB_ARGS_NONE()); /* 15.2.10.5.33 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3077|    476|  mrb_define_method(mrb, s, "slice",           mrb_str_aref_m,          MRB_ARGS_ANY());  /* 15.2.10.5.34 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3078|    476|  mrb_define_method(mrb, s, "split",           mrb_str_split_m,         MRB_ARGS_ANY());  /* 15.2.10.5.35 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3079|       |
 3080|    476|#ifndef MRB_NO_FLOAT
 3081|    476|  mrb_define_method(mrb, s, "to_f",            mrb_str_to_f,            MRB_ARGS_NONE()); /* 15.2.10.5.38 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3082|    476|#endif
 3083|    476|  mrb_define_method(mrb, s, "to_i",            mrb_str_to_i,            MRB_ARGS_ANY());  /* 15.2.10.5.39 */
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3084|    476|  mrb_define_method(mrb, s, "to_s",            mrb_str_to_s,            MRB_ARGS_NONE()); /* 15.2.10.5.40 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3085|    476|  mrb_define_method(mrb, s, "to_str",          mrb_str_to_s,            MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3086|    476|  mrb_define_method(mrb, s, "to_sym",          mrb_str_intern,          MRB_ARGS_NONE()); /* 15.2.10.5.41 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3087|    476|  mrb_define_method(mrb, s, "upcase",          mrb_str_upcase,          MRB_ARGS_NONE()); /* 15.2.10.5.42 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3088|    476|  mrb_define_method(mrb, s, "upcase!",         mrb_str_upcase_bang,     MRB_ARGS_NONE()); /* 15.2.10.5.43 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3089|    476|  mrb_define_method(mrb, s, "inspect",         mrb_str_inspect,         MRB_ARGS_NONE()); /* 15.2.10.5.46(x) */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3090|    476|  mrb_define_method(mrb, s, "bytes",           mrb_str_bytes,           MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
 3091|       |
 3092|    476|  mrb_define_method(mrb, s, "getbyte",         mrb_str_getbyte,         MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3093|    476|  mrb_define_method(mrb, s, "setbyte",         mrb_str_setbyte,         MRB_ARGS_REQ(2));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3094|    476|  mrb_define_method(mrb, s, "byteindex",       mrb_str_byteindex_m,     MRB_ARGS_ARG(1,1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 3095|    476|  mrb_define_method(mrb, s, "byterindex",      mrb_str_byterindex_m,    MRB_ARGS_ARG(1,1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 3096|    476|  mrb_define_method(mrb, s, "byteslice",       mrb_str_byteslice,       MRB_ARGS_ARG(1,1));
  ------------------
  |  |  895|    476|#define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  |  |  ------------------
  |  |               #define MRB_ARGS_ARG(n1,n2)   (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
  |  |  ------------------
  |  |  |  |  885|    476|#define MRB_ARGS_OPT(n)     ((mrb_aspec)((n)&0x1f) << 13)
  |  |  ------------------
  ------------------
 3097|    476|  mrb_define_method(mrb, s, "bytesplice",      mrb_str_bytesplice,      MRB_ARGS_ANY());
  ------------------
  |  |  914|    476|#define MRB_ARGS_ANY()      MRB_ARGS_REST()
  |  |  ------------------
  |  |  |  |  898|    476|#define MRB_ARGS_REST()     ((mrb_aspec)(1 << 12))
  |  |  ------------------
  ------------------
 3098|       |
 3099|    476|  mrb_define_method(mrb, s, "__sub_replace",   sub_replace,             MRB_ARGS_REQ(3)); /* internal */
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
 3100|    476|}
string.c:str_init_embed:
   71|   270k|{
   72|   270k|  mrb_assert(len >= 0);
  ------------------
  |  |   68|   270k|#define mrb_assert(p) ((void)0)
  ------------------
   73|   270k|  if (p) memcpy(RSTR_EMBED_PTR(s), p, len);
  ------------------
  |  |   60|   204k|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  ------------------
  |  Branch (73:7): [True: 204k, False: 65.1k]
  ------------------
   74|   270k|  RSTR_EMBED_PTR(s)[len] = '\0';
  ------------------
  |  |   60|   270k|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  ------------------
   75|   270k|  RSTR_SET_TYPE_FLAG(s, EMBED);
  ------------------
  |  |   41|   270k|#define RSTR_SET_TYPE_FLAG(s, type) (RSTR_UNSET_TYPE_FLAG(s), (s)->flags |= MRB_STR_##type)
  |  |  ------------------
  |  |  |  |   42|   270k|#define RSTR_UNSET_TYPE_FLAG(s) ((s)->flags &= ~(MRB_STR_TYPE_MASK|MRB_STR_EMBED_LEN_MASK))
  |  |  |  |  ------------------
  |  |  |  |  |  |  115|   270k|#define MRB_STR_TYPE_MASK 15
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_UNSET_TYPE_FLAG(s) ((s)->flags &= ~(MRB_STR_TYPE_MASK|MRB_STR_EMBED_LEN_MASK))
  |  |  |  |  ------------------
  |  |  |  |  |  |  114|   270k|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  113|   270k|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|   270k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|   270k|  RSTR_SET_EMBED_LEN(s, len);
  ------------------
  |  |   47|   270k|#define RSTR_SET_EMBED_LEN(s, n) do {\
  |  |   48|   270k|  size_t tmp_n = (n);\
  |  |   49|   270k|  (s)->flags &= ~MRB_STR_EMBED_LEN_MASK;\
  |  |  ------------------
  |  |  |  |  114|   270k|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|   270k|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  ------------------
  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|   270k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   50|   270k|  (s)->flags |= (tmp_n) << MRB_STR_EMBED_LEN_SHIFT;\
  |  |  ------------------
  |  |  |  |  112|   270k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  ------------------
  |  |   51|   270k|} while (0)
  |  |  ------------------
  |  |  |  Branch (51:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
   77|   270k|  return s;
   78|   270k|}
string.c:str_init_normal_capa:
   51|  1.03k|{
   52|  1.03k|  str_check_length(mrb, capa);
   53|  1.03k|  char *dst = (char*)mrb_malloc(mrb, capa + 1);
   54|  1.03k|  if (p) memcpy(dst, p, len);
  ------------------
  |  Branch (54:7): [True: 935, False: 102]
  ------------------
   55|  1.03k|  dst[len] = '\0';
   56|  1.03k|  s->as.heap.ptr = dst;
   57|  1.03k|  s->as.heap.len = len;
   58|  1.03k|  s->as.heap.aux.capa = capa;
   59|  1.03k|  RSTR_UNSET_TYPE_FLAG(s);
  ------------------
  |  |   42|  1.03k|#define RSTR_UNSET_TYPE_FLAG(s) ((s)->flags &= ~(MRB_STR_TYPE_MASK|MRB_STR_EMBED_LEN_MASK))
  |  |  ------------------
  |  |  |  |  115|  1.03k|#define MRB_STR_TYPE_MASK 15
  |  |  ------------------
  |  |               #define RSTR_UNSET_TYPE_FLAG(s) ((s)->flags &= ~(MRB_STR_TYPE_MASK|MRB_STR_EMBED_LEN_MASK))
  |  |  ------------------
  |  |  |  |  114|  1.03k|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|  1.03k|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  ------------------
  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  1.03k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   60|  1.03k|  return s;
   61|  1.03k|}
string.c:str_new:
  139|   198k|{
  140|   198k|  str_check_length(mrb, len);
  141|   198k|  if (RSTR_EMBEDDABLE_P(len)) {
  ------------------
  |  |   63|   198k|#define RSTR_EMBEDDABLE_P(len) ((len) <= RSTRING_EMBED_LEN_MAX)
  |  |  ------------------
  |  |  |  |   20|   198k|  ((mrb_int)(sizeof(void*) * 3 + sizeof(void*) - 32 / CHAR_BIT - 1))
  |  |  ------------------
  |  |  |  Branch (63:32): [True: 197k, False: 919]
  |  |  ------------------
  ------------------
  142|   197k|    return str_init_embed(mrb_obj_alloc_string(mrb), p, len);
  ------------------
  |  |   29|   197k|#define mrb_obj_alloc_string(mrb) MRB_OBJ_ALLOC((mrb), MRB_TT_STRING, (mrb)->string_class)
  |  |  ------------------
  |  |  |  | 1200|   197k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  |  |  ------------------
  ------------------
  143|   197k|  }
  144|    919|  if (p && mrb_ro_data_p(p)) {
  ------------------
  |  Branch (144:7): [True: 919, False: 0]
  |  Branch (144:12): [True: 0, False: 919]
  ------------------
  145|      0|    return str_init_nofree(mrb_obj_alloc_string(mrb), p, len);
  ------------------
  |  |   29|      0|#define mrb_obj_alloc_string(mrb) MRB_OBJ_ALLOC((mrb), MRB_TT_STRING, (mrb)->string_class)
  |  |  ------------------
  |  |  |  | 1200|      0|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  |  |  ------------------
  ------------------
  146|      0|  }
  147|    919|  return str_init_normal(mrb, mrb_obj_alloc_string(mrb), p, len);
  ------------------
  |  |   29|    919|#define mrb_obj_alloc_string(mrb) MRB_OBJ_ALLOC((mrb), MRB_TT_STRING, (mrb)->string_class)
  |  |  ------------------
  |  |  |  | 1200|    919|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  |  |  ------------------
  ------------------
  148|    919|}
string.c:str_init_nofree:
   82|    476|{
   83|    476|  s->as.heap.ptr = (char*)p;
   84|    476|  s->as.heap.len = len;
   85|    476|  s->as.heap.aux.capa = 0;             /* nofree */
   86|    476|  RSTR_SET_TYPE_FLAG(s, NOFREE);
  ------------------
  |  |   41|    476|#define RSTR_SET_TYPE_FLAG(s, type) (RSTR_UNSET_TYPE_FLAG(s), (s)->flags |= MRB_STR_##type)
  |  |  ------------------
  |  |  |  |   42|    476|#define RSTR_UNSET_TYPE_FLAG(s) ((s)->flags &= ~(MRB_STR_TYPE_MASK|MRB_STR_EMBED_LEN_MASK))
  |  |  |  |  ------------------
  |  |  |  |  |  |  115|    476|#define MRB_STR_TYPE_MASK 15
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_UNSET_TYPE_FLAG(s) ((s)->flags &= ~(MRB_STR_TYPE_MASK|MRB_STR_EMBED_LEN_MASK))
  |  |  |  |  ------------------
  |  |  |  |  |  |  114|    476|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  113|    476|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|    476|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   87|    476|  return s;
   88|    476|}
string.c:str_init_normal:
   65|    919|{
   66|    919|  return str_init_normal_capa(mrb, s, p, len, len);
   67|    919|}
string.c:str_new_static:
  130|  8.26k|{
  131|  8.26k|  if (RSTR_EMBEDDABLE_P(len)) {
  ------------------
  |  |   63|  8.26k|#define RSTR_EMBEDDABLE_P(len) ((len) <= RSTRING_EMBED_LEN_MAX)
  |  |  ------------------
  |  |  |  |   20|  8.26k|  ((mrb_int)(sizeof(void*) * 3 + sizeof(void*) - 32 / CHAR_BIT - 1))
  |  |  ------------------
  |  |  |  Branch (63:32): [True: 7.79k, False: 476]
  |  |  ------------------
  ------------------
  132|  7.79k|    return str_init_embed(mrb_obj_alloc_string(mrb), p, len);
  ------------------
  |  |   29|  7.79k|#define mrb_obj_alloc_string(mrb) MRB_OBJ_ALLOC((mrb), MRB_TT_STRING, (mrb)->string_class)
  |  |  ------------------
  |  |  |  | 1200|  7.79k|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  |  |  ------------------
  ------------------
  133|  7.79k|  }
  134|    476|  return str_init_nofree(mrb_obj_alloc_string(mrb), p, len);
  ------------------
  |  |   29|    476|#define mrb_obj_alloc_string(mrb) MRB_OBJ_ALLOC((mrb), MRB_TT_STRING, (mrb)->string_class)
  |  |  ------------------
  |  |  |  | 1200|    476|#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
  |  |  ------------------
  ------------------
  135|  8.26k|}
string.c:str_decref:
  212|  1.01k|{
  213|  1.01k|  shared->refcnt--;
  214|  1.01k|  if (shared->refcnt == 0) {
  ------------------
  |  Branch (214:7): [True: 509, False: 509]
  ------------------
  215|    509|    mrb_free(mrb, shared->ptr);
  216|    509|    mrb_free(mrb, shared);
  217|    509|  }
  218|  1.01k|}
string.c:str_share:
  511|    509|{
  512|    509|  size_t len = (size_t)orig->as.heap.len;
  513|       |
  514|    509|  mrb_assert(!RSTR_EMBED_P(orig));
  ------------------
  |  |   68|    509|#define mrb_assert(p) ((void)0)
  ------------------
  515|    509|  if (RSTR_NOFREE_P(orig)) {
  ------------------
  |  |   77|    509|#define RSTR_NOFREE_P(s) ((s)->flags & MRB_STR_NOFREE)
  |  |  ------------------
  |  |  |  |  109|    509|#define MRB_STR_NOFREE    4
  |  |  ------------------
  |  |  |  Branch (77:26): [True: 0, False: 509]
  |  |  ------------------
  ------------------
  516|      0|    str_init_nofree(s, orig->as.heap.ptr, len);
  517|      0|  }
  518|    509|  else if (RSTR_SHARED_P(orig)) {
  ------------------
  |  |   69|    509|#define RSTR_SHARED_P(s) ((s)->flags & MRB_STR_SHARED)
  |  |  ------------------
  |  |  |  |  107|    509|#define MRB_STR_SHARED    1
  |  |  ------------------
  |  |  |  Branch (69:26): [True: 0, False: 509]
  |  |  ------------------
  ------------------
  519|      0|    str_init_shared(mrb, orig, s, orig->as.heap.aux.shared);
  520|      0|  }
  521|    509|  else if (RSTR_FSHARED_P(orig)) {
  ------------------
  |  |   73|    509|#define RSTR_FSHARED_P(s) ((s)->flags & MRB_STR_FSHARED)
  |  |  ------------------
  |  |  |  |  108|    509|#define MRB_STR_FSHARED   2
  |  |  ------------------
  |  |  |  Branch (73:27): [True: 0, False: 509]
  |  |  ------------------
  ------------------
  522|      0|    str_init_fshared(orig, s, orig->as.heap.aux.fshared);
  523|      0|  }
  524|    509|  else {
  525|    509|    if (orig->as.heap.aux.capa > orig->as.heap.len) {
  ------------------
  |  Branch (525:9): [True: 0, False: 509]
  ------------------
  526|      0|      orig->as.heap.ptr = (char*)mrb_realloc(mrb, orig->as.heap.ptr, len+1);
  527|      0|      orig->as.heap.aux.capa = (mrb_ssize)len;
  528|      0|    }
  529|    509|    str_init_shared(mrb, orig, s, NULL);
  530|    509|    str_init_shared(mrb, orig, orig, s->as.heap.aux.shared);
  531|    509|  }
  532|    509|}
string.c:str_init_shared:
   92|  1.01k|{
   93|  1.01k|  if (shared) {
  ------------------
  |  Branch (93:7): [True: 509, False: 509]
  ------------------
   94|    509|    shared->refcnt++;
   95|    509|  }
   96|    509|  else {
   97|    509|    shared = (mrb_shared_string*)mrb_malloc(mrb, sizeof(mrb_shared_string));
   98|    509|    shared->refcnt = 1;
   99|    509|    shared->ptr = orig->as.heap.ptr;
  100|    509|    shared->capa = orig->as.heap.aux.capa;
  101|    509|  }
  102|  1.01k|  s->as.heap.ptr = orig->as.heap.ptr;
  103|  1.01k|  s->as.heap.len = orig->as.heap.len;
  104|  1.01k|  s->as.heap.aux.shared = shared;
  105|  1.01k|  RSTR_SET_TYPE_FLAG(s, SHARED);
  ------------------
  |  |   41|  1.01k|#define RSTR_SET_TYPE_FLAG(s, type) (RSTR_UNSET_TYPE_FLAG(s), (s)->flags |= MRB_STR_##type)
  |  |  ------------------
  |  |  |  |   42|  1.01k|#define RSTR_UNSET_TYPE_FLAG(s) ((s)->flags &= ~(MRB_STR_TYPE_MASK|MRB_STR_EMBED_LEN_MASK))
  |  |  |  |  ------------------
  |  |  |  |  |  |  115|  1.01k|#define MRB_STR_TYPE_MASK 15
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_UNSET_TYPE_FLAG(s) ((s)->flags &= ~(MRB_STR_TYPE_MASK|MRB_STR_EMBED_LEN_MASK))
  |  |  |  |  ------------------
  |  |  |  |  |  |  114|  1.01k|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  113|  1.01k|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  1.01k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|  1.01k|  return s;
  107|  1.01k|}
string.c:str_modify_keep_ascii:
  222|  8.96k|{
  223|  8.96k|  if (RSTR_SHARED_P(s)) {
  ------------------
  |  |   69|  8.96k|#define RSTR_SHARED_P(s) ((s)->flags & MRB_STR_SHARED)
  |  |  ------------------
  |  |  |  |  107|  8.96k|#define MRB_STR_SHARED    1
  |  |  ------------------
  |  |  |  Branch (69:26): [True: 0, False: 8.96k]
  |  |  ------------------
  ------------------
  224|      0|    mrb_shared_string *shared = s->as.heap.aux.shared;
  225|       |
  226|      0|    if (shared->refcnt == 1 && s->as.heap.ptr == shared->ptr) {
  ------------------
  |  Branch (226:9): [True: 0, False: 0]
  |  Branch (226:32): [True: 0, False: 0]
  ------------------
  227|      0|      s->as.heap.aux.capa = shared->capa;
  228|      0|      s->as.heap.ptr[s->as.heap.len] = '\0';
  229|      0|      RSTR_UNSET_SHARED_FLAG(s);
  ------------------
  |  |   71|      0|#define RSTR_UNSET_SHARED_FLAG(s) ((s)->flags &= ~MRB_STR_SHARED)
  |  |  ------------------
  |  |  |  |  107|      0|#define MRB_STR_SHARED    1
  |  |  ------------------
  ------------------
  230|      0|      mrb_free(mrb, shared);
  231|      0|    }
  232|      0|    else {
  233|      0|      str_init_modifiable(mrb, s, s->as.heap.ptr, s->as.heap.len);
  234|      0|      str_decref(mrb, shared);
  235|      0|    }
  236|      0|  }
  237|  8.96k|  else if (RSTR_NOFREE_P(s) || RSTR_FSHARED_P(s)) {
  ------------------
  |  |   77|  17.9k|#define RSTR_NOFREE_P(s) ((s)->flags & MRB_STR_NOFREE)
  |  |  ------------------
  |  |  |  |  109|  8.96k|#define MRB_STR_NOFREE    4
  |  |  ------------------
  |  |  |  Branch (77:26): [True: 0, False: 8.96k]
  |  |  ------------------
  ------------------
                else if (RSTR_NOFREE_P(s) || RSTR_FSHARED_P(s)) {
  ------------------
  |  |   73|  8.96k|#define RSTR_FSHARED_P(s) ((s)->flags & MRB_STR_FSHARED)
  |  |  ------------------
  |  |  |  |  108|  8.96k|#define MRB_STR_FSHARED   2
  |  |  ------------------
  |  |  |  Branch (73:27): [True: 0, False: 8.96k]
  |  |  ------------------
  ------------------
  238|      0|    str_init_modifiable(mrb, s, s->as.heap.ptr, s->as.heap.len);
  239|      0|  }
  240|  8.96k|}
string.c:str_check_length:
   37|   199k|{
   38|   199k|  if (len < 0) {
  ------------------
  |  Branch (38:7): [True: 0, False: 199k]
  ------------------
   39|      0|    mrb_raise(mrb, E_ARGUMENT_ERROR, "negative (or overflowed) string size");
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   40|      0|  }
   41|   199k|#if MRB_STR_LENGTH_MAX != 0
   42|   199k|  if (len > MRB_STR_LENGTH_MAX-1) {
  ------------------
  |  |   32|   199k|#define MRB_STR_LENGTH_MAX 1048576
  ------------------
  |  Branch (42:7): [True: 0, False: 199k]
  ------------------
   43|      0|    mrb_raisef(mrb, E_ARGUMENT_ERROR, "string too long (len=%i max=" MRB_STRINGIZE(MRB_STR_LENGTH_MAX) ")", len);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   44|      0|  }
   45|   199k|#endif
   46|   199k|}
string.c:resize_capa:
  166|     16|{
  167|     16|  if (RSTR_EMBED_P(s)) {
  ------------------
  |  |   44|     16|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  ------------------
  |  |  |  |  110|     16|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  ------------------
  |  |  |  Branch (44:25): [True: 16, False: 0]
  |  |  ------------------
  ------------------
  168|     16|    if (!RSTR_EMBEDDABLE_P(capacity)) {
  ------------------
  |  |   63|     16|#define RSTR_EMBEDDABLE_P(len) ((len) <= RSTRING_EMBED_LEN_MAX)
  |  |  ------------------
  |  |  |  |   20|     16|  ((mrb_int)(sizeof(void*) * 3 + sizeof(void*) - 32 / CHAR_BIT - 1))
  |  |  ------------------
  ------------------
  |  Branch (168:9): [True: 16, False: 0]
  ------------------
  169|     16|      str_init_normal_capa(mrb, s, RSTR_EMBED_PTR(s), RSTR_EMBED_LEN(s), capacity);
  ------------------
  |  |   60|     16|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  ------------------
                    str_init_normal_capa(mrb, s, RSTR_EMBED_PTR(s), RSTR_EMBED_LEN(s), capacity);
  ------------------
  |  |   62|     16|  (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  ------------------
  |  |  |  |  114|     16|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|     16|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  ------------------
  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     16|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  ------------------
  |  |  |  |  112|     16|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  ------------------
  ------------------
  170|     16|    }
  171|     16|  }
  172|      0|  else {
  173|      0|    str_check_length(mrb, capacity);
  174|      0|    s->as.heap.ptr = (char*)mrb_realloc(mrb, RSTR_PTR(s), capacity+1);
  ------------------
  |  |   65|      0|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   44|      0|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|      0|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   60|      0|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  ------------------
  |  |  |  Branch (65:22): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  175|      0|    s->as.heap.aux.capa = (mrb_ssize)capacity;
  176|      0|  }
  177|     16|}
string.c:check_null_byte:
  244|  1.42k|{
  245|  1.42k|  if (memchr(RSTR_PTR(str), '\0', RSTR_LEN(str))) {
  ------------------
  |  |   65|  1.42k|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   44|  1.42k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  1.42k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   60|  1.42k|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  ------------------
  |  |  |  Branch (65:22): [True: 1.42k, False: 0]
  |  |  ------------------
  ------------------
                if (memchr(RSTR_PTR(str), '\0', RSTR_LEN(str))) {
  ------------------
  |  |   66|  1.42k|#define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   44|  1.42k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  1.42k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   62|  1.42k|  (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  114|  1.42k|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  113|  1.42k|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  1.42k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  1.42k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (66:22): [True: 1.42k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (245:7): [True: 0, False: 1.42k]
  ------------------
  246|      0|    mrb_raise(mrb, E_ARGUMENT_ERROR, "string contains null byte");
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  247|      0|  }
  248|  1.42k|}
string.c:str_eql:
  981|  62.0k|{
  982|  62.0k|  const mrb_int len = RSTRING_LEN(str1);
  ------------------
  |  |  102|  62.0k|#define RSTRING_LEN(s)       RSTR_LEN(RSTRING(s))
  |  |  ------------------
  |  |  |  |   66|  62.0k|#define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  62.0k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  110|  62.0k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  61.9k|  (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  114|  61.9k|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  113|  61.9k|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|  61.9k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                 (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  61.9k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (66:22): [True: 61.9k, False: 164]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  983|       |
  984|  62.0k|  if (len != RSTRING_LEN(str2)) return FALSE;
  ------------------
  |  |  102|  62.0k|#define RSTRING_LEN(s)       RSTR_LEN(RSTRING(s))
  |  |  ------------------
  |  |  |  |   66|  62.0k|#define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  62.0k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  110|  62.0k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  61.9k|  (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  114|  61.9k|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  113|  61.9k|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|  61.9k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                 (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  61.9k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (66:22): [True: 61.9k, False: 146]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (len != RSTRING_LEN(str2)) return FALSE;
  ------------------
  |  |   51|    571|#  define FALSE 0
  ------------------
  |  Branch (984:7): [True: 571, False: 61.4k]
  ------------------
  985|  61.4k|  if (memcmp(RSTRING_PTR(str1), RSTRING_PTR(str2), (size_t)len) == 0)
  ------------------
  |  |  100|  61.4k|#define RSTRING_PTR(s)       RSTR_PTR(RSTRING(s))
  |  |  ------------------
  |  |  |  |   65|  61.4k|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  61.4k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  110|  61.4k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|  61.4k|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:22): [True: 61.4k, False: 64]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                if (memcmp(RSTRING_PTR(str1), RSTRING_PTR(str2), (size_t)len) == 0)
  ------------------
  |  |  100|  61.4k|#define RSTRING_PTR(s)       RSTR_PTR(RSTRING(s))
  |  |  ------------------
  |  |  |  |   65|  61.4k|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  61.4k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  110|  61.4k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   60|  61.4k|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:22): [True: 61.4k, False: 64]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (985:7): [True: 61.4k, False: 75]
  ------------------
  986|  61.4k|    return TRUE;
  ------------------
  |  |   54|  61.4k|#  define TRUE 1
  ------------------
  987|     75|  return FALSE;
  ------------------
  |  |   51|     75|#  define FALSE 0
  ------------------
  988|  61.4k|}
string.c:str_replace:
  632|  65.1k|{
  633|  65.1k|  size_t len;
  634|       |
  635|  65.1k|  mrb_check_frozen(mrb, s1);
  636|  65.1k|  if (s1 == s2) return mrb_obj_value(s1);
  ------------------
  |  Branch (636:7): [True: 0, False: 65.1k]
  ------------------
  637|  65.1k|  RSTR_COPY_ASCII_FLAG(s1, s2);
  ------------------
  |  |   92|  65.1k|# define RSTR_COPY_ASCII_FLAG(dst, src) (void)0
  ------------------
  638|  65.1k|  if (RSTR_SHARED_P(s1)) {
  ------------------
  |  |   69|  65.1k|#define RSTR_SHARED_P(s) ((s)->flags & MRB_STR_SHARED)
  |  |  ------------------
  |  |  |  |  107|  65.1k|#define MRB_STR_SHARED    1
  |  |  ------------------
  |  |  |  Branch (69:26): [True: 0, False: 65.1k]
  |  |  ------------------
  ------------------
  639|      0|    str_decref(mrb, s1->as.heap.aux.shared);
  640|      0|  }
  641|  65.1k|  else if (!RSTR_EMBED_P(s1) && !RSTR_NOFREE_P(s1) && !RSTR_FSHARED_P(s1)
  ------------------
  |  |   44|   130k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  ------------------
  |  |  |  |  110|  65.1k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  ------------------
  ------------------
                else if (!RSTR_EMBED_P(s1) && !RSTR_NOFREE_P(s1) && !RSTR_FSHARED_P(s1)
  ------------------
  |  |   77|  65.1k|#define RSTR_NOFREE_P(s) ((s)->flags & MRB_STR_NOFREE)
  |  |  ------------------
  |  |  |  |  109|      0|#define MRB_STR_NOFREE    4
  |  |  ------------------
  ------------------
                else if (!RSTR_EMBED_P(s1) && !RSTR_NOFREE_P(s1) && !RSTR_FSHARED_P(s1)
  ------------------
  |  |   73|  65.1k|#define RSTR_FSHARED_P(s) ((s)->flags & MRB_STR_FSHARED)
  |  |  ------------------
  |  |  |  |  108|      0|#define MRB_STR_FSHARED   2
  |  |  ------------------
  ------------------
  |  Branch (641:12): [True: 0, False: 65.1k]
  |  Branch (641:33): [True: 0, False: 0]
  |  Branch (641:55): [True: 0, False: 0]
  ------------------
  642|  65.1k|           && s1->as.heap.ptr) {
  ------------------
  |  Branch (642:15): [True: 0, False: 0]
  ------------------
  643|      0|    mrb_free(mrb, s1->as.heap.ptr);
  644|      0|  }
  645|       |
  646|  65.1k|  len = (size_t)RSTR_LEN(s2);
  ------------------
  |  |   66|  65.1k|#define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   44|  65.1k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  65.1k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len)
  |  |  ------------------
  |  |  |  |   62|  64.6k|  (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  114|  64.6k|#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  113|  64.6k|#define MRB_STR_EMBED_LEN_BIT 5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|  64.6k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                 (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|  64.6k|#define MRB_STR_EMBED_LEN_SHIFT 6
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (66:22): [True: 64.6k, False: 509]
  |  |  ------------------
  ------------------
  647|  65.1k|  if (RSTR_EMBEDDABLE_P(len)) {
  ------------------
  |  |   63|  65.1k|#define RSTR_EMBEDDABLE_P(len) ((len) <= RSTRING_EMBED_LEN_MAX)
  |  |  ------------------
  |  |  |  |   20|  65.1k|  ((mrb_int)(sizeof(void*) * 3 + sizeof(void*) - 32 / CHAR_BIT - 1))
  |  |  ------------------
  |  |  |  Branch (63:32): [True: 64.6k, False: 509]
  |  |  ------------------
  ------------------
  648|  64.6k|    str_init_embed(s1, RSTR_PTR(s2), len);
  ------------------
  |  |   65|  64.6k|#define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   44|  64.6k|#define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED)
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|  64.6k|#define MRB_STR_EMBED     8  /* type flags up to here */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_PTR(s) : (s)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   60|  64.6k|#define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary)
  |  |  ------------------
  |  |  |  Branch (65:22): [True: 64.6k, False: 0]
  |  |  ------------------
  ------------------
  649|  64.6k|  }
  650|    509|  else {
  651|    509|    str_share(mrb, s2, s1);
  652|    509|  }
  653|       |
  654|  65.1k|  return mrb_obj_value(s1);
  655|  65.1k|}

mrb_intern:
  239|   861k|{
  240|   861k|  return sym_intern(mrb, name, len, FALSE);
  ------------------
  |  |   51|   861k|#  define FALSE 0
  ------------------
  241|   861k|}
mrb_intern_static:
  245|  3.34k|{
  246|  3.34k|  return sym_intern(mrb, name, len, TRUE);
  ------------------
  |  |   54|  3.34k|#  define TRUE 1
  ------------------
  247|  3.34k|}
mrb_intern_cstr:
  251|   559k|{
  252|   559k|  return mrb_intern(mrb, name, strlen(name));
  253|   559k|}
mrb_sym_name_len:
  341|  94.9k|{
  342|       |#ifdef MRB_USE_ALL_SYMBOLS
  343|       |  return sym2name_len(mrb, sym, NULL, lenp);
  344|       |#else
  345|  94.9k|  return sym2name_len(mrb, sym, mrb->symbuf, lenp);
  346|  94.9k|#endif
  347|  94.9k|}
mrb_free_symtbl:
  351|    476|{
  352|    476|  mrb_sym i, lim;
  353|       |
  354|  68.2k|  for (i=1,lim=mrb->symidx+1; i<lim; i++) {
  ------------------
  |  Branch (354:31): [True: 67.7k, False: 476]
  ------------------
  355|  67.7k|    if (!sym_lit_p(mrb, i)) {
  ------------------
  |  |  121|  67.7k|#define sym_lit_p(mrb, i) (mrb->symflags[i>>3]&(1<<(i&7)))
  ------------------
  |  Branch (355:9): [True: 67.7k, False: 0]
  ------------------
  356|  67.7k|      mrb_free(mrb, (char*)mrb->symtbl[i]);
  357|  67.7k|    }
  358|  67.7k|  }
  359|    476|  mrb_free(mrb, (void*)mrb->symtbl);
  360|    476|  mrb_free(mrb, (void*)mrb->symlink);
  361|    476|  mrb_free(mrb, (void*)mrb->symflags);
  362|    476|}
mrb_init_symtbl:
  366|    476|{
  367|    476|}
mrb_sym_str:
  614|  4.33k|{
  615|  4.33k|  mrb_int len;
  616|  4.33k|  const char *name = mrb_sym_name_len(mrb, sym, &len);
  617|       |
  618|  4.33k|  if (!name) return mrb_undef_value(); /* can't happen */
  ------------------
  |  Branch (618:7): [True: 0, False: 4.33k]
  ------------------
  619|  4.33k|  if (SYMBOL_INLINE_P(sym)) {
  ------------------
  |  |   70|  4.33k|# define SYMBOL_INLINE_P(sym) ((sym) >= (1<<24))
  |  |  ------------------
  |  |  |  Branch (70:31): [True: 0, False: 4.33k]
  |  |  ------------------
  ------------------
  620|      0|    mrb_value str = mrb_str_new(mrb, name, len);
  621|      0|    RSTR_SET_ASCII_FLAG(mrb_str_ptr(str));
  ------------------
  |  |   89|      0|# define RSTR_SET_ASCII_FLAG(s) (void)0
  ------------------
  622|      0|    return str;
  623|      0|  }
  624|  4.33k|  return mrb_str_new_static(mrb, name, len);
  625|  4.33k|}
mrb_init_symbol:
  690|    476|{
  691|    476|  struct RClass *sym;
  692|       |
  693|    476|  mrb->symbol_class = sym = mrb_define_class(mrb, "Symbol", mrb->object_class);  /* 15.2.11 */
  694|    476|  MRB_SET_INSTANCE_TT(sym, MRB_TT_SYMBOL);
  ------------------
  |  |   75|    476|#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
  |  |  ------------------
  |  |  |  |   74|    476|#define MRB_INSTANCE_TT_MASK (0x1F)
  |  |  ------------------
  ------------------
  695|    476|  mrb_undef_class_method(mrb,  sym, "new");
  696|       |
  697|    476|  mrb_define_method(mrb, sym, "to_s",    sym_to_s,    MRB_ARGS_NONE());          /* 15.2.11.3.3 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  698|    476|  mrb_define_method(mrb, sym, "name",    sym_name,    MRB_ARGS_NONE());
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  699|    476|  mrb_define_method(mrb, sym, "to_sym",  sym_to_sym,  MRB_ARGS_NONE());          /* 15.2.11.3.4 */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  700|    476|  mrb_define_method(mrb, sym, "inspect", sym_inspect, MRB_ARGS_NONE());          /* 15.2.11.3.5(x) */
  ------------------
  |  |  919|    476|#define MRB_ARGS_NONE()     ((mrb_aspec)0)
  ------------------
  701|    476|  mrb_define_method(mrb, sym, "<=>",     sym_cmp,     MRB_ARGS_REQ(1));
  ------------------
  |  |  877|    476|#define MRB_ARGS_REQ(n)     ((mrb_aspec)((n)&0x1f) << 18)
  ------------------
  702|    476|}
symbol.c:sym_intern:
  188|   864k|{
  189|   864k|  mrb_sym sym;
  190|   864k|  uint8_t hash;
  191|       |
  192|   864k|  sym_validate_len(mrb, len);
  193|   864k|  sym = find_symbol(mrb, name, len, &hash);
  194|   864k|  if (sym > 0) return sym;
  ------------------
  |  Branch (194:7): [True: 796k, False: 67.7k]
  ------------------
  195|       |
  196|       |  /* registering a new symbol */
  197|  67.7k|  sym = mrb->symidx + 1;
  198|  67.7k|  if (mrb->symcapa <= sym) {
  ------------------
  |  Branch (198:7): [True: 1.37k, False: 66.3k]
  ------------------
  199|  1.37k|    size_t symcapa = mrb->symcapa;
  200|  1.37k|    if (symcapa == 0) symcapa = 100;
  ------------------
  |  Branch (200:9): [True: 476, False: 898]
  ------------------
  201|    898|    else symcapa = (size_t)(symcapa * 6 / 5);
  202|  1.37k|    mrb->symtbl = (const char**)mrb_realloc(mrb, (void*)mrb->symtbl, sizeof(char*)*symcapa);
  203|  1.37k|    mrb->symflags = (uint8_t*)mrb_realloc(mrb, mrb->symflags, symcapa/8+1);
  204|  1.37k|    memset(mrb->symflags+mrb->symcapa/8+1, 0, (symcapa-mrb->symcapa)/8);
  205|  1.37k|    mrb->symlink = (uint8_t*)mrb_realloc(mrb, mrb->symlink, symcapa);
  206|  1.37k|    mrb->symcapa = symcapa;
  207|  1.37k|  }
  208|  67.7k|  sym_flags_clear(mrb, sym);
  ------------------
  |  |  123|  67.7k|#define sym_flags_clear(mrb, i) mrb->symflags[i>>3]&=~(1<<(i&7))
  ------------------
  209|  67.7k|  if ((lit || mrb_ro_data_p(name)) && name[len] == 0 && strlen(name) == len) {
  ------------------
  |  Branch (209:8): [True: 0, False: 67.7k]
  |  Branch (209:15): [True: 0, False: 67.7k]
  |  Branch (209:39): [True: 0, False: 0]
  |  Branch (209:57): [True: 0, False: 0]
  ------------------
  210|      0|    sym_lit_set(mrb, sym);
  ------------------
  |  |  122|      0|#define sym_lit_set(mrb, i) mrb->symflags[i>>3]|=(1<<(i&7))
  ------------------
  211|      0|    mrb->symtbl[sym] = name;
  212|      0|  }
  213|  67.7k|  else {
  214|  67.7k|    uint32_t ulen = (uint32_t)len;
  215|  67.7k|    size_t ilen = mrb_packed_int_len(ulen);
  216|  67.7k|    char *p = (char*)mrb_malloc(mrb, len+ilen+1);
  217|  67.7k|    mrb_packed_int_encode(ulen, (uint8_t*)p);
  218|  67.7k|    memcpy(p+ilen, name, len);
  219|  67.7k|    p[ilen+len] = 0;
  220|  67.7k|    mrb->symtbl[sym] = p;
  221|  67.7k|  }
  222|  67.7k|  if (mrb->symhash[hash]) {
  ------------------
  |  Branch (222:7): [True: 41.2k, False: 26.5k]
  ------------------
  223|  41.2k|    mrb_sym i = sym - mrb->symhash[hash];
  224|  41.2k|    if (i > 0xff)
  ------------------
  |  Branch (224:9): [True: 11.0k, False: 30.1k]
  ------------------
  225|  11.0k|      mrb->symlink[sym] = 0xff;
  226|  30.1k|    else
  227|  30.1k|      mrb->symlink[sym] = i;
  228|  41.2k|  }
  229|  26.5k|  else {
  230|  26.5k|    mrb->symlink[sym] = 0;
  231|  26.5k|  }
  232|  67.7k|  mrb->symhash[hash] = mrb->symidx = sym;
  233|       |
  234|  67.7k|  return (sym+MRB_PRESYM_MAX);
  ------------------
  |  | 1441|  67.7k|#define MRB_PRESYM_MAX 1443
  ------------------
  235|   864k|}
symbol.c:sym_validate_len:
   59|   864k|{
   60|   864k|  if (len >= UINT16_MAX) {
  ------------------
  |  Branch (60:7): [True: 0, False: 864k]
  ------------------
   61|      0|    mrb_raise(mrb, E_ARGUMENT_ERROR, "symbol length too long");
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   62|      0|  }
   63|   864k|}
symbol.c:find_symbol:
  146|   864k|{
  147|   864k|  mrb_sym i;
  148|   864k|  uint8_t hash;
  149|       |
  150|   864k|#ifndef MRB_NO_PRESYM
  151|       |  /* presym */
  152|   864k|  i = presym_find(name, len);
  153|   864k|  if (i > 0) return i;
  ------------------
  |  Branch (153:7): [True: 661k, False: 203k]
  ------------------
  154|   203k|#endif
  155|       |
  156|       |  /* inline symbol */
  157|   203k|  i = sym_inline_pack(name, len);
  158|   203k|  if (i > 0) return i;
  ------------------
  |  Branch (158:7): [True: 63.9k, False: 139k]
  ------------------
  159|       |
  160|   139k|  hash = mrb_byte_hash((const uint8_t*)name, len);
  161|   139k|  if (hashp) *hashp = hash;
  ------------------
  |  Branch (161:7): [True: 139k, False: 0]
  ------------------
  162|       |
  163|   139k|  i = mrb->symhash[hash];
  164|   139k|  if (i == 0) return 0;
  ------------------
  |  Branch (164:7): [True: 26.5k, False: 113k]
  ------------------
  165|   176k|  for (;;) {
  166|   176k|    if (sym_check(mrb, name, len, i)) {
  ------------------
  |  Branch (166:9): [True: 68.1k, False: 108k]
  ------------------
  167|  68.1k|      return (i+MRB_PRESYM_MAX);
  ------------------
  |  | 1441|  68.1k|#define MRB_PRESYM_MAX 1443
  ------------------
  168|  68.1k|    }
  169|   108k|    uint8_t diff = mrb->symlink[i];
  170|   108k|    if (diff == 0xff) {
  ------------------
  |  Branch (170:9): [True: 22.8k, False: 85.4k]
  ------------------
  171|  22.8k|      i -= 0xff;
  172|  16.6M|      while (i > 0) {
  ------------------
  |  Branch (172:14): [True: 16.6M, False: 19.0k]
  ------------------
  173|  16.6M|        if (sym_check(mrb, name, len, i)) {
  ------------------
  |  Branch (173:13): [True: 3.78k, False: 16.6M]
  ------------------
  174|  3.78k|          return (i+MRB_PRESYM_MAX);
  ------------------
  |  | 1441|  3.78k|#define MRB_PRESYM_MAX 1443
  ------------------
  175|  3.78k|        }
  176|  16.6M|        i--;
  177|  16.6M|      }
  178|  19.0k|      return 0;
  179|  22.8k|    }
  180|  85.4k|    if (diff == 0) return 0;
  ------------------
  |  Branch (180:9): [True: 22.1k, False: 63.3k]
  ------------------
  181|  63.3k|    i -= diff;
  182|  63.3k|  }
  183|      0|  return 0;
  184|   113k|}
symbol.c:presym_find:
   26|   864k|{
   27|   864k|  if (presym_length_table[MRB_PRESYM_MAX-1] < len) return 0;
  ------------------
  |  | 1441|   864k|#define MRB_PRESYM_MAX 1443
  ------------------
  |  Branch (27:7): [True: 0, False: 864k]
  ------------------
   28|       |
   29|   864k|  mrb_sym start, idx, presym_size = MRB_PRESYM_MAX;
  ------------------
  |  | 1441|   864k|#define MRB_PRESYM_MAX 1443
  ------------------
   30|   864k|  int cmp;
   31|  8.78M|  for (start = 0; presym_size != 0; presym_size/=2) {
  ------------------
  |  Branch (31:19): [True: 8.58M, False: 203k]
  ------------------
   32|  8.58M|    idx = start+presym_size/2;
   33|  8.58M|    cmp = (int)len-(int)presym_length_table[idx];
   34|  8.58M|    if (cmp == 0) {
  ------------------
  |  Branch (34:9): [True: 5.27M, False: 3.31M]
  ------------------
   35|  5.27M|      cmp = memcmp(name, presym_name_table[idx], len);
   36|  5.27M|      if (cmp == 0) return idx+1;
  ------------------
  |  Branch (36:11): [True: 661k, False: 4.61M]
  ------------------
   37|  5.27M|    }
   38|  7.92M|    if (0 < cmp) {
  ------------------
  |  Branch (38:9): [True: 3.26M, False: 4.65M]
  ------------------
   39|  3.26M|      start = ++idx;
   40|  3.26M|      --presym_size;
   41|  3.26M|    }
   42|  7.92M|  }
   43|   203k|  return 0;
   44|   864k|}
symbol.c:sym_inline_pack:
   76|   203k|{
   77|       |#if defined(MRB_WORD_BOXING) && defined(MRB_32BIT) && !defined(MRB_WORDBOX_NO_FLOAT_TRUNCATE)
   78|       |  const size_t pack_length_max = 4;
   79|       |#else
   80|   203k|  const size_t pack_length_max = 5;
   81|   203k|#endif
   82|       |
   83|   203k|  char c;
   84|   203k|  const char *p;
   85|   203k|  mrb_sym sym = 0;
   86|       |
   87|   203k|  if (len > pack_length_max) return 0; /* too long */
  ------------------
  |  Branch (87:7): [True: 138k, False: 65.3k]
  ------------------
   88|  65.3k|  if (len == 0) return 0; /* empty string */
  ------------------
  |  Branch (88:7): [True: 0, False: 65.3k]
  ------------------
   89|   388k|  for (size_t i=0; i<len; i++) {
  ------------------
  |  Branch (89:20): [True: 324k, False: 63.9k]
  ------------------
   90|   324k|    uint32_t bits;
   91|       |
   92|   324k|    c = name[i];
   93|   324k|    if (c == 0) return 0;       /* NUL in name */
  ------------------
  |  Branch (93:9): [True: 0, False: 324k]
  ------------------
   94|   324k|    p = strchr(pack_table, (int)c);
   95|   324k|    if (p == 0) return 0;       /* non alnum char */
  ------------------
  |  Branch (95:9): [True: 1.42k, False: 322k]
  ------------------
   96|   322k|    bits = (uint32_t)(p - pack_table)+1;
   97|   322k|    sym |= bits<<(24-i*6);
   98|   322k|  }
   99|  63.9k|  mrb_assert(SYMBOL_INLINE_P(sym));
  ------------------
  |  |   68|  63.9k|#define mrb_assert(p) ((void)0)
  ------------------
  100|  63.9k|  return sym;
  101|  65.3k|}
symbol.c:sym_check:
  127|  16.8M|{
  128|  16.8M|  const char *symname = mrb->symtbl[i];
  129|  16.8M|  size_t symlen;
  130|       |
  131|  16.8M|  if (sym_lit_p(mrb, i)) {
  ------------------
  |  |  121|  16.8M|#define sym_lit_p(mrb, i) (mrb->symflags[i>>3]&(1<<(i&7)))
  |  |  ------------------
  |  |  |  Branch (121:27): [True: 0, False: 16.8M]
  |  |  ------------------
  ------------------
  132|      0|    symlen = strlen(symname);
  133|      0|  }
  134|  16.8M|  else {
  135|       |    /* length in BER */
  136|  16.8M|    symlen = mrb_packed_int_decode((const uint8_t*)symname, (const uint8_t**)&symname);
  137|  16.8M|  }
  138|  16.8M|  if (len == symlen && memcmp(symname, name, len) == 0) {
  ------------------
  |  Branch (138:7): [True: 4.63M, False: 12.1M]
  |  Branch (138:24): [True: 71.9k, False: 4.55M]
  ------------------
  139|  71.9k|    return TRUE;
  ------------------
  |  |   54|  71.9k|#  define TRUE 1
  ------------------
  140|  71.9k|  }
  141|  16.7M|  return FALSE;
  ------------------
  |  |   51|  16.7M|#  define FALSE 0
  ------------------
  142|  16.8M|}
symbol.c:sym2name_len:
  310|  94.9k|{
  311|  94.9k|  if (sym == 0) goto outofsym;
  ------------------
  |  Branch (311:7): [True: 0, False: 94.9k]
  ------------------
  312|  94.9k|  if (SYMBOL_INLINE_P(sym)) return sym_inline_unpack(sym, buf, lenp);
  ------------------
  |  |   70|  94.9k|# define SYMBOL_INLINE_P(sym) ((sym) >= (1<<24))
  |  |  ------------------
  |  |  |  Branch (70:31): [True: 0, False: 94.9k]
  |  |  ------------------
  ------------------
  313|       |
  314|  94.9k|#ifndef MRB_NO_PRESYM
  315|  94.9k|  {
  316|  94.9k|    const char *name = presym_sym2name(sym, lenp);
  317|  94.9k|    if (name) return name;
  ------------------
  |  Branch (317:9): [True: 93.9k, False: 952]
  ------------------
  318|  94.9k|  }
  319|    952|#endif
  320|    952|  sym -= MRB_PRESYM_MAX;
  ------------------
  |  | 1441|    952|#define MRB_PRESYM_MAX 1443
  ------------------
  321|       |
  322|    952|  if (mrb->symidx < sym) {
  ------------------
  |  Branch (322:7): [True: 0, False: 952]
  ------------------
  323|      0|  outofsym:
  324|      0|    if (lenp) *lenp = 0;
  ------------------
  |  Branch (324:9): [True: 0, False: 0]
  ------------------
  325|      0|    return NULL;
  326|      0|  }
  327|       |
  328|    952|  const char *symname = mrb->symtbl[sym];
  329|    952|  if (!sym_lit_p(mrb, sym)) {
  ------------------
  |  |  121|    952|#define sym_lit_p(mrb, i) (mrb->symflags[i>>3]&(1<<(i&7)))
  ------------------
  |  Branch (329:7): [True: 952, False: 0]
  ------------------
  330|    952|    uint32_t len = mrb_packed_int_decode((const uint8_t*)symname, (const uint8_t**)&symname);
  331|    952|    if (lenp) *lenp = (mrb_int)len;
  ------------------
  |  Branch (331:9): [True: 952, False: 0]
  ------------------
  332|    952|  }
  333|      0|  else if (lenp) {
  ------------------
  |  Branch (333:12): [True: 0, False: 0]
  ------------------
  334|      0|    *lenp = (mrb_int)strlen(symname);
  335|      0|  }
  336|    952|  return symname;
  337|    952|}
symbol.c:presym_sym2name:
   48|  94.9k|{
   49|  94.9k|  if (sym > MRB_PRESYM_MAX) return NULL;
  ------------------
  |  | 1441|  94.9k|#define MRB_PRESYM_MAX 1443
  ------------------
  |  Branch (49:7): [True: 952, False: 93.9k]
  ------------------
   50|  93.9k|  if (lenp) *lenp = presym_length_table[sym-1];
  ------------------
  |  Branch (50:7): [True: 51.1k, False: 42.8k]
  ------------------
   51|  93.9k|  return presym_name_table[sym-1];
   52|  94.9k|}

vm.c:value_move:
    8|  55.0k|{
    9|  55.0k|  if (n == 0) return;
  ------------------
  |  Branch (9:7): [True: 25.2k, False: 29.8k]
  ------------------
   10|  29.8k|  if (s1 > s2 && s1 < s2 + n)
  ------------------
  |  Branch (10:7): [True: 7.99k, False: 21.8k]
  |  Branch (10:18): [True: 0, False: 7.99k]
  ------------------
   11|      0|  {
   12|      0|    s1 += n;
   13|      0|    s2 += n;
   14|      0|    while (n-- > 0) {
  ------------------
  |  Branch (14:12): [True: 0, False: 0]
  ------------------
   15|      0|      *--s1 = *--s2;
   16|      0|    }
   17|      0|  }
   18|  29.8k|  else if (s1 != s2) {
  ------------------
  |  Branch (18:12): [True: 29.8k, False: 0]
  ------------------
   19|  83.4k|    while (n-- > 0) {
  ------------------
  |  Branch (19:12): [True: 53.6k, False: 29.8k]
  ------------------
   20|  53.6k|      *s1++ = *s2++;
   21|  53.6k|    }
   22|  29.8k|  }
   23|      0|  else {
   24|       |    /* nothing to do. */
   25|      0|  }
   26|  29.8k|}

mrb_gc_mark_gv:
  247|  12.8k|{
  248|  12.8k|  mark_tbl(mrb, mrb->globals);
  249|  12.8k|}
mrb_gc_free_gv:
  253|    476|{
  254|    476|  if (mrb->globals)
  ------------------
  |  Branch (254:7): [True: 476, False: 0]
  ------------------
  255|    476|    iv_free(mrb, mrb->globals);
  256|    476|}
mrb_gc_mark_iv:
  260|  1.03M|{
  261|  1.03M|  mark_tbl(mrb, obj->iv);
  262|  1.03M|}
mrb_gc_mark_iv_size:
  266|  1.03M|{
  267|  1.03M|  return iv_size(mrb, obj->iv);
  268|  1.03M|}
mrb_gc_free_iv:
  272|   164k|{
  273|   164k|  if (obj->iv) {
  ------------------
  |  Branch (273:7): [True: 107k, False: 57.1k]
  ------------------
  274|   107k|    iv_free(mrb, obj->iv);
  275|   107k|  }
  276|   164k|}
mrb_obj_iv_get:
  308|  88.8k|{
  309|  88.8k|  mrb_value v;
  310|       |
  311|  88.8k|  if (obj->iv && iv_get(mrb, obj->iv, sym, &v))
  ------------------
  |  Branch (311:7): [True: 85.1k, False: 3.71k]
  |  Branch (311:18): [True: 85.1k, False: 0]
  ------------------
  312|  85.1k|    return v;
  313|  3.71k|  return mrb_nil_value();
  314|  88.8k|}
mrb_iv_get:
  318|  41.2k|{
  319|  41.2k|  if (obj_iv_p(obj)) {
  ------------------
  |  Branch (319:7): [True: 41.2k, False: 0]
  ------------------
  320|  41.2k|    return mrb_obj_iv_get(mrb, mrb_obj_ptr(obj), sym);
  ------------------
  |  |   34|  41.2k|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  41.2k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  321|  41.2k|  }
  322|      0|  return mrb_nil_value();
  323|  41.2k|}
mrb_obj_iv_set_force:
  359|   450k|{
  360|   450k|  if (namespace_p(obj->tt)) {
  ------------------
  |  Branch (360:7): [True: 181k, False: 268k]
  ------------------
  361|   181k|    assign_class_name(mrb, obj, sym, v);
  362|   181k|  }
  363|   450k|  if (!obj->iv) {
  ------------------
  |  Branch (363:7): [True: 107k, False: 343k]
  ------------------
  364|   107k|    obj->iv = iv_new(mrb);
  365|   107k|  }
  366|   450k|  iv_put(mrb, obj->iv, sym, v);
  367|   450k|  mrb_field_write_barrier_value(mrb, (struct RBasic*)obj, v);
  ------------------
  |  | 1317|   450k|#define mrb_field_write_barrier_value(mrb, obj, val) do{\
  |  | 1318|   450k|  if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |  148|   450k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|   900k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (148:29): [True: 176k, False: 273k]
  |  |  |  |  |  Branch (148:63): [True: 103k, False: 170k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |   22|   170k|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|   170k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1319|   450k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1319:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  368|   450k|}
mrb_obj_iv_set:
  372|   410k|{
  373|   410k|  mrb_check_frozen(mrb, obj);
  374|   410k|  mrb_obj_iv_set_force(mrb, obj, sym, v);
  375|   410k|}
mrb_iv_set:
  387|   227k|{
  388|   227k|  if (obj_iv_p(obj)) {
  ------------------
  |  Branch (388:7): [True: 227k, False: 0]
  ------------------
  389|   227k|    mrb_obj_iv_set(mrb, mrb_obj_ptr(obj), sym, v);
  ------------------
  |  |   34|   227k|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|   227k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  390|   227k|  }
  391|      0|  else {
  392|      0|    mrb_raise(mrb, E_ARGUMENT_ERROR, "cannot set instance variable");
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  393|      0|  }
  394|   227k|}
mrb_obj_iv_defined:
  398|  43.3k|{
  399|  43.3k|  iv_tbl *t;
  400|       |
  401|  43.3k|  t = obj->iv;
  402|  43.3k|  if (t && iv_get(mrb, t, sym, NULL)) return TRUE;
  ------------------
  |  |   54|  4.28k|#  define TRUE 1
  ------------------
  |  Branch (402:7): [True: 5.23k, False: 38.0k]
  |  Branch (402:12): [True: 4.28k, False: 952]
  ------------------
  403|  39.0k|  return FALSE;
  ------------------
  |  |   51|  39.0k|#  define FALSE 0
  ------------------
  404|  43.3k|}
mrb_iv_name_sym_p:
  415|  9.52k|{
  416|  9.52k|  const char *s;
  417|  9.52k|  mrb_int len;
  418|       |
  419|  9.52k|  s = mrb_sym_name_len(mrb, iv_name, &len);
  420|  9.52k|  if (len < 2) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  |  Branch (420:7): [True: 0, False: 9.52k]
  ------------------
  421|  9.52k|  if (s[0] != '@') return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  |  Branch (421:7): [True: 0, False: 9.52k]
  ------------------
  422|  9.52k|  if (ISDIGIT(s[1])) return FALSE;
  ------------------
  |  | 1342|  9.52k|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  ------------------
  |  |  |  Branch (1342:20): [True: 0, False: 9.52k]
  |  |  ------------------
  ------------------
                if (ISDIGIT(s[1])) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  423|  9.52k|  return mrb_ident_p(s+1, len-1);
  424|  9.52k|}
mrb_iv_name_sym_check:
  428|  9.52k|{
  429|  9.52k|  if (!mrb_iv_name_sym_p(mrb, iv_name)) {
  ------------------
  |  Branch (429:7): [True: 0, False: 9.52k]
  ------------------
  430|      0|    mrb_name_error(mrb, iv_name, "'%n' is not allowed as an instance variable name", iv_name);
  431|      0|  }
  432|  9.52k|}
mrb_mod_cv_set:
  653|    476|{
  654|    476|  struct RClass * cls = c;
  655|       |
  656|  3.33k|  while (c) {
  ------------------
  |  Branch (656:10): [True: 2.85k, False: 476]
  ------------------
  657|  2.85k|    iv_tbl *t = c->iv;
  658|  2.85k|    int pos = iv_get(mrb, t, sym, NULL);
  659|       |
  660|  2.85k|    if (pos) {
  ------------------
  |  Branch (660:9): [True: 0, False: 2.85k]
  ------------------
  661|      0|      mrb_check_frozen(mrb, c);
  662|      0|      t->ptr[pos-1] = v;        /* iv_get returns pos+1 to put */
  663|      0|      mrb_field_write_barrier_value(mrb, (struct RBasic*)c, v);
  ------------------
  |  | 1317|      0|#define mrb_field_write_barrier_value(mrb, obj, val) do{\
  |  | 1318|      0|  if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |   22|      0|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1319|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1319:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  664|      0|      return;
  665|      0|    }
  666|  2.85k|    c = c->super;
  667|  2.85k|  }
  668|       |
  669|    476|  if (cls && cls->tt == MRB_TT_SCLASS) {
  ------------------
  |  Branch (669:7): [True: 476, False: 0]
  |  Branch (669:14): [True: 0, False: 476]
  ------------------
  670|      0|    mrb_value klass;
  671|       |
  672|      0|    klass = mrb_obj_iv_get(mrb, (struct RObject*)cls, MRB_SYM(__attached__));
  ------------------
  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  673|      0|    switch (mrb_type(klass)) {
  674|      0|    case MRB_TT_CLASS:
  ------------------
  |  Branch (674:5): [True: 0, False: 0]
  ------------------
  675|      0|    case MRB_TT_MODULE:
  ------------------
  |  Branch (675:5): [True: 0, False: 0]
  ------------------
  676|      0|    case MRB_TT_SCLASS:
  ------------------
  |  Branch (676:5): [True: 0, False: 0]
  ------------------
  677|      0|      c = mrb_class_ptr(klass);
  ------------------
  |  |   24|      0|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  678|      0|      break;
  679|      0|    default:
  ------------------
  |  Branch (679:5): [True: 0, False: 0]
  ------------------
  680|      0|      c = cls;
  681|      0|      break;
  682|      0|    }
  683|      0|  }
  684|    476|  else{
  685|    476|    c = cls;
  686|    476|  }
  687|       |
  688|    476|  mrb_check_frozen(mrb, c);
  689|    476|  if (!c->iv) {
  ------------------
  |  Branch (689:7): [True: 0, False: 476]
  ------------------
  690|      0|    c->iv = iv_new(mrb);
  691|      0|  }
  692|       |
  693|    476|  iv_put(mrb, c->iv, sym, v);
  694|    476|  mrb_field_write_barrier_value(mrb, (struct RBasic*)c, v);
  ------------------
  |  | 1317|    476|#define mrb_field_write_barrier_value(mrb, obj, val) do{\
  |  | 1318|    476|  if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |  148|    476|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    952|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (148:29): [True: 476, False: 0]
  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |   22|      0|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1319|    476|} while (0)
  |  |  ------------------
  |  |  |  Branch (1319:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  695|    476|}
mrb_vm_cv_set:
  738|    476|{
  739|    476|  struct RClass *c;
  740|    476|  const struct RProc *p = mrb->c->ci->proc;
  741|       |
  742|    476|  for (;;) {
  743|    476|    c = MRB_PROC_TARGET_CLASS(p);
  ------------------
  |  |   74|    476|#define MRB_PROC_TARGET_CLASS(p) (MRB_PROC_ENV_P(p) ? (p)->e.env->c : (p)->e.target_class)
  |  |  ------------------
  |  |  |  |   72|    476|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|    476|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 476]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  744|    476|    if (c && c->tt != MRB_TT_SCLASS) break;
  ------------------
  |  Branch (744:9): [True: 476, False: 0]
  |  Branch (744:14): [True: 476, False: 0]
  ------------------
  745|      0|    p = p->upper;
  746|      0|  }
  747|    476|  mrb_mod_cv_set(mrb, c, sym, v);
  748|    476|}
mrb_const_get:
  796|  34.4k|{
  797|  34.4k|  mod_const_check(mrb, mod);
  798|  34.4k|  return const_get(mrb, mrb_class_ptr(mod), sym, FALSE);
  ------------------
  |  |   24|  34.4k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  34.4k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
                return const_get(mrb, mrb_class_ptr(mod), sym, FALSE);
  ------------------
  |  |   51|  34.4k|#  define FALSE 0
  ------------------
  799|  34.4k|}
mrb_vm_const_get:
  803|   155k|{
  804|   155k|  struct RClass *c;
  805|   155k|  struct RClass *c2;
  806|   155k|  mrb_value v;
  807|   155k|  const struct RProc *proc = mrb->c->ci->proc;
  808|       |
  809|   155k|  c = MRB_PROC_TARGET_CLASS(proc);
  ------------------
  |  |   74|   155k|#define MRB_PROC_TARGET_CLASS(p) (MRB_PROC_ENV_P(p) ? (p)->e.env->c : (p)->e.target_class)
  |  |  ------------------
  |  |  |  |   72|   155k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|   155k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 23.8k, False: 131k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  810|   155k|  if (!c) c = mrb->object_class;
  ------------------
  |  Branch (810:7): [True: 16.6k, False: 138k]
  ------------------
  811|   155k|  if (iv_get(mrb, c->iv, sym, &v)) {
  ------------------
  |  Branch (811:7): [True: 30.9k, False: 124k]
  ------------------
  812|  30.9k|    return v;
  813|  30.9k|  }
  814|   124k|  c2 = c;
  815|   124k|  while (c2 && c2->tt == MRB_TT_SCLASS) {
  ------------------
  |  Branch (815:10): [True: 124k, False: 0]
  |  Branch (815:16): [True: 0, False: 124k]
  ------------------
  816|      0|    mrb_value klass;
  817|       |
  818|      0|    if (!iv_get(mrb, c2->iv, MRB_SYM(__attached__), &klass)) {
  ------------------
  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  |  Branch (818:9): [True: 0, False: 0]
  ------------------
  819|      0|      c2 = NULL;
  820|      0|      break;
  821|      0|    }
  822|      0|    c2 = mrb_class_ptr(klass);
  ------------------
  |  |   24|      0|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  823|      0|  }
  824|   124k|  if (c2 && (c2->tt == MRB_TT_CLASS || c2->tt == MRB_TT_MODULE)) c = c2;
  ------------------
  |  Branch (824:7): [True: 124k, False: 0]
  |  Branch (824:14): [True: 98.7k, False: 25.7k]
  |  Branch (824:40): [True: 25.7k, False: 0]
  ------------------
  825|   124k|  proc = proc->upper;
  826|   267k|  while (proc) {
  ------------------
  |  Branch (826:10): [True: 240k, False: 26.6k]
  ------------------
  827|   240k|    c2 = MRB_PROC_TARGET_CLASS(proc);
  ------------------
  |  |   74|   240k|#define MRB_PROC_TARGET_CLASS(p) (MRB_PROC_ENV_P(p) ? (p)->e.env->c : (p)->e.target_class)
  |  |  ------------------
  |  |  |  |   72|   240k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|   240k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 240k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  828|   240k|    if (!c2) c2 = mrb->object_class;
  ------------------
  |  Branch (828:9): [True: 124k, False: 115k]
  ------------------
  829|   240k|    if (c2 && iv_get(mrb, c2->iv, sym, &v)) {
  ------------------
  |  Branch (829:9): [True: 240k, False: 0]
  |  Branch (829:15): [True: 97.8k, False: 142k]
  ------------------
  830|  97.8k|      return v;
  831|  97.8k|    }
  832|   142k|    proc = proc->upper;
  833|   142k|  }
  834|  26.6k|  return const_get(mrb, c, sym, TRUE);
  ------------------
  |  |   54|  26.6k|#  define TRUE 1
  ------------------
  835|   124k|}
mrb_const_set:
  839|    476|{
  840|    476|  mod_const_check(mrb, mod);
  841|    476|  if (mrb_type(v) == MRB_TT_CLASS || mrb_type(v) == MRB_TT_MODULE) {
  ------------------
  |  Branch (841:7): [True: 476, False: 0]
  |  Branch (841:38): [True: 0, False: 0]
  ------------------
  842|    476|    mrb_class_name_class(mrb, mrb_class_ptr(mod), mrb_class_ptr(v), sym);
  ------------------
  |  |   24|    476|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|    476|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
                  mrb_class_name_class(mrb, mrb_class_ptr(mod), mrb_class_ptr(v), sym);
  ------------------
  |  |   24|    476|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|    476|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  843|    476|  }
  844|    476|  mrb_iv_set(mrb, mod, sym, v);
  845|    476|}
mrb_vm_const_set:
  849|  4.28k|{
  850|  4.28k|  struct RClass *c;
  851|       |
  852|  4.28k|  c = MRB_PROC_TARGET_CLASS(mrb->c->ci->proc);
  ------------------
  |  |   74|  4.28k|#define MRB_PROC_TARGET_CLASS(p) (MRB_PROC_ENV_P(p) ? (p)->e.env->c : (p)->e.target_class)
  |  |  ------------------
  |  |  |  |   72|  4.28k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  4.28k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 4.28k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  853|  4.28k|  if (!c) c = mrb->object_class;
  ------------------
  |  Branch (853:7): [True: 1.42k, False: 2.85k]
  ------------------
  854|  4.28k|  mrb_obj_iv_set(mrb, (struct RObject*)c, sym, v);
  855|  4.28k|}
mrb_define_const_id:
  866|  23.3k|{
  867|  23.3k|  mrb_obj_iv_set(mrb, (struct RObject*)mod, name, v);
  868|  23.3k|}
mrb_define_const:
  872|  71.8k|{
  873|  71.8k|  mrb_obj_iv_set(mrb, (struct RObject*)mod, mrb_intern_cstr(mrb, name), v);
  874|  71.8k|}
mrb_define_global_const:
  878|  3.80k|{
  879|  3.80k|  mrb_define_const(mrb, mrb->object_class, name, val);
  880|  3.80k|}
mrb_gv_set:
  942|  1.42k|{
  943|  1.42k|  iv_tbl *t;
  944|       |
  945|  1.42k|  if (!mrb->globals) {
  ------------------
  |  Branch (945:7): [True: 476, False: 952]
  ------------------
  946|    476|    mrb->globals = iv_new(mrb);
  947|    476|  }
  948|  1.42k|  t = mrb->globals;
  949|  1.42k|  iv_put(mrb, t, sym, v);
  950|  1.42k|}
mrb_const_defined:
 1014|    476|{
 1015|    476|  return const_defined_0(mrb, mod, id, TRUE, TRUE);
  ------------------
  |  |   54|    476|#  define TRUE 1
  ------------------
                return const_defined_0(mrb, mod, id, TRUE, TRUE);
  ------------------
  |  |   54|    476|#  define TRUE 1
  ------------------
 1016|    476|}
mrb_const_defined_at:
 1020|  76.1k|{
 1021|  76.1k|  return const_defined_0(mrb, mod, id, TRUE, FALSE);
  ------------------
  |  |   54|  76.1k|#  define TRUE 1
  ------------------
                return const_defined_0(mrb, mod, id, TRUE, FALSE);
  ------------------
  |  |   51|  76.1k|#  define FALSE 0
  ------------------
 1022|  76.1k|}
mrb_ident_p:
 1136|  9.99k|{
 1137|  69.4k|  for (mrb_int i = 0; i < len; i++) {
  ------------------
  |  Branch (1137:23): [True: 59.5k, False: 9.99k]
  ------------------
 1138|  59.5k|    if (!identchar(s[i])) return FALSE;
  ------------------
  |  | 1132|  59.5k|#define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
  |  |  ------------------
  |  |  |  | 1344|   119k|#define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1341|   119k|#define ISALPHA(c) ((((unsigned)(c) | 0x20) - 'a') < 26)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1341:20): [True: 56.6k, False: 2.85k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c))
  |  |  |  |  ------------------
  |  |  |  |  |  | 1342|  2.85k|#define ISDIGIT(c) (((unsigned)(c) - '0') < 10)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1342:20): [True: 0, False: 2.85k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
  |  |  ------------------
  |  |  |  | 1336|      0|#define ISASCII(c) ((unsigned)(c) <= 0x7f)
  |  |  ------------------
  |  |  |  Branch (1132:37): [True: 2.85k, False: 0]
  |  |  |  Branch (1132:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                  if (!identchar(s[i])) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
 1139|  59.5k|  }
 1140|  9.99k|  return TRUE;
  ------------------
  |  |   54|  9.99k|#  define TRUE 1
  ------------------
 1141|  9.99k|}
variable.c:mark_tbl:
  241|  1.04M|{
  242|  1.04M|  iv_foreach(mrb, t, iv_mark_i, 0);
  243|  1.04M|}
variable.c:iv_mark_i:
  234|  2.72M|{
  235|  2.72M|  mrb_gc_mark_value(mrb, v);
  ------------------
  |  | 1313|  2.72M|#define mrb_gc_mark_value(mrb,val) do {\
  |  | 1314|  2.72M|  if (!mrb_immediate_p(val)) mrb_gc_mark((mrb), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |  148|  2.72M|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  5.44M|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (148:29): [True: 1.52M, False: 1.19M]
  |  |  |  |  |  Branch (148:63): [True: 8.57k, False: 1.18M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 if (!mrb_immediate_p(val)) mrb_gc_mark((mrb), mrb_basic_ptr(val)); \
  |  |  ------------------
  |  |  |  |   22|  1.18M|#define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|  1.18M|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1315|  2.72M|} while (0)
  |  |  ------------------
  |  |  |  Branch (1315:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  236|  2.72M|  return 0;
  237|  2.72M|}
variable.c:iv_free:
  227|   107k|{
  228|   107k|  mrb_free(mrb, t->ptr);
  229|   107k|  mrb_free(mrb, t);
  230|   107k|}
variable.c:iv_size:
  198|  1.03M|{
  199|  1.03M|  if (t == NULL) return 0;
  ------------------
  |  Branch (199:7): [True: 31.1k, False: 1.00M]
  ------------------
  200|  1.00M|  return (size_t)t->size;
  201|  1.03M|}
variable.c:iv_get:
  115|   714k|{
  116|   714k|  int hash, pos, start;
  117|       |
  118|   714k|  if (t == NULL) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  |  Branch (118:7): [True: 0, False: 714k]
  ------------------
  119|   714k|  if (t->alloc == 0) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  |  Branch (119:7): [True: 0, False: 714k]
  ------------------
  120|   714k|  if (t->size == 0) return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  |  Branch (120:7): [True: 0, False: 714k]
  ------------------
  121|       |
  122|   714k|  mrb_sym *keys = (mrb_sym*)&t->ptr[t->alloc];
  123|   714k|  mrb_value *vals = t->ptr;
  124|   714k|  hash = kh_int_hash_func(mrb, sym);
  ------------------
  |  |  267|   714k|#define kh_int_hash_func(mrb,key) (khint_t)((key)^((key)<<2)^((key)>>2))
  ------------------
  125|   714k|  start = pos = hash & (t->alloc-1);
  126|  1.64M|  for (;;) {
  127|  1.64M|    mrb_sym key = keys[pos];
  128|  1.64M|    if (key == sym) {
  ------------------
  |  Branch (128:9): [True: 306k, False: 1.33M]
  ------------------
  129|   306k|      if (vp) *vp = vals[pos];
  ------------------
  |  Branch (129:11): [True: 275k, False: 31.4k]
  ------------------
  130|   306k|      return pos+1;
  131|   306k|    }
  132|  1.33M|    else if (key == IV_EMPTY) {
  ------------------
  |  |   22|  1.33M|#define IV_EMPTY 0
  ------------------
  |  Branch (132:14): [True: 357k, False: 979k]
  ------------------
  133|   357k|      return 0;
  134|   357k|    }
  135|   979k|    pos = (pos+1) & (t->alloc-1);
  136|   979k|    if (pos == start) {         /* not found */
  ------------------
  |  Branch (136:9): [True: 50.4k, False: 928k]
  ------------------
  137|  50.4k|      return 0;
  138|  50.4k|    }
  139|   979k|  }
  140|   714k|}
variable.c:obj_iv_p:
  291|   268k|{
  292|   268k|  switch (mrb_type(obj)) {
  293|   238k|    case MRB_TT_OBJECT:
  ------------------
  |  Branch (293:5): [True: 238k, False: 29.5k]
  ------------------
  294|   239k|    case MRB_TT_CLASS:
  ------------------
  |  Branch (294:5): [True: 952, False: 267k]
  ------------------
  295|   239k|    case MRB_TT_MODULE:
  ------------------
  |  Branch (295:5): [True: 0, False: 268k]
  ------------------
  296|   268k|    case MRB_TT_SCLASS:
  ------------------
  |  Branch (296:5): [True: 28.5k, False: 239k]
  ------------------
  297|   268k|    case MRB_TT_HASH:
  ------------------
  |  Branch (297:5): [True: 0, False: 268k]
  ------------------
  298|   268k|    case MRB_TT_CDATA:
  ------------------
  |  Branch (298:5): [True: 0, False: 268k]
  ------------------
  299|   268k|    case MRB_TT_EXCEPTION:
  ------------------
  |  Branch (299:5): [True: 74, False: 268k]
  ------------------
  300|   268k|      return TRUE;
  ------------------
  |  |   54|   268k|#  define TRUE 1
  ------------------
  301|      0|    default:
  ------------------
  |  Branch (301:5): [True: 0, False: 268k]
  ------------------
  302|      0|      return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  303|   268k|  }
  304|   268k|}
variable.c:namespace_p:
  327|   631k|{
  328|   631k|  return tt == MRB_TT_CLASS || tt == MRB_TT_MODULE ? TRUE : FALSE;
  ------------------
  |  |   54|   225k|#  define TRUE 1
  ------------------
                return tt == MRB_TT_CLASS || tt == MRB_TT_MODULE ? TRUE : FALSE;
  ------------------
  |  |   51|  1.03M|#  define FALSE 0
  ------------------
  |  Branch (328:10): [True: 128k, False: 503k]
  |  Branch (328:32): [True: 97.1k, False: 406k]
  ------------------
  329|   631k|}
variable.c:assign_class_name:
  333|   181k|{
  334|   181k|  if (namespace_p(mrb_type(v))) {
  ------------------
  |  Branch (334:7): [True: 43.7k, False: 137k]
  ------------------
  335|  43.7k|    struct RObject *c = mrb_obj_ptr(v);
  ------------------
  |  |   34|  43.7k|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  43.7k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  336|  43.7k|    if (obj != c && ISUPPER(mrb_sym_name_len(mrb, sym, NULL)[0])) {
  ------------------
  |  | 1339|  42.8k|#define ISUPPER(c) (((unsigned)(c) - 'A') < 26)
  |  |  ------------------
  |  |  |  Branch (1339:20): [True: 42.3k, False: 476]
  |  |  ------------------
  ------------------
  |  Branch (336:9): [True: 42.8k, False: 952]
  ------------------
  337|  42.3k|      mrb_sym id_classname = MRB_SYM(__classname__);
  ------------------
  |  |   18|  42.3k|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  338|  42.3k|      mrb_value o = mrb_obj_iv_get(mrb, c, id_classname);
  339|       |
  340|  42.3k|      if (mrb_nil_p(o)) {
  ------------------
  |  |  174|  42.3k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 952, False: 41.4k]
  |  |  ------------------
  ------------------
  341|    952|        mrb_sym id_outer = MRB_SYM(__outer__);
  ------------------
  |  |   18|    952|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  342|    952|        o = mrb_obj_iv_get(mrb, c, id_outer);
  343|       |
  344|    952|        if (mrb_nil_p(o)) {
  ------------------
  |  |  174|    952|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 952, False: 0]
  |  |  ------------------
  ------------------
  345|    952|          if ((struct RClass*)obj == mrb->object_class) {
  ------------------
  |  Branch (345:15): [True: 952, False: 0]
  ------------------
  346|    952|            mrb_obj_iv_set_force(mrb, c, id_classname, mrb_symbol_value(sym));
  347|    952|          }
  348|      0|          else {
  349|      0|            mrb_obj_iv_set_force(mrb, c, id_outer, mrb_obj_value(obj));
  350|      0|          }
  351|    952|        }
  352|    952|      }
  353|  42.3k|    }
  354|  43.7k|  }
  355|   181k|}
variable.c:iv_new:
   29|   107k|{
   30|   107k|  iv_tbl *t;
   31|       |
   32|   107k|  t = (iv_tbl*)mrb_malloc(mrb, sizeof(iv_tbl));
   33|   107k|  t->size = 0;
   34|   107k|  t->alloc = 0;
   35|   107k|  t->ptr = NULL;
   36|       |
   37|   107k|  return t;
   38|   107k|}
variable.c:iv_put:
   69|   936k|{
   70|   936k|  int hash, pos, start, dpos = -1;
   71|       |
   72|   936k|  if (t->alloc == 0) {
  ------------------
  |  Branch (72:7): [True: 107k, False: 828k]
  ------------------
   73|   107k|    iv_rehash(mrb, t);
   74|   107k|  }
   75|       |
   76|   936k|  mrb_sym *keys = (mrb_sym*)&t->ptr[t->alloc];
   77|   936k|  mrb_value *vals = t->ptr;
   78|   936k|  hash = kh_int_hash_func(mrb, sym);
  ------------------
  |  |  267|   936k|#define kh_int_hash_func(mrb,key) (khint_t)((key)^((key)<<2)^((key)>>2))
  ------------------
   79|   936k|  start = pos = hash & (t->alloc-1);
   80|  3.26M|  for (;;) {
   81|  3.26M|    mrb_sym key = keys[pos];
   82|  3.26M|    if (key == sym) {
  ------------------
  |  Branch (82:9): [True: 14.1k, False: 3.24M]
  ------------------
   83|  14.1k|      vals[pos] = val;
   84|  14.1k|      return;
   85|  14.1k|    }
   86|  3.24M|    else if (key == IV_EMPTY) {
  ------------------
  |  |   22|  3.24M|#define IV_EMPTY 0
  ------------------
  |  Branch (86:14): [True: 921k, False: 2.32M]
  ------------------
   87|   921k|      t->size++;
   88|   921k|      keys[pos] = sym;
   89|   921k|      vals[pos] = val;
   90|   921k|      return;
   91|   921k|    }
   92|  2.32M|    else if (key == IV_DELETED && dpos < 0) {
  ------------------
  |  |   23|  4.65M|#define IV_DELETED (1UL<<31)
  ------------------
  |  Branch (92:14): [True: 0, False: 2.32M]
  |  Branch (92:35): [True: 0, False: 0]
  ------------------
   93|      0|      dpos = pos;
   94|      0|    }
   95|  2.32M|    pos = (pos+1) & (t->alloc-1);
   96|  2.32M|    if (pos == start) {         /* not found */
  ------------------
  |  Branch (96:9): [True: 55.2k, False: 2.27M]
  ------------------
   97|  55.2k|      if (dpos >= 0) {
  ------------------
  |  Branch (97:11): [True: 0, False: 55.2k]
  ------------------
   98|      0|        t->size++;
   99|      0|        keys[dpos] = sym;
  100|      0|        vals[dpos] = val;
  101|      0|        return;
  102|      0|      }
  103|       |      /* no room */
  104|  55.2k|      iv_rehash(mrb, t);
  105|  55.2k|      keys = (mrb_sym*)&t->ptr[t->alloc];
  106|  55.2k|      vals = t->ptr;
  107|  55.2k|      start = pos = hash & (t->alloc-1);
  108|  55.2k|    }
  109|  2.32M|  }
  110|   936k|}
variable.c:iv_rehash:
   44|   162k|{
   45|   162k|  int old_alloc = t->alloc;
   46|   162k|  int new_alloc = old_alloc+4;
   47|   162k|  mrb_value *old_ptr = t->ptr;
   48|       |
   49|   162k|  khash_power2(new_alloc);
  ------------------
  |  |   41|   162k|#define khash_power2(v) do { \
  |  |   42|   162k|  v--;\
  |  |   43|   162k|  v |= v >> 1;\
  |  |   44|   162k|  v |= v >> 2;\
  |  |   45|   162k|  v |= v >> 4;\
  |  |   46|   162k|  v |= v >> 8;\
  |  |   47|   162k|  v |= v >> 16;\
  |  |   48|   162k|  v++;\
  |  |   49|   162k|} while (0)
  |  |  ------------------
  |  |  |  Branch (49:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
   50|       |
   51|   162k|  t->ptr = (mrb_value*)mrb_calloc(mrb, sizeof(mrb_value)+sizeof(mrb_sym), new_alloc);
   52|   162k|  t->size = 0;
   53|   162k|  t->alloc = new_alloc;
   54|   162k|  if (old_alloc == 0) return;
  ------------------
  |  Branch (54:7): [True: 107k, False: 55.2k]
  ------------------
   55|       |
   56|  55.2k|  mrb_sym *keys = (mrb_sym*)&old_ptr[old_alloc];
   57|  55.2k|  mrb_value *vals = old_ptr;
   58|   539k|  for (int i = 0; i < old_alloc; i++) {
  ------------------
  |  Branch (58:19): [True: 483k, False: 55.2k]
  ------------------
   59|   483k|    if (IV_KEY_P(keys[i])) {
  ------------------
  |  |   24|   483k|#define IV_KEY_P(k) (((k)&~((uint32_t)IV_DELETED))!=0)
  |  |  ------------------
  |  |  |  |   23|   483k|#define IV_DELETED (1UL<<31)
  |  |  ------------------
  |  |  |  Branch (24:21): [True: 483k, False: 0]
  |  |  ------------------
  ------------------
   60|   483k|      iv_put(mrb, t, keys[i], vals[i]);
   61|   483k|    }
   62|   483k|  }
   63|  55.2k|  mrb_free(mrb, old_ptr);
   64|  55.2k|}
variable.c:iv_foreach:
  177|  1.04M|{
  178|  1.04M|  if (t == NULL) return;
  ------------------
  |  Branch (178:7): [True: 32.0k, False: 1.01M]
  ------------------
  179|  1.01M|  if (t->alloc == 0) return;
  ------------------
  |  Branch (179:7): [True: 0, False: 1.01M]
  ------------------
  180|  1.01M|  if (t->size == 0) return;
  ------------------
  |  Branch (180:7): [True: 0, False: 1.01M]
  ------------------
  181|       |
  182|  1.01M|  mrb_sym *keys = (mrb_sym*)&t->ptr[t->alloc];
  183|  1.01M|  mrb_value *vals = t->ptr;
  184|  7.47M|  for (int i=0; i<t->alloc; i++) {
  ------------------
  |  Branch (184:17): [True: 6.45M, False: 1.01M]
  ------------------
  185|  6.45M|    if (IV_KEY_P(keys[i])) {
  ------------------
  |  |   24|  6.45M|#define IV_KEY_P(k) (((k)&~((uint32_t)IV_DELETED))!=0)
  |  |  ------------------
  |  |  |  |   23|  6.45M|#define IV_DELETED (1UL<<31)
  |  |  ------------------
  |  |  |  Branch (24:21): [True: 2.72M, False: 3.73M]
  |  |  ------------------
  ------------------
  186|  2.72M|      if ((*func)(mrb, keys[i], vals[i], p) != 0) {
  ------------------
  |  Branch (186:11): [True: 0, False: 2.72M]
  ------------------
  187|      0|        return;
  188|      0|      }
  189|  2.72M|    }
  190|  6.45M|  }
  191|  1.01M|  return;
  192|  1.01M|}
variable.c:mod_const_check:
  752|  34.9k|{
  753|  34.9k|  switch (mrb_type(mod)) {
  754|  34.4k|  case MRB_TT_CLASS:
  ------------------
  |  Branch (754:3): [True: 34.4k, False: 488]
  ------------------
  755|  34.9k|  case MRB_TT_MODULE:
  ------------------
  |  Branch (755:3): [True: 488, False: 34.4k]
  ------------------
  756|  34.9k|  case MRB_TT_SCLASS:
  ------------------
  |  Branch (756:3): [True: 0, False: 34.9k]
  ------------------
  757|  34.9k|    break;
  758|      0|  default:
  ------------------
  |  Branch (758:3): [True: 0, False: 34.9k]
  ------------------
  759|      0|    mrb_raise(mrb, E_TYPE_ERROR, "constant look-up for non class/module");
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  760|      0|    break;
  761|  34.9k|  }
  762|  34.9k|}
variable.c:const_get:
  766|  61.1k|{
  767|  61.1k|  struct RClass *c = base;
  768|  61.1k|  mrb_value v;
  769|  61.1k|  mrb_bool retry = FALSE;
  ------------------
  |  |   51|  61.1k|#  define FALSE 0
  ------------------
  770|       |
  771|       |  /* if skip then skip the current class (already searched) */
  772|  61.1k|  if (skip) c = c->super;
  ------------------
  |  Branch (772:7): [True: 26.6k, False: 34.4k]
  ------------------
  773|  61.1k|L_RETRY:
  774|  63.9k|  while (c) {
  ------------------
  |  Branch (774:10): [True: 63.9k, False: 0]
  ------------------
  775|  63.9k|    if (!MRB_FLAG_TEST(c, MRB_FL_CLASS_IS_PREPENDED) && c->iv && iv_get(mrb, c->iv, sym, &v)) {
  ------------------
  |  |   17|   127k|#define MRB_FLAG_TEST(obj, flag) ((obj)->flags & (flag))
  ------------------
  |  Branch (775:9): [True: 63.9k, False: 0]
  |  Branch (775:57): [True: 63.9k, False: 0]
  |  Branch (775:66): [True: 61.1k, False: 2.85k]
  ------------------
  776|  61.1k|      return v;
  777|  61.1k|    }
  778|  2.85k|    c = c->super;
  779|  2.85k|    if (!skip && c == mrb->object_class) break;
  ------------------
  |  Branch (779:9): [True: 2.85k, False: 0]
  |  Branch (779:18): [True: 0, False: 2.85k]
  ------------------
  780|  2.85k|  }
  781|      0|  if (!retry && base->tt == MRB_TT_MODULE && skip) {
  ------------------
  |  Branch (781:7): [True: 0, False: 0]
  |  Branch (781:17): [True: 0, False: 0]
  |  Branch (781:46): [True: 0, False: 0]
  ------------------
  782|      0|    c = mrb->object_class;
  783|      0|    retry = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  784|      0|    goto L_RETRY;
  785|      0|  }
  786|      0|  mrb_value mod = mrb_obj_value(base);
  787|      0|  if (mrb_func_basic_p(mrb, mod, MRB_SYM(const_missing), mrb_mod_const_missing)) {
  ------------------
  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  |  Branch (787:7): [True: 0, False: 0]
  ------------------
  788|      0|    return mrb_const_missing(mrb, mod, sym);
  789|      0|  }
  790|      0|  mrb_value name = mrb_symbol_value(sym);
  791|      0|  return mrb_funcall_argv(mrb, mod, MRB_SYM(const_missing), 1, &name);
  ------------------
  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  792|      0|}
variable.c:const_defined_0:
  990|  76.6k|{
  991|  76.6k|  struct RClass *klass = mrb_class_ptr(mod);
  ------------------
  |  |   24|  76.6k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  76.6k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  992|  76.6k|  struct RClass *tmp;
  993|  76.6k|  mrb_bool mod_retry = FALSE;
  ------------------
  |  |   51|  76.6k|#  define FALSE 0
  ------------------
  994|       |
  995|  76.6k|  tmp = klass;
  996|  76.6k|retry:
  997|   205k|  while (tmp) {
  ------------------
  |  Branch (997:10): [True: 161k, False: 43.3k]
  ------------------
  998|   161k|    if (iv_get(mrb, tmp->iv, id, NULL)) {
  ------------------
  |  Branch (998:9): [True: 27.1k, False: 134k]
  ------------------
  999|  27.1k|      return TRUE;
  ------------------
  |  |   54|  27.1k|#  define TRUE 1
  ------------------
 1000|  27.1k|    }
 1001|   134k|    if (!recurse && (klass != mrb->object_class)) break;
  ------------------
  |  Branch (1001:9): [True: 134k, False: 0]
  |  Branch (1001:21): [True: 6.18k, False: 128k]
  ------------------
 1002|   128k|    tmp = tmp->super;
 1003|   128k|  }
 1004|  49.5k|  if (!exclude && !mod_retry && (klass->tt == MRB_TT_MODULE)) {
  ------------------
  |  Branch (1004:7): [True: 0, False: 49.5k]
  |  Branch (1004:19): [True: 0, False: 0]
  |  Branch (1004:33): [True: 0, False: 0]
  ------------------
 1005|      0|    mod_retry = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 1006|      0|    tmp = mrb->object_class;
 1007|      0|    goto retry;
 1008|      0|  }
 1009|  49.5k|  return FALSE;
  ------------------
  |  |   51|  49.5k|#  define FALSE 0
  ------------------
 1010|  49.5k|}

mrb_init_version:
    6|    476|{
    7|    476|  mrb_value mruby_version = mrb_str_new_lit(mrb, MRUBY_VERSION);
  ------------------
  |  | 1209|    476|#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|    476|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
    8|       |
    9|    476|  mrb_define_global_const(mrb, "RUBY_VERSION", mrb_str_new_lit(mrb, MRUBY_RUBY_VERSION));
  ------------------
  |  | 1209|    476|#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|    476|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
   10|    476|  mrb_define_global_const(mrb, "RUBY_ENGINE", mrb_str_new_lit(mrb, MRUBY_RUBY_ENGINE));
  ------------------
  |  | 1209|    476|#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|    476|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
   11|    476|  mrb_define_global_const(mrb, "RUBY_ENGINE_VERSION", mruby_version);
   12|    476|  mrb_define_global_const(mrb, "MRUBY_VERSION", mruby_version);
   13|    476|  mrb_define_global_const(mrb, "MRUBY_RELEASE_NO", mrb_fixnum_value(MRUBY_RELEASE_NO));
  ------------------
  |  |   78|    476|#define MRUBY_RELEASE_NO (MRUBY_RELEASE_MAJOR * 100 * 100 + MRUBY_RELEASE_MINOR * 100 + MRUBY_RELEASE_TEENY)
  |  |  ------------------
  |  |  |  |   40|    476|#define MRUBY_RELEASE_MAJOR 3
  |  |  ------------------
  |  |               #define MRUBY_RELEASE_NO (MRUBY_RELEASE_MAJOR * 100 * 100 + MRUBY_RELEASE_MINOR * 100 + MRUBY_RELEASE_TEENY)
  |  |  ------------------
  |  |  |  |   45|    476|#define MRUBY_RELEASE_MINOR 2
  |  |  ------------------
  |  |               #define MRUBY_RELEASE_NO (MRUBY_RELEASE_MAJOR * 100 * 100 + MRUBY_RELEASE_MINOR * 100 + MRUBY_RELEASE_TEENY)
  |  |  ------------------
  |  |  |  |   50|    476|#define MRUBY_RELEASE_TEENY 0
  |  |  ------------------
  ------------------
   14|    476|  mrb_define_global_const(mrb, "MRUBY_RELEASE_DATE", mrb_str_new_lit(mrb, MRUBY_RELEASE_DATE));
  ------------------
  |  | 1209|    476|#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|    476|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
   15|    476|  mrb_define_global_const(mrb, "MRUBY_DESCRIPTION", mrb_str_new_lit(mrb, MRUBY_DESCRIPTION));
  ------------------
  |  | 1209|    476|#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|    476|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
   16|    476|  mrb_define_global_const(mrb, "MRUBY_COPYRIGHT", mrb_str_new_lit(mrb, MRUBY_COPYRIGHT));
  ------------------
  |  | 1209|    476|#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
  |  |  ------------------
  |  |  |  | 1075|    476|#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
  |  |  ------------------
  ------------------
   17|    476|}

mrb_vm_ci_target_class:
  271|  30.8k|{
  272|  30.8k|  return CI_TARGET_CLASS(ci);
  ------------------
  |  |  267|  30.8k|#define CI_TARGET_CLASS(ci) (((ci)->u.env && (ci)->u.env->tt == MRB_TT_ENV)? (ci)->u.env->c : (ci)->u.target_class)
  |  |  ------------------
  |  |  |  Branch (267:31): [True: 30.8k, False: 0]
  |  |  |  Branch (267:46): [True: 0, False: 30.8k]
  |  |  ------------------
  ------------------
  273|  30.8k|}
mrb_vm_ci_target_class_set:
  277|    394|{
  278|    394|  struct REnv *e = ci->u.env;
  279|    394|  if (e && e->tt == MRB_TT_ENV) {
  ------------------
  |  Branch (279:7): [True: 394, False: 0]
  |  Branch (279:12): [True: 0, False: 394]
  ------------------
  280|      0|    e->c = tc;
  281|      0|  }
  282|    394|  else {
  283|    394|    ci->u.target_class = tc;
  284|    394|  }
  285|    394|}
mrb_vm_ci_env:
  291|  6.30k|{
  292|  6.30k|  return CI_ENV(ci);
  ------------------
  |  |  287|  6.30k|#define CI_ENV(ci) (((ci)->u.env && (ci)->u.env->tt == MRB_TT_ENV)? (ci)->u.env : NULL)
  |  |  ------------------
  |  |  |  Branch (287:22): [True: 6.30k, False: 0]
  |  |  |  Branch (287:37): [True: 0, False: 6.30k]
  |  |  ------------------
  ------------------
  293|  6.30k|}
mrb_vm_ci_env_clear:
  326|  18.0k|{
  327|  18.0k|  struct REnv *e = ci->u.env;
  328|  18.0k|  if (e && e->tt == MRB_TT_ENV) {
  ------------------
  |  Branch (328:7): [True: 18.0k, False: 0]
  |  Branch (328:12): [True: 0, False: 18.0k]
  ------------------
  329|      0|    ci->u.target_class = e->c;
  330|      0|    mrb_env_unshare(mrb, e, FALSE);
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  331|      0|  }
  332|  18.0k|}
mrb_env_unshare:
  373|  18.9k|{
  374|  18.9k|  if (e == NULL) return TRUE;
  ------------------
  |  |   54|  12.7k|#  define TRUE 1
  ------------------
  |  Branch (374:7): [True: 12.7k, False: 6.18k]
  ------------------
  375|  6.18k|  if (!MRB_ENV_ONSTACK_P(e)) return TRUE;
  ------------------
  |  |   30|  6.18k|#define MRB_ENV_ONSTACK_P(e) (((e)->flags & MRB_ENV_CLOSED) == 0)
  |  |  ------------------
  |  |  |  |   28|  6.18k|#define MRB_ENV_CLOSED (1<<20)
  |  |  ------------------
  ------------------
                if (!MRB_ENV_ONSTACK_P(e)) return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  |  Branch (375:7): [True: 0, False: 6.18k]
  ------------------
  376|  6.18k|  if (e->cxt != mrb->c) return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  |  Branch (376:7): [True: 0, False: 6.18k]
  ------------------
  377|  6.18k|  if (e == CI_ENV(mrb->c->cibase)) return TRUE; /* for mirb */
  ------------------
  |  |  287|  6.18k|#define CI_ENV(ci) (((ci)->u.env && (ci)->u.env->tt == MRB_TT_ENV)? (ci)->u.env : NULL)
  |  |  ------------------
  |  |  |  Branch (287:22): [True: 6.18k, False: 0]
  |  |  |  Branch (287:37): [True: 0, False: 6.18k]
  |  |  ------------------
  ------------------
                if (e == CI_ENV(mrb->c->cibase)) return TRUE; /* for mirb */
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  |  Branch (377:7): [True: 0, False: 6.18k]
  ------------------
  378|       |
  379|  6.18k|  size_t len = (size_t)MRB_ENV_LEN(e);
  ------------------
  |  |   27|  6.18k|#define MRB_ENV_LEN(e) ((mrb_int)((e)->flags & 0xff))
  ------------------
  380|  6.18k|  if (len == 0) {
  ------------------
  |  Branch (380:7): [True: 0, False: 6.18k]
  ------------------
  381|      0|    e->stack = NULL;
  382|      0|    MRB_ENV_CLOSE(e);
  ------------------
  |  |   29|      0|#define MRB_ENV_CLOSE(e) ((e)->flags |= MRB_ENV_CLOSED)
  |  |  ------------------
  |  |  |  |   28|      0|#define MRB_ENV_CLOSED (1<<20)
  |  |  ------------------
  ------------------
  383|      0|    return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  384|      0|  }
  385|       |
  386|  6.18k|  size_t live = mrb->gc.live;
  387|  6.18k|  mrb_value *p = (mrb_value*)mrb_malloc_simple(mrb, sizeof(mrb_value)*len);
  388|  6.18k|  if (live != mrb->gc.live && mrb_object_dead_p(mrb, (struct RBasic*)e)) {
  ------------------
  |  Branch (388:7): [True: 0, False: 6.18k]
  |  Branch (388:31): [True: 0, False: 0]
  ------------------
  389|       |    // The e object is now subject to GC inside mrb_malloc_simple().
  390|       |    // Moreover, if NULL is returned due to mrb_malloc_simple() failure, simply ignore it.
  391|      0|    mrb_free(mrb, p);
  392|      0|    return TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  393|      0|  }
  394|  6.18k|  else if (p) {
  ------------------
  |  Branch (394:12): [True: 6.18k, False: 0]
  ------------------
  395|  6.18k|    stack_copy(p, e->stack, len);
  396|  6.18k|    e->stack = p;
  397|  6.18k|    MRB_ENV_CLOSE(e);
  ------------------
  |  |   29|  6.18k|#define MRB_ENV_CLOSE(e) ((e)->flags |= MRB_ENV_CLOSED)
  |  |  ------------------
  |  |  |  |   28|  6.18k|#define MRB_ENV_CLOSED (1<<20)
  |  |  ------------------
  ------------------
  398|  6.18k|    mrb_write_barrier(mrb, (struct RBasic*)e);
  399|  6.18k|    return TRUE;
  ------------------
  |  |   54|  6.18k|#  define TRUE 1
  ------------------
  400|  6.18k|  }
  401|      0|  else {
  402|      0|    e->stack = NULL;
  403|      0|    MRB_ENV_CLOSE(e);
  ------------------
  |  |   29|      0|#define MRB_ENV_CLOSE(e) ((e)->flags |= MRB_ENV_CLOSED)
  |  |  ------------------
  |  |  |  |   28|      0|#define MRB_ENV_CLOSED (1<<20)
  |  |  ------------------
  ------------------
  404|      0|    MRB_ENV_SET_LEN(e, 0);
  ------------------
  |  |   26|      0|#define MRB_ENV_SET_LEN(e,len) ((e)->flags = (((e)->flags & ~0xff)|((unsigned int)(len) & 0xff)))
  ------------------
  405|      0|    MRB_ENV_SET_BIDX(e, 0);
  ------------------
  |  |   32|      0|#define MRB_ENV_SET_BIDX(e,idx) ((e)->flags = (((e)->flags & ~(0xff<<8))|((unsigned int)(idx) & 0xff)<<8))
  ------------------
  406|      0|    if (!noraise) {
  ------------------
  |  Branch (406:9): [True: 0, False: 0]
  ------------------
  407|      0|      mrb_exc_raise(mrb, mrb_obj_value(mrb->nomem_err));
  408|      0|    }
  409|      0|    return FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  410|      0|  }
  411|  6.18k|}
mrb_protect_error:
  436|    476|{
  437|    476|  struct mrb_jmpbuf *prev_jmp = mrb->jmp;
  438|    476|  struct mrb_jmpbuf c_jmp;
  439|    476|  mrb_value result = mrb_nil_value();
  440|    476|  int ai = mrb_gc_arena_save(mrb);
  ------------------
  |  | 1306|    476|#define mrb_gc_arena_save(mrb) ((mrb)->gc.arena_idx)
  ------------------
  441|    476|  const struct mrb_context *c = mrb->c;
  442|    476|  ptrdiff_t ci_index = c->ci - c->cibase;
  443|       |
  444|    476|  if (error) { *error = FALSE; }
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  |  Branch (444:7): [True: 0, False: 476]
  ------------------
  445|       |
  446|    476|  MRB_TRY(&c_jmp) {
  ------------------
  |  |   44|    476|#define MRB_TRY(buf) if (MRB_SETJMP((buf)->impl) == 0) {
  |  |  ------------------
  |  |  |  |   40|    476|#define MRB_SETJMP setjmp
  |  |  ------------------
  |  |  |  Branch (44:26): [True: 476, False: 0]
  |  |  ------------------
  ------------------
  447|    476|    mrb->jmp = &c_jmp;
  448|    476|    result = body(mrb, userdata);
  449|    476|    mrb->jmp = prev_jmp;
  450|    476|  }
  451|    476|  MRB_CATCH(&c_jmp) {
  ------------------
  |  |   45|    476|#define MRB_CATCH(buf) } else {
  ------------------
  452|      0|    mrb->jmp = prev_jmp;
  453|      0|    result = mrb_obj_value(mrb->exc);
  454|      0|    mrb->exc = NULL;
  455|      0|    if (error) { *error = TRUE; }
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
  |  Branch (455:9): [True: 0, False: 0]
  ------------------
  456|      0|    if (mrb->c == c) {
  ------------------
  |  Branch (456:9): [True: 0, False: 0]
  ------------------
  457|      0|      while (c->ci - c->cibase > ci_index) {
  ------------------
  |  Branch (457:14): [True: 0, False: 0]
  ------------------
  458|      0|        cipop(mrb);
  459|      0|      }
  460|      0|    }
  461|      0|    else {
  462|       |      // It was probably switched by mrb_fiber_resume().
  463|       |      // Simply destroy all successive CINFO_DIRECTs once the fiber has been switched.
  464|      0|      c = mrb->c;
  465|      0|      while (c->ci > c->cibase && c->ci->cci == CINFO_DIRECT) {
  ------------------
  |  |  336|      0|#define CINFO_DIRECT  2 // called method from C
  ------------------
  |  Branch (465:14): [True: 0, False: 0]
  |  Branch (465:35): [True: 0, False: 0]
  ------------------
  466|      0|        cipop(mrb);
  467|      0|      }
  468|      0|    }
  469|      0|  }
  470|      0|  MRB_END_EXC(&c_jmp);
  ------------------
  |  |   46|      0|#define MRB_END_EXC(buf) }
  ------------------
  471|       |
  472|    476|  mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|    476|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
  473|    476|  mrb_gc_protect(mrb, result);
  474|    476|  return result;
  475|    476|}
mrb_ci_bidx:
  545|  3.34k|{
  546|  3.34k|  return ci_bidx(ci);
  547|  3.34k|}
mrb_ci_nregs:
  551|  17.1k|{
  552|  17.1k|  const struct RProc *p;
  553|       |
  554|  17.1k|  if (!ci) return 4;
  ------------------
  |  Branch (554:7): [True: 0, False: 17.1k]
  ------------------
  555|  17.1k|  mrb_int nregs = ci_bidx(ci) + 1; /* self + args + kargs + blk */
  556|  17.1k|  p = ci->proc;
  557|  17.1k|  if (p && !MRB_PROC_CFUNC_P(p) && p->body.irep && p->body.irep->nregs > nregs) {
  ------------------
  |  |   65|  18.1k|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  ------------------
  |  |  |  |   64|    994|#define MRB_PROC_CFUNC_FL 128
  |  |  ------------------
  ------------------
  |  Branch (557:7): [True: 994, False: 16.1k]
  |  Branch (557:12): [True: 994, False: 0]
  |  Branch (557:36): [True: 994, False: 0]
  |  Branch (557:52): [True: 994, False: 0]
  ------------------
  558|    994|    return p->body.irep->nregs;
  559|    994|  }
  560|  16.1k|  return nregs;
  561|  17.1k|}
mrb_funcall_with_block:
  647|  5.22k|{
  648|  5.22k|  mrb_value val;
  649|  5.22k|  int ai = mrb_gc_arena_save(mrb);
  ------------------
  |  | 1306|  5.22k|#define mrb_gc_arena_save(mrb) ((mrb)->gc.arena_idx)
  ------------------
  650|       |
  651|  5.22k|  if (!mrb->jmp) {
  ------------------
  |  Branch (651:7): [True: 0, False: 5.22k]
  ------------------
  652|      0|    struct mrb_jmpbuf c_jmp;
  653|      0|    ptrdiff_t nth_ci = mrb->c->ci - mrb->c->cibase;
  654|       |
  655|      0|    MRB_TRY(&c_jmp) {
  ------------------
  |  |   44|      0|#define MRB_TRY(buf) if (MRB_SETJMP((buf)->impl) == 0) {
  |  |  ------------------
  |  |  |  |   40|      0|#define MRB_SETJMP setjmp
  |  |  ------------------
  |  |  |  Branch (44:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  656|      0|      mrb->jmp = &c_jmp;
  657|       |      /* recursive call */
  658|      0|      val = mrb_funcall_with_block(mrb, self, mid, argc, argv, blk);
  659|      0|      mrb->jmp = NULL;
  660|      0|    }
  661|      0|    MRB_CATCH(&c_jmp) { /* error */
  ------------------
  |  |   45|      0|#define MRB_CATCH(buf) } else {
  ------------------
  662|      0|      while (nth_ci < (mrb->c->ci - mrb->c->cibase)) {
  ------------------
  |  Branch (662:14): [True: 0, False: 0]
  ------------------
  663|      0|        cipop(mrb);
  664|      0|      }
  665|      0|      mrb->jmp = 0;
  666|      0|      val = mrb_obj_value(mrb->exc);
  667|      0|    }
  668|      0|    MRB_END_EXC(&c_jmp);
  ------------------
  |  |   46|      0|#define MRB_END_EXC(buf) }
  ------------------
  669|      0|    mrb->jmp = NULL;
  670|      0|  }
  671|  5.22k|  else {
  672|  5.22k|    mrb_method_t m;
  673|  5.22k|    mrb_callinfo *ci = mrb->c->ci;
  674|  5.22k|    mrb_int n = mrb_ci_nregs(ci);
  675|       |
  676|  5.22k|    if (!mrb->c->stbase) {
  ------------------
  |  Branch (676:9): [True: 0, False: 5.22k]
  ------------------
  677|      0|      stack_init(mrb);
  678|      0|    }
  679|  5.22k|    if (ci - mrb->c->cibase > MRB_CALL_LEVEL_MAX) {
  ------------------
  |  |   45|  5.22k|#define MRB_CALL_LEVEL_MAX 512
  ------------------
  |  Branch (679:9): [True: 0, False: 5.22k]
  ------------------
  680|      0|      mrb_exc_raise(mrb, mrb_obj_value(mrb->stack_err));
  681|      0|    }
  682|  5.22k|    blk = ensure_block(mrb, blk);
  683|  5.22k|    ci = cipush(mrb, n, CINFO_DIRECT, NULL, NULL, BLK_PTR(blk), 0, 0);
  ------------------
  |  |  336|  5.22k|#define CINFO_DIRECT  2 // called method from C
  ------------------
                  ci = cipush(mrb, n, CINFO_DIRECT, NULL, NULL, BLK_PTR(blk), 0, 0);
  ------------------
  |  |  339|  5.22k|#define BLK_PTR(b) ((mrb_proc_p(b)) ? mrb_proc_ptr(b) : NULL)
  |  |  ------------------
  |  |  |  |  197|  5.22k|#define mrb_proc_p(o) WORDBOX_OBJ_TYPE_P(o, PROC)
  |  |  |  |  ------------------
  |  |  |  |  |  |   78|  5.22k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  148|  10.4k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   71|  10.4k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 5.22k]
  |  |  |  |  |  |  |  |  |  Branch (148:63): [True: 5.22k, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define BLK_PTR(b) ((mrb_proc_p(b)) ? mrb_proc_ptr(b) : NULL)
  |  |  ------------------
  |  |  |  |   90|      0|#define mrb_proc_ptr(v)    ((struct RProc*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  684|  5.22k|    funcall_args_capture(mrb, 0, argc, argv, blk, ci);
  685|  5.22k|    ci->u.target_class = mrb_class(mrb, self);
  686|  5.22k|    m = mrb_vm_find_method(mrb, ci->u.target_class, &ci->u.target_class, mid);
  687|  5.22k|    if (MRB_METHOD_UNDEF_P(m)) {
  ------------------
  |  |  115|  5.22k|#define MRB_METHOD_UNDEF_P(m) ((m)==0)
  |  |  ------------------
  |  |  |  Branch (115:31): [True: 0, False: 5.22k]
  |  |  ------------------
  ------------------
  688|      0|      m = prepare_missing(mrb, ci, self, mid, mrb_nil_value(), FALSE);
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
  689|      0|    }
  690|  5.22k|    else {
  691|  5.22k|      ci->mid = mid;
  692|  5.22k|    }
  693|  5.22k|    ci->proc = MRB_METHOD_PROC_P(m) ? MRB_METHOD_PROC(m) : NULL;
  ------------------
  |  |  113|  5.22k|#define MRB_METHOD_PROC_P(m) (!MRB_METHOD_FUNC_P(m))
  |  |  ------------------
  |  |  |  |  107|  5.22k|#define MRB_METHOD_FUNC_P(m) (((uintptr_t)(m))&MRB_METHOD_FUNC_FL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|  5.22k|#define MRB_METHOD_FUNC_FL 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (113:30): [True: 16, False: 5.20k]
  |  |  ------------------
  ------------------
                  ci->proc = MRB_METHOD_PROC_P(m) ? MRB_METHOD_PROC(m) : NULL;
  ------------------
  |  |  114|     16|#define MRB_METHOD_PROC(m) ((struct RProc*)(m))
  ------------------
  694|       |
  695|  5.22k|    if (MRB_METHOD_CFUNC_P(m)) {
  ------------------
  |  |  131|  5.22k|#define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |  107|  5.22k|#define MRB_METHOD_FUNC_P(m) (((uintptr_t)(m))&MRB_METHOD_FUNC_FL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|  5.22k|#define MRB_METHOD_FUNC_FL 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (107:30): [True: 5.20k, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |   54|  5.20k|#  define TRUE 1
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |  114|     16|#define MRB_METHOD_PROC(m) ((struct RProc*)(m))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:28): [True: 16, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |   65|     16|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   64|     16|#define MRB_PROC_CFUNC_FL 128
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |   51|      0|#  define FALSE 0
  |  |  ------------------
  |  |  |  Branch (131:31): [True: 5.20k, False: 16]
  |  |  ------------------
  ------------------
  696|  5.20k|      ci->stack[0] = self;
  697|  5.20k|      val = MRB_METHOD_CFUNC(m)(mrb, self);
  ------------------
  |  |  132|  5.20k|#define MRB_METHOD_CFUNC(m) (MRB_METHOD_FUNC_P(m)?MRB_METHOD_FUNC(m):((MRB_METHOD_PROC(m)&&MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m)))?MRB_PROC_CFUNC(MRB_METHOD_PROC(m)):NULL))
  |  |  ------------------
  |  |  |  |  107|  5.20k|#define MRB_METHOD_FUNC_P(m) (((uintptr_t)(m))&MRB_METHOD_FUNC_FL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|  5.20k|#define MRB_METHOD_FUNC_FL 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (107:30): [True: 5.20k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC(m) (MRB_METHOD_FUNC_P(m)?MRB_METHOD_FUNC(m):((MRB_METHOD_PROC(m)&&MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m)))?MRB_PROC_CFUNC(MRB_METHOD_PROC(m)):NULL))
  |  |  ------------------
  |  |  |  |  110|  5.20k|#define MRB_METHOD_FUNC(m) ((mrb_func_t)((uintptr_t)(m)>>2))
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC(m) (MRB_METHOD_FUNC_P(m)?MRB_METHOD_FUNC(m):((MRB_METHOD_PROC(m)&&MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m)))?MRB_PROC_CFUNC(MRB_METHOD_PROC(m)):NULL))
  |  |  ------------------
  |  |  |  |  114|      0|#define MRB_METHOD_PROC(m) ((struct RProc*)(m))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC(m) (MRB_METHOD_FUNC_P(m)?MRB_METHOD_FUNC(m):((MRB_METHOD_PROC(m)&&MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m)))?MRB_PROC_CFUNC(MRB_METHOD_PROC(m)):NULL))
  |  |  ------------------
  |  |  |  |   65|      0|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   64|      0|#define MRB_PROC_CFUNC_FL 128
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:29): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC(m) (MRB_METHOD_FUNC_P(m)?MRB_METHOD_FUNC(m):((MRB_METHOD_PROC(m)&&MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m)))?MRB_PROC_CFUNC(MRB_METHOD_PROC(m)):NULL))
  |  |  ------------------
  |  |  |  |   66|      0|#define MRB_PROC_CFUNC(p) (p)->body.func
  |  |  ------------------
  ------------------
  698|  5.20k|      cipop(mrb);
  699|  5.20k|    }
  700|     16|    else {
  701|     16|      ci->cci = CINFO_SKIP;
  ------------------
  |  |  335|     16|#define CINFO_SKIP    1 // ignited mruby VM from C
  ------------------
  702|     16|      val = mrb_run(mrb, ci->proc, self);
  703|     16|    }
  704|  5.22k|  }
  705|  5.22k|  mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|  5.22k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
  706|  5.22k|  mrb_gc_protect(mrb, val);
  707|  5.22k|  return val;
  708|  5.22k|}
mrb_funcall_argv:
  712|  5.22k|{
  713|  5.22k|  return mrb_funcall_with_block(mrb, self, mid, argc, argv, mrb_nil_value());
  714|  5.22k|}
mrb_mod_module_eval:
  935|    476|{
  936|    476|  mrb_value a, b;
  937|       |
  938|    476|  if (mrb_get_args(mrb, "|S&", &a, &b) == 1) {
  ------------------
  |  Branch (938:7): [True: 0, False: 476]
  ------------------
  939|      0|    mrb_raise(mrb, E_NOTIMP_ERROR, "module_eval/class_eval with string not implemented");
  ------------------
  |  | 1387|      0|#define E_NOTIMP_ERROR       mrb_exc_get_id(mrb, MRB_ERROR_SYM(NotImplementedError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  940|      0|  }
  941|    476|  return eval_under(mrb, mod, b, mrb_class_ptr(mod));
  ------------------
  |  |   24|    476|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|    476|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  942|    476|}
mrb_vm_run:
 1290|  12.7k|{
 1291|  12.7k|  const mrb_irep *irep = proc->body.irep;
 1292|  12.7k|  mrb_value result;
 1293|  12.7k|  struct mrb_context *c = mrb->c;
 1294|  12.7k|  ptrdiff_t cioff = c->ci - c->cibase;
 1295|  12.7k|  mrb_int nregs = irep->nregs;
 1296|       |
 1297|  12.7k|  if (!c->stbase) {
  ------------------
  |  Branch (1297:7): [True: 476, False: 12.3k]
  ------------------
 1298|    476|    stack_init(mrb);
 1299|    476|  }
 1300|  12.7k|  if (stack_keep > nregs)
  ------------------
  |  Branch (1300:7): [True: 0, False: 12.7k]
  ------------------
 1301|      0|    nregs = stack_keep;
 1302|  12.7k|  else {
 1303|  12.7k|    struct REnv *e = CI_ENV(mrb->c->ci);
  ------------------
  |  |  287|  12.7k|#define CI_ENV(ci) (((ci)->u.env && (ci)->u.env->tt == MRB_TT_ENV)? (ci)->u.env : NULL)
  |  |  ------------------
  |  |  |  Branch (287:22): [True: 12.7k, False: 0]
  |  |  |  Branch (287:37): [True: 0, False: 12.7k]
  |  |  ------------------
  ------------------
 1304|  12.7k|    if (stack_keep == 0 || (e && irep->nlocals < MRB_ENV_LEN(e))) {
  ------------------
  |  |   27|      0|#define MRB_ENV_LEN(e) ((mrb_int)((e)->flags & 0xff))
  ------------------
  |  Branch (1304:9): [True: 12.7k, False: 16]
  |  Branch (1304:29): [True: 0, False: 16]
  |  Branch (1304:34): [True: 0, False: 0]
  ------------------
 1305|  12.7k|      ci_env_set(mrb->c->ci, NULL);
 1306|  12.7k|      mrb_env_unshare(mrb, e, FALSE);
  ------------------
  |  |   51|  12.7k|#  define FALSE 0
  ------------------
 1307|  12.7k|    }
 1308|  12.7k|  }
 1309|  12.7k|  stack_extend(mrb, nregs);
 1310|  12.7k|  stack_clear(c->ci->stack + stack_keep, nregs - stack_keep);
 1311|  12.7k|  c->ci->stack[0] = self;
 1312|  12.7k|  result = mrb_vm_exec(mrb, proc, irep->iseq);
 1313|  12.7k|  if (mrb->c != c) {
  ------------------
  |  Branch (1313:7): [True: 0, False: 12.7k]
  ------------------
 1314|      0|    if (mrb->c->fib) {
  ------------------
  |  Branch (1314:9): [True: 0, False: 0]
  ------------------
 1315|      0|      mrb_write_barrier(mrb, (struct RBasic*)mrb->c->fib);
 1316|      0|    }
 1317|      0|    mrb->c = c;
 1318|      0|  }
 1319|  12.7k|  else if (c->ci - c->cibase > cioff) {
  ------------------
  |  Branch (1319:12): [True: 0, False: 12.7k]
  ------------------
 1320|      0|    c->ci = c->cibase + cioff;
 1321|      0|  }
 1322|  12.7k|  return result;
 1323|  12.7k|}
mrb_vm_exec:
 1352|  12.7k|{
 1353|       |  /* mrb_assert(MRB_PROC_CFUNC_P(proc)) */
 1354|  12.7k|  const mrb_irep *irep = proc->body.irep;
 1355|  12.7k|  const mrb_pool_value *pool = irep->pool;
 1356|  12.7k|  const mrb_sym *syms = irep->syms;
 1357|  12.7k|  mrb_code insn;
 1358|  12.7k|  int ai = mrb_gc_arena_save(mrb);
  ------------------
  |  | 1306|  12.7k|#define mrb_gc_arena_save(mrb) ((mrb)->gc.arena_idx)
  ------------------
 1359|  12.7k|  struct mrb_jmpbuf *prev_jmp = mrb->jmp;
 1360|  12.7k|  struct mrb_jmpbuf c_jmp;
 1361|  12.7k|  uint32_t a;
 1362|  12.7k|  uint16_t b;
 1363|  12.7k|  uint16_t c;
 1364|  12.7k|  mrb_sym mid;
 1365|  12.7k|  const struct mrb_irep_catch_handler *ch;
 1366|       |
 1367|  12.7k|#ifndef MRB_USE_VM_SWITCH_DISPATCH
 1368|  12.7k|  static const void * const optable[] = {
 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
 1370|  12.7k|#include "mruby/ops.h"
  ------------------
  |  |    1|       |/* operand types:
  |  |    2|       |   + Z: no operand
  |  |    3|       |   + B: 8bit
  |  |    4|       |   + BB: 8+8bit
  |  |    5|       |   + BBB: 8+8+8bit
  |  |    6|       |   + BS: 8+16bit
  |  |    7|       |   + BSS: 8+16+16bit
  |  |    8|       |   + S: 16bit
  |  |    9|       |   + W: 24bit
  |  |   10|       |*/
  |  |   11|       |
  |  |   12|       |/*-----------------------------------------------------------------------
  |  |   13|       |operation code    operands      semantics
  |  |   14|       |------------------------------------------------------------------------*/
  |  |   15|  12.7k|OPCODE(NOP,        Z)        /* no operation */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   16|  12.7k|OPCODE(MOVE,       BB)       /* R[a] = R[b] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   17|  12.7k|OPCODE(LOADL,      BB)       /* R[a] = Pool[b] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   18|  12.7k|OPCODE(LOADI,      BB)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   19|  12.7k|OPCODE(LOADINEG,   BB)       /* R[a] = mrb_int(-b) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   20|  12.7k|OPCODE(LOADI__1,   B)        /* R[a] = mrb_int(-1) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   21|  12.7k|OPCODE(LOADI_0,    B)        /* R[a] = mrb_int(0) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   22|  12.7k|OPCODE(LOADI_1,    B)        /* R[a] = mrb_int(1) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   23|  12.7k|OPCODE(LOADI_2,    B)        /* R[a] = mrb_int(2) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   24|  12.7k|OPCODE(LOADI_3,    B)        /* R[a] = mrb_int(3) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   25|  12.7k|OPCODE(LOADI_4,    B)        /* R[a] = mrb_int(4) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   26|  12.7k|OPCODE(LOADI_5,    B)        /* R[a] = mrb_int(5) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   27|  12.7k|OPCODE(LOADI_6,    B)        /* R[a] = mrb_int(6) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   28|  12.7k|OPCODE(LOADI_7,    B)        /* R[a] = mrb_int(7) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   29|  12.7k|OPCODE(LOADI16,    BS)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   30|  12.7k|OPCODE(LOADI32,    BSS)      /* R[a] = mrb_int((b<<16)+c) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   31|  12.7k|OPCODE(LOADSYM,    BB)       /* R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   32|  12.7k|OPCODE(LOADNIL,    B)        /* R[a] = nil */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   33|  12.7k|OPCODE(LOADSELF,   B)        /* R[a] = self */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   34|  12.7k|OPCODE(LOADT,      B)        /* R[a] = true */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   35|  12.7k|OPCODE(LOADF,      B)        /* R[a] = false */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   36|  12.7k|OPCODE(GETGV,      BB)       /* R[a] = getglobal(Syms[b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   37|  12.7k|OPCODE(SETGV,      BB)       /* setglobal(Syms[b], R[a]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   38|  12.7k|OPCODE(GETSV,      BB)       /* R[a] = Special[Syms[b]] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   39|  12.7k|OPCODE(SETSV,      BB)       /* Special[Syms[b]] = R[a] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   40|  12.7k|OPCODE(GETIV,      BB)       /* R[a] = ivget(Syms[b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   41|  12.7k|OPCODE(SETIV,      BB)       /* ivset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   42|  12.7k|OPCODE(GETCV,      BB)       /* R[a] = cvget(Syms[b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   43|  12.7k|OPCODE(SETCV,      BB)       /* cvset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   44|  12.7k|OPCODE(GETCONST,   BB)       /* R[a] = constget(Syms[b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   45|  12.7k|OPCODE(SETCONST,   BB)       /* constset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   46|  12.7k|OPCODE(GETMCNST,   BB)       /* R[a] = R[a]::Syms[b] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   47|  12.7k|OPCODE(SETMCNST,   BB)       /* R[a+1]::Syms[b] = R[a] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   48|  12.7k|OPCODE(GETUPVAR,   BBB)      /* R[a] = uvget(b,c) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   49|  12.7k|OPCODE(SETUPVAR,   BBB)      /* uvset(b,c,R[a]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   50|  12.7k|OPCODE(GETIDX,     B)        /* R[a] = R[a][R[a+1]] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   51|  12.7k|OPCODE(SETIDX,     B)        /* R[a][R[a+1]] = R[a+2] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   52|  12.7k|OPCODE(JMP,        S)        /* pc+=a */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   53|  12.7k|OPCODE(JMPIF,      BS)       /* if R[a] pc+=b */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   54|  12.7k|OPCODE(JMPNOT,     BS)       /* if !R[a] pc+=b */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   55|  12.7k|OPCODE(JMPNIL,     BS)       /* if R[a]==nil pc+=b */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   56|  12.7k|OPCODE(JMPUW,      S)        /* unwind_and_jump_to(a) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   57|  12.7k|OPCODE(EXCEPT,     B)        /* R[a] = exc */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   58|  12.7k|OPCODE(RESCUE,     BB)       /* R[b] = R[a].isa?(R[b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   59|  12.7k|OPCODE(RAISEIF,    B)        /* raise(R[a]) if R[a] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   60|  12.7k|OPCODE(SSEND,      BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   61|  12.7k|OPCODE(SSENDB,     BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   62|  12.7k|OPCODE(SEND,       BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   63|  12.7k|OPCODE(SENDB,      BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   64|  12.7k|OPCODE(CALL,       Z)        /* self.call(*, **, &) (But overlay the current call frame; tailcall) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   65|  12.7k|OPCODE(SUPER,      BB)       /* R[a] = super(R[a+1],... ,R[a+b+1]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   66|  12.7k|OPCODE(ARGARY,     BS)       /* R[a] = argument array (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   67|  12.7k|OPCODE(ENTER,      W)        /* arg setup according to flags (23=m5:o5:r1:m5:k5:d1:b1) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   68|  12.7k|OPCODE(KEY_P,      BB)       /* R[a] = kdict.key?(Syms[b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   69|  12.7k|OPCODE(KEYEND,     Z)        /* raise unless kdict.empty? */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   70|  12.7k|OPCODE(KARG,       BB)       /* R[a] = kdict[Syms[b]]; kdict.delete(Syms[b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   71|  12.7k|OPCODE(RETURN,     B)        /* return R[a] (normal) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   72|  12.7k|OPCODE(RETURN_BLK, B)        /* return R[a] (in-block return) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   73|  12.7k|OPCODE(BREAK,      B)        /* break R[a] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   74|  12.7k|OPCODE(BLKPUSH,    BS)       /* R[a] = block (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   75|  12.7k|OPCODE(ADD,        B)        /* R[a] = R[a]+R[a+1] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   76|  12.7k|OPCODE(ADDI,       BB)       /* R[a] = R[a]+mrb_int(b) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   77|  12.7k|OPCODE(SUB,        B)        /* R[a] = R[a]-R[a+1] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   78|  12.7k|OPCODE(SUBI,       BB)       /* R[a] = R[a]-mrb_int(b) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   79|  12.7k|OPCODE(MUL,        B)        /* R[a] = R[a]*R[a+1] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   80|  12.7k|OPCODE(DIV,        B)        /* R[a] = R[a]/R[a+1] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   81|  12.7k|OPCODE(EQ,         B)        /* R[a] = R[a]==R[a+1] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   82|  12.7k|OPCODE(LT,         B)        /* R[a] = R[a]<R[a+1] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   83|  12.7k|OPCODE(LE,         B)        /* R[a] = R[a]<=R[a+1] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   84|  12.7k|OPCODE(GT,         B)        /* R[a] = R[a]>R[a+1] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   85|  12.7k|OPCODE(GE,         B)        /* R[a] = R[a]>=R[a+1] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   86|  12.7k|OPCODE(ARRAY,      BB)       /* R[a] = ary_new(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   87|  12.7k|OPCODE(ARRAY2,     BBB)      /* R[a] = ary_new(R[b],R[b+1]..R[b+c]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   88|  12.7k|OPCODE(ARYCAT,     B)        /* ary_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   89|  12.7k|OPCODE(ARYPUSH,    BB)       /* ary_push(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   90|  12.7k|OPCODE(ARYSPLAT,   B)        /* R[a] = ary_splat(R[a]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   91|  12.7k|OPCODE(AREF,       BBB)      /* R[a] = R[b][c] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   92|  12.7k|OPCODE(ASET,       BBB)      /* R[b][c] = R[a] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   93|  12.7k|OPCODE(APOST,      BBB)      /* *R[a],R[a+1]..R[a+c] = R[a][b..] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   94|  12.7k|OPCODE(INTERN,     B)        /* R[a] = intern(R[a]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   95|  12.7k|OPCODE(SYMBOL,     BB)       /* R[a] = intern(Pool[b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   96|  12.7k|OPCODE(STRING,     BB)       /* R[a] = str_dup(Pool[b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   97|  12.7k|OPCODE(STRCAT,     B)        /* str_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   98|  12.7k|OPCODE(HASH,       BB)       /* R[a] = hash_new(R[a],R[a+1]..R[a+b*2-1]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |   99|  12.7k|OPCODE(HASHADD,    BB)       /* hash_push(R[a],R[a+1]..R[a+b*2]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  100|  12.7k|OPCODE(HASHCAT,    B)        /* R[a] = hash_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  101|  12.7k|OPCODE(LAMBDA,     BB)       /* R[a] = lambda(Irep[b],L_LAMBDA) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  102|  12.7k|OPCODE(BLOCK,      BB)       /* R[a] = lambda(Irep[b],L_BLOCK) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  103|  12.7k|OPCODE(METHOD,     BB)       /* R[a] = lambda(Irep[b],L_METHOD) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  104|  12.7k|OPCODE(RANGE_INC,  B)        /* R[a] = range_new(R[a],R[a+1],FALSE) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  105|  12.7k|OPCODE(RANGE_EXC,  B)        /* R[a] = range_new(R[a],R[a+1],TRUE) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  106|  12.7k|OPCODE(OCLASS,     B)        /* R[a] = ::Object */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  107|  12.7k|OPCODE(CLASS,      BB)       /* R[a] = newclass(R[a],Syms[b],R[a+1]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  108|  12.7k|OPCODE(MODULE,     BB)       /* R[a] = newmodule(R[a],Syms[b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  109|  12.7k|OPCODE(EXEC,       BB)       /* R[a] = blockexec(R[a],Irep[b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  110|  12.7k|OPCODE(DEF,        BB)       /* R[a].newmethod(Syms[b],R[a+1]); R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  111|  12.7k|OPCODE(ALIAS,      BB)       /* alias_method(target_class,Syms[a],Syms[b]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  112|  12.7k|OPCODE(UNDEF,      B)        /* undef_method(target_class,Syms[a]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  113|  12.7k|OPCODE(SCLASS,     B)        /* R[a] = R[a].singleton_class */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  114|  12.7k|OPCODE(TCLASS,     B)        /* R[a] = target_class */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  115|  12.7k|OPCODE(DEBUG,      BBB)      /* print a,b,c */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  116|  12.7k|OPCODE(ERR,        B)        /* raise(LocalJumpError, Pool[a]) */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  117|  12.7k|OPCODE(EXT1,       Z)        /* make 1st operand (a) 16bit */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  118|  12.7k|OPCODE(EXT2,       Z)        /* make 2nd operand (b) 16bit */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  119|  12.7k|OPCODE(EXT3,       Z)        /* make 1st and 2nd operands 16bit */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  |  |  120|  12.7k|OPCODE(STOP,       Z)        /* stop VM */
  |  |  ------------------
  |  |  |  | 1369|  12.7k|#define OPCODE(x,_) &&L_OP_ ## x,
  |  |  ------------------
  ------------------
 1371|  12.7k|#undef OPCODE
 1372|  12.7k|  };
 1373|  12.7k|#endif
 1374|       |
 1375|  12.7k|  mrb_bool exc_catched = FALSE;
  ------------------
  |  |   51|  12.7k|#  define FALSE 0
  ------------------
 1376|  12.9k|RETRY_TRY_BLOCK:
 1377|       |
 1378|  12.9k|  MRB_TRY(&c_jmp) {
  ------------------
  |  |   44|  12.9k|#define MRB_TRY(buf) if (MRB_SETJMP((buf)->impl) == 0) {
  |  |  ------------------
  |  |  |  |   40|  12.9k|#define MRB_SETJMP setjmp
  |  |  ------------------
  |  |  |  Branch (44:26): [True: 12.9k, False: 0]
  |  |  ------------------
  ------------------
 1379|       |
 1380|  12.9k|  if (exc_catched) {
  ------------------
  |  Branch (1380:7): [True: 137, False: 12.7k]
  ------------------
 1381|    137|    exc_catched = FALSE;
  ------------------
  |  |   51|    137|#  define FALSE 0
  ------------------
 1382|    137|    mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|    137|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 1383|    137|    if (mrb->exc && mrb->exc->tt == MRB_TT_BREAK)
  ------------------
  |  Branch (1383:9): [True: 137, False: 0]
  |  Branch (1383:21): [True: 0, False: 137]
  ------------------
 1384|      0|      goto L_BREAK;
 1385|    137|    goto L_RAISE;
 1386|    137|  }
 1387|  12.7k|  mrb->jmp = &c_jmp;
 1388|  12.7k|  CI_PROC_SET(mrb->c->ci, proc);
  ------------------
  |  |  256|  12.7k|#define CI_PROC_SET(ci, p) do {\
  |  |  257|  12.7k|  ci->proc = p;\
  |  |  258|  12.7k|  ci->pc = (p && !MRB_PROC_CFUNC_P(p) && p->body.irep) ? p->body.irep->iseq : NULL;\
  |  |  ------------------
  |  |  |  |   65|  25.5k|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   64|  12.7k|#define MRB_PROC_CFUNC_FL 128
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:13): [True: 12.7k, False: 0]
  |  |  |  Branch (258:18): [True: 12.7k, False: 0]
  |  |  |  Branch (258:42): [True: 12.7k, False: 0]
  |  |  ------------------
  |  |  259|  12.7k|} while (0)
  |  |  ------------------
  |  |  |  Branch (259:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1389|       |
 1390|  12.7k|  INIT_DISPATCH {
  ------------------
  |  | 1279|  12.7k|#define INIT_DISPATCH JUMP; return mrb_nil_value();
  |  |  ------------------
  |  |  |  | 1282|  12.7k|#define JUMP NEXT
  |  |  |  |  ------------------
  |  |  |  |  |  | 1281|  12.7k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1260|  12.7k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1252|  12.7k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 12.7k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1391|      0|    CASE(OP_NOP, Z) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1392|       |      /* do nothing */
 1393|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1394|      0|    }
 1395|       |
 1396|  2.04M|    CASE(OP_MOVE, BB) {
  ------------------
  |  | 1280|  1.02M|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1397|  2.04M|      regs[a] = regs[b];
  ------------------
  |  | 1335|  1.02M|#define regs (mrb->c->ci->stack)
  ------------------
                    regs[a] = regs[b];
  ------------------
  |  | 1335|  1.02M|#define regs (mrb->c->ci->stack)
  ------------------
 1398|  2.04M|      NEXT;
  ------------------
  |  | 1281|  1.02M|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  1.02M|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  1.02M|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 1.02M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1399|  2.04M|    }
 1400|       |
 1401|  2.04M|    CASE(OP_LOADL, BB) {
  ------------------
  |  | 1280|  1.02M|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1402|    396|      switch (pool[b].tt) {   /* number */
 1403|      0|      case IREP_TT_INT32:
  ------------------
  |  Branch (1403:7): [True: 0, False: 271]
  ------------------
 1404|      0|        regs[a] = mrb_int_value(mrb, (mrb_int)pool[b].u.i32);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1405|      0|        break;
 1406|    271|      case IREP_TT_INT64:
  ------------------
  |  Branch (1406:7): [True: 271, False: 0]
  ------------------
 1407|    271|#if defined(MRB_INT64)
 1408|    271|        regs[a] = mrb_int_value(mrb, (mrb_int)pool[b].u.i64);
  ------------------
  |  | 1335|    271|#define regs (mrb->c->ci->stack)
  ------------------
 1409|    271|        break;
 1410|       |#else
 1411|       |#if defined(MRB_64BIT)
 1412|       |        if (INT32_MIN <= pool[b].u.i64 && pool[b].u.i64 <= INT32_MAX) {
 1413|       |          regs[a] = mrb_int_value(mrb, (mrb_int)pool[b].u.i64);
 1414|       |          break;
 1415|       |        }
 1416|       |#endif
 1417|       |        goto L_INT_OVERFLOW;
 1418|       |#endif
 1419|      0|      case IREP_TT_BIGINT:
  ------------------
  |  Branch (1419:7): [True: 0, False: 271]
  ------------------
 1420|      0|#ifdef MRB_USE_BIGINT
 1421|      0|        {
 1422|      0|          const char *s = pool[b].u.str;
 1423|      0|          regs[a] = mrb_bint_new_str(mrb, s+2, (uint8_t)s[0], s[1]);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1424|      0|        }
 1425|      0|        break;
 1426|       |#else
 1427|       |        goto L_INT_OVERFLOW;
 1428|       |#endif
 1429|      0|#ifndef MRB_NO_FLOAT
 1430|      0|      case IREP_TT_FLOAT:
  ------------------
  |  Branch (1430:7): [True: 0, False: 271]
  ------------------
 1431|      0|        regs[a] = mrb_float_value(mrb, pool[b].u.f);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1432|      0|        break;
 1433|      0|#endif
 1434|      0|      default:
  ------------------
  |  Branch (1434:7): [True: 0, False: 271]
  ------------------
 1435|       |        /* should not happen (tt:string) */
 1436|      0|        regs[a] = mrb_nil_value();
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1437|      0|        break;
 1438|    396|      }
 1439|    271|      NEXT;
  ------------------
  |  | 1281|    271|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|    271|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|    271|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 271]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1440|    271|    }
 1441|       |
 1442|  7.98k|    CASE(OP_LOADI, BB) {
  ------------------
  |  | 1280|  4.06k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1443|  7.98k|      SET_FIXNUM_VALUE(regs[a], b);
  ------------------
  |  |  215|  4.06k|#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
  |  |  ------------------
  |  |  |  |   74|  4.06k|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
 1444|  7.98k|      NEXT;
  ------------------
  |  | 1281|  4.06k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  4.06k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  4.06k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 4.06k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1445|  7.98k|    }
 1446|       |
 1447|  7.98k|    CASE(OP_LOADINEG, BB) {
  ------------------
  |  | 1280|  4.06k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1448|  2.00k|      SET_FIXNUM_VALUE(regs[a], -b);
  ------------------
  |  |  215|  1.02k|#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
  |  |  ------------------
  |  |  |  |   74|  1.02k|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
 1449|  2.00k|      NEXT;
  ------------------
  |  | 1281|  1.02k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  1.02k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  1.02k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 1.02k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1450|  2.00k|    }
 1451|       |
 1452|  2.00k|    CASE(OP_LOADI__1,B) goto L_LOADI;
  ------------------
  |  | 1280|  1.02k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1453|  23.8k|    CASE(OP_LOADI_0,B) goto L_LOADI;
  ------------------
  |  | 1280|  23.8k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1454|   229k|    CASE(OP_LOADI_1,B) goto L_LOADI;
  ------------------
  |  | 1280|   229k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1455|   229k|    CASE(OP_LOADI_2,B) goto L_LOADI;
  ------------------
  |  | 1280|   229k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1456|  1.96k|    CASE(OP_LOADI_3,B) goto L_LOADI;
  ------------------
  |  | 1280|  1.96k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1457|    819|    CASE(OP_LOADI_4,B) goto L_LOADI;
  ------------------
  |  | 1280|    819|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1458|    819|    CASE(OP_LOADI_5,B) goto L_LOADI;
  ------------------
  |  | 1280|    819|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1459|  2.38k|    CASE(OP_LOADI_6,B) goto L_LOADI;
  ------------------
  |  | 1280|  2.38k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1460|  2.38k|    CASE(OP_LOADI_7, B) {
  ------------------
  |  | 1280|  2.38k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1461|   260k|    L_LOADI:
 1462|   260k|      SET_FIXNUM_VALUE(regs[a], (mrb_int)insn - (mrb_int)OP_LOADI_0);
  ------------------
  |  |  215|   260k|#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
  |  |  ------------------
  |  |  |  |   74|   260k|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
 1463|   260k|      NEXT;
  ------------------
  |  | 1281|   260k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|   260k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|   260k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 260k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1464|   260k|    }
 1465|       |
 1466|   260k|    CASE(OP_LOADI16, BS) {
  ------------------
  |  | 1280|   260k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1467|     40|      SET_FIXNUM_VALUE(regs[a], (mrb_int)(int16_t)b);
  ------------------
  |  |  215|     20|#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
  |  |  ------------------
  |  |  |  |   74|     20|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
 1468|     40|      NEXT;
  ------------------
  |  | 1281|     20|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|     20|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|     20|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1469|     40|    }
 1470|       |
 1471|     86|    CASE(OP_LOADI32, BSS) {
  ------------------
  |  | 1280|     67|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1472|     86|      SET_INT_VALUE(mrb, regs[a], (int32_t)(((uint32_t)b<<16)+c));
  ------------------
  |  |  214|     67|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  ------------------
 1473|     86|      NEXT;
  ------------------
  |  | 1281|     67|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|     67|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|     67|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 67]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1474|     86|    }
 1475|       |
 1476|  80.0k|    CASE(OP_LOADSYM, BB) {
  ------------------
  |  | 1280|  40.0k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1477|  80.0k|      SET_SYM_VALUE(regs[a], syms[b]);
  ------------------
  |  |  216|  40.0k|#define SET_SYM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, SYMBOL, n)
  |  |  ------------------
  |  |  |  |   74|  40.0k|  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
  |  |  ------------------
  ------------------
 1478|  80.0k|      NEXT;
  ------------------
  |  | 1281|  40.0k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  40.0k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  40.0k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 40.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1479|  80.0k|    }
 1480|       |
 1481|   390k|    CASE(OP_LOADNIL, B) {
  ------------------
  |  | 1280|   195k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1482|   390k|      SET_NIL_VALUE(regs[a]);
  ------------------
  |  |  210|   195k|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
 1483|   390k|      NEXT;
  ------------------
  |  | 1281|   195k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|   195k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|   195k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 195k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1484|   390k|    }
 1485|       |
 1486|   476k|    CASE(OP_LOADSELF, B) {
  ------------------
  |  | 1280|   238k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1487|   476k|      regs[a] = regs[0];
  ------------------
  |  | 1335|   238k|#define regs (mrb->c->ci->stack)
  ------------------
                    regs[a] = regs[0];
  ------------------
  |  | 1335|   238k|#define regs (mrb->c->ci->stack)
  ------------------
 1488|   476k|      NEXT;
  ------------------
  |  | 1281|   238k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|   238k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|   238k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 238k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1489|   476k|    }
 1490|       |
 1491|   476k|    CASE(OP_LOADT, B) {
  ------------------
  |  | 1280|   238k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1492|  3.57k|      SET_TRUE_VALUE(regs[a]);
  ------------------
  |  |  212|  1.78k|#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
  ------------------
 1493|  3.57k|      NEXT;
  ------------------
  |  | 1281|  1.78k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  1.78k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  1.78k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 1.78k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1494|  3.57k|    }
 1495|       |
 1496|   157k|    CASE(OP_LOADF, B) {
  ------------------
  |  | 1280|  78.5k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1497|   157k|      SET_FALSE_VALUE(regs[a]);
  ------------------
  |  |  211|  78.5k|#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
  ------------------
 1498|   157k|      NEXT;
  ------------------
  |  | 1281|  78.5k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  78.5k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  78.5k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 78.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1499|   157k|    }
 1500|       |
 1501|   157k|    CASE(OP_GETGV, BB) {
  ------------------
  |  | 1280|  78.5k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1502|      0|      mrb_value val = mrb_gv_get(mrb, syms[b]);
 1503|      0|      regs[a] = val;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1504|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1505|      0|    }
 1506|       |
 1507|  2.85k|    CASE(OP_SETGV, BB) {
  ------------------
  |  | 1280|  1.42k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1508|  2.85k|      mrb_gv_set(mrb, syms[b], regs[a]);
  ------------------
  |  | 1335|  1.42k|#define regs (mrb->c->ci->stack)
  ------------------
 1509|  2.85k|      NEXT;
  ------------------
  |  | 1281|  1.42k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  1.42k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  1.42k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 1.42k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1510|  2.85k|    }
 1511|       |
 1512|  2.85k|    CASE(OP_GETSV, BB) {
  ------------------
  |  | 1280|  1.42k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1513|      0|      mrb_value val = mrb_vm_special_get(mrb, syms[b]);
 1514|      0|      regs[a] = val;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1515|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1516|      0|    }
 1517|       |
 1518|      0|    CASE(OP_SETSV, BB) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1519|      0|      mrb_vm_special_set(mrb, syms[b], regs[a]);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1520|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1521|      0|    }
 1522|       |
 1523|  25.3k|    CASE(OP_GETIV, BB) {
  ------------------
  |  | 1280|  12.6k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1524|  25.3k|      regs[a] = mrb_iv_get(mrb, regs[0], syms[b]);
  ------------------
  |  | 1335|  12.6k|#define regs (mrb->c->ci->stack)
  ------------------
                    regs[a] = mrb_iv_get(mrb, regs[0], syms[b]);
  ------------------
  |  | 1335|  12.6k|#define regs (mrb->c->ci->stack)
  ------------------
 1525|  25.3k|      NEXT;
  ------------------
  |  | 1281|  12.6k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  12.6k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  12.6k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 12.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1526|  25.3k|    }
 1527|       |
 1528|   451k|    CASE(OP_SETIV, BB) {
  ------------------
  |  | 1280|   225k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1529|   451k|      mrb_iv_set(mrb, regs[0], syms[b], regs[a]);
  ------------------
  |  | 1335|   225k|#define regs (mrb->c->ci->stack)
  ------------------
                    mrb_iv_set(mrb, regs[0], syms[b], regs[a]);
  ------------------
  |  | 1335|   225k|#define regs (mrb->c->ci->stack)
  ------------------
 1530|   451k|      NEXT;
  ------------------
  |  | 1281|   225k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|   225k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|   225k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 225k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1531|   451k|    }
 1532|       |
 1533|   451k|    CASE(OP_GETCV, BB) {
  ------------------
  |  | 1280|   225k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1534|      0|      mrb_value val;
 1535|      0|      val = mrb_vm_cv_get(mrb, syms[b]);
 1536|      0|      regs[a] = val;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1537|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1538|      0|    }
 1539|       |
 1540|    952|    CASE(OP_SETCV, BB) {
  ------------------
  |  | 1280|    476|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1541|    952|      mrb_vm_cv_set(mrb, syms[b], regs[a]);
  ------------------
  |  | 1335|    476|#define regs (mrb->c->ci->stack)
  ------------------
 1542|    952|      NEXT;
  ------------------
  |  | 1281|    476|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|    476|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|    476|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 476]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1543|    952|    }
 1544|       |
 1545|   121k|    CASE(OP_GETIDX, B) {
  ------------------
  |  | 1280|  60.8k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1546|   121k|      mrb_value va = regs[a], vb = regs[a+1];
  ------------------
  |  | 1335|  60.8k|#define regs (mrb->c->ci->stack)
  ------------------
                    mrb_value va = regs[a], vb = regs[a+1];
  ------------------
  |  | 1335|  60.8k|#define regs (mrb->c->ci->stack)
  ------------------
 1547|   121k|      switch (mrb_type(va)) {
 1548|  60.8k|      case MRB_TT_ARRAY:
  ------------------
  |  Branch (1548:7): [True: 60.8k, False: 0]
  ------------------
 1549|  60.8k|        if (!mrb_integer_p(vb)) goto getidx_fallback;
  ------------------
  |  |  171|  60.8k|#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   76|   121k|  (((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:3): [True: 60.5k, False: 386]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
  |  |  ------------------
  |  |  |  |   78|    386|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|    772|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|    772|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 258, False: 128]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 128]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 128, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1550|  60.6k|        else {
 1551|  60.6k|          mrb_int idx = mrb_integer(vb);
  ------------------
  |  |  166|  60.6k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1552|  60.6k|          if (0 <= idx && idx < RARRAY_LEN(va)) {
  ------------------
  |  |   72|  60.3k|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|  60.3k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  60.3k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  60.3k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 7.31k, False: 53.0k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|  7.31k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  7.31k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1552:15): [True: 60.3k, False: 273]
  |  Branch (1552:27): [True: 59.9k, False: 429]
  ------------------
 1553|  59.9k|            regs[a] = RARRAY_PTR(va)[idx];
  ------------------
  |  | 1335|  59.9k|#define regs (mrb->c->ci->stack)
  ------------------
                          regs[a] = RARRAY_PTR(va)[idx];
  ------------------
  |  |   73|  59.9k|#define RARRAY_PTR(a) ARY_PTR(RARRAY(a))
  |  |  ------------------
  |  |  |  |   71|  59.9k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  59.9k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|  59.9k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 6.88k, False: 53.0k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|  6.88k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1554|  59.9k|          }
 1555|    702|          else {
 1556|    702|            regs[a] = mrb_ary_entry(va, idx);
  ------------------
  |  | 1335|    702|#define regs (mrb->c->ci->stack)
  ------------------
 1557|    702|          }
 1558|  60.6k|        }
 1559|  60.6k|        break;
 1560|  60.6k|      case MRB_TT_HASH:
  ------------------
  |  Branch (1560:7): [True: 0, False: 60.8k]
  ------------------
 1561|      0|        va = mrb_hash_get(mrb, va, vb);
 1562|      0|        regs[a] = va;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1563|      0|        break;
 1564|      0|      case MRB_TT_STRING:
  ------------------
  |  Branch (1564:7): [True: 0, False: 60.8k]
  ------------------
 1565|      0|        switch (mrb_type(vb)) {
 1566|      0|        case MRB_TT_INTEGER:
  ------------------
  |  Branch (1566:9): [True: 0, False: 0]
  ------------------
 1567|      0|        case MRB_TT_STRING:
  ------------------
  |  Branch (1567:9): [True: 0, False: 0]
  ------------------
 1568|      0|        case MRB_TT_RANGE:
  ------------------
  |  Branch (1568:9): [True: 0, False: 0]
  ------------------
 1569|      0|          va = mrb_str_aref(mrb, va, vb, mrb_undef_value());
 1570|      0|          regs[a] = va;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1571|      0|          break;
 1572|      0|        default:
  ------------------
  |  Branch (1572:9): [True: 0, False: 0]
  ------------------
 1573|      0|          goto getidx_fallback;
 1574|      0|        }
 1575|      0|        break;
 1576|      0|      default:
  ------------------
  |  Branch (1576:7): [True: 0, False: 60.8k]
  ------------------
 1577|    258|      getidx_fallback:
 1578|    258|        mid = MRB_OPSYM(aref);
  ------------------
  |  |   12|    258|#define MRB_OPSYM(name) MRB_OPSYM__##name
  ------------------
 1579|    258|        goto L_SEND_SYM;
 1580|   121k|      }
 1581|  60.6k|      NEXT;
  ------------------
  |  | 1281|  60.6k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  60.6k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  60.6k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 60.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1582|  60.6k|    }
 1583|       |
 1584|  60.6k|    CASE(OP_SETIDX, B) {
  ------------------
  |  | 1280|  60.6k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1585|  25.5k|      c = 2;
 1586|  25.5k|      mid = MRB_OPSYM(aset);
  ------------------
  |  |   12|  25.5k|#define MRB_OPSYM(name) MRB_OPSYM__##name
  ------------------
 1587|  25.5k|      SET_NIL_VALUE(regs[a+3]);
  ------------------
  |  |  210|  25.5k|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
 1588|  25.5k|      goto L_SENDB_SYM;
 1589|  25.5k|    }
 1590|       |
 1591|   310k|    CASE(OP_GETCONST, BB) {
  ------------------
  |  | 1280|   155k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1592|   310k|      mrb_value v = mrb_vm_const_get(mrb, syms[b]);
 1593|   310k|      regs[a] = v;
  ------------------
  |  | 1335|   155k|#define regs (mrb->c->ci->stack)
  ------------------
 1594|   310k|      NEXT;
  ------------------
  |  | 1281|   155k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|   155k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|   155k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 155k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1595|   310k|    }
 1596|       |
 1597|   310k|    CASE(OP_SETCONST, BB) {
  ------------------
  |  | 1280|   155k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1598|  8.56k|      mrb_vm_const_set(mrb, syms[b], regs[a]);
  ------------------
  |  | 1335|  4.28k|#define regs (mrb->c->ci->stack)
  ------------------
 1599|  8.56k|      NEXT;
  ------------------
  |  | 1281|  4.28k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  4.28k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  4.28k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 4.28k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1600|  8.56k|    }
 1601|       |
 1602|  8.56k|    CASE(OP_GETMCNST, BB) {
  ------------------
  |  | 1280|  4.28k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1603|  1.67k|      mrb_value v = mrb_const_get(mrb, regs[a], syms[b]);
  ------------------
  |  | 1335|    963|#define regs (mrb->c->ci->stack)
  ------------------
 1604|  1.67k|      regs[a] = v;
  ------------------
  |  | 1335|    963|#define regs (mrb->c->ci->stack)
  ------------------
 1605|  1.67k|      NEXT;
  ------------------
  |  | 1281|    963|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|    963|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|    963|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 963]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1606|  1.67k|    }
 1607|       |
 1608|  1.67k|    CASE(OP_SETMCNST, BB) {
  ------------------
  |  | 1280|    963|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1609|      0|      mrb_const_set(mrb, regs[a+1], syms[b], regs[a]);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
                    mrb_const_set(mrb, regs[a+1], syms[b], regs[a]);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1610|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1611|      0|    }
 1612|       |
 1613|      0|    CASE(OP_GETUPVAR, BBB) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1614|      0|      struct REnv *e = uvenv(mrb, c);
 1615|       |
 1616|      0|      if (e && b < MRB_ENV_LEN(e)) {
  ------------------
  |  |   27|      0|#define MRB_ENV_LEN(e) ((mrb_int)((e)->flags & 0xff))
  ------------------
  |  Branch (1616:11): [True: 0, False: 0]
  |  Branch (1616:16): [True: 0, False: 0]
  ------------------
 1617|      0|        regs[a] = e->stack[b];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1618|      0|      }
 1619|      0|      else {
 1620|      0|        regs[a] = mrb_nil_value();
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1621|      0|      }
 1622|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1623|      0|    }
 1624|       |
 1625|      0|    CASE(OP_SETUPVAR, BBB) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1626|      0|      struct REnv *e = uvenv(mrb, c);
 1627|       |
 1628|      0|      if (e) {
  ------------------
  |  Branch (1628:11): [True: 0, False: 0]
  ------------------
 1629|      0|        if (b < MRB_ENV_LEN(e)) {
  ------------------
  |  |   27|      0|#define MRB_ENV_LEN(e) ((mrb_int)((e)->flags & 0xff))
  ------------------
  |  Branch (1629:13): [True: 0, False: 0]
  ------------------
 1630|      0|          e->stack[b] = regs[a];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1631|      0|          mrb_write_barrier(mrb, (struct RBasic*)e);
 1632|      0|        }
 1633|      0|      }
 1634|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1635|      0|    }
 1636|       |
 1637|   329k|    CASE(OP_JMP, S) {
  ------------------
  |  | 1280|   164k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1638|   329k|      pc += (int16_t)a;
 1639|   329k|      JUMP;
  ------------------
  |  | 1282|   164k|#define JUMP NEXT
  |  |  ------------------
  |  |  |  | 1281|   164k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|   164k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|   164k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 164k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1640|   329k|    }
 1641|   329k|    CASE(OP_JMPIF, BS) {
  ------------------
  |  | 1280|   164k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1642|  90.7k|      if (mrb_test(regs[a])) {
  ------------------
  |  |  312|  45.3k|#define mrb_test(o)   mrb_bool(o)
  |  |  ------------------
  |  |  |  |  168|  45.3k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (168:24): [True: 6.88k, False: 38.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1643|  6.88k|        pc += (int16_t)b;
 1644|  6.88k|        JUMP;
  ------------------
  |  | 1282|  6.88k|#define JUMP NEXT
  |  |  ------------------
  |  |  |  | 1281|  6.88k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|  6.88k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|  6.88k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 6.88k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1645|  6.88k|      }
 1646|  90.7k|      NEXT;
  ------------------
  |  | 1281|  45.3k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  45.3k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  45.3k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 45.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1647|  90.7k|    }
 1648|   655k|    CASE(OP_JMPNOT, BS) {
  ------------------
  |  | 1280|   327k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1649|   655k|      if (!mrb_test(regs[a])) {
  ------------------
  |  |  312|   327k|#define mrb_test(o)   mrb_bool(o)
  |  |  ------------------
  |  |  |  |  168|   327k|#define mrb_bool(o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
  |  |  ------------------
  ------------------
  |  Branch (1649:11): [True: 185k, False: 141k]
  ------------------
 1650|   185k|        pc += (int16_t)b;
 1651|   185k|        JUMP;
  ------------------
  |  | 1282|   185k|#define JUMP NEXT
  |  |  ------------------
  |  |  |  | 1281|   185k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|   185k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|   185k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 185k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1652|   185k|      }
 1653|   655k|      NEXT;
  ------------------
  |  | 1281|   327k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|   327k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|   327k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 327k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1654|   655k|    }
 1655|   655k|    CASE(OP_JMPNIL, BS) {
  ------------------
  |  | 1280|   327k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1656|      0|      if (mrb_nil_p(regs[a])) {
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1657|      0|        pc += (int16_t)b;
 1658|      0|        JUMP;
  ------------------
  |  | 1282|      0|#define JUMP NEXT
  |  |  ------------------
  |  |  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1659|      0|      }
 1660|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1661|      0|    }
 1662|       |
 1663|      0|    CASE(OP_JMPUW, S) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1664|      0|      a = (uint32_t)((pc - irep->iseq) + (int16_t)a);
 1665|      0|      CHECKPOINT_RESTORE(RBREAK_TAG_JUMP) {
  ------------------
  |  | 1237|      0|  do { \
  |  | 1238|      0|    if (FALSE) { \
  |  |  ------------------
  |  |  |  |   51|      0|#  define FALSE 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:17): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1239|      0|      CHECKPOINT_LABEL_MAKE(tag): \
  |  |  ------------------
  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  ------------------
  |  | 1240|      0|      do {
  ------------------
 1666|      0|        struct RBreak *brk = (struct RBreak*)mrb->exc;
 1667|      0|        mrb_value target = mrb_break_value_get(brk);
  ------------------
  |  |   45|      0|#define mrb_break_value_get(brk) ((brk)->val)
  ------------------
 1668|      0|        mrb_assert(mrb_integer_p(target));
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 1669|      0|        a = (uint32_t)mrb_integer(target);
  ------------------
  |  |  166|      0|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 1670|      0|        mrb_assert(a >= 0 && a < irep->ilen);
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 1671|      0|      }
 1672|      0|      CHECKPOINT_MAIN(RBREAK_TAG_JUMP) {
  ------------------
  |  | 1243|      0|      } while (0); \
  |  |  ------------------
  |  |  |  Branch (1243:16): [Folded - Ignored]
  |  |  ------------------
  |  | 1244|      0|    } \
  |  | 1245|      0|    do {
  ------------------
 1673|      0|        ch = catch_handler_find(mrb, mrb->c->ci, pc, MRB_CATCH_FILTER_ENSURE);
  ------------------
  |  | 1098|      0|#define MRB_CATCH_FILTER_ENSURE (UINT32_C(1) << MRB_CATCH_ENSURE)
  ------------------
 1674|      0|        if (ch) {
  ------------------
  |  Branch (1674:13): [True: 0, False: 0]
  ------------------
 1675|       |          /* avoiding a jump from a catch handler into the same handler */
 1676|      0|          if (a < mrb_irep_catch_handler_unpack(ch->begin) || a >= mrb_irep_catch_handler_unpack(ch->end)) {
  ------------------
  |  |  124|      0|#define mrb_irep_catch_handler_unpack(v)    bin_to_uint32(v)
  ------------------
                        if (a < mrb_irep_catch_handler_unpack(ch->begin) || a >= mrb_irep_catch_handler_unpack(ch->end)) {
  ------------------
  |  |  124|      0|#define mrb_irep_catch_handler_unpack(v)    bin_to_uint32(v)
  ------------------
  |  Branch (1676:15): [True: 0, False: 0]
  |  Branch (1676:63): [True: 0, False: 0]
  ------------------
 1677|      0|            THROW_TAGGED_BREAK(mrb, RBREAK_TAG_JUMP, proc, mrb_fixnum_value(a));
  ------------------
  |  | 1205|      0|  do { \
  |  | 1206|      0|    prepare_tagged_break(mrb, tag, proc, val); \
  |  | 1207|      0|    goto L_CATCH_TAGGED_BREAK; \
  |  | 1208|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1208:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1678|      0|          }
 1679|      0|        }
 1680|      0|      }
 1681|      0|      CHECKPOINT_END(RBREAK_TAG_JUMP);
  ------------------
  |  | 1248|      0|    } while (0); \
  |  |  ------------------
  |  |  |  Branch (1248:14): [Folded - Ignored]
  |  |  ------------------
  |  | 1249|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1249:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1682|       |
 1683|      0|      mrb->exc = NULL; /* clear break object */
 1684|      0|      pc = irep->iseq + a;
 1685|      0|      JUMP;
  ------------------
  |  | 1282|      0|#define JUMP NEXT
  |  |  ------------------
  |  |  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1686|      0|    }
 1687|       |
 1688|      0|    CASE(OP_EXCEPT, B) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1689|      0|      mrb_value exc;
 1690|       |
 1691|      0|      if (mrb->exc == NULL) {
  ------------------
  |  Branch (1691:11): [True: 0, False: 0]
  ------------------
 1692|      0|        exc = mrb_nil_value();
 1693|      0|      }
 1694|      0|      else {
 1695|      0|        switch (mrb->exc->tt) {
 1696|      0|        case MRB_TT_BREAK:
  ------------------
  |  Branch (1696:9): [True: 0, False: 0]
  ------------------
 1697|      0|        case MRB_TT_EXCEPTION:
  ------------------
  |  Branch (1697:9): [True: 0, False: 0]
  ------------------
 1698|      0|          exc = mrb_obj_value(mrb->exc);
 1699|      0|          break;
 1700|      0|        default:
  ------------------
  |  Branch (1700:9): [True: 0, False: 0]
  ------------------
 1701|      0|          mrb_assert(!"bad mrb_type");
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 1702|      0|          exc = mrb_nil_value();
 1703|      0|          break;
 1704|      0|        }
 1705|      0|        mrb->exc = NULL;
 1706|      0|      }
 1707|      0|      regs[a] = exc;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1708|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1709|      0|    }
 1710|      0|    CASE(OP_RESCUE, BB) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1711|      0|      mrb_value exc = regs[a];  /* exc on stack */
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1712|      0|      mrb_value e = regs[b];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1713|      0|      struct RClass *ec;
 1714|       |
 1715|      0|      switch (mrb_type(e)) {
 1716|      0|      case MRB_TT_CLASS:
  ------------------
  |  Branch (1716:7): [True: 0, False: 0]
  ------------------
 1717|      0|      case MRB_TT_MODULE:
  ------------------
  |  Branch (1717:7): [True: 0, False: 0]
  ------------------
 1718|      0|        break;
 1719|      0|      default:
  ------------------
  |  Branch (1719:7): [True: 0, False: 0]
  ------------------
 1720|      0|        RAISE_LIT(mrb, E_TYPE_ERROR, "class or module required for rescue clause");
  ------------------
  |  | 1163|      0|#define RAISE_LIT(mrb, c, str)          RAISE_EXC(mrb, mrb_exc_new_lit(mrb, c, str))
  |  |  ------------------
  |  |  |  | 1157|      0|#define RAISE_EXC(mrb, exc) do { \
  |  |  |  | 1158|      0|  mrb_value exc_value = (exc); \
  |  |  |  | 1159|      0|  mrb_exc_set(mrb, exc_value); \
  |  |  |  | 1160|      0|  goto L_RAISE; \
  |  |  |  | 1161|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1161:10): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1721|      0|      }
 1722|      0|      ec = mrb_class_ptr(e);
  ------------------
  |  |   24|      0|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1723|      0|      regs[b] = mrb_bool_value(mrb_obj_is_kind_of(mrb, exc, ec));
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1724|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1725|      0|    }
 1726|       |
 1727|      0|    CASE(OP_RAISEIF, B) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1728|      0|      mrb_value exc = regs[a];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1729|      0|      if (mrb_break_p(exc)) {
  ------------------
  |  |  203|      0|#define mrb_break_p(o) WORDBOX_OBJ_TYPE_P(o, BREAK)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1730|      0|        mrb->exc = mrb_obj_ptr(exc);
  ------------------
  |  |   34|      0|#define mrb_obj_ptr(v)   ((struct RObject*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1731|      0|        goto L_BREAK;
 1732|      0|      }
 1733|      0|      mrb_exc_set(mrb, exc);
 1734|      0|      if (mrb->exc) {
  ------------------
  |  Branch (1734:11): [True: 0, False: 0]
  ------------------
 1735|      0|        goto L_RAISE;
 1736|      0|      }
 1737|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1738|      0|    }
 1739|       |
 1740|  63.2k|    CASE(OP_SSEND, BBB) {
  ------------------
  |  | 1280|  63.2k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1741|  63.2k|      regs[a] = regs[0];
  ------------------
  |  | 1335|  63.2k|#define regs (mrb->c->ci->stack)
  ------------------
                    regs[a] = regs[0];
  ------------------
  |  | 1335|  63.2k|#define regs (mrb->c->ci->stack)
  ------------------
 1742|  63.2k|      insn = OP_SEND;
 1743|  63.2k|    }
 1744|  63.2k|    goto L_SENDB;
 1745|       |
 1746|  63.2k|    CASE(OP_SSENDB, BBB) {
  ------------------
  |  | 1280|  63.2k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1747|  31.7k|      regs[a] = regs[0];
  ------------------
  |  | 1335|  31.7k|#define regs (mrb->c->ci->stack)
  ------------------
                    regs[a] = regs[0];
  ------------------
  |  | 1335|  31.7k|#define regs (mrb->c->ci->stack)
  ------------------
 1748|  31.7k|    }
 1749|  31.7k|    goto L_SENDB;
 1750|       |
 1751|   312k|    CASE(OP_SEND, BBB)
  ------------------
  |  | 1280|   312k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1752|   312k|    goto L_SENDB;
 1753|       |
 1754|  41.7k|    L_SEND_SYM:
 1755|  41.7k|    c = 1;
 1756|       |    /* push nil after arguments */
 1757|  41.7k|    SET_NIL_VALUE(regs[a+2]);
  ------------------
  |  |  210|  41.7k|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
 1758|  41.7k|    goto L_SENDB_SYM;
 1759|       |
 1760|  41.7k|    CASE(OP_SENDB, BBB)
  ------------------
  |  | 1280|  41.7k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1761|   413k|    L_SENDB:
 1762|   413k|    mid = syms[b];
 1763|   480k|    L_SENDB_SYM:
 1764|   480k|    {
 1765|   480k|      mrb_callinfo *ci;
 1766|   480k|      mrb_method_t m;
 1767|   480k|      mrb_value recv, blk;
 1768|   480k|      int n = c&0xf;
 1769|   480k|      int nk = (c>>4)&0xf;
 1770|   480k|      mrb_int bidx = a + mrb_bidx(n,nk);
 1771|   480k|      mrb_int new_bidx = bidx;
 1772|       |
 1773|   480k|      if (nk == CALL_MAXARGS) {
  ------------------
  |  |   84|   480k|#define CALL_MAXARGS 15
  ------------------
  |  Branch (1773:11): [True: 31.7k, False: 448k]
  ------------------
 1774|  31.7k|        mrb_ensure_hash_type(mrb, regs[a+(n==CALL_MAXARGS?1:n)+1]);
  ------------------
  |  | 1335|  31.7k|#define regs (mrb->c->ci->stack)
  ------------------
                      mrb_ensure_hash_type(mrb, regs[a+(n==CALL_MAXARGS?1:n)+1]);
  ------------------
  |  |   84|  31.7k|#define CALL_MAXARGS 15
  ------------------
  |  Branch (1774:43): [True: 31.7k, False: 0]
  ------------------
 1775|  31.7k|      }
 1776|   448k|      else if (nk > 0) {  /* pack keyword arguments */
  ------------------
  |  Branch (1776:16): [True: 0, False: 448k]
  ------------------
 1777|      0|        mrb_int kidx = a+(n==CALL_MAXARGS?1:n)+1;
  ------------------
  |  |   84|      0|#define CALL_MAXARGS 15
  ------------------
  |  Branch (1777:27): [True: 0, False: 0]
  ------------------
 1778|      0|        mrb_value kdict = hash_new_from_regs(mrb, nk, kidx);
 1779|      0|        regs[kidx] = kdict;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1780|      0|        nk = CALL_MAXARGS;
  ------------------
  |  |   84|      0|#define CALL_MAXARGS 15
  ------------------
 1781|      0|        c = n | (nk<<4);
 1782|      0|        new_bidx = a+mrb_bidx(n, nk);
 1783|      0|      }
 1784|       |
 1785|   480k|      mrb_assert(bidx < irep->nregs);
  ------------------
  |  |   68|   480k|#define mrb_assert(p) ((void)0)
  ------------------
 1786|   480k|      if (insn == OP_SEND) {
  ------------------
  |  Branch (1786:11): [True: 375k, False: 105k]
  ------------------
 1787|       |        /* clear block argument */
 1788|   375k|        SET_NIL_VALUE(regs[new_bidx]);
  ------------------
  |  |  210|   375k|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
 1789|   375k|        SET_NIL_VALUE(blk);
  ------------------
  |  |  210|   375k|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
 1790|   375k|      }
 1791|   105k|      else {
 1792|   105k|        blk = ensure_block(mrb, regs[bidx]);
  ------------------
  |  | 1335|   105k|#define regs (mrb->c->ci->stack)
  ------------------
 1793|   105k|        regs[new_bidx] = blk;
  ------------------
  |  | 1335|   105k|#define regs (mrb->c->ci->stack)
  ------------------
 1794|   105k|      }
 1795|       |
 1796|   480k|      ci = cipush(mrb, a, CINFO_DIRECT, NULL, NULL, BLK_PTR(blk), 0, c);
  ------------------
  |  |  336|   480k|#define CINFO_DIRECT  2 // called method from C
  ------------------
                    ci = cipush(mrb, a, CINFO_DIRECT, NULL, NULL, BLK_PTR(blk), 0, c);
  ------------------
  |  |  339|   480k|#define BLK_PTR(b) ((mrb_proc_p(b)) ? mrb_proc_ptr(b) : NULL)
  |  |  ------------------
  |  |  |  |  197|   480k|#define mrb_proc_p(o) WORDBOX_OBJ_TYPE_P(o, PROC)
  |  |  |  |  ------------------
  |  |  |  |  |  |   78|   480k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  148|   961k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   71|   961k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 480k]
  |  |  |  |  |  |  |  |  |  Branch (148:63): [True: 474k, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (78:27): [True: 6.18k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define BLK_PTR(b) ((mrb_proc_p(b)) ? mrb_proc_ptr(b) : NULL)
  |  |  ------------------
  |  |  |  |   90|  6.18k|#define mrb_proc_ptr(v)    ((struct RProc*)(mrb_ptr(v)))
  |  |  |  |  ------------------
  |  |  |  |  |  |  150|  6.18k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1797|   480k|      recv = regs[0];
  ------------------
  |  | 1335|   480k|#define regs (mrb->c->ci->stack)
  ------------------
 1798|   480k|      ci->u.target_class = (insn == OP_SUPER) ? CI_TARGET_CLASS(ci - 1)->super : mrb_class(mrb, recv);
  ------------------
  |  |  267|      0|#define CI_TARGET_CLASS(ci) (((ci)->u.env && (ci)->u.env->tt == MRB_TT_ENV)? (ci)->u.env->c : (ci)->u.target_class)
  |  |  ------------------
  |  |  |  Branch (267:31): [True: 0, False: 0]
  |  |  |  Branch (267:46): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1798:28): [True: 0, False: 480k]
  ------------------
 1799|   480k|      m = mrb_vm_find_method(mrb, ci->u.target_class, &ci->u.target_class, mid);
 1800|   480k|      if (MRB_METHOD_UNDEF_P(m)) {
  ------------------
  |  |  115|   480k|#define MRB_METHOD_UNDEF_P(m) ((m)==0)
  |  |  ------------------
  |  |  |  Branch (115:31): [True: 37, False: 480k]
  |  |  ------------------
  ------------------
 1801|     37|        m = prepare_missing(mrb, ci, recv, mid, blk, (insn == OP_SUPER));
 1802|     37|      }
 1803|   480k|      else {
 1804|   480k|        ci->mid = mid;
 1805|   480k|      }
 1806|   480k|      ci->cci = CINFO_NONE;
  ------------------
  |  |  334|   480k|#define CINFO_NONE    0 // called method from mruby VM (without C functions)
  ------------------
 1807|       |
 1808|   480k|      if (MRB_METHOD_CFUNC_P(m)) {
  ------------------
  |  |  131|   480k|#define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |  107|   480k|#define MRB_METHOD_FUNC_P(m) (((uintptr_t)(m))&MRB_METHOD_FUNC_FL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|   480k|#define MRB_METHOD_FUNC_FL 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (107:30): [True: 306k, False: 174k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |   54|   306k|#  define TRUE 1
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |  114|   174k|#define MRB_METHOD_PROC(m) ((struct RProc*)(m))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:28): [True: 174k, False: 37]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |   65|   174k|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   64|   174k|#define MRB_PROC_CFUNC_FL 128
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE))
  |  |  ------------------
  |  |  |  |   51|     37|#  define FALSE 0
  |  |  ------------------
  |  |  |  Branch (131:31): [True: 306k, False: 174k]
  |  |  ------------------
  ------------------
 1809|   306k|        if (MRB_METHOD_PROC_P(m)) {
  ------------------
  |  |  113|   306k|#define MRB_METHOD_PROC_P(m) (!MRB_METHOD_FUNC_P(m))
  |  |  ------------------
  |  |  |  |  107|   306k|#define MRB_METHOD_FUNC_P(m) (((uintptr_t)(m))&MRB_METHOD_FUNC_FL)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|   306k|#define MRB_METHOD_FUNC_FL 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (113:30): [True: 0, False: 306k]
  |  |  ------------------
  ------------------
 1810|      0|          struct RProc *p = MRB_METHOD_PROC(m);
  ------------------
  |  |  114|      0|#define MRB_METHOD_PROC(m) ((struct RProc*)(m))
  ------------------
 1811|      0|          CI_PROC_SET(ci, p);
  ------------------
  |  |  256|      0|#define CI_PROC_SET(ci, p) do {\
  |  |  257|      0|  ci->proc = p;\
  |  |  258|      0|  ci->pc = (p && !MRB_PROC_CFUNC_P(p) && p->body.irep) ? p->body.irep->iseq : NULL;\
  |  |  ------------------
  |  |  |  |   65|      0|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   64|      0|#define MRB_PROC_CFUNC_FL 128
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:13): [True: 0, False: 0]
  |  |  |  Branch (258:18): [True: 0, False: 0]
  |  |  |  Branch (258:42): [True: 0, False: 0]
  |  |  ------------------
  |  |  259|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (259:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1812|      0|          recv = p->body.func(mrb, recv);
 1813|      0|        }
 1814|   306k|        else {
 1815|   306k|          if (MRB_METHOD_NOARG_P(m)) {
  ------------------
  |  |  108|   306k|#define MRB_METHOD_NOARG_P(m) ((((uintptr_t)(m))&MRB_METHOD_NOARG_FL)?1:0)
  |  |  ------------------
  |  |  |  |  103|   306k|#define MRB_METHOD_NOARG_FL 2
  |  |  ------------------
  |  |  |  Branch (108:31): [True: 64.0k, False: 242k]
  |  |  |  Branch (108:32): [True: 64.0k, False: 242k]
  |  |  ------------------
  ------------------
 1816|  64.0k|            check_method_noarg(mrb, ci);
 1817|  64.0k|          }
 1818|   306k|          recv = MRB_METHOD_FUNC(m)(mrb, recv);
  ------------------
  |  |  110|   306k|#define MRB_METHOD_FUNC(m) ((mrb_func_t)((uintptr_t)(m)>>2))
  ------------------
 1819|   306k|        }
 1820|   306k|        mrb_gc_arena_shrink(mrb, ai);
 1821|   306k|        if (mrb->exc) goto L_RAISE;
  ------------------
  |  Branch (1821:13): [True: 0, False: 306k]
  ------------------
 1822|   306k|        ci = mrb->c->ci;
 1823|   306k|        if (!ci->u.target_class) { /* return from context modifying method (resume/yield) */
  ------------------
  |  Branch (1823:13): [True: 476, False: 305k]
  ------------------
 1824|    476|          if (ci->cci == CINFO_RESUMED) {
  ------------------
  |  |  337|    476|#define CINFO_RESUMED 3 // resumed by `Fiber.yield` (probably the main call is `mrb_fiber_resume()`)
  ------------------
  |  Branch (1824:15): [True: 0, False: 476]
  ------------------
 1825|      0|            mrb->jmp = prev_jmp;
 1826|      0|            return recv;
 1827|      0|          }
 1828|    476|          else {
 1829|    476|            mrb_assert(!MRB_PROC_CFUNC_P(ci[-1].proc));
  ------------------
  |  |   68|    476|#define mrb_assert(p) ((void)0)
  ------------------
 1830|    476|            proc = ci[-1].proc;
 1831|    476|            irep = proc->body.irep;
 1832|    476|            pool = irep->pool;
 1833|    476|            syms = irep->syms;
 1834|    476|          }
 1835|    476|        }
 1836|   306k|        ci->stack[0] = recv;
 1837|       |        /* pop stackpos */
 1838|   306k|        ci = cipop(mrb);
 1839|   306k|        pc = ci->pc;
 1840|   306k|      }
 1841|   174k|      else {
 1842|       |        /* setup environment for calling method */
 1843|   174k|        proc = MRB_METHOD_PROC(m);
  ------------------
  |  |  114|   174k|#define MRB_METHOD_PROC(m) ((struct RProc*)(m))
  ------------------
 1844|   174k|        CI_PROC_SET(ci, proc);
  ------------------
  |  |  256|   174k|#define CI_PROC_SET(ci, p) do {\
  |  |  257|   174k|  ci->proc = p;\
  |  |  258|   174k|  ci->pc = (p && !MRB_PROC_CFUNC_P(p) && p->body.irep) ? p->body.irep->iseq : NULL;\
  |  |  ------------------
  |  |  |  |   65|   348k|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   64|   174k|#define MRB_PROC_CFUNC_FL 128
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:13): [True: 174k, False: 37]
  |  |  |  Branch (258:18): [True: 174k, False: 0]
  |  |  |  Branch (258:42): [True: 174k, False: 0]
  |  |  ------------------
  |  |  259|   174k|} while (0)
  |  |  ------------------
  |  |  |  Branch (259:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1845|   174k|        irep = proc->body.irep;
 1846|   174k|        pool = irep->pool;
 1847|   174k|        syms = irep->syms;
 1848|   174k|        stack_extend(mrb, (irep->nregs < 4) ? 4 : irep->nregs);
  ------------------
  |  Branch (1848:27): [True: 5.71k, False: 168k]
  ------------------
 1849|   174k|        pc = irep->iseq;
 1850|   174k|      }
 1851|   480k|    }
 1852|   480k|    JUMP;
  ------------------
  |  | 1282|   480k|#define JUMP NEXT
  |  |  ------------------
  |  |  |  | 1281|   480k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|   480k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|   480k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 480k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1853|       |
 1854|   480k|    CASE(OP_CALL, Z) {
  ------------------
  |  | 1280|   480k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1855|  11.4k|      mrb_callinfo *ci = mrb->c->ci;
 1856|  11.4k|      mrb_value recv = ci->stack[0];
 1857|  11.4k|      struct RProc *m = mrb_proc_ptr(recv);
  ------------------
  |  |   90|  5.71k|#define mrb_proc_ptr(v)    ((struct RProc*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  5.71k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1858|       |
 1859|       |      /* replace callinfo */
 1860|  11.4k|      ci->u.target_class = MRB_PROC_TARGET_CLASS(m);
  ------------------
  |  |   74|  5.71k|#define MRB_PROC_TARGET_CLASS(p) (MRB_PROC_ENV_P(p) ? (p)->e.env->c : (p)->e.target_class)
  |  |  ------------------
  |  |  |  |   72|  5.71k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  5.71k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 5.71k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1861|  11.4k|      CI_PROC_SET(ci, m);
  ------------------
  |  |  256|  5.71k|#define CI_PROC_SET(ci, p) do {\
  |  |  257|  5.71k|  ci->proc = p;\
  |  |  258|  5.71k|  ci->pc = (p && !MRB_PROC_CFUNC_P(p) && p->body.irep) ? p->body.irep->iseq : NULL;\
  |  |  ------------------
  |  |  |  |   65|  11.4k|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   64|  5.71k|#define MRB_PROC_CFUNC_FL 128
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:13): [True: 5.71k, False: 0]
  |  |  |  Branch (258:18): [True: 5.71k, False: 0]
  |  |  |  Branch (258:42): [True: 5.71k, False: 0]
  |  |  ------------------
  |  |  259|  5.71k|} while (0)
  |  |  ------------------
  |  |  |  Branch (259:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1862|  11.4k|      if (MRB_PROC_ENV_P(m)) {
  ------------------
  |  |   72|  5.71k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  ------------------
  |  |  |  |   71|  5.71k|#define MRB_PROC_ENVSET 1024
  |  |  ------------------
  |  |  |  Branch (72:27): [True: 5.71k, False: 0]
  |  |  ------------------
  ------------------
 1863|  5.71k|        ci->mid = MRB_PROC_ENV(m)->mid;
  ------------------
  |  |   73|  5.71k|#define MRB_PROC_ENV(p) (MRB_PROC_ENV_P(p) ? (p)->e.env : NULL)
  |  |  ------------------
  |  |  |  |   72|  5.71k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  5.71k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 5.71k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1864|  5.71k|      }
 1865|       |
 1866|       |      /* prepare stack */
 1867|  11.4k|      if (MRB_PROC_CFUNC_P(m)) {
  ------------------
  |  |   65|  5.71k|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  ------------------
  |  |  |  |   64|  5.71k|#define MRB_PROC_CFUNC_FL 128
  |  |  ------------------
  |  |  |  Branch (65:29): [True: 0, False: 5.71k]
  |  |  ------------------
  ------------------
 1868|      0|        recv = MRB_PROC_CFUNC(m)(mrb, recv);
  ------------------
  |  |   66|      0|#define MRB_PROC_CFUNC(p) (p)->body.func
  ------------------
 1869|      0|        mrb_gc_arena_shrink(mrb, ai);
 1870|      0|        if (mrb->exc) goto L_RAISE;
  ------------------
  |  Branch (1870:13): [True: 0, False: 0]
  ------------------
 1871|       |        /* pop stackpos */
 1872|      0|        ci = cipop(mrb);
 1873|      0|        pc = ci->pc;
 1874|      0|        ci[1].stack[0] = recv;
 1875|      0|        irep = mrb->c->ci->proc->body.irep;
 1876|      0|      }
 1877|  5.71k|      else {
 1878|       |        /* setup environment for calling method */
 1879|  5.71k|        proc = m;
 1880|  5.71k|        irep = m->body.irep;
 1881|  5.71k|        if (!irep) {
  ------------------
  |  Branch (1881:13): [True: 0, False: 5.71k]
  ------------------
 1882|      0|          mrb->c->ci->stack[0] = mrb_nil_value();
 1883|      0|          a = 0;
 1884|      0|          c = OP_R_NORMAL;
  ------------------
  |  |   22|      0|#define OP_R_NORMAL 0
  ------------------
 1885|      0|          goto L_OP_RETURN_BODY;
 1886|      0|        }
 1887|  5.71k|        mrb_int nargs = ci_bidx(ci)+1;
 1888|  5.71k|        if (nargs < irep->nregs) {
  ------------------
  |  Branch (1888:13): [True: 5.71k, False: 0]
  ------------------
 1889|  5.71k|          stack_extend(mrb, irep->nregs);
 1890|  5.71k|          stack_clear(regs+nargs, irep->nregs-nargs);
  ------------------
  |  | 1335|  5.71k|#define regs (mrb->c->ci->stack)
  ------------------
 1891|  5.71k|        }
 1892|  5.71k|        if (MRB_PROC_ENV_P(m)) {
  ------------------
  |  |   72|  5.71k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  ------------------
  |  |  |  |   71|  5.71k|#define MRB_PROC_ENVSET 1024
  |  |  ------------------
  |  |  |  Branch (72:27): [True: 5.71k, False: 0]
  |  |  ------------------
  ------------------
 1893|  5.71k|          regs[0] = MRB_PROC_ENV(m)->stack[0];
  ------------------
  |  | 1335|  5.71k|#define regs (mrb->c->ci->stack)
  ------------------
                        regs[0] = MRB_PROC_ENV(m)->stack[0];
  ------------------
  |  |   73|  5.71k|#define MRB_PROC_ENV(p) (MRB_PROC_ENV_P(p) ? (p)->e.env : NULL)
  |  |  ------------------
  |  |  |  |   72|  5.71k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  5.71k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 5.71k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1894|  5.71k|        }
 1895|  5.71k|        pc = irep->iseq;
 1896|  5.71k|      }
 1897|  5.71k|      pool = irep->pool;
 1898|  5.71k|      syms = irep->syms;
 1899|  5.71k|      JUMP;
  ------------------
  |  | 1282|  5.71k|#define JUMP NEXT
  |  |  ------------------
  |  |  |  | 1281|  5.71k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|  5.71k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|  5.71k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 5.71k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1900|  5.71k|    }
 1901|       |
 1902|  5.71k|    CASE(OP_SUPER, BB) {
  ------------------
  |  | 1280|  5.71k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1903|      0|      mrb_callinfo *ci = mrb->c->ci;
 1904|      0|      mrb_value recv;
 1905|      0|      const struct RProc *p = ci->proc;
 1906|      0|      struct RClass* target_class = CI_TARGET_CLASS(ci);
  ------------------
  |  |  267|      0|#define CI_TARGET_CLASS(ci) (((ci)->u.env && (ci)->u.env->tt == MRB_TT_ENV)? (ci)->u.env->c : (ci)->u.target_class)
  |  |  ------------------
  |  |  |  Branch (267:31): [True: 0, False: 0]
  |  |  |  Branch (267:46): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1907|       |
 1908|      0|      mid = ci->mid;
 1909|      0|      if (MRB_PROC_ENV_P(p) && p->e.env->mid && p->e.env->mid != mid) { /* alias support */
  ------------------
  |  |   72|      0|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  ------------------
  |  |  |  |   71|      0|#define MRB_PROC_ENVSET 1024
  |  |  ------------------
  |  |  |  Branch (72:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1909:32): [True: 0, False: 0]
  |  Branch (1909:49): [True: 0, False: 0]
  ------------------
 1910|      0|        mid = p->e.env->mid;    /* restore old mid */
 1911|      0|      }
 1912|       |
 1913|      0|      if (mid == 0 || !target_class) {
  ------------------
  |  Branch (1913:11): [True: 0, False: 0]
  |  Branch (1913:23): [True: 0, False: 0]
  ------------------
 1914|      0|        RAISE_LIT(mrb, E_NOMETHOD_ERROR, "super called outside of method");
  ------------------
  |  | 1163|      0|#define RAISE_LIT(mrb, c, str)          RAISE_EXC(mrb, mrb_exc_new_lit(mrb, c, str))
  |  |  ------------------
  |  |  |  | 1157|      0|#define RAISE_EXC(mrb, exc) do { \
  |  |  |  | 1158|      0|  mrb_value exc_value = (exc); \
  |  |  |  | 1159|      0|  mrb_exc_set(mrb, exc_value); \
  |  |  |  | 1160|      0|  goto L_RAISE; \
  |  |  |  | 1161|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1161:10): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1915|      0|      }
 1916|      0|      if ((target_class->flags & MRB_FL_CLASS_IS_PREPENDED) || target_class->tt == MRB_TT_MODULE) {
  ------------------
  |  |   63|      0|#define MRB_FL_CLASS_IS_PREPENDED (1 << 19)
  ------------------
  |  Branch (1916:11): [True: 0, False: 0]
  |  Branch (1916:64): [True: 0, False: 0]
  ------------------
 1917|      0|        goto super_typeerror;
 1918|      0|      }
 1919|      0|      recv = regs[0];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1920|      0|      if (!mrb_obj_is_kind_of(mrb, recv, target_class)) {
  ------------------
  |  Branch (1920:11): [True: 0, False: 0]
  ------------------
 1921|      0|      super_typeerror:
 1922|      0|        RAISE_LIT(mrb, E_TYPE_ERROR, "self has wrong type to call super in this context");
  ------------------
  |  | 1163|      0|#define RAISE_LIT(mrb, c, str)          RAISE_EXC(mrb, mrb_exc_new_lit(mrb, c, str))
  |  |  ------------------
  |  |  |  | 1157|      0|#define RAISE_EXC(mrb, exc) do { \
  |  |  |  | 1158|      0|  mrb_value exc_value = (exc); \
  |  |  |  | 1159|      0|  mrb_exc_set(mrb, exc_value); \
  |  |  |  | 1160|      0|  goto L_RAISE; \
  |  |  |  | 1161|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1161:10): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1923|      0|      }
 1924|       |
 1925|      0|      c = b; // arg info
 1926|      0|      regs[a] = recv;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1927|      0|      goto L_SENDB_SYM;
 1928|      0|    }
 1929|       |
 1930|      0|    CASE(OP_ARGARY, BS) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1931|      0|      mrb_int m1 = (b>>11)&0x3f;
 1932|      0|      mrb_int r  = (b>>10)&0x1;
 1933|      0|      mrb_int m2 = (b>>5)&0x1f;
 1934|      0|      mrb_int kd = (b>>4)&0x1;
 1935|      0|      mrb_int lv = (b>>0)&0xf;
 1936|      0|      mrb_value *stack;
 1937|       |
 1938|      0|      if (mrb->c->ci->mid == 0 || CI_TARGET_CLASS(mrb->c->ci) == NULL) {
  ------------------
  |  |  267|      0|#define CI_TARGET_CLASS(ci) (((ci)->u.env && (ci)->u.env->tt == MRB_TT_ENV)? (ci)->u.env->c : (ci)->u.target_class)
  |  |  ------------------
  |  |  |  Branch (267:31): [True: 0, False: 0]
  |  |  |  Branch (267:46): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1938:11): [True: 0, False: 0]
  |  Branch (1938:35): [True: 0, False: 0]
  ------------------
 1939|      0|      L_NOSUPER:
 1940|      0|        RAISE_LIT(mrb, E_NOMETHOD_ERROR, "super called outside of method");
  ------------------
  |  | 1163|      0|#define RAISE_LIT(mrb, c, str)          RAISE_EXC(mrb, mrb_exc_new_lit(mrb, c, str))
  |  |  ------------------
  |  |  |  | 1157|      0|#define RAISE_EXC(mrb, exc) do { \
  |  |  |  | 1158|      0|  mrb_value exc_value = (exc); \
  |  |  |  | 1159|      0|  mrb_exc_set(mrb, exc_value); \
  |  |  |  | 1160|      0|  goto L_RAISE; \
  |  |  |  | 1161|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1161:10): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1941|      0|      }
 1942|      0|      if (lv == 0) stack = regs + 1;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
  |  Branch (1942:11): [True: 0, False: 0]
  ------------------
 1943|      0|      else {
 1944|      0|        struct REnv *e = uvenv(mrb, lv-1);
 1945|      0|        if (!e) goto L_NOSUPER;
  ------------------
  |  Branch (1945:13): [True: 0, False: 0]
  ------------------
 1946|      0|        if (MRB_ENV_LEN(e) <= m1+r+m2+1)
  ------------------
  |  |   27|      0|#define MRB_ENV_LEN(e) ((mrb_int)((e)->flags & 0xff))
  ------------------
  |  Branch (1946:13): [True: 0, False: 0]
  ------------------
 1947|      0|          goto L_NOSUPER;
 1948|      0|        stack = e->stack + 1;
 1949|      0|      }
 1950|      0|      if (r == 0) {
  ------------------
  |  Branch (1950:11): [True: 0, False: 0]
  ------------------
 1951|      0|        regs[a] = mrb_ary_new_from_values(mrb, m1+m2, stack);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1952|      0|      }
 1953|      0|      else {
 1954|      0|        mrb_value *pp = NULL;
 1955|      0|        struct RArray *rest;
 1956|      0|        mrb_int len = 0;
 1957|       |
 1958|      0|        if (mrb_array_p(stack[m1])) {
  ------------------
  |  |  186|      0|#define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1959|      0|          struct RArray *ary = mrb_ary_ptr(stack[m1]);
  ------------------
  |  |   51|      0|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1960|       |
 1961|      0|          pp = ARY_PTR(ary);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
 1962|      0|          len = ARY_LEN(ary);
  ------------------
  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1963|      0|        }
 1964|      0|        regs[a] = mrb_ary_new_capa(mrb, m1+len+m2);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1965|      0|        rest = mrb_ary_ptr(regs[a]);
  ------------------
  |  |   51|      0|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 1966|      0|        if (m1 > 0) {
  ------------------
  |  Branch (1966:13): [True: 0, False: 0]
  ------------------
 1967|      0|          stack_copy(ARY_PTR(rest), stack, m1);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
 1968|      0|        }
 1969|      0|        if (len > 0) {
  ------------------
  |  Branch (1969:13): [True: 0, False: 0]
  ------------------
 1970|      0|          stack_copy(ARY_PTR(rest)+m1, pp, len);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
 1971|      0|        }
 1972|      0|        if (m2 > 0) {
  ------------------
  |  Branch (1972:13): [True: 0, False: 0]
  ------------------
 1973|      0|          stack_copy(ARY_PTR(rest)+m1+len, stack+m1+1, m2);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
 1974|      0|        }
 1975|      0|        ARY_SET_LEN(rest, m1+len+m2);
  ------------------
  |  |   74|      0|#define ARY_SET_LEN(a,n) do {\
  |  |   75|      0|  if (ARY_EMBED_P(a)) {\
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|    mrb_assert((n) <= MRB_ARY_EMBED_LEN_MAX); \
  |  |  ------------------
  |  |  |  |   68|      0|#define mrb_assert(p) ((void)0)
  |  |  ------------------
  |  |   77|      0|    ARY_SET_EMBED_LEN(a,n);\
  |  |  ------------------
  |  |  |  |   66|      0|#define ARY_SET_EMBED_LEN(a,len) ((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|      0|  }\
  |  |   79|      0|  else\
  |  |   80|      0|    (a)->as.heap.len = (n);\
  |  |   81|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (81:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1976|      0|      }
 1977|      0|      if (kd) {
  ------------------
  |  Branch (1977:11): [True: 0, False: 0]
  ------------------
 1978|      0|        regs[a+1] = stack[m1+r+m2];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1979|      0|        regs[a+2] = stack[m1+r+m2+1];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1980|      0|      }
 1981|      0|      else {
 1982|      0|        regs[a+1] = stack[m1+r+m2];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 1983|      0|      }
 1984|      0|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|      0|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 1985|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1986|      0|    }
 1987|       |
 1988|   349k|    CASE(OP_ENTER, W) {
  ------------------
  |  | 1280|   174k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 1989|   349k|      mrb_callinfo *ci = mrb->c->ci;
 1990|   349k|      mrb_int argc = ci->n;
 1991|   349k|      mrb_value *argv = regs+1;
  ------------------
  |  | 1335|   174k|#define regs (mrb->c->ci->stack)
  ------------------
 1992|       |
 1993|   349k|      mrb_int m1 = MRB_ASPEC_REQ(a);
  ------------------
  |  |   56|   174k|#define MRB_ASPEC_REQ(a)          (((a) >> 18) & 0x1f)
  ------------------
 1994|       |
 1995|       |       /* no other args */
 1996|   349k|      if ((a & ~0x7c0001) == 0 && argc < 15 && MRB_PROC_STRICT_P(proc)) {
  ------------------
  |  |   68|  60.6k|#define MRB_PROC_STRICT_P(p) (((p)->flags & MRB_PROC_STRICT) != 0)
  |  |  ------------------
  |  |  |  |   67|  60.6k|#define MRB_PROC_STRICT 256
  |  |  ------------------
  |  |  |  Branch (68:30): [True: 54.5k, False: 6.18k]
  |  |  ------------------
  ------------------
  |  Branch (1996:11): [True: 60.6k, False: 114k]
  |  Branch (1996:35): [True: 60.6k, False: 0]
  ------------------
 1997|  54.5k|        if (argc+(ci->nk==15) != m1) { /* count kdict too */
  ------------------
  |  Branch (1997:13): [True: 11, False: 54.4k]
  ------------------
 1998|     11|          argnum_error(mrb, m1);
 1999|     11|          goto L_RAISE;
 2000|     11|        }
 2001|       |        /* clear local (but non-argument) variables */
 2002|  54.4k|        mrb_int pos = m1+2;     /* self+m1+blk */
 2003|  54.4k|        if (irep->nlocals-pos  > 0) {
  ------------------
  |  Branch (2003:13): [True: 52.0k, False: 2.42k]
  ------------------
 2004|  52.0k|          stack_clear(&regs[pos], irep->nlocals-pos);
  ------------------
  |  | 1335|  52.0k|#define regs (mrb->c->ci->stack)
  ------------------
 2005|  52.0k|        }
 2006|  54.4k|        NEXT;
  ------------------
  |  | 1281|  54.4k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  54.4k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  54.4k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 54.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2007|  54.4k|      }
 2008|       |
 2009|   174k|      mrb_int o  = MRB_ASPEC_OPT(a);
  ------------------
  |  |   57|   174k|#define MRB_ASPEC_OPT(a)          (((a) >> 13) & 0x1f)
  ------------------
 2010|   174k|      mrb_int r  = MRB_ASPEC_REST(a);
  ------------------
  |  |   58|   174k|#define MRB_ASPEC_REST(a)         (((a) >> 12) & 0x1)
  ------------------
 2011|   174k|      mrb_int m2 = MRB_ASPEC_POST(a);
  ------------------
  |  |   59|   174k|#define MRB_ASPEC_POST(a)         (((a) >> 7) & 0x1f)
  ------------------
 2012|   174k|      mrb_int kd = (MRB_ASPEC_KEY(a) > 0 || MRB_ASPEC_KDICT(a))? 1 : 0;
  ------------------
  |  |   60|   174k|#define MRB_ASPEC_KEY(a)          (((a) >> 2) & 0x1f)
  ------------------
                    mrb_int kd = (MRB_ASPEC_KEY(a) > 0 || MRB_ASPEC_KDICT(a))? 1 : 0;
  ------------------
  |  |   61|   120k|#define MRB_ASPEC_KDICT(a)        (((a) >> 1) & 0x1)
  |  |  ------------------
  |  |  |  Branch (61:35): [True: 55.5k, False: 64.7k]
  |  |  ------------------
  ------------------
  |  Branch (2012:21): [True: 54.4k, False: 120k]
  ------------------
 2013|       |      /* unused
 2014|       |      int b  = MRB_ASPEC_BLOCK(a);
 2015|       |      */
 2016|   174k|      mrb_int const len = m1 + o + r + m2;
 2017|       |
 2018|   174k|      mrb_value * const argv0 = argv;
 2019|   174k|      mrb_value blk = regs[ci_bidx(ci)];
  ------------------
  |  | 1335|   174k|#define regs (mrb->c->ci->stack)
  ------------------
 2020|   174k|      mrb_value kdict = mrb_nil_value();
 2021|       |
 2022|       |      /* keyword arguments */
 2023|   174k|      if (ci->nk == 15) {
  ------------------
  |  Branch (2023:11): [True: 29.8k, False: 144k]
  ------------------
 2024|  29.8k|        kdict = regs[mrb_ci_kidx(ci)];
  ------------------
  |  | 1335|  29.8k|#define regs (mrb->c->ci->stack)
  ------------------
 2025|  29.8k|      }
 2026|   174k|      if (!kd) {
  ------------------
  |  Branch (2026:11): [True: 64.7k, False: 110k]
  ------------------
 2027|  64.7k|        if (!mrb_nil_p(kdict) && mrb_hash_size(mrb, kdict) > 0) {
  ------------------
  |  |  174|   129k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  ------------------
  |  Branch (2027:13): [True: 5.99k, False: 58.7k]
  |  Branch (2027:34): [True: 0, False: 5.99k]
  ------------------
 2028|      0|          if (argc < 14) {
  ------------------
  |  Branch (2028:15): [True: 0, False: 0]
  ------------------
 2029|      0|            ci->n++;
 2030|      0|            argc++;    /* include kdict in normal arguments */
 2031|      0|          }
 2032|      0|          else if (argc == 14) {
  ------------------
  |  Branch (2032:20): [True: 0, False: 0]
  ------------------
 2033|       |            /* pack arguments and kdict */
 2034|      0|            regs[1] = ary_new_from_regs(mrb, argc+1, 1);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
                          regs[1] = ary_new_from_regs(mrb, argc+1, 1);
  ------------------
  |  | 1348|      0|#define ary_new_from_regs(mrb, argc, idx) mrb_ary_new_from_values(mrb, (argc), &regs[idx]);
  |  |  ------------------
  |  |  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  |  |  ------------------
  ------------------
 2035|      0|            argc = ci->n = 15;
 2036|      0|          }
 2037|      0|          else {/* argc == 15 */
 2038|       |            /* push kdict to packed arguments */
 2039|      0|            mrb_ary_push(mrb, regs[1], kdict);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2040|      0|          }
 2041|      0|        }
 2042|  64.7k|        kdict = mrb_nil_value();
 2043|  64.7k|        ci->nk = 0;
 2044|  64.7k|      }
 2045|   110k|      else if (MRB_ASPEC_KEY(a) > 0 && !mrb_nil_p(kdict)) {
  ------------------
  |  |   60|   110k|#define MRB_ASPEC_KEY(a)          (((a) >> 2) & 0x1f)
  ------------------
                    else if (MRB_ASPEC_KEY(a) > 0 && !mrb_nil_p(kdict)) {
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  ------------------
  |  Branch (2045:16): [True: 0, False: 110k]
  |  Branch (2045:40): [True: 0, False: 0]
  ------------------
 2046|      0|        kdict = mrb_hash_dup(mrb, kdict);
 2047|      0|      }
 2048|   110k|      else if (!mrb_nil_p(kdict)) {
  ------------------
  |  |  174|   110k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  ------------------
  |  Branch (2048:16): [True: 23.8k, False: 86.2k]
  ------------------
 2049|  23.8k|        mrb_gc_protect(mrb, kdict);
 2050|  23.8k|      }
 2051|       |
 2052|       |      /* arguments is passed with Array */
 2053|   174k|      if (argc == 15) {
  ------------------
  |  Branch (2053:11): [True: 55.0k, False: 119k]
  ------------------
 2054|  55.0k|        struct RArray *ary = mrb_ary_ptr(regs[1]);
  ------------------
  |  |   51|  55.0k|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  55.0k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 2055|  55.0k|        argv = ARY_PTR(ary);
  ------------------
  |  |   71|  55.0k|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|  55.0k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  55.0k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 55.0k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|  55.0k|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
 2056|  55.0k|        argc = (int)ARY_LEN(ary);
  ------------------
  |  |   70|  55.0k|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|  55.0k|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  55.0k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 55.0k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|  55.0k|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|  55.0k|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2057|  55.0k|        mrb_gc_protect(mrb, regs[1]);
  ------------------
  |  | 1335|  55.0k|#define regs (mrb->c->ci->stack)
  ------------------
 2058|  55.0k|      }
 2059|       |
 2060|       |      /* strict argument check */
 2061|   174k|      if (ci->proc && MRB_PROC_STRICT_P(ci->proc)) {
  ------------------
  |  |   68|   120k|#define MRB_PROC_STRICT_P(p) (((p)->flags & MRB_PROC_STRICT) != 0)
  |  |  ------------------
  |  |  |  |   67|   120k|#define MRB_PROC_STRICT 256
  |  |  ------------------
  |  |  |  Branch (68:30): [True: 114k, False: 6.18k]
  |  |  ------------------
  ------------------
  |  Branch (2061:11): [True: 120k, False: 54.4k]
  ------------------
 2062|   114k|        if (argc < m1 + m2 || (r == 0 && argc > len)) {
  ------------------
  |  Branch (2062:13): [True: 0, False: 114k]
  |  Branch (2062:32): [True: 23.1k, False: 90.9k]
  |  Branch (2062:42): [True: 0, False: 23.1k]
  ------------------
 2063|      0|          argnum_error(mrb, m1+m2);
 2064|      0|          goto L_RAISE;
 2065|      0|        }
 2066|   114k|      }
 2067|       |      /* extract first argument array to arguments */
 2068|  60.6k|      else if (len > 1 && argc == 1 && mrb_array_p(argv[0])) {
  ------------------
  |  |  186|      0|#define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2068:16): [True: 0, False: 60.6k]
  |  Branch (2068:27): [True: 0, False: 0]
  ------------------
 2069|      0|        mrb_gc_protect(mrb, argv[0]);
 2070|      0|        argc = (int)RARRAY_LEN(argv[0]);
  ------------------
  |  |   72|      0|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2071|      0|        argv = RARRAY_PTR(argv[0]);
  ------------------
  |  |   73|      0|#define RARRAY_PTR(a) ARY_PTR(RARRAY(a))
  |  |  ------------------
  |  |  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2072|      0|      }
 2073|       |
 2074|       |      /* rest arguments */
 2075|   174k|      mrb_value rest = mrb_nil_value();
 2076|   174k|      if (argc < len) {
  ------------------
  |  Branch (2076:11): [True: 10.5k, False: 164k]
  ------------------
 2077|  10.5k|        mrb_int mlen = m2;
 2078|  10.5k|        if (argc < m1+m2) {
  ------------------
  |  Branch (2078:13): [True: 0, False: 10.5k]
  ------------------
 2079|      0|          mlen = m1 < argc ? argc - m1 : 0;
  ------------------
  |  Branch (2079:18): [True: 0, False: 0]
  ------------------
 2080|      0|        }
 2081|       |
 2082|       |        /* copy mandatory and optional arguments */
 2083|  10.5k|        if (argv0 != argv && argv) {
  ------------------
  |  Branch (2083:13): [True: 5.99k, False: 4.56k]
  |  Branch (2083:30): [True: 5.99k, False: 0]
  ------------------
 2084|  5.99k|          value_move(&regs[1], argv, argc-mlen); /* m1 + o */
  ------------------
  |  | 1335|  5.99k|#define regs (mrb->c->ci->stack)
  ------------------
 2085|  5.99k|        }
 2086|  10.5k|        if (argc < m1) {
  ------------------
  |  Branch (2086:13): [True: 0, False: 10.5k]
  ------------------
 2087|      0|          stack_clear(&regs[argc+1], m1-argc);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2088|      0|        }
 2089|       |        /* copy post mandatory arguments */
 2090|  10.5k|        if (mlen) {
  ------------------
  |  Branch (2090:13): [True: 0, False: 10.5k]
  ------------------
 2091|      0|          value_move(&regs[len-m2+1], &argv[argc-mlen], mlen);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2092|      0|        }
 2093|  10.5k|        if (mlen < m2) {
  ------------------
  |  Branch (2093:13): [True: 0, False: 10.5k]
  ------------------
 2094|      0|          stack_clear(&regs[len-m2+mlen+1], m2-mlen);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2095|      0|        }
 2096|       |        /* initialize rest arguments with empty Array */
 2097|  10.5k|        if (r) {
  ------------------
  |  Branch (2097:13): [True: 2.51k, False: 8.04k]
  ------------------
 2098|  2.51k|          rest = mrb_ary_new_capa(mrb, 0);
 2099|  2.51k|          regs[m1+o+1] = rest;
  ------------------
  |  | 1335|  2.51k|#define regs (mrb->c->ci->stack)
  ------------------
 2100|  2.51k|        }
 2101|       |        /* skip initializer of passed arguments */
 2102|  10.5k|        if (o > 0 && argc > m1+m2)
  ------------------
  |  Branch (2102:13): [True: 8.04k, False: 2.51k]
  |  Branch (2102:22): [True: 6.70k, False: 1.33k]
  ------------------
 2103|  6.70k|          pc += (argc - m1 - m2)*3;
 2104|  10.5k|      }
 2105|   164k|      else {
 2106|   164k|        mrb_int rnum = 0;
 2107|   164k|        if (argv0 != argv) {
  ------------------
  |  Branch (2107:13): [True: 49.0k, False: 115k]
  ------------------
 2108|  49.0k|          mrb_gc_protect(mrb, blk);
 2109|  49.0k|          value_move(&regs[1], argv, m1+o);
  ------------------
  |  | 1335|  49.0k|#define regs (mrb->c->ci->stack)
  ------------------
 2110|  49.0k|        }
 2111|   164k|        if (r) {
  ------------------
  |  Branch (2111:13): [True: 88.4k, False: 75.8k]
  ------------------
 2112|  88.4k|          rnum = argc-m1-o-m2;
 2113|  88.4k|          rest = mrb_ary_new_from_values(mrb, rnum, argv+m1+o);
 2114|  88.4k|          regs[m1+o+1] = rest;
  ------------------
  |  | 1335|  88.4k|#define regs (mrb->c->ci->stack)
  ------------------
 2115|  88.4k|        }
 2116|   164k|        if (m2 > 0 && argc-m2 > m1) {
  ------------------
  |  Branch (2116:13): [True: 0, False: 164k]
  |  Branch (2116:23): [True: 0, False: 0]
  ------------------
 2117|      0|          value_move(&regs[m1+o+r+1], &argv[m1+o+rnum], m2);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2118|      0|        }
 2119|   164k|        pc += o*3;
 2120|   164k|      }
 2121|       |
 2122|       |      /* need to be update blk first to protect blk from GC */
 2123|   174k|      mrb_int const kw_pos = len + kd;    /* where kwhash should be */
 2124|   174k|      mrb_int const blk_pos = kw_pos + 1; /* where block should be */
 2125|   174k|      regs[blk_pos] = blk;                /* move block */
  ------------------
  |  | 1335|   174k|#define regs (mrb->c->ci->stack)
  ------------------
 2126|   174k|      if (kd) {
  ------------------
  |  Branch (2126:11): [True: 55.5k, False: 119k]
  ------------------
 2127|  55.5k|        if (mrb_nil_p(kdict)) {
  ------------------
  |  |  174|  55.5k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 31.7k, False: 23.8k]
  |  |  ------------------
  ------------------
 2128|  31.7k|          kdict = mrb_hash_new_capa(mrb, 0);
 2129|  31.7k|        }
 2130|  55.5k|        regs[kw_pos] = kdict;             /* set kwhash */
  ------------------
  |  | 1335|  55.5k|#define regs (mrb->c->ci->stack)
  ------------------
 2131|  55.5k|        ci->nk = 15;
 2132|  55.5k|      }
 2133|       |
 2134|       |      /* format arguments for generated code */
 2135|   174k|      mrb->c->ci->n = (uint8_t)len;
 2136|       |
 2137|       |      /* clear local (but non-argument) variables */
 2138|   174k|      if (irep->nlocals-blk_pos-1 > 0) {
  ------------------
  |  Branch (2138:11): [True: 25.4k, False: 149k]
  ------------------
 2139|  25.4k|        stack_clear(&regs[blk_pos+1], irep->nlocals-blk_pos-1);
  ------------------
  |  | 1335|  25.4k|#define regs (mrb->c->ci->stack)
  ------------------
 2140|  25.4k|      }
 2141|   174k|      JUMP;
  ------------------
  |  | 1282|   174k|#define JUMP NEXT
  |  |  ------------------
  |  |  |  | 1281|   174k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|   174k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|   174k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 174k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2142|   174k|    }
 2143|       |
 2144|   174k|    CASE(OP_KARG, BB) {
  ------------------
  |  | 1280|   174k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2145|      0|      mrb_value k = mrb_symbol_value(syms[b]);
 2146|      0|      mrb_int kidx = mrb_ci_kidx(mrb->c->ci);
 2147|      0|      mrb_value kdict, v;
 2148|       |
 2149|      0|      if (kidx < 0 || !mrb_hash_p(kdict=regs[kidx]) || !mrb_hash_key_p(mrb, kdict, k)) {
  ------------------
  |  |  188|      0|#define mrb_hash_p(o) WORDBOX_OBJ_TYPE_P(o, HASH)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2149:11): [True: 0, False: 0]
  |  Branch (2149:56): [True: 0, False: 0]
  ------------------
 2150|      0|        RAISE_FORMAT(mrb, E_ARGUMENT_ERROR, "missing keyword: %v", k);
  ------------------
  |  | 1164|      0|#define RAISE_FORMAT(mrb, c, fmt, ...)  RAISE_EXC(mrb, mrb_exc_new_str(mrb, c, mrb_format(mrb, fmt, __VA_ARGS__)))
  |  |  ------------------
  |  |  |  | 1157|      0|#define RAISE_EXC(mrb, exc) do { \
  |  |  |  | 1158|      0|  mrb_value exc_value = (exc); \
  |  |  |  | 1159|      0|  mrb_exc_set(mrb, exc_value); \
  |  |  |  | 1160|      0|  goto L_RAISE; \
  |  |  |  | 1161|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1161:10): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2151|      0|      }
 2152|      0|      v = mrb_hash_get(mrb, kdict, k);
 2153|      0|      regs[a] = v;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2154|      0|      mrb_hash_delete_key(mrb, kdict, k);
 2155|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2156|      0|    }
 2157|       |
 2158|      0|    CASE(OP_KEY_P, BB) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2159|      0|      mrb_value k = mrb_symbol_value(syms[b]);
 2160|      0|      mrb_int kidx = mrb_ci_kidx(mrb->c->ci);
 2161|      0|      mrb_value kdict;
 2162|      0|      mrb_bool key_p = FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
 2163|       |
 2164|      0|      if (kidx >= 0 && mrb_hash_p(kdict=regs[kidx])) {
  ------------------
  |  |  188|      0|#define mrb_hash_p(o) WORDBOX_OBJ_TYPE_P(o, HASH)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2164:11): [True: 0, False: 0]
  ------------------
 2165|      0|        key_p = mrb_hash_key_p(mrb, kdict, k);
 2166|      0|      }
 2167|      0|      regs[a] = mrb_bool_value(key_p);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2168|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2169|      0|    }
 2170|       |
 2171|      0|    CASE(OP_KEYEND, Z) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2172|      0|      mrb_int kidx = mrb_ci_kidx(mrb->c->ci);
 2173|      0|      mrb_value kdict;
 2174|       |
 2175|      0|      if (kidx >= 0 && mrb_hash_p(kdict=regs[kidx]) && !mrb_hash_empty_p(mrb, kdict)) {
  ------------------
  |  |  188|      0|#define mrb_hash_p(o) WORDBOX_OBJ_TYPE_P(o, HASH)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2175:11): [True: 0, False: 0]
  |  Branch (2175:56): [True: 0, False: 0]
  ------------------
 2176|      0|        mrb_value keys = mrb_hash_keys(mrb, kdict);
 2177|      0|        mrb_value key1 = RARRAY_PTR(keys)[0];
  ------------------
  |  |   73|      0|#define RARRAY_PTR(a) ARY_PTR(RARRAY(a))
  |  |  ------------------
  |  |  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  |  |  ------------------
  |  |  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2178|      0|        RAISE_FORMAT(mrb, E_ARGUMENT_ERROR, "unknown keyword: %v", key1);
  ------------------
  |  | 1164|      0|#define RAISE_FORMAT(mrb, c, fmt, ...)  RAISE_EXC(mrb, mrb_exc_new_str(mrb, c, mrb_format(mrb, fmt, __VA_ARGS__)))
  |  |  ------------------
  |  |  |  | 1157|      0|#define RAISE_EXC(mrb, exc) do { \
  |  |  |  | 1158|      0|  mrb_value exc_value = (exc); \
  |  |  |  | 1159|      0|  mrb_exc_set(mrb, exc_value); \
  |  |  |  | 1160|      0|  goto L_RAISE; \
  |  |  |  | 1161|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1161:10): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2179|      0|      }
 2180|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2181|      0|    }
 2182|       |
 2183|      0|    CASE(OP_BREAK, B) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2184|      0|      c = OP_R_BREAK;
  ------------------
  |  |   23|      0|#define OP_R_BREAK  1
  ------------------
 2185|      0|      goto L_RETURN;
 2186|      0|    }
 2187|      0|    CASE(OP_RETURN_BLK, B) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2188|      0|      c = OP_R_RETURN;
  ------------------
  |  |   24|      0|#define OP_R_RETURN 2
  ------------------
 2189|      0|      goto L_RETURN;
 2190|      0|    }
 2191|   438k|    CASE(OP_RETURN, B)
  ------------------
  |  | 1280|   219k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2192|   438k|    c = OP_R_NORMAL;
  ------------------
  |  |   22|   219k|#define OP_R_NORMAL 0
  ------------------
 2193|   438k|    L_RETURN:
 2194|   219k|    {
 2195|   219k|      mrb_callinfo *ci;
 2196|       |
 2197|   219k|      ci = mrb->c->ci;
 2198|   219k|      if (mrb->exc) {
  ------------------
  |  Branch (2198:11): [True: 0, False: 219k]
  ------------------
 2199|    148|      L_RAISE:
 2200|    148|        ci = mrb->c->ci;
 2201|    416|        while ((ch = catch_handler_find(mrb, ci, pc, MRB_CATCH_FILTER_ALL)) == NULL) {
  ------------------
  |  | 1099|    416|#define MRB_CATCH_FILTER_ALL    (MRB_CATCH_FILTER_RESCUE | MRB_CATCH_FILTER_ENSURE)
  |  |  ------------------
  |  |  |  | 1097|    416|#define MRB_CATCH_FILTER_RESCUE (UINT32_C(1) << MRB_CATCH_RESCUE)
  |  |  ------------------
  |  |               #define MRB_CATCH_FILTER_ALL    (MRB_CATCH_FILTER_RESCUE | MRB_CATCH_FILTER_ENSURE)
  |  |  ------------------
  |  |  |  | 1098|    416|#define MRB_CATCH_FILTER_ENSURE (UINT32_C(1) << MRB_CATCH_ENSURE)
  |  |  ------------------
  ------------------
  |  Branch (2201:16): [True: 416, False: 0]
  ------------------
 2202|    416|          if (ci != mrb->c->cibase) {
  ------------------
  |  Branch (2202:15): [True: 268, False: 148]
  ------------------
 2203|    268|            ci = cipop(mrb);
 2204|    268|            if (ci[1].cci == CINFO_SKIP && prev_jmp) {
  ------------------
  |  |  335|    536|#define CINFO_SKIP    1 // ignited mruby VM from C
  ------------------
  |  Branch (2204:17): [True: 0, False: 268]
  |  Branch (2204:44): [True: 0, False: 0]
  ------------------
 2205|      0|              mrb->jmp = prev_jmp;
 2206|      0|              MRB_THROW(prev_jmp);
  ------------------
  |  |   48|      0|#define MRB_THROW(buf) MRB_LONGJMP((buf)->impl, 1);
  |  |  ------------------
  |  |  |  |   41|      0|#define MRB_LONGJMP longjmp
  |  |  ------------------
  ------------------
 2207|      0|            }
 2208|    268|            pc = ci[0].pc;
 2209|    268|          }
 2210|    148|          else if (mrb->c == mrb->root_c) {
  ------------------
  |  Branch (2210:20): [True: 148, False: 0]
  ------------------
 2211|    148|            mrb->c->ci->stack = mrb->c->stbase;
 2212|    148|            goto L_STOP;
 2213|    148|          }
 2214|      0|          else {
 2215|      0|            struct mrb_context *c = mrb->c;
 2216|       |
 2217|      0|            c->status = MRB_FIBER_TERMINATED;
 2218|      0|            mrb->c = c->prev;
 2219|      0|            if (!mrb->c) mrb->c = mrb->root_c;
  ------------------
  |  Branch (2219:17): [True: 0, False: 0]
  ------------------
 2220|      0|            else c->prev = NULL;
 2221|      0|            goto L_RAISE;
 2222|      0|          }
 2223|    416|        }
 2224|       |
 2225|      0|        if (FALSE) {
  ------------------
  |  |   51|      0|#  define FALSE 0
  |  |  ------------------
  |  |  |  Branch (51:17): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2226|      0|        L_CATCH_TAGGED_BREAK: /* from THROW_TAGGED_BREAK() or UNWIND_ENSURE() */
 2227|      0|          ci = mrb->c->ci;
 2228|      0|        }
 2229|      0|        proc = ci->proc;
 2230|      0|        irep = proc->body.irep;
 2231|      0|        pool = irep->pool;
 2232|      0|        syms = irep->syms;
 2233|      0|        stack_extend(mrb, irep->nregs);
 2234|      0|        pc = irep->iseq + mrb_irep_catch_handler_unpack(ch->target);
  ------------------
  |  |  124|      0|#define mrb_irep_catch_handler_unpack(v)    bin_to_uint32(v)
  ------------------
 2235|      0|      }
 2236|   219k|      else {
 2237|   219k|        mrb_int acc;
 2238|   219k|        mrb_value v;
 2239|       |
 2240|   219k|        ci = mrb->c->ci;
 2241|   219k|        v = regs[a];
  ------------------
  |  | 1335|   219k|#define regs (mrb->c->ci->stack)
  ------------------
 2242|   219k|        mrb_gc_protect(mrb, v);
 2243|   219k|        switch (c) {
 2244|      0|        case OP_R_RETURN:
  ------------------
  |  |   24|      0|#define OP_R_RETURN 2
  ------------------
  |  Branch (2244:9): [True: 0, False: 219k]
  ------------------
 2245|       |          /* Fall through to OP_R_NORMAL otherwise */
 2246|      0|          if (ci->cci == CINFO_NONE && MRB_PROC_ENV_P(proc) && !MRB_PROC_STRICT_P(proc)) {
  ------------------
  |  |  334|      0|#define CINFO_NONE    0 // called method from mruby VM (without C functions)
  ------------------
                        if (ci->cci == CINFO_NONE && MRB_PROC_ENV_P(proc) && !MRB_PROC_STRICT_P(proc)) {
  ------------------
  |  |   72|      0|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  ------------------
  |  |  |  |   71|      0|#define MRB_PROC_ENVSET 1024
  |  |  ------------------
  |  |  |  Branch (72:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                        if (ci->cci == CINFO_NONE && MRB_PROC_ENV_P(proc) && !MRB_PROC_STRICT_P(proc)) {
  ------------------
  |  |   68|      0|#define MRB_PROC_STRICT_P(p) (((p)->flags & MRB_PROC_STRICT) != 0)
  |  |  ------------------
  |  |  |  |   67|      0|#define MRB_PROC_STRICT 256
  |  |  ------------------
  ------------------
  |  Branch (2246:15): [True: 0, False: 0]
  |  Branch (2246:64): [True: 0, False: 0]
  ------------------
 2247|      0|            const struct RProc *dst;
 2248|      0|            mrb_callinfo *cibase;
 2249|      0|            cibase = mrb->c->cibase;
 2250|      0|            dst = top_proc(mrb, proc);
 2251|       |
 2252|      0|            if (MRB_PROC_ENV_P(dst)) {
  ------------------
  |  |   72|      0|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  ------------------
  |  |  |  |   71|      0|#define MRB_PROC_ENVSET 1024
  |  |  ------------------
  |  |  |  Branch (72:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2253|      0|              struct REnv *e = MRB_PROC_ENV(dst);
  ------------------
  |  |   73|      0|#define MRB_PROC_ENV(p) (MRB_PROC_ENV_P(p) ? (p)->e.env : NULL)
  |  |  ------------------
  |  |  |  |   72|      0|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2254|       |
 2255|      0|              if (!MRB_ENV_ONSTACK_P(e) || (e->cxt && e->cxt != mrb->c)) {
  ------------------
  |  |   30|      0|#define MRB_ENV_ONSTACK_P(e) (((e)->flags & MRB_ENV_CLOSED) == 0)
  |  |  ------------------
  |  |  |  |   28|      0|#define MRB_ENV_CLOSED (1<<20)
  |  |  ------------------
  ------------------
  |  Branch (2255:19): [True: 0, False: 0]
  |  Branch (2255:45): [True: 0, False: 0]
  |  Branch (2255:55): [True: 0, False: 0]
  ------------------
 2256|      0|                localjump_error(mrb, LOCALJUMP_ERROR_RETURN);
 2257|      0|                goto L_RAISE;
 2258|      0|              }
 2259|      0|            }
 2260|       |            /* check jump destination */
 2261|      0|            while (cibase <= ci && ci->proc != dst) {
  ------------------
  |  Branch (2261:20): [True: 0, False: 0]
  |  Branch (2261:36): [True: 0, False: 0]
  ------------------
 2262|      0|              if (ci->cci > CINFO_NONE) { /* jump cross C boundary */
  ------------------
  |  |  334|      0|#define CINFO_NONE    0 // called method from mruby VM (without C functions)
  ------------------
  |  Branch (2262:19): [True: 0, False: 0]
  ------------------
 2263|      0|                localjump_error(mrb, LOCALJUMP_ERROR_RETURN);
 2264|      0|                goto L_RAISE;
 2265|      0|              }
 2266|      0|              ci--;
 2267|      0|            }
 2268|      0|            if (ci <= cibase) { /* no jump destination */
  ------------------
  |  Branch (2268:17): [True: 0, False: 0]
  ------------------
 2269|      0|              localjump_error(mrb, LOCALJUMP_ERROR_RETURN);
 2270|      0|              goto L_RAISE;
 2271|      0|            }
 2272|      0|            ci = mrb->c->ci;
 2273|      0|            while (cibase <= ci && ci->proc != dst) {
  ------------------
  |  Branch (2273:20): [True: 0, False: 0]
  |  Branch (2273:36): [True: 0, False: 0]
  ------------------
 2274|      0|              CHECKPOINT_RESTORE(RBREAK_TAG_RETURN_BLOCK) {
  ------------------
  |  | 1237|      0|  do { \
  |  | 1238|      0|    if (FALSE) { \
  |  |  ------------------
  |  |  |  |   51|      0|#  define FALSE 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:17): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1239|      0|      CHECKPOINT_LABEL_MAKE(tag): \
  |  |  ------------------
  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  ------------------
  |  | 1240|      0|      do {
  ------------------
 2275|      0|                cibase = mrb->c->cibase;
 2276|      0|                dst = top_proc(mrb, proc);
 2277|      0|              }
 2278|      0|              CHECKPOINT_MAIN(RBREAK_TAG_RETURN_BLOCK) {
  ------------------
  |  | 1243|      0|      } while (0); \
  |  |  ------------------
  |  |  |  Branch (1243:16): [Folded - Ignored]
  |  |  ------------------
  |  | 1244|      0|    } \
  |  | 1245|      0|    do {
  ------------------
 2279|      0|                UNWIND_ENSURE(mrb, ci, pc, RBREAK_TAG_RETURN_BLOCK, proc, v);
  ------------------
  |  | 1211|      0|  do { \
  |  | 1212|      0|    ch = catch_handler_find(mrb, ci, pc, MRB_CATCH_FILTER_ENSURE); \
  |  |  ------------------
  |  |  |  | 1098|      0|#define MRB_CATCH_FILTER_ENSURE (UINT32_C(1) << MRB_CATCH_ENSURE)
  |  |  ------------------
  |  | 1213|      0|    if (ch) { \
  |  |  ------------------
  |  |  |  Branch (1213:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1214|      0|      THROW_TAGGED_BREAK(mrb, tag, proc, val); \
  |  |  ------------------
  |  |  |  | 1205|      0|  do { \
  |  |  |  | 1206|      0|    prepare_tagged_break(mrb, tag, proc, val); \
  |  |  |  | 1207|      0|    goto L_CATCH_TAGGED_BREAK; \
  |  |  |  | 1208|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1208:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1215|      0|    } \
  |  | 1216|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1216:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2280|      0|              }
 2281|      0|              CHECKPOINT_END(RBREAK_TAG_RETURN_BLOCK);
  ------------------
  |  | 1248|      0|    } while (0); \
  |  |  ------------------
  |  |  |  Branch (1248:14): [Folded - Ignored]
  |  |  ------------------
  |  | 1249|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1249:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2282|      0|              ci = cipop(mrb);
 2283|      0|              pc = ci->pc;
 2284|      0|            }
 2285|      0|            proc = ci->proc;
 2286|      0|            mrb->exc = NULL; /* clear break object */
 2287|      0|            break;
 2288|      0|          }
 2289|       |          /* fallthrough */
 2290|   219k|        case OP_R_NORMAL:
  ------------------
  |  |   22|   219k|#define OP_R_NORMAL 0
  ------------------
  |  Branch (2290:9): [True: 219k, False: 0]
  ------------------
 2291|   219k|        NORMAL_RETURN:
 2292|   219k|          if (ci == mrb->c->cibase) {
  ------------------
  |  Branch (2292:15): [True: 12.6k, False: 206k]
  ------------------
 2293|  12.6k|            struct mrb_context *c;
 2294|  12.6k|            c = mrb->c;
 2295|       |
 2296|  12.6k|            if (!c->prev) {
  ------------------
  |  Branch (2296:17): [True: 12.6k, False: 0]
  ------------------
 2297|  12.6k|              if (c != mrb->root_c) {
  ------------------
  |  Branch (2297:19): [True: 0, False: 12.6k]
  ------------------
 2298|       |                /* fiber termination should transfer to root */
 2299|      0|                c->prev = mrb->root_c;
 2300|      0|              }
 2301|  12.6k|              else { /* toplevel return */
 2302|  12.6k|                regs[irep->nlocals] = v;
  ------------------
  |  | 1335|  12.6k|#define regs (mrb->c->ci->stack)
  ------------------
 2303|  12.6k|                goto CHECKPOINT_LABEL_MAKE(RBREAK_TAG_STOP);
 2304|  12.6k|              }
 2305|  12.6k|            }
 2306|      0|            else if (!c->vmexec && c->prev->ci == c->prev->cibase) {
  ------------------
  |  Branch (2306:22): [True: 0, False: 0]
  |  Branch (2306:36): [True: 0, False: 0]
  ------------------
 2307|      0|              RAISE_LIT(mrb, E_FIBER_ERROR, "double resume");
  ------------------
  |  | 1163|      0|#define RAISE_LIT(mrb, c, str)          RAISE_EXC(mrb, mrb_exc_new_lit(mrb, c, str))
  |  |  ------------------
  |  |  |  | 1157|      0|#define RAISE_EXC(mrb, exc) do { \
  |  |  |  | 1158|      0|  mrb_value exc_value = (exc); \
  |  |  |  | 1159|      0|  mrb_exc_set(mrb, exc_value); \
  |  |  |  | 1160|      0|  goto L_RAISE; \
  |  |  |  | 1161|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1161:10): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2308|      0|            }
 2309|      0|            CHECKPOINT_RESTORE(RBREAK_TAG_RETURN_TOPLEVEL) {
  ------------------
  |  | 1237|      0|  do { \
  |  | 1238|      0|    if (FALSE) { \
  |  |  ------------------
  |  |  |  |   51|      0|#  define FALSE 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:17): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1239|      0|      CHECKPOINT_LABEL_MAKE(tag): \
  |  |  ------------------
  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  ------------------
  |  | 1240|      0|      do {
  ------------------
 2310|      0|              c = mrb->c;
 2311|      0|            }
 2312|      0|            CHECKPOINT_MAIN(RBREAK_TAG_RETURN_TOPLEVEL) {
  ------------------
  |  | 1243|      0|      } while (0); \
  |  |  ------------------
  |  |  |  Branch (1243:16): [Folded - Ignored]
  |  |  ------------------
  |  | 1244|      0|    } \
  |  | 1245|      0|    do {
  ------------------
 2313|      0|              UNWIND_ENSURE(mrb, ci, pc, RBREAK_TAG_RETURN_TOPLEVEL, proc, v);
  ------------------
  |  | 1211|      0|  do { \
  |  | 1212|      0|    ch = catch_handler_find(mrb, ci, pc, MRB_CATCH_FILTER_ENSURE); \
  |  |  ------------------
  |  |  |  | 1098|      0|#define MRB_CATCH_FILTER_ENSURE (UINT32_C(1) << MRB_CATCH_ENSURE)
  |  |  ------------------
  |  | 1213|      0|    if (ch) { \
  |  |  ------------------
  |  |  |  Branch (1213:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1214|      0|      THROW_TAGGED_BREAK(mrb, tag, proc, val); \
  |  |  ------------------
  |  |  |  | 1205|      0|  do { \
  |  |  |  | 1206|      0|    prepare_tagged_break(mrb, tag, proc, val); \
  |  |  |  | 1207|      0|    goto L_CATCH_TAGGED_BREAK; \
  |  |  |  | 1208|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1208:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1215|      0|    } \
  |  | 1216|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1216:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2314|      0|            }
 2315|      0|            CHECKPOINT_END(RBREAK_TAG_RETURN_TOPLEVEL);
  ------------------
  |  | 1248|      0|    } while (0); \
  |  |  ------------------
  |  |  |  Branch (1248:14): [Folded - Ignored]
  |  |  ------------------
  |  | 1249|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1249:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2316|       |            /* automatic yield at the end */
 2317|      0|            c->status = MRB_FIBER_TERMINATED;
 2318|      0|            mrb->c = c->prev;
 2319|      0|            mrb->c->status = MRB_FIBER_RUNNING;
 2320|      0|            c->prev = NULL;
 2321|      0|            if (c->vmexec) {
  ------------------
  |  Branch (2321:17): [True: 0, False: 0]
  ------------------
 2322|      0|              mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|      0|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2323|      0|              c->vmexec = FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
 2324|      0|              mrb->jmp = prev_jmp;
 2325|      0|              return v;
 2326|      0|            }
 2327|      0|            ci = mrb->c->ci;
 2328|      0|          }
 2329|   206k|          CHECKPOINT_RESTORE(RBREAK_TAG_RETURN) {
  ------------------
  |  | 1237|   206k|  do { \
  |  | 1238|   206k|    if (FALSE) { \
  |  |  ------------------
  |  |  |  |   51|   206k|#  define FALSE 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:17): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1239|      0|      CHECKPOINT_LABEL_MAKE(tag): \
  |  |  ------------------
  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  ------------------
  |  | 1240|      0|      do {
  ------------------
 2330|       |            /* do nothing */
 2331|      0|          }
 2332|   413k|          CHECKPOINT_MAIN(RBREAK_TAG_RETURN) {
  ------------------
  |  | 1243|      0|      } while (0); \
  |  |  ------------------
  |  |  |  Branch (1243:16): [Folded - Ignored]
  |  |  ------------------
  |  | 1244|      0|    } \
  |  | 1245|   206k|    do {
  ------------------
 2333|   413k|            UNWIND_ENSURE(mrb, ci, pc, RBREAK_TAG_RETURN, proc, v);
  ------------------
  |  | 1211|   206k|  do { \
  |  | 1212|   206k|    ch = catch_handler_find(mrb, ci, pc, MRB_CATCH_FILTER_ENSURE); \
  |  |  ------------------
  |  |  |  | 1098|   206k|#define MRB_CATCH_FILTER_ENSURE (UINT32_C(1) << MRB_CATCH_ENSURE)
  |  |  ------------------
  |  | 1213|   206k|    if (ch) { \
  |  |  ------------------
  |  |  |  Branch (1213:9): [True: 0, False: 206k]
  |  |  ------------------
  |  | 1214|      0|      THROW_TAGGED_BREAK(mrb, tag, proc, val); \
  |  |  ------------------
  |  |  |  | 1205|      0|  do { \
  |  |  |  | 1206|      0|    prepare_tagged_break(mrb, tag, proc, val); \
  |  |  |  | 1207|      0|    goto L_CATCH_TAGGED_BREAK; \
  |  |  |  | 1208|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1208:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1215|      0|    } \
  |  | 1216|   206k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1216:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2334|   413k|          }
 2335|   413k|          CHECKPOINT_END(RBREAK_TAG_RETURN);
  ------------------
  |  | 1248|   206k|    } while (0); \
  |  |  ------------------
  |  |  |  Branch (1248:14): [Folded - Ignored]
  |  |  ------------------
  |  | 1249|   206k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1249:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2336|   206k|          mrb->exc = NULL; /* clear break object */
 2337|   206k|          break;
 2338|      0|        case OP_R_BREAK:
  ------------------
  |  |   23|      0|#define OP_R_BREAK  1
  ------------------
  |  Branch (2338:9): [True: 0, False: 219k]
  ------------------
 2339|      0|          if (MRB_PROC_STRICT_P(proc)) goto NORMAL_RETURN;
  ------------------
  |  |   68|      0|#define MRB_PROC_STRICT_P(p) (((p)->flags & MRB_PROC_STRICT) != 0)
  |  |  ------------------
  |  |  |  |   67|      0|#define MRB_PROC_STRICT 256
  |  |  ------------------
  |  |  |  Branch (68:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2340|      0|          if (MRB_PROC_ORPHAN_P(proc) || !MRB_PROC_ENV_P(proc) || !MRB_ENV_ONSTACK_P(MRB_PROC_ENV(proc))) {
  ------------------
  |  |   70|      0|#define MRB_PROC_ORPHAN_P(p) (((p)->flags & MRB_PROC_ORPHAN) != 0)
  |  |  ------------------
  |  |  |  |   69|      0|#define MRB_PROC_ORPHAN 512
  |  |  ------------------
  |  |  |  Branch (70:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                        if (MRB_PROC_ORPHAN_P(proc) || !MRB_PROC_ENV_P(proc) || !MRB_ENV_ONSTACK_P(MRB_PROC_ENV(proc))) {
  ------------------
  |  |   72|      0|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  ------------------
  |  |  |  |   71|      0|#define MRB_PROC_ENVSET 1024
  |  |  ------------------
  ------------------
                        if (MRB_PROC_ORPHAN_P(proc) || !MRB_PROC_ENV_P(proc) || !MRB_ENV_ONSTACK_P(MRB_PROC_ENV(proc))) {
  ------------------
  |  |   30|      0|#define MRB_ENV_ONSTACK_P(e) (((e)->flags & MRB_ENV_CLOSED) == 0)
  |  |  ------------------
  |  |  |  |   28|      0|#define MRB_ENV_CLOSED (1<<20)
  |  |  ------------------
  |  |  |  Branch (30:33): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2340:42): [True: 0, False: 0]
  |  Branch (2340:67): [True: 0, False: 0]
  ------------------
 2341|      0|          L_BREAK_ERROR:
 2342|      0|            RAISE_LIT(mrb, E_LOCALJUMP_ERROR, "break from proc-closure");
  ------------------
  |  | 1163|      0|#define RAISE_LIT(mrb, c, str)          RAISE_EXC(mrb, mrb_exc_new_lit(mrb, c, str))
  |  |  ------------------
  |  |  |  | 1157|      0|#define RAISE_EXC(mrb, exc) do { \
  |  |  |  | 1158|      0|  mrb_value exc_value = (exc); \
  |  |  |  | 1159|      0|  mrb_exc_set(mrb, exc_value); \
  |  |  |  | 1160|      0|  goto L_RAISE; \
  |  |  |  | 1161|      0|} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1161:10): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2343|      0|          }
 2344|      0|          else {
 2345|      0|            struct REnv *e = MRB_PROC_ENV(proc);
  ------------------
  |  |   73|      0|#define MRB_PROC_ENV(p) (MRB_PROC_ENV_P(p) ? (p)->e.env : NULL)
  |  |  ------------------
  |  |  |  |   72|      0|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2346|       |
 2347|      0|            if (e->cxt != mrb->c) {
  ------------------
  |  Branch (2347:17): [True: 0, False: 0]
  ------------------
 2348|      0|              goto L_BREAK_ERROR;
 2349|      0|            }
 2350|      0|          }
 2351|      0|          CHECKPOINT_RESTORE(RBREAK_TAG_BREAK) {
  ------------------
  |  | 1237|      0|  do { \
  |  | 1238|      0|    if (FALSE) { \
  |  |  ------------------
  |  |  |  |   51|      0|#  define FALSE 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:17): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1239|      0|      CHECKPOINT_LABEL_MAKE(tag): \
  |  |  ------------------
  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  ------------------
  |  | 1240|      0|      do {
  ------------------
 2352|       |            /* do nothing */
 2353|      0|          }
 2354|      0|          CHECKPOINT_MAIN(RBREAK_TAG_BREAK) {
  ------------------
  |  | 1243|      0|      } while (0); \
  |  |  ------------------
  |  |  |  Branch (1243:16): [Folded - Ignored]
  |  |  ------------------
  |  | 1244|      0|    } \
  |  | 1245|      0|    do {
  ------------------
 2355|      0|            UNWIND_ENSURE(mrb, ci, pc, RBREAK_TAG_BREAK, proc, v);
  ------------------
  |  | 1211|      0|  do { \
  |  | 1212|      0|    ch = catch_handler_find(mrb, ci, pc, MRB_CATCH_FILTER_ENSURE); \
  |  |  ------------------
  |  |  |  | 1098|      0|#define MRB_CATCH_FILTER_ENSURE (UINT32_C(1) << MRB_CATCH_ENSURE)
  |  |  ------------------
  |  | 1213|      0|    if (ch) { \
  |  |  ------------------
  |  |  |  Branch (1213:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1214|      0|      THROW_TAGGED_BREAK(mrb, tag, proc, val); \
  |  |  ------------------
  |  |  |  | 1205|      0|  do { \
  |  |  |  | 1206|      0|    prepare_tagged_break(mrb, tag, proc, val); \
  |  |  |  | 1207|      0|    goto L_CATCH_TAGGED_BREAK; \
  |  |  |  | 1208|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1208:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1215|      0|    } \
  |  | 1216|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1216:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2356|      0|          }
 2357|      0|          CHECKPOINT_END(RBREAK_TAG_BREAK);
  ------------------
  |  | 1248|      0|    } while (0); \
  |  |  ------------------
  |  |  |  Branch (1248:14): [Folded - Ignored]
  |  |  ------------------
  |  | 1249|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1249:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2358|       |          /* break from fiber block */
 2359|      0|          if (ci == mrb->c->cibase && ci->pc) {
  ------------------
  |  Branch (2359:15): [True: 0, False: 0]
  |  Branch (2359:39): [True: 0, False: 0]
  ------------------
 2360|      0|            struct mrb_context *c = mrb->c;
 2361|       |
 2362|      0|            mrb->c = c->prev;
 2363|      0|            c->prev = NULL;
 2364|      0|            ci = mrb->c->ci;
 2365|      0|          }
 2366|      0|          if (ci->cci > CINFO_NONE) {
  ------------------
  |  |  334|      0|#define CINFO_NONE    0 // called method from mruby VM (without C functions)
  ------------------
  |  Branch (2366:15): [True: 0, False: 0]
  ------------------
 2367|      0|            ci = cipop(mrb);
 2368|      0|            mrb->exc = (struct RObject*)break_new(mrb, RBREAK_TAG_BREAK, proc, v);
 2369|      0|            mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|      0|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2370|      0|            mrb->c->vmexec = FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
 2371|      0|            mrb->jmp = prev_jmp;
 2372|      0|            MRB_THROW(prev_jmp);
  ------------------
  |  |   48|      0|#define MRB_THROW(buf) MRB_LONGJMP((buf)->impl, 1);
  |  |  ------------------
  |  |  |  |   41|      0|#define MRB_LONGJMP longjmp
  |  |  ------------------
  ------------------
 2373|      0|          }
 2374|      0|          if (FALSE) {
  ------------------
  |  |   51|      0|#  define FALSE 0
  |  |  ------------------
  |  |  |  Branch (51:17): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2375|      0|            struct RBreak *brk;
 2376|       |
 2377|      0|          L_BREAK:
 2378|      0|            brk = (struct RBreak*)mrb->exc;
 2379|      0|            proc = mrb_break_proc_get(brk);
  ------------------
  |  |   70|      0|#define mrb_break_proc_get(brk) ((brk)->proc)
  ------------------
 2380|      0|            v = mrb_break_value_get(brk);
  ------------------
  |  |   45|      0|#define mrb_break_value_get(brk) ((brk)->val)
  ------------------
 2381|      0|            ci = mrb->c->ci;
 2382|       |
 2383|      0|            switch (mrb_break_tag_get(brk)) {
 2384|      0|#define DISPATCH_CHECKPOINTS(n, i) case n: goto CHECKPOINT_LABEL_MAKE(n);
 2385|      0|              RBREAK_TAG_FOREACH(DISPATCH_CHECKPOINTS)
  ------------------
  |  | 1052|      0|  f(RBREAK_TAG_BREAK, 0) \
  |  |  ------------------
  |  |  |  | 2385|      0|              RBREAK_TAG_FOREACH(DISPATCH_CHECKPOINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2384|      0|#define DISPATCH_CHECKPOINTS(n, i) case n: goto CHECKPOINT_LABEL_MAKE(n);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2384:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1053|      0|  f(RBREAK_TAG_BREAK_UPPER, 1) \
  |  |  ------------------
  |  |  |  | 2385|      0|              RBREAK_TAG_FOREACH(DISPATCH_CHECKPOINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2384|      0|#define DISPATCH_CHECKPOINTS(n, i) case n: goto CHECKPOINT_LABEL_MAKE(n);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2384:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1054|      0|  f(RBREAK_TAG_BREAK_INTARGET, 2) \
  |  |  ------------------
  |  |  |  | 2385|      0|              RBREAK_TAG_FOREACH(DISPATCH_CHECKPOINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2384|      0|#define DISPATCH_CHECKPOINTS(n, i) case n: goto CHECKPOINT_LABEL_MAKE(n);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2384:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1055|      0|  f(RBREAK_TAG_RETURN_BLOCK, 3) \
  |  |  ------------------
  |  |  |  | 2385|      0|              RBREAK_TAG_FOREACH(DISPATCH_CHECKPOINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2384|      0|#define DISPATCH_CHECKPOINTS(n, i) case n: goto CHECKPOINT_LABEL_MAKE(n);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2384:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1056|      0|  f(RBREAK_TAG_RETURN, 4) \
  |  |  ------------------
  |  |  |  | 2385|      0|              RBREAK_TAG_FOREACH(DISPATCH_CHECKPOINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2384|      0|#define DISPATCH_CHECKPOINTS(n, i) case n: goto CHECKPOINT_LABEL_MAKE(n);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2384:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1057|      0|  f(RBREAK_TAG_RETURN_TOPLEVEL, 5) \
  |  |  ------------------
  |  |  |  | 2385|      0|              RBREAK_TAG_FOREACH(DISPATCH_CHECKPOINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2384|      0|#define DISPATCH_CHECKPOINTS(n, i) case n: goto CHECKPOINT_LABEL_MAKE(n);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2384:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1058|      0|  f(RBREAK_TAG_JUMP, 6) \
  |  |  ------------------
  |  |  |  | 2385|      0|              RBREAK_TAG_FOREACH(DISPATCH_CHECKPOINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2384|      0|#define DISPATCH_CHECKPOINTS(n, i) case n: goto CHECKPOINT_LABEL_MAKE(n);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2384:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1059|      0|  f(RBREAK_TAG_STOP, 7)
  |  |  ------------------
  |  |  |  | 2385|      0|              RBREAK_TAG_FOREACH(DISPATCH_CHECKPOINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  | 2384|      0|#define DISPATCH_CHECKPOINTS(n, i) case n: goto CHECKPOINT_LABEL_MAKE(n);
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (2384:36): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2386|      0|#undef DISPATCH_CHECKPOINTS
 2387|      0|              default:
  ------------------
  |  Branch (2387:15): [True: 0, False: 0]
  ------------------
 2388|      0|                mrb_assert(!"wrong break tag");
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 2389|      0|            }
 2390|      0|          }
 2391|      0|          while (mrb->c->cibase < ci && ci[-1].proc != proc->upper) {
  ------------------
  |  Branch (2391:18): [True: 0, False: 0]
  |  Branch (2391:41): [True: 0, False: 0]
  ------------------
 2392|      0|            if (ci[-1].cci == CINFO_SKIP) {
  ------------------
  |  |  335|      0|#define CINFO_SKIP    1 // ignited mruby VM from C
  ------------------
  |  Branch (2392:17): [True: 0, False: 0]
  ------------------
 2393|      0|              goto L_BREAK_ERROR;
 2394|      0|            }
 2395|      0|            CHECKPOINT_RESTORE(RBREAK_TAG_BREAK_UPPER) {
  ------------------
  |  | 1237|      0|  do { \
  |  | 1238|      0|    if (FALSE) { \
  |  |  ------------------
  |  |  |  |   51|      0|#  define FALSE 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:17): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1239|      0|      CHECKPOINT_LABEL_MAKE(tag): \
  |  |  ------------------
  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  ------------------
  |  | 1240|      0|      do {
  ------------------
 2396|       |              /* do nothing */
 2397|      0|            }
 2398|      0|            CHECKPOINT_MAIN(RBREAK_TAG_BREAK_UPPER) {
  ------------------
  |  | 1243|      0|      } while (0); \
  |  |  ------------------
  |  |  |  Branch (1243:16): [Folded - Ignored]
  |  |  ------------------
  |  | 1244|      0|    } \
  |  | 1245|      0|    do {
  ------------------
 2399|      0|              UNWIND_ENSURE(mrb, ci, pc, RBREAK_TAG_BREAK_UPPER, proc, v);
  ------------------
  |  | 1211|      0|  do { \
  |  | 1212|      0|    ch = catch_handler_find(mrb, ci, pc, MRB_CATCH_FILTER_ENSURE); \
  |  |  ------------------
  |  |  |  | 1098|      0|#define MRB_CATCH_FILTER_ENSURE (UINT32_C(1) << MRB_CATCH_ENSURE)
  |  |  ------------------
  |  | 1213|      0|    if (ch) { \
  |  |  ------------------
  |  |  |  Branch (1213:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1214|      0|      THROW_TAGGED_BREAK(mrb, tag, proc, val); \
  |  |  ------------------
  |  |  |  | 1205|      0|  do { \
  |  |  |  | 1206|      0|    prepare_tagged_break(mrb, tag, proc, val); \
  |  |  |  | 1207|      0|    goto L_CATCH_TAGGED_BREAK; \
  |  |  |  | 1208|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1208:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1215|      0|    } \
  |  | 1216|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1216:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2400|      0|            }
 2401|      0|            CHECKPOINT_END(RBREAK_TAG_BREAK_UPPER);
  ------------------
  |  | 1248|      0|    } while (0); \
  |  |  ------------------
  |  |  |  Branch (1248:14): [Folded - Ignored]
  |  |  ------------------
  |  | 1249|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1249:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2402|      0|            ci = cipop(mrb);
 2403|      0|            pc = ci->pc;
 2404|      0|          }
 2405|      0|          CHECKPOINT_RESTORE(RBREAK_TAG_BREAK_INTARGET) {
  ------------------
  |  | 1237|      0|  do { \
  |  | 1238|      0|    if (FALSE) { \
  |  |  ------------------
  |  |  |  |   51|      0|#  define FALSE 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:17): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1239|      0|      CHECKPOINT_LABEL_MAKE(tag): \
  |  |  ------------------
  |  |  |  | 1234|      0|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  ------------------
  |  | 1240|      0|      do {
  ------------------
 2406|       |            /* do nothing */
 2407|      0|          }
 2408|      0|          CHECKPOINT_MAIN(RBREAK_TAG_BREAK_INTARGET) {
  ------------------
  |  | 1243|      0|      } while (0); \
  |  |  ------------------
  |  |  |  Branch (1243:16): [Folded - Ignored]
  |  |  ------------------
  |  | 1244|      0|    } \
  |  | 1245|      0|    do {
  ------------------
 2409|      0|            UNWIND_ENSURE(mrb, ci, pc, RBREAK_TAG_BREAK_INTARGET, proc, v);
  ------------------
  |  | 1211|      0|  do { \
  |  | 1212|      0|    ch = catch_handler_find(mrb, ci, pc, MRB_CATCH_FILTER_ENSURE); \
  |  |  ------------------
  |  |  |  | 1098|      0|#define MRB_CATCH_FILTER_ENSURE (UINT32_C(1) << MRB_CATCH_ENSURE)
  |  |  ------------------
  |  | 1213|      0|    if (ch) { \
  |  |  ------------------
  |  |  |  Branch (1213:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1214|      0|      THROW_TAGGED_BREAK(mrb, tag, proc, val); \
  |  |  ------------------
  |  |  |  | 1205|      0|  do { \
  |  |  |  | 1206|      0|    prepare_tagged_break(mrb, tag, proc, val); \
  |  |  |  | 1207|      0|    goto L_CATCH_TAGGED_BREAK; \
  |  |  |  | 1208|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1208:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1215|      0|    } \
  |  | 1216|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1216:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2410|      0|          }
 2411|      0|          CHECKPOINT_END(RBREAK_TAG_BREAK_INTARGET);
  ------------------
  |  | 1248|      0|    } while (0); \
  |  |  ------------------
  |  |  |  Branch (1248:14): [Folded - Ignored]
  |  |  ------------------
  |  | 1249|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1249:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2412|      0|          if (ci == mrb->c->cibase) {
  ------------------
  |  Branch (2412:15): [True: 0, False: 0]
  ------------------
 2413|      0|            goto L_BREAK_ERROR;
 2414|      0|          }
 2415|      0|          mrb->exc = NULL; /* clear break object */
 2416|      0|          break;
 2417|      0|        default:
  ------------------
  |  Branch (2417:9): [True: 0, False: 219k]
  ------------------
 2418|       |          /* cannot happen */
 2419|      0|          break;
 2420|   219k|        }
 2421|   206k|        mrb_assert(ci == mrb->c->ci);
  ------------------
  |  |   68|   206k|#define mrb_assert(p) ((void)0)
  ------------------
 2422|   206k|        mrb_assert(mrb->exc == NULL);
  ------------------
  |  |   68|   206k|#define mrb_assert(p) ((void)0)
  ------------------
 2423|       |
 2424|   206k|        if (mrb->c->vmexec && !CI_TARGET_CLASS(ci)) {
  ------------------
  |  |  267|      0|#define CI_TARGET_CLASS(ci) (((ci)->u.env && (ci)->u.env->tt == MRB_TT_ENV)? (ci)->u.env->c : (ci)->u.target_class)
  |  |  ------------------
  |  |  |  Branch (267:31): [True: 0, False: 0]
  |  |  |  Branch (267:46): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2424:13): [True: 0, False: 206k]
  |  Branch (2424:31): [True: 0, False: 0]
  ------------------
 2425|      0|          mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|      0|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2426|      0|          mrb->c->vmexec = FALSE;
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
 2427|      0|          mrb->jmp = prev_jmp;
 2428|      0|          return v;
 2429|      0|        }
 2430|   206k|        acc = ci->cci;
 2431|   206k|        ci = cipop(mrb);
 2432|   206k|        if (acc == CINFO_SKIP || acc == CINFO_DIRECT) {
  ------------------
  |  |  335|   413k|#define CINFO_SKIP    1 // ignited mruby VM from C
  ------------------
                      if (acc == CINFO_SKIP || acc == CINFO_DIRECT) {
  ------------------
  |  |  336|   206k|#define CINFO_DIRECT  2 // called method from C
  ------------------
  |  Branch (2432:13): [True: 16, False: 206k]
  |  Branch (2432:34): [True: 0, False: 206k]
  ------------------
 2433|     16|          mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|     16|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2434|     16|          mrb->jmp = prev_jmp;
 2435|     16|          return v;
 2436|     16|        }
 2437|   206k|        pc = ci->pc;
 2438|   206k|        DEBUG(fprintf(stderr, "from :%s\n", mrb_sym_name(mrb, ci->mid)));
 2439|   206k|        proc = ci->proc;
 2440|   206k|        irep = proc->body.irep;
 2441|   206k|        pool = irep->pool;
 2442|   206k|        syms = irep->syms;
 2443|       |
 2444|   206k|        ci[1].stack[0] = v;
 2445|   206k|        mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|   206k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2446|   206k|      }
 2447|   206k|      JUMP;
  ------------------
  |  | 1282|   206k|#define JUMP NEXT
  |  |  ------------------
  |  |  |  | 1281|   206k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|   206k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|   206k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 206k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2448|   206k|    }
 2449|       |
 2450|   206k|    CASE(OP_BLKPUSH, BS) {
  ------------------
  |  | 1280|   206k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2451|      0|      int m1 = (b>>11)&0x3f;
 2452|      0|      int r  = (b>>10)&0x1;
 2453|      0|      int m2 = (b>>5)&0x1f;
 2454|      0|      int kd = (b>>4)&0x1;
 2455|      0|      int lv = (b>>0)&0xf;
 2456|      0|      mrb_value *stack;
 2457|       |
 2458|      0|      if (lv == 0) stack = regs + 1;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
  |  Branch (2458:11): [True: 0, False: 0]
  ------------------
 2459|      0|      else {
 2460|      0|        struct REnv *e = uvenv(mrb, lv-1);
 2461|      0|        if (!e || (!MRB_ENV_ONSTACK_P(e) && e->mid == 0) ||
  ------------------
  |  |   30|      0|#define MRB_ENV_ONSTACK_P(e) (((e)->flags & MRB_ENV_CLOSED) == 0)
  |  |  ------------------
  |  |  |  |   28|      0|#define MRB_ENV_CLOSED (1<<20)
  |  |  ------------------
  ------------------
  |  Branch (2461:13): [True: 0, False: 0]
  |  Branch (2461:20): [True: 0, False: 0]
  |  Branch (2461:45): [True: 0, False: 0]
  ------------------
 2462|      0|            MRB_ENV_LEN(e) <= m1+r+m2+1) {
  ------------------
  |  |   27|      0|#define MRB_ENV_LEN(e) ((mrb_int)((e)->flags & 0xff))
  ------------------
  |  Branch (2462:13): [True: 0, False: 0]
  ------------------
 2463|      0|          localjump_error(mrb, LOCALJUMP_ERROR_YIELD);
 2464|      0|          goto L_RAISE;
 2465|      0|        }
 2466|      0|        stack = e->stack + 1;
 2467|      0|      }
 2468|      0|      if (mrb_nil_p(stack[m1+r+m2+kd])) {
  ------------------
  |  |  174|      0|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2469|      0|        localjump_error(mrb, LOCALJUMP_ERROR_YIELD);
 2470|      0|        goto L_RAISE;
 2471|      0|      }
 2472|      0|      regs[a] = stack[m1+r+m2+kd];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2473|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2474|      0|    }
 2475|       |
 2476|       |#if !defined(MRB_USE_BIGINT) || defined(MRB_INT32)
 2477|       |  L_INT_OVERFLOW:
 2478|       |    RAISE_LIT(mrb, E_RANGE_ERROR, "integer overflow");
 2479|       |#endif
 2480|       |
 2481|      0|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
 2482|      0|#define OP_MATH(op_name)                                                    \
 2483|       |  /* need to check if op is overridden */                                   \
 2484|      0|  switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {                  \
 2485|      0|    OP_MATH_CASE_INTEGER(op_name);                                          \
 2486|      0|    OP_MATH_CASE_FLOAT(op_name, integer, float);                            \
 2487|      0|    OP_MATH_CASE_FLOAT(op_name, float,  integer);                           \
 2488|      0|    OP_MATH_CASE_FLOAT(op_name, float,  float);                             \
 2489|      0|    OP_MATH_CASE_STRING_##op_name();                                        \
 2490|      0|    default:                                                                \
 2491|      0|      mid = MRB_OPSYM(op_name);                                             \
 2492|      0|      goto L_SEND_SYM;                                                      \
 2493|      0|  }                                                                         \
 2494|      0|  NEXT;
 2495|      0|#define OP_MATH_CASE_INTEGER(op_name)                                       \
 2496|      0|  case TYPES2(MRB_TT_INTEGER, MRB_TT_INTEGER):                              \
 2497|      0|    {                                                                       \
 2498|      0|      mrb_int x = mrb_integer(regs[a]), y = mrb_integer(regs[a+1]), z;      \
 2499|      0|      if (mrb_int_##op_name##_overflow(x, y, &z)) {                         \
 2500|      0|        OP_MATH_OVERFLOW_INT(op_name,x,y);                                  \
 2501|      0|      }                                                                     \
 2502|      0|      else                                                                  \
 2503|      0|        SET_INT_VALUE(mrb,regs[a], z);                                      \
 2504|      0|    }                                                                       \
 2505|      0|    break
 2506|       |#ifdef MRB_NO_FLOAT
 2507|       |#define OP_MATH_CASE_FLOAT(op_name, t1, t2) (void)0
 2508|       |#else
 2509|      0|#define OP_MATH_CASE_FLOAT(op_name, t1, t2)                                     \
 2510|      0|  case TYPES2(OP_MATH_TT_##t1, OP_MATH_TT_##t2):                                \
 2511|      0|    {                                                                           \
 2512|      0|      mrb_float z = mrb_##t1(regs[a]) OP_MATH_OP_##op_name mrb_##t2(regs[a+1]); \
 2513|      0|      SET_FLOAT_VALUE(mrb, regs[a], z);                                         \
 2514|      0|    }                                                                           \
 2515|      0|    break
 2516|      0|#endif
 2517|      0|#ifdef MRB_USE_BIGINT
 2518|      0|#define OP_MATH_OVERFLOW_INT(op,x,y) regs[a] = mrb_bint_##op##_ii(mrb,x,y)
 2519|       |#else
 2520|       |#define OP_MATH_OVERFLOW_INT(op,x,y) goto L_INT_OVERFLOW
 2521|       |#endif
 2522|      0|#define OP_MATH_CASE_STRING_add()                                           \
 2523|      0|  case TYPES2(MRB_TT_STRING, MRB_TT_STRING):                                \
 2524|      0|    regs[a] = mrb_str_plus(mrb, regs[a], regs[a+1]);                        \
 2525|      0|    mrb_gc_arena_restore(mrb, ai);                                          \
 2526|      0|    break
 2527|      0|#define OP_MATH_CASE_STRING_sub() (void)0
 2528|      0|#define OP_MATH_CASE_STRING_mul() (void)0
 2529|      0|#define OP_MATH_OP_add +
 2530|      0|#define OP_MATH_OP_sub -
 2531|      0|#define OP_MATH_OP_mul *
 2532|      0|#define OP_MATH_TT_integer MRB_TT_INTEGER
 2533|      0|#define OP_MATH_TT_float   MRB_TT_FLOAT
 2534|       |
 2535|  10.8k|    CASE(OP_ADD, B) {
  ------------------
  |  | 1280|  5.46k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2536|  10.8k|      OP_MATH(add);
  ------------------
  |  | 2484|  5.46k|  switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {                  \
  |  |  ------------------
  |  |  |  | 2481|  5.46k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  | 2485|  2.10k|    OP_MATH_CASE_INTEGER(op_name);                                          \
  |  |  ------------------
  |  |  |  | 2496|  2.10k|  case TYPES2(MRB_TT_INTEGER, MRB_TT_INTEGER):                              \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2481|  2.10k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2496:3): [True: 2.10k, False: 3.35k]
  |  |  |  |  ------------------
  |  |  |  | 2497|  2.10k|    {                                                                       \
  |  |  |  | 2498|  2.10k|      mrb_int x = mrb_integer(regs[a]), y = mrb_integer(regs[a+1]), z;      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  166|  2.10k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  ------------------
  |  |  |  |                     mrb_int x = mrb_integer(regs[a]), y = mrb_integer(regs[a+1]), z;      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  166|  2.10k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  ------------------
  |  |  |  | 2499|  2.10k|      if (mrb_int_##op_name##_overflow(x, y, &z)) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2499:11): [True: 653, False: 1.45k]
  |  |  |  |  ------------------
  |  |  |  | 2500|    653|        OP_MATH_OVERFLOW_INT(op_name,x,y);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2518|    653|#define OP_MATH_OVERFLOW_INT(op,x,y) regs[a] = mrb_bint_##op##_ii(mrb,x,y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1335|    653|#define regs (mrb->c->ci->stack)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2501|    653|      }                                                                     \
  |  |  |  | 2502|  2.10k|      else                                                                  \
  |  |  |  | 2503|  2.10k|        SET_INT_VALUE(mrb,regs[a], z);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  214|  1.45k|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  |  |  |  |  ------------------
  |  |  |  | 2504|  2.10k|    }                                                                       \
  |  |  |  | 2505|  2.10k|    break
  |  |  ------------------
  |  | 2486|    267|    OP_MATH_CASE_FLOAT(op_name, integer, float);                            \
  |  |  ------------------
  |  |  |  | 2510|    267|  case TYPES2(OP_MATH_TT_##t1, OP_MATH_TT_##t2):                                \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2481|    267|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2510:3): [True: 267, False: 5.19k]
  |  |  |  |  ------------------
  |  |  |  | 2511|    267|    {                                                                           \
  |  |  |  | 2512|    267|      mrb_float z = mrb_##t1(regs[a]) OP_MATH_OP_##op_name mrb_##t2(regs[a+1]); \
  |  |  |  | 2513|    267|      SET_FLOAT_VALUE(mrb, regs[a], z);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  206|    267|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  |  |  |  |  ------------------
  |  |  |  | 2514|    267|    }                                                                           \
  |  |  |  | 2515|    267|    break
  |  |  ------------------
  |  | 2487|    445|    OP_MATH_CASE_FLOAT(op_name, float,  integer);                           \
  |  |  ------------------
  |  |  |  | 2510|    445|  case TYPES2(OP_MATH_TT_##t1, OP_MATH_TT_##t2):                                \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2481|    445|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2510:3): [True: 445, False: 5.01k]
  |  |  |  |  ------------------
  |  |  |  | 2511|    445|    {                                                                           \
  |  |  |  | 2512|    445|      mrb_float z = mrb_##t1(regs[a]) OP_MATH_OP_##op_name mrb_##t2(regs[a+1]); \
  |  |  |  | 2513|    445|      SET_FLOAT_VALUE(mrb, regs[a], z);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  206|    445|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  |  |  |  |  ------------------
  |  |  |  | 2514|    445|    }                                                                           \
  |  |  |  | 2515|    445|    break
  |  |  ------------------
  |  | 2488|    402|    OP_MATH_CASE_FLOAT(op_name, float,  float);                             \
  |  |  ------------------
  |  |  |  | 2510|    402|  case TYPES2(OP_MATH_TT_##t1, OP_MATH_TT_##t2):                                \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2481|    402|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2510:3): [True: 402, False: 5.06k]
  |  |  |  |  ------------------
  |  |  |  | 2511|    402|    {                                                                           \
  |  |  |  | 2512|    402|      mrb_float z = mrb_##t1(regs[a]) OP_MATH_OP_##op_name mrb_##t2(regs[a+1]); \
  |  |  |  | 2513|    402|      SET_FLOAT_VALUE(mrb, regs[a], z);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  206|    402|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  |  |  |  |  ------------------
  |  |  |  | 2514|    402|    }                                                                           \
  |  |  |  | 2515|    402|    break
  |  |  ------------------
  |  | 2489|      0|    OP_MATH_CASE_STRING_##op_name();                                        \
  |  | 2490|  2.24k|    default:                                                                \
  |  |  ------------------
  |  |  |  Branch (2490:5): [True: 2.24k, False: 3.21k]
  |  |  ------------------
  |  | 2491|  2.24k|      mid = MRB_OPSYM(op_name);                                             \
  |  |  ------------------
  |  |  |  |   12|  2.24k|#define MRB_OPSYM(name) MRB_OPSYM__##name
  |  |  ------------------
  |  | 2492|  2.24k|      goto L_SEND_SYM;                                                      \
  |  | 2493|  5.46k|  }                                                                         \
  |  | 2494|  5.46k|  NEXT;
  |  |  ------------------
  |  |  |  | 1281|  3.21k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|  3.21k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|  3.21k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 3.21k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2537|  3.21k|    }
 2538|       |
 2539|  13.1k|    CASE(OP_SUB, B) {
  ------------------
  |  | 1280|  6.62k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2540|  13.1k|      OP_MATH(sub);
  ------------------
  |  | 2484|  6.62k|  switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {                  \
  |  |  ------------------
  |  |  |  | 2481|  6.62k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  | 2485|  2.60k|    OP_MATH_CASE_INTEGER(op_name);                                          \
  |  |  ------------------
  |  |  |  | 2496|  2.60k|  case TYPES2(MRB_TT_INTEGER, MRB_TT_INTEGER):                              \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2481|  2.60k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2496:3): [True: 2.60k, False: 4.02k]
  |  |  |  |  ------------------
  |  |  |  | 2497|  2.60k|    {                                                                       \
  |  |  |  | 2498|  2.60k|      mrb_int x = mrb_integer(regs[a]), y = mrb_integer(regs[a+1]), z;      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  166|  2.60k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  ------------------
  |  |  |  |                     mrb_int x = mrb_integer(regs[a]), y = mrb_integer(regs[a+1]), z;      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  166|  2.60k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  ------------------
  |  |  |  | 2499|  2.60k|      if (mrb_int_##op_name##_overflow(x, y, &z)) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2499:11): [True: 902, False: 1.69k]
  |  |  |  |  ------------------
  |  |  |  | 2500|    902|        OP_MATH_OVERFLOW_INT(op_name,x,y);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2518|    902|#define OP_MATH_OVERFLOW_INT(op,x,y) regs[a] = mrb_bint_##op##_ii(mrb,x,y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1335|    902|#define regs (mrb->c->ci->stack)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2501|    902|      }                                                                     \
  |  |  |  | 2502|  2.60k|      else                                                                  \
  |  |  |  | 2503|  2.60k|        SET_INT_VALUE(mrb,regs[a], z);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  214|  1.69k|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  |  |  |  |  ------------------
  |  |  |  | 2504|  2.60k|    }                                                                       \
  |  |  |  | 2505|  2.60k|    break
  |  |  ------------------
  |  | 2486|    266|    OP_MATH_CASE_FLOAT(op_name, integer, float);                            \
  |  |  ------------------
  |  |  |  | 2510|    266|  case TYPES2(OP_MATH_TT_##t1, OP_MATH_TT_##t2):                                \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2481|    266|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2510:3): [True: 266, False: 6.36k]
  |  |  |  |  ------------------
  |  |  |  | 2511|    266|    {                                                                           \
  |  |  |  | 2512|    266|      mrb_float z = mrb_##t1(regs[a]) OP_MATH_OP_##op_name mrb_##t2(regs[a+1]); \
  |  |  |  | 2513|    266|      SET_FLOAT_VALUE(mrb, regs[a], z);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  206|    266|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  |  |  |  |  ------------------
  |  |  |  | 2514|    266|    }                                                                           \
  |  |  |  | 2515|    266|    break
  |  |  ------------------
  |  | 2487|    126|    OP_MATH_CASE_FLOAT(op_name, float,  integer);                           \
  |  |  ------------------
  |  |  |  | 2510|    126|  case TYPES2(OP_MATH_TT_##t1, OP_MATH_TT_##t2):                                \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2481|    126|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2510:3): [True: 126, False: 6.50k]
  |  |  |  |  ------------------
  |  |  |  | 2511|    126|    {                                                                           \
  |  |  |  | 2512|    126|      mrb_float z = mrb_##t1(regs[a]) OP_MATH_OP_##op_name mrb_##t2(regs[a+1]); \
  |  |  |  | 2513|    126|      SET_FLOAT_VALUE(mrb, regs[a], z);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  206|    126|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  |  |  |  |  ------------------
  |  |  |  | 2514|    126|    }                                                                           \
  |  |  |  | 2515|    126|    break
  |  |  ------------------
  |  | 2488|    300|    OP_MATH_CASE_FLOAT(op_name, float,  float);                             \
  |  |  ------------------
  |  |  |  | 2510|    300|  case TYPES2(OP_MATH_TT_##t1, OP_MATH_TT_##t2):                                \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2481|    300|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2510:3): [True: 300, False: 6.32k]
  |  |  |  |  ------------------
  |  |  |  | 2511|    300|    {                                                                           \
  |  |  |  | 2512|    300|      mrb_float z = mrb_##t1(regs[a]) OP_MATH_OP_##op_name mrb_##t2(regs[a+1]); \
  |  |  |  | 2513|    300|      SET_FLOAT_VALUE(mrb, regs[a], z);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  206|    300|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  |  |  |  |  ------------------
  |  |  |  | 2514|    300|    }                                                                           \
  |  |  |  | 2515|    300|    break
  |  |  ------------------
  |  | 2489|      0|    OP_MATH_CASE_STRING_##op_name();                                        \
  |  | 2490|  3.33k|    default:                                                                \
  |  |  ------------------
  |  |  |  Branch (2490:5): [True: 3.33k, False: 3.29k]
  |  |  ------------------
  |  | 2491|  3.33k|      mid = MRB_OPSYM(op_name);                                             \
  |  |  ------------------
  |  |  |  |   12|  3.33k|#define MRB_OPSYM(name) MRB_OPSYM__##name
  |  |  ------------------
  |  | 2492|  3.33k|      goto L_SEND_SYM;                                                      \
  |  | 2493|  6.62k|  }                                                                         \
  |  | 2494|  6.62k|  NEXT;
  |  |  ------------------
  |  |  |  | 1281|  3.29k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|  3.29k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|  3.29k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 3.29k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2541|  3.29k|    }
 2542|       |
 2543|  8.57k|    CASE(OP_MUL, B) {
  ------------------
  |  | 1280|  4.43k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2544|  8.57k|      OP_MATH(mul);
  ------------------
  |  | 2484|  4.43k|  switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {                  \
  |  |  ------------------
  |  |  |  | 2481|  4.43k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  | 2485|  2.01k|    OP_MATH_CASE_INTEGER(op_name);                                          \
  |  |  ------------------
  |  |  |  | 2496|  2.01k|  case TYPES2(MRB_TT_INTEGER, MRB_TT_INTEGER):                              \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2481|  2.01k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2496:3): [True: 2.01k, False: 2.41k]
  |  |  |  |  ------------------
  |  |  |  | 2497|  2.01k|    {                                                                       \
  |  |  |  | 2498|  2.01k|      mrb_int x = mrb_integer(regs[a]), y = mrb_integer(regs[a+1]), z;      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  166|  2.01k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  ------------------
  |  |  |  |                     mrb_int x = mrb_integer(regs[a]), y = mrb_integer(regs[a+1]), z;      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  166|  2.01k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  ------------------
  |  |  |  | 2499|  2.01k|      if (mrb_int_##op_name##_overflow(x, y, &z)) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2499:11): [True: 770, False: 1.24k]
  |  |  |  |  ------------------
  |  |  |  | 2500|    770|        OP_MATH_OVERFLOW_INT(op_name,x,y);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2518|    770|#define OP_MATH_OVERFLOW_INT(op,x,y) regs[a] = mrb_bint_##op##_ii(mrb,x,y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1335|    770|#define regs (mrb->c->ci->stack)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2501|    770|      }                                                                     \
  |  |  |  | 2502|  2.01k|      else                                                                  \
  |  |  |  | 2503|  2.01k|        SET_INT_VALUE(mrb,regs[a], z);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  214|  1.24k|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  |  |  |  |  ------------------
  |  |  |  | 2504|  2.01k|    }                                                                       \
  |  |  |  | 2505|  2.01k|    break
  |  |  ------------------
  |  | 2486|    199|    OP_MATH_CASE_FLOAT(op_name, integer, float);                            \
  |  |  ------------------
  |  |  |  | 2510|    199|  case TYPES2(OP_MATH_TT_##t1, OP_MATH_TT_##t2):                                \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2481|    199|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2510:3): [True: 199, False: 4.23k]
  |  |  |  |  ------------------
  |  |  |  | 2511|    199|    {                                                                           \
  |  |  |  | 2512|    199|      mrb_float z = mrb_##t1(regs[a]) OP_MATH_OP_##op_name mrb_##t2(regs[a+1]); \
  |  |  |  | 2513|    199|      SET_FLOAT_VALUE(mrb, regs[a], z);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  206|    199|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  |  |  |  |  ------------------
  |  |  |  | 2514|    199|    }                                                                           \
  |  |  |  | 2515|    199|    break
  |  |  ------------------
  |  | 2487|    247|    OP_MATH_CASE_FLOAT(op_name, float,  integer);                           \
  |  |  ------------------
  |  |  |  | 2510|    247|  case TYPES2(OP_MATH_TT_##t1, OP_MATH_TT_##t2):                                \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2481|    247|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2510:3): [True: 247, False: 4.18k]
  |  |  |  |  ------------------
  |  |  |  | 2511|    247|    {                                                                           \
  |  |  |  | 2512|    247|      mrb_float z = mrb_##t1(regs[a]) OP_MATH_OP_##op_name mrb_##t2(regs[a+1]); \
  |  |  |  | 2513|    247|      SET_FLOAT_VALUE(mrb, regs[a], z);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  206|    247|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  |  |  |  |  ------------------
  |  |  |  | 2514|    247|    }                                                                           \
  |  |  |  | 2515|    247|    break
  |  |  ------------------
  |  | 2488|    124|    OP_MATH_CASE_FLOAT(op_name, float,  float);                             \
  |  |  ------------------
  |  |  |  | 2510|    124|  case TYPES2(OP_MATH_TT_##t1, OP_MATH_TT_##t2):                                \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2481|    124|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2510:3): [True: 124, False: 4.30k]
  |  |  |  |  ------------------
  |  |  |  | 2511|    124|    {                                                                           \
  |  |  |  | 2512|    124|      mrb_float z = mrb_##t1(regs[a]) OP_MATH_OP_##op_name mrb_##t2(regs[a+1]); \
  |  |  |  | 2513|    124|      SET_FLOAT_VALUE(mrb, regs[a], z);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  206|    124|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  |  |  |  |  ------------------
  |  |  |  | 2514|    124|    }                                                                           \
  |  |  |  | 2515|    124|    break
  |  |  ------------------
  |  | 2489|      0|    OP_MATH_CASE_STRING_##op_name();                                        \
  |  | 2490|  1.84k|    default:                                                                \
  |  |  ------------------
  |  |  |  Branch (2490:5): [True: 1.84k, False: 2.58k]
  |  |  ------------------
  |  | 2491|  1.84k|      mid = MRB_OPSYM(op_name);                                             \
  |  |  ------------------
  |  |  |  |   12|  1.84k|#define MRB_OPSYM(name) MRB_OPSYM__##name
  |  |  ------------------
  |  | 2492|  1.84k|      goto L_SEND_SYM;                                                      \
  |  | 2493|  4.43k|  }                                                                         \
  |  | 2494|  4.43k|  NEXT;
  |  |  ------------------
  |  |  |  | 1281|  2.58k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|  2.58k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|  2.58k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 2.58k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2545|  2.58k|    }
 2546|       |
 2547|  16.5k|    CASE(OP_DIV, B) {
  ------------------
  |  | 1280|  8.41k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2548|  16.5k|#ifndef MRB_NO_FLOAT
 2549|  16.5k|      mrb_float x, y, f;
 2550|  16.5k|#endif
 2551|       |
 2552|       |      /* need to check if op is overridden */
 2553|  16.5k|      switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {
  ------------------
  |  | 2481|  8.41k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  ------------------
 2554|  2.66k|      case TYPES2(MRB_TT_INTEGER,MRB_TT_INTEGER):
  ------------------
  |  | 2481|  2.66k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  ------------------
  |  Branch (2554:7): [True: 2.66k, False: 5.74k]
  ------------------
 2555|  2.66k|        {
 2556|  2.66k|          mrb_int x = mrb_integer(regs[a]);
  ------------------
  |  |  166|  2.66k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 2557|  2.66k|          mrb_int y = mrb_integer(regs[a+1]);
  ------------------
  |  |  166|  2.66k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 2558|  2.66k|          regs[a] = mrb_div_int_value(mrb, x, y);
  ------------------
  |  | 1335|  2.66k|#define regs (mrb->c->ci->stack)
  ------------------
 2559|  2.66k|        }
 2560|  2.66k|        NEXT;
  ------------------
  |  | 1281|  2.66k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  2.66k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  2.66k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 2.66k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2561|  2.66k|#ifndef MRB_NO_FLOAT
 2562|  3.24k|      case TYPES2(MRB_TT_INTEGER,MRB_TT_FLOAT):
  ------------------
  |  | 2481|  3.24k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  ------------------
  |  Branch (2562:7): [True: 577, False: 7.83k]
  ------------------
 2563|  3.24k|        x = (mrb_float)mrb_integer(regs[a]);
  ------------------
  |  |  166|  3.24k|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 2564|  3.24k|        y = mrb_float(regs[a+1]);
  ------------------
  |  |  155|  3.24k|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 2565|  3.24k|        break;
 2566|    539|      case TYPES2(MRB_TT_FLOAT,MRB_TT_INTEGER):
  ------------------
  |  | 2481|    539|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  ------------------
  |  Branch (2566:7): [True: 539, False: 7.87k]
  ------------------
 2567|    539|        x = mrb_float(regs[a]);
  ------------------
  |  |  155|    539|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 2568|    539|        y = (mrb_float)mrb_integer(regs[a+1]);
  ------------------
  |  |  166|    539|#define mrb_integer(o) mrb_integer_func(o)
  ------------------
 2569|    539|        break;
 2570|    407|      case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):
  ------------------
  |  | 2481|    407|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  ------------------
  |  Branch (2570:7): [True: 407, False: 8.00k]
  ------------------
 2571|    407|        x = mrb_float(regs[a]);
  ------------------
  |  |  155|    407|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 2572|    407|        y = mrb_float(regs[a+1]);
  ------------------
  |  |  155|    407|#define mrb_float(o) mrb_word_boxing_value_float(o)
  ------------------
 2573|    407|        break;
 2574|      0|#endif
 2575|  4.22k|      default:
  ------------------
  |  Branch (2575:7): [True: 4.22k, False: 4.19k]
  ------------------
 2576|  4.22k|        mid = MRB_OPSYM(div);
  ------------------
  |  |   12|  4.22k|#define MRB_OPSYM(name) MRB_OPSYM__##name
  ------------------
 2577|  4.22k|        goto L_SEND_SYM;
 2578|  16.5k|      }
 2579|       |
 2580|  1.52k|#ifndef MRB_NO_FLOAT
 2581|  1.52k|      f = mrb_div_float(x, y);
 2582|  1.52k|      SET_FLOAT_VALUE(mrb, regs[a], f);
  ------------------
  |  |  206|  1.52k|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  ------------------
 2583|  1.52k|#endif
 2584|  1.52k|      NEXT;
  ------------------
  |  | 1281|  1.52k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  1.52k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  1.52k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 1.52k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2585|  1.52k|    }
 2586|       |
 2587|      0|#define OP_MATHI(op_name)                                                   \
 2588|       |  /* need to check if op is overridden */                                   \
 2589|      0|  switch (mrb_type(regs[a])) {                                              \
 2590|      0|    OP_MATHI_CASE_INTEGER(op_name);                                         \
 2591|      0|    OP_MATHI_CASE_FLOAT(op_name);                                           \
 2592|      0|    default:                                                                \
 2593|      0|      SET_INT_VALUE(mrb,regs[a+1], b);                                      \
 2594|      0|      mid = MRB_OPSYM(op_name);                                             \
 2595|      0|      goto L_SEND_SYM;                                                      \
 2596|      0|  }                                                                         \
 2597|      0|  NEXT;
 2598|      0|#define OP_MATHI_CASE_INTEGER(op_name)                                      \
 2599|      0|  case MRB_TT_INTEGER:                                                      \
 2600|      0|    {                                                                       \
 2601|      0|      mrb_int x = mrb_integer(regs[a]), y = (mrb_int)b, z;                  \
 2602|      0|      if (mrb_int_##op_name##_overflow(x, y, &z)) {                         \
 2603|      0|        OP_MATH_OVERFLOW_INT(op_name,x,y);                                  \
 2604|      0|      }                                                                     \
 2605|      0|      else                                                                  \
 2606|      0|        SET_INT_VALUE(mrb,regs[a], z);                                      \
 2607|      0|    }                                                                       \
 2608|      0|    break
 2609|       |#ifdef MRB_NO_FLOAT
 2610|       |#define OP_MATHI_CASE_FLOAT(op_name) (void)0
 2611|       |#else
 2612|      0|#define OP_MATHI_CASE_FLOAT(op_name)                                        \
 2613|      0|  case MRB_TT_FLOAT:                                                        \
 2614|      0|    {                                                                       \
 2615|      0|      mrb_float z = mrb_float(regs[a]) OP_MATH_OP_##op_name b;              \
 2616|      0|      SET_FLOAT_VALUE(mrb, regs[a], z);                                     \
 2617|      0|    }                                                                       \
 2618|      0|    break
 2619|      0|#endif
 2620|       |
 2621|   171k|    CASE(OP_ADDI, BB) {
  ------------------
  |  | 1280|  85.7k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2622|   171k|      OP_MATHI(add);
  ------------------
  |  | 2589|  85.7k|  switch (mrb_type(regs[a])) {                                              \
  |  |  ------------------
  |  |  |  | 1335|  85.7k|#define regs (mrb->c->ci->stack)
  |  |  ------------------
  |  | 2590|  85.2k|    OP_MATHI_CASE_INTEGER(op_name);                                         \
  |  |  ------------------
  |  |  |  | 2599|  85.2k|  case MRB_TT_INTEGER:                                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2599:3): [True: 85.2k, False: 512]
  |  |  |  |  ------------------
  |  |  |  | 2600|  85.2k|    {                                                                       \
  |  |  |  | 2601|  85.2k|      mrb_int x = mrb_integer(regs[a]), y = (mrb_int)b, z;                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |  166|  85.2k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  ------------------
  |  |  |  | 2602|  85.2k|      if (mrb_int_##op_name##_overflow(x, y, &z)) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2602:11): [True: 29, False: 85.2k]
  |  |  |  |  ------------------
  |  |  |  | 2603|     29|        OP_MATH_OVERFLOW_INT(op_name,x,y);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2518|     29|#define OP_MATH_OVERFLOW_INT(op,x,y) regs[a] = mrb_bint_##op##_ii(mrb,x,y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1335|     29|#define regs (mrb->c->ci->stack)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2604|     29|      }                                                                     \
  |  |  |  | 2605|  85.2k|      else                                                                  \
  |  |  |  | 2606|  85.2k|        SET_INT_VALUE(mrb,regs[a], z);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  214|  85.2k|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  |  |  |  |  ------------------
  |  |  |  | 2607|  85.2k|    }                                                                       \
  |  |  |  | 2608|  85.2k|    break
  |  |  ------------------
  |  | 2591|    231|    OP_MATHI_CASE_FLOAT(op_name);                                           \
  |  |  ------------------
  |  |  |  | 2613|    231|  case MRB_TT_FLOAT:                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2613:3): [True: 231, False: 85.5k]
  |  |  |  |  ------------------
  |  |  |  | 2614|    231|    {                                                                       \
  |  |  |  | 2615|    231|      mrb_float z = mrb_float(regs[a]) OP_MATH_OP_##op_name b;              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|    231|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  ------------------
  |  |  |  | 2616|    231|      SET_FLOAT_VALUE(mrb, regs[a], z);                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  206|    231|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  |  |  |  |  ------------------
  |  |  |  | 2617|    231|    }                                                                       \
  |  |  |  | 2618|    231|    break
  |  |  ------------------
  |  | 2592|    281|    default:                                                                \
  |  |  ------------------
  |  |  |  Branch (2592:5): [True: 281, False: 85.4k]
  |  |  ------------------
  |  | 2593|    281|      SET_INT_VALUE(mrb,regs[a+1], b);                                      \
  |  |  ------------------
  |  |  |  |  214|    281|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  |  |  ------------------
  |  | 2594|    281|      mid = MRB_OPSYM(op_name);                                             \
  |  |  ------------------
  |  |  |  |   12|    281|#define MRB_OPSYM(name) MRB_OPSYM__##name
  |  |  ------------------
  |  | 2595|    281|      goto L_SEND_SYM;                                                      \
  |  | 2596|  85.7k|  }                                                                         \
  |  | 2597|  85.7k|  NEXT;
  |  |  ------------------
  |  |  |  | 1281|  85.4k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|  85.4k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|  85.4k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 85.4k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2623|  85.4k|    }
 2624|       |
 2625|  85.4k|    CASE(OP_SUBI, BB) {
  ------------------
  |  | 1280|  85.4k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2626|  3.45k|      OP_MATHI(sub);
  ------------------
  |  | 2589|  1.73k|  switch (mrb_type(regs[a])) {                                              \
  |  |  ------------------
  |  |  |  | 1335|  1.73k|#define regs (mrb->c->ci->stack)
  |  |  ------------------
  |  | 2590|  1.04k|    OP_MATHI_CASE_INTEGER(op_name);                                         \
  |  |  ------------------
  |  |  |  | 2599|  1.04k|  case MRB_TT_INTEGER:                                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2599:3): [True: 1.04k, False: 685]
  |  |  |  |  ------------------
  |  |  |  | 2600|  1.04k|    {                                                                       \
  |  |  |  | 2601|  1.04k|      mrb_int x = mrb_integer(regs[a]), y = (mrb_int)b, z;                  \
  |  |  |  |  ------------------
  |  |  |  |  |  |  166|  1.04k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  ------------------
  |  |  |  | 2602|  1.04k|      if (mrb_int_##op_name##_overflow(x, y, &z)) {                         \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2602:11): [True: 495, False: 554]
  |  |  |  |  ------------------
  |  |  |  | 2603|    495|        OP_MATH_OVERFLOW_INT(op_name,x,y);                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  | 2518|    495|#define OP_MATH_OVERFLOW_INT(op,x,y) regs[a] = mrb_bint_##op##_ii(mrb,x,y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  | 1335|    495|#define regs (mrb->c->ci->stack)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 2604|    495|      }                                                                     \
  |  |  |  | 2605|  1.04k|      else                                                                  \
  |  |  |  | 2606|  1.04k|        SET_INT_VALUE(mrb,regs[a], z);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  214|    554|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  |  |  |  |  ------------------
  |  |  |  | 2607|  1.04k|    }                                                                       \
  |  |  |  | 2608|  1.04k|    break
  |  |  ------------------
  |  | 2591|    264|    OP_MATHI_CASE_FLOAT(op_name);                                           \
  |  |  ------------------
  |  |  |  | 2613|    264|  case MRB_TT_FLOAT:                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2613:3): [True: 264, False: 1.47k]
  |  |  |  |  ------------------
  |  |  |  | 2614|    264|    {                                                                       \
  |  |  |  | 2615|    264|      mrb_float z = mrb_float(regs[a]) OP_MATH_OP_##op_name b;              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|    264|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  ------------------
  |  |  |  | 2616|    264|      SET_FLOAT_VALUE(mrb, regs[a], z);                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |  206|    264|#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
  |  |  |  |  ------------------
  |  |  |  | 2617|    264|    }                                                                       \
  |  |  |  | 2618|    264|    break
  |  |  ------------------
  |  | 2592|    421|    default:                                                                \
  |  |  ------------------
  |  |  |  Branch (2592:5): [True: 421, False: 1.31k]
  |  |  ------------------
  |  | 2593|    421|      SET_INT_VALUE(mrb,regs[a+1], b);                                      \
  |  |  ------------------
  |  |  |  |  214|    421|#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
  |  |  ------------------
  |  | 2594|    421|      mid = MRB_OPSYM(op_name);                                             \
  |  |  ------------------
  |  |  |  |   12|    421|#define MRB_OPSYM(name) MRB_OPSYM__##name
  |  |  ------------------
  |  | 2595|    421|      goto L_SEND_SYM;                                                      \
  |  | 2596|  1.73k|  }                                                                         \
  |  | 2597|  1.73k|  NEXT;
  |  |  ------------------
  |  |  |  | 1281|  1.31k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|  1.31k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|  1.31k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 1.31k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2627|  1.31k|    }
 2628|       |
 2629|      0|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
 2630|       |
 2631|       |#ifdef MRB_NO_FLOAT
 2632|       |#define OP_CMP(op,sym) do {\
 2633|       |  int result;\
 2634|       |  /* need to check if - is overridden */\
 2635|       |  switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {\
 2636|       |  case TYPES2(MRB_TT_INTEGER,MRB_TT_INTEGER):\
 2637|       |    result = OP_CMP_BODY(op,mrb_fixnum,mrb_fixnum);\
 2638|       |    break;\
 2639|       |  default:\
 2640|       |    mid = MRB_OPSYM(sym);\
 2641|       |    goto L_SEND_SYM;\
 2642|       |  }\
 2643|       |  if (result) {\
 2644|       |    SET_TRUE_VALUE(regs[a]);\
 2645|       |  }\
 2646|       |  else {\
 2647|       |    SET_FALSE_VALUE(regs[a]);\
 2648|       |  }\
 2649|       |} while(0)
 2650|       |#else
 2651|      0|#define OP_CMP(op, sym) do {\
 2652|      0|  int result;\
 2653|       |  /* need to check if - is overridden */\
 2654|      0|  switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {\
 2655|      0|  case TYPES2(MRB_TT_INTEGER,MRB_TT_INTEGER):\
 2656|      0|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
 2657|      0|    break;\
 2658|      0|  case TYPES2(MRB_TT_INTEGER,MRB_TT_FLOAT):\
 2659|      0|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
 2660|      0|    break;\
 2661|      0|  case TYPES2(MRB_TT_FLOAT,MRB_TT_INTEGER):\
 2662|      0|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
 2663|      0|    break;\
 2664|      0|  case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):\
 2665|      0|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
 2666|      0|    break;\
 2667|      0|  default:\
 2668|      0|    mid = MRB_OPSYM(sym);\
 2669|      0|    goto L_SEND_SYM;\
 2670|      0|  }\
 2671|      0|  if (result) {\
 2672|      0|    SET_TRUE_VALUE(regs[a]);\
 2673|      0|  }\
 2674|      0|  else {\
 2675|      0|    SET_FALSE_VALUE(regs[a]);\
 2676|      0|  }\
 2677|      0|} while(0)
 2678|      0|#endif
 2679|       |
 2680|   129k|    CASE(OP_EQ, B) {
  ------------------
  |  | 1280|  64.8k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2681|   129k|      if (mrb_obj_eq(mrb, regs[a], regs[a+1])) {
  ------------------
  |  | 1335|  64.8k|#define regs (mrb->c->ci->stack)
  ------------------
                    if (mrb_obj_eq(mrb, regs[a], regs[a+1])) {
  ------------------
  |  | 1335|  64.8k|#define regs (mrb->c->ci->stack)
  ------------------
  |  Branch (2681:11): [True: 36.9k, False: 27.8k]
  ------------------
 2682|  36.9k|        SET_TRUE_VALUE(regs[a]);
  ------------------
  |  |  212|  36.9k|#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
  ------------------
 2683|  36.9k|      }
 2684|  27.8k|      else {
 2685|  27.8k|        OP_CMP(==,eq);
  ------------------
  |  | 2651|  27.8k|#define OP_CMP(op, sym) do {\
  |  | 2652|  27.8k|  int result;\
  |  | 2653|  27.8k|  /* need to check if - is overridden */\
  |  | 2654|  27.8k|  switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {\
  |  |  ------------------
  |  |  |  | 2481|  27.8k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  | 2655|    433|  case TYPES2(MRB_TT_INTEGER,MRB_TT_INTEGER):\
  |  |  ------------------
  |  |  |  | 2481|    433|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2655:3): [True: 433, False: 27.4k]
  |  |  ------------------
  |  | 2656|    433|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  ------------------
  |  |  |  | 2629|    433|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2656|    433|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|    433|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2656|    433|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|    433|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2657|    433|    break;\
  |  | 2658|    101|  case TYPES2(MRB_TT_INTEGER,MRB_TT_FLOAT):\
  |  |  ------------------
  |  |  |  | 2481|    101|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2658:3): [True: 101, False: 27.7k]
  |  |  ------------------
  |  | 2659|    101|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  ------------------
  |  |  |  | 2629|    101|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2659|    101|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|    101|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2659|    101|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|    101|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2660|    101|    break;\
  |  | 2661|    276|  case TYPES2(MRB_TT_FLOAT,MRB_TT_INTEGER):\
  |  |  ------------------
  |  |  |  | 2481|    276|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2661:3): [True: 276, False: 27.5k]
  |  |  ------------------
  |  | 2662|    276|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  ------------------
  |  |  |  | 2629|    276|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2662|    276|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|    276|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2662|    276|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|    276|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2663|    276|    break;\
  |  | 2664|     10|  case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):\
  |  |  ------------------
  |  |  |  | 2481|     10|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2664:3): [True: 10, False: 27.8k]
  |  |  ------------------
  |  | 2665|     10|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  ------------------
  |  |  |  | 2629|     10|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2665|     10|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|     10|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2665|     10|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|     10|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2666|     10|    break;\
  |  | 2667|  27.0k|  default:\
  |  |  ------------------
  |  |  |  Branch (2667:3): [True: 27.0k, False: 820]
  |  |  ------------------
  |  | 2668|  27.0k|    mid = MRB_OPSYM(sym);\
  |  |  ------------------
  |  |  |  |   12|  27.0k|#define MRB_OPSYM(name) MRB_OPSYM__##name
  |  |  ------------------
  |  | 2669|  27.0k|    goto L_SEND_SYM;\
  |  | 2670|  27.8k|  }\
  |  | 2671|  27.8k|  if (result) {\
  |  |  ------------------
  |  |  |  Branch (2671:7): [True: 290, False: 530]
  |  |  ------------------
  |  | 2672|    290|    SET_TRUE_VALUE(regs[a]);\
  |  |  ------------------
  |  |  |  |  212|    290|#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
  |  |  ------------------
  |  | 2673|    290|  }\
  |  | 2674|    820|  else {\
  |  | 2675|    530|    SET_FALSE_VALUE(regs[a]);\
  |  |  ------------------
  |  |  |  |  211|    530|#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
  |  |  ------------------
  |  | 2676|    530|  }\
  |  | 2677|    820|} while(0)
  |  |  ------------------
  |  |  |  Branch (2677:9): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2686|  27.8k|      }
 2687|  37.7k|      NEXT;
  ------------------
  |  | 1281|  37.7k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  37.7k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  37.7k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 37.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2688|  37.7k|    }
 2689|       |
 2690|   201k|    CASE(OP_LT, B) {
  ------------------
  |  | 1280|   100k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2691|   201k|      OP_CMP(<,lt);
  ------------------
  |  | 2651|   100k|#define OP_CMP(op, sym) do {\
  |  | 2652|   100k|  int result;\
  |  | 2653|   100k|  /* need to check if - is overridden */\
  |  | 2654|   100k|  switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {\
  |  |  ------------------
  |  |  |  | 2481|   100k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  | 2655|   100k|  case TYPES2(MRB_TT_INTEGER,MRB_TT_INTEGER):\
  |  |  ------------------
  |  |  |  | 2481|   100k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2655:3): [True: 100k, False: 788]
  |  |  ------------------
  |  | 2656|   100k|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  ------------------
  |  |  |  | 2629|   100k|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2656|   100k|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|   100k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2656|   100k|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|   100k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2657|   100k|    break;\
  |  | 2658|    185|  case TYPES2(MRB_TT_INTEGER,MRB_TT_FLOAT):\
  |  |  ------------------
  |  |  |  | 2481|    185|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2658:3): [True: 185, False: 100k]
  |  |  ------------------
  |  | 2659|    185|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  ------------------
  |  |  |  | 2629|    185|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2659|    185|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|    185|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2659|    185|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|    185|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2660|    185|    break;\
  |  | 2661|    562|  case TYPES2(MRB_TT_FLOAT,MRB_TT_INTEGER):\
  |  |  ------------------
  |  |  |  | 2481|    562|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2661:3): [True: 562, False: 100k]
  |  |  ------------------
  |  | 2662|    562|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  ------------------
  |  |  |  | 2629|    562|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2662|    562|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|    562|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2662|    562|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|    562|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2663|    562|    break;\
  |  | 2664|     26|  case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):\
  |  |  ------------------
  |  |  |  | 2481|     26|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2664:3): [True: 26, False: 100k]
  |  |  ------------------
  |  | 2665|     26|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  ------------------
  |  |  |  | 2629|     26|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2665|     26|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|     26|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2665|     26|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|     26|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2666|     26|    break;\
  |  | 2667|     15|  default:\
  |  |  ------------------
  |  |  |  Branch (2667:3): [True: 15, False: 100k]
  |  |  ------------------
  |  | 2668|     15|    mid = MRB_OPSYM(sym);\
  |  |  ------------------
  |  |  |  |   12|     15|#define MRB_OPSYM(name) MRB_OPSYM__##name
  |  |  ------------------
  |  | 2669|     15|    goto L_SEND_SYM;\
  |  | 2670|   100k|  }\
  |  | 2671|   100k|  if (result) {\
  |  |  ------------------
  |  |  |  Branch (2671:7): [True: 85.0k, False: 15.9k]
  |  |  ------------------
  |  | 2672|  85.0k|    SET_TRUE_VALUE(regs[a]);\
  |  |  ------------------
  |  |  |  |  212|  85.0k|#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
  |  |  ------------------
  |  | 2673|  85.0k|  }\
  |  | 2674|   100k|  else {\
  |  | 2675|  15.9k|    SET_FALSE_VALUE(regs[a]);\
  |  |  ------------------
  |  |  |  |  211|  15.9k|#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
  |  |  ------------------
  |  | 2676|  15.9k|  }\
  |  | 2677|   100k|} while(0)
  |  |  ------------------
  |  |  |  Branch (2677:9): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2692|   100k|      NEXT;
  ------------------
  |  | 1281|   100k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|   100k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|   100k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 100k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2693|   100k|    }
 2694|       |
 2695|   100k|    CASE(OP_LE, B) {
  ------------------
  |  | 1280|   100k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2696|  8.35k|      OP_CMP(<=,le);
  ------------------
  |  | 2651|  4.18k|#define OP_CMP(op, sym) do {\
  |  | 2652|  4.18k|  int result;\
  |  | 2653|  4.18k|  /* need to check if - is overridden */\
  |  | 2654|  4.18k|  switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {\
  |  |  ------------------
  |  |  |  | 2481|  4.18k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  | 2655|  2.05k|  case TYPES2(MRB_TT_INTEGER,MRB_TT_INTEGER):\
  |  |  ------------------
  |  |  |  | 2481|  2.05k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2655:3): [True: 2.05k, False: 2.13k]
  |  |  ------------------
  |  | 2656|  2.05k|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  ------------------
  |  |  |  | 2629|  2.05k|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2656|  2.05k|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|  2.05k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2656|  2.05k|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|  2.05k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2657|  2.05k|    break;\
  |  | 2658|    419|  case TYPES2(MRB_TT_INTEGER,MRB_TT_FLOAT):\
  |  |  ------------------
  |  |  |  | 2481|    419|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2658:3): [True: 419, False: 3.76k]
  |  |  ------------------
  |  | 2659|    419|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  ------------------
  |  |  |  | 2629|    419|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2659|    419|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|    419|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2659|    419|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|    419|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2660|    419|    break;\
  |  | 2661|     70|  case TYPES2(MRB_TT_FLOAT,MRB_TT_INTEGER):\
  |  |  ------------------
  |  |  |  | 2481|     70|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2661:3): [True: 70, False: 4.11k]
  |  |  ------------------
  |  | 2662|     70|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  ------------------
  |  |  |  | 2629|     70|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2662|     70|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|     70|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2662|     70|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|     70|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2663|     70|    break;\
  |  | 2664|    293|  case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):\
  |  |  ------------------
  |  |  |  | 2481|    293|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2664:3): [True: 293, False: 3.89k]
  |  |  ------------------
  |  | 2665|    293|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  ------------------
  |  |  |  | 2629|    293|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2665|    293|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|    293|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2665|    293|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|    293|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2666|    293|    break;\
  |  | 2667|  1.34k|  default:\
  |  |  ------------------
  |  |  |  Branch (2667:3): [True: 1.34k, False: 2.83k]
  |  |  ------------------
  |  | 2668|  1.34k|    mid = MRB_OPSYM(sym);\
  |  |  ------------------
  |  |  |  |   12|  1.34k|#define MRB_OPSYM(name) MRB_OPSYM__##name
  |  |  ------------------
  |  | 2669|  1.34k|    goto L_SEND_SYM;\
  |  | 2670|  4.18k|  }\
  |  | 2671|  4.18k|  if (result) {\
  |  |  ------------------
  |  |  |  Branch (2671:7): [True: 1.21k, False: 1.62k]
  |  |  ------------------
  |  | 2672|  1.21k|    SET_TRUE_VALUE(regs[a]);\
  |  |  ------------------
  |  |  |  |  212|  1.21k|#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
  |  |  ------------------
  |  | 2673|  1.21k|  }\
  |  | 2674|  2.83k|  else {\
  |  | 2675|  1.62k|    SET_FALSE_VALUE(regs[a]);\
  |  |  ------------------
  |  |  |  |  211|  1.62k|#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
  |  |  ------------------
  |  | 2676|  1.62k|  }\
  |  | 2677|  2.83k|} while(0)
  |  |  ------------------
  |  |  |  Branch (2677:9): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2697|  2.83k|      NEXT;
  ------------------
  |  | 1281|  2.83k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  2.83k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  2.83k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 2.83k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2698|  2.83k|    }
 2699|       |
 2700|  5.68k|    CASE(OP_GT, B) {
  ------------------
  |  | 1280|  2.84k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2701|  5.68k|      OP_CMP(>,gt);
  ------------------
  |  | 2651|  2.84k|#define OP_CMP(op, sym) do {\
  |  | 2652|  2.84k|  int result;\
  |  | 2653|  2.84k|  /* need to check if - is overridden */\
  |  | 2654|  2.84k|  switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {\
  |  |  ------------------
  |  |  |  | 2481|  2.84k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  | 2655|  1.53k|  case TYPES2(MRB_TT_INTEGER,MRB_TT_INTEGER):\
  |  |  ------------------
  |  |  |  | 2481|  1.53k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2655:3): [True: 1.53k, False: 1.30k]
  |  |  ------------------
  |  | 2656|  1.53k|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  ------------------
  |  |  |  | 2629|  1.53k|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2656|  1.53k|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|  1.53k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2656|  1.53k|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|  1.53k|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2657|  1.53k|    break;\
  |  | 2658|    242|  case TYPES2(MRB_TT_INTEGER,MRB_TT_FLOAT):\
  |  |  ------------------
  |  |  |  | 2481|    242|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2658:3): [True: 242, False: 2.60k]
  |  |  ------------------
  |  | 2659|    242|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  ------------------
  |  |  |  | 2629|    242|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2659|    242|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|    242|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2659|    242|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|    242|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2660|    242|    break;\
  |  | 2661|    307|  case TYPES2(MRB_TT_FLOAT,MRB_TT_INTEGER):\
  |  |  ------------------
  |  |  |  | 2481|    307|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2661:3): [True: 307, False: 2.53k]
  |  |  ------------------
  |  | 2662|    307|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  ------------------
  |  |  |  | 2629|    307|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2662|    307|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|    307|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2662|    307|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|    307|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2663|    307|    break;\
  |  | 2664|     40|  case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):\
  |  |  ------------------
  |  |  |  | 2481|     40|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2664:3): [True: 40, False: 2.80k]
  |  |  ------------------
  |  | 2665|     40|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  ------------------
  |  |  |  | 2629|     40|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2665|     40|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|     40|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2665|     40|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|     40|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2666|     40|    break;\
  |  | 2667|    720|  default:\
  |  |  ------------------
  |  |  |  Branch (2667:3): [True: 720, False: 2.12k]
  |  |  ------------------
  |  | 2668|    720|    mid = MRB_OPSYM(sym);\
  |  |  ------------------
  |  |  |  |   12|    720|#define MRB_OPSYM(name) MRB_OPSYM__##name
  |  |  ------------------
  |  | 2669|    720|    goto L_SEND_SYM;\
  |  | 2670|  2.84k|  }\
  |  | 2671|  2.84k|  if (result) {\
  |  |  ------------------
  |  |  |  Branch (2671:7): [True: 625, False: 1.50k]
  |  |  ------------------
  |  | 2672|    625|    SET_TRUE_VALUE(regs[a]);\
  |  |  ------------------
  |  |  |  |  212|    625|#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
  |  |  ------------------
  |  | 2673|    625|  }\
  |  | 2674|  2.12k|  else {\
  |  | 2675|  1.50k|    SET_FALSE_VALUE(regs[a]);\
  |  |  ------------------
  |  |  |  |  211|  1.50k|#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
  |  |  ------------------
  |  | 2676|  1.50k|  }\
  |  | 2677|  2.12k|} while(0)
  |  |  ------------------
  |  |  |  Branch (2677:9): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2702|  2.12k|      NEXT;
  ------------------
  |  | 1281|  2.12k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  2.12k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  2.12k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 2.12k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2703|  2.12k|    }
 2704|       |
 2705|  2.43k|    CASE(OP_GE, B) {
  ------------------
  |  | 1280|  2.12k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2706|  2.43k|      OP_CMP(>=,ge);
  ------------------
  |  | 2651|  1.21k|#define OP_CMP(op, sym) do {\
  |  | 2652|  1.21k|  int result;\
  |  | 2653|  1.21k|  /* need to check if - is overridden */\
  |  | 2654|  1.21k|  switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {\
  |  |  ------------------
  |  |  |  | 2481|  1.21k|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  | 2655|    799|  case TYPES2(MRB_TT_INTEGER,MRB_TT_INTEGER):\
  |  |  ------------------
  |  |  |  | 2481|    799|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2655:3): [True: 799, False: 417]
  |  |  ------------------
  |  | 2656|    799|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  ------------------
  |  |  |  | 2629|    799|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2656|    799|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|    799|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2656|    799|    result = OP_CMP_BODY(op,mrb_integer,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|    799|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2657|    799|    break;\
  |  | 2658|    293|  case TYPES2(MRB_TT_INTEGER,MRB_TT_FLOAT):\
  |  |  ------------------
  |  |  |  | 2481|    293|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2658:3): [True: 293, False: 923]
  |  |  ------------------
  |  | 2659|    293|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  ------------------
  |  |  |  | 2629|    293|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2659|    293|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|    293|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2659|    293|    result = OP_CMP_BODY(op,mrb_integer,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|    293|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2660|    293|    break;\
  |  | 2661|     23|  case TYPES2(MRB_TT_FLOAT,MRB_TT_INTEGER):\
  |  |  ------------------
  |  |  |  | 2481|     23|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2661:3): [True: 23, False: 1.19k]
  |  |  ------------------
  |  | 2662|     23|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  ------------------
  |  |  |  | 2629|     23|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2662|     23|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|     23|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2662|     23|    result = OP_CMP_BODY(op,mrb_float,mrb_integer);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  166|     23|#define mrb_integer(o) mrb_integer_func(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2663|     23|    break;\
  |  | 2664|     57|  case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):\
  |  |  ------------------
  |  |  |  | 2481|     57|#define TYPES2(a,b) ((((uint16_t)(a))<<8)|(((uint16_t)(b))&0xff))
  |  |  ------------------
  |  |  |  Branch (2664:3): [True: 57, False: 1.15k]
  |  |  ------------------
  |  | 2665|     57|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  ------------------
  |  |  |  | 2629|     57|#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2665|     57|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|     57|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
  |  |  |  |  ------------------
  |  |  |  |  |  | 2665|     57|    result = OP_CMP_BODY(op,mrb_float,mrb_float);\
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  155|     57|#define mrb_float(o) mrb_word_boxing_value_float(o)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2666|     57|    break;\
  |  | 2667|     44|  default:\
  |  |  ------------------
  |  |  |  Branch (2667:3): [True: 44, False: 1.17k]
  |  |  ------------------
  |  | 2668|     44|    mid = MRB_OPSYM(sym);\
  |  |  ------------------
  |  |  |  |   12|     44|#define MRB_OPSYM(name) MRB_OPSYM__##name
  |  |  ------------------
  |  | 2669|     44|    goto L_SEND_SYM;\
  |  | 2670|  1.21k|  }\
  |  | 2671|  1.21k|  if (result) {\
  |  |  ------------------
  |  |  |  Branch (2671:7): [True: 1.12k, False: 51]
  |  |  ------------------
  |  | 2672|  1.12k|    SET_TRUE_VALUE(regs[a]);\
  |  |  ------------------
  |  |  |  |  212|  1.12k|#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
  |  |  ------------------
  |  | 2673|  1.12k|  }\
  |  | 2674|  1.17k|  else {\
  |  | 2675|     51|    SET_FALSE_VALUE(regs[a]);\
  |  |  ------------------
  |  |  |  |  211|     51|#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
  |  |  ------------------
  |  | 2676|     51|  }\
  |  | 2677|  1.17k|} while(0)
  |  |  ------------------
  |  |  |  Branch (2677:9): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2707|  1.17k|      NEXT;
  ------------------
  |  | 1281|  1.17k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  1.17k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  1.17k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 1.17k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2708|  1.17k|    }
 2709|       |
 2710|   138k|    CASE(OP_ARRAY, BB) {
  ------------------
  |  | 1280|  69.3k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2711|   138k|      regs[a] = ary_new_from_regs(mrb, b, a);
  ------------------
  |  | 1335|  69.3k|#define regs (mrb->c->ci->stack)
  ------------------
                    regs[a] = ary_new_from_regs(mrb, b, a);
  ------------------
  |  | 1348|  69.3k|#define ary_new_from_regs(mrb, argc, idx) mrb_ary_new_from_values(mrb, (argc), &regs[idx]);
  |  |  ------------------
  |  |  |  | 1335|  69.3k|#define regs (mrb->c->ci->stack)
  |  |  ------------------
  ------------------
 2712|   138k|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|  69.3k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2713|   138k|      NEXT;
  ------------------
  |  | 1281|  69.3k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  69.3k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  69.3k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 69.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2714|   138k|    }
 2715|   138k|    CASE(OP_ARRAY2, BBB) {
  ------------------
  |  | 1280|  69.3k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2716|      0|      regs[a] = ary_new_from_regs(mrb, c, b);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
                    regs[a] = ary_new_from_regs(mrb, c, b);
  ------------------
  |  | 1348|      0|#define ary_new_from_regs(mrb, argc, idx) mrb_ary_new_from_values(mrb, (argc), &regs[idx]);
  |  |  ------------------
  |  |  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  |  |  ------------------
  ------------------
 2717|      0|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|      0|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2718|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2719|      0|    }
 2720|       |
 2721|  60.0k|    CASE(OP_ARYCAT, B) {
  ------------------
  |  | 1280|  30.0k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2722|  60.0k|      mrb_value splat = mrb_ary_splat(mrb, regs[a+1]);
  ------------------
  |  | 1335|  30.0k|#define regs (mrb->c->ci->stack)
  ------------------
 2723|  60.0k|      if (mrb_nil_p(regs[a])) {
  ------------------
  |  |  174|  30.0k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 6.18k, False: 23.8k]
  |  |  ------------------
  ------------------
 2724|  6.18k|        regs[a] = splat;
  ------------------
  |  | 1335|  6.18k|#define regs (mrb->c->ci->stack)
  ------------------
 2725|  6.18k|      }
 2726|  23.8k|      else {
 2727|  23.8k|        mrb_assert(mrb_array_p(regs[a]));
  ------------------
  |  |   68|  23.8k|#define mrb_assert(p) ((void)0)
  ------------------
 2728|  23.8k|        mrb_ary_concat(mrb, regs[a], splat);
  ------------------
  |  | 1335|  23.8k|#define regs (mrb->c->ci->stack)
  ------------------
 2729|  23.8k|      }
 2730|  60.0k|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|  30.0k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2731|  60.0k|      NEXT;
  ------------------
  |  | 1281|  30.0k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  30.0k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  30.0k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 30.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2732|  60.0k|    }
 2733|       |
 2734|  68.8k|    CASE(OP_ARYPUSH, BB) {
  ------------------
  |  | 1280|  34.4k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2735|  68.8k|      mrb_assert(mrb_array_p(regs[a]));
  ------------------
  |  |   68|  34.4k|#define mrb_assert(p) ((void)0)
  ------------------
 2736|  93.0k|      for (mrb_int i=0; i<b; i++) {
  ------------------
  |  Branch (2736:25): [True: 58.5k, False: 34.4k]
  ------------------
 2737|  58.5k|        mrb_ary_push(mrb, regs[a], regs[a+i+1]);
  ------------------
  |  | 1335|  58.5k|#define regs (mrb->c->ci->stack)
  ------------------
                      mrb_ary_push(mrb, regs[a], regs[a+i+1]);
  ------------------
  |  | 1335|  58.5k|#define regs (mrb->c->ci->stack)
  ------------------
 2738|  58.5k|      }
 2739|  68.8k|      NEXT;
  ------------------
  |  | 1281|  34.4k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  34.4k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  34.4k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 34.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2740|  68.8k|    }
 2741|       |
 2742|  68.8k|    CASE(OP_ARYSPLAT, B) {
  ------------------
  |  | 1280|  34.4k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2743|      0|      mrb_value ary = mrb_ary_splat(mrb, regs[a]);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2744|      0|      regs[a] = ary;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2745|      0|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|      0|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2746|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2747|      0|    }
 2748|       |
 2749|      0|    CASE(OP_AREF, BBB) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2750|      0|      mrb_value v = regs[b];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2751|       |
 2752|      0|      if (!mrb_array_p(v)) {
  ------------------
  |  |  186|      0|#define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2753|      0|        if (c == 0) {
  ------------------
  |  Branch (2753:13): [True: 0, False: 0]
  ------------------
 2754|      0|          regs[a] = v;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2755|      0|        }
 2756|      0|        else {
 2757|      0|          SET_NIL_VALUE(regs[a]);
  ------------------
  |  |  210|      0|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
 2758|      0|        }
 2759|      0|      }
 2760|      0|      else {
 2761|      0|        v = mrb_ary_ref(mrb, v, c);
  ------------------
  |  |  231|      0|#define mrb_ary_ref(mrb, ary, n) mrb_ary_entry(ary, n)
  ------------------
 2762|      0|        regs[a] = v;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2763|      0|      }
 2764|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2765|      0|    }
 2766|       |
 2767|      0|    CASE(OP_ASET, BBB) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2768|      0|      mrb_assert(mrb_array_p(regs[a]));
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 2769|      0|      mrb_ary_set(mrb, regs[b], c, regs[a]);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
                    mrb_ary_set(mrb, regs[b], c, regs[a]);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2770|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2771|      0|    }
 2772|       |
 2773|      0|    CASE(OP_APOST, BBB) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2774|      0|      mrb_value v = regs[a];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2775|      0|      int pre  = b;
 2776|      0|      int post = c;
 2777|      0|      struct RArray *ary;
 2778|      0|      int len, idx;
 2779|       |
 2780|      0|      if (!mrb_array_p(v)) {
  ------------------
  |  |  186|      0|#define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2781|      0|        v = ary_new_from_regs(mrb, 1, a);
  ------------------
  |  | 1348|      0|#define ary_new_from_regs(mrb, argc, idx) mrb_ary_new_from_values(mrb, (argc), &regs[idx]);
  |  |  ------------------
  |  |  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  |  |  ------------------
  ------------------
 2782|      0|      }
 2783|      0|      ary = mrb_ary_ptr(v);
  ------------------
  |  |   51|      0|#define mrb_ary_ptr(v)    ((struct RArray*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|      0|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 2784|      0|      len = (int)ARY_LEN(ary);
  ------------------
  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  ------------------
  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2785|      0|      if (len > pre + post) {
  ------------------
  |  Branch (2785:11): [True: 0, False: 0]
  ------------------
 2786|      0|        v = mrb_ary_new_from_values(mrb, len - pre - post, ARY_PTR(ary)+pre);
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
 2787|      0|        regs[a++] = v;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2788|      0|        while (post--) {
  ------------------
  |  Branch (2788:16): [True: 0, False: 0]
  ------------------
 2789|      0|          regs[a++] = ARY_PTR(ary)[len-post-1];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
                        regs[a++] = ARY_PTR(ary)[len-post-1];
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
 2790|      0|        }
 2791|      0|      }
 2792|      0|      else {
 2793|      0|        v = mrb_ary_new_capa(mrb, 0);
 2794|      0|        regs[a++] = v;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2795|      0|        for (idx=0; idx+pre<len; idx++) {
  ------------------
  |  Branch (2795:21): [True: 0, False: 0]
  ------------------
 2796|      0|          regs[a+idx] = ARY_PTR(ary)[pre+idx];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
                        regs[a+idx] = ARY_PTR(ary)[pre+idx];
  ------------------
  |  |   71|      0|#define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  ------------------
  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr)
  |  |  ------------------
  |  |  |  |   67|      0|#define ARY_EMBED_PTR(a) ((a)->as.ary)
  |  |  ------------------
  ------------------
 2797|      0|        }
 2798|      0|        while (idx < post) {
  ------------------
  |  Branch (2798:16): [True: 0, False: 0]
  ------------------
 2799|      0|          SET_NIL_VALUE(regs[a+idx]);
  ------------------
  |  |  210|      0|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
 2800|      0|          idx++;
 2801|      0|        }
 2802|      0|      }
 2803|      0|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|      0|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2804|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2805|      0|    }
 2806|       |
 2807|      0|    CASE(OP_INTERN, B) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2808|      0|      mrb_assert(mrb_string_p(regs[a]));
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 2809|      0|      mrb_sym sym = mrb_intern_str(mrb, regs[a]);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2810|      0|      regs[a] = mrb_symbol_value(sym);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2811|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2812|      0|    }
 2813|       |
 2814|      0|    CASE(OP_SYMBOL, BB) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2815|      0|      size_t len;
 2816|      0|      mrb_sym sym;
 2817|       |
 2818|      0|      mrb_assert((pool[b].tt&IREP_TT_NFLAG)==0);
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 2819|      0|      len = pool[b].tt >> 2;
 2820|      0|      if (pool[b].tt & IREP_TT_SFLAG) {
  ------------------
  |  |   28|      0|#define IREP_TT_SFLAG 2       /* static string flag */
  ------------------
  |  Branch (2820:11): [True: 0, False: 0]
  ------------------
 2821|      0|        sym = mrb_intern_static(mrb, pool[b].u.str, len);
 2822|      0|      }
 2823|      0|      else {
 2824|      0|        sym  = mrb_intern(mrb, pool[b].u.str, len);
 2825|      0|      }
 2826|      0|      regs[a] = mrb_symbol_value(sym);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2827|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2828|      0|    }
 2829|       |
 2830|   200k|    CASE(OP_STRING, BB) {
  ------------------
  |  | 1280|   131k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2831|   200k|      mrb_int len;
 2832|       |
 2833|   200k|      mrb_assert((pool[b].tt&IREP_TT_NFLAG)==0);
  ------------------
  |  |   68|   131k|#define mrb_assert(p) ((void)0)
  ------------------
 2834|   200k|      len = pool[b].tt >> 2;
 2835|   200k|      if (pool[b].tt & IREP_TT_SFLAG) {
  ------------------
  |  |   28|   131k|#define IREP_TT_SFLAG 2       /* static string flag */
  ------------------
  |  Branch (2835:11): [True: 0, False: 131k]
  ------------------
 2836|      0|        regs[a] = mrb_str_new_static(mrb, pool[b].u.str, len);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2837|      0|      }
 2838|   131k|      else {
 2839|   131k|        regs[a] = mrb_str_new(mrb, pool[b].u.str, len);
  ------------------
  |  | 1335|   131k|#define regs (mrb->c->ci->stack)
  ------------------
 2840|   131k|      }
 2841|   200k|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|   131k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2842|   200k|      NEXT;
  ------------------
  |  | 1281|   131k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|   131k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|   131k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 131k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2843|   200k|    }
 2844|       |
 2845|   200k|    CASE(OP_STRCAT, B) {
  ------------------
  |  | 1280|   131k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2846|    160|      mrb_assert(mrb_string_p(regs[a]));
  ------------------
  |  |   68|     80|#define mrb_assert(p) ((void)0)
  ------------------
 2847|    160|      mrb_str_concat(mrb, regs[a], regs[a+1]);
  ------------------
  |  | 1335|     80|#define regs (mrb->c->ci->stack)
  ------------------
                    mrb_str_concat(mrb, regs[a], regs[a+1]);
  ------------------
  |  | 1335|     80|#define regs (mrb->c->ci->stack)
  ------------------
 2848|    160|      NEXT;
  ------------------
  |  | 1281|     80|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|     80|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|     80|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 80]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2849|    160|    }
 2850|       |
 2851|  1.64k|    CASE(OP_HASH, BB) {
  ------------------
  |  | 1280|    957|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2852|  1.64k|      mrb_value hash = mrb_hash_new_capa(mrb, b);
 2853|  1.64k|      int lim = a+b*2;
 2854|       |
 2855|  38.6k|      for (int i=a; i<lim; i+=2) {
  ------------------
  |  Branch (2855:21): [True: 37.7k, False: 957]
  ------------------
 2856|  37.7k|        mrb_hash_set(mrb, hash, regs[i], regs[i+1]);
  ------------------
  |  | 1335|  37.7k|#define regs (mrb->c->ci->stack)
  ------------------
                      mrb_hash_set(mrb, hash, regs[i], regs[i+1]);
  ------------------
  |  | 1335|  37.7k|#define regs (mrb->c->ci->stack)
  ------------------
 2857|  37.7k|      }
 2858|  1.64k|      regs[a] = hash;
  ------------------
  |  | 1335|    957|#define regs (mrb->c->ci->stack)
  ------------------
 2859|  1.64k|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|    957|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2860|  1.64k|      NEXT;
  ------------------
  |  | 1281|    957|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|    957|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|    957|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 957]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2861|  1.64k|    }
 2862|       |
 2863|  1.69k|    CASE(OP_HASHADD, BB) {
  ------------------
  |  | 1280|    957|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2864|  1.69k|      mrb_value hash;
 2865|  1.69k|      int lim = a+b*2+1;
 2866|       |
 2867|  1.69k|      hash = regs[a];
  ------------------
  |  | 1335|    846|#define regs (mrb->c->ci->stack)
  ------------------
 2868|  1.69k|      mrb_ensure_hash_type(mrb, hash);
 2869|  28.2k|      for (int i=a+1; i<lim; i+=2) {
  ------------------
  |  Branch (2869:23): [True: 27.4k, False: 846]
  ------------------
 2870|  27.4k|        mrb_hash_set(mrb, hash, regs[i], regs[i+1]);
  ------------------
  |  | 1335|  27.4k|#define regs (mrb->c->ci->stack)
  ------------------
                      mrb_hash_set(mrb, hash, regs[i], regs[i+1]);
  ------------------
  |  | 1335|  27.4k|#define regs (mrb->c->ci->stack)
  ------------------
 2871|  27.4k|      }
 2872|  1.69k|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|    846|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2873|  1.69k|      NEXT;
  ------------------
  |  | 1281|    846|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|    846|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|    846|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 846]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2874|  1.69k|    }
 2875|  1.69k|    CASE(OP_HASHCAT, B) {
  ------------------
  |  | 1280|    846|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2876|      0|      mrb_value hash = regs[a];
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2877|       |
 2878|      0|      mrb_assert(mrb_hash_p(hash));
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 2879|      0|      mrb_hash_merge(mrb, hash, regs[a+1]);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2880|      0|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|      0|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2881|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2882|      0|    }
 2883|       |
 2884|      0|    CASE(OP_LAMBDA, BB)
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2885|      0|    c = OP_L_LAMBDA;
  ------------------
  |  |   19|      0|#define OP_L_LAMBDA  (OP_L_STRICT|OP_L_CAPTURE)
  |  |  ------------------
  |  |  |  |   16|      0|#define OP_L_STRICT  1
  |  |  ------------------
  |  |               #define OP_L_LAMBDA  (OP_L_STRICT|OP_L_CAPTURE)
  |  |  ------------------
  |  |  |  |   17|      0|#define OP_L_CAPTURE 2
  |  |  ------------------
  ------------------
 2886|   218k|    L_MAKE_LAMBDA:
 2887|   218k|    {
 2888|   218k|      struct RProc *p;
 2889|   218k|      const mrb_irep *nirep = irep->reps[b];
 2890|       |
 2891|   218k|      if (c & OP_L_CAPTURE) {
  ------------------
  |  |   17|   218k|#define OP_L_CAPTURE 2
  ------------------
  |  Branch (2891:11): [True: 6.18k, False: 212k]
  ------------------
 2892|  6.18k|        p = mrb_closure_new(mrb, nirep);
 2893|  6.18k|      }
 2894|   212k|      else {
 2895|   212k|        p = mrb_proc_new(mrb, nirep);
 2896|   212k|        p->flags |= MRB_PROC_SCOPE;
  ------------------
  |  |   85|   212k|#define MRB_PROC_SCOPE 2048
  ------------------
 2897|   212k|      }
 2898|   218k|      if (c & OP_L_STRICT) p->flags |= MRB_PROC_STRICT;
  ------------------
  |  |   16|   218k|#define OP_L_STRICT  1
  ------------------
                    if (c & OP_L_STRICT) p->flags |= MRB_PROC_STRICT;
  ------------------
  |  |   67|   212k|#define MRB_PROC_STRICT 256
  ------------------
  |  Branch (2898:11): [True: 212k, False: 6.18k]
  ------------------
 2899|   218k|      regs[a] = mrb_obj_value(p);
  ------------------
  |  | 1335|   218k|#define regs (mrb->c->ci->stack)
  ------------------
 2900|   218k|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|   218k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2901|   218k|      NEXT;
  ------------------
  |  | 1281|   218k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|   218k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|   218k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 218k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2902|   218k|    }
 2903|   218k|    CASE(OP_BLOCK, BB) {
  ------------------
  |  | 1280|   218k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2904|  6.18k|      c = OP_L_BLOCK;
  ------------------
  |  |   20|  6.18k|#define OP_L_BLOCK   OP_L_CAPTURE
  |  |  ------------------
  |  |  |  |   17|  6.18k|#define OP_L_CAPTURE 2
  |  |  ------------------
  ------------------
 2905|  6.18k|      goto L_MAKE_LAMBDA;
 2906|  6.18k|    }
 2907|   212k|    CASE(OP_METHOD, BB) {
  ------------------
  |  | 1280|   212k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2908|   212k|      c = OP_L_METHOD;
  ------------------
  |  |   18|   212k|#define OP_L_METHOD  OP_L_STRICT
  |  |  ------------------
  |  |  |  |   16|   212k|#define OP_L_STRICT  1
  |  |  ------------------
  ------------------
 2909|   212k|      goto L_MAKE_LAMBDA;
 2910|   212k|    }
 2911|       |
 2912|   212k|    CASE(OP_RANGE_INC, B) {
  ------------------
  |  | 1280|   212k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2913|      0|      mrb_value v = mrb_range_new(mrb, regs[a], regs[a+1], FALSE);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
                    mrb_value v = mrb_range_new(mrb, regs[a], regs[a+1], FALSE);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
                    mrb_value v = mrb_range_new(mrb, regs[a], regs[a+1], FALSE);
  ------------------
  |  |   51|      0|#  define FALSE 0
  ------------------
 2914|      0|      regs[a] = v;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2915|      0|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|      0|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2916|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2917|      0|    }
 2918|       |
 2919|      0|    CASE(OP_RANGE_EXC, B) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2920|      0|      mrb_value v = mrb_range_new(mrb, regs[a], regs[a+1], TRUE);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
                    mrb_value v = mrb_range_new(mrb, regs[a], regs[a+1], TRUE);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
                    mrb_value v = mrb_range_new(mrb, regs[a], regs[a+1], TRUE);
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 2921|      0|      regs[a] = v;
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2922|      0|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|      0|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2923|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2924|      0|    }
 2925|       |
 2926|      0|    CASE(OP_OCLASS, B) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2927|      0|      regs[a] = mrb_obj_value(mrb->object_class);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 2928|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2929|      0|    }
 2930|       |
 2931|  60.9k|    CASE(OP_CLASS, BB) {
  ------------------
  |  | 1280|  30.4k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2932|  60.9k|      struct RClass *c = 0, *baseclass;
 2933|  60.9k|      mrb_value base, super;
 2934|  60.9k|      mrb_sym id = syms[b];
 2935|       |
 2936|  60.9k|      base = regs[a];
  ------------------
  |  | 1335|  30.4k|#define regs (mrb->c->ci->stack)
  ------------------
 2937|  60.9k|      super = regs[a+1];
  ------------------
  |  | 1335|  30.4k|#define regs (mrb->c->ci->stack)
  ------------------
 2938|  60.9k|      if (mrb_nil_p(base)) {
  ------------------
  |  |  174|  30.4k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 30.4k, False: 0]
  |  |  ------------------
  ------------------
 2939|  30.4k|        baseclass = MRB_PROC_TARGET_CLASS(mrb->c->ci->proc);
  ------------------
  |  |   74|  30.4k|#define MRB_PROC_TARGET_CLASS(p) (MRB_PROC_ENV_P(p) ? (p)->e.env->c : (p)->e.target_class)
  |  |  ------------------
  |  |  |  |   72|  30.4k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  30.4k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 30.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2940|  30.4k|        if (!baseclass) baseclass = mrb->object_class;
  ------------------
  |  Branch (2940:13): [True: 29.0k, False: 1.42k]
  ------------------
 2941|  30.4k|        base = mrb_obj_value(baseclass);
 2942|  30.4k|      }
 2943|  60.9k|      c = mrb_vm_define_class(mrb, base, super, id);
 2944|  60.9k|      regs[a] = mrb_obj_value(c);
  ------------------
  |  | 1335|  30.4k|#define regs (mrb->c->ci->stack)
  ------------------
 2945|  60.9k|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|  30.4k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2946|  60.9k|      NEXT;
  ------------------
  |  | 1281|  30.4k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  30.4k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  30.4k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 30.4k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2947|  60.9k|    }
 2948|       |
 2949|  60.9k|    CASE(OP_MODULE, BB) {
  ------------------
  |  | 1280|  30.4k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2950|  13.3k|      struct RClass *cls = 0, *baseclass;
 2951|  13.3k|      mrb_value base;
 2952|  13.3k|      mrb_sym id = syms[b];
 2953|       |
 2954|  13.3k|      base = regs[a];
  ------------------
  |  | 1335|  6.66k|#define regs (mrb->c->ci->stack)
  ------------------
 2955|  13.3k|      if (mrb_nil_p(base)) {
  ------------------
  |  |  174|  6.66k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 6.66k, False: 0]
  |  |  ------------------
  ------------------
 2956|  6.66k|        baseclass = MRB_PROC_TARGET_CLASS(mrb->c->ci->proc);
  ------------------
  |  |   74|  6.66k|#define MRB_PROC_TARGET_CLASS(p) (MRB_PROC_ENV_P(p) ? (p)->e.env->c : (p)->e.target_class)
  |  |  ------------------
  |  |  |  |   72|  6.66k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  6.66k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 6.66k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2957|  6.66k|        if (!baseclass) baseclass = mrb->object_class;
  ------------------
  |  Branch (2957:13): [True: 6.18k, False: 476]
  ------------------
 2958|  6.66k|        base = mrb_obj_value(baseclass);
 2959|  6.66k|      }
 2960|  13.3k|      cls = mrb_vm_define_module(mrb, base, id);
 2961|  13.3k|      regs[a] = mrb_obj_value(cls);
  ------------------
  |  | 1335|  6.66k|#define regs (mrb->c->ci->stack)
  ------------------
 2962|  13.3k|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|  6.66k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 2963|  13.3k|      NEXT;
  ------------------
  |  | 1281|  6.66k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  6.66k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  6.66k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 6.66k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2964|  13.3k|    }
 2965|       |
 2966|  63.7k|    CASE(OP_EXEC, BB)
  ------------------
  |  | 1280|  31.8k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2967|  63.7k|    {
 2968|  63.7k|      mrb_value recv = regs[a];
  ------------------
  |  | 1335|  31.8k|#define regs (mrb->c->ci->stack)
  ------------------
 2969|  63.7k|      struct RProc *p;
 2970|  63.7k|      const mrb_irep *nirep = irep->reps[b];
 2971|       |
 2972|       |      /* prepare closure */
 2973|  63.7k|      p = mrb_proc_new(mrb, nirep);
 2974|  63.7k|      p->c = NULL;
 2975|  63.7k|      mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)proc);
 2976|  63.7k|      MRB_PROC_SET_TARGET_CLASS(p, mrb_class_ptr(recv));
  ------------------
  |  |   75|  31.8k|#define MRB_PROC_SET_TARGET_CLASS(p,tc) do {\
  |  |   76|  31.8k|  if (MRB_PROC_ENV_P(p)) {\
  |  |  ------------------
  |  |  |  |   72|  31.8k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  31.8k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 31.8k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   77|      0|    (p)->e.env->c = (tc);\
  |  |   78|      0|    mrb_field_write_barrier(mrb, (struct RBasic*)(p)->e.env, (struct RBasic*)(tc));\
  |  |   79|      0|  }\
  |  |   80|  31.8k|  else {\
  |  |   81|  31.8k|    (p)->e.target_class = (tc);\
  |  |   82|  31.8k|    mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)(tc));\
  |  |   83|  31.8k|  }\
  |  |   84|  31.8k|} while (0)
  |  |  ------------------
  |  |  |  Branch (84:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 2977|  63.7k|      p->flags |= MRB_PROC_SCOPE;
  ------------------
  |  |   85|  31.8k|#define MRB_PROC_SCOPE 2048
  ------------------
 2978|       |
 2979|       |      /* prepare call stack */
 2980|  63.7k|      cipush(mrb, a, 0, mrb_class_ptr(recv), p, NULL, 0, 0);
  ------------------
  |  |   24|  31.8k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|  31.8k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 2981|       |
 2982|  63.7k|      irep = p->body.irep;
 2983|  63.7k|      pool = irep->pool;
 2984|  63.7k|      syms = irep->syms;
 2985|  63.7k|      stack_extend(mrb, irep->nregs);
 2986|  63.7k|      stack_clear(regs+1, irep->nregs-1);
  ------------------
  |  | 1335|  31.8k|#define regs (mrb->c->ci->stack)
  ------------------
 2987|  63.7k|      pc = irep->iseq;
 2988|  63.7k|      JUMP;
  ------------------
  |  | 1282|  31.8k|#define JUMP NEXT
  |  |  ------------------
  |  |  |  | 1281|  31.8k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1260|  31.8k|#define BYTECODE_DECODER(x) (x)
  |  |  |  |  ------------------
  |  |  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  |  |  ------------------
  |  |  |  |  |  | 1252|  31.8k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (1252:50): [True: 0, False: 31.8k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2989|  63.7k|    }
 2990|       |
 2991|   425k|    CASE(OP_DEF, BB) {
  ------------------
  |  | 1280|   212k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 2992|   425k|      struct RClass *target = mrb_class_ptr(regs[a]);
  ------------------
  |  |   24|   212k|#define mrb_class_ptr(v)    ((struct RClass*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|   212k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 2993|   425k|      struct RProc *p = mrb_proc_ptr(regs[a+1]);
  ------------------
  |  |   90|   212k|#define mrb_proc_ptr(v)    ((struct RProc*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|   212k|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
 2994|   425k|      mrb_method_t m;
 2995|   425k|      mrb_sym mid = syms[b];
 2996|       |
 2997|   425k|      MRB_METHOD_FROM_PROC(m, p);
  ------------------
  |  |  112|   212k|#define MRB_METHOD_FROM_PROC(m,pr) ((m)=(mrb_method_t)(pr))
  ------------------
 2998|   425k|      mrb_define_method_raw(mrb, target, mid, m);
 2999|   425k|      mrb_method_added(mrb, target, mid);
 3000|   425k|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|   212k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 3001|   425k|      regs[a] = mrb_symbol_value(mid);
  ------------------
  |  | 1335|   212k|#define regs (mrb->c->ci->stack)
  ------------------
 3002|   425k|      NEXT;
  ------------------
  |  | 1281|   212k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|   212k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|   212k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 212k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3003|   425k|    }
 3004|       |
 3005|   425k|    CASE(OP_SCLASS, B) {
  ------------------
  |  | 1280|   212k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 3006|  47.6k|      regs[a] = mrb_singleton_class(mrb, regs[a]);
  ------------------
  |  | 1335|  23.8k|#define regs (mrb->c->ci->stack)
  ------------------
                    regs[a] = mrb_singleton_class(mrb, regs[a]);
  ------------------
  |  | 1335|  23.8k|#define regs (mrb->c->ci->stack)
  ------------------
 3007|  47.6k|      mrb_gc_arena_restore(mrb, ai);
  ------------------
  |  | 1307|  23.8k|#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
  ------------------
 3008|  47.6k|      NEXT;
  ------------------
  |  | 1281|  23.8k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  23.8k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  23.8k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 23.8k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3009|  47.6k|    }
 3010|       |
 3011|   380k|    CASE(OP_TCLASS, B) {
  ------------------
  |  | 1280|   190k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 3012|   380k|      struct RClass *target = check_target_class(mrb);
 3013|   380k|      if (!target) goto L_RAISE;
  ------------------
  |  Branch (3013:11): [True: 0, False: 190k]
  ------------------
 3014|   190k|      regs[a] = mrb_obj_value(target);
  ------------------
  |  | 1335|   190k|#define regs (mrb->c->ci->stack)
  ------------------
 3015|   190k|      NEXT;
  ------------------
  |  | 1281|   190k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|   190k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|   190k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 190k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3016|   190k|    }
 3017|       |
 3018|   190k|    CASE(OP_ALIAS, BB) {
  ------------------
  |  | 1280|   190k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 3019|  56.1k|      struct RClass *target = check_target_class(mrb);
 3020|       |
 3021|  56.1k|      if (!target) goto L_RAISE;
  ------------------
  |  Branch (3021:11): [True: 0, False: 28.0k]
  ------------------
 3022|  28.0k|      mrb_alias_method(mrb, target, syms[a], syms[b]);
 3023|  28.0k|      mrb_method_added(mrb, target, syms[a]);
 3024|  28.0k|      NEXT;
  ------------------
  |  | 1281|  28.0k|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|  28.0k|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|  28.0k|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 28.0k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3025|  28.0k|    }
 3026|  28.0k|    CASE(OP_UNDEF, B) {
  ------------------
  |  | 1280|  28.0k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 3027|    952|      struct RClass *target = check_target_class(mrb);
 3028|       |
 3029|    952|      if (!target) goto L_RAISE;
  ------------------
  |  Branch (3029:11): [True: 0, False: 476]
  ------------------
 3030|    476|      mrb_undef_method_id(mrb, target, syms[a]);
 3031|    476|      NEXT;
  ------------------
  |  | 1281|    476|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|    476|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|    476|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 476]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3032|    476|    }
 3033|       |
 3034|    476|    CASE(OP_DEBUG, Z) {
  ------------------
  |  | 1280|    476|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 3035|      0|      FETCH_BBB();
  ------------------
  |  |   37|      0|#define FETCH_BBB() do {a=READ_B(); b=READ_B(); c=READ_B();} while (0)
  |  |  ------------------
  |  |  |  |   30|      0|#define READ_B() PEEK_B(pc++)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define PEEK_B(pc) (*(pc))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define FETCH_BBB() do {a=READ_B(); b=READ_B(); c=READ_B();} while (0)
  |  |  ------------------
  |  |  |  |   30|      0|#define READ_B() PEEK_B(pc++)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define PEEK_B(pc) (*(pc))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define FETCH_BBB() do {a=READ_B(); b=READ_B(); c=READ_B();} while (0)
  |  |  ------------------
  |  |  |  |   30|      0|#define READ_B() PEEK_B(pc++)
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#define PEEK_B(pc) (*(pc))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (37:69): [Folded - Ignored]
  |  |  ------------------
  ------------------
 3036|      0|#ifdef MRB_USE_DEBUG_HOOK
 3037|      0|      mrb->debug_op_hook(mrb, irep, pc, regs);
  ------------------
  |  | 1335|      0|#define regs (mrb->c->ci->stack)
  ------------------
 3038|       |#else
 3039|       |#ifndef MRB_NO_STDIO
 3040|       |      printf("OP_DEBUG %d %d %d\n", a, b, c);
 3041|       |#else
 3042|       |      abort();
 3043|       |#endif
 3044|       |#endif
 3045|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3046|      0|    }
 3047|       |
 3048|      0|    CASE(OP_ERR, B) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 3049|      0|      size_t len = pool[a].tt >> 2;
 3050|      0|      mrb_value exc;
 3051|       |
 3052|      0|      mrb_assert((pool[a].tt&IREP_TT_NFLAG)==0);
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
 3053|      0|      exc = mrb_exc_new(mrb, E_LOCALJUMP_ERROR, pool[a].u.str, len);
  ------------------
  |  | 1384|      0|#define E_LOCALJUMP_ERROR    mrb_exc_get_id(mrb, MRB_ERROR_SYM(LocalJumpError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3054|      0|      RAISE_EXC(mrb, exc);
  ------------------
  |  | 1157|      0|#define RAISE_EXC(mrb, exc) do { \
  |  | 1158|      0|  mrb_value exc_value = (exc); \
  |  | 1159|      0|  mrb_exc_set(mrb, exc_value); \
  |  | 1160|      0|  goto L_RAISE; \
  |  | 1161|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1161:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
 3055|      0|    }
 3056|       |
 3057|   232k|    CASE(OP_EXT1, Z) {
  ------------------
  |  | 1280|   116k|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 3058|   232k|      insn = READ_B();
  ------------------
  |  |   30|   116k|#define READ_B() PEEK_B(pc++)
  |  |  ------------------
  |  |  |  |   26|   116k|#define PEEK_B(pc) (*(pc))
  |  |  ------------------
  ------------------
 3059|   232k|      switch (insn) {
  ------------------
  |  Branch (3059:15): [True: 0, False: 116k]
  ------------------
 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
 3061|   232k|#include "mruby/ops.h"
  ------------------
  |  |    1|       |/* operand types:
  |  |    2|       |   + Z: no operand
  |  |    3|       |   + B: 8bit
  |  |    4|       |   + BB: 8+8bit
  |  |    5|       |   + BBB: 8+8+8bit
  |  |    6|       |   + BS: 8+16bit
  |  |    7|       |   + BSS: 8+16+16bit
  |  |    8|       |   + S: 16bit
  |  |    9|       |   + W: 24bit
  |  |   10|       |*/
  |  |   11|       |
  |  |   12|       |/*-----------------------------------------------------------------------
  |  |   13|       |operation code    operands      semantics
  |  |   14|       |------------------------------------------------------------------------*/
  |  |   15|      0|OPCODE(NOP,        Z)        /* no operation */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   16|    778|OPCODE(MOVE,       BB)       /* R[a] = R[b] */
  |  |  ------------------
  |  |  |  | 3060|    778|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 778, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   17|     50|OPCODE(LOADL,      BB)       /* R[a] = Pool[b] */
  |  |  ------------------
  |  |  |  | 3060|     50|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 50, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   18|    147|OPCODE(LOADI,      BB)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  | 3060|    147|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 147, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   19|     48|OPCODE(LOADINEG,   BB)       /* R[a] = mrb_int(-b) */
  |  |  ------------------
  |  |  |  | 3060|     48|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 48, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   20|      0|OPCODE(LOADI__1,   B)        /* R[a] = mrb_int(-1) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   21|    231|OPCODE(LOADI_0,    B)        /* R[a] = mrb_int(0) */
  |  |  ------------------
  |  |  |  | 3060|    231|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 231, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   22|  48.7k|OPCODE(LOADI_1,    B)        /* R[a] = mrb_int(1) */
  |  |  ------------------
  |  |  |  | 3060|  48.7k|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 48.7k, False: 67.3k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   23|     67|OPCODE(LOADI_2,    B)        /* R[a] = mrb_int(2) */
  |  |  ------------------
  |  |  |  | 3060|     67|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 67, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   24|    306|OPCODE(LOADI_3,    B)        /* R[a] = mrb_int(3) */
  |  |  ------------------
  |  |  |  | 3060|    306|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 306, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   25|     64|OPCODE(LOADI_4,    B)        /* R[a] = mrb_int(4) */
  |  |  ------------------
  |  |  |  | 3060|     64|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 64, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   26|    176|OPCODE(LOADI_5,    B)        /* R[a] = mrb_int(5) */
  |  |  ------------------
  |  |  |  | 3060|    176|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 176, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   27|    245|OPCODE(LOADI_6,    B)        /* R[a] = mrb_int(6) */
  |  |  ------------------
  |  |  |  | 3060|    245|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 245, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   28|     37|OPCODE(LOADI_7,    B)        /* R[a] = mrb_int(7) */
  |  |  ------------------
  |  |  |  | 3060|     37|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 37, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   29|      0|OPCODE(LOADI16,    BS)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   30|     48|OPCODE(LOADI32,    BSS)      /* R[a] = mrb_int((b<<16)+c) */
  |  |  ------------------
  |  |  |  | 3060|     48|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 48, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   31|      0|OPCODE(LOADSYM,    BB)       /* R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|      0|OPCODE(LOADNIL,    B)        /* R[a] = nil */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   33|      0|OPCODE(LOADSELF,   B)        /* R[a] = self */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   34|      0|OPCODE(LOADT,      B)        /* R[a] = true */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   35|      0|OPCODE(LOADF,      B)        /* R[a] = false */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      0|OPCODE(GETGV,      BB)       /* R[a] = getglobal(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|OPCODE(SETGV,      BB)       /* setglobal(Syms[b], R[a]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|OPCODE(GETSV,      BB)       /* R[a] = Special[Syms[b]] */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   39|      0|OPCODE(SETSV,      BB)       /* Special[Syms[b]] = R[a] */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   40|      0|OPCODE(GETIV,      BB)       /* R[a] = ivget(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|      0|OPCODE(SETIV,      BB)       /* ivset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|      0|OPCODE(GETCV,      BB)       /* R[a] = cvget(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|OPCODE(SETCV,      BB)       /* cvset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|    255|OPCODE(GETCONST,   BB)       /* R[a] = constget(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3060|    255|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 255, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|OPCODE(SETCONST,   BB)       /* constset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|    255|OPCODE(GETMCNST,   BB)       /* R[a] = R[a]::Syms[b] */
  |  |  ------------------
  |  |  |  | 3060|    255|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 255, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|OPCODE(SETMCNST,   BB)       /* R[a+1]::Syms[b] = R[a] */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   48|      0|OPCODE(GETUPVAR,   BBB)      /* R[a] = uvget(b,c) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      0|OPCODE(SETUPVAR,   BBB)      /* uvset(b,c,R[a]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   50|      0|OPCODE(GETIDX,     B)        /* R[a] = R[a][R[a+1]] */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   51|      0|OPCODE(SETIDX,     B)        /* R[a][R[a+1]] = R[a+2] */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   52|      0|OPCODE(JMP,        S)        /* pc+=a */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|      4|OPCODE(JMPIF,      BS)       /* if R[a] pc+=b */
  |  |  ------------------
  |  |  |  | 3060|      4|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 4, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|    231|OPCODE(JMPNOT,     BS)       /* if !R[a] pc+=b */
  |  |  ------------------
  |  |  |  | 3060|    231|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 231, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      0|OPCODE(JMPNIL,     BS)       /* if R[a]==nil pc+=b */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|OPCODE(JMPUW,      S)        /* unwind_and_jump_to(a) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   57|      0|OPCODE(EXCEPT,     B)        /* R[a] = exc */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|OPCODE(RESCUE,     BB)       /* R[b] = R[a].isa?(R[b]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   59|      0|OPCODE(RAISEIF,    B)        /* raise(R[a]) if R[a] */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   60|      0|OPCODE(SSEND,      BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|OPCODE(SSENDB,     BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|     89|OPCODE(SEND,       BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  | 3060|     89|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 89, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   63|      0|OPCODE(SENDB,      BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      0|OPCODE(CALL,       Z)        /* self.call(*, **, &) (But overlay the current call frame; tailcall) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   65|      0|OPCODE(SUPER,      BB)       /* R[a] = super(R[a+1],... ,R[a+b+1]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   66|      0|OPCODE(ARGARY,     BS)       /* R[a] = argument array (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|OPCODE(ENTER,      W)        /* arg setup according to flags (23=m5:o5:r1:m5:k5:d1:b1) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   68|      0|OPCODE(KEY_P,      BB)       /* R[a] = kdict.key?(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      0|OPCODE(KEYEND,     Z)        /* raise unless kdict.empty? */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   70|      0|OPCODE(KARG,       BB)       /* R[a] = kdict[Syms[b]]; kdict.delete(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|OPCODE(RETURN,     B)        /* return R[a] (normal) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      0|OPCODE(RETURN_BLK, B)        /* return R[a] (in-block return) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|OPCODE(BREAK,      B)        /* break R[a] */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   74|      0|OPCODE(BLKPUSH,    BS)       /* R[a] = block (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|     88|OPCODE(ADD,        B)        /* R[a] = R[a]+R[a+1] */
  |  |  ------------------
  |  |  |  | 3060|     88|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 88, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|     15|OPCODE(ADDI,       BB)       /* R[a] = R[a]+mrb_int(b) */
  |  |  ------------------
  |  |  |  | 3060|     15|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 15, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   77|    124|OPCODE(SUB,        B)        /* R[a] = R[a]-R[a+1] */
  |  |  ------------------
  |  |  |  | 3060|    124|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 124, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|     14|OPCODE(SUBI,       BB)       /* R[a] = R[a]-mrb_int(b) */
  |  |  ------------------
  |  |  |  | 3060|     14|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 14, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   79|    289|OPCODE(MUL,        B)        /* R[a] = R[a]*R[a+1] */
  |  |  ------------------
  |  |  |  | 3060|    289|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 289, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   80|    310|OPCODE(DIV,        B)        /* R[a] = R[a]/R[a+1] */
  |  |  ------------------
  |  |  |  | 3060|    310|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 310, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   81|     14|OPCODE(EQ,         B)        /* R[a] = R[a]==R[a+1] */
  |  |  ------------------
  |  |  |  | 3060|     14|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 14, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      4|OPCODE(LT,         B)        /* R[a] = R[a]<R[a+1] */
  |  |  ------------------
  |  |  |  | 3060|      4|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 4, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|     23|OPCODE(LE,         B)        /* R[a] = R[a]<=R[a+1] */
  |  |  ------------------
  |  |  |  | 3060|     23|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 23, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   84|     12|OPCODE(GT,         B)        /* R[a] = R[a]>R[a+1] */
  |  |  ------------------
  |  |  |  | 3060|     12|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 12, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   85|      0|OPCODE(GE,         B)        /* R[a] = R[a]>=R[a+1] */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   86|      0|OPCODE(ARRAY,      BB)       /* R[a] = ary_new(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   87|      0|OPCODE(ARRAY2,     BBB)      /* R[a] = ary_new(R[b],R[b+1]..R[b+c]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   88|      0|OPCODE(ARYCAT,     B)        /* ary_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|OPCODE(ARYPUSH,    BB)       /* ary_push(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|OPCODE(ARYSPLAT,   B)        /* R[a] = ary_splat(R[a]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   91|      0|OPCODE(AREF,       BBB)      /* R[a] = R[b][c] */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      0|OPCODE(ASET,       BBB)      /* R[b][c] = R[a] */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   93|      0|OPCODE(APOST,      BBB)      /* *R[a],R[a+1]..R[a+c] = R[a][b..] */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   94|      0|OPCODE(INTERN,     B)        /* R[a] = intern(R[a]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   95|      0|OPCODE(SYMBOL,     BB)       /* R[a] = intern(Pool[b]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   96|  63.1k|OPCODE(STRING,     BB)       /* R[a] = str_dup(Pool[b]) */
  |  |  ------------------
  |  |  |  | 3060|  63.1k|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 63.1k, False: 52.8k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   97|      0|OPCODE(STRCAT,     B)        /* str_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   98|    218|OPCODE(HASH,       BB)       /* R[a] = hash_new(R[a],R[a+1]..R[a+b*2-1]) */
  |  |  ------------------
  |  |  |  | 3060|    218|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 218, False: 115k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   99|      0|OPCODE(HASHADD,    BB)       /* hash_push(R[a],R[a+1]..R[a+b*2]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  100|      0|OPCODE(HASHCAT,    B)        /* R[a] = hash_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|      0|OPCODE(LAMBDA,     BB)       /* R[a] = lambda(Irep[b],L_LAMBDA) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  102|      0|OPCODE(BLOCK,      BB)       /* R[a] = lambda(Irep[b],L_BLOCK) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|OPCODE(METHOD,     BB)       /* R[a] = lambda(Irep[b],L_METHOD) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  104|      0|OPCODE(RANGE_INC,  B)        /* R[a] = range_new(R[a],R[a+1],FALSE) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|      0|OPCODE(RANGE_EXC,  B)        /* R[a] = range_new(R[a],R[a+1],TRUE) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  106|      0|OPCODE(OCLASS,     B)        /* R[a] = ::Object */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  107|      0|OPCODE(CLASS,      BB)       /* R[a] = newclass(R[a],Syms[b],R[a+1]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  108|      0|OPCODE(MODULE,     BB)       /* R[a] = newmodule(R[a],Syms[b]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|OPCODE(EXEC,       BB)       /* R[a] = blockexec(R[a],Irep[b]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  110|      0|OPCODE(DEF,        BB)       /* R[a].newmethod(Syms[b],R[a+1]); R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  111|      0|OPCODE(ALIAS,      BB)       /* alias_method(target_class,Syms[a],Syms[b]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      0|OPCODE(UNDEF,      B)        /* undef_method(target_class,Syms[a]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|      0|OPCODE(SCLASS,     B)        /* R[a] = R[a].singleton_class */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  114|      0|OPCODE(TCLASS,     B)        /* R[a] = target_class */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      0|OPCODE(DEBUG,      BBB)      /* print a,b,c */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  116|      0|OPCODE(ERR,        B)        /* raise(LocalJumpError, Pool[a]) */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  117|      0|OPCODE(EXT1,       Z)        /* make 1st operand (a) 16bit */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|      0|OPCODE(EXT2,       Z)        /* make 2nd operand (b) 16bit */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  119|      0|OPCODE(EXT3,       Z)        /* make 1st and 2nd operands 16bit */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      0|OPCODE(STOP,       Z)        /* stop VM */
  |  |  ------------------
  |  |  |  | 3060|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3060:26): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3062|   232k|#undef OPCODE
 3063|   232k|      }
 3064|      0|      pc--;
 3065|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3066|      0|    }
 3067|    246|    CASE(OP_EXT2, Z) {
  ------------------
  |  | 1280|    123|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 3068|    246|      insn = READ_B();
  ------------------
  |  |   30|    123|#define READ_B() PEEK_B(pc++)
  |  |  ------------------
  |  |  |  |   26|    123|#define PEEK_B(pc) (*(pc))
  |  |  ------------------
  ------------------
 3069|    246|      switch (insn) {
  ------------------
  |  Branch (3069:15): [True: 0, False: 123]
  ------------------
 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
 3071|    246|#include "mruby/ops.h"
  ------------------
  |  |    1|       |/* operand types:
  |  |    2|       |   + Z: no operand
  |  |    3|       |   + B: 8bit
  |  |    4|       |   + BB: 8+8bit
  |  |    5|       |   + BBB: 8+8+8bit
  |  |    6|       |   + BS: 8+16bit
  |  |    7|       |   + BSS: 8+16+16bit
  |  |    8|       |   + S: 16bit
  |  |    9|       |   + W: 24bit
  |  |   10|       |*/
  |  |   11|       |
  |  |   12|       |/*-----------------------------------------------------------------------
  |  |   13|       |operation code    operands      semantics
  |  |   14|       |------------------------------------------------------------------------*/
  |  |   15|      0|OPCODE(NOP,        Z)        /* no operation */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   16|      0|OPCODE(MOVE,       BB)       /* R[a] = R[b] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   17|     48|OPCODE(LOADL,      BB)       /* R[a] = Pool[b] */
  |  |  ------------------
  |  |  |  | 3070|     48|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 48, False: 75]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   18|      0|OPCODE(LOADI,      BB)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   19|      0|OPCODE(LOADINEG,   BB)       /* R[a] = mrb_int(-b) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   20|      0|OPCODE(LOADI__1,   B)        /* R[a] = mrb_int(-1) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   21|      0|OPCODE(LOADI_0,    B)        /* R[a] = mrb_int(0) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   22|      0|OPCODE(LOADI_1,    B)        /* R[a] = mrb_int(1) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   23|      0|OPCODE(LOADI_2,    B)        /* R[a] = mrb_int(2) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   24|      0|OPCODE(LOADI_3,    B)        /* R[a] = mrb_int(3) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   25|      0|OPCODE(LOADI_4,    B)        /* R[a] = mrb_int(4) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   26|      0|OPCODE(LOADI_5,    B)        /* R[a] = mrb_int(5) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   27|      0|OPCODE(LOADI_6,    B)        /* R[a] = mrb_int(6) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   28|      0|OPCODE(LOADI_7,    B)        /* R[a] = mrb_int(7) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   29|      0|OPCODE(LOADI16,    BS)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   30|      0|OPCODE(LOADI32,    BSS)      /* R[a] = mrb_int((b<<16)+c) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   31|      0|OPCODE(LOADSYM,    BB)       /* R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|      0|OPCODE(LOADNIL,    B)        /* R[a] = nil */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   33|      0|OPCODE(LOADSELF,   B)        /* R[a] = self */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   34|      0|OPCODE(LOADT,      B)        /* R[a] = true */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   35|      0|OPCODE(LOADF,      B)        /* R[a] = false */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      0|OPCODE(GETGV,      BB)       /* R[a] = getglobal(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|OPCODE(SETGV,      BB)       /* setglobal(Syms[b], R[a]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|OPCODE(GETSV,      BB)       /* R[a] = Special[Syms[b]] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   39|      0|OPCODE(SETSV,      BB)       /* Special[Syms[b]] = R[a] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   40|      0|OPCODE(GETIV,      BB)       /* R[a] = ivget(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|      0|OPCODE(SETIV,      BB)       /* ivset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|      0|OPCODE(GETCV,      BB)       /* R[a] = cvget(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|OPCODE(SETCV,      BB)       /* cvset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|OPCODE(GETCONST,   BB)       /* R[a] = constget(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|OPCODE(SETCONST,   BB)       /* constset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|OPCODE(GETMCNST,   BB)       /* R[a] = R[a]::Syms[b] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|OPCODE(SETMCNST,   BB)       /* R[a+1]::Syms[b] = R[a] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   48|      0|OPCODE(GETUPVAR,   BBB)      /* R[a] = uvget(b,c) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      0|OPCODE(SETUPVAR,   BBB)      /* uvset(b,c,R[a]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   50|      0|OPCODE(GETIDX,     B)        /* R[a] = R[a][R[a+1]] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   51|      0|OPCODE(SETIDX,     B)        /* R[a][R[a+1]] = R[a+2] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   52|      0|OPCODE(JMP,        S)        /* pc+=a */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|      0|OPCODE(JMPIF,      BS)       /* if R[a] pc+=b */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|      0|OPCODE(JMPNOT,     BS)       /* if !R[a] pc+=b */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      0|OPCODE(JMPNIL,     BS)       /* if R[a]==nil pc+=b */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|OPCODE(JMPUW,      S)        /* unwind_and_jump_to(a) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   57|      0|OPCODE(EXCEPT,     B)        /* R[a] = exc */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|OPCODE(RESCUE,     BB)       /* R[b] = R[a].isa?(R[b]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   59|      0|OPCODE(RAISEIF,    B)        /* raise(R[a]) if R[a] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   60|      0|OPCODE(SSEND,      BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|OPCODE(SSENDB,     BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|      0|OPCODE(SEND,       BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   63|      0|OPCODE(SENDB,      BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      0|OPCODE(CALL,       Z)        /* self.call(*, **, &) (But overlay the current call frame; tailcall) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   65|      0|OPCODE(SUPER,      BB)       /* R[a] = super(R[a+1],... ,R[a+b+1]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   66|      0|OPCODE(ARGARY,     BS)       /* R[a] = argument array (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|OPCODE(ENTER,      W)        /* arg setup according to flags (23=m5:o5:r1:m5:k5:d1:b1) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   68|      0|OPCODE(KEY_P,      BB)       /* R[a] = kdict.key?(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      0|OPCODE(KEYEND,     Z)        /* raise unless kdict.empty? */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   70|      0|OPCODE(KARG,       BB)       /* R[a] = kdict[Syms[b]]; kdict.delete(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|OPCODE(RETURN,     B)        /* return R[a] (normal) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      0|OPCODE(RETURN_BLK, B)        /* return R[a] (in-block return) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|OPCODE(BREAK,      B)        /* break R[a] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   74|      0|OPCODE(BLKPUSH,    BS)       /* R[a] = block (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|OPCODE(ADD,        B)        /* R[a] = R[a]+R[a+1] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|OPCODE(ADDI,       BB)       /* R[a] = R[a]+mrb_int(b) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   77|      0|OPCODE(SUB,        B)        /* R[a] = R[a]-R[a+1] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|      0|OPCODE(SUBI,       BB)       /* R[a] = R[a]-mrb_int(b) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   79|      0|OPCODE(MUL,        B)        /* R[a] = R[a]*R[a+1] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   80|      0|OPCODE(DIV,        B)        /* R[a] = R[a]/R[a+1] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   81|      0|OPCODE(EQ,         B)        /* R[a] = R[a]==R[a+1] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|OPCODE(LT,         B)        /* R[a] = R[a]<R[a+1] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|OPCODE(LE,         B)        /* R[a] = R[a]<=R[a+1] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   84|      0|OPCODE(GT,         B)        /* R[a] = R[a]>R[a+1] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   85|      0|OPCODE(GE,         B)        /* R[a] = R[a]>=R[a+1] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   86|     32|OPCODE(ARRAY,      BB)       /* R[a] = ary_new(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  | 3070|     32|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 32, False: 91]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   87|      0|OPCODE(ARRAY2,     BBB)      /* R[a] = ary_new(R[b],R[b+1]..R[b+c]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   88|      0|OPCODE(ARYCAT,     B)        /* ary_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|OPCODE(ARYPUSH,    BB)       /* ary_push(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|OPCODE(ARYSPLAT,   B)        /* R[a] = ary_splat(R[a]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   91|      0|OPCODE(AREF,       BBB)      /* R[a] = R[b][c] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      0|OPCODE(ASET,       BBB)      /* R[b][c] = R[a] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   93|      0|OPCODE(APOST,      BBB)      /* *R[a],R[a+1]..R[a+c] = R[a][b..] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   94|      0|OPCODE(INTERN,     B)        /* R[a] = intern(R[a]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   95|      0|OPCODE(SYMBOL,     BB)       /* R[a] = intern(Pool[b]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   96|      3|OPCODE(STRING,     BB)       /* R[a] = str_dup(Pool[b]) */
  |  |  ------------------
  |  |  |  | 3070|      3|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 3, False: 120]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   97|      0|OPCODE(STRCAT,     B)        /* str_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   98|     40|OPCODE(HASH,       BB)       /* R[a] = hash_new(R[a],R[a+1]..R[a+b*2-1]) */
  |  |  ------------------
  |  |  |  | 3070|     40|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 40, False: 83]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   99|      0|OPCODE(HASHADD,    BB)       /* hash_push(R[a],R[a+1]..R[a+b*2]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  100|      0|OPCODE(HASHCAT,    B)        /* R[a] = hash_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|      0|OPCODE(LAMBDA,     BB)       /* R[a] = lambda(Irep[b],L_LAMBDA) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  102|      0|OPCODE(BLOCK,      BB)       /* R[a] = lambda(Irep[b],L_BLOCK) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|OPCODE(METHOD,     BB)       /* R[a] = lambda(Irep[b],L_METHOD) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  104|      0|OPCODE(RANGE_INC,  B)        /* R[a] = range_new(R[a],R[a+1],FALSE) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|      0|OPCODE(RANGE_EXC,  B)        /* R[a] = range_new(R[a],R[a+1],TRUE) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  106|      0|OPCODE(OCLASS,     B)        /* R[a] = ::Object */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  107|      0|OPCODE(CLASS,      BB)       /* R[a] = newclass(R[a],Syms[b],R[a+1]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  108|      0|OPCODE(MODULE,     BB)       /* R[a] = newmodule(R[a],Syms[b]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|OPCODE(EXEC,       BB)       /* R[a] = blockexec(R[a],Irep[b]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  110|      0|OPCODE(DEF,        BB)       /* R[a].newmethod(Syms[b],R[a+1]); R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  111|      0|OPCODE(ALIAS,      BB)       /* alias_method(target_class,Syms[a],Syms[b]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      0|OPCODE(UNDEF,      B)        /* undef_method(target_class,Syms[a]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|      0|OPCODE(SCLASS,     B)        /* R[a] = R[a].singleton_class */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  114|      0|OPCODE(TCLASS,     B)        /* R[a] = target_class */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      0|OPCODE(DEBUG,      BBB)      /* print a,b,c */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  116|      0|OPCODE(ERR,        B)        /* raise(LocalJumpError, Pool[a]) */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  117|      0|OPCODE(EXT1,       Z)        /* make 1st operand (a) 16bit */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|      0|OPCODE(EXT2,       Z)        /* make 2nd operand (b) 16bit */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  119|      0|OPCODE(EXT3,       Z)        /* make 1st and 2nd operands 16bit */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      0|OPCODE(STOP,       Z)        /* stop VM */
  |  |  ------------------
  |  |  |  | 3070|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3070:26): [True: 0, False: 123]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3072|    246|#undef OPCODE
 3073|    246|      }
 3074|      0|      pc--;
 3075|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3076|      0|    }
 3077|    164|    CASE(OP_EXT3, Z) {
  ------------------
  |  | 1280|     82|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 3078|    164|      insn = READ_B();
  ------------------
  |  |   30|     82|#define READ_B() PEEK_B(pc++)
  |  |  ------------------
  |  |  |  |   26|     82|#define PEEK_B(pc) (*(pc))
  |  |  ------------------
  ------------------
 3079|    164|      switch (insn) {
  ------------------
  |  Branch (3079:15): [True: 0, False: 82]
  ------------------
 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
 3081|    164|#include "mruby/ops.h"
  ------------------
  |  |    1|       |/* operand types:
  |  |    2|       |   + Z: no operand
  |  |    3|       |   + B: 8bit
  |  |    4|       |   + BB: 8+8bit
  |  |    5|       |   + BBB: 8+8+8bit
  |  |    6|       |   + BS: 8+16bit
  |  |    7|       |   + BSS: 8+16+16bit
  |  |    8|       |   + S: 16bit
  |  |    9|       |   + W: 24bit
  |  |   10|       |*/
  |  |   11|       |
  |  |   12|       |/*-----------------------------------------------------------------------
  |  |   13|       |operation code    operands      semantics
  |  |   14|       |------------------------------------------------------------------------*/
  |  |   15|      0|OPCODE(NOP,        Z)        /* no operation */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   16|      0|OPCODE(MOVE,       BB)       /* R[a] = R[b] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   17|     48|OPCODE(LOADL,      BB)       /* R[a] = Pool[b] */
  |  |  ------------------
  |  |  |  | 3080|     48|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 48, False: 34]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   18|      0|OPCODE(LOADI,      BB)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   19|      0|OPCODE(LOADINEG,   BB)       /* R[a] = mrb_int(-b) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   20|      0|OPCODE(LOADI__1,   B)        /* R[a] = mrb_int(-1) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   21|      0|OPCODE(LOADI_0,    B)        /* R[a] = mrb_int(0) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   22|      0|OPCODE(LOADI_1,    B)        /* R[a] = mrb_int(1) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   23|      0|OPCODE(LOADI_2,    B)        /* R[a] = mrb_int(2) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   24|      0|OPCODE(LOADI_3,    B)        /* R[a] = mrb_int(3) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   25|      0|OPCODE(LOADI_4,    B)        /* R[a] = mrb_int(4) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   26|      0|OPCODE(LOADI_5,    B)        /* R[a] = mrb_int(5) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   27|      0|OPCODE(LOADI_6,    B)        /* R[a] = mrb_int(6) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   28|      0|OPCODE(LOADI_7,    B)        /* R[a] = mrb_int(7) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   29|      0|OPCODE(LOADI16,    BS)       /* R[a] = mrb_int(b) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   30|      0|OPCODE(LOADI32,    BSS)      /* R[a] = mrb_int((b<<16)+c) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   31|      0|OPCODE(LOADSYM,    BB)       /* R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|      0|OPCODE(LOADNIL,    B)        /* R[a] = nil */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   33|      0|OPCODE(LOADSELF,   B)        /* R[a] = self */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   34|      0|OPCODE(LOADT,      B)        /* R[a] = true */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   35|      0|OPCODE(LOADF,      B)        /* R[a] = false */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      0|OPCODE(GETGV,      BB)       /* R[a] = getglobal(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   37|      0|OPCODE(SETGV,      BB)       /* setglobal(Syms[b], R[a]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|OPCODE(GETSV,      BB)       /* R[a] = Special[Syms[b]] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   39|      0|OPCODE(SETSV,      BB)       /* Special[Syms[b]] = R[a] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   40|      0|OPCODE(GETIV,      BB)       /* R[a] = ivget(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   41|      0|OPCODE(SETIV,      BB)       /* ivset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|      0|OPCODE(GETCV,      BB)       /* R[a] = cvget(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   43|      0|OPCODE(SETCV,      BB)       /* cvset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   44|      0|OPCODE(GETCONST,   BB)       /* R[a] = constget(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   45|      0|OPCODE(SETCONST,   BB)       /* constset(Syms[b],R[a]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|OPCODE(GETMCNST,   BB)       /* R[a] = R[a]::Syms[b] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|OPCODE(SETMCNST,   BB)       /* R[a+1]::Syms[b] = R[a] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   48|      0|OPCODE(GETUPVAR,   BBB)      /* R[a] = uvget(b,c) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   49|      0|OPCODE(SETUPVAR,   BBB)      /* uvset(b,c,R[a]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   50|      0|OPCODE(GETIDX,     B)        /* R[a] = R[a][R[a+1]] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   51|      0|OPCODE(SETIDX,     B)        /* R[a][R[a+1]] = R[a+2] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   52|      0|OPCODE(JMP,        S)        /* pc+=a */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|      0|OPCODE(JMPIF,      BS)       /* if R[a] pc+=b */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|      0|OPCODE(JMPNOT,     BS)       /* if !R[a] pc+=b */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|      0|OPCODE(JMPNIL,     BS)       /* if R[a]==nil pc+=b */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   56|      0|OPCODE(JMPUW,      S)        /* unwind_and_jump_to(a) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   57|      0|OPCODE(EXCEPT,     B)        /* R[a] = exc */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|OPCODE(RESCUE,     BB)       /* R[b] = R[a].isa?(R[b]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   59|      0|OPCODE(RAISEIF,    B)        /* raise(R[a]) if R[a] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   60|      0|OPCODE(SSEND,      BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      0|OPCODE(SSENDB,     BBB)      /* R[a] = self.send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|      0|OPCODE(SEND,       BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..) (c=n|k<<4) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   63|      0|OPCODE(SENDB,      BBB)      /* R[a] = R[a].send(Syms[b],R[a+1]..,R[a+n+1]:R[a+n+2]..,&R[a+n+2k+1]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   64|      0|OPCODE(CALL,       Z)        /* self.call(*, **, &) (But overlay the current call frame; tailcall) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   65|      0|OPCODE(SUPER,      BB)       /* R[a] = super(R[a+1],... ,R[a+b+1]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   66|      0|OPCODE(ARGARY,     BS)       /* R[a] = argument array (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   67|      0|OPCODE(ENTER,      W)        /* arg setup according to flags (23=m5:o5:r1:m5:k5:d1:b1) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   68|      0|OPCODE(KEY_P,      BB)       /* R[a] = kdict.key?(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      0|OPCODE(KEYEND,     Z)        /* raise unless kdict.empty? */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   70|      0|OPCODE(KARG,       BB)       /* R[a] = kdict[Syms[b]]; kdict.delete(Syms[b]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|OPCODE(RETURN,     B)        /* return R[a] (normal) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      0|OPCODE(RETURN_BLK, B)        /* return R[a] (in-block return) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|OPCODE(BREAK,      B)        /* break R[a] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   74|      0|OPCODE(BLKPUSH,    BS)       /* R[a] = block (16=m5:r1:m5:d1:lv4) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   75|      0|OPCODE(ADD,        B)        /* R[a] = R[a]+R[a+1] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   76|      0|OPCODE(ADDI,       BB)       /* R[a] = R[a]+mrb_int(b) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   77|      0|OPCODE(SUB,        B)        /* R[a] = R[a]-R[a+1] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   78|      0|OPCODE(SUBI,       BB)       /* R[a] = R[a]-mrb_int(b) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   79|      0|OPCODE(MUL,        B)        /* R[a] = R[a]*R[a+1] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   80|      0|OPCODE(DIV,        B)        /* R[a] = R[a]/R[a+1] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   81|      0|OPCODE(EQ,         B)        /* R[a] = R[a]==R[a+1] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|OPCODE(LT,         B)        /* R[a] = R[a]<R[a+1] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|OPCODE(LE,         B)        /* R[a] = R[a]<=R[a+1] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   84|      0|OPCODE(GT,         B)        /* R[a] = R[a]>R[a+1] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   85|      0|OPCODE(GE,         B)        /* R[a] = R[a]>=R[a+1] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   86|      0|OPCODE(ARRAY,      BB)       /* R[a] = ary_new(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   87|      0|OPCODE(ARRAY2,     BBB)      /* R[a] = ary_new(R[b],R[b+1]..R[b+c]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   88|      0|OPCODE(ARYCAT,     B)        /* ary_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|OPCODE(ARYPUSH,    BB)       /* ary_push(R[a],R[a+1]..R[a+b]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|OPCODE(ARYSPLAT,   B)        /* R[a] = ary_splat(R[a]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   91|      0|OPCODE(AREF,       BBB)      /* R[a] = R[b][c] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   92|      0|OPCODE(ASET,       BBB)      /* R[b][c] = R[a] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   93|      0|OPCODE(APOST,      BBB)      /* *R[a],R[a+1]..R[a+c] = R[a][b..] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   94|      0|OPCODE(INTERN,     B)        /* R[a] = intern(R[a]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   95|      0|OPCODE(SYMBOL,     BB)       /* R[a] = intern(Pool[b]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   96|     20|OPCODE(STRING,     BB)       /* R[a] = str_dup(Pool[b]) */
  |  |  ------------------
  |  |  |  | 3080|     20|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 20, False: 62]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   97|      0|OPCODE(STRCAT,     B)        /* str_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   98|     14|OPCODE(HASH,       BB)       /* R[a] = hash_new(R[a],R[a+1]..R[a+b*2-1]) */
  |  |  ------------------
  |  |  |  | 3080|     14|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 14, False: 68]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   99|      0|OPCODE(HASHADD,    BB)       /* hash_push(R[a],R[a+1]..R[a+b*2]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  100|      0|OPCODE(HASHCAT,    B)        /* R[a] = hash_cat(R[a],R[a+1]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  101|      0|OPCODE(LAMBDA,     BB)       /* R[a] = lambda(Irep[b],L_LAMBDA) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  102|      0|OPCODE(BLOCK,      BB)       /* R[a] = lambda(Irep[b],L_BLOCK) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|OPCODE(METHOD,     BB)       /* R[a] = lambda(Irep[b],L_METHOD) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  104|      0|OPCODE(RANGE_INC,  B)        /* R[a] = range_new(R[a],R[a+1],FALSE) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  105|      0|OPCODE(RANGE_EXC,  B)        /* R[a] = range_new(R[a],R[a+1],TRUE) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  106|      0|OPCODE(OCLASS,     B)        /* R[a] = ::Object */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  107|      0|OPCODE(CLASS,      BB)       /* R[a] = newclass(R[a],Syms[b],R[a+1]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  108|      0|OPCODE(MODULE,     BB)       /* R[a] = newmodule(R[a],Syms[b]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|OPCODE(EXEC,       BB)       /* R[a] = blockexec(R[a],Irep[b]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  110|      0|OPCODE(DEF,        BB)       /* R[a].newmethod(Syms[b],R[a+1]); R[a] = Syms[b] */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  111|      0|OPCODE(ALIAS,      BB)       /* alias_method(target_class,Syms[a],Syms[b]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      0|OPCODE(UNDEF,      B)        /* undef_method(target_class,Syms[a]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  113|      0|OPCODE(SCLASS,     B)        /* R[a] = R[a].singleton_class */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  114|      0|OPCODE(TCLASS,     B)        /* R[a] = target_class */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      0|OPCODE(DEBUG,      BBB)      /* print a,b,c */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  116|      0|OPCODE(ERR,        B)        /* raise(LocalJumpError, Pool[a]) */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  117|      0|OPCODE(EXT1,       Z)        /* make 1st operand (a) 16bit */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|      0|OPCODE(EXT2,       Z)        /* make 2nd operand (b) 16bit */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  119|      0|OPCODE(EXT3,       Z)        /* make 1st and 2nd operands 16bit */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  120|      0|OPCODE(STOP,       Z)        /* stop VM */
  |  |  ------------------
  |  |  |  | 3080|      0|#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); mrb->c->ci->pc = pc; goto L_OP_ ## insn ## _BODY;
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3080:26): [True: 0, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3082|    164|#undef OPCODE
 3083|    164|      }
 3084|      0|      pc--;
 3085|      0|      NEXT;
  ------------------
  |  | 1281|      0|#define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1260|      0|#define BYTECODE_DECODER(x) (x)
  |  |  ------------------
  |  |               #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn]
  |  |  ------------------
  |  |  |  | 1252|      0|#define CODE_FETCH_HOOK(mrb, irep, pc, regs) if ((mrb)->code_fetch_hook) (mrb)->code_fetch_hook((mrb), (irep), (pc), (regs));
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1252:50): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3086|      0|    }
 3087|       |
 3088|      0|    CASE(OP_STOP, Z) {
  ------------------
  |  | 1280|      0|#define CASE(insn,ops) L_ ## insn: pc++; FETCH_ ## ops (); mrb->c->ci->pc = pc; L_ ## insn ## _BODY:
  ------------------
 3089|       |      /*        stop VM */
 3090|  25.2k|      CHECKPOINT_RESTORE(RBREAK_TAG_STOP) {
  ------------------
  |  | 1237|      0|  do { \
  |  | 1238|      0|    if (FALSE) { \
  |  |  ------------------
  |  |  |  |   51|      0|#  define FALSE 0
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (51:17): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1239|  12.6k|      CHECKPOINT_LABEL_MAKE(tag): \
  |  |  ------------------
  |  |  |  | 1234|  12.6k|#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag
  |  |  ------------------
  |  | 1240|  12.6k|      do {
  ------------------
 3091|       |        /* do nothing */
 3092|  25.2k|      }
 3093|  25.2k|      CHECKPOINT_MAIN(RBREAK_TAG_STOP) {
  ------------------
  |  | 1243|  12.6k|      } while (0); \
  |  |  ------------------
  |  |  |  Branch (1243:16): [Folded - Ignored]
  |  |  ------------------
  |  | 1244|  12.6k|    } \
  |  | 1245|  12.6k|    do {
  ------------------
 3094|  25.2k|        UNWIND_ENSURE(mrb, mrb->c->ci, pc, RBREAK_TAG_STOP, proc, mrb_nil_value());
  ------------------
  |  | 1211|  12.6k|  do { \
  |  | 1212|  12.6k|    ch = catch_handler_find(mrb, ci, pc, MRB_CATCH_FILTER_ENSURE); \
  |  |  ------------------
  |  |  |  | 1098|  12.6k|#define MRB_CATCH_FILTER_ENSURE (UINT32_C(1) << MRB_CATCH_ENSURE)
  |  |  ------------------
  |  | 1213|  12.6k|    if (ch) { \
  |  |  ------------------
  |  |  |  Branch (1213:9): [True: 0, False: 12.6k]
  |  |  ------------------
  |  | 1214|      0|      THROW_TAGGED_BREAK(mrb, tag, proc, val); \
  |  |  ------------------
  |  |  |  | 1205|      0|  do { \
  |  |  |  | 1206|      0|    prepare_tagged_break(mrb, tag, proc, val); \
  |  |  |  | 1207|      0|    goto L_CATCH_TAGGED_BREAK; \
  |  |  |  | 1208|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1208:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1215|      0|    } \
  |  | 1216|  12.6k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1216:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 3095|  25.2k|      }
 3096|  25.2k|      CHECKPOINT_END(RBREAK_TAG_STOP);
  ------------------
  |  | 1248|  12.6k|    } while (0); \
  |  |  ------------------
  |  |  |  Branch (1248:14): [Folded - Ignored]
  |  |  ------------------
  |  | 1249|  12.6k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (1249:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 3097|  12.7k|    L_STOP:
 3098|  12.7k|      mrb->jmp = prev_jmp;
 3099|  12.7k|      if (mrb->exc) {
  ------------------
  |  Branch (3099:11): [True: 148, False: 12.6k]
  ------------------
 3100|    148|        mrb_assert(mrb->exc->tt == MRB_TT_EXCEPTION);
  ------------------
  |  |   68|    148|#define mrb_assert(p) ((void)0)
  ------------------
 3101|    148|        return mrb_obj_value(mrb->exc);
 3102|    148|      }
 3103|  12.6k|      return regs[irep->nlocals];
  ------------------
  |  | 1335|  12.6k|#define regs (mrb->c->ci->stack)
  ------------------
 3104|  12.7k|    }
 3105|  12.7k|  }
 3106|      0|  END_DISPATCH;
 3107|      0|#undef regs
 3108|      0|  }
 3109|      0|  MRB_CATCH(&c_jmp) {
  ------------------
  |  |   45|      0|#define MRB_CATCH(buf) } else {
  ------------------
 3110|      0|    mrb_callinfo *ci = mrb->c->ci;
 3111|    174|    while (ci > mrb->c->cibase && ci->cci == CINFO_DIRECT) {
  ------------------
  |  |  336|    174|#define CINFO_DIRECT  2 // called method from C
  ------------------
  |  Branch (3111:12): [True: 174, False: 18.4E]
  |  Branch (3111:35): [True: 37, False: 137]
  ------------------
 3112|     37|      ci = cipop(mrb);
 3113|     37|    }
 3114|      0|    exc_catched = TRUE;
  ------------------
  |  |   54|      0|#  define TRUE 1
  ------------------
 3115|      0|    pc = ci->pc;
 3116|      0|    goto RETRY_TRY_BLOCK;
 3117|      0|  }
 3118|      0|  MRB_END_EXC(&c_jmp);
  ------------------
  |  |   46|      0|#define MRB_END_EXC(buf) }
  ------------------
 3119|      0|}
mrb_top_run:
 3129|  12.7k|{
 3130|  12.7k|  if (mrb->c->cibase && mrb->c->ci > mrb->c->cibase) {
  ------------------
  |  Branch (3130:7): [True: 12.2k, False: 476]
  |  Branch (3130:25): [True: 0, False: 12.2k]
  ------------------
 3131|      0|    cipush(mrb, 0, CINFO_SKIP, mrb->object_class, NULL, NULL, 0, 0);
  ------------------
  |  |  335|      0|#define CINFO_SKIP    1 // ignited mruby VM from C
  ------------------
 3132|      0|  }
 3133|  12.7k|  return mrb_vm_run(mrb, proc, self, stack_keep);
 3134|  12.7k|}
vm.c:stack_extend:
  192|   230k|{
  193|   230k|  if (!mrb->c->ci->stack || mrb->c->ci->stack + room >= mrb->c->stend) {
  ------------------
  |  Branch (193:7): [True: 0, False: 230k]
  |  Branch (193:29): [True: 60, False: 230k]
  ------------------
  194|     60|    stack_extend_alloc(mrb, room);
  195|     60|  }
  196|   230k|}
vm.c:stack_extend_alloc:
  154|     60|{
  155|     60|  mrb_value *oldbase = mrb->c->stbase;
  156|     60|  mrb_value *newstack;
  157|     60|  size_t oldsize = mrb->c->stend - mrb->c->stbase;
  158|     60|  size_t size = oldsize;
  159|     60|  size_t off = mrb->c->ci->stack ? mrb->c->stend - mrb->c->ci->stack : 0;
  ------------------
  |  Branch (159:16): [True: 60, False: 0]
  ------------------
  160|       |
  161|     60|  if (off > size) size = off;
  ------------------
  |  Branch (161:7): [True: 0, False: 60]
  ------------------
  162|       |#ifdef MRB_STACK_EXTEND_DOUBLING
  163|       |  if ((size_t)room <= size)
  164|       |    size *= 2;
  165|       |  else
  166|       |    size += room;
  167|       |#else
  168|       |  /* Use linear stack growth.
  169|       |     It is slightly slower than doubling the stack space,
  170|       |     but it saves memory on small devices. */
  171|     60|  if (room <= MRB_STACK_GROWTH)
  ------------------
  |  |   40|     60|#define MRB_STACK_GROWTH 128
  ------------------
  |  Branch (171:7): [True: 1, False: 59]
  ------------------
  172|      1|    size += MRB_STACK_GROWTH;
  ------------------
  |  |   40|      1|#define MRB_STACK_GROWTH 128
  ------------------
  173|     59|  else
  174|     59|    size += room;
  175|     60|#endif
  176|       |
  177|     60|  newstack = (mrb_value*)mrb_realloc(mrb, mrb->c->stbase, sizeof(mrb_value) * size);
  178|     60|  stack_clear(&(newstack[oldsize]), size - oldsize);
  179|     60|  envadjust(mrb, oldbase, newstack, oldsize);
  180|     60|  mrb->c->stbase = newstack;
  181|     60|  mrb->c->stend = mrb->c->stbase + size;
  182|       |
  183|       |  /* Raise an exception if the new stack size will be too large,
  184|       |     to prevent infinite recursion. However, do this only after resizing the stack, so mrb_raise has stack space to work with. */
  185|     60|  if (size > MRB_STACK_MAX) {
  ------------------
  |  |   51|     60|#define MRB_STACK_MAX (0x40000 - MRB_STACK_GROWTH)
  |  |  ------------------
  |  |  |  |   40|     60|#define MRB_STACK_GROWTH 128
  |  |  ------------------
  ------------------
  |  Branch (185:7): [True: 0, False: 60]
  ------------------
  186|      0|    mrb_exc_raise(mrb, mrb_obj_value(mrb->stack_err));
  187|      0|  }
  188|     60|}
vm.c:envadjust:
  122|     60|{
  123|     60|  mrb_callinfo *ci = mrb->c->cibase;
  124|     60|  ptrdiff_t delta = newbase - oldbase;
  125|       |
  126|     60|  if (delta == 0) return;
  ------------------
  |  Branch (126:7): [True: 1, False: 59]
  ------------------
  127|    180|  while (ci <= mrb->c->ci) {
  ------------------
  |  Branch (127:10): [True: 121, False: 59]
  ------------------
  128|    121|    struct REnv *e = mrb_vm_ci_env(ci);
  129|    121|    mrb_value *st;
  130|       |
  131|    121|    if (e && MRB_ENV_ONSTACK_P(e) &&
  ------------------
  |  |   30|    121|#define MRB_ENV_ONSTACK_P(e) (((e)->flags & MRB_ENV_CLOSED) == 0)
  |  |  ------------------
  |  |  |  |   28|      0|#define MRB_ENV_CLOSED (1<<20)
  |  |  ------------------
  |  |  |  Branch (30:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (131:9): [True: 0, False: 121]
  ------------------
  132|    121|        (st = e->stack) && (size_t)(st - oldbase) < oldsize) {
  ------------------
  |  Branch (132:9): [True: 0, False: 0]
  |  Branch (132:28): [True: 0, False: 0]
  ------------------
  133|      0|      e->stack += delta;
  134|      0|    }
  135|       |
  136|    121|    if (ci->proc && MRB_PROC_ENV_P(ci->proc) && e != MRB_PROC_ENV(ci->proc)) {
  ------------------
  |  |   72|    242|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  ------------------
  |  |  |  |   71|    121|#define MRB_PROC_ENVSET 1024
  |  |  ------------------
  |  |  |  Branch (72:27): [True: 0, False: 121]
  |  |  ------------------
  ------------------
                  if (ci->proc && MRB_PROC_ENV_P(ci->proc) && e != MRB_PROC_ENV(ci->proc)) {
  ------------------
  |  |   73|      0|#define MRB_PROC_ENV(p) (MRB_PROC_ENV_P(p) ? (p)->e.env : NULL)
  |  |  ------------------
  |  |  |  |   72|      0|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (136:9): [True: 121, False: 0]
  |  Branch (136:49): [True: 0, False: 0]
  ------------------
  137|      0|      e = MRB_PROC_ENV(ci->proc);
  ------------------
  |  |   73|      0|#define MRB_PROC_ENV(p) (MRB_PROC_ENV_P(p) ? (p)->e.env : NULL)
  |  |  ------------------
  |  |  |  |   72|      0|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|      0|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  138|       |
  139|      0|      if (e && MRB_ENV_ONSTACK_P(e) &&
  ------------------
  |  |   30|      0|#define MRB_ENV_ONSTACK_P(e) (((e)->flags & MRB_ENV_CLOSED) == 0)
  |  |  ------------------
  |  |  |  |   28|      0|#define MRB_ENV_CLOSED (1<<20)
  |  |  ------------------
  |  |  |  Branch (30:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (139:11): [True: 0, False: 0]
  ------------------
  140|      0|          (st = e->stack) && (size_t)(st - oldbase) < oldsize) {
  ------------------
  |  Branch (140:11): [True: 0, False: 0]
  |  Branch (140:30): [True: 0, False: 0]
  ------------------
  141|      0|        e->stack += delta;
  142|      0|      }
  143|      0|    }
  144|       |
  145|    121|    ci->stack += delta;
  146|    121|    ci++;
  147|    121|  }
  148|     59|}
vm.c:ci_env_set:
  297|   531k|{
  298|   531k|  if (ci->u.env) {
  ------------------
  |  Branch (298:7): [True: 530k, False: 476]
  ------------------
  299|   530k|    if (ci->u.env->tt == MRB_TT_ENV) {
  ------------------
  |  Branch (299:9): [True: 6.18k, False: 524k]
  ------------------
  300|  6.18k|      if (e) {
  ------------------
  |  Branch (300:11): [True: 0, False: 6.18k]
  ------------------
  301|      0|        e->c = ci->u.env->c;
  302|      0|        ci->u.env = e;
  303|      0|      }
  304|  6.18k|      else {
  305|  6.18k|        ci->u.target_class = ci->u.env->c;
  306|  6.18k|      }
  307|  6.18k|    }
  308|   524k|    else if (e) {
  ------------------
  |  Branch (308:14): [True: 0, False: 524k]
  ------------------
  309|      0|      e->c = ci->u.target_class;
  310|      0|      ci->u.env = e;
  311|      0|    }
  312|   530k|  }
  313|    476|  else {
  314|    476|    ci->u.env = e;
  315|    476|  }
  316|   531k|}
vm.c:stack_copy:
   98|  11.4k|{
   99|  11.4k|  if (!src) return;
  ------------------
  |  Branch (99:7): [True: 513, False: 10.9k]
  ------------------
  100|  10.9k|  memcpy(dst, src, sizeof(mrb_value)*size);
  101|  10.9k|}
vm.c:cipop:
  415|   518k|{
  416|   518k|  struct mrb_context *c = mrb->c;
  417|   518k|  mrb_callinfo *ci = c->ci;
  418|   518k|  struct REnv *env = CI_ENV(ci);
  ------------------
  |  |  287|   518k|#define CI_ENV(ci) (((ci)->u.env && (ci)->u.env->tt == MRB_TT_ENV)? (ci)->u.env : NULL)
  |  |  ------------------
  |  |  |  Branch (287:22): [True: 517k, False: 476]
  |  |  |  Branch (287:37): [True: 6.18k, False: 511k]
  |  |  ------------------
  ------------------
  419|       |
  420|   518k|  ci_env_set(ci, NULL); // make possible to free env by GC if not needed
  421|   518k|  struct RProc *b = ci->blk;
  422|   518k|  if (b && !mrb_object_dead_p(mrb, (struct RBasic*)b) && b->tt == MRB_TT_PROC &&
  ------------------
  |  Branch (422:7): [True: 6.18k, False: 512k]
  |  Branch (422:12): [True: 6.18k, False: 0]
  |  Branch (422:58): [True: 6.18k, False: 0]
  ------------------
  423|   518k|      !MRB_PROC_STRICT_P(b) && MRB_PROC_ENV(b) == CI_ENV(&ci[-1])) {
  ------------------
  |  |   68|   524k|#define MRB_PROC_STRICT_P(p) (((p)->flags & MRB_PROC_STRICT) != 0)
  |  |  ------------------
  |  |  |  |   67|  6.18k|#define MRB_PROC_STRICT 256
  |  |  ------------------
  ------------------
                    !MRB_PROC_STRICT_P(b) && MRB_PROC_ENV(b) == CI_ENV(&ci[-1])) {
  ------------------
  |  |   73|  6.18k|#define MRB_PROC_ENV(p) (MRB_PROC_ENV_P(p) ? (p)->e.env : NULL)
  |  |  ------------------
  |  |  |  |   72|  6.18k|#define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   71|  6.18k|#define MRB_PROC_ENVSET 1024
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (72:27): [True: 6.18k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                    !MRB_PROC_STRICT_P(b) && MRB_PROC_ENV(b) == CI_ENV(&ci[-1])) {
  ------------------
  |  |  287|  6.18k|#define CI_ENV(ci) (((ci)->u.env && (ci)->u.env->tt == MRB_TT_ENV)? (ci)->u.env : NULL)
  |  |  ------------------
  |  |  |  Branch (287:22): [True: 6.18k, False: 0]
  |  |  |  Branch (287:37): [True: 6.18k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (423:7): [True: 6.18k, False: 0]
  |  Branch (423:32): [True: 6.18k, False: 0]
  ------------------
  424|  6.18k|    b->flags |= MRB_PROC_ORPHAN;
  ------------------
  |  |   69|  6.18k|#define MRB_PROC_ORPHAN 512
  ------------------
  425|  6.18k|  }
  426|   518k|  if (env && !mrb_env_unshare(mrb, env, TRUE)) {
  ------------------
  |  |   54|  6.18k|#  define TRUE 1
  ------------------
  |  Branch (426:7): [True: 6.18k, False: 512k]
  |  Branch (426:14): [True: 0, False: 6.18k]
  ------------------
  427|      0|    c->ci--; // exceptions are handled at the method caller; see #3087
  428|      0|    mrb_exc_raise(mrb, mrb_obj_value(mrb->nomem_err));
  429|      0|  }
  430|   518k|  c->ci--;
  431|   518k|  return c->ci;
  432|   518k|}
vm.c:ci_bidx:
  539|   146k|{
  540|   146k|  return mrb_bidx(ci->n, ci->nk);
  541|   146k|}
vm.c:stack_init:
  105|    476|{
  106|    476|  struct mrb_context *c = mrb->c;
  107|       |
  108|       |  /* mrb_assert(mrb->stack == NULL); */
  109|    476|  c->stbase = (mrb_value*)mrb_calloc(mrb, STACK_INIT_SIZE, sizeof(mrb_value));
  ------------------
  |  |   35|    476|#define STACK_INIT_SIZE 128
  ------------------
  110|    476|  c->stend = c->stbase + STACK_INIT_SIZE;
  ------------------
  |  |   35|    476|#define STACK_INIT_SIZE 128
  ------------------
  111|       |
  112|       |  /* mrb_assert(ci == NULL); */
  113|    476|  c->cibase = (mrb_callinfo*)mrb_calloc(mrb, CALLINFO_INIT_SIZE, sizeof(mrb_callinfo));
  ------------------
  |  |   36|    476|#define CALLINFO_INIT_SIZE 32
  ------------------
  114|    476|  c->ciend = c->cibase + CALLINFO_INIT_SIZE;
  ------------------
  |  |   36|    476|#define CALLINFO_INIT_SIZE 32
  ------------------
  115|    476|  c->ci = c->cibase;
  116|    476|  c->ci->u.target_class = mrb->object_class;
  117|    476|  c->ci->stack = c->stbase;
  118|    476|}
vm.c:ensure_block:
  637|   110k|{
  638|   110k|  if (!mrb_nil_p(blk) && !mrb_proc_p(blk)) {
  ------------------
  |  |  174|   220k|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  ------------------
                if (!mrb_nil_p(blk) && !mrb_proc_p(blk)) {
  ------------------
  |  |  197|  6.18k|#define mrb_proc_p(o) WORDBOX_OBJ_TYPE_P(o, PROC)
  |  |  ------------------
  |  |  |  |   78|  6.18k|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|  12.3k|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|  12.3k|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 6.18k]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 6.18k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 6.18k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (638:7): [True: 6.18k, False: 104k]
  ------------------
  639|      0|    blk = mrb_type_convert(mrb, blk, MRB_TT_PROC, MRB_SYM(to_proc));
  ------------------
  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  640|       |    /* The stack might have been reallocated during mrb_type_convert(), see #3622 */
  641|      0|  }
  642|   110k|  return blk;
  643|   110k|}
vm.c:cipush:
  344|   518k|{
  345|   518k|  struct mrb_context *c = mrb->c;
  346|   518k|  mrb_callinfo *ci = c->ci;
  347|       |
  348|   518k|  if (ci + 1 == c->ciend) {
  ------------------
  |  Branch (348:7): [True: 0, False: 518k]
  ------------------
  349|      0|    ptrdiff_t size = ci - c->cibase;
  350|       |
  351|      0|    if (size > MRB_CALL_LEVEL_MAX) {
  ------------------
  |  |   45|      0|#define MRB_CALL_LEVEL_MAX 512
  ------------------
  |  Branch (351:9): [True: 0, False: 0]
  ------------------
  352|      0|      mrb_exc_raise(mrb, mrb_obj_value(mrb->stack_err));
  353|      0|    }
  354|      0|    c->cibase = (mrb_callinfo*)mrb_realloc(mrb, c->cibase, sizeof(mrb_callinfo)*size*2);
  355|      0|    c->ci = c->cibase + size;
  356|      0|    c->ciend = c->cibase + size * 2;
  357|      0|  }
  358|   518k|  ci = ++c->ci;
  359|   518k|  ci->mid = mid;
  360|   518k|  CI_PROC_SET(ci, proc);
  ------------------
  |  |  256|   518k|#define CI_PROC_SET(ci, p) do {\
  |  |  257|   518k|  ci->proc = p;\
  |  |  258|   518k|  ci->pc = (p && !MRB_PROC_CFUNC_P(p) && p->body.irep) ? p->body.irep->iseq : NULL;\
  |  |  ------------------
  |  |  |  |   65|   550k|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   64|  31.8k|#define MRB_PROC_CFUNC_FL 128
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:13): [True: 31.8k, False: 486k]
  |  |  |  Branch (258:18): [True: 31.8k, False: 0]
  |  |  |  Branch (258:42): [True: 31.8k, False: 0]
  |  |  ------------------
  |  |  259|   518k|} while (0)
  |  |  ------------------
  |  |  |  Branch (259:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  361|   518k|  ci->blk = blk;
  362|   518k|  ci->stack = ci[-1].stack + push_stacks;
  363|   518k|  ci->n = argc & 0xf;
  364|   518k|  ci->nk = (argc>>4) & 0xf;
  365|   518k|  ci->cci = cci;
  366|   518k|  ci->u.target_class = target_class;
  367|       |
  368|   518k|  return ci;
  369|   518k|}
vm.c:funcall_args_capture:
  609|  5.22k|{
  610|  5.22k|  if (argc < 0 || argc > INT32_MAX) {
  ------------------
  |  Branch (610:7): [True: 0, False: 5.22k]
  |  Branch (610:19): [True: 0, False: 5.22k]
  ------------------
  611|      0|    mrb_raisef(mrb, E_ARGUMENT_ERROR, "negative or too big argc for funcall (%i)", argc);
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  612|      0|  }
  613|       |
  614|  5.22k|  ci->nk = 0;                   /* funcall does not support keyword arguments */
  615|  5.22k|  if (argc < CALL_MAXARGS) {
  ------------------
  |  |   84|  5.22k|#define CALL_MAXARGS 15
  ------------------
  |  Branch (615:7): [True: 5.22k, False: 0]
  ------------------
  616|  5.22k|    mrb_int extends = stoff + argc + 2 /* self + block */;
  617|  5.22k|    stack_extend_adjust(mrb, extends, &argv);
  618|       |
  619|  5.22k|    mrb_value *args = mrb->c->ci->stack + stoff + 1 /* self */;
  620|  5.22k|    stack_copy(args, argv, argc);
  621|  5.22k|    args[argc] = block;
  622|  5.22k|    ci->n = (uint8_t)argc;
  623|  5.22k|  }
  624|      0|  else {
  625|      0|    int extends = stoff + 3 /* self + splat + block */;
  626|      0|    stack_extend_adjust(mrb, extends, &argv);
  627|       |
  628|      0|    mrb_value *args = mrb->c->ci->stack + stoff + 1 /* self */;
  629|      0|    args[0] = mrb_ary_new_from_values(mrb, argc, argv);
  630|      0|    args[1] = block;
  631|      0|    ci->n = CALL_MAXARGS;
  ------------------
  |  |   84|      0|#define CALL_MAXARGS 15
  ------------------
  632|      0|  }
  633|  5.22k|}
vm.c:prepare_missing:
  567|     37|{
  568|     37|  mrb_sym missing = MRB_SYM(method_missing);
  ------------------
  |  |   18|     37|#define MRB_SYM(name) MRB_SYM__##name
  ------------------
  569|     37|  mrb_value *argv = &ci->stack[1];
  570|     37|  mrb_value args;
  571|     37|  mrb_method_t m;
  572|       |
  573|       |  /* pack positional arguments */
  574|     37|  if (ci->n == 15) args = argv[0];
  ------------------
  |  Branch (574:7): [True: 0, False: 37]
  ------------------
  575|     37|  else args = mrb_ary_new_from_values(mrb, ci->n, argv);
  576|       |
  577|     37|  if (mrb_func_basic_p(mrb, recv, missing, mrb_obj_missing)) {
  ------------------
  |  Branch (577:7): [True: 37, False: 0]
  ------------------
  578|     37|  method_missing:
  579|     37|    if (super) mrb_no_method_error(mrb, mid, args, "no superclass method '%n'", mid);
  ------------------
  |  Branch (579:9): [True: 0, False: 37]
  ------------------
  580|     37|    else mrb_method_missing(mrb, mid, recv, args);
  581|       |    /* not reached */
  582|     37|  }
  583|      0|  if (mid != missing) {
  ------------------
  |  Branch (583:7): [True: 0, False: 0]
  ------------------
  584|      0|    ci->u.target_class = mrb_class(mrb, recv);
  585|      0|  }
  586|      0|  m = mrb_vm_find_method(mrb, ci->u.target_class, &ci->u.target_class, missing);
  587|      0|  if (MRB_METHOD_UNDEF_P(m)) goto method_missing; /* just in case */
  ------------------
  |  |  115|      0|#define MRB_METHOD_UNDEF_P(m) ((m)==0)
  |  |  ------------------
  |  |  |  Branch (115:31): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  588|      0|  stack_extend(mrb, 4);
  589|       |
  590|      0|  argv = &ci->stack[1];         /* maybe reallocated */
  591|      0|  argv[0] = args;
  592|      0|  if (ci->nk == 0) {
  ------------------
  |  Branch (592:7): [True: 0, False: 0]
  ------------------
  593|      0|    argv[1] = blk;
  594|      0|  }
  595|      0|  else {
  596|      0|    mrb_assert(ci->nk == 15);
  ------------------
  |  |   68|      0|#define mrb_assert(p) ((void)0)
  ------------------
  597|      0|    argv[1] = argv[ci->n];
  598|      0|    argv[2] = blk;
  599|      0|  }
  600|      0|  ci->n = CALL_MAXARGS;
  ------------------
  |  |   84|      0|#define CALL_MAXARGS 15
  ------------------
  601|       |  /* ci->nk is already set to zero or CALL_MAXARGS */
  602|      0|  mrb_ary_unshift(mrb, args, mrb_symbol_value(mid));
  603|      0|  ci->mid = missing;
  604|      0|  return m;
  605|      0|}
vm.c:check_method_noarg:
  718|  64.0k|{
  719|  64.0k|  mrb_int argc = ci->n == CALL_MAXARGS ? RARRAY_LEN(ci->stack[1]) : ci->n;
  ------------------
  |  |   84|  64.0k|#define CALL_MAXARGS 15
  ------------------
                mrb_int argc = ci->n == CALL_MAXARGS ? RARRAY_LEN(ci->stack[1]) : ci->n;
  ------------------
  |  |   72|    476|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|    476|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    476|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    476|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 476, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    476|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|    476|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (719:18): [True: 476, False: 63.6k]
  ------------------
  720|  64.0k|  if (ci->nk > 0) {
  ------------------
  |  Branch (720:7): [True: 476, False: 63.6k]
  ------------------
  721|    476|    mrb_value kdict = ci->stack[mrb_ci_kidx(ci)];
  722|    476|    if (!(mrb_hash_p(kdict) && mrb_hash_empty_p(mrb, kdict))) {
  ------------------
  |  |  188|    476|#define mrb_hash_p(o) WORDBOX_OBJ_TYPE_P(o, HASH)
  |  |  ------------------
  |  |  |  |   78|    952|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|    952|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|    952|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 476]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 476]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 476, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (722:32): [True: 476, False: 0]
  ------------------
  723|      0|      argc++;
  724|      0|    }
  725|    476|  }
  726|  64.0k|  if (argc > 0) {
  ------------------
  |  Branch (726:7): [True: 3, False: 64.0k]
  ------------------
  727|      3|    mrb_argnum_error(mrb, argc, 0, 0);
  728|      3|  }
  729|  64.0k|}
vm.c:eval_under:
  889|    476|{
  890|    476|  struct RProc *p;
  891|    476|  mrb_callinfo *ci;
  892|    476|  int nregs;
  893|       |
  894|    476|  check_block(mrb, blk);
  895|    476|  ci = mrb->c->ci;
  896|    476|  if (ci->cci == CINFO_DIRECT) {
  ------------------
  |  |  336|    476|#define CINFO_DIRECT  2 // called method from C
  ------------------
  |  Branch (896:7): [True: 0, False: 476]
  ------------------
  897|      0|    return mrb_yield_with_class(mrb, blk, 1, &self, self, c);
  898|      0|  }
  899|    476|  ci->u.target_class = c;
  900|    476|  p = mrb_proc_ptr(blk);
  ------------------
  |  |   90|    476|#define mrb_proc_ptr(v)    ((struct RProc*)(mrb_ptr(v)))
  |  |  ------------------
  |  |  |  |  150|    476|#define mrb_ptr(o)     mrb_val_union(o).p
  |  |  ------------------
  ------------------
  901|    476|  CI_PROC_SET(ci, p);
  ------------------
  |  |  256|    476|#define CI_PROC_SET(ci, p) do {\
  |  |  257|    476|  ci->proc = p;\
  |  |  258|    476|  ci->pc = (p && !MRB_PROC_CFUNC_P(p) && p->body.irep) ? p->body.irep->iseq : NULL;\
  |  |  ------------------
  |  |  |  |   65|    952|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   64|    476|#define MRB_PROC_CFUNC_FL 128
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (258:13): [True: 476, False: 0]
  |  |  |  Branch (258:18): [True: 476, False: 0]
  |  |  |  Branch (258:42): [True: 476, False: 0]
  |  |  ------------------
  |  |  259|    476|} while (0)
  |  |  ------------------
  |  |  |  Branch (259:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  902|    476|  ci->n = 1;
  903|    476|  ci->nk = 0;
  904|    476|  ci->mid = ci[-1].mid;
  905|    476|  if (MRB_PROC_CFUNC_P(p)) {
  ------------------
  |  |   65|    476|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  ------------------
  |  |  |  |   64|    476|#define MRB_PROC_CFUNC_FL 128
  |  |  ------------------
  |  |  |  Branch (65:29): [True: 0, False: 476]
  |  |  ------------------
  ------------------
  906|      0|    stack_extend(mrb, 4);
  907|      0|    mrb->c->ci->stack[0] = self;
  908|      0|    mrb->c->ci->stack[1] = self;
  909|      0|    mrb->c->ci->stack[2] = mrb_nil_value();
  910|      0|    return MRB_PROC_CFUNC(p)(mrb, self);
  ------------------
  |  |   66|      0|#define MRB_PROC_CFUNC(p) (p)->body.func
  ------------------
  911|      0|  }
  912|    476|  nregs = p->body.irep->nregs;
  913|    476|  if (nregs < 4) nregs = 4;
  ------------------
  |  Branch (913:7): [True: 0, False: 476]
  ------------------
  914|    476|  stack_extend(mrb, nregs);
  915|    476|  mrb->c->ci->stack[0] = self;
  916|    476|  mrb->c->ci->stack[1] = self;
  917|    476|  stack_clear(mrb->c->ci->stack+2, nregs-2);
  918|    476|  ci = cipush(mrb, 0, 0, NULL, NULL, NULL, 0, 0);
  919|       |
  920|    476|  return self;
  921|    476|}
vm.c:check_block:
  878|    476|{
  879|    476|  if (mrb_nil_p(blk)) {
  ------------------
  |  |  174|    476|#define mrb_nil_p(o)  ((o).w == MRB_Qnil)
  |  |  ------------------
  |  |  |  Branch (174:23): [True: 0, False: 476]
  |  |  ------------------
  ------------------
  880|      0|    mrb_raise(mrb, E_ARGUMENT_ERROR, "no block given");
  ------------------
  |  | 1377|      0|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  881|      0|  }
  882|    476|  if (!mrb_proc_p(blk)) {
  ------------------
  |  |  197|    476|#define mrb_proc_p(o) WORDBOX_OBJ_TYPE_P(o, PROC)
  |  |  ------------------
  |  |  |  |   78|    476|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|    952|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|    952|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 476]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 476]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 476, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  883|      0|    mrb_raise(mrb, E_TYPE_ERROR, "not a block");
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  884|      0|  }
  885|    476|}
vm.c:stack_extend_adjust:
  206|  5.22k|{
  207|  5.22k|  const struct mrb_context *c = mrb->c;
  208|  5.22k|  ptrdiff_t voff = *argp - c->stbase;
  209|       |
  210|  5.22k|  if (voff < 0 || voff >= c->stend - c->stbase) {
  ------------------
  |  Branch (210:7): [True: 513, False: 4.71k]
  |  Branch (210:19): [True: 4.71k, False: 0]
  ------------------
  211|  5.22k|    stack_extend(mrb, room);
  212|  5.22k|  }
  213|      0|  else {
  214|      0|    stack_extend(mrb, room);
  215|      0|    *argp = c->stbase + voff;
  216|      0|  }
  217|  5.22k|}
vm.c:stack_clear:
   89|   128k|{
   90|   540k|  while (count-- > 0) {
  ------------------
  |  Branch (90:10): [True: 412k, False: 128k]
  ------------------
   91|   412k|    SET_NIL_VALUE(*from);
  ------------------
  |  |  210|   412k|#define SET_NIL_VALUE(r) ((r).w = MRB_Qnil)
  ------------------
   92|   412k|    from++;
   93|   412k|  }
   94|   128k|}
vm.c:catch_handler_find:
 1103|   219k|{
 1104|   219k|  const mrb_irep *irep;
 1105|   219k|  ptrdiff_t xpc;
 1106|   219k|  size_t cnt;
 1107|   219k|  const struct mrb_irep_catch_handler *e;
 1108|       |
 1109|       |/* The comparison operators use `>` and `<=` because pc already points to the next instruction */
 1110|   219k|#define catch_cover_p(pc, beg, end) ((pc) > (ptrdiff_t)(beg) && (pc) <= (ptrdiff_t)(end))
 1111|       |
 1112|   219k|  if (ci->proc == NULL || MRB_PROC_CFUNC_P(ci->proc)) return NULL;
  ------------------
  |  |   65|   219k|#define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0)
  |  |  ------------------
  |  |  |  |   64|   219k|#define MRB_PROC_CFUNC_FL 128
  |  |  ------------------
  |  |  |  Branch (65:29): [True: 0, False: 219k]
  |  |  ------------------
  ------------------
  |  Branch (1112:7): [True: 93, False: 219k]
  ------------------
 1113|   219k|  irep = ci->proc->body.irep;
 1114|   219k|  if (irep == NULL || irep->clen < 1) return NULL;
  ------------------
  |  Branch (1114:7): [True: 0, False: 219k]
  |  Branch (1114:23): [True: 218k, False: 1.42k]
  ------------------
 1115|  1.42k|  xpc = pc - irep->iseq;
 1116|       |  /* If it retry at the top level, pc will be 0, so check with -1 as the start position */
 1117|  1.42k|  mrb_assert(catch_cover_p(xpc, -1, irep->ilen));
  ------------------
  |  |   68|  1.42k|#define mrb_assert(p) ((void)0)
  ------------------
 1118|  1.42k|  if (!catch_cover_p(xpc, -1, irep->ilen)) return NULL;
  ------------------
  |  | 1110|  1.42k|#define catch_cover_p(pc, beg, end) ((pc) > (ptrdiff_t)(beg) && (pc) <= (ptrdiff_t)(end))
  |  |  ------------------
  |  |  |  Branch (1110:38): [True: 1.42k, False: 0]
  |  |  |  Branch (1110:65): [True: 1.42k, False: 0]
  |  |  ------------------
  ------------------
 1119|       |
 1120|       |  /* Currently uses a simple linear search to avoid processing complexity. */
 1121|  1.42k|  cnt = irep->clen;
 1122|  1.42k|  e = mrb_irep_catch_handler_table(irep) + cnt - 1;
 1123|  4.28k|  for (; cnt > 0; cnt --, e --) {
  ------------------
  |  Branch (1123:10): [True: 2.85k, False: 1.42k]
  ------------------
 1124|  2.85k|    if (((UINT32_C(1) << e->type) & filter) &&
  ------------------
  |  Branch (1124:9): [True: 1.42k, False: 1.42k]
  ------------------
 1125|  2.85k|        catch_cover_p(xpc, mrb_irep_catch_handler_unpack(e->begin), mrb_irep_catch_handler_unpack(e->end))) {
  ------------------
  |  | 1110|  1.42k|#define catch_cover_p(pc, beg, end) ((pc) > (ptrdiff_t)(beg) && (pc) <= (ptrdiff_t)(end))
  |  |  ------------------
  |  |  |  Branch (1110:38): [True: 0, False: 1.42k]
  |  |  |  Branch (1110:65): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1126|      0|      return e;
 1127|      0|    }
 1128|  2.85k|  }
 1129|       |
 1130|  1.42k|#undef catch_cover_p
 1131|       |
 1132|  1.42k|  return NULL;
 1133|  1.42k|}
vm.c:mrb_bidx:
  530|   627k|{
  531|   627k|  if (n == 15) n = 1;
  ------------------
  |  Branch (531:7): [True: 119k, False: 507k]
  ------------------
  532|   627k|  if (k == 15) n += 1;
  ------------------
  |  Branch (532:7): [True: 64.4k, False: 562k]
  ------------------
  533|   562k|  else n += k*2;
  534|   627k|  return n + 1;                 /* self + args + kargs */
  535|   627k|}
vm.c:mrb_gc_arena_shrink:
   64|   306k|{
   65|   306k|  mrb_gc *gc = &mrb->gc;
   66|   306k|  int capa = gc->arena_capa;
   67|       |
   68|   306k|  gc->arena_idx = idx;
   69|   306k|  if (idx < capa / 4) {
  ------------------
  |  Branch (69:7): [True: 306k, False: 0]
  ------------------
   70|   306k|    capa >>= 2;
   71|   306k|    if (capa < MRB_GC_ARENA_SIZE) {
  ------------------
  |  |   28|   306k|#define MRB_GC_ARENA_SIZE 100
  ------------------
  |  Branch (71:9): [True: 306k, False: 46]
  ------------------
   72|   306k|      capa = MRB_GC_ARENA_SIZE;
  ------------------
  |  |   28|   306k|#define MRB_GC_ARENA_SIZE 100
  ------------------
   73|   306k|    }
   74|   306k|    if (capa != gc->arena_capa) {
  ------------------
  |  Branch (74:9): [True: 85, False: 306k]
  ------------------
   75|     85|      gc->arena = (struct RBasic**)mrb_realloc(mrb, gc->arena, sizeof(struct RBasic*)*capa);
   76|     85|      gc->arena_capa = capa;
   77|     85|    }
   78|   306k|  }
   79|   306k|}
vm.c:argnum_error:
 1168|     11|{
 1169|     11|  mrb_value exc;
 1170|     11|  mrb_value str;
 1171|     11|  mrb_int argc = mrb->c->ci->n;
 1172|       |
 1173|     11|  if (argc == 15) {
  ------------------
  |  Branch (1173:7): [True: 0, False: 11]
  ------------------
 1174|      0|    mrb_value args = mrb->c->ci->stack[1];
 1175|      0|    if (mrb_array_p(args)) {
  ------------------
  |  |  186|      0|#define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
  |  |  ------------------
  |  |  |  |   78|      0|  (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
  |  |  |  |  ------------------
  |  |  |  |  |  |  148|      0|#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   71|      0|#define WORDBOX_IMMEDIATE_MASK  0x07
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (148:29): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (148:63): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (78:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1176|      0|      argc = RARRAY_LEN(args);
  ------------------
  |  |   72|      0|#define RARRAY_LEN(a) ARY_LEN(RARRAY(a))
  |  |  ------------------
  |  |  |  |   70|      0|#define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|#define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:24): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(mrb_int)(a)->as.heap.len)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|#define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   62|      0|#define MRB_ARY_EMBED_MASK  7
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1177|      0|    }
 1178|      0|  }
 1179|     11|  if (argc == 0 && mrb->c->ci->nk != 0 && !mrb_hash_empty_p(mrb, mrb->c->ci->stack[1])) {
  ------------------
  |  Branch (1179:7): [True: 0, False: 11]
  |  Branch (1179:20): [True: 0, False: 0]
  |  Branch (1179:43): [True: 0, False: 0]
  ------------------
 1180|      0|    argc++;
 1181|      0|  }
 1182|     11|  str = mrb_format(mrb, "wrong number of arguments (given %i, expected %i)", argc, num);
 1183|     11|  exc = mrb_exc_new_str(mrb, E_ARGUMENT_ERROR, str);
  ------------------
  |  | 1377|     11|#define E_ARGUMENT_ERROR     mrb_exc_get_id(mrb, MRB_ERROR_SYM(ArgumentError))
  |  |  ------------------
  |  |  |  |   35|     11|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|     11|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1184|     11|  mrb_exc_set(mrb, exc);
 1185|     11|}
vm.c:mrb_ci_kidx:
  523|  30.2k|{
  524|  30.2k|  if (ci->nk == 0) return -1;
  ------------------
  |  Branch (524:7): [True: 0, False: 30.2k]
  ------------------
  525|  30.2k|  return (ci->n == CALL_MAXARGS) ? 2 : ci->n + 1;
  ------------------
  |  |   84|  30.2k|#define CALL_MAXARGS 15
  ------------------
  |  Branch (525:10): [True: 30.2k, False: 0]
  ------------------
  526|  30.2k|}
vm.c:check_target_class:
 1327|   218k|{
 1328|   218k|  struct RClass *target = CI_TARGET_CLASS(mrb->c->ci);
  ------------------
  |  |  267|   218k|#define CI_TARGET_CLASS(ci) (((ci)->u.env && (ci)->u.env->tt == MRB_TT_ENV)? (ci)->u.env->c : (ci)->u.target_class)
  |  |  ------------------
  |  |  |  Branch (267:31): [True: 218k, False: 0]
  |  |  |  Branch (267:46): [True: 476, False: 218k]
  |  |  ------------------
  ------------------
 1329|   218k|  if (!target) {
  ------------------
  |  Branch (1329:7): [True: 0, False: 218k]
  ------------------
 1330|      0|    mrb_raise(mrb, E_TYPE_ERROR, "no class/module to add method");
  ------------------
  |  | 1375|      0|#define E_TYPE_ERROR         mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
  |  |  ------------------
  |  |  |  |   35|      0|#define MRB_ERROR_SYM(sym) MRB_SYM(sym)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|#define MRB_SYM(name) MRB_SYM__##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1331|      0|  }
 1332|   218k|  return target;
 1333|   218k|}
vm.c:mrb_run:
 3123|     16|{
 3124|     16|  return mrb_vm_run(mrb, proc, self, ci_bidx(mrb->c->ci) + 1);
 3125|     16|}

