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) ¡

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend