Slide 1

Slide 1 text

V8 Codebase

Slide 2

Slide 2 text

Name @brn (ꫬꅿ⨳ⵃ) Occupation ؿٗٝزؒٝسؒٝآص،٥ط؎ذ؍ـؒٝآص، Company Cyberagent ،سذؙأةآؔ AI Messenger OSS Contributor of V8 About http://info.b6n.ch

Slide 3

Slide 3 text

Basic C++ code 倜׋ז؝٦سכC++14ד鷄⸇ׁ׸גְ׷կ 〢ְ؝٦سחC++03ךせ婍כ֮׷׮ךךlambdaהַכ穠圓⢪׻׸ג ְ׷կ 遤侧כ882,616遤֮׷

Slide 4

Slide 4 text

Build tools GNהְֲًةؽٕسخ٦ٕ׾ⵃ欽׃גְ׷կ 㹋ꥷךؽٕسכninja ؝ٝػ؎ٓכخ٦ٕثؑ٦ٝ׾تؐٝٗ٦سׅ׷״ֲחז׏גְג clang7.0.0׾تؐٝٗ٦س׃גⵃ欽ׅ׷״ֲחז׏גְ׷

Slide 5

Slide 5 text

Lint ؝ىحز⵸חcpplintָ饥׏גծؿؓ٦وحز麩⿾ך؝٦سכ؝ىح زדֹזְ

Slide 6

Slide 6 text

Format clang-formatד✲⵸חؿؓ٦وحز׃זְה؝ىحزדֹזְ

Slide 7

Slide 7 text

Problems -  وָؙٗ㢳ְ٥זַזַ搀蘠 -  ؝٦سك٦أָ㣐ְֹךדIDE禸כ㔿ת׷✲ָ㢳ְ -  ؝٦سك٦أָ㣐ְֹךדؽٕسָ鹼ְ

Slide 8

Slide 8 text

Complicated Macros وָؙٗ醱꧟ وؙٗדؙٓأ׾㹀纏׃׋׶… Problems

Slide 9

Slide 9 text

#define IGNITION_HANDLER(Name, BaseAssembler) \! class Name##Assembler : public BaseAssembler { \! public: \! explicit Name##Assembler(compiler::CodeAssemblerState* state, \! Bytecode bytecode, OperandScale scale) \! : BaseAssembler(state, bytecode, scale) {} \! static void Generate(compiler::CodeAssemblerState* state, \! OperandScale scale); \! \! private: \! void GenerateImpl(); \! DISALLOW_COPY_AND_ASSIGN(Name##Assembler); \! }; \! void Name##Assembler::Generate(compiler::CodeAssemblerState* state, \! OperandScale scale) { \! Name##Assembler assembler(state, Bytecode::k##Name, scale); \! state->SetInitialDebugInformation(#Name, __FILE__, __LINE__); \! assembler.GenerateImpl(); \! } \! void Name##Assembler::GenerateImpl()!

Slide 10

Slide 10 text

IGNITION_HANDLER(LdaZero, InterpreterAssembler) {! Node* zero_value = NumberConstant(0.0);! SetAccumulator(zero_value);! Dispatch();! }!

Slide 11

Slide 11 text

Reusable Enum member وؙٗדenumךًٝغ׾ⱄⵃ欽ׅ׷؛٦أָ㢳ְ Problems

Slide 12

Slide 12 text

#define BYTECODE_LIST(V) \! /* Extended width operands */ \! V(Wide, AccumulatorUse::kNone) \! V(ExtraWide, AccumulatorUse::kNone) \! \! /* Loading the accumulator */ \! V(LdaZero, AccumulatorUse::kWrite) \! V(LdaSmi, AccumulatorUse::kWrite, OperandType::kImm) \! V(LdaUndefined, AccumulatorUse::kWrite) \! V(LdaNull, AccumulatorUse::kWrite) \! V(LdaTheHole, AccumulatorUse::kWrite) \! V(LdaTrue, AccumulatorUse::kWrite) \! .! .! .!

Slide 13

Slide 13 text

const OperandTypeInfo*! const Bytecodes::kOperandTypeInfos[] = {! #define ENTRY(Name, ...) BytecodeTraits<__VA_ARGS__>::kOperandTypeInfos,! BYTECODE_LIST(ENTRY)! #undef ENTRY! };!

Slide 14

Slide 14 text

switch (bytecode) {! #define CASE(Name, ...) \! case Bytecode::k##Name: \! return #Name;! BYTECODE_LIST(CASE)! #undef CASE! }!

Slide 15

Slide 15 text

IDE Frozen ⬁כEmacsזךדRtagsדְַֽאדׅ(^^) Problems

Slide 16

Slide 16 text

Slow Build EC2׾㤍秈׃גrsyncד؝٦س㢌刿ָ֮׷׋ןח鷏⥋ׅ׷״ֲח ׃׋ ؽٕسכEC2ךUbuntuדװ׷ Problems

Slide 17

Slide 17 text

Watch overlookהְֲ،فٔ׾⢪ֲה؝٦س㢌刿׾嗚濼׃גءٕؑ٥؝ وٝس׾㹋遤דֹ׷ v8/src׾湊鋔׃גrsyncׅ׷ Problems