- JavaScriptの発展
- altJSの誕生
- JSXの設計思想
- JSXプログラムを実行する
- セルフホスティング
- JSXコンパイラの入手
- JSXプログラムの実行
- クラスとメンバー
- 式と文
- モジュール
- ジェネレータ
- JSXdoc
- 型とオブジェクト
- クラステンプレート
- 関数テンプレート
- ダックタイピング (型消去)
- ユニットテスト
- デバッグ機能
- ソースマップ
- プロファイラ
- リリースビルド
- ソースコード圧縮
- grunt-jsx
- コンパイラの概要
- コンパイラの動作環境
- 動作プラットフォームの抽象化
- parser.jsxの概要
- 字句解析器
- 再帰下降構文解析
- 抽象構文木の構造
- クラスとメンバー
- 文と式
- analysis.jsxの概要
- 型の解決
- 型推論
- テンプレートの実体化
- 最適化
- 識別子の圧縮
- jsemitter.jsxの概要
- クラス定義の生成
- 式の生成
- 文の生成
- 識別子のマッピング
- プロトタイプによる継承の実現
- エントリポイントの呼び出し
- テストケースの呼び出し
- オプティマイザと最適化コマンド
- リンク時最適化 (lto)
- 静的リンクと動的リンク
- 最適化ログ
- 最適化戦略
- 呼び出し先の決定 (determine-callee)
- 展開条件
- inlineとreturn-if
- 定数伝搬と定数畳み込み
- 式の畳み込み
- 数式と等価判定
- 関数呼び出し
- デッドコード削除とは
- 副作用のない式
- 未使用変数
- 無効な代入
- 分岐先の確定
- 非BOX化とは
- 非BOX化条件
- ローカル変数の非BOX化
- no-assert/no-log/no-debug
- 局所共通部分式除去 (lcse)
- Array最適化 (array-length)
- 非クラス化 (unclassify/staticize)
- 末尾再帰の最適化 (tail-rec)
- releaseオプション
- 個別の最適化コマンド
- なぜCPS変換が必要なのか
- try-catchとCPS変換
- ジェネレータとは
- JavaScript 1.8のジェネレータ
- ECMAScript6のジェネレータ
- JSXのジェネレータ
- 型の扱いと糖衣構文
- コールバックの問題点
- 非同期処理とコルーチン
- C#のasync/await
- プロミスベースのQ
- ES6の非同期処理
- C#の戦略
- google-traceurの戦略
- JSXの戦略(1. ナイーブな実装)
- JSXの戦略(2. より高速な実装)
- 式の変換
- 文の変換
- コードの合成
- Returnの変換