コード例 #1
0
/* SRC: classes/splobjectstorage.php line 140 */
void c_SplObjectStorage::t_detach(CVarRef v_obj) {
  INSTANCE_METHOD_INJECTION_BUILTIN(SplObjectStorage, SplObjectStorage::detach);
  Primitive v_idx = 0;
  Variant v_object;

  ObjectData *obj_tmp UNUSED;
  if (x_is_object(v_obj)) {
    {
      {
        LOOP_COUNTER(1);
        Variant map2 = m_storage;
        for (ArrayIter iter3 = map2.begin(s_class_name); !iter3.end(); iter3.next()) {
          LOOP_COUNTER_CHECK(1);
          iter3.second(v_object);
          v_idx.assignVal(iter3.first());
          {
            if (same(v_object, v_obj)) {
              {
                m_storage.weakRemove(v_idx);
                {
                  MethodCallPackage mcp0;
                  mcp0.methodCall((GET_THIS_VALID()), NAMSTR(s_sys_ss941ca25f, "rewind"), 0x1670096FDE27AF6ALL);
                  const CallInfo *cit0 ATTRIBUTE_UNUSED = mcp0.ci;
                  (mcp0.bindClass(fi)->getMeth0Args())(mcp0, 0);
                }
                return;
              }
            }
          }
        }
      }
    }
  }
}
コード例 #2
0
/* SRC: classes/splobjectstorage.php line 102 */
bool c_SplObjectStorage::t_contains(CVarRef v_obj) {
  INSTANCE_METHOD_INJECTION_BUILTIN(SplObjectStorage, SplObjectStorage::contains);
  Variant v_object;

  ObjectData *obj_tmp UNUSED;
  if (x_is_object(v_obj)) {
    {
      {
        LOOP_COUNTER(1);
        Variant map2 = m_storage;
        for (ArrayIter iter3 = map2.begin(s_class_name); !iter3.end(); iter3.next()) {
          LOOP_COUNTER_CHECK(1);
          iter3.second(v_object);
          {
            if (same(v_object, v_obj)) {
              {
                return true;
              }
            }
          }
        }
      }
    }
  }
  return false;
}
コード例 #3
0
void DoWhileStatement::eval(VariableEnvironment &env) const {
  if (env.isGotoing() && env.isLimitedGoto()) return;
  ENTER_STMT;
  DECLARE_THREAD_INFO;
  LOOP_COUNTER(1);

  do {
    LOOP_COUNTER_CHECK_INFO(1);
    EVAL_STMT_HANDLE_GOTO_BEGIN(restart);
    if (m_body) EVAL_STMT_HANDLE_BREAK(m_body, env);
    EVAL_STMT_HANDLE_GOTO_END(restart);
  } while (m_cond->eval(env));
}
コード例 #4
0
void ForStatement::eval(VariableEnvironment &env) const {
  ENTER_STMT;
  DECLARE_THREAD_INFO;
  LOOP_COUNTER(1);
  for (Expression::evalVector(m_init, env);
       m_cond.empty() ? true : (bool)Expression::evalVector(m_cond, env);
       Expression::evalVector(m_next, env)) {
    LOOP_COUNTER_CHECK(1);
    if (m_body) {
      EVAL_STMT_HANDLE_BREAK(m_body, env);
    }
  }
}
コード例 #5
0
ファイル: exception.cpp プロジェクト: KWMalik/hiphop-php
/* SRC: classes/exception.php line 123 */
String c_Exception::t_gettraceasstring() {
  INSTANCE_METHOD_INJECTION_BUILTIN(Exception, Exception::getTraceAsString);
  int64 v_i = 0;
  String v_s;
  Variant v_frame;

  v_i = 0LL;
  v_s = NAMSTR(s_sys_ss00000000, "");
  {
    LOOP_COUNTER(1);
    Variant map2 = t_gettrace();
    {
      StringBuffer tmp_sbuf_v_s(512);
      for (ArrayIter iter3 = map2.begin(s_class_name); !iter3.end(); iter3.next()) {
        LOOP_COUNTER_CHECK(1);
        iter3.second(v_frame);
        {
          if (!(x_is_array(v_frame))) {
            continue;
          }
          {
            tmp_sbuf_v_s.appendWithTaint("#", 1);
            tmp_sbuf_v_s.appendWithTaint(toString(v_i));
            tmp_sbuf_v_s.appendWithTaint(" ", 1);
            tmp_sbuf_v_s.appendWithTaint(toString((isset(v_frame, NAMSTR(s_sys_ss8ce7db5b, "file"), true) ? ((Variant)(v_frame.rvalAt(NAMSTR(s_sys_ss8ce7db5b, "file"), AccessFlags::Error_Key))) : ((Variant)(NAMSTR(s_sys_ss00000000, ""))))));
            tmp_sbuf_v_s.appendWithTaint("(", 1);
            tmp_sbuf_v_s.appendWithTaint(toString((isset(v_frame, NAMSTR(s_sys_ssddf8728c, "line"), true) ? ((Variant)(v_frame.rvalAt(NAMSTR(s_sys_ssddf8728c, "line"), AccessFlags::Error_Key))) : ((Variant)(NAMSTR(s_sys_ss00000000, ""))))));
            tmp_sbuf_v_s.appendWithTaint("): ", 3);
            Variant tmp0;
            if (isset(v_frame, NAMSTR(s_sys_ssc82dbd12, "class"), true)) {
              const String &tmp1((toString(v_frame.rvalAt(NAMSTR(s_sys_ssc82dbd12, "class"), AccessFlags::Error_Key))));
              const String &tmp2((toString(v_frame.rvalAt(NAMSTR(s_sys_ss724a760a, "type"), AccessFlags::Error_Key))));
              tmp0 = (concat(tmp1, tmp2));
            } else {
              tmp0 = (NAMSTR(s_sys_ss00000000, ""));
            }
            tmp_sbuf_v_s.appendWithTaint(toString(tmp0));
            tmp_sbuf_v_s.appendWithTaint(toString(v_frame.rvalAt(NAMSTR(s_sys_ss52403931, "function"), AccessFlags::Error_Key)));
            tmp_sbuf_v_s.appendWithTaint("()\n", 3);
            ;
          }
          v_i++;
        }
      }
      concat_assign(v_s, tmp_sbuf_v_s.detachWithTaint());
    }
  }
  concat_assign(v_s, concat3(NAMSTR(s_sys_ss8dc355aa, "#"), toString(v_i), NAMSTR(s_sys_ssfab32402, " {main}")));
  return v_s;
}
コード例 #6
0
void ForEachStatement::eval(VariableEnvironment &env) const {
  if (env.isGotoing()) return;
  ENTER_STMT;
  DECLARE_THREAD_INFO;
  LOOP_COUNTER(1);
  Variant map(m_source->eval(env));
  if (m_key) {
    TempExpressionList *texp = m_key->cast<TempExpressionList>();
    if (texp) {
      for (ArrayIter iter = map.begin(env.currentContext(), true);
           !iter.end(); iter.next()) {
        {
          LOOP_COUNTER_CHECK_INFO(1);
          const Variant &value = iter.second();
          const Variant &key = iter.first();
          TempExpressionHelper helper(texp, env);
          m_value->set(env, value);
          texp->setImpl(env, key);
        }
        if (!m_body) continue;
        EVAL_STMT_HANDLE_GOTO_BEGIN(restart1);
        EVAL_STMT_HANDLE_BREAK(m_body, env);
        EVAL_STMT_HANDLE_GOTO_END(restart1);
      }
    } else {
      for (ArrayIter iter = map.begin(env.currentContext(), true);
           !iter.end(); iter.next()) {
        LOOP_COUNTER_CHECK_INFO(1);
        const Variant &value = iter.second();
        const Variant &key = iter.first();
        m_value->set(env, value);
        m_key->set(env, key);
        if (!m_body) continue;
        EVAL_STMT_HANDLE_GOTO_BEGIN(restart2);
        EVAL_STMT_HANDLE_BREAK(m_body, env);
        EVAL_STMT_HANDLE_GOTO_END(restart2);
      }
    }
  } else {
    for (ArrayIter iter = map.begin(env.currentContext(), true);
         !iter.end(); iter.next()) {
      LOOP_COUNTER_CHECK_INFO(1);
      m_value->set(env, iter.second());
      if (!m_body) continue;
      EVAL_STMT_HANDLE_GOTO_BEGIN(restart3);
      EVAL_STMT_HANDLE_BREAK(m_body, env);
      EVAL_STMT_HANDLE_GOTO_END(restart3);
    }
  }
}
コード例 #7
0
ファイル: splobjectstorage.cpp プロジェクト: Hshun/hiphop-php
/* SRC: classes/splobjectstorage.php line 140 */
void c_SplObjectStorage::t_detach(CVarRef v_obj) {
  INSTANCE_METHOD_INJECTION_BUILTIN(SplObjectStorage, SplObjectStorage::detach);
  Primitive v_idx = 0;
  Variant v_object;

  ObjectData *obj_tmp UNUSED;
  if (x_is_object(v_obj)) {
    {
      {
        LOOP_COUNTER(1);
        ArrayIter iter3;
        {
          Variant map2 = m_storage;
          iter3.begin(map2, s_class_name);
          try {
            if (iter3.end()) goto break1;
          } catch (...) {
            iter3.reset();
            throw;
          }
        }
        do {
          LOOP_COUNTER_CHECK(1);
          iter3.second(v_object);
          v_idx.assignVal(iter3.first());
          {
            if (same(v_object, v_obj)) {
              {
                m_storage.weakRemove(v_idx);
                {
                  MethodCallPackage mcp0;
                  mcp0.methodCall((GET_THIS_VALID()), NAMSTR(s_sys_ss745e29f6, "rewind"), 0x4D5C8831);
                  const CallInfo *cit0 ATTRIBUTE_UNUSED = mcp0.ci;
                  (mcp0.bindClass(fi)->getMeth0Args())(mcp0, 0);
                }
                return;
              }
            }
          }
        } while(iter3.next(), !iter3.end());
        break1:;
      }
    }
  }
}
コード例 #8
0
ファイル: run.cpp プロジェクト: mjacobsz/Scriptie
/* preface finishes */
Variant pm_php$run_php(bool incOnce /* = false */, LVariableTable* variables /* = NULL */, Globals *globals /* = get_globals() */) {
  PSEUDOMAIN_INJECTION(run_init::run.php, pm_php$run_php);
  LVariableTable *gVariables __attribute__((__unused__)) = (LVariableTable *)g;
  Variant &v_an_int __attribute__((__unused__)) = (variables != gVariables) ? variables->get(NAMSTR(s_ss5605b123, "an_int")) : g->GV(an_int);
  Variant &v_i __attribute__((__unused__)) = (variables != gVariables) ? variables->get(NAMSTR(s_ss1cc5b17e, "i")) : g->GV(i);

  v_an_int = 0LL;
  {
    LOOP_COUNTER(1);
    for (v_i = 0LL; (less(v_i, 100LL)); v_i++) {
      LOOP_COUNTER_CHECK(1);
      {
        v_an_int += 1LL;
      }
    }
  }
  return true;
} /* function */
コード例 #9
0
void WhileStatement::eval(VariableEnvironment &env) const {
  DECLARE_THREAD_INFO;

  if (env.isGotoing()) {
    if (env.isLimitedGoto()) return;
    goto body;
  }
  ENTER_STMT;
  LOOP_COUNTER(1);

  begin:
  if (m_cond->eval(env)) {
    body:
    LOOP_COUNTER_CHECK_INFO(1);
    EVAL_STMT_HANDLE_GOTO_BEGIN(restart);
    if (m_body) EVAL_STMT_HANDLE_GOTO(m_body, env);
    EVAL_STMT_HANDLE_GOTO_END(restart);
    goto begin;
  }
  end:;
}
コード例 #10
0
ファイル: splobjectstorage.cpp プロジェクト: Hshun/hiphop-php
/* SRC: classes/splobjectstorage.php line 102 */
bool c_SplObjectStorage::t_contains(CVarRef v_obj) {
  INSTANCE_METHOD_INJECTION_BUILTIN(SplObjectStorage, SplObjectStorage::contains);
  Variant v_object;

  ObjectData *obj_tmp UNUSED;
  if (x_is_object(v_obj)) {
    {
      {
        LOOP_COUNTER(1);
        ArrayIter iter3;
        {
          Variant map2 = m_storage;
          iter3.begin(map2, s_class_name);
          try {
            if (iter3.end()) goto break1;
          } catch (...) {
            iter3.reset();
            throw;
          }
        }
        do {
          LOOP_COUNTER_CHECK(1);
          iter3.second(v_object);
          {
            if (same(v_object, v_obj)) {
              {
                return true;
              }
            }
          }
        } while(iter3.next(), !iter3.end());
        break1:;
      }
    }
  }
  return false;
}
コード例 #11
0
ファイル: exception.cpp プロジェクト: KWMalik/hiphop-php
/* SRC: classes/exception.php line 152 */
void c_Exception::t_inittrace() {
  INSTANCE_METHOD_INJECTION_BUILTIN(Exception, Exception::initTrace);
  Variant v_top;
  Variant v_frame;

  ObjectData *obj_tmp UNUSED;
  {
    const CallInfo *cit0 = NULL;
    MethodCallPackage mcp0;
    mcp0.staticMethodCall(NAMSTR(s_sys_ssf08d205d, "static"), NAMSTR(s_sys_ssc453e9e9, "getTraceOptions"));
    mcp0.lateStaticBind(fi.getThreadInfo());
    cit0 = mcp0.ci;
    const Array &tmp1((x_debug_backtrace(toBoolean((cit0->getMeth0Args())(mcp0, 0)))));
    m_trace = tmp1;
  }
  LOOP_COUNTER(1);
  {
    while (!(empty(m_trace))) {
      LOOP_COUNTER_CHECK(1);
      {
        {
          const Variant &tmp0((m_trace.rvalAt(0LL, AccessFlags::Error)));
          v_top.assignVal(tmp0);
        }
        {
          bool tmp0;
          {
            bool tmp1 = ((isset(v_top, NAMSTR(s_sys_ssc82dbd12, "class"), true) && isset(v_top, NAMSTR(s_sys_ss52403931, "function"), true)));
            if (tmp1) {
              const String &tmp2((toString(v_top.rvalAt(NAMSTR(s_sys_ssc82dbd12, "class"), AccessFlags::Error_Key))));
              int64 tmp3((x_strcasecmp(tmp2, NAMSTR(s_sys_ssae8717ad, "exception"))));
              tmp1 = (same(tmp3, 0LL));
            }
            bool tmp4 = (tmp1);
            if (tmp4) {
              const String &tmp5((toString(v_top.rvalAt(NAMSTR(s_sys_ss52403931, "function"), AccessFlags::Error_Key))));
              int64 tmp6((x_strcasecmp(tmp5, NAMSTR(s_sys_ssa26bedd7, "__init__"))));
              tmp4 = (same(tmp6, 0LL));
            }
            tmp0 = (tmp4);
          }
          if (tmp0) {
            {
              {
                const Variant &tmp0((x_array_shift(ref(m_trace))));
                v_frame.assignVal(tmp0);
              }
              if (isset(v_frame, NAMSTR(s_sys_ss8ce7db5b, "file"), true)) {
                {
                  const Variant &tmp0((v_frame.rvalAt(NAMSTR(s_sys_ss8ce7db5b, "file"), AccessFlags::Error_Key)));
                  m_file.assignVal(tmp0);
                }
              }
              if (isset(v_frame, NAMSTR(s_sys_ssddf8728c, "line"), true)) {
                {
                  const Variant &tmp0((v_frame.rvalAt(NAMSTR(s_sys_ssddf8728c, "line"), AccessFlags::Error_Key)));
                  m_line.assignVal(tmp0);
                }
              }
              return;
            }
          }
        }
        x_array_shift(ref(m_trace));
      }
    }
  }
}
コード例 #12
0
ファイル: exception.cpp プロジェクト: hashaash/hiphop-php
/* SRC: classes/exception.php line 25 */
void c_Exception::t___init__() {
  INSTANCE_METHOD_INJECTION_BUILTIN(Exception, Exception::__init__);
  Variant v_top;
  Variant v_frame;

  ObjectData *obj_tmp UNUSED;
  if (toBoolean(m_inited)) {
    {
      return;
    }
  }
  m_inited = true;
  {
    const Array &tmp0((x_debug_backtrace(false)));
    m_trace = tmp0;
  }
  LOOP_COUNTER(1);
  {
    while (!(empty(m_trace))) {
      LOOP_COUNTER_CHECK(1);
      {
        {
          const Variant &tmp0((m_trace.rvalAt(0LL, AccessFlags::Error)));
          v_top.assignVal(tmp0);
        }
        {
          bool tmp0;
          {
            bool tmp1 = (empty(v_top, NAMSTR(s_sys_ssc82dbd12, "class"), true));
            if (!tmp1) {
              const String &tmp2((toString(v_top.rvalAt(NAMSTR(s_sys_ss52403931, "function"), AccessFlags::Error_Key))));
              bool tmp3 = (toBoolean(x_strcasecmp(tmp2, NAMSTR(s_sys_ssa26bedd7, "__init__"))));
              if (tmp3) {
                const String &tmp4((toString(v_top.rvalAt(NAMSTR(s_sys_ss52403931, "function"), AccessFlags::Error_Key))));
                tmp3 = (toBoolean(x_strcasecmp(tmp4, NAMSTR(s_sys_ssa1b87da7, "__construct"))));
              }
              bool tmp5 = (tmp3);
              if (tmp5) {
                const String &tmp6((toString(v_top.rvalAt(NAMSTR(s_sys_ss52403931, "function"), AccessFlags::Error_Key))));
                const String &tmp7((toString(v_top.rvalAt(NAMSTR(s_sys_ssc82dbd12, "class"), AccessFlags::Error_Key))));
                tmp5 = (toBoolean(x_strcasecmp(tmp6, tmp7)));
              }
              tmp1 = (tmp5);
            }
            bool tmp8 = (tmp1);
            if (!tmp8) {
              const String &tmp9((toString(v_top.rvalAt(NAMSTR(s_sys_ssc82dbd12, "class"), AccessFlags::Error_Key))));
              bool tmp10 = (toBoolean(x_strcasecmp(tmp9, NAMSTR(s_sys_ssae8717ad, "exception"))));
              if (tmp10) {
                const Variant &tmp11((v_top.rvalAt(NAMSTR(s_sys_ssc82dbd12, "class"), AccessFlags::Error_Key)));
                tmp10 = (!(x_is_subclass_of(tmp11, NAMSTR(s_sys_ssae8717ad, "exception"))));
              }
              tmp8 = (tmp10);
            }
            tmp0 = (tmp8);
          }
          if (tmp0) {
            {
              break;
            }
          }
        }
        {
          const Variant &tmp0((x_array_shift(ref(m_trace))));
          v_frame.assignVal(tmp0);
        }
      }
    }
  }
  if (isset(v_frame, NAMSTR(s_sys_ss8ce7db5b, "file"), true)) {
    {
      const Variant &tmp0((v_frame.rvalAt(NAMSTR(s_sys_ss8ce7db5b, "file"), AccessFlags::Error_Key)));
      m_file.assignVal(tmp0);
    }
  }
  if (isset(v_frame, NAMSTR(s_sys_ssddf8728c, "line"), true)) {
    {
      const Variant &tmp0((v_frame.rvalAt(NAMSTR(s_sys_ssddf8728c, "line"), AccessFlags::Error_Key)));
      m_line.assignVal(tmp0);
    }
  }
}