javascript

7.Parse - v8 ソースコードリーディング

ParserApi::PartialPreParse から PreParse の結果のデータ構造を見ていく。 DoPreParse の結果は ParserRecorder に記録されるようだ。Parse の結果に影響を与える各種フラグを見た後に Parser の本体へ。 FunctionLiteral* Parser::DoParseProgram(Handle<String> </string>…

6.スクリプトの実行 - v8 ソースコードリーディング

% gdb ./d8_g して r -e "print('hello')" をステップ実行していき様子を見る ExecuteString Script::Compile Script::New Compiler::Compile コンパイルキャッシュのルックアップ(統計情報を更新していたり) ソースコードがある程度の長さあるなら PrePar…

5.実行試行錯誤 - v8 ソースコードリーディング

何度かビルドし直して scons d8 mode=debug library=static が良さそうと気づく。gdb で d8 を -e "print('hello');" して main で break。さて実行継続するとスレッドが作られてすぐに終わってしまう。(続く)

4.ビルド - v8 ソースコードリーディング

Integer::New で grep してみたがほとんど使われていないようだ。内部的にソースコード行番号を表すのに使っている箇所は見つかったけど。あとで見つかるかもしれないので気にせず次に行こう。実際に動かしてみてコードのパスを見たいのでビルドしてみよう。…

3.文字列・数値 - v8 ソースコードリーディング

文字列 文字列を見ていこう。 v8.h の class String 。 V8EXPORT int Length() const; V8EXPORT int Utf8Length() const; があるのが時代を感じる。文字列の Write も Ascii, UTF16, UTF8 用がある。面白いのは V8EXPORT static v8::Local Empty(); 長さがゼ…

2.Trueオブジェクト Oddball など - v8 ソースコードリーディング

include/v8.h プリミティブ型の定義があるので見てみよう。 Handle GC で追跡できるようにオブジェクトをハンドルで管理する。 GC がオブジェクトを移動する可能性があるので参照ではなくてハンドル。 Handle は値渡しで使われ heap に確保されない Handle …

1.ディレクトリ構成 - v8 ソースコードリーディング

ディレクトリ構成 . : SConstruct など |-- benchmarks : JavaScript のベンチマーク |-- build : プロジェクトファイルを generate するための gyp ファイル |-- include : v8.h などプリミティブ型の class がある。あとで見直す |-- preparser : preparse…

XPath

XPath で分からなかったので質問したら id:amachang がとても丁寧に詳しく教えてくれた。 奥が深い><。

アルゴリズムとか

定本 Cプログラマのためのアルゴリズムとデータ構造 (SOFTBANK BOOKS)を半分ぐらい読んで、勉強がてら、Linear Search, Binary Search, Queue, Stack, Doubly Linked List, Binary Search TreeのサンプルコードをJavaScriptで書いた。 テストコードもJ3Unit…

10分悩んだバグ

if (div.style.displey == 'none') { ごめんなさいごめんなさい ヽ(A`*)ノ≡ Just A Girlアーティスト: BONNIE PINK出版社/メーカー: イーストウエスト・ジャパン発売日: 2001/10/24メディア: CD購入: 1人 クリック: 13回この商品を含むブログ (35件) を見る …

プログラミングtypo

Perlでどうしてもループ変数を使う必要があるシチュエーションで $self->{list}->[i]; # $を忘れる Perlの変数宣言で var $hoge; # JavaScriptと混同 JavaScriptのforループで(ループを使う人は(ry) for (int i = 0; i 追記 elseif id:Baysideさんからの投…

rico.jsによる「もっと読む」機能の実装

id:higepon:20050914:1126689576の続き。 Effect::Sizeを使う場合、隠れた部分の height が事前に分からないと厳しいと書いたところ。 http://synklab.net/blog/?itemid=74の中の人からトラックバックが来ました。 この問題を、非常にスマートに解決していま…

実践 prototype.js [4] rico.js のEffect.Size

今日は prototype.js を利用した Effect を調べていました。prototype.jsの配布元からもリンクされていますが Ricoのデモがすごいことになっています。 百聞は一見に如かず。 例えば、「CINEMATIC DEMOS」の中にある「Animate Size & Position」を見てみまし…

実践 prototype.js [3]

id:higepon:20050901:1125555797の続き。 今日は、はてなマップの新機能をリリースしました。 http://hatena.g.hatena.ne.jp/hatenamap/20050907 本日、はてなマップに新機能を追加しました。http://map.hatena.ne.jp/ * タグでつながるクリップ機能の追加 *…

実践 prototype.js [2]

id:higepon:20050831の続き 同じ .js ファイルの中で宣言の順番に気を使う。後方参照できない(?) この件は、id:kambaraと話していて解決というか納得した。 var Hoge = Class.create(); Hoge.prototype = (new HogeBase).extend ( { このようにクラスを”宣言…

実践 prototype.js [1]

今話題(?)の prototype.js を使ってみました。 うれしいこと Class.create(), extendは最高。 ある程度気軽にクラスを作れる。オブジェクト指向に慣れている人は生産性・コードの品質が上がる。(実際コードはコンパクトになったし、仕様追加時にもいい感じだ…