Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
V8のコードベース
Taketoshi Aono(青野健利 a.k.a brn)
March 14, 2018
Programming
0
260
V8のコードベース
V8のC++コードベースについてなど
Taketoshi Aono(青野健利 a.k.a brn)
March 14, 2018
Tweet
Share
More Decks by Taketoshi Aono(青野健利 a.k.a brn)
See All by Taketoshi Aono(青野健利 a.k.a brn)
brn
2
390
brn
3
360
brn
0
340
brn
8
2.3k
brn
1
380
brn
0
430
brn
3
1.1k
brn
0
540
brn
0
430
Other Decks in Programming
See All in Programming
horie1024
2
180
manfredsteyer
PRO
1
130
dunglas
5
6k
techharmony
0
190
ktgrstsh
1
240
doyaaaaaken
1
330
kensukenakazawa
0
100
fancyweb
1
100
kentatada
0
110
daipresents
0
350
chatii
2
300
kulkarniankita09
0
280
Featured
See All Featured
keathley
20
770
jasonvnalue
81
8.2k
dougneiner
119
8k
scottboms
252
11k
paulrobertlloyd
73
1.5k
jrom
116
7.2k
sferik
613
55k
searls
204
37k
frogandcode
128
20k
lauravandoore
440
29k
erikaheidi
15
4.5k
davidbonilla
70
3.6k
Transcript
V8 Codebase
Name @brn (ꫬꅿ⨳ⵃ) Occupation ؿٗٝزؒٝسؒٝآص،٥ط؎ذ؍ـؒٝآص، Company Cyberagent ،سذؙأةآؔ AI Messenger
OSS Contributor of V8 About http://info.b6n.ch
Basic C++ code 倜ז؝٦سכC++14ד鷄⸇ׁגְկ 〢ְ؝٦سחC++03ךせ婍כ֮ךךlambdaהַכ穠圓⢪ג ְկ 遤侧כ882,616遤֮
Build tools GNהְֲًةؽٕسخ٦ٕⵃ欽׃גְկ 㹋ꥷךؽٕسכninja ؝ٝػ؎ٓכخ٦ٕثؑ٦ٝتؐٝٗ٦سׅ״ֲחזגְג clang7.0.0تؐٝٗ٦س׃גⵃ欽ׅ״ֲחזגְ
Lint ؝ىحزחcpplintָ饥גծؿؓ٦وحز麩ך؝٦سכ؝ىح زדֹזְ
Format clang-formatד✲חؿؓ٦وحز׃זְה؝ىحزדֹזְ
Problems - وָؙٗ㢳ְ٥זַזַ搀蘠 - ؝٦سك٦أָ㣐ְֹךדIDE禸כ㔿ת✲ָ㢳ְ - ؝٦سك٦أָ㣐ְֹךדؽٕسָ鹼ְ
Complicated Macros وָؙٗ醱꧟ وؙٗדؙٓأ㹀纏׃… Problems
#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()!
IGNITION_HANDLER(LdaZero, InterpreterAssembler) {! Node* zero_value = NumberConstant(0.0);! SetAccumulator(zero_value);! Dispatch();! }!
Reusable Enum member وؙٗדenumךًٝغⱄⵃ欽ׅ؛٦أָ㢳ְ Problems
#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) \! .! .! .!
const OperandTypeInfo*! const Bytecodes::kOperandTypeInfos[] = {! #define ENTRY(Name, ...) BytecodeTraits<__VA_ARGS__>::kOperandTypeInfos,!
BYTECODE_LIST(ENTRY)! #undef ENTRY! };!
switch (bytecode) {! #define CASE(Name, ...) \! case Bytecode::k##Name: \!
return #Name;! BYTECODE_LIST(CASE)! #undef CASE! }!
IDE Frozen ⬁כEmacsזךדRtagsדְַֽאדׅ(^^) Problems
Slow Build EC2㤍秈׃גrsyncד؝٦س㢌刿ָ֮ןח鷏⥋ׅ״ֲח ׃ ؽٕسכEC2ךUbuntuדװ Problems
Watch overlookהְֲ،فٔ⢪ֲה؝٦س㢌刿嗚濼׃גءٕؑ٥؝ وٝس㹋遤דֹ v8/src湊鋔׃גrsyncׅ Problems