--- id: wiki-2026-0508-javascriptcore title: JavaScriptCore category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-Reinforce-AUTO-1AF373] duplicate_of: none source_trust_level: A confidence_score: 0.9 tags: [auto-reinforced] raw_sources: [] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - [[JavaScript|JavaScript]]Core" inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[JavaScriptCore|JavaScriptCore]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > JavaScriptCore๋Š” [[WebKit|WebKit]]์˜ JavaScript ์—”์ง„์œผ๋กœ, ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” JavaScript๋‚˜ WebAssembly ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์œ ์ถœ์„ ๋ฐฉ์ง€ํ•˜๋„๋ก ์„ค๊ณ„๋œ ์•ˆ์ „ํ•œ ์–ธ์–ด ๊ฐ€์ƒ ๋จธ์‹ (secure language virtual machine)์ž…๋‹ˆ๋‹ค [1, 2]. ์ตœ๊ทผ [[Spectre|Spectre]] ๊ณต๊ฒฉ์œผ๋กœ ์ธํ•ด ๊ธฐ์กด์˜ ๋ถ„๊ธฐ(branch) ๊ธฐ๋ฐ˜ ๋ณด์•ˆ ์†์„ฑ์ด ๋ฌด๋ ฅํ™”๋˜๋Š” ์œ„ํ˜‘์„ ๋ฐ›์•˜์œผ๋ฉฐ, ์ด๋ฅผ ๋ฐฉ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ์  ๋ณด์•ˆ ๊ฐœ์„ ์ด ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [1, 3]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **๋ณด์•ˆ ๋ชฉ์ ๊ณผ ๊ตฌ์กฐ:** JavaScriptCore๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ํ”„๋กœ์„ธ์Šค์— ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ๋ฅผ ๋กœ๋“œํ•˜๋”๋ผ๋„, C๋‚˜ Objective-C ๋ฐ”์ธ๋”ฉ API๋ฅผ ํ†ตํ•ด ๋ช…์‹œ์ ์œผ๋กœ ๋‚ด๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ์ด์ƒ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ JavaScript ์ฝ”๋“œ์— ์œ ์ถœ๋˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [2]. - **Spectre ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•œ ์˜ํ–ฅ:** Spectre ๊ณต๊ฒฉ์€ JavaScriptCore์˜ ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ(bounds checks)์™€ ์œ ํ˜• ๊ฒ€์‚ฌ(type checks)์— ์‚ฌ์šฉ๋˜๋Š” ๋ถ„๊ธฐ(branches)๋ฅผ ์ œ์–ดํ•˜๊ณ  ์šฐํšŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค [1, 4]. ์ด๋กœ ์ธํ•ด ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” JavaScript๋‚˜ WebAssembly๊ฐ€ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค์˜ ์ „์ฒด ์ฃผ์†Œ ๊ณต๊ฐ„์„ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ด๋ก ์ ์ธ ๊ฒฝ๋กœ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ JavaScriptCore์˜ ๋ณด์•ˆ ์†์„ฑ์ด ๊นจ์ง€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [2]. - **์‹คํ–‰ ๋ฐ ์ทจ์•ฝ์  ๋…ธ์ถœ ์›๋ฆฌ:** JavaScriptCore๊ฐ€ JavaScript์˜ ์†์„ฑ ์ ‘๊ทผ(property access) ๋“ฑ ๋ณด์•ˆ์— ๋ฏผ๊ฐํ•œ ์–ธ์–ด ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ, ์ฝ”๋“œ๋Š” ์ตœ์‹  CPU์˜ ๋ถ„๊ธฐ ์˜ˆ์ธก([[Branch Prediction|Branch Prediction]])๊ณผ ์ถ”์ธก ์‹คํ–‰([[Speculative Execution|Speculative Execution]])์„ ํ†ตํ•ด ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค [5, 6]. ๊ณต๊ฒฉ์ž๋Š” ์ด ์ถ”์ธก ์‹คํ–‰ ๊ณผ์ •์—์„œ L1 ์บ์‹œ์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„์˜ ์ง€์—ฐ ์‹œ๊ฐ„(latency) ์ฐจ์ด๋ฅผ ์•…์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 7]. - **๋ณด์•ˆ ์™„ํ™”(Mitigation) ์ „๋žต:** Spectre ์œ„ํ˜‘์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด JavaScriptCore๋Š” ๊ธฐ์กด์˜ ๋ถ„๊ธฐ ๊ธฐ๋ฐ˜ ๋ณด์•ˆ ๊ฒ€์‚ฌ์—์„œ ๋ฒ—์–ด๋‚˜ '๋ถ„๊ธฐ ์—†๋Š” ๋ณด์•ˆ ๊ฒ€์‚ฌ([[Branchless Security Checks|Branchless Security Checks]])'๋ฅผ ๋„์ž…ํ•˜์—ฌ ์ „ํ™˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [3]. ๋Œ€ํ‘œ์ ์œผ๋กœ ๊ฐ์ฒด ํ•„๋“œ ์ ‘๊ทผ ์‹œ ๋ฌด์ž‘์œ„ ๋…์„ฑ ๊ฐ’์„ ํ™œ์šฉํ•˜๋Š” 'ํฌ์ธํ„ฐ ์ค‘๋…([[Pointer Poisoning|Pointer Poisoning]])' ๊ธฐ๋ฒ•์„ JavaScriptCore์˜ ์ˆ˜๋งŽ์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ์ ์šฉํ•จ์œผ๋กœ์จ, ์ž„์˜์˜ ํฌ์ธํ„ฐ ์ƒ์„ฑ์„ ๋ง‰๊ณ  ์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰์— ์•…์šฉ๋˜๋Š” ์œ ํ˜• ํ˜ผ๋™(type confusion)์„ ๋ฐฉ์–ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [8, 9]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[WebKit|WebKit]], Spectre, WebAssembly, [[Speculative Execution|Speculative execution]], [[Pointer Poisoning|Pointer poisoning]] - **Projects/Contexts:** WebKit's [[Spectre and Meltdown|Spectre and Meltdown]] Mitigations - **Contradictions/Notes:** ์†Œ์Šค์— ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. --- *Last updated: 2026-04-19* --- ## ๐Ÿค– LLM ํ™œ์šฉ ํžŒํŠธ (How to Use This Knowledge) **์–ธ์ œ ์ด ์ง€์‹์„ ์“ฐ๋Š”๊ฐ€:** - *(TODO)* **์–ธ์ œ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€:** - *(TODO)* ## ๐Ÿงช ๊ฒ€์ฆ ์ƒํƒœ (Validation) - **์ •๋ณด ์ƒํƒœ:** needs_review - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** A - **๊ฒ€ํ†  ์ด์œ :** *(P-Reinforce Phase 1 ์ž๋™ ์ •๊ทœํ™”. ๋ณธ๋ฌธ ๊ฒ€์ฆ ํ•„์š”.)* ## ๐Ÿงฌ ์ค‘๋ณต ๊ฒ€์‚ฌ (Duplicate Check) - **๊ธฐ์กด ์œ ์‚ฌ ๋ฌธ์„œ:** *(TODO: ์ธ๋ฑ์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌํฌํŠธ ์ฐธ์กฐ)* - **์ฒ˜๋ฆฌ ๋ฐฉ์‹:** UPDATE (์ž๋™ ์ •๊ทœํ™”) - **์ฒ˜๋ฆฌ ์ด์œ :** Phase 1 ์ •๊ทœํ™” โ€” ์˜› ํ…œํ”Œ๋ฆฟ/๋ˆ„๋ฝ ํ•„๋“œ ๋ณด๊ฐ•. ## ๐Ÿ•“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Changelog) | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ฒ˜๋ฆฌ ๋ฐฉ์‹ | ์‹ ๋ขฐ๋„ | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 ์ •๊ทœํ™” (frontmatter + ํ—ค๋” ํ‘œ์ค€ํ™”) | UPDATE | A | ## ๐Ÿ’ป ์ฝ”๋“œ ํŒจํ„ด (Code Patterns) **ํŒจํ„ด 1:** *(TODO: ์ด ํ”„๋กœ์ ํŠธ ์ปจ๋ฒค์…˜ ๋ฐ˜์˜ํ•œ ๊ตฌ์กฐ ์Šค์ผˆ๋ ˆํ†ค)* ```text # TODO ``` ## ๐Ÿค” ์˜์‚ฌ๊ฒฐ์ • ๊ธฐ์ค€ (Decision Criteria) **์„ ํƒ A๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **์„ ํƒ B๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **๊ธฐ๋ณธ๊ฐ’:** > *(TODO)* ## โŒ ์•ˆํ‹ฐํŒจํ„ด (Anti-Patterns) - **[์•ˆํ‹ฐํŒจํ„ด]:** *(TODO: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*