php php ret ret foo foo a a c c variant v ret variant v
play

<? <?php php $ret = $ret = foo foo($a ($a); ); // C++ - PowerPoint PPT Presentation

<? <?php php $ret = $ret = foo foo($a ($a); ); // C++ // C++ Variant v_ret Variant v_ret; ; Variant Variant v_a v_a; ; v_ret v_ret = = f_foo f_foo(v_a (v_a); ); Facebook 2010 (confidential) <?php <?


  1. <? <?php php $ret = $ret = foo foo($a ($a); ); // C++ // C++ Variant v_ret Variant v_ret; ; Variant Variant v_a v_a; ; v_ret v_ret = = f_foo f_foo(v_a (v_a); ); Facebook ¡2010 ¡(confidential) ¡

  2. <?php <? php $func func = ‘ = ‘foo foo’; ’; $ret = $ret = $func func($a ($a); ); // C++ // C++ Variant v_ret Variant v_ret; ; Variant v_a Variant v_a; ; String String v_func v_func; ; V_func V_func = “ = “foo foo”; ”; v_ret v_ret = = invoke invoke(v_func v_func, CREATE_VECTOR1(v_a)); , CREATE_VECTOR1(v_a)); Facebook ¡2010 ¡(confidential) ¡

  3. Variant Variant invoke(CStrRef invoke(CStrRef func func, , CArrRef CArrRef params params) { ) { int64 hash = int64 hash = hash_string(func hash_string(func); ); switch (hash) { switch (hash) { case 1234: case 1234: if ( if (func func == “ == “foo foo”) return foo(params[0]) ”) return foo(params[0]) } } throw throw FatalError(“function FatalError(“function not found”); not found”); } } Facebook ¡2010 ¡(confidential) ¡

  4. <? <?php php if ($condition) { if ($condition) { function function foo foo($a ($a) { return $a + 1;} ) { return $a + 1;} } else { } else { function function foo foo($a ($a) { return $a + 2;} ) { return $a + 2;} } } $ret = $ret = foo foo($a ($a); ); // C++ // C++ if ( if (v_condition v_condition) { ) { g-> ->i_foo i_foo = i_foo$$0; = i_foo$$0; } else { } else { g-> ->i_foo i_foo = i_foo$$1; = i_foo$$1; } } g->i_foo g-> i_foo(v_a (v_a); ); Facebook ¡2010 ¡(confidential) ¡

  5. <?php <? php if (! if (!function_exists(‘foo function_exists(‘foo’)) { ’)) { bar($a bar($a); ); } else { } else { foo($a foo($a); ); } } function foo($a function foo($a) {} ) {} // C++ // C++ if ( if (f_function_exists(“foo f_function_exists(“foo”)) { ”)) { f_bar(v_a f_bar(v_a); ); } else { } else { f_foo(v_a f_foo(v_a); ); } } g-> ->declareFunction(“foo declareFunction(“foo”); ”); Facebook ¡2010 ¡(confidential) ¡

  6. <? <?php php $foo foo = ‘hello’; = ‘hello’; function function foo($a foo($a) { ) { global $ global $foo foo; ; $bar = $ $bar = $foo foo . $a; . $a; return $bar; return $bar; } } // C++ // C++ String f_foo(CStrRef String f_foo(CStrRef v_a v_a) { ) { Variant & Variant &gv_foo gv_foo = = g-> ->GV(foo GV(foo); ; String v_bar String v_bar; ; v_bar v_bar = = concat(toString(gv_foo concat(toString(gv_foo), ), v_a v_a); ); return v_bar return v_bar; ; } } Facebook ¡2010 ¡(confidential) ¡

  7. class GlobalVariables class GlobalVariables : public : public SystemGlobals SystemGlobals { { public: public: // Direct Global Variables // Direct Global Variables Variant Variant gv_foo gv_foo; ; // Indirect Global Variables for large compilation // Indirect Global Variables for large compilation enum enum _ _gv_enums gv_enums { { gv_foo gv_foo, , } } Variant gv[1]; Variant gv[1]; }; }; Facebook ¡2010 ¡(confidential) ¡

  8. <? <?php php function function foo foo() { () { $ $b = 10; = 10; $a = ' $a = 'b'; '; echo( echo($$a $$a); ); } } void void f_foo f_foo() { () { class class VariableTable VariableTable : public : public RVariableTable RVariableTable { { public: public: int64 &v_b int64 & v_b; String & ; String &v_a v_a; ; VariableTable(int64 & VariableTable(int64 &r_b r_b, String & , String &r_a r_a) : ) : v_b(r_b v_b(r_b), ), v_a(r_a v_a(r_a) {} ) {} virtual Variant virtual Variant getImpl(const getImpl(const char * char *s) { ) { // hash – switch – // hash – switch – strcmp strcmp } } } } variableTable(v_b variableTable(v_b, , v_a v_a); ); echo( echo(variableTable.get("b variableTable.get("b”) ”)); ); } } Facebook ¡2010 ¡(confidential) ¡

  9. <? <?php php define(‘FOO define(‘FOO’, ‘hello’); ’, ‘hello’); echo FOO; echo FOO; // C++ // C++ echo(“hello echo(“hello” /* FOO */); ” /* FOO */); Facebook ¡2010 ¡(confidential) ¡

  10. <? <?php php if ($condition) { if ($condition) { define(‘FOO define(‘FOO’, ‘hello’); ’, ‘hello’); } else { } else { define(‘FOO define(‘FOO’, ‘world’); ’, ‘world’); } } echo FOO; echo FOO; // C++ // C++ if (v_condition if ( v_condition) { ) { g-> ->declareConstant("FOO declareConstant("FOO", ", g-> ->k_FOO k_FOO, "hello”); , "hello”); } else { } else { g-> ->declareConstant("FOO declareConstant("FOO", ", g-> ->k_FOO k_FOO, "world”); , "world”); } } echo(toString(g-> echo(toString(g ->k_FOO k_FOO)); )); Facebook ¡2010 ¡(confidential) ¡

  11. Facebook ¡2010 ¡(confidential) ¡

  12. Facebook ¡2010 ¡(confidential) ¡

Recommend


More recommend