diff options
Diffstat (limited to 'files/ja/mozilla/projects')
84 files changed, 0 insertions, 23067 deletions
diff --git a/files/ja/mozilla/projects/emscripten/index.html b/files/ja/mozilla/projects/emscripten/index.html deleted file mode 100644 index 7411c9951f..0000000000 --- a/files/ja/mozilla/projects/emscripten/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Emscripten -slug: Mozilla/Projects/Emscripten -translation_of: Mozilla/Projects/Emscripten ---- -<p><span class="seoSummary">Emscripten は LLVM のバイトコードの JavaScript へのコンパイラです。LLVM バイトコードは、例えば C/C++ を Clang でコンパイルすることで出力できます。バイトコードを JavaScript に変換することで、それらを Web ブラウザ上で動作させられます。</span></p> - -<div class="warning"> -<p><strong>重要</strong>:このページには Emscripten の簡単な概要のみが記載されています。詳しく知るには, <a href="http://kripken.github.io/emscripten-site/index.html">Emscripten の公式 WiKi </a>をご覧ください。</p> -</div> - -<p>Emscripten を利用することで以下のことが可能となります。</p> - -<ul> - <li>C や C++ のコードを JavaScript へコンパイルできます</li> - <li>LLVM バイトコードに出力された他の言語のコードを、JavaScript へコンパイルできます。</li> - <li> C/C++ で記述された他の言語の処理系を JavaScript へ変換することで、その言語のコードを間接的に実行できます。既に Python や Lua の処理系が変換されています。</li> -</ul> - -<p>Emscripten を利用することで、ネイティブコードを即座に Web 向けにできます。いくつもの独立した実装をもつ標準化されたプラットフォームを利用することで、PC から iPad まで様々な環境で動作させられます。</p> - -<p>つまり Emscripten を利用することで、手動で JavaScript への移植をする必要はなくなります。また JavaScript を学ぶ必要もなくなります。また既存のネイティブユーティリティやライブラリを利用できるため、 Web 開発者にとっても有益です。</p> - -<p>実際にポータブルな C/C++ コードベースは Emscripten を用いて JavaScript へコンパイル可能です。その範囲は、グラフィックスや音声の再生、ファイルの読み込みと処理を必要とするハイパフォーマンスなゲームから、Qt のようなアプリケーションフレームワークまでに及びます。</p> - -<p>Emscripten は高速なコードを生成します。標準の出力フォーマットは、高度な最適化を可能とする <a href="/docs/Games/Tools/asm.js">asm.js</a> となっています。</p> - -<div class="note"> -<p><strong>付記</strong>:興味をお持ちの方は <a href="http://kripken.github.io/emscripten-site/docs/introducing_emscripten/about_emscripten.html">他の Emscripten に関する記事を読み、デモをご覧ください</a>。その後、<a href="http://kripken.github.io/emscripten-site/docs/getting_started/index.html">利用をはじめる</a> と良いでしょう。</p> -</div> - -<h2 id="MDN_上の他の記事">MDN 上の他の記事</h2> - -<ul> - <li>ゲーム開発において Emscripten はよく利用されています。 <a href="/ja/docs/Games">Games zone</a> には、ゲーム開発に関する記事がまとまっています。</li> - <li> <a href="/ja/docs/Mozilla/Projects/Emscripten/Techniques">Emscripten の技法</a>には、Emscripten WiKi にはない、Emscripten に関する有用なアイディアがまとまっています。</li> -</ul> diff --git a/files/ja/mozilla/projects/emscripten/techniques/index.html b/files/ja/mozilla/projects/emscripten/techniques/index.html deleted file mode 100644 index 2690643fcf..0000000000 --- a/files/ja/mozilla/projects/emscripten/techniques/index.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Emscripten techniques -slug: Mozilla/Projects/Emscripten/Techniques -translation_of: Mozilla/Projects/Emscripten/Techniques ---- -<div class="summary"> -<p>このページには Emscripten に関連する特定の技術情報があります。</p> -</div> - -<dl> - <dt><a href="/ja/docs/Mozilla/Projects/Emscripten/Techniques/Out_of_memory_error_reports">out-of-memory 問題のデバッグ</a></dt> - <dd> - <p>Emscripten 使用中に遭遇するよくあるバグは、大きなサイズのゲームのロード時間中に発生する out of memory エラー (OOM) です。<a href="/about:memory">about:memory</a> が新しいタブに読み込まれる前に「計測 (Measure)」ボタンをクリックすると、何が起きたのか、スパイクを起こしていたメモリの使用量がいつ消えるか、診断が困難な一時メモリのスパイクの発生と言った問題を診断することができます。この記事では、このような問題のデバッグ方法を解説しています。</p> - </dd> -</dl> diff --git a/files/ja/mozilla/projects/index.html b/files/ja/mozilla/projects/index.html deleted file mode 100644 index b3ef45a5fd..0000000000 --- a/files/ja/mozilla/projects/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: プロジェクト -slug: Mozilla/Projects -tags: - - Mozilla - - NeedsContent - - Projects - - TopicStub -translation_of: Mozilla/Projects ---- -<p>このページには、Mozilla の数々のプロジェクト文書へのリンクが表示されます。あるものは Firefox あるいはその他の製品の一部ですが、それ以外のプロジェクトでも使用できます。</p> - -<p>{{ LandingPageListSubpages() }}</p> diff --git a/files/ja/mozilla/projects/l20n/index.html b/files/ja/mozilla/projects/l20n/index.html deleted file mode 100644 index 6f4ea2fb2f..0000000000 --- a/files/ja/mozilla/projects/l20n/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: L20n -slug: Mozilla/Projects/L20n -translation_of: Mozilla/Projects/L20n ---- -<div class="note"> -<p><strong>注記</strong>: このドキュメントは草稿段階または古くなっています。現在のドキュメントについては <a href="https://github.com/l20n/l20n.js/tree/master/docs">GitHub 上のドキュメント</a>を読んでください。</p> -</div> - -<div class="summary">自然言語の力をシンプルなコードで表現できる JavaScript ローカライズフレームワーク</div> - -<div class="column-container"> -<div class="column-half"> -<h2 id="L20n_の紹介">L20n の紹介</h2> - -<p>L20n ソフトウェアのローカライズを革新します。ユーザーは自然言語の完全な表現力に恩恵を受けることができます。L20n はシンプルなことをシンプルなままに、同時に複雑なことも可能にします。</p> - -<p>L20n によって、Mozilla は新しい世代の技術を作り、ローカライズする人の手に更なる力を与え用としています。<span class="seoSummary">L20n は、ローカライゼーションとアプリケーションのロジックを分離することで、ローカライズする人に高度で自由な言語表現ができるようにします。</span>L20n を使用すれば、Web アプリケーションを、言語や文化だけでなく、文脈データ、ユーザーのジェンダー、スクリーンの大きさなどにも対応できるようになります。<strong> </strong></p> -</div> - -<div class="column-half"> -<h2 id="L20n_の一例">L20n の一例</h2> - -<p>英語の文字列を提供する、シンプルで直感的な例を示します。</p> - -<pre class="brush: html notranslate"><brandName "Firefox"> -<about "About \{{ brandName }}"></pre> - -<p>次は、同じ文字列をスロベニア語で提供した例です。</p> - -<pre class="brush: html notranslate"><brandName { - nominative: "Firefox", - genitive: "Firefoxa", - dative: "Firefoxu", - accusative: "Firefox", - locative: "Firefoxu", - instrumental: "Firefoxom" -}> -<about "O \{{ brandName.locative }}"></pre> -</div> -</div> - - - -<div class="column-container"> -<div class="column-third"> -<h2 class="Documentation" id="開発者向け">開発者向け</h2> - -<p><strong>Documentation for developers wanting to implement localization functionality on their web apps using L20n.</strong></p> - -<dl> - <dt>Internationalization for your web app</dt> - <dd>L20n インフラストラクチャの使用を検討している開発者向けのはじめに読む説明書。</dd> - <dt><a href="/en-US/docs/L20n/HTML_Bindings">L20n's HTML bindings</a></dt> - <dd>HTML コードに L20n を実装するためのチュートリアル。</dd> - <dt><a href="/en-US/docs/L20n/Javascript_API">L20n JavaScript API</a></dt> - <dd>l20n.js の API 。</dd> - <dt>L20n syntax cheatsheet for developers</dt> - <dd>A simple cheatsheet to help developers as they add L20n to their localization infrastructure.</dd> -</dl> -</div> - -<div class="column-third"> -<h2 class="Documentation" id="ローカライズする人向け">ローカライズする人向け</h2> - -<p><strong>Documentation for Localizers creating localized content for a project that uses L20n.</strong></p> - -<dl> - <dt><a href="http://l20n.org/learn/">Learn the L20n syntax</a></dt> - <dd>How to naturally localize applications using L20n. Complete with use cases and examples of L20n in action.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/L20n/Localization_Use_Cases">Localization use-cases</a></dt> - <dd>How to naturally localize applications using L20n. Complete with use cases and examples of L20n in action.</dd> - <dt>L20n and Translation Memory eXchange (TMX)</dt> - <dd>How L20n impacts the Translation Memory eXchange standard for translation memory data.</dd> - <dt>L20n syntax cheatsheet for localizers</dt> - <dd>A simple cheatsheet to help localizers as they localize projects with L20n.</dd> -</dl> -</div> - -<div class="column-third"> -<h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">追加リソース</h2> - -<p><strong>L20n に関わる開発者とローカライズする人向けの追加リソースです。</strong></p> - -<dl> - <dt><a href="http://www.l20n.org" title="http://www.l20n.org">L20n.org</a></dt> - <dd>L20n live をブラウザ上で試すことができます。</dd> - <dt><a href="http://l20n.github.io/tinker/" title="http://l20n.github.io/tinker/">L20n Tinker</a></dt> - <dd>自分が書いた L20n コードを L20n Tinker でテストできます。</dd> - <dt><a href="https://github.com/l20n" title="https://github.com/l20n/l20n.js">GitHub</a></dt> - <dd>L20n インフラと生きたデザイン仕様のメインコードが置かれている場所です。</dd> - <dt><a href="https://wiki.mozilla.org/L20n" title="https://wiki.mozilla.org/L20n">Wiki ページ</a></dt> - <dd>L20n の開発プロジェクトの情報があります。</dd> -</dl> -</div> -</div> - -<h2 id="Subnav">Subnav</h2> - -<ol> - <li><a href="#" title="Documentation for developers wanting to implement localization functionality on their web apps using L20n">For Developers</a> - - <ol> - <li><a href="#" title="First read for developers looking to use the L20n infrastructure">Internationalization for your web app</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/L20n/HTML_Bindings" title="Tutorial on implementing L20n in your HTML code">L20n's HTML bindings</a></li> - <li><a href="#" title="A complete description of the use, function, and role of L20n's .lol format.">.lol file format</a></li> - <li><a href="#" title="A simple cheatsheet to help developers as they add L20n to their localization infrastructure.">L20n syntax cheatsheet for developers</a></li> - </ol> - </li> - <li><a href="#" title="Documentation for Localizers creating localized content for a project that uses L20n.">For Localizers</a> - <ol> - <li><a href="#" title="How to naturally localize applications using L20n. Complete with use cases and examples of L20n in action.">Learn the L20n syntax</a></li> - <li><a href="/en-US/docs/L20n/Localization_Use_Cases">Localization use cases</a></li> - <li><a href="#" title="How L20n impacts the Translation Memory eXchange standard for translation memory data.">L20n and Translation Memory eXchange (TMX)</a></li> - <li><a href="#" title="A simple cheatsheet to help localizers as they localize projects with L20n.">L20n syntax cheatsheet for localizers</a></li> - </ol> - </li> - <li><a href="#" title="Some additional resources for developers and localizers involved with L20n.">Additional resources</a> - <ol> - <li><a href="http://www.l20n.org" title="You can try L20n live in your browser on the project page">L20n.org</a></li> - <li><a href="http://l20n.github.io/tinker/" title="Test out your own L20n code in L20n Tinker">L20n Tinker</a></li> - <li><a href="https://github.com/l20n/l20n.js" title="Where the main code for the L20n infrastructure and language lives">L20n GitHub repo</a></li> - <li><a href="https://wiki.mozilla.org/L20n" title="Info about the project to develop L20n">Mozilla Wiki</a></li> - </ol> - </li> -</ol> diff --git a/files/ja/mozilla/projects/mochitest/index.html b/files/ja/mozilla/projects/mochitest/index.html deleted file mode 100644 index e649f3c059..0000000000 --- a/files/ja/mozilla/projects/mochitest/index.html +++ /dev/null @@ -1,220 +0,0 @@ ---- -title: Mochitest -slug: Mozilla/Projects/Mochitest -tags: - - Automated testing - - Developing Mozilla -translation_of: Mozilla/Projects/Mochitest ---- -<p>Mochitestは、<a class="external" href="http://mochikit.com/">MochiKit</a> JavaScriptライブラリに基づいて構築された<a class="internal" href="/ja/docs/Mozilla_automated_testing" title="Mozilla automated testing">自動テストフレームワーク</a>です。これはMozillaによって利用されている、後退バグの自動テストフレームワークの一つです。テストはテストハーネスに対して、JavaScriptの関数を用いて成功あるいは失敗の旨を報告します。</p> -<p>Mochitestのユニークな特長は、Webページの形で書かれたテストを、完全なブラウザ環境の中でChrome(に昇格した)特権付きで実行できるという点です。これは、他のフレームワークでできることよりも非常に多くの事をテストの中のJavaScriptでできるようにします。通常のスクリプトが可能な事(DOM操作など)に加えて、テストのスクリプトはXPCOMコンポーネントやサービス、そしてブラウザそれ自体にすらもアクセスする事ができます。これによって、例えば、入力が意図されたとおりの結果をもたらすかどうかを確認するために、ブラウザのユーザーインターフェースに対してユーザによる入力をシミュレートして渡すなどのことができます。</p> -<p>Mochitestにおける、テストの成否を通知するためのJavaScript関数の呼び出し方は、いくつかの種類のテストに対しては不向きです。(Chrome特権付きの)JavaScriptによってテストできるような内容だけが、このフレームワークを使ってテストできます。創造性を発揮する事によって、あなたが最初に考えているよりもずっとたくさんの事ができますが、しかし、例えばスクリプトではないC++のコンポーネントを直接テストするようなMocihkitテストを書く事は不可能です(それを行うには<a class="internal" href="/ja/docs/Compiled-code_automated_tests" title="Compiled-code automated tests">コンパイル済みコードのテスト</a>を使ってください)。</p> -<h3 id="Running_tests" name="Running_tests">テストを実行する</h3> -<p>MozillaのビルドマシンはMochitestをビルドの過程の一つとして実行します。そのため、誰かがソースコードにコミットした変更が何かを壊していれば、それを極めて迅速に知る事ができます。しかし依然として、あらゆる新しい危険性のあるコードをコミットする前には、あなた自身の手でMochitestを走らせておくべきです。あなたも、避けられるなら、ツリーを壊して他のみんなの時間を無駄にさせる元凶になどなりたくないでしょう? :-)</p> -<h4 id="Running_the_whole_test_suite" name="Running_the_whole_test_suite">テストスイート全体を実行する</h4> -<p>Mochitestを実行するには、まずあなたが行った変更を含めて<a href="/ja/docs/Developer_Guide/Build_Instructions" title="Build_Documentation">Mozillaをビルド</a>します。次に、以下のようにします:</p> -<ul> - <li>1.9.1およびそれ以降(bug 417516が修正されて以降)では、トップレベルのディレクトリで以下のコマンドを実行してください: - <ul> - <li><code>make -C $(OBJDIR) mochitest-plain</code></li> - </ul> - </li> - <li>それより古いブランチでテストを行う場合は、Mochitestの<code>runtests.py</code>スクリプトをオプション指定無しでコマンドラインから実行してください: - <ul> - <li><code>cd $(OBJDIR)/_tests/testing/mochitest<br> - python runtests.py</code></li> - </ul> - </li> -</ul> -<p><img alt="Image:Mochitest.png" class="internal" src="/@api/deki/files/269/=Mochitest.png"></p> -<p><strong>注意:</strong> テストを実行している間は、ブラウザウィンドウがフォーカスされた状態を保つべきです。そうでないと、いくつかのテストが失敗する事があります(例えば{{ Bug(330705) }}のテストがそうです)。Linuxユーザは、ダミーのXサーバを使う事でその状態を保存する事ができます(後述の<a href="#Diverting_X_output">Xの出力を迂回させる手順</a>を参照してください)。</p> -<h4 id="Running_select_tests" name="Running_select_tests">テストを選択して実行する</h4> -<p>テストを一つだけ実行する場合(あなたが書いたばかりの新しいテストなど)や、Mochitestスイート全体のうち一部分だけを実行する場合は、runtests.pyの<code>--test-pathオプションを使って、実行したいテストまたはサブディレクトリを指定してください。例えば、Mozillaのソースツリーの</code>{{ Source("content/base/test/test_CrossSiteXHR.html", "test_CrossSiteXHR.html") }}のテストだけを実行したい場合は、以下のようなコマンドを使う事になります:</p> -<pre><code>TEST_PATH=content/base/test/test_CrossSiteXHR.html make -C $(OBJDIR) mochitest-plain</code> -</pre> -<p>あるいは、mochitest-plain targetがサポーとされていないブランチでは以下のようにします:</p> -<pre>python runtests.py --test-path=content/base/test/test_CrossSiteXHR.html</pre> -<p>{{ Source("content/svg/") }}の中にあるすべてのテストを実行する場合は、以下のコマンドを使います:</p> -<pre class="eval">TEST_PATH=content/svg/ <code>make -C $(OBJDIR) mochitest-plain</code> -</pre> -<p><code>--test-path</code>によって指定されるパスは、Mozillaのソースツリー内のテストまたはディレクトリへの物である事に注意してください。パスがディレクトリの場合、そのディレクトリおよびすべてのサブディレクトリ内のテストが読み込まれます。</p> -<p>{{ h3_gecko_minversion("Gecko 2.0 およびそれ以降で特定のテストを実行する", "2.0") }}</p> -<p>Gecko 2.0 {{ geckoRelease("2.0") }} から、mochitest-1 から mochitest-5 までを make コマンドで簡単に実行できるようになりました。例:</p> -<pre>make mochitest-1 -</pre> -<p>これによって、すべてのテストスイートを実行したり、トライサーバの buildbot のコードを調べて特定のテストだけを実行するための書き方を調べる代わりに、buildbot の挙動を真似る事ができます。</p> -<h4 id="個々のテストのデバッグ">個々のテストのデバッグ</h4> -<p>ある1つのテストについてデバッグする必要が生じた場合に、そのテストだけを実行するために、Firefox にデバッガをアタッチし、デバッガがアタッチされた状態でテストを含むページをリロードするのにも、前述の方法が利用できます。もし問題が起こる前にデバッガをアタッチする事が難しい場合には(例えば、テストが読み込まれた時にブラウザがクラッシュするような場合)、以下のようにしてテストスイート全体をまず最初に実行できます:</p> -<pre>python $OBJDIR/_tests/testing/mochitest/runtests.py -</pre> -<p>この時、デバッガをアタッチして、新しいタブを開き、"<a class="external" href="http://mochi.test:8888/tests/PATH/TO/MY/TEST" rel="freelink">http://mochi.test:8888/tests/PATH/TO/MY/TEST</a>" のようにテストを手動で指定することができます。例: "<a class="external" href="http://mochi.test:8888/tests/modules/plugin/test/test_pluginstream.html" rel="freelink">http://mochi.test:8888/tests/modules...ginstream.html</a>"</p> -<p>あるいは、あなたはmochitestの実行時にデバッガを指定するよう試みるかもしれません:</p> -<pre>TEST_PATH='...' EXTRA_TEST_ARGS='--debugger=gdb' make mochitest-plain -</pre> -<p>引数の --debuggerArgs と --debuggerInteractive も参照してください。</p> -<h4 id="Finding_errors" name="Finding_errors">エラーを探す</h4> -<p>予期されない失敗を探すには、「TEST-UNEXPECTED-FAIL」という文字列を検索してください。最終的なテストの実行結果の要約を見るには「SimpleTest FINISHED」を検索してください。連結されたログではMochitestの出力は最後にあるとは限らないので、すべてのTinderboxのログをまとめて見る時に、後者は特に便利です。</p> -<h4 id="Logging_results" name="Logging_results">結果のロギング</h4> -<p>テストの実行による出力は、コンソールおよび(または)ファイルに送る事ができます(デフォルトでは、結果はブラウザ上にのみ表示されます)。出力の詳細さはいくつかのレベルで指定できます。DEBUG、INFO、WARNING、ERROR、FATALの各レベルがあり、DEBUGでは出力は最も詳細(すべて出力)になり、FATALでは出力は最も少なく(テストを中断させるようなイベントが発生した時だけメッセージを出力)なります。</p> -<p>ファイルにログを保存するには --log-file=<var>ファイルのパス</var> オプションを使います。デフォルトではファイルへのログ出力レベルはINFOですが、--file-level=<var>レベル</var> オプションを使う事でレベルを変更できます。</p> -<p>コンソールへのログ出力を有効にするには、--console-level=<var>レベル</var> オプションを使います。</p> -<p>例えば、テスト実行時の出力を <code>~/mochitest.log</code> というファイルにDEBUGレベルの詳細さで保存したい場合は以下のようになります:</p> -<pre class="eval">python runtests.py --log-file=~/mochitest.log --file-level=DEBUG -</pre> -<h4 id="Diverting_X_output" name="Diverting_X_output">Xの出力を迂回させる</h4> -<p>テスト実行中のコンピュータでユーザが行うあらゆる他の操作による影響を防ぐために、テストは必ずフォーカスされたウィンドウの中で実行されなくてはなりません。Linuxユーザはスイートに指示を与える事で、不可視の仮想デスクトップを使うようにすることができます。もし<a class="external" href="http://en.wikipedia.org/wiki/Xvfb">Xvfb</a>がインストールされている、またはインストールできる場合は、以下のコマンドは現在のセッションをブロックすることなくテストを実行します。:</p> -<pre class="eval">nice xvfb-run python _tests/testing/mochitest/runtests.py --log-file=./mochitest-plain.log --file-level=DEBUG --autorun --close-when-done --console-level=DEBUG -</pre> -<p>他に可能な設定については、{{ Bug(434365) }}で議論されています。</p> -<h4 id="Other_.27runtests.27_options" name="Other_.27runtests.27_options"><code>runtests.py</code>のその他のオプション</h4> -<p><code>runtests.py</code>スクリプトは他にもいくつかのオプションを解釈します。それらの一覧を見るには --help オプションを使ってください。ちなみに、<a href="/ja/docs/Chrome_tests" title="Chrome_tests">--chrome</a>、<a href="/ja/docs/Browser_chrome_tests" title="Browser_chrome_tests">--browser-chrome</a>、<a href="/ja/docs/Accessibility" title="Accessibility">--a11y</a>の各オプションについては個別のドキュメントがあります。</p> -<h3 id="Writing_tests" name="Writing_tests">テストを書く</h3> -<p>Mochitest用のテストファイルは、いくつかの条件についてテストを行うJavaScriptを含んだシンプルなHTML、XHTML、またはXULのファイルです。</p> -<p>Mozillaをビルドせずに大部分のテストを実行するために、<a class="external" href="http://ted.mielczarek.org/code/mozilla/mochitest-maker/">Mochitest maker</a>を利用できます。</p> -<h4 id="Try_to_avoid_Mochitest" name="Try_to_avoid_Mochitest">Mochitestを使わない事を試みる</h4> -<p>はい、これは冗談ではなく本当にです。様々な理由のために、Mochitestは過剰な物となっています。一般的な用途では、より軽量なテストフレームワーク使うように常に試みる事をお勧めします。例えば、ある一つのXPCOMコンポーネントをテストしたいだけであれば、<a href="/ja/docs/Writing_xpcshell-based_unit_tests" title="Writing_xpcshell-based_unit_tests">xpcshell</a>を使うべきです。また、Mochitestにもできない事や、それをするようには設計されていないという事がいくつかあります。こちらの例は視覚的な出力についてのテストで、その場合は<a href="/ja/docs/Creating_reftest-based_unit_tests" title="Creating_reftest-based_unit_tests">reftest</a>フレームワークを使うのがお勧めです。他の異なる種類の自動テストフレームワークについての情報は、<a href="/ja/docs/Mozilla_automated_testing" title="Mozilla_automated_testing">Mozillaの自動テスト</a>を参照してください。</p> -<h4 id="Test_templates" name="Test_templates">テストのテンプレート</h4> -<p>定型的な内容を毎回入力する手間を省くために、{{ Source("testing/mochitest/gen_template.pl", "gen_template.pl") }} Perlスクリプトがテストのテンプレートの生成に利用できます。このスクリプトは2つの省略可能な引数を取ります:</p> -<ol> - <li>-b : バグの番号。</li> - <li>-type : 連符レートの種類。html、xhtml、xul のいずれかを選択する。デフォルトはhtml。</li> -</ol> -<p>利用例:</p> -<pre class="eval">cd mozilla/testing/mochitest/ -perl gen_template.pl -b=123456 > path/to/test_bug123456.html -perl gen_template.pl -b=123456 --type=xul > path/to/test_bug123456.xul -</pre> -<p>Mochitest ではすべてのテストのファイル名は「test_」で始まっている必要がある事に注意してください。テストをツリーのどの位置に置けばよいのかを決める手助けとしては、後述の内容を参照してください。</p> -<p>Mochitest の定型的なコードに加えて、このスクリプトは 'content' という id を持った要素と 'display' という id を持った要素も生成するでしょう。あなたが書くテストでは、これらを他のあなたが追加する要素と同様に操作して構いません。</p> -<h4 id="Test_functions" name="Test_functions">テスト関数</h4> -<p>個々のテストは、Mochitestに対してテストが成功したのか失敗したのかを通知するために実行されるいくつかのJavaScriptを含んでいる必要があります。 {{ Source("testing/mochitest/tests/SimpleTest/SimpleTest.js", "SimpleTest.js") }} は、テストにおいてMochitestにテストの成否を知らせるための様々な関数を含んでいます。これらには以下の物が含まれます:</p> -<ul> - <li><code>ok(<var>trueになるべき文</var>, "<var>エラーメッセージ</var>")</code> -- 値が真である事をテストする。</li> - <li><code>is(<var>実際の値</var>, <var>期待される値</var>, "<var>エラーメッセージ</var>")</code> -- 二つの値を比較する(===ではなく==を使用)。</li> - <li><code>isnot(<var>実際の値</var>, <var>期待されない値</var>, "<var>エラーメッセージ</var>")</code> -- is()の逆。</li> -</ul> -<p>これらの関数の使い方の例は、 {{ Source("testing/mochitest/README.txt", "README") }} を参照してください。</p> -<p>もし、現在のところは失敗するというテストを含めたい場合、単にその部分をコメントアウトしないでください! その代わりに、 相当する「todo」を使ってください。これによってTinderboxは、不意にテストが成功するようになった時に、(いつの時点でテストが成功するようになったのかを)知らせる事ができます。:</p> -<ul> - <li><code>todo(<var>今はfalseになるが本当はtrueになるべき文</var>, "<var>エラーメッセージ</var>"</code><code>)</code></li> - <li><code>todo_is(<var>実際の値</var>, <var>期待される値</var>, "<var>エラーメッセージ</var>")</code></li> - <li><code>todo_isnot(<var>実際の値</var>, <var>期待されない値</var>, "<var>エラーメッセージ</var>")</code></li> -</ul> -<h4 id="Helper_functions" name="Helper_functions">ヘルパー関数</h4> -<p>現時点では、すべてのMochikitの機能が利用できます(これは{{ Bug(367393) }}によって変わるでしょう)。{{ Bug(367569) }}で、ヘルパー関数として<code>sendChar</code>、<code>sendKey</code>、<code>sendString</code>が追加されました。これらは{{ Source("testing/mochitest/tests/SimpleTest/EventUtils.js") }}において利用できます。</p> -<h3 id="Adding_tests_to_the_tree" name="Adding_tests_to_the_tree">テストをツリーに追加する</h3> -<p>新しいテストを書いたら、すぐにそれをMozillaのソースツリーに追加して、ビルドシステムにその事を通知する必要があります。これによって、Mozilla tinderboxはそれを自動的に実行するようになります。</p> -<h4 id="Choosing_a_location" name="Choosing_a_location">場所の選択</h4> -<p>新しいMochitestのテストはテストされるコードの近くのどこか、できれば同じモジュールに置かれるべきで、これにより、テストケースが何のための物なのかが明確になります。例えば、あるHTMLの機能のテストを作成した場合、おそらく、テストを{{ Source("content/html/content/test") }}または{{ Source("content/html/document/test") }}に置きたいと思うでしょう。もしも、テストしようとしているコードの近くにテスト用のディレクトリがなければ、{{ Bug(368531) }}のパッチで実際にそうしているように、新しいテスト用のディレクトリを作成する事ができます。</p> -<h4 id="Makefile_changes" name="Makefile_changes">Makefileの変更</h4> -<p>あなたが書いた新しいテストの事をビルドシステムに通知するために、あなたが書いたテストファイルの名前をそのテストディレクトリの<code>Makefile.in</code>の中の<code>_TEST_FILES</code>に追加する必要があります。</p> -<p>もしもあなたが書いたテストが複数のファイルに渡っているなら、その場合はメインのファイルの名前を「test_...」としてください。これは実行するテストのリストに登場する名前となります。他のファイルはそれ以外の名前になっているべきですが、<code>Makefile.in</code>の<code>_TEST_FILES</code>に追加されなければならないという点は変わりません。</p> -<p>Chromeのテストを追加する場合、テストを <code>_tests/testing/mochitest/<strong>tests</strong></code> ではなく <code>_tests/testing/mochitest/<strong>chrome</strong></code> にインストールするようMakefileを変更する事を忘れないでください。</p> -<h4 id="Building_and_running_new_tests" name="Building_and_running_new_tests">ビルドと新しいテストの実行</h4> -<p>新しいテストをコミットする前に、Makefile.inの変更内容が正しく、また、あなたが書いたテストが期待通りに成功する事を確認してください。あなたが書いたテストを確認するには、まず、以下のコマンドでそのテストをMochitestのディレクトリ(ソースツリーのテストファイルの位置と同じ場所)に取り出してください:</p> -<pre class="eval">make -</pre> -<p>次に、Mochitestを前述の通りに開きますが、この時、「Run Tests」リンクをクリックする代わりに、あなたが書いたテストを一覧から探してそれをクリックしてください。</p> -<h3 id="FAQ" name="FAQ">SSLと<code>https</code>を有効にしたテスト</h3> -<p>Mochitestのテストは、正常な動作のために <code><span class="nowiki">http://localhost:8888</span></code> で実行されなくてはなりません。しかし、テストの中にはオリジンが異なる場合のための機能のテストとして、他のプロトコル、ホスト、ポートを使う必要があるものもあるでしょう。Mochitestのテストハーネスは、元のサーバのすべてのコンテンツをproxy autoconfigとSSLトンネリングを用いて他の様々なサーバに<em>同期(ミラー)する</em>ことで、この問題を解決します。テストを実行したいすべてのスキーム、ホスト、ポートのリスト(それらはすべて <code><span class="nowiki">http://localhost:8888</span></code> と完全に同じコンテンツを返す必要があります)は{{ Source("build/pgo/server-locations.txt") }}で指定します。ただし、そこに記述されたオリジンのすべてが完全に同じである必要はありません。テスト用として特定のSSL証明書を指定された物や、そのサーバ上のページで特権の昇格の要求を許可する物も設定できます。完全な詳細説明については、ファイルの内容を参照してください。</p> -<h4 id="動作させる方法">動作させる方法</h4> -<p><br> - Mochitestのハーネスは、要求されたURLをサーバにマッチさせるためにブラウザに<a class="external" href="http://en.wikipedia.org/wiki/Proxy_auto-config" title="http://en.wikipedia.org/wiki/Proxy_auto-config">proxy autoconfig</a> を使わせる設定を含んでいます。<code>network.proxy.autoconfig_url</code> の設定は、要求されたURLがマップされているホストを認識するための<code>FindProxyForURL</code>という JavaScript 関数をエンコードしたdata: URLがセットされます。SSLのサイトがミラーされる場合、その関数はリクエストを、<a class="external" href="http://www.ietf.org/rfc/rfc2817.txt" title="http://www.ietf.org/rfc/rfc2817.txt">RFC 2817</a>で定められた<code>CONNECT</code>メソッドによる説明に応じて、トラフィックを実際のサーバへ透過的に転送するSSLトンネルにマップします。このようにして、<code><a class="external" href="http://127.0.0.1:8888" rel="freelink">http://127.0.0.1:8888</a></code>に立てられた単一のサーバは異なる場所を示す何十ものサーバをエミュレートします。</p> -<p>MochitestのSSL関連の機能や、署名を変更する方法、新しいhttpsのサーバを追加する手順などのさらに詳細な説明については、<a class="internal" href="/ja/docs/Modifying_Mochitest_SSL_behavior" title="Modifying Mochitest SSL behavior">MochitestのSSLの動作の変更</a>を参照してください。</p> -<h3 id="stacks" name="stacks">スタックトレースの取得</h3> -<p>Mochitest がクラッシュした時のスタックトレースを取得する方法は以下の通りです:</p> -<ol> - <li><code><a class="external" href="http://hg.mozilla.org/build/tools/file/b680aba8e49a/breakpad/" rel="freelink">http://hg.mozilla.org/build/tools/fi...e49a/breakpad/</a></code> からあなたのプラットフォーム用の <code>minidump_stackwalk</code> のバイナリを取得します。</li> - <li>環境変数 <code>MINIDUMP_STACKWALK</code> にそのバイナリのパスを指定します。</li> -</ol> -<p>もし結果のスタックトレースが行番号を含んでいない場合には、必須のシンボルファイルを生成するために <code>make buildsymbols</code> を実行して下さい。詳しくは <a href="/ja/docs/Building_Firefox_with_Debug_Symbols" title="Building Firefox with Debug Symbols">Firefox をデバッグ用のシンボル付きでビルドする</a>を参照して下さい。</p> -<h3 id="FAQ" name="FAQ">FAQ</h3> -<h4 id="What_if_my_tests_aren.27t_done_when_onload_fires.3F" name="What_if_my_tests_aren.27t_done_when_onload_fires.3F">onloadイベントの時に実行されるようなテストが動かない時はどうすればいいですか?</h4> -<p>onloadイベントが発行される前に <code>SimpleTest.waitForExplicitFinish()</code> を呼んでください。その場合は、テストを完了したら <code>SimpleTest.finish()</code> を呼んでください。</p> -<h4 id="What_if_I_need_to_change_a_preference_to_run_my_test.3F" name="What_if_I_need_to_change_a_preference_to_run_my_test.3F">テストの中で設定(Preference)を変える必要がある時はどうすればいいですか?</h4> -<pre class="eval">netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); -var prefService = Components.classes["@mozilla.org/preferences-service;1"] - .getService(Components.interfaces.nsIPrefService); -var domBranch = prefService.getBranch("dom."); -var oldVal = domBranch.getIntPref("max_script_run_time"); -domBranch.setIntPref("max_script_run_time", 0); - -// 必要な処理(テストの内容) - -domBranch.setIntPref("max_script_run_time", oldVal); -</pre> -<p>あるテストを実行している間だけ設定を変更する必要がある場合には、make target <code>mochitest-plain</code> を実行する時に環境変数 <code>EXTRA_TEST_ARGS</code> を設定して下さい。</p> -<pre>EXTRA_TEST_ARGS='--setpref=javascript.options.jit.chrome=false' -</pre> -<p>文字列型の設定を変更する必要がある場合は、バックスラッシュでエスケープしたダブルクォートで文字列を括ります:</p> -<pre>EXTRA_TEST_ARGS='--setpref=webgl.osmesa=\"libOSMesa.so.6\"' -</pre> -<h4 id="Can_tests_be_run_under_a_chrome_URL.3F" name="Can_tests_be_run_under_a_chrome_URL.3F">テストはChrome URLの中でも実行できますか?</h4> -<p>はい。 <code>python runtests.py --chrome</code> を使ってください。ただしXPCOMをテストするための最初の選択肢としては<a href="/ja/docs/Writing_xpcshell-based_unit_tests" title="Writing_xpcshell-based_unit_tests">xpcshellテストハーネス</a>を使うべきであることを心に留めておいてください。Mochitestが必要になるのは、イベントやブラウザの機能、ネットワーク関係の機能がテストに必要な場合だけです。</p> -<h4 id="How_can_I_get_around_the_error_.22Permission_denied_to_get_property_XPCComponents.classes.22.3F" name="How_can_I_get_around_the_error_.22Permission_denied_to_get_property_XPCComponents.classes.22.3F">どうすれば「Permission denied to get property XPCComponents.classes」エラーを回避できますか?</h4> -<p>以下の行をあなたの書いたテストファイル(およびそれぞれのイベントハンドラ)に書き加えてください。すべてのXPCOMが利用できるようになるでしょう。</p> -<pre>netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');</pre> -<p>この方法は明らかに不便です。これこそが、テスト実行用にテストをChromeのディレクトリにコピーするのに必要なハックを行おうと私たちが作業している理由です。</p> -<h4 id="How_do_I_change_the_HTTP_headers_or_status_sent_with_a_file_used_in_a_Mochitest.3F" name="How_do_I_change_the_HTTP_headers_or_status_sent_with_a_file_used_in_a_Mochitest.3F">Mochitestで使われるファイルのHTTPヘッダやステータスを変えるにはどうすればよいですか?</h4> -<p>テキストファイルを作成して、ヘッダを変えたいと思っているファイルの隣に置いてください。テキストファイルの名前はヘッダを変えようとしているファイルの名前の末尾に <code>^headers^</code> を付けた物にします。例えば <code>foo.jpg</code> というファイルがある場合は、テキストファイルの名前は <code>foo.jpg^headers^</code> となります。(ヘッダ指定用のファイルはテストの中で他の目的では使わないでください。HTTPサーバの不可視ファイル機能は、「^」で名前が終わっているすべてのファイルを見えなくするからです。)そして、あなたが設定したいヘッダおよび(もしくは)ステータスをそのファイルの内容として記述してください。例:</p> -<pre class="eval">HTTP 404 Not Found -Content-Type: text/html -Random-Header-of-Doom: 17 -</pre> -<p>最初の行はそのファイルに関連付けられたHTTPステータスと(任意で)説明文を設定しています。この行は省略可能で、通常のレスポンスステータスと説明文で問題ない場合は記述する必要はありません。他の行は、レスポンスヘッダ中で追加または上書きしたい(後者の最も典型的な例はContent-Typeヘッダでしょう)、そのファイルについて説明する追加のヘッダです。様式はHTTPの仕様でのものと同じですが、HTTPの行末を示す必要は無く、一つのヘッダを複数書く事はできません(同じヘッダを複数回多場合は最後の物だけが有効となります)。 ファイルはUnixのテキストファイルの様式に沿って一つの空行で終わる場合がありますが、それは厳密に必要というわけではありません。</p> -<h4 id="How_do_I_test_issues_which_only_show_up_when_tests_are_run_across_domains.3F" name="How_do_I_test_issues_which_only_show_up_when_tests_are_run_across_domains.3F">複数のドメインに渡って実行されるテストでのみ発生する事象をテストするにはどうすればよいですか?</h4> -<p>Mochitestのハーネスはテストを行うために一つのWebサーバだけを起動しますが、proxy autoconfigの働きにより、すべてのテストファイルは異なるドメイン、異なるポートで実行できます。これらのサーバ(権限昇格のための機能に関する2つの例外を除く)で動作しているあらゆるテストは自動的に、UniversalXPConnectなどの特権の取得を要求する事ができるようになります。テストの実行が可能で、<code><span class="nowiki">http://localhost:8888</span></code>と全く同じコンテンツを提供するドメインとポートの完全なリストは、{{ Source("build/pgo/server-locations.txt") }}で指定されます。</p> -<h4 id="How_do_I_write_tests_that_check_header_values.2C_method_types.2C_etc._of_HTTP_requests.3F" name="How_do_I_write_tests_that_check_header_values.2C_method_types.2C_etc._of_HTTP_requests.3F">HTTPリクエストのヘッダの値、メソッドの種類などを確認するテストはどのように書けばよいですか?</h4> -<p>その種のテストを書くには、それ用のSJS(server-side JavaScript)を書くだけでよいです。SJSは <code>sjs</code> という拡張子を持つ単純なJavaScriptファイルで、サンドボックス内に読み込まれます。スクリプト内でグローバルな名前空間において <code>handleRequest</code> という名前で定義された関数は、リクエストとレスポンスのオブジェクトを伴って実行され、そのスクリプトはリクエストの情報に基づいてレスポンスを生成します。</p> -<p>以下は単純なSJSの例です:</p> -<pre class="eval">function handleRequest(request, response) -{ - // avoid confusing cache behaviors - response.setHeader("Cache-Control", "no-cache", false); - - response.setHeader("Content-Type", "text/plain", false); - response.write("Hello world!"); -} -</pre> -<p>引数として渡されるリクエストとレスポンスのオブジェクトが持つ正確なプロパティは、<code>{{ Source("netwerk/test/httpserver/nsIHttpServer.idl", "nsIHttpServer.idl") }}</code>で <code>nsIHttpRequestMetadata</code> と <code>nsIHttpResponse</code> インターフェースとして定義されています。ブラウザはあなたが書いたスクリプトによって生成されたレスポンスを自由にキャッシュする事に気をつけてください。もしSJSが同じURLへの複数のリクエストに対して異なるデータを返したい場合は、 Mochitestの同じセッションで手動で複数回実行された際にテストが意図せず失敗してしまう事を防ぐために、レスポンスに <code>Cache-Control: no-cache</code> ヘッダを加えるとよいでしょう。</p> -<p>reftestにおけるSJSの簡単な利用例としては、<code>{{ Source("modules/libpr0n/test/reftest/generic/check-header.sjs", "check-header.sjs") }}</code>があります。</p> -<h4 id="How_do_I_test_issues_which_only_show_up_when_tests_are_run_across_domains.3F" name="How_do_I_test_issues_which_only_show_up_when_tests_are_run_across_domains.3F">異なるサーバサイドスクリプトの間で状態を引き継ぐにはどうすればよいですか?</h4> -<p>Mochitest のサーバサイドスクリプトは、それぞれの読み込みごとに新たに生成されるサンドボックスの中で実行されます。そのため、ハンドラの中で定義されたいかなる変数も、それぞれの読み込みごとの実行コンテキストを超えて状態を保持し続ける事はありません。状態を保存する手助けとしては、グローバルオブジェクトにおいて定義されている <code>getState(k)</code> および <code>setState(k, v)</code> メソッドを利用します。これらのメソッドはキーと値(どちらも文字列を使用)によるストレージの仕組みをサーバに提供します。(オブジェクトやその他の構造化されたデータを保存するにはJSONを使用してください。)Mochitest における無数のサーバが、プロキシとトンネリングによってそう見せられているだけで実際には単一のサーバであるために、保存された状態はすべてのサーバで常に同じとなることに注意してください。</p> -<p><code>getState</code> および <code>setState</code> メソッドは、サーバサイドスクリプトが読み込まれた時点のパスでスコープが決まります。<code>/foo/bar/baz</code>, <code>/foo/bar/baz?quux</code>, <code>/foo/bar/baz#fnord</code> のような絶対 URL はすべて同じ状態を共有します(この場合 <code>/foo/bar</code> の状態はそれらとは別に保持されます)。テスト同士の依存性とバグの発生を避けるためにも、可能な限り常に、状態はパスごとに使用するべきです。しかしながら、2つのスクリプトが関連して協調動作することが必要であるなどのレアケースで、そのスクリプトから分岐に応じた挙動を要求するための専用のクエリ文字列を利用できないような場合もあります。<em>このような用途についてのみ</em>、あなたはグローバルオブジェクトで定義されている <code>getSharedState(k, v)</code> および <code>setSharedState(k, v)</code> メソッドを使う事ができます。このサーバ全体で共有される状態へのアクセスについては何も制限はかけられておらず、どのスクリプトからも新しい状態を設定でき、どのスクリプトからもそれを削除できます。衝突を避けるために、あなたは名前空間(意図しない衝突を避けるため、これもテスト用の物を作って下さい)をキーに含める事が望ましいです。例えば、ある HTML5 ビデオのテストで状態を共有する必要がある場合なら、<span style="font-family: monospace;">dom.media.video</span><code>:sharedState</code> のようなキーを使う事になります。</p> -<p>より強力な状態保存のための機能として、あらゆる <code>nsISupports</code> 形式のオブジェクトを保持することができる <code>getObjectState(k)</code> および <code>setObjectState(k, v)</code> メソッドもあります。これらのメソッドは <code>nsIHttpServer</code> インターフェースにこの形式で存在していますが、SJS レスポンス処理用のサーバで使われるサンドボックスオブジェクトの制限のため、前者のメソッドは SJS リクエストハンドラのグローバル環境においては、<code>getObjectState(k, callback)</code> という形式(<code>callback</code> は、第1引数で示されたキーに対応するオブジェクトを引数として <code>getObjectState</code> の内部で呼ばれるコールバック関数)で存在します。この、値のマッピングのために、値が XPCOM オブジェクトである必要がある必要があることに注意して下さい。<code>QueryInterface</code> メソッドを持たない任意の JavaScript オブジェクトは利用できません。JavaScript のオブジェクトを保持させたい場合には、<code>QueryInterface</code> の実装を持ち、XPConnect でラップされたオブジェクトから実際の JavaScript オブジェクトを取得するための <a class="internal" href="/ja/docs/wrappedJSObject" title="wrappedJSObject">wrappedJSObject</a> プロパティも持つオブジェクトを使って下さい。</p> -<p>httpd.js によって提供される状態保存の仕組みの詳細については、{{ Source("netwerk/test/httpserver/nsIHttpServer.idl") }} および <code>nsIHttpServer.get(Shared|Object)?State</code> メソッドを参照して下さい。</p> -<h4 id="非同期にレスポンスを返す_SJS_スクリプトはどのように書けばいいですか?">非同期にレスポンスを返す SJS スクリプトはどのように書けばいいですか?</h4> -<p>例えば一定の時間待つという風に、リクエストに対するレスポンスを非同期に返したいという場合があるでしょう。これは <code>handleRequest()</code> 関数に渡される <code>response</code> オブジェクトの <code>processAsync()</code> および <code>finish()</code> 関数によって実現できます。</p> -<p><code>processAsync()</code> は必ず、<code>handleRequest()</code> からリターンする前に呼ばれなくてはなりません。この関数を実行すると、さらに追加のレスポンスを送信するために、request オブジェクトのメソッドを好きな時点で呼ぶ事ができるようになります。必要なレスポンスを送信し終えたら、<code>finish()</code> 関数を呼んでください。例えば、上で説明した <code>setState()</code>/<code>getState()</code> 関数を、request を保存して、後でその内容を参照し、さらに終了するために利用できます。しかしながら、ブラウザはリクエストを異なる順番で行う事があり、そのためあなたが書くコードは時々起こる失敗を避けるよう耐性を高くしなければならないということに気をつけてください。</p> -<pre class="eval">var timer = null; - -function handleRequest(request, response) -{ - response.processAsync(); - response.setHeader("Content-Type", "text/plain", false); - response.write("hello..."); - - timer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer); - timer.initWithCallback(function() - { - response.write("world!"); - response.finish(); - }, 5 * 1000 /* ミリ秒 */, Components.interfaces.nsITimer.TYPE_ONE_SHOT); -} -</pre> -<p>より詳しい情報については、{{ Source("netwerk/test/httpserver/nsIHttpServer.idl") }} にある <code>processAsync()</code> 関数の説明を参照してください。</p> -<h4 id="How_do_I_change_the_HTTP_headers_or_status_sent_with_a_file_used_in_a_Mochitest.3F" name="How_do_I_change_the_HTTP_headers_or_status_sent_with_a_file_used_in_a_Mochitest.3F">SJS スクリプトからサーバ上にあるファイルに XPCOM オブジェクトとしてアクセスするにはどうすればよいですか?(Gecko 1.9.3 およびそれ以降の場合)</h4> -<p>ファイルにアクセスする必要がある場合(例えば、画像データはファイルとして保存しておく方が、SJS スクリプトの中に直接画像を埋め込むよりも扱いが簡単です)、Mochitest で実行されている SJS スクリプトで最初から定義済みの <code>SERVER_ROOT</code> オブジェクトステートを利用して下さい:</p> -<pre class="eval">function handleRequest(req, res) -{ - var file; - getObjectState("SERVER_ROOT", function(serverRoot) - { - file = serverRoot.getFile("tests/content/media/test/320x240.ogv"); - }); - - // この時点で file は指定されたファイルを参照する XPCOM オブジェクトになっています。 - res.write("file: " + file); -} -</pre> -<p>指定するパスは、httpd.js が取り扱うルートディレクトリからの相対パスとして扱われ、その位置に対応する<code>nsIFile</code> のオブジェクトが返されます。この時は、パスの書き間違いに注意してください。ファイルのオブジェクトはパス文字列を保持しているだけなので、指定したファイルは実際に存在している必要がありません。</p> diff --git a/files/ja/mozilla/projects/mochitest/specialpowers/index.html b/files/ja/mozilla/projects/mochitest/specialpowers/index.html deleted file mode 100644 index c3b6141d06..0000000000 --- a/files/ja/mozilla/projects/mochitest/specialpowers/index.html +++ /dev/null @@ -1,471 +0,0 @@ ---- -title: SpecialPowers -slug: Mozilla/Projects/Mochitest/SpecialPowers -tags: - - Mochistest - - NeedsContent - - QA - - 'QA:Tools' - - Reference -translation_of: Mozilla/Projects/Mochitest/SpecialPowers ---- -<p>SpecialPowers は <a href="/en/Mochitest" title="en/Mochitest">Mochitest</a> のテストで利用可能な API 群の 1 つです。Mochitest は通常の Web ページとしてかけるようにする予定です。しかし、セキュリティ的な理由から権限の無い通常の Web ページではテストできないものもあります。そういった場合に SpecialPowers API を使う事で通常の Web ページでは触れることのできない操作をすることができます。</p> - -<div class="note">もし Mochitest で幅広い権限を必要とするテストをする場合は、変りに <a href="/en/Chrome_tests" title="en/Chrome tests">Chrome Mochitest</a> を使う方が良いでしょう。</div> - -<h2 id="Method_overview">Method overview</h2> - -<h3 id="Preference_APIs">Preference APIs</h3> - -<table class="standard-table" style="height: 415px; width: 460px;"> - <tbody> - <tr> - <td><code>void pushPrefEnv(inPrefs, callback);</code></td> - </tr> - <tr> - <td><code>void popPrefEnv(callback);</code></td> - </tr> - <tr> - <td><code>void flushPrefEnv(callback);</code></td> - </tr> - <tr> - <td><code>bool getBoolPref(aPrefName);</code></td> - </tr> - <tr> - <td><code>int getIntPref(aPrefName);</code></td> - </tr> - <tr> - <td><code>string getCharPref(aPrefName);</code></td> - </tr> - <tr> - <td><code>any getComplexValue(aPrefName);</code></td> - </tr> - <tr> - <td><code>void setBoolPref(aPrefName, aValue);</code></td> - </tr> - <tr> - <td><code>void setIntPref(aPrefName, aValue);</code></td> - </tr> - <tr> - <td><code>void setCharPref(aPrefName, aValue);</code></td> - </tr> - <tr> - <td><code>void setComplexValue(aPrefName, aValue);</code></td> - </tr> - <tr> - <td><code>void clearUserPref(aPrefName);</code></td> - </tr> - </tbody> -</table> - -<h3 id="Permission_APIs">Permission APIs</h3> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>void pushPermissions(inPermissions, callback);</code></td> - </tr> - <tr> - <td><code>void popPermissions(callback);</code></td> - </tr> - <tr> - <td><code>void flushPermissions(callback);</code></td> - </tr> - <tr> - <td><code>void addPermission(type, allow, arg);</code></td> - </tr> - <tr> - <td><code>void removePermission(type, arg);</code></td> - </tr> - <tr> - <td><code>bool hasPermission(type, arg);</code></td> - </tr> - <tr> - <td><code>bool testPermission(type, value, arg);</code></td> - </tr> - <tr> - <td><code>void setFullscreenAllowed(document);</code></td> - </tr> - <tr> - <td><code>void removeFullscreenAllowed(document);</code></td> - </tr> - </tbody> -</table> - -<h3 id="Event_Listener_Observer_APIs">Event Listener / Observer APIs</h3> - -<p>TBD</p> - -<h3 id="Garbage_Collection_APIs">Garbage Collection APIs</h3> - -<p>TBD</p> - -<h3 id="Privilege_Wrapper_APIs">Privilege Wrapper APIs</h3> - -<table class="standard-table"> - <tbody> - <tr> - <td><code><a href="#wrap">Object wrap(Object);</a></code></td> - </tr> - </tbody> -</table> - -<h3 id="XPCOM_Components_APIs">XPCOM Components APIs</h3> - -<table class="standard-table"> - <tbody> - <tr> - <td><code><a href="#Cc">Cc</a></code></td> - </tr> - <tr> - <td><code><a href="#Ci">Ci</a></code></td> - </tr> - <tr> - <td><code><a href="#Cr">Cr</a></code></td> - </tr> - <tr> - <td><code><a href="#Cu">Cu</a></code></td> - </tr> - </tbody> -</table> - -<h3 id="Log_APIs">Log APIs</h3> - -<p>TBD</p> - -<h3 id="Environment_APIs">Environment APIs</h3> - -<table class="standard-table" style="height: 250px; width: 463px;"> - <tbody> - <tr> - <td><code>bool isMainProcess();</code></td> - </tr> - <tr> - <td><code>string getMozFullPath(file);</code></td> - </tr> - <tr> - <td><code>bool isWindowPrivate(aWindow);</code></td> - </tr> - <tr> - <td><code>bool isBackButtonEnabled(aWindow);</code></td> - </tr> - <tr> - <td><code>int assertionCount();</code></td> - </tr> - <tr> - <td><code>void removeExpectedCrashDumpFiles(aExpectingProcessCrash);</code></td> - </tr> - <tr> - <td><code>string[] findUnexpectedCrashDumpFiles();</code></td> - </tr> - </tbody> -</table> - -<h3 id="Focus_Management_APIs">Focus Management APIs</h3> - -<p>TBD</p> - -<h3 id="Mock_APIs">Mock APIs</h3> - -<p>TBD</p> - -<h3 id="Form_History_APIs">Form History APIs</h3> - -<p>TBD</p> - -<h3 id="Snapshot_APIs">Snapshot APIs</h3> - -<p>TBD</p> - -<h3 id="Clipboard_APIs">Clipboard APIs</h3> - -<p>TBD</p> - -<h3 id="Console_APIs">Console APIs</h3> - -<p>TBD</p> - -<h3 id="Layout_APIs">Layout APIs</h3> - -<p>TBD</p> - -<h3 id="Frame_Message_APIs">Frame Message APIs</h3> - -<p>TBD</p> - -<h3 id="Apps_APIs">Apps APIs</h3> - -<p>TBD</p> - -<h3 id="Other_APIs">Other APIs</h3> - -<table class="standard-table"> - <tbody> - <tr> - <td><code>XMLHttpRequest createSystemXHR();</code></td> - </tr> - <tr> - <td><code>void quit();</code></td> - </tr> - <tr> - <td><code>DOMWindowUtils getDOMWindowUtils(window);</code></td> - </tr> - <tr> - <td><code>void executeSoon(aFun, aWindow);</code></td> - </tr> - <tr> - <td><code>object getDOMRequestService();</code></td> - </tr> - <tr> - <td><code>void openDialog(aWindow, aArg);</code></td> - </tr> - <tr> - <td><code>string sanityCheck();</code></td> - </tr> - </tbody> -</table> - -<h2 id="Attributes">Attributes</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Attribute</th> - <th scope="col">Type</th> - <th scope="col">Description</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>DOMWindowUtils</code></td> - <td> </td> - <td> </td> - </tr> - <tr> - <td><code>Services</code></td> - <td> </td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Methods">Methods</h2> - -<h3 id="Preference_APIs_2">Preference APIs</h3> - -<p>内部的に、このメソッドがどのように使われているかは {{ interface("nsIPrefBranch") }} のドキュメントを参照してください。</p> - -<h4 id="getBoolPref(aPrefName)"><code>getBoolPref(aPrefName)</code></h4> - -<p>boolean 型として aPrefName のプリファレンス値を取得します。</p> - -<h4 id="getIntPref(aPrefName)"><code>getIntPref(aPrefName)</code></h4> - -<p>integer 型として aPrefName のプリファレンス値を取得します。</p> - -<h4 id="getCharPref(aPrefName)"><code>getCharPref(aPrefName)</code></h4> - -<p>string 型として aPrefName のプリファレンス値を取得します。</p> - -<h4 id="getComplexValue(aPrefName)"><code>getComplexValue(aPrefName)</code></h4> - -<p>XPCOM オブジェクトとして aPrefName のプリファレンス値を取得します。</p> - -<h4 id="setBoolPref(aPrefName_aValue)"><code>setBoolPref(aPrefName, aValue)</code></h4> - -<p>boolean 型の aValue を aPrefName をキーとしてプリファレンスへ設定します。</p> - -<h4 id="setIntPref(aPrefName_aValue)"><code>setIntPref(aPrefName, aValue)</code></h4> - -<p>integer 型の aValue を aPrefName をキーとしてプリファレンスへ設定します。</p> - -<h4 id="setCharPref(aPrefName_aValue)"><code>setCharPref(aPrefName, aValue)</code></h4> - -<p>string 型の aValue を aPrefName をキーとしてプリファレンスへ設定します。</p> - -<h4 id="setComplexValue(aPrefName_aValue)"><code>setComplexValue(aPrefName, aValue)</code></h4> - -<p>XPCOM オブジェクトの aValue を aPrefName をキーとしてプリファレンスへ設定します。</p> - -<h4 id="clearUserPref(aPrefName)"><code>clearUserPref(aPrefName)</code></h4> - -<p>aPrefName のプリファレンス値を初期値に戻します。</p> - -<h3 id="Permission_APIs_2">Permission APIs</h3> - -<p>TBD</p> - -<h3 id="Event_Listener_Observer_APIs_2">Event Listener / Observer APIs</h3> - -<h4 id="addChromeEventListener(type_listener_capture_allowUntrusted)"><code>addChromeEventListener(type, listener, capture, allowUntrusted)</code></h4> - -<p>TabChildGlobal オブジェクトにイベントリスナーを登録します。</p> - -<h4 id="removeChromeEventListener(type_listener_capture)"><code>removeChromeEventListener(type, listener, capture)</code></h4> - -<p>TabChildGlobal オブジェクトからイベントリスナーを除去します。</p> - -<h3 id="Garbage_Collection_APIs_2">Garbage Collection APIs</h3> - -<h4 id="gc()"><code>gc()</code></h4> - -<p>強制的にガベージコレクションを発生させます。</p> - -<h3 id="Privilege_Wrapper_APIs_2">Privilege Wrapper APIs</h3> - -<h4 id="Object_wrap(Object)"><code>Object wrap(Object)</code></h4> - -<p>chrome オブジェクトにアクセスするために chrome オブジェクトをラップします。(例えば) XPCOM コンポーネントを返すメソッドの戻り値にアクセスするためには必要です。</p> - -<h3 id="XPCOM_Components_APIs_2">XPCOM Components APIs</h3> - -<h4 id="Cc"><code>Cc</code></h4> - -<p><code>Components.classes</code> の値を取得できます。これは chrome コード内で取得できるものと同じです。</p> - -<h4 id="Ci"><code>Ci</code></h4> - -<p><code>Components.interfaces</code> の値を取得できます。これは chrome コード内で取得できるものと同じです。</p> - -<h4 id="Cr"><code>Cr</code></h4> - -<p><code>Components.results </code>の値を取得できます。これは chrome コード内で取得できるものと同じです。</p> - -<h4 id="Cu"><code>Cu</code></h4> - -<p><code>Components.utils </code>の値を取得できます。これは chrome コード内で取得できるものと同じです。</p> - -<h3 id="Log_APIs_2">Log APIs</h3> - -<p>TBD</p> - -<h3 id="Environment_APIs_2">Environment APIs</h3> - -<p>TBD</p> - -<h3 id="Focus_Management_APIs_2">Focus Management APIs</h3> - -<p>TBD</p> - -<h3 id="Mock_APIs_2">Mock APIs</h3> - -<h4 id="MockFilePicker"><code>MockFilePicker</code></h4> - -<p>これは読み込み・保存のコードをテストするために、標準 File Picker をスクリプトで制御可能にするものに置換します。これを使うと、以下のコードをテストすることができます。</p> - -<pre class="brush:js;">var MockFilePicker = SpecialPowers.MockFilePicker; -MockFilePicker.reset(); // You must call reset before each test -</pre> - -<p><a class="link-https" href="https://bugzilla.mozilla.org/attachment.cgi?id=544963&action=diff" title="https://bugzilla.mozilla.org/attachment.cgi?id=544963&action=diff">このパッチ</a> ではMockFilePicker の使い方と XPCShell テストの使い方の良い例です。<code> testing/mochitest/MockFilePicker.jsm</code> のコードが参考になるでしょう。</p> - -<h3 id="Form_History_APIs_2">Form History APIs</h3> - -<p>TBD</p> - -<h3 id="Snapshot_APIs_2">Snapshot APIs</h3> - -<p>TBD</p> - -<h3 id="Clipboard_APIs_2">Clipboard APIs</h3> - -<p>TBD</p> - -<h3 id="Console_APIs_2">Console APIs</h3> - -<p>TBD</p> - -<h3 id="Layout_APIs_2">Layout APIs</h3> - -<p>TBD</p> - -<h3 id="Frame_Message_APIs_2">Frame Message APIs</h3> - -<h4 id="loadChromeScript()"><code>loadChromeScript()</code></h4> - -<p>TBD</p> - -<h3 id="Apps_APIs_2">Apps APIs</h3> - -<p>TBD</p> - -<h3 id="Other_APIs_2">Other APIs</h3> - -<h4 id="createSystemXHR()"><code>createSystemXHR()</code></h4> - -<p>完全な "system privileges" を持った XMLHttpRequest を生成して返します。言い換えれば以下の事が可能になります。</p> - -<ul> - <li>制限なくクロスサイトリクエスト (cross-site requests) を要求できます。すなわちターゲットとなるサーバーは CORS をサポートする必要がありません。</li> - <li>xhr.setRequestHeader を使ってどんなヘッダーでも追加することができます。</li> - <li>xhr.getResponseHeader と xhr.getAllResponseHedaders を使ってすべてのレスポンスにアクセスできます。</li> - <li>xhr.responseXML のプロパティを使って XUL コンテンツの読み込み・パースができます。</li> - <li><code>referer</code> (sic) ヘッダー無しでリクエストを要求できます。もし <code>referer</code> ヘッダーを設定したい場合は、xhr.setRequestHeader を使って手動で設定する必要があります。</li> -</ul> - -<p>しかし、xhr オブジェクトをパースしたドキュメントや xhr.responseXML からアクセスしたドキュメントは null principal として生成されています。そのため、ドキュメントでできることに制限があります。</p> - -<h4 id="sanityCheck()"><code>sanityCheck()</code></h4> - -<p>"foo" という文字列を返します。</p> - -<h2 id="Adding_new_APIs">Adding new APIs</h2> - -<p>もし現在定義されていない権限が必要な関数をテストしたい場合、SpecialPowers オブジェクトに新しい API を追加することができます。</p> - -<div class="note">SpecialPowers API は Electrolysis(e10s) プロジェクトでは前方互換として設計されています。そのためコンテンツは別プロセスとして動作します。(Firefox Mobile と同様)。変更したもの全てについてこれを考慮しなくてはいけません。考慮しない場合は許可されることは無いでしょう。</div> - -<p>プロセス外 (out-of-process) のコンテンツをサポートするために、SpecialPowers の実装は以下の 2 つのファイルに分離されています。</p> - -<ul> - <li>親プロセスで常に動作する {{ Source("testing/specialpowers/components/SpecialPowersObserver.js", "SpecialPowersObserver.js") }}</li> - <li>コンテンツプロセスで動作し、<a href="/en/The_message_manager#The_content_script" title="en/The message manager#The content script">コンテンツスクリプト</a> である{{ Source("testing/specialpowers/content/specialpowers.js", "specialpowers.js") }}</li> -</ul> - -<p>両方のファイルは chrome 権限で実行されます。しかし XPCOM API は恐らくコンテンツプロセスでは利用できないでそう。もし特殊な API でそれを利用する場合は Electrolysis や Mobile チームに相談するべきです。プロセス間メッセージの仕組みについての情報を知りたい場合、 <a href="/en/The_message_manager" title="en/The message manager">Message Manager</a> のドキュメントを参照してください。</p> - -<p>{{ interface("nsIScreenManager") }} インターフェイスの <code>numberOfScreens</code> をアクセス可能にする修正を例にしてみましょう。このインターフェイスはコンテンツアプリではアクセス不可能ですので、サンプルコードでそれを可能にしてみましょう。まず初めに、コンテンツで利用できるように SpecialPowers に新しい API を定義した方が良いでしょう。このオブジェクトは {{ Source("testing/specialpowers/content/specialpowers.js", "the content script") }} に定義します。</p> - -<div class="note">SpecialPowers は標準の JavaScript オブジェクトです。そのため、関数・属性・セッター・ゲッターを自由に追加することができます。特殊な <span id="the-code"><span class="a"><code>__exposedProps__</code> property のようにアンダースコア("_") から始まるプロパティを定義することでプロパティを隠すことができます。アンダースコアから始まる関数もプライベートになります。</span></span></div> - -<p>最初に<code>SpecialPowers</code> に <code>numberOfScreens</code> のゲッターを追加しましょう。単純に chrome プロセスにブロッキングメッセージを送信し、応答として値を返すだけです。</p> - -<pre class="brush:js;" lang="en"><span id="the-code"><span class="v">var </span><a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=SpecialPowers">SpecialPowers</a> = { - // existing APIs - //... - -</span><span id="the-code"> // Provide nsIScreenManager.numberOfScreens - get numberOfScreens() { - // You could pass additional parameters in the second parameter, consult the <a title="en/The message manager">message manager</a> documentation for more details. - // Ideally this would be a memoizing getter, that's somewhat out of scope for this document. - return sendSyncMessage("SPNumberOfScreens", {})[0]; - }</span> -<span id="the-code">}; -</span></pre> - -<p>このとき、対応するメッセージのハンドラーを {{ Source("testing/specialpowers/components/SpecialPowersObserver.js", "chrome observer script") }} に定義する必要があります。<span id="the-code"><code>SpecialPowersObserver.observe</code> </span>関数の中で、以下の実在するメッセージを登録します。</p> - -<pre class="brush:js;" lang="en"><span id="the-code"><span class="c">// Register for any messages our API needs us to handle -</span></span><span id="the-code"><a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=messageManager">messageManager</a>.<a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=addMessageListener">addMessageListener</a>(<span class="s">"SPPrefService"</span>, <span class="v">this)</span>; -</span><span id="the-code"><a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=messageManager">messageManager</a>.<a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=addMessageListener">addMessageListener</a>(<span class="s">"SPNumberOfScreens"</span>, <span class="v">this)</span>;</span> -</pre> - -<p>そして、<code><span id="the-code">SpecialPowersObserver.receiveMessage</span></code> 関数の中で、新しいメッセージの分岐を追加し結果を返します。</p> - -<pre class="brush:js;" lang="en"><span id="the-code">receiveMessage: <span class="v">function(</span>aMessage) { -</span><span id="the-code"><span class="v"> switch(aMessage.name) </span>{ - <span class="v">case </span><span class="s">"SPPrefService"</span>:</span> - // existing code... - - case "SPNumberOfScreens": - var screenManager = Components.classes["@mozilla.org/gfx/screenmanager;1"] - .getService(Components.interfaces.nsIScreenManager);<span id="the-code">} - return screenManager.numberOfScreens; - - default: -</span></pre> - -<p>これで終わりです。<br> - この修正を反映させるために、testing/mochitest ディレクトリを再ビルドする必要があるでしょう。これで Mochitest で<code>SpecialPowers.numberOfScreens</code> を利用することができるようになります。</p> - -<div class="note">新しい API を追加後に、このドキュメントに新 API の説明を書くことを忘れないで下さい。</div> diff --git a/files/ja/mozilla/projects/nspr/about_nspr/index.html b/files/ja/mozilla/projects/nspr/about_nspr/index.html deleted file mode 100644 index 179b222508..0000000000 --- a/files/ja/mozilla/projects/nspr/about_nspr/index.html +++ /dev/null @@ -1,476 +0,0 @@ ---- -title: NSPRについて -slug: Mozilla/Projects/NSPR/About_NSPR -translation_of: Mozilla/Projects/NSPR/About_NSPR ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p>NetScape Portable Runtime (NSPR) provides platform independence for non-GUI operating system facilities. These facilities include threads, thread synchronization, normal file and network I/O, interval timing and calendar time, basic memory management (malloc and free) and shared library linking.</p> - -<h3 id="History" name="History">歴史</h3> - -<p>A good portion of the library's purpose, and perhaps the primary purpose in the Gromit environment, was to provide the underpinnings of the Java VM, more or less mapping the<em>sys layer</em> that Sun defined for the porting of the Java VM to various platforms. NSPR went beyond that requirement in some areas and since it was also the platform independent layer for most of the servers produced by Netscape. It was expected and preferred that existing code be restructured and perhaps even rewritten in order to use the NSPR API. It is not a goal to provide a platform for the porting into Netscape of externally developed code.</p> - -<p>At the time of writing the current generation of NSPR was known as NSPR20. The first generation of NSPR was originally conceived just to satisfy the requirements of porting Java to various host environments. NSPR20, an effort started in 1996, built on that original idea, though very little is left of the original code. (The "20" in "NSPR20" does not mean "version 2.0" but rather "second generation".) Many of the concepts have been reformed, expanded, and matured. Today NSPR may still be appropriate as the platform dependent layer under Java, but its primary application is supporting clients written entirely in C or C++.</p> - -<h3 id="How_It_Works" name="How_It_Works">How It Works</h3> - -<p>NSPR's goal is to provide uniform service over a wide range of operating system environments. It strives to not export the<em>lowest common denominator</em> , but to exploit the best features of each operating system on which it runs, and still provide a uniform service across a wide range of host offerings.</p> - -<h4 id="Threads" name="Threads">Threads</h4> - -<p>Threads are the major feature of NSPR. The industry's offering of threads is quite sundry. NSPR, while far from perfect, does provide a single API to which clients may program and expect reasonably consistent behavior. The operating systems provide everything from no concept of threading at all up to and including sophisticated, scalable and efficient implementations. NSPR makes as much use of what the systems offer as it can. It is a goal of NSPR that NSPR impose as little overhead as possible in accessing those appropriate system features.</p> - -<h4 id="Thread_synchronization" name="Thread_synchronization">Thread synchronization</h4> - -<p>Thread synchronization is loosely based on Monitors as described by C.A.R. Hoare in<em>Monitors: An operating system structuring concept</em> , Communications of the ACM, 17(10), October 1974 and then formalized by Xerox' Mesa programming language ("Mesa Language Manual", J.G. Mitchell et al, Xerox PARC, CSL-79-3 (Apr 1979)). This mechanism provides the basic mutual exclusion (mutex) and thread notification facilities (condition variables) implemented by NSPR. Additionally, NSPR provides synchronization methods more suited for use by Java. The Java-like facilities include monitor<em>reentrancy</em> , implicit and tightly bound notification capabilities with the ability to associate the synchronization objects dynamically.</p> - -<h4 id="I.2FO" name="I.2FO">I/O</h4> - -<p>NSPR's I/O is a slightly augmented BSD sockets model that allows arbitrary layering. It was originally intended to export synchronous I/O methods only, relying on threads to provide the concurrency needed for complex applications. That method of operation is preferred though it is possible to configure the network I/O channels as<em>non-blocking</em> in the traditional sense.</p> - -<h4 id="Network_addresses" name="Network_addresses">Network addresses</h4> - -<p>Part of NSPR deals with manipulation of network addresses. NSPR defines a network address object that is Internet Protocol (IP) centric. While the object is not declared as opaque, the API provides methods that allow and encourage clients to treat the addresses as polymorphic items. The goal in this area is to provide a migration path between IPv4 and IPv6. To that end it is possible to perform translations of ASCII strings (DNS names) into NSPR's network address structures, with no regard to whether the addressing technology is IPv4 or IPv6.</p> - -<h4 id="Time" name="Time">Time</h4> - -<p>Timing facilities are available in two forms: interval timing and calendar functions.</p> - -<p>Interval timers are based on a free running, 32-bit, platform dependent resolution timer. Such timers are normally used to specify timeouts on I/O, waiting on condition variables and other rudimentary thread scheduling. Since these timers have finite namespace and are free running, they can wrap at any time. NSPR does not provide an<em>epoch</em> , but expects clients to deal with that issue. The<em>granularity</em> of the timers is guaranteed to be between 10 microseconds and 1 millisecond. This allows a minimal timer<em>period</em> in of approximately 12 hours. But in order to deal with the wrap-around issue, only half that namespace may be utilized. Therefore, the minimal usable interval available from the timers is slightly less than six hours.</p> - -<p>Calendar times are 64-bit signed numbers with units of microseconds. The<em>epoch</em> for calendar times is midnight, January 1, 1970, Greenwich Mean Time. Negative times extend to times before 1970, and positive numbers forward. Use of 64 bits allows a representation of times approximately in the range of -30000 to the year 30000. There is a structural representation (<em>i.e., exploded</em> view), routines to acquire the current time from the host system, and convert them to and from the 64-bit and structural representation. Additionally there are routines to convert to and from most well-known forms of ASCII into the 64-bit NSPR representation.</p> - -<h4 id="Memory_management" name="Memory_management">Memory management</h4> - -<p>NSPR provides API to perform the basic malloc, calloc, realloc and free functions. Depending on the platform, the functions may be implemented almost entirely in the NSPR runtime or simply shims that call immediately into the host operating system's offerings.</p> - -<h4 id="Linking" name="Linking">Linking</h4> - -<p>Support for linking (shared library loading and unloading) is part of NSPR's feature set. In most cases this is simply a smoothing over of the facilities offered by the various platform providers.</p> - -<h3 id="Where_It.27s_Headed" name="Where_It.27s_Headed">Where It's Headed</h3> - -<p>NSPR is applicable as a platform on which to write threaded applications that need to be ported to multiple platforms. The current implementation supports Macintosh (PPC), WIN-32 (WinNT, Win9x) and 20 versions of UNIX and is still expanding. The basic API is stable and expected to remain that way.</p> - -<p>NSPR is functionally complete and has entered a mode of sustaining engineering. As operating system vendors issue new releases of their operating systems, NSPR will be moved forward to these new releases by interested players.</p> - -<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> - -<div class="originaldocinfo"> -<ul> - <li>Author: <a class="link-mailto" href="mailto:larryh@netscape.com">larryh@netscape.com</a></li> - <li>Last Updated Date: 2000</li> - <li>(Portions of the Introduction moved to the history section in 2012)</li> -</ul> -</div> - -<p> </p> diff --git a/files/ja/mozilla/projects/nspr/index.html b/files/ja/mozilla/projects/nspr/index.html deleted file mode 100644 index 0e8c2d9e74..0000000000 --- a/files/ja/mozilla/projects/nspr/index.html +++ /dev/null @@ -1,474 +0,0 @@ ---- -title: NSPR -slug: Mozilla/Projects/NSPR -tags: - - NSPR -translation_of: Mozilla/Projects/NSPR ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p><strong>Netscape Portable Runtime</strong> (<strong>NSPR</strong>) は、システムレベルや libc のような機能のためのプラットフォーム中立な API を提供します。この API は、Mozilla クライアント、Red Hat と Sun の多くのサーバアプリケーション、その他のソフトウェア製品の中で使われています。</p> - -<h2 class="Documentation" id="Documentation" name="Documentation">ドキュメンテーション</h2> - -<dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">NSPR について</a></dt> - <dd>このトピックでは一般的な用語で NSPR の目標とそれを実現する手段の一部について説明しています。</dd> - <dt><a href="Reference" title="NSPR_API_Reference">NSPR API リファレンス</a></dt> - <dd>各 API のパブリックマクロと、NSPR API の構造体と関数についての記述</dd> - <dt><a href="NSPR_build_instructions" title="NSPR_build_instructions">NSPR ビルド手順</a></dt> - <dd>ソースコードをチェックアウトしてビルドする方法</dd> - <dt><a href="Release_process" title="NSPR_release_process">NSPR リリース手順</a></dt> - <dd>NSPR のリリースの準備方法</dd> - <dt><a href="http://viewvc.svn.mozilla.org/vc/projects/mozilla.org/trunk/projects/nspr/" title="http://viewvc.svn.mozilla.org/vc/projects/mozilla.org/trunk/projects/nspr/">レガシーバージョンの NSPR </a></dt> - <dd>古い NSPR については SVN で参照 / 入手が可能です。</dd> -</dl> - -<h2 id="Getting_NSPR" name="Getting_NSPR">NSPR の入手方法</h2> - -<p>NSPRは、各プラットフォームに対し、様々なソースとバイナリパッケージで提供されています。</p> - -<ul> - <li><strong>Windows:</strong> 『<a href="NSPR_build_instructions" title="NSPR_build_instructions">NSPR ビルド手順</a>』の方法でソースパッケージを構築</li> - <li><strong>Mac:</strong> <a href="http://www.macports.org/" title="http://www.macports.org/">MacPorts</a> の <em>NSPR</em> パッケージ、または <a href="http://brew.sh/" title="http://mxcl.github.com/homebrew/">Homebrew</a> NSPR パッケージをインストールします</li> - <li><strong>Ubuntu:</strong> <code>apt-get</code> により <em>libnspr4-dev</em> パッケージをインストール</li> - <li><strong>Debian:</strong> <code>apt-get</code> により <em>libnspr4-dev</em> パッケージをインストール</li> - <li><strong>openSUSE Linux:</strong> Install one or more of the following via <code>yast</code> or <code>zypper</code> : - <ul> - <li><em>mozilla-nspr</em> : Binary libraries for your platform</li> - <li><em>mozilla-nspr-32bit</em> : Binary libraries needed to run 32-bit programs on a 64-bit OS</li> - <li><em>mozilla-nspr-devel</em> : Files needed (in addition to the above libraries) to compile programs using NSPR</li> - <li><em>mozilla-nspr-debuginfo</em> : Debug information (including build symbols) for package <em>mozilla-nspr</em></li> - <li><em>mozilla-nspr-debuginfo-32bit</em> : Debug information (including build symbols) for package <em>mozilla-nspr-32bit</em></li> - <li><em>mozilla-nspr-debugsource</em> : Debug sources for all of the above</li> - </ul> - </li> -</ul> - -<h2 class="Community" id="Community" name="Community">コミュニティ</h2> - -<ul> - <li>Mozilla のフォーラムを参照してください。</li> -</ul> - -<ul> - <li><a href="https://lists.mozilla.org/listinfo/dev-tech-nspr"> メーリングリストとして</a></li> - - - <li><a href="http://groups.google.com/group/mozilla.dev.tech.nspr"> ニュースグループとして</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.tech.nspr/feeds"> フィードとして</a></li> -</ul> - -<h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">関連トピック</h2> - -<ul> - <li><a href="/ja/docs/Necko" title="Necko">Necko</a> 、 <a href="/ja/docs/NSS" title="NSS">NSS</a></li> -</ul> diff --git a/files/ja/mozilla/projects/nspr/reference/date_and_time/index.html b/files/ja/mozilla/projects/nspr/reference/date_and_time/index.html deleted file mode 100644 index 562246ae84..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/date_and_time/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Date and Time -slug: Mozilla/Projects/NSPR/Reference/Date_and_Time -tags: - - NSPR - - NSPR_API_Reference -translation_of: Mozilla/Projects/NSPR/Reference/Date_and_Time ---- -<p> -{{ PreviousNext("NSPR API Reference:Interval Timing", "NSPR API Reference:Memory Management Operations") }} -</p><p>この章では、NSPR にある日時関数について解説します。 -</p><p>NSPR は時を二つの方法で表します。絶対時間と時計・カレンダー時間です。NSPR は両方の表記法における型と定数や、二つの間での時間変換の関数も提供します。 -</p> -<ul><li> 絶対時間による表現は、時間軸に沿った中での点として時間を表現します。時間はエポックと呼ばれる時間軸の原点に対する相対量としてあらわされます。NSPR はエポックを 1970 年 1 月 1 日真夜中 (00:00:00) UTC (Coordinated Universal Time / 協定世界時) をエポックとして採用しています。この形式では、時間はこの時間軸上の点になります。タイムゾーンの概念はありません。 -</li></ul> -<ul><li> 人間向けに使われる、時計・カレンダー時間では、時間をよりわかりやすい年月日時分秒であらわします。この形式では、タイムゾーンが非常に重要となります。たとえば、タイムゾーンを指定しなければ、1998 年 5 月 1 日 午前 8:00 はあいまいです。NSPR のこのデータ型、分解された時間 (exploded time) では、タイムゾーンの情報も含みますので、絶対時間における位置は特定されます。 -</li></ul> -<p>絶対時間とカレンダー方式はタイミング制御の中では通常は利用されません。経過時間を測定する方法やタイムアウトにて利用される関数については、<a href="ja/NSPR_API_Reference/Interval_Timing">13 章 "時間間隔"</a> を参照してください。 -</p> -<ul><li> {{ Anch("Macros for Time Unit Conversion") }} -</li><li> {{ Anch("Types and Constants") }} -</li><li> {{ Anch("Time Parameter Callback Functions") }} -</li><li> {{ Anch("Functions") }} -</li></ul> -<p>{{ 英語版章題("Macros for Time Unit Conversion") }} -</p> -<h3 name=".E6.99.82.E8.A8.88.E5.8D.98.E4.BD.8D.E5.A4.89.E6.8F.9B.E3.83.9E.E3.82.AF.E3.83.AD" id=".E6.99.82.E8.A8.88.E5.8D.98.E4.BD.8D.E5.A4.89.E6.8F.9B.E3.83.9E.E3.82.AF.E3.83.AD">時計単位変換マクロ</h3> -<p>秒、ミリ秒、マイクロ秒、ナノ秒同士の変換マクロです。 -</p> -<ul><li> <a href="ja/PR_MSEC_PER_SEC">PR_MSEC_PER_SEC</a> -</li><li> <a href="ja/PR_USEC_PER_SEC">PR_USEC_PER_SEC</a> -</li><li> <a href="ja/PR_NSEC_PER_SEC">PR_NSEC_PER_SEC</a> -</li><li> <a href="ja/PR_USEC_PER_MSEC">PR_USEC_PER_MSEC</a> -</li><li> <a href="ja/PR_NSEC_PER_MSEC">PR_NSEC_PER_MSEC</a> -</li></ul> -<p>{{ 英語版章題("Types and Constants") }} -</p> -<h3 name=".E5.9E.8B.E3.81.A8.E5.AE.9A.E6.95.B0" id=".E5.9E.8B.E3.81.A8.E5.AE.9A.E6.95.B0">型と定数</h3> -<p>NSPR の時計関数のために定義されている型と定数は以下のものです。 -</p> -<ul><li> <a href="ja/PRTime">PRTime</a> -</li><li> <a href="ja/PRTimeParameters">PRTimeParameters</a> -</li><li> <a href="ja/PRExplodedTime">PRExplodedTime</a> -</li></ul> -<p>{{ 英語版章題("Time Parameter Callback Functions") }} -</p> -<h3 name=".E3.82.BF.E3.82.A4.E3.83.A0.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF.E3.81.AE.E3.82.B3.E3.83.BC.E3.83.AB.E3.83.90.E3.83.83.E3.82.AF.E9.96.A2.E6.95.B0" id=".E3.82.BF.E3.82.A4.E3.83.A0.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF.E3.81.AE.E3.82.B3.E3.83.BC.E3.83.AB.E3.83.90.E3.83.83.E3.82.AF.E9.96.A2.E6.95.B0">タイムパラメータのコールバック関数</h3> -<p>いくつかの地理的場所においては、夏時間 (Daylight Saving Time / DST) の適用と DST が開始もしくは終了する日付の取り扱い方法は何度か変更されています。このため、タイムゾーン情報を決定するにはコールバック関数が用いられています。 -</p><p><code><a href="ja/PRTimeParamFn">PRTimeParamFn</a></code> の定義に従った形式で、自分自身のこのコールバック関数を定義することもできます。NSPR で提供されるこのタイプのよく利用されるコールバック関数には二つあります : -</p> -<ul><li> <a href="ja/PRTimeParamFn">PRTimeParamFn</a> -</li><li> <a href="ja/PR_LocalTimeParameters">PR_LocalTimeParameters</a> と <a href="ja/PR_GMTParameters">PR_GMTParameters</a> -</li></ul> -<p>{{ 英語版章題("Functions") }} -</p> -<h3 name=".E9.96.A2.E6.95.B0" id=".E9.96.A2.E6.95.B0">関数</h3> -<p>日時を作成、取り扱うための関数は : -</p> -<ul><li> <a href="ja/PR_Now">PR_Now</a> -</li><li> <a href="ja/PR_ExplodeTime">PR_ExplodeTime</a> -</li><li> <a href="ja/PR_ImplodeTime">PR_ImplodeTime</a> -</li><li> <a href="ja/PR_NormalizeTime">PR_NormalizeTime</a> -</li></ul> -{{ languages( { "en": "en/NSPR_API_Reference/Date_and_Time" } ) }} diff --git a/files/ja/mozilla/projects/nspr/reference/index.html b/files/ja/mozilla/projects/nspr/reference/index.html deleted file mode 100644 index 312ff85ce0..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/index.html +++ /dev/null @@ -1,768 +0,0 @@ ---- -title: NSPR API リファレンス -slug: Mozilla/Projects/NSPR/Reference -tags: - - NSPR - - NSPR_API_Reference -translation_of: Mozilla/Projects/NSPR/Reference ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<h3 id="Introduction_to_NSPR" name="Introduction_to_NSPR"><a href="Reference/Introduction_to_NSPR">Introduction to NSPR</a></h3> - -<ul> - <li><a href="Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ul> - <li><a href="Reference/Introduction_to_NSPR#Thread_Scheduling">Thread Scheduling</a> - <ul> - <li><a href="Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ul> - </li> - </ul> - </li> - <li><a href="Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ul> - <li><a href="Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ul> - </li> - <li><a href="Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> -</ul> - -<h3 id="NSPR_Types" name="NSPR_Types"><a href="Reference/NSPR_Types">NSPR Types</a></h3> - -<ul> - <li><a href="Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ul> - <li><a href="Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ul> - <li><a href="Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ul> - </li> - <li><a href="Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ul> - </li> - <li><a href="Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ul> - <li><a href="Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ul> - </li> -</ul> - -<h3 id="Threads" name="Threads"><a href="Reference/Threads">Threads</a></h3> - -<ul> - <li><a href="Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="Reference/Threads#Threading_Functions">Threading Functions</a> - <ul> - <li><a href="Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ul> - </li> -</ul> - -<h3 id="Process_Initialization" name="Process_Initialization"><a href="Reference/Process_Initialization">Process Initialization</a></h3> - -<ul> - <li><a href="Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - - <ul> - <li><a href="Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ul> - </li> - <li><a href="Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> -</ul> - -<h3 id="Locks" name="Locks"><a href="Reference/Locks">Locks</a></h3> - -<ul> - <li><a href="Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="Reference/Locks#Lock_Functions">Lock Functions</a></li> -</ul> - -<h3 id="Condition_Variables" name="Condition_Variables"><a href="Reference/Condition_Variables">Condition Variables</a></h3> - -<ul> - <li><a href="Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> -</ul> - -<h3 id="Monitors" name="Monitors"><a href="Reference/Monitors">Monitors</a></h3> - -<ul> - <li><a href="Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> -</ul> - -<h3 id="Cached_Monitors" name="Cached_Monitors"><a href="Reference/Cached_Monitors">Cached Monitors</a></h3> - -<ul> - <li><a href="Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> -</ul> - -<h3 id="I.2FO_Types" name="I.2FO_Types"><a href="Reference/I%2f%2fO_Types">I/O Types</a></h3> - -<ul> - <li><a href="Reference/I%2f%2fO_Types#Directory_Type">Directory Type</a></li> - <li><a href="Reference/I%2f%2fO_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="Reference/I%2f%2fO_Types#File_Info_Types">File Info Types</a></li> - <li><a href="Reference/I%2f%2fO_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="Reference/I%2f%2fO_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="Reference/I%2f%2fO_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="Reference/I%2f%2fO_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> -</ul> - -<h3 id="I.2FO_Functions" name="I.2FO_Functions"><a href="Reference/I%2f%2fO_Functions">I/O Functions</a></h3> - -<ul> - <li><a href="Reference/I%2f%2fO_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Socket_Manipulation_Functions">Socket Manipulation Functions</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="Reference/I%2f%2fO_Functions#Manipulating_Layers">Manipulating Layers</a></li> -</ul> - -<h3 id="Network_Addresses" name="Network_Addresses"><a href="Reference/Network_Addresses">Network Addresses</a></h3> - -<ul> - <li><a href="Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> -</ul> - -<h3 id="Atomic_Operations" name="Atomic_Operations"><a href="Reference/Atomic_Operations">Atomic Operations</a></h3> - -<ul> - <li><a href="Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="Reference/PR_AtomicSet">PR_AtomicSet</a></li> -</ul> - -<h3 id="Interval_Timing" name="Interval_Timing"><a href="Reference/Interval_Timing">Interval Timing</a></h3> - -<ul> - <li><a href="Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> -</ul> - -<h3 id="Date_and_Time" name="Date_and_Time"><a href="Reference/Date_and_Time">Date and Time</a></h3> - -<ul> - <li><a href="Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="Reference/Date_and_Time#Functions">Functions</a></li> -</ul> - -<h3 id="Memory_Management_Operations" name="Memory_Management_Operations"><a href="Reference/Memory_Management_Operations">Memory Management Operations</a></h3> - -<ul> - <li><a href="Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> -</ul> - -<h3 id="String_Operations" name="String_Operations"><a href="Reference/String_Operations">String Operations</a></h3> - -<ul> - <li><a href="Reference/PL_strlen">PL_strlen</a></li> - <li><a href="Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="Reference/PL_strdup">PL_strdup</a></li> - <li><a href="Reference/PL_strfree">PL_strfree</a></li> -</ul> - -<h3 id="Floating_Point_Number_to_String_Conversion" name="Floating_Point_Number_to_String_Conversion"><a href="Reference/Floating_Point_Number_to_String_Conversion">Floating Point Number to String Conversion</a></h3> - -<ul> - <li><a href="Reference/PR_strtod">PR_strtod</a></li> - <li><a href="Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="Reference/PR_cnvtf">PR_cnvtf</a></li> -</ul> - -<h2 id="Long_Long_.2864-bit.29_Integers" name="Long_Long_.2864-bit.29_Integers">Long Long (64-bit) Integers</h2> - -<h2 id="BitMaps" name="BitMaps">BitMaps</h2> - -<h2 id="Formatted_Printing" name="Formatted_Printing">Formatted Printing</h2> - -<h2 id="Linked_Lists" name="Linked_Lists"><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Linked_Lists">Linked Lists</a></h2> - -<ul> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - - <ul> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></code></li> - </ul> - </li> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ul> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></code></li> - </ul> - </li> -</ul> - -<h2 id="Dynamic_Library_Linking" name="Dynamic_Library_Linking"><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking">Dynamic Library Linking</a></h2> - -<ul> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - - <ul> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></code></li> - </ul> - </li> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ul> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></code></li> - <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></code></li> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ul> - </li> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ul> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program </a></li> - </ul> - </li> -</ul> - -<h2 id="Process_Management_and_Interprocess_Communication" name="Process_Management_and_Interprocess_Communication"><a href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication">Process Management and Interprocess Communication</a></h2> - -<ul> - <li><a class="internal" href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - - <ul> - <li><code><a class="internal" href="https://developer.mozilla.org/En/PRProcess">PRProcess</a></code></li> - <li><code><a class="internal" href="https://developer.mozilla.org/En/PRProcessAttr">PRProcessAttr</a></code></li> - </ul> - </li> - <li><a class="internal" href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ul> - <li><a class="internal" href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a class="internal" href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ul> - </li> -</ul> - -<h2 id="Multiwait_Receive" name="Multiwait_Receive">Multiwait Receive</h2> - -<h2 id="System_Information_and_Environment_Variables" name="System_Information_and_Environment_Variables">System Information and Environment Variables</h2> - -<h2 id="Logging" name="Logging"><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging">Logging</a></h2> - -<ul> - <li><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ul> - <li><code><a href="https://developer.mozilla.org/docs/Mozilla/Projects/NSPR/Reference/Logging/PRLogModuleInfo">PRLogModuleInfo</a></code></li> - <li><code><a href="https://developer.mozilla.org/docs/Mozilla/Projects/NSPR/Reference/Logging/PRLogModuleLevel">PRLogModuleLevel</a></code></li> - <li><code><a href="https://developer.mozilla.org/docs/Mozilla/Projects/NSPR/Reference/Logging/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></code></li> - <li><code><a href="https://developer.mozilla.org/docs/Mozilla/Projects/NSPR/Reference/Logging/NSPR_LOG_FILE">NSPR_LOG_FILE</a></code></li> - </ul> - </li> - <li><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ul> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_NewLogModule">PR_NewLogModule</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_SetLogFile">PR_SetLogFile</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_SetLogBuffering">PR_SetLogBuffering</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_LogPrint">PR_LogPrint</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_LogFlush">PR_LogFlush</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_LOG_TEST">PR_LOG_TEST</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_LOG">PR_LOG</a></code></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_Assert_">PR_Assert</a></code></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><code><a href="https://developer.mozilla.org/ja/docs/PR_NOT_REACHED">PR_NOT_REACHED</a></code></li> - </ul> - </li> - <li><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging#Use_Example">Use Example</a></li> -</ul> - -<h2 id="Instrumentation_Counters" name="Instrumentation_Counters">Instrumentation Counters</h2> - -<h3 id="Named_Shared_Memory" name="Named_Shared_Memory"><a href="Reference/Named_Shared_Memory">Named Shared Memory</a></h3> - -<ul> - <li><a href="Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> -</ul> - -<h3 id="Anonymous_Shared_Memory" name="Anonymous_Shared_Memory"><a href="Reference/Anonymous_Shared_Memory">Anonymous Shared Memory</a></h3> - -<ul> - <li><a href="Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> -</ul> - -<h3 id="IPC_Semaphores" name="IPC_Semaphores"><a href="Reference/IPC_Semaphores">IPC Semaphores</a></h3> - -<ul> - <li><a href="Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> -</ul> - -<h3 id="Thread_Pools" name="Thread_Pools"><a href="Reference/Thread_Pools">Thread Pools</a></h3> - -<ul> - <li><a href="Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> -</ul> - -<h3 id="Random_Number_Generator" name="Random_Number_Generator"><a href="Reference/Random_Number_Generator">Random Number Generator</a></h3> - -<ul> - <li><a href="Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> -</ul> - -<h3 id="Hash_Tables" name="Hash_Tables"><a href="Reference/Hash_Tables">Hash Tables</a></h3> - -<ul> - <li><a href="Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> -</ul> - -<h3 id="NSPR_Error_Handling" name="NSPR_Error_Handling"><a href="Reference/NSPR_Error_Handling">NSPR Error Handling</a></h3> - -<ul> - <li><a href="Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> -</ul> diff --git a/files/ja/mozilla/projects/nspr/reference/introduction_to_nspr/index.html b/files/ja/mozilla/projects/nspr/reference/introduction_to_nspr/index.html deleted file mode 100644 index e1b5694995..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/introduction_to_nspr/index.html +++ /dev/null @@ -1,577 +0,0 @@ ---- -title: NSPRのイントロダクション -slug: Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR -translation_of: Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details open> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p>Netscape Portable Runtime (NSPR) APIはスレッド、スレッド同期、I/O、内部タイマー、原子的な操作、そしてその他のプラットフォームに依存しない方法で低レイヤーなサービス等のシステムの機能を使ったアプリケーションに準拠しています。このチャプターではNSPRプログラミングのコンセプトの重要な部分をサンプルコードを使って説明します。</p> - -<p>現在のNSPRの実装では、単一のソースコードのみで Macintosh (PPC), Win32 (NT 3.51, NT 4.0, WIN'95), その他20以上のバージョンのUNIX上でコンパイルすることができます。</p> - -<p>NSPRは既存のコードを移植するためのプラットフォームを提供しません。 ソフトウェアプロジェクトの初めから使用しなければなりません。</p> - -<h2 id="NSPR_Naming_Conventions" name="NSPR_Naming_Conventions">NSPRの命名規則</h2> - -<p>Naming of NSPR types, functions, and macros follows the following conventions:</p> - -<ul> - <li>Types exported by NSPR begin with <code>PR</code> and are followed by intercap-style declarations, like this: <code>PRInt</code>, <code>PRFileDesc</code></li> - <li>Function definitions begin with <code>PR_</code> and are followed by intercap-style declarations, like this: <code>PR_Read</code>, <code>PR_JoinThread</code></li> - <li>Preprocessor macros begin with the letters <code>PR</code> and are followed by all uppercase characters separated with the underscore character (<code>_</code>), like this: <code>PR_BYTES_PER_SHORT</code>, <code>PR_EXTERN</code></li> -</ul> - -<h2 id="NSPR_Threads" name="NSPR_Threads">NSPRのスレッド</h2> - -<p>NSPR provides an execution environment that promotes the use of lightweight threads. Each thread is an execution entity that is scheduled independently from other threads in the same process. A thread has a limited number of resources that it truly owns. These resources include the thread stack and the CPU register set (including PC).</p> - -<p>To an NSPR client, a thread is represented by a pointer to an opaque structure of type <code><a href="PRThread">PRThread</a></code>. A thread is created by an explicit client request and remains a valid, independent execution entity until it returns from its root function or the process abnormally terminates. (<code>PRThread</code> and functions for creating and manipulating threads are described in detail in <a href="Threads">Threads</a>.)</p> - -<p>NSPR threads are lightweight in the sense that they are cheaper than full-blown processes, but they are not free. They achieve the cost reduction by relying on their containing process to manage most of the resources that they access. This, and the fact that threads share an address space with other threads in the same process, makes it important to remember that<em>threads are not processes</em> .</p> - -<p>NSPR threads are scheduled in two separate domains:</p> - -<ul> - <li><strong>Local threads</strong> are scheduled within a process only and are handled entirely by NSPR, either by completely emulating threads on each host operating system (OS) that doesn't support threads, or by using the threading facilities of each host OS that does support threads to emulate a relatively large number of local threads by using a relatively small number of native threads.</li> -</ul> - -<ul> - <li><strong>Global threads</strong> are scheduled by the host OS--not by NSPR--either within a process or across processes on the entire host. Global threads correspond to native threads on the host OS.</li> -</ul> - -<p>NSPR threads can also be either user threads or system threads. NSPR provides a function, <code><a href="PR_Cleanup">PR_Cleanup</a></code>, that synchronizes process termination. <code>PR_Cleanup</code> waits for the last user thread to exit before returning, whereas it ignores system threads when determining when a process should exit. This arrangement implies that a system thread should not have volatile data that needs to be safely stored away.</p> - -<p>Priorities for NSPR threads are based loosely on hints provided by the client and sometimes constrained by the underlying operating system. Therefore, priorities are not rigidly defined. For more information, see <a href="#Thread_Scheduling">Thread Scheduling</a>.</p> - -<p>In general, it's preferable to create local user threads with normal priority and let NSPR take care of the details as appropriate for each host OS. It's usually not necessary to create a global thread explicitly unless you are planning to port your code only to platforms that provide threading services with which you are familiar or unless the thread will be executing code that might directly call blocking OS functions.</p> - -<p>Threads can also have "per-thread-data" attached to them. Each thread has a built-in per-thread error number and error string that are updated when NSPR operations fail. It's also possible for NSPR clients to define their own per-thread-data. For details, see <a href="Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a>.</p> - -<h3 id="Thread_Scheduling" name="Thread_Scheduling">スレッドスケジューリング</h3> - -<p>NSPR threads are scheduled by priority and can be preempted or interrupted. The sections that follow briefly introduce the NSPR approach to these three aspects of thread scheduling.</p> - -<ul> - <li><a href="#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="#Preempting_Threads">Preempting Threads</a></li> - <li><a href="#Interrupting_Threads">Interrupting Threads</a></li> -</ul> - -<p>For reference information on the NSPR API used for thread scheduling, see <a href="Threads">Threads</a>.</p> - -<h4 id="Setting_Thread_Priorities" name="Setting_Thread_Priorities">Setting Thread Priorities</h4> - -<p>The host operating systems supported by NSPR differ widely in the mechanisms they use to support thread priorities. In general, an NSPR thread of higher priority has a statistically better chance of running relative to threads of lower priority. However, because of the multiple strategies to provide execution vehicles for threads on various host platforms, priorities are not a clearly defined abstraction in NSPR. At best they are intended to specify a preference with respect to the amount of CPU time that a higher-priority thread might expect relative to a lower-priority thread. This preference is still subject to resource availability, and must not be used in place of proper synchronization. For more information on thread synchronization, see <a href="#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a>.</p> - -<p>The issue is further muddied by inconsistent offerings from OS vendors regarding the priority of their kernel-supported threads. NSPR assumes that the priorities of global threads are not manageable, but that the host OS will perform some sort of fair scheduling. It's usually preferable to create local user threads with normal priority and let NSPR and the host take care of the details.</p> - -<p>In some NSPR configurations, there may be an arbitrary (and perhaps large) number of local threads being supported by a more limited number of <strong>virtual processors</strong> (an internal application of global threads). In such situations, each virtual processor will have some number of local threads associated with it, though exactly which local threads and how many may vary over time. NSPR guarantees that for each virtual processor the highest-priority, schedulable local thread is the one executing. This thread implementation strategy is referred to as the <strong>M x N model. </strong></p> - -<h4 id="Preempting_Threads" name="Preempting_Threads">Preempting Threads</h4> - -<p>Preemption is the act of taking control away from a ready thread at an arbitrary point and giving control to another appropriate thread. It might be viewed as taking the executing thread and adding it to the end of the ready queue for its appropriate priority, then simply running the scheduling algorithm to find the most appropriate thread. The chosen thread may be of higher priority, of the same priority, or even the same thread. It will not be a thread of lower priority.</p> - -<p>Some operating systems cannot be made preemptable (for example, Mac OS and Win 16). This puts them at some risk in supporting arbitrary code, even if the code is interpreted (Java). Other systems are not thread-aware, and their runtime libraries not thread-safe (most versions of Unix). These systems can support local level thread abstractions that can be made preemptable, but run the risk of library corruption (<code>libc</code>). Still other operating systems have a native notion of threads, and their libraries are thread-aware and support locking. However, if local threads are also present, and they are preemptable, they are subject to deadlock. At this time, the only safe solutions are to turn off preemption (a runtime decision) or to preempt global threads only.</p> - -<h4 id="Interrupting_Threads" name="Interrupting_Threads">Interrupting Threads</h4> - -<p>NSPR threads are interruptable, with some constraints and inconsistencies.</p> - -<p>To interrupt a thread, the caller of <code><a href="PR_Interrupt">PR_Interrupt</a></code> must have the NSPR reference to the target thread (<code><a href="PRThread">PRThread</a></code>*). When the target is interrupted, it is rescheduled from the point at which it was blocked, with a status error indicating that it was interrupted. NSPR recognizes only two areas where a thread may be interrupted: waiting on a condition variable and waiting on I/O. In the latter case, interruption does cancel the I/O operation. In neither case does being interrupted imply the demise of the thread.</p> - -<h2 id="NSPR_Thread_Synchronization" name="NSPR_Thread_Synchronization">NSPRのスレッドの同期</h2> - -<p>Thread synchronization has two aspects: locking and notification. Locking prevents access to some resource, such as a piece of shared data: that is, it enforces mutual exclusion. Notification involves passing synchronization information among cooperating threads.</p> - -<p>In NSPR, a <strong>mutual exclusion lock</strong> (or <strong>mutex</strong>) of type <code><a href="PRLock">PRLock</a></code> controls locking, and associated <strong>condition variables</strong> of type <code><a href="PRCondVar">PRCondVar</a></code> communicate changes in state among threads. When a programmer associates a mutex with an arbitrary collection of data, the mutex provides a protective <strong>monitor</strong> around the data.</p> - -<h3 id="Locks_and_Monitors" name="Locks_and_Monitors">Locks and Monitors</h3> - -<p>In general, a monitor is a conceptual entity composed of a mutex, one or more condition variables, and the monitored data. Monitors in this generic sense should not be confused with the monitor type used in Java programming. In addition to <code><a href="PRLock">PRLock</a></code>, NSPR provides another mutex type, <code><a href="PRMonitor">PRMonitor</a></code>, which is reentrant and can have only one associated condition variable. <code>PRMonitor</code> is intended for use with Java and reflects the Java approach to thread synchronization.</p> - -<p>To access the data in the monitor, the thread performing the access must hold the mutex, also described as being "in the monitor." Mutual exclusion guarantees that only one thread can be in the monitor at a time and that no thread may observe or modify the monitored data without being in the monitor.</p> - -<p>Monitoring is about protecting data, not code. A <strong>monitored invariant</strong> is a Boolean expression over the monitored data. The expression may be false only when a thread is in the monitor (holding the monitor's mutex). This requirement implies that when a thread first enters the monitor, an evaluation of the invariant expression must yield a <code>true</code>. The thread must also reinstate the monitored invariant before exiting the monitor. Therefore, evaluation of the expression must also yield a true at that point in execution.</p> - -<p>A trivial example might be as follows. Suppose an object has three values, <var>v1</var>, <var>v2</var>, and <var>sum</var>. The invariant is that the third value is the sum of the other two. Expressed mathematically, the invariant is <code>sum = v1 + v2</code>. Any modification of <var>v1</var> or <var>v2</var> requires modification of <var>sum</var>. Since that is a complex operation, it must be monitored. Furthermore, any type of access to <var>sum</var> must also be monitored to ensure that neither <var>v1</var> nor <var>v2</var> are in flux.</p> - -<div class="note"><strong>Note</strong>: Evaluation of the invariant expression is a conceptual requirement and is rarely done in practice. It is valuable to formally define the expression during design, write it down, and adhere to it. It is also useful to implement the expression during development and test it where appropriate. The thread makes an absolute assertion of the expression's evaluation both on entering and on exiting the monitor.</div> - -<p>Acquiring a lock is a synchronous operation. Once the lock primitive is called, the thread returns only when it has acquired the lock. Should another thread (or the same thread) already have the lock held, the calling thread blocks, waiting for the situation to improve. That blocked state is not interruptible, nor is it timed.</p> - -<h3 id="Condition_Variables" name="Condition_Variables">Condition Variables</h3> - -<p>Condition variables facilitate communication between threads. The communication available is a semantic-free notification whose context must be supplied by the programmer. Conditions are closely associated with a single monitor.</p> - -<p>The association between a condition and a monitor is established when a condition variable is created, and the association persists for the life of the condition variable. In addition, a static association exists between the condition and some data within the monitor. This data is what will be manipulated by the program under the protection of the monitor. A thread may wait on notification of a condition that signals changes in the state of the associated data. Other threads may notify the condition when changes occur.</p> - -<p>Condition variables are always monitored. The relevant operations on conditions are always performed from within the monitor. They are used to communicate changes in the state of the monitored data (though still preserving the monitored invariant). Condition variables allow one or more threads to wait for a predetermined condition to exist, and they allow another thread to notify them when the condition occurs. Condition variables themselves do not carry the semantics of the state change, but simply provide a mechanism for indicating that something has changed. It is the programmer's responsibility to associate a condition with the state of the data.</p> - -<p>A thread may be designed to wait for a particular situation to exist in some monitored data. Since the nature of the situation is not an attribute of the condition, the program must test that itself. Since this testing involves the monitored data, it must be done from within the monitor. The wait operation atomically exits the monitor and blocks the calling thread in a waiting condition state. When the thread is resumed after the wait, it will have reentered the monitor, making operations on the data safe.</p> - -<p>There is a subtle interaction between the thread(s) waiting on a condition and those notifying it. The notification must take place within a monitor--the same monitor that protects the data being manipulated by the notifier. In pseudocode, the sequence looks like this:</p> - -<pre class="eval">enter(monitor); -... manipulate the monitored data -notify(condition); -exit(monitor); -</pre> - -<p>Notifications to a condition do not accumulate. Nor is it required that any thread be waiting on a condition when the notification occurs. The design of the code that waits on a condition must take these facts into account. Therefore, the pseudocode for the waiting thread might look like this:</p> - -<pre class="eval">enter(monitor) -while (!expression) wait(condition); -... manipulate monitored data -exit(monitor); -</pre> - -<p>The need to evaluate the Boolean expression again after rescheduling from a wait may appear unnecessary, but it is vital to the correct execution of the program. The notification promotes a thread waiting on a condition to a ready state. When that thread actually gets scheduled is determined by the thread scheduler and cannot be predicted. If multiple threads are actually processing the notifications, one or more of them could be scheduled ahead of the one explicitly promoted by the notification. One such thread could enter the monitor and perform the work indicated by the notification, and exit. In this case the thread would resume from the wait only to find that there's nothing to do.</p> - -<p>For example, suppose the defined rule of a function is that it should wait until there is an object available and that it should return a reference to that object. Writing the code as follows could potentially return a null reference, violating the invariant of the function:</p> - -<pre class="eval">void *dequeue() -{ - void *db; - enter(monitor); - if ((db = delink()) == null) - { - wait(condition); - db = delink(); - } - exit(monitor); - return db; -} -</pre> - -<p>The same function would be more appropriately written as follows:</p> - -<pre class="eval">void *dequeue() -{ - void *db; - enter(monitor); - while ((db = delink()) == null) - wait(condition); - exit(monitor); - return db; -} -</pre> - -<div class="note"><strong>Caution</strong>: The semantics of <code><a href="PR_WaitCondVar">PR_WaitCondVar</a></code> assume that the monitor is about to be exited. This assumption implies that the monitored invariant must be reinstated before calling <code>PR_WaitCondVar</code>. Failure to do this will cause subtle but painful bugs.</div> - -<p>To modify monitored data safely, a thread must be in the monitor. Since no other thread may modify or (in most cases) even observe the protected data from outside the monitor, the thread can safely make any modifications needed. When the changes have been completed, the thread notifies the condition associated with the data and exits the monitor using <code><a href="PR_NotifyCondVar">PR_NotifyCondVar</a></code>. Logically, each such notification promotes one thread that was waiting on the condition to a ready state. An alternate form of notification (<code><a href="PR_NotifyAllCondVar">PR_NotifyAllCondVar</a></code>) promotes all threads waiting on a condition to the ready state. If no threads were waiting, the notification is a no-op.</p> - -<p>Waiting on a condition variable is an interruptible operation. Another thread could target the waiting thread and issue a <code><a href="PR_Interrupt">PR_Interrupt</a></code>, causing a waiting thread to resume. In such cases the return from the wait operation indicates a failure and definitively indicates that the cause of the failure is an interrupt.</p> - -<p>A call to <code><a href="PR_WaitCondVar">PR_WaitCondVar</a></code> may also resume because the interval specified on the wait call has expired. However, this fact cannot be unambiguously delivered, so no attempt is made to do so. If the logic of a program allows for timing of waits on conditions, then the clock must be treated as part of the monitored data and the amount of time elapsed re-asserted when the call returns. Philosophically, timeouts should be treated as explicit notifications, and therefore require the testing of the monitored data upon resumption.</p> - -<h2 id="NSPR_Sample_Code" name="NSPR_Sample_Code">NSPRのサンプルコード</h2> - -<p>The documents linked here present two sample programs, including detailed annotations: <code><a href="/I%2f%2fO_Layering_Sample">layer.html</a></code> and <code><a href="/Thread_Synchronization_Sample">switch.html</a></code>. In addition to these annotated HTML versions, the same samples are available in pure source form.</p> diff --git a/files/ja/mozilla/projects/nspr/reference/logging/index.html b/files/ja/mozilla/projects/nspr/reference/logging/index.html deleted file mode 100644 index a580b77cb0..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/logging/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Logging -slug: Mozilla/Projects/NSPR/Reference/Logging -translation_of: Mozilla/Projects/NSPR/Reference/Logging ---- -<p>{{ PreviousNext("NSPR API Reference:System Information and Environment Variables", "NSPR API Reference:Instrumentation Counters") }}</p> -<p>This chapter describes the global functions you use to perform logging. NSPR provides a set of logging functions that conditionally write <code>printf()</code> style strings to the console or to a log file. NSPR uses this facility itself for its own development debugging purposes.</p> -<p>You can select events to be logged by module or level. A module is a user-defined class of log events. A level is a numeric value that indicates the seriousness of the event to be logged. You can combine module and level criteria to get highly selective logging.</p> -<p>NSPR also provides "assert"-style macros and functions to aid in application debugging.</p> -<ul> - <li>{{ Anch("Conditional Compilation and Execution") }}</li> - <li>{{ Anch("Log Types and Variables") }}</li> - <li>{{ Anch("Logging Functions and Macros") }}</li> - <li>{{ Anch("Use Example") }}</li> -</ul> -<h3 id="Conditional_Compilation_and_Execution" name="Conditional_Compilation_and_Execution">Conditional Compilation and Execution</h3> -<p>NSPR's logging facility is conditionally compiled in and enabled for applications using it. These controls are platform dependent. Logging is not compiled in for the Win16 platform. Logging is compiled into the NSPR debug builds; logging is not compiled into the NSPR optimized builds. コンパイル時に <code>#define</code> で、<code>DEBUG</code> または <code>FORCE_PR_LOGをセットするとアプリケーション・プログラムで</code>NSPR loggingが有効になります。.</p> -<p>To enable NSPR logging and/or the debugging aids in your application, compile using the NSPR debug build headers and runtime. Set one of the compile-time defines when you build your application.</p> -<p>Execution-time control of NSPR's logging uses two environment variables. These variables control which modules and levels are logged as well as the file name of the log file. By default, no logging is enabled at execution time.</p> -<h3 id="Log_Types_and_Variables" name="Log_Types_and_Variables">Log Types and Variables</h3> -<p>Two types supporting NSPR logging are exposed in the API:</p> -<ul> - <li><a href="/en/PRLogModuleInfo" title="en/PRLogModuleInfo">PRLogModuleInfo</a></li> - <li><a href="/en/PRLogModuleLevel" title="en/PRLogModuleLevel">PRLogModuleLevel</a></li> -</ul> -<p>Two environment variables control the behavior of logging at execution time:</p> -<ul> - <li><a href="/en/NSPR_LOG_MODULES" title="en/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/en/NSPR_LOG_FILE" title="en/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> -</ul> -<h3 id="Logging_Functions_and_Macros" name="Logging_Functions_and_Macros">Logging Functions and Macros</h3> -<p>The functions and macros for logging are:</p> -<ul> - <li><a href="/en/PR_NewLogModule" title="en/PR_NewLogModule">PR_NewLogModule</a></li> - <li><a href="/en/PR_SetLogFile" title="en/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/en/PR_SetLogBuffering" title="en/PR_SetLogBuffering">PR_SetLogBuffering</a></li> - <li><a href="/en/PR_LogPrint" title="en/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/en/PR_LogFlush" title="en/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/en/PR_LOG_TEST" title="en/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/en/PR_LOG" title="en/PR_LOG">PR_LOG</a></li> - <li><a href="/en/PR_ASSERT" title="en/PR_ASSERT">PR_Assert</a></li> - <li><a href="/en/PR_ASSERT" title="en/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/en/PR_STATIC_ASSERT" title="en/PR_STATIC_ASSERT">PR_STATIC_ASSERT</a> (new in NSPR 4.6.6<span class="comment">XXX this hasn't been released yet; the number is a logical guess</span>)</li> - <li><a href="/en/PR_NOT_REACHED" title="en/PR_NOT_REACHED">PR_NOT_REACHED</a></li> -</ul> -<h3 id="Use_Example" name="Use_Example">Use Example</h3> -<p>The following sample code fragment demonstrates use of the logging and debugging aids.</p> -<ul> - <li>Compile the program with DEBUG defined.</li> - <li>Before running the compiled program, set the environment variable NSPR_LOG_MODULES to userStuff:5</li> -</ul> -<pre class="eval">static void UserLogStuff( void ) -{ - PRLogModuleInfo *myLM; - PRIntn i; - - PR_STATIC_ASSERT(5 > 4); /* NSPR 4.6.6 or newer */ - - myLM = PR_NewLogModule( "userStuff" ); - PR_ASSERT( myLM ); - - PR_LOG( myLM, PR_LOG_NOTICE, ("Log a Notice %d\n", 999 )); - for (i = 0; i < 10 ; i++ ) - { - PR_LOG( myLM, PR_LOG_DEBUG, ("Log Debug number: %d\n", i)); - PR_Sleep( 500 ); - } - PR_LOG( myLM, PR_LOG_NOTICE, ("That's all folks\n"); - -} /* end UserLogStuff() */ -</pre> -<p>{{ PreviousNext("NSPR API Reference:System Information and Environment Variables", "NSPR API Reference:Instrumentation Counters") }}</p> -<h3 id="See_also">See also</h3> -<p><a class="external" href="http://www.mozilla.org/projects/nspr/reference/html/prlog.html" title="http://www.mozilla.org/projects/nspr/reference/html/prlog.html">NSPR Logging reference</a></p> diff --git a/files/ja/mozilla/projects/nspr/reference/memory_management_operations/index.html b/files/ja/mozilla/projects/nspr/reference/memory_management_operations/index.html deleted file mode 100644 index 25b9fc1040..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/memory_management_operations/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: NSPR API リファレンス -slug: Mozilla/Projects/NSPR/Reference/Memory_Management_Operations -tags: - - NSPR - - NSPR_API_Reference -translation_of: Mozilla/Projects/NSPR/Reference/Memory_Management_Operations ---- -<p> {{ PreviousNext("NSPR API Reference:Date and Time", "NSPR API Reference:String Operations") }} -</p><p>この章では、メモリ管理を行う際に利用することになるグローバル関数やマクロについて解説しています。NSPR はおなじみの <code>malloc()</code>, <code>calloc()</code>, <code>realloc()</code> や <code>free()</code> にマップされているヒープベースのメモリ管理関数を提供しています。 -</p> -<ul><li> {{ Anch("Memory Allocation Functions") }} -</li><li> {{ Anch("Memory Allocation Macros") }} -</li></ul> -<p>{{ 英語版章題("Memory Allocation Functions") }} -</p> -<h3 name=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E3.82.8A.E5.BD.93.E3.81.A6.E9.96.A2.E6.95.B0" id=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E3.82.8A.E5.BD.93.E3.81.A6.E9.96.A2.E6.95.B0">メモリ割り当て関数</h3> -<p>NSPR は自身にヒープ領域を確保しており、これらの関数はそのヒープ領域に対して動作します。ライブラリは Netscape security libraries などといった NSPR の最初に作成され、これらの関数をメモリの確保や開放に利用しています。これらのライブラリで利用するためにメモリを確保する場合や、これらのライブラリで確保されたメモリを開放する場合は、libc の同等の関数ではなく、必ず NSPR の関数を利用する必要があります。 -</p><p>メモリ割り当て関数は次のものになります : -</p> -<ul><li> <a href="ja/PR_Malloc">PR_Malloc</a> -</li><li> <a href="ja/PR_Calloc">PR_Calloc</a> -</li><li> <a href="ja/PR_Realloc">PR_Realloc</a> -</li><li> <a href="ja/PR_Free">PR_Free</a> -</li></ul> -<p><code>PR_Malloc()</code>, <code>PR_Calloc()</code>, <code>PR_Realloc()</code> や <code>PR_Free()</code> は、その libc の同等の関数である <code>malloc()</code>, <code>calloc()</code>, <code>realloc()</code> や <code>free()</code> と同じ定数を利用し、同等の動作を行います。(ただし、引数の型の <code>size_t</code> は <code>PRUint32</code> に変換されています。) <code>PR_Malloc()</code>, <code>PR_Calloc()</code> や <code>PR_Realloc()</code> で確保されたメモリ領域は、必ず <code>PR_Free()</code> で開放される必要があります。 -</p><p>{{ 英語版章題("Memory Allocation Macros") }} -</p> -<h3 name=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E3.82.8A.E5.BD.93.E3.81.A6.E3.83.9E.E3.82.AF.E3.83.AD" id=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E3.82.8A.E5.BD.93.E3.81.A6.E3.83.9E.E3.82.AF.E3.83.AD">メモリ割り当てマクロ</h3> -<p>メモリ割り当て関数のマクロ版も提供されており、プログラミングの利便性のために同様な追加のマクロも提供されています : -</p> -<ul><li> <a href="ja/PR_MALLOC">PR_MALLOC</a> -</li><li> <a href="ja/PR_NEW">PR_NEW</a> -</li><li> <a href="ja/PR_REALLOC">PR_REALLOC</a> -</li><li> <a href="ja/PR_CALLOC">PR_CALLOC</a> -</li><li> <a href="ja/PR_NEWZAP">PR_NEWZAP</a> -</li><li> <a href="ja/PR_DELETE">PR_DELETE</a> -</li><li> <a href="ja/PR_FREEIF">PR_FREEIF</a> -</li></ul> -{{ languages( { "en": "en/NSPR_API_Reference/Memory_Management_Operations" } ) }} diff --git a/files/ja/mozilla/projects/nspr/reference/nspr_log_modules/index.html b/files/ja/mozilla/projects/nspr/reference/nspr_log_modules/index.html deleted file mode 100644 index acb864a0e7..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/nspr_log_modules/index.html +++ /dev/null @@ -1,469 +0,0 @@ ---- -title: NSPR LOG MODULES -slug: Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES -tags: - - NSPR - - NSPR_API_Reference -translation_of: Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details open> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p>この環境変数はどの log モジュールで log の取得が有効化されるのかを指定します。</p> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre><em>moduleName</em>:<em>level</em>[, <em>moduleName</em>:<em>level</em>]* -</pre> - -<p><font face="serif"><em>moduleName</em></font> は <a href="http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25372"><code>PR_NewLogModule</code></a> の呼び出しで指定される名前か、あるいは、下記のリストにある別名のいずれかです。</p> - -<p><font face="serif"><em>level</em></font> は 0 から 5 までの以下の意味を持つ値を指定します。</p> - -<ul> - <li>0 = PR_LOG_NONE: log を取りません</li> - <li>1 = PR_LOG_ALWAYS: 重要。全ての log を取ることを意図しています。</li> - <li>2 = PR_LOG_ERROR: errors</li> - <li>3 = PR_LOG_WARNING: warnings</li> - <li>4 = PR_LOG_DEBUG: デバッグメッセージ、注意</li> - <li>5: 全部取ります!</li> -</ul> - -<h2 id="Description" name="Description">Description</h2> - -<p><a href="http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25372"><code>PR_NewLogModule</code></a> 呼び出しの name 引数に関連した moduleName と、0 以外のレベルを指定することで <code>moduleName</code> の log を有効化します。</p> - -<p>実行時に NSPR の log サービスを制御するために、特別な log モジュール名が提供されています。これらの制御は実行時に <code>NSPR_LOG_MODULES</code>環境変数に設定された場合に、あなたのアプリケーションに関係する NSPR の log サービスに影響を与えます。</p> - -<ul> - <li><strong>all</strong> 全ての log モジュールを有効化します。<a href="http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25497">PR_LOG</a> の呼び出しで全ての log モジュールを有効にするには、下記のように変数をセットします。 - - <pre>set NSPR_LOG_MODULES=all:5</pre> - </li> - <li><strong>timestamp </strong>結果の各行の先頭に "2015-01-15 21:24:26.049906 UTC - "のような形式のタイムスタンプをつけます。</li> - <li><strong>append </strong>NSPR_LOG_FILE に参照される現存するファイルにの log エントリーを追加します。もし指定されていないと、現在存在する NSPR_LOG_FILE の内容は書き換えられ、同じ名前で新しいファイルになります。</li> - <li><strong>sync</strong> バッファ無しでのログ取得を有効にします。これは全ての log メッセージが書き込まれるように OS で flush されることを保証しますが、プログラムの実行が遅くなる場合があります。</li> - <li><strong>bufsize:size</strong> log のバッファサイズを <font face="serif"><em>size </em></font>にします。</li> -</ul> - -<h2 id="Examples" name="Examples">例</h2> - -<p>Toolkit::Storage コンポーネントに起こったことすべてを記録します。各行の先頭にタイムスタンプを付け、ログは /tmp/foo.log に記録されます。(ログファイルは実行ファイルが実行されるたびに書き換えられます)。</p> - -<pre>set NSPR_LOG_MODULES=timestamp,mozStorage:5 -set NSPR_LOG_FILE=/tmp/foo.log -</pre> - -<h2 id="試験サーバでのログ取得">試験サーバでのログ取得</h2> - -<ul> - <li><strong>mochitest</strong> では、 <code>testing/mochitest/runtests.py ファイル内の</code> <code>NSPR_LOG_MODULES</code> を編集し、試験サーバにプッシュします。ログファイルのダウンロードは、 ログビュアーより artifact として行います。</li> - <li>(その他のテスト?)</li> -</ul> diff --git a/files/ja/mozilla/projects/nspr/reference/pr_jointhread/index.html b/files/ja/mozilla/projects/nspr/reference/pr_jointhread/index.html deleted file mode 100644 index 44ddbfd9a0..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/pr_jointhread/index.html +++ /dev/null @@ -1,453 +0,0 @@ ---- -title: PR_JoinThread -slug: Mozilla/Projects/NSPR/Reference/PR_JoinThread -translation_of: Mozilla/Projects/NSPR/Reference/PR_JoinThread ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details open> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p>引数で受け取ったスレッドが終了するまで呼んだスレッドをブロックします。</p> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="eval">#include <prthread.h> - -<a href="PRStatus">PRStatus</a> PR_JoinThread(<a href="PRThread">PRThread</a> *thread); -</pre> - -<h3 id="Parameter" name="Parameter">引数</h3> - -<p><code>PR_JoinThread</code>は以下の引数を受け取ります:</p> - -<dl> - <dt><code>thread</code></dt> - <dd>join可能であり、有効なスレッドの識別子。</dd> -</dl> - -<h3 id="Returns" name="Returns">返り値</h3> - -<p>関数は以下の値の1つを返します:</p> - -<ul> - <li>成功した場合、 <code>PR_SUCCESS を返します。</code></li> - <li>失敗した場合--例えば、もしjoin可能なスレッドが見つからなかった場合、もしくはターゲットのスレッドがjoin可能でない場合、<code>PR_FAILURE</code>を返します。</li> -</ul> - -<h2 id="Description" name="Description">説明</h2> - -<p><code>PR_JoinThreadはスレッドの終了を同期させるために使用されます。この関数は</code>呼んだスレッドをターゲットのスレッドがjoinablleな状態になるまでブロックするという点で同期的です。PR_JoinThreadは、ターゲットスレッドがそのルート関数から戻った後にのみ呼び出し元に戻ります。</p> - -<p><code>PR_JoinThreadは</code><code>PR_CreateThreadがreturnされるまで</code>呼び出してはならない。 <code>PR_JoinThread</code> が<code>PR_CreateThreadと</code>同じスレッドで呼ばれない場合、呼び出し元は<code>、PR_CreateThread</code> が完了していることを保証する責任を伴う。</p> - -<p>複数のスレッドは同一のスレッドが完了するのを待つことができません。呼び出し元のスレッドの1つが正常に動作しますが、その他はエラーPR_FAILUREで終了します。</p> - -<p>ターゲットスレッドがすでに終了している場合、呼び出し側スレッドはブロックされません。</p> - -<p><code>PR_JoinThread</code>は中断可能です。</p> diff --git a/files/ja/mozilla/projects/nspr/reference/prthread/index.html b/files/ja/mozilla/projects/nspr/reference/prthread/index.html deleted file mode 100644 index f5912c762b..0000000000 --- a/files/ja/mozilla/projects/nspr/reference/prthread/index.html +++ /dev/null @@ -1,429 +0,0 @@ ---- -title: PRThread -slug: Mozilla/Projects/NSPR/Reference/PRThread -translation_of: Mozilla/Projects/NSPR/Reference/PRThread ---- -<section id="Quick_Links"> -<ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li> - <li class="toggle"> - <details> - <summary>Introduction to NSPR</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li> - </ol> - </li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details open> - <summary>Threads</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Initialization</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Locks</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Condition Variables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Cached Monitors</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Types</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>I/O Functions</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Network Addresses</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Atomic Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Interval Timing</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Date and Time</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Memory Management Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>String Operations</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Floating Point Number to String Conversion</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Linked Lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Dynamic Library Linking</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Process Management and Interprocess Communication</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li> - </ol> - </li> - <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li> - </ol> - </li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Logging</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li> - </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li> - </ol> - </li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Named Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Anonymous Shared Memory</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>IPC Semaphores</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Thread Pools</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Random Number Generator</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Hash Tables</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>NSPR Error Handling</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li> - <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li> - <li><a href="/ja/docs/MDN">The MDN Project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p>NSPRのスレッドです。</p> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="eval">#include <prthread.h> - -typedef struct PRThread PRThread; -</pre> - -<h3 id="Description" name="Description">説明</h3> - -<p>NSPRでは、スレッドはPRThreadタイプのopaque構造体で表されます。このポインタはたいていのスレッドを操作する関数で要求されます。</p> - -<p><code>PRThread*</code>は<span lang="ja">新しいスレッドを作成して、成功した結果のポインタです。識別子は</span>root functionが終了するまで有効であり、もしスレッドがjoinableである場合、joinされます。</p> diff --git a/files/ja/mozilla/projects/nss/an_overview_of_nss_internals/index.html b/files/ja/mozilla/projects/nss/an_overview_of_nss_internals/index.html deleted file mode 100644 index c46cd20c9e..0000000000 --- a/files/ja/mozilla/projects/nss/an_overview_of_nss_internals/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: NSS 内部の概要 -slug: Mozilla/Projects/NSS/An_overview_of_NSS_Internals -tags: - - API - - Intermediate - - Intro - - NSS - - Tools -translation_of: Mozilla/Projects/NSS/An_overview_of_NSS_Internals ---- -<p style="margin-left: 40px;"><a href="/ja/docs/Mozilla/Projects/NSS">Network Security Services (NSS)</a> の内部をハイレベルで解説</p> - -<p style="margin-left: 40px;">Mozilla.org プロジェクトによって開発されたソフトウェアは、伝統的にセキュリティプロトコルと暗号化アルゴリズムの独自の実装を使用していましたが、元々は Netscape Security Services と呼ばれていましたが、現在では Network Security Services (NSS) と呼ばれています。NSSはC言語で書かれたライブラリです。フリーでオープンソースのソフトウェアであり、多くのソフトウェアプロジェクトが利用を決めています。複数のオペレーティングシステム (OS) をサポートするために、Netscape Portable Runtime (NSPR) と呼ばれるクロスプラットフォーム移植性レイヤーをベースにしており、ファイルシステムアクセス、メモリ管理、ネットワーク通信、マルチスレッドプログラミングなどの OS 固有の API のためのクロスプラットフォームアプリケーションプログラミングインターフェース (API) を提供しています。</p> - -<p style="margin-left: 40px;">NSS は多くの機能を提供していますが、ここではモジュールのリスト、設計原理、重要な関連規格について説明します。</p> - -<p style="margin-left: 40px;">暗号処理を行うソフトウェアとデバイス間の相互運用性を可能にするため、NSS は PKCS#11 と呼ばれる規格に準拠しています。(11という数字に注目することが重要であることに注意してください。異なる数字で全く異なるトピックを定義する他の PKCS 規格が存在するからです)。</p> - -<p style="margin-left: 40px;">PKCS#11 規格に準拠したソフトウェアまたはハードウェアモジュールは、モジュールの特性や提供されるサービスを問い合わせることができるCコールのインターフェースを実装しています。NSS 自身のモジュールの複数の要素がこのインタフェースで実装されており、NSS はそれらのモジュールと話すときにこのインタフェースを利用します。この戦略により、NSSは、PKCS#11インタフェースを実装した多くのハードウェアデバイス(例えば、暗号演算に必要な計算を高速化したり、秘密鍵を安全に保護するスマートカードにアクセスしたり)やソフトウェアモジュール(例えば、追加のアルゴリズムを提供したり、鍵や信頼情報を保存するプラグインとしてそのようなモジュールをロードできるようにする)と連携することが可能になります。</p> - -<p style="margin-left: 40px;">NSS の中核となる要素は、ハッシュ関数、大数計算、暗号アルゴリズムを提供するベースライブラリである FreeBL です。<br> - <br> - Softoken は、ほとんどの FreeBL の機能を PKCS#11 モジュールとして公開する NSS モジュールです。</p> - -<p style="margin-left: 40px;">暗号技術の中には、暗号化と復号化の両方に同じ秘密鍵を使用するものがあり、例えばパスワードベース暗号化 (PBE) などがあります。自分でデータを暗号化する場合はこれで十分な場合が多いですが、通信相手と署名/暗号化されたデータをやり取りする必要が出てきたら、公開鍵暗号化を使うことで鍵の管理が簡単になります。公開鍵暗号化を利用する方法を説明した環境を PKI (Public Key Infrastructure) と呼びます。パーティ間で交換される公開鍵は、コンテナを使って輸送されます。コンテナは、標準の X.509 バージョン 3 に従い、証明書と呼ばれています。例えば、証明書には、証明書の所有関係に対する信頼を表す第三者による署名が含まれている。第三者によって割り当てられた信頼は、証明書に含まれる証明書の拡張子に記載されている特定の用途に制限されている場合があります。</p> - -<p style="margin-left: 40px;">NSS によって実行される操作の多く (ほとんどではないにせよ) は、X.509 証明書 (しばしば "cert" と略されますが、残念ながら「コンピュータ緊急対応チーム」という用語と混同されやすいです) の使用を伴います。</p> - -<p style="margin-left: 40px;">証明書が信頼されているかどうかをチェックする際には、通常は認証局 (CA) と呼ばれる信頼された第三者の署名能力を表す関連するトラストアンカー (ルート証明書) を見つける必要があります。トラストアンカーとは、ソフトウェアベンダー、組織インフラストラクチャ内の管理者、またはソフトウェアユーザーによって、すでに知られており、意図的に信頼されているとマークされている別の X.509 証明書にすぎません。NSS は、事前に定義された CA 証明書のセットを出荷します。このセットは、信頼の割り当てを含め、NSS が CKBI (組み込みルート証明書) と呼ばれるソフトウェアモジュールとして提供し、PKCS#11 インターフェイスも実装しています。組織レベルでは、セットの内容は Mozilla CA ポリシーに従って管理されています。技術的なレベルでは、セットはバイナリソフトウェアモジュールです。</p> - -<p style="margin-left: 40px;">データ交換に関連した暗号化や復号化などの暗号化トランザクションは、通常、通信相手 (ピア) の X.509 認証を使用して行われます。また、自分の証明書に属する秘密鍵を安全に保管しておくことも求められます。秘密鍵の保管場所を PBE で保護したいと思うかもしれません。NSS が提供するデフォルトのトラストを変更することにするかもしれません。これらすべての作業には、データの保存、検索、取得が必要です。NSS はストレージと管理 API を提供することで、これらの操作を簡素化します。NSS は、プログラマーが個々の証明書や鍵を含む個々のファイルを管理する必要はありません。その代わりに、NSS は独自のデータベースを利用することができます。一度 NSS のデータベースに証明書や鍵をインポートしてしまえば、それらを簡単に検索して再利用することができます。</p> - -<p style="margin-left: 40px;">NSS は NSS データベースを使って操作することを期待しているため、初期化呼び出しを実行することが必須です。最も単純なシナリオでは、プログラマーはinit関数のパラメータとしてファイルシステム上のディレクトリを提供し、NSSは残りの部分を行うように設計されています。既存のデータベースを検出して開くか、新しいデータベースを作成します。また、証明書の永続的な記録を使用したくないと判断した場合は、データベースなしモードでNSSを初期化することもできます。通常、新しいデータが恒久的なストレージに追加されるとすぐに、NSS はすべてのデータをディスクにフラッシュする。ストレージは複数のファイルで構成されています。鍵データベースファイルには秘密鍵が格納され、証明書データベースファイルには、自分の証明書の公開部分、ピアや認証局の証明書、信頼決定のリスト(組み込みの認証局を信頼しない、他の認証局を明示的に信頼するなど)が格納されています。データベースファイルの例としては、key3.db と cert8.db があります。3番目のファイルには、NSS が使用するために登録された外部 PKCS#11 モジュールのリストが含まれています。このファイルは secmod.db という名前にすることもできますが、新しい世代のデータベースではpkcs11.txtという名前のファイルが使用されます。</p> - -<p style="margin-left: 40px;">これらのデータベースファイルに直接アクセスして操作できるのは NSS だけです。NSS を使用するプログラマーは、これらのファイルに保存されているデータを操作するために NSS が提供する API を経由しなければなりません。プログラマーの仕事は、必要なパラメータ (データベースなど) で NSS を初期化することであり、その後 NSS はデータベースファイルを透過的に管理します。</p> - -<p style="margin-left: 40px;">ほとんどの場合、証明書や鍵は NSS のデータベースに格納されることになっています。したがって、最初のインポートや作成の後、プログラマーは通常、それらの生のバイトを処理しません。その代わりに、プログラマはルックアップ関数を使用し、NSS はその後アプリケーションのコードで使用されるアクセスハンドルを提供します。これらのハンドルは参照カウントされます。NSS は通常、証明書がネットワークから受信され、ディスクから読み込まれ、データベースから検索されると、証明書のインメモリ (RAM) プレゼンテーションを作成し、証明書のプロパティを含むインメモリデータ構造を準備します。一旦、アプリケーションがハンドルを使用して終了すると、それは解放され、NSS が関連するリソースを解放することができるようになります。秘密鍵のハンドルを扱う場合、通常、アプリケーションが生の鍵データにアクセスすることは困難であり (望ましくない)、そのため NSS からそのようなデータを抽出することは難しいかもしれません。そのため、NSS からそのようなデータを抽出するのは難しいかもしれません。通常の最低限の要件は、秘密鍵を保護層 (パスワードベースの暗号化など) でラップすることです。これは、セキュリティのためのコードのレビューを容易にするための意図があります。生の秘密鍵にアクセスできるコードが少なければ少ないほど、レビューしなければならないコードは少なくなります。</p> - -<p style="margin-left: 40px;">NSS には、生の鍵を検索する機能が限られています。好ましいアプローチは証明書を利用することであり、含まれるサブジェクト名 (証明書の所有者を表す情報) などのプロパティで証明書を検索することです。例えば、NSS は新しい公開鍵/秘密鍵ペアのランダム計算 (生成) をサポートしていますが、このような生の鍵ペアを扱うのは難しいです。通常のアプローチは、アプリケーションの作成ステップが完了するとすぐに証明書署名要求 (CSR) を作成し、鍵ペアへのハンドルを作成します。通常のフォローアップ動作は、CA から署名された証明書を受け取ることです。(ただし、NSS の機能を使用して自己署名証明書を作成することも可能ですが、通常は他の当事者から信頼されません)。受信したら、NSS にそのような新しい証明書を NSS データベースにインポートするように指示すれば十分で、NSS は自動的に埋め込まれた公開鍵の検索を行い、関連する秘密鍵を見つけることができ、その後、それを個人証明書として扱うことができます (個人証明書とは、個人の証明書のことです)。(個人証明書とは、秘密鍵を保有している証明書で、データの署名やデータの復号に使用することができます) インポート時に証明書に一意のニックネームを割り当てることができます。</p> - -<p style="margin-left: 40px;">NSS が返すすべてのハンドルについて、NSS は厳密なクリーンアップを要求することに注意してください。アプリケーションは、ハンドルが不要になったら、常に適切な参照解除(破棄)関数を呼び出す必要があります。これは、再起動せずにデータベースを閉じ、別のデータベースを使用してNSSを再初期化する必要があるかもしれないアプリケーションにとって特に重要です。データ要素がまだ参照されている場合、このような操作は実行時に失敗する可能性があります。</p> - -<p style="margin-left: 40px;">FreeBL、Softoken、CKBI モジュールに加えて、一般的な操作 (データフォーマット間のエンコード/デコード、標準化されたオブジェクト識別子 (OID) のリストなど) のためのユーティリティライブラリがあります。NSS には、Secure Sockets Layer/Transport Layer Security ネットワークプロトコルを実装する SSL/TLS モジュール、セキュアなメールで使用される CMS メッセージングといくつかのインスタントメッセージング実装を実装する S/MIME モジュール、古典的なデータベースストレージを実装する DBM ライブラリ、そして最後に「その他すべて」の大きなセットのためのコア NSS ライブラリがあります。データベースの新世代は、複数のアプリケーションによる同時アクセスを可能にするために SQLite データベースを使用しています。</p> - -<p style="margin-left: 40px;">これらはすべて共有ライブラリとして提供されています。特定の種類の証明書要求を生成するために使用される CRMF ライブラリは、スタティックリンク専用のライブラリとして提供されています。</p> - -<p style="margin-left: 40px;">証明書 (X.509) 、PKCS#12 (証明書と鍵) 、PKCS#7 (署名データ) などのファイル形式、CMS としてのメッセージ形式を扱う場合、構造化されたデータを非常に効率的に (小さいサイズの) プレゼンテーションで格納するための構文である ASN.1 に言及しなければなりません。元々は通信システムのために開発されたもので、データをできるだけ少なくすることが重要な時代に開発されました (現在でもこの原理を使うことはパフォーマンスを上げるためには意味がありますが)。ASN.1 フォーマットで利用可能なデータを処理するためには、通常のアプローチでは、データを解析して、(入れ子になった) C データ構造のような、より多くのスペースを必要とするが作業しやすいプレゼンテーションに転送します。その間、NSS は3つの異なる ASN.1 パーサの実装を受け取ってきましたが、それぞれに固有の特性、長所と短所があり、それが今でも使われている理由です (副作用のリスクがあるため、古いものを新しいものに置き換える勇気はまだありません)。ASN.1 パーサを使用する場合、テンプレート定義がパーサに渡され、それに応じて ASN.1 データストリームを解析します。テンプレートは通常、RFC 文書に記載されている定義と密接に一致しています。</p> - -<p style="margin-left: 40px;">DER として記述されたデータブロックは通常 ASN.1 形式です。どのデータを期待しているかを把握し、ソフトウェアのインタラクションのコンテキストに基づいて、正しいテンプレートを使用して解析する必要があります。PEM として記述されたデータは DER の base64 エンコードされたプレゼンテーションで、通常は人間が読める BEGIN/END 行の間にラップされています。NSS はバイナリ表示を好みますが、特にファイルからデータをインポートする場合には、base64 または ASCII 表示を使用することができます。最近の開発では、秘密鍵を含む外部の PEM ファイルを読み込むためのサポートが追加されました。</p> - -<p style="margin-left: 40px;">コードレベルで見ると、NSS は常に生データのブロックを扱っています。このような型なしブロックを格納するための一般的な構造は SECItem で、サイズと型なし C ポインタ変数を含んでいます。</p> - -<p style="margin-left: 40px;">メモリを扱うとき、NSS はアリーナを利用しています。これは C 言語の限られた機能で管理を簡単にする試みです (デストラクタがないので)。これは、クリーンアップを簡単にするために、複数のメモリ割り当てをグループ化するという考えです。ある操作を実行すると、多くの個別のデータ項目を割り当てる必要があり、コードはロジック内の多くの位置でタスクを中止する必要があるかもしれません。アリーナはタスクの処理が開始されると要求され、そのタスクに論理的に関連付けられたすべてのメモリ割り当てが関連付けられたアリーナから要求されます。アリーナの実装により、すべての個々のメモリブロックが追跡されます。タスクが完了すると、それが完了したか中止されたかにかかわらず、プログラマはアリーナを解放するだけで、個々に割り当てられたすべてのブロックが自動的に解放されます。解放はしばしば、攻撃者がメモリダンプから鍵を取り出すことをより困難にするために、アリーナに関連するメモリを即座に消去 (ゼロ化、zfree) することと組み合わされます。<br> - <br> - NSS は多くの C 言語のデータ構造を使用しています。多くの場合、NSS は同じまたは類似した概念のために複数の実装を持っています。例えば、複数の証明書のプレゼンテーションがあり、NSS 内部 (そして時には NSS を使用するアプリケーション) はそれらの間で変換する必要があるかもしれません。<br> - <br> - NSS の鍵となる責任は、署名と証明書の検証です。デジタル署名を検証するためには、アプリケーションデータ (例えば、署名された文書)、署名データブロック (デジタル署名)、公開鍵 (署名者であると考えられる証明書に含まれるもので、署名とともに受信したメタデータによって識別されるものなど) を調べなければなりません。署名データブロックが公開鍵の所有者によって生成されたものでなければならないことを示すことができれば、署名は検証されます (関連する秘密鍵を持っているのはその所有者だけなので)。</p> - -<p style="margin-left: 40px;">証明書 (A) を検証するには、いくつかの追加ステップが必要です。まず、証明書 (A) の潜在的な署名者 (B) を特定しなければなりません。これは、証明書 (A) の “issuer name” 属性を読み取り、その発行者証明書(B)を見つけようとすることによって行われます (その名前を “subject name” として使用している証明書を探すことによって)。そして、(A) で見つけた署名を (B) で見つけた公開鍵を使って検証しようとします。同じサブジェクト名を持つ複数の証明書 (B1, B2, ...) をそれぞれ試してみる必要があるかもしれません。<br> - <br> - 成功した後、この手順を再帰的に繰り返す必要があるかもしれません。最終的には、適切なトラストが割り当てられている証明書 B (または C または...) を見つけることが目的です (例えば、CKBI モジュール内で見つけられ、ユーザがトラストの上書き決定を行っていない場合や、ユーザまたはローカル環境で管理されているNSS データベースファイル内で見つけられる場合など)。</p> - -<p style="margin-left: 40px;">(複数の) 発行者証明書の署名の検証に成功した後、証明書 A の検証はまだ終わっていません。例えば、署名が行われた時点で証明書が有効であること、証明書内の名前が予想される署名者と一致していること (サブジェクト名、一般名、メール、アプリケーションに基づくチェック) 、証明書内に記録されている信頼制限 (拡張子) が使用を許可していること (例えば、暗号化は許可されているかもしれないが、署名は許可されていない) 、環境/アプリケーションポリシーに基づいて、失効チェック (OCSP または CRL) を行う必要がある場合があります。<br> - <br> - CKBI モジュールに含まれるトラスト・アンカーは、通常、自己署名されたものであり、サブジェクト名と発行者名のフィールドが同一であると定義されます。自己署名付き証明書が明示的に信頼されているとマークされている場合、NSS は自己署名の有効性のチェックをスキップします。</p> - -<p style="margin-left: 40px;">NSSには、証明書の検証を行うための複数のAPIがあります。例えば、(B)発行者候補の証明書がすべて同じサブジェクト名と発行者名を持ち、有効期間によって異なる場合など、非常に安定しており、すべての単純なシナリオで問題なく動作する古典的なエンジンがありますが、より高度なシナリオでは限られた範囲でしか動作しません。残念ながら、最近の証明書の世界はより複雑になっています。新規の認証局が世界の PKI 市場に参入し、事業を開始するために、既存の認証局と取引を行い、いわゆる相互署名証明書を受け取ることがある。その結果、(A) から信頼できるアンカー (ルート) 証明書 (Z) への信頼パスを検索する際に、候補となる発行者証明書のセットが異なる発行者名 (2 番目以上の発行者レベルを参照) を持つ可能性があります。その結果、(Z) を検索しながら、再帰的に複数の異なる代替ルートを試す必要がある。新しい検証エンジン (内部的に libPKIX と名付けられています) だけがこれを適切に行うことができます。<br> - <br> - これは、ソフトウェアベンダと認証局が、ウェブサイト証明書の証明書を発行するためのより厳格なルールを定義するための努力です。証明書の要求者が希望するウェブサイトのドメインの管理メールアドレスを管理していることを単に検証するのではなく、認証局が実世界の身元確認書類 (国の当局による会社登録書類など) の検証を行うことが要求され、また、ブラウザソフトウェアが証明書の有効性を付与する前に、認証局との失効チェックを行うことが要求されている。EV 証明書を区別するために、CA は証明書にポリシー OID を埋め込み、ブラウザはトラストチェーンがエンドエンティティ (EE) 証明書がポリシーを利用することを許可しているかどうかを検証することが期待されています。ポリシーの検証を実行できるのは、新しい libPKIX エンジンの API だけです。<br> - <br> - これを機に、サーバへの SSL/TLS 接続について一般的に (EVに限らず、Web サイトに限らず) 話すことにしましょう。このドキュメントでSSLについて言及している場合は、必ず SSL か TLS のどちらかを指しています。(TLS は SSL の新しいバージョンで、機能が強化されています)。</p> - -<p style="margin-left: 40px;">サーバへの SSL 接続を確立する際には、(少なくとも) サーバ証明書 (とそのトラストチェーン) がサーバからクライアント (ブラウザなど) に交換され、クライアントはその証明書が検証可能であることを確認します (期待される宛先サーバの名前と一致することを含む)。両者間のハンドシェイクのもう一つの部分は、鍵の交換です。公開鍵暗号化は (双方が同じ鍵を使用する) 対称暗号化よりもコストがかかる (計算が必要) ため、鍵合意プロトコルが実行され、公開鍵と秘密鍵を使用して、交換された初期情報の証明と検証が行われます。鍵合意が行われると、対称暗号化が使用されます (既存のチャネル上で潜在的な再ハンドシェイクが行われるまで)。SSL 接続に使用されるハッシュと暗号化アルゴリズムの組み合わせは暗号化スイートと呼ばれます。</p> - -<p style="margin-left: 40px;">NSS は技術的なレベルでサポートしている暗号化スイートのセットを出荷しています。さらに、NSS はデフォルトでどの暗号化スイートを有効にするかを定義するデフォルトポリシーを持っています。アプリケーションは、有効になっている暗号スイートのセットを変更するための関数呼び出しを使用して、プログラム実行時に使用されるポリシーを変更することができます。</p> - -<p style="margin-left: 40px;">プログラマが NSS が証明書を検証する方法や、SSL 接続のハンドシェイクで提示されるデータを検証する方法に影響を与えたい場合、適切な時点で NSS によって呼び出されるアプリケーション定義のコールバック関数を登録することができ、NSS によって行われた決定を上書きするために使用することができます。</p> - -<p style="margin-left: 40px;">SSL を実装したツールキットとして NSS を使いたい場合は、まず NSS を init しなければならないことを覚えておいてください。しかし、デフォルトのトラストを恒久的に変更することを気にしない (ディスクに記録されている) 場合は、データベースなしの init コールを使用することができます。データ交換のためのネットワークソケットを作成する際には、NSPR と NSS が提供するオペレーティングシステムに依存しない API を使用しなければならないことに注意してください。NSPR ファイルディスクリプタのプロパティに触れておくと面白いかもしれません。これは、データ処理に関与する複数のレイヤーを定義できることを意味します。ファイル記述子は、データを扱う最初のレイヤーへのポインタを持っています。そのレイヤは、潜在的な第2のレイヤへのポインタを持ち、そのレイヤは第3のレイヤへの別のポインタを持っているかもしれません。各レイヤーは、open/close/read/write/poll/select (など) 関数のための独自の関数を定義しています。SSL ネットワーク接続を使用する場合、基本的な NSPR 層と SSL ライブラリ層の 2 つの層を既に持っています。Mozilla アプリケーションでは、アプリケーション固有の処理が行われる第三のレイヤーを定義しています。詳細は NSPR のリファレンスドキュメントを参照してください。</p> - -<p style="margin-left: 40px;">NSS は、アプリケーションから要求された接続に加えて、アウトバウンドネットワーク接続を作成しなければならないことがあります。例としては、OCSP (オンライン証明書ステータスプロトコル) 情報の取得や、CRL (証明書失効リスト) のダウンロードなどがあります。ただし、NSS にはネットワークプロキシを使用するための実装がありません。アプリケーションでプロキシをサポートする必要がある場合は、httpリクエストコールバックインターフェースの独自の実装を登録することができ、NSS はプロキシをサポートするアプリケーションコードを使用することができます。</p> - -<p style="margin-left: 40px;">ハッシュ化、暗号化、復号化関数を使用する場合は、(大容量バッファ上で動作するのとは対照的に) データをストリーム化することが可能です。操作に必要なすべてのパラメータを提供しながらコンテキストハンドルを作成し、"update" 関数を複数回呼び出して入力のサブセットを NSS に渡します。データは処理され、直接返されるか、コンテキストに登録されたコールバック関数に送られます。処理が終わったら、保留中のデータをフラッシュアウトしてリソースを解放する最終化関数を呼び出します。</p> - -<p style="margin-left: 40px;">この行は、今後のセクションで libpkix がどのように動作し、どのように設計されているかを説明するためのプレースホルダです。</p> - -<p style="margin-left: 40px;">NSS を使って作業したい場合は、NSS 開発者が提供しているコマンドラインユーティリティを使うと便利なことが多いです。NSS データベースの管理、証明書のダンプや検証、PKCS#11 モジュールをデータベースに登録するためのツール、CMS の暗号化/署名されたメッセージを処理するためのツールなどがあります。</p> - -<p style="margin-left: 40px;">例えば、あなた自身の鍵のペアを作成して CA から新しい証明書を要求したい場合、certutil を使って空のデータベースを作成し、あなたのデータベース上で操作して証明書要求を作成し (これは希望する鍵のペアを作成することを含む)、それをファイルにエクスポートし、要求ファイルを CA に提出し、CA からファイルを受け取り、あなたのデータベースに証明書をインポートすることができます。証明書をインポートする際には、後で参照しやすくするために、良いニックネームを割り当てる必要があります。</p> - -<p style="margin-left: 40px;">複数のアプリケーションで同時にアクセスできる最初のデータベース形式は key4.db/cert9.db であることに注意してください。つまり、ブラウザやサーバーが古い NSS のデータベース形式で動作している場合は、他のソフトウェアが実行している間は NSS ツールで操作しないようにしてください。執筆時点では、NSS と Mozilla アプリケーションは、各アプリケーションが独自の NSS データベースを持っている古いデータベースファイル形式をデフォルトで使用しています。</p> - -<p style="margin-left: 40px;">秘密鍵を含む NSS データベースに保存された証明書のコピーが必要な場合は、pk12util を使って PKCS#12 ファイル形式にエクスポートすることができます。PEM 形式の証明書が必要な場合は、openssl pkcs12 コマンド (これは NSS ではありません) を使用して PKCS#12 ファイルを PEM に変換することができます。</p> - -<p style="margin-left: 40px;">この行は、データベースの準備の仕方、証明書のダンプの仕方、データの変換の仕方のプレースホルダです。</p> - -<p style="margin-left: 40px;">Firefox や Thunderbird などの Mozilla アプリケーションで NSS が使われているので、NSS を使って作業する気になったかもしれません。Mozilla アプリケーションをビルドすれば、NSS ライブラリも自動的にビルドされます。しかし、NSS のコマンドラインツールで作業したい場合は、スタンドアロンの NSS のビルド手順に従って、Mozilla アプリケーションのソースの外で NSS をビルドする必要があります。</p> - -<p style="margin-left: 40px;">鍵データベースファイルには、少なくとも一つの対称鍵が含まれており、これは必要に応じて NSS が自動的に作成し、秘密鍵 (秘密鍵) を保護するために使用されます。この対称鍵は、データベースにマスターパスワードを設定することで PBE で保護することができます。マスターパスワードを設定するとすぐに、攻撃者がマスターパスワードを盗むことに成功しない限り、 鍵データベースを盗む攻撃者は秘密鍵にアクセスできなくなります。</p> - -<p style="margin-left: 40px;">今、あなたは <a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">NSS のソースを取得する方法、NSS を構築し、テストする方法</a>に興味があるかもしれません。</p> diff --git a/files/ja/mozilla/projects/nss/building/index.html b/files/ja/mozilla/projects/nss/building/index.html deleted file mode 100644 index 01f2a7c355..0000000000 --- a/files/ja/mozilla/projects/nss/building/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: NSS のビルド -slug: Mozilla/Projects/NSS/Building -translation_of: Mozilla/Projects/NSS/Building ---- -<h2 id="Introduction">Introduction</h2> - -<p>This page has detailed information on how to build NSS. Because NSS is a cross-platform library that builds on many different platforms and has many options, it may be complex to build. Please read these instructions carefully before attempting to build.</p> - -<h2 id="Build_environment">Build environment</h2> - -<p>NSS needs a C and C++ compiler. It has minimal dependencies, including only standard C and C++ libraries, plus <a href="https://www.zlib.net/">zlib</a>.</p> - -<p>For building, you also need <a href="https://www.gnu.org/software/make/">make</a>. Ideally, also install <a href="https://gyp.gsrc.io/">gyp</a> and <a href="https://ninja-build.org/">ninja</a> and put them on your path. This is recommended, as the build is faster and more reliable.</p> - -<h3 id="Windows">Windows</h3> - -<p>NSS compilation on Windows uses the same shared build system as Mozilla Firefox. You must first install the <a href="/en-US/docs/Developer_Guide/Build_Instructions/Windows_Prerequisites">Windows Prerequisites</a>, including <strong>MozillaBuild</strong>.</p> - -<p>You can also build NSS on the Windows Subsystem for Linux, but the resulting binaries aren't usable by other Windows applications.</p> - -<h2 id="Get_the_source">Get the source</h2> - -<p>NSS and NSPR use Mercurial for source control like other Mozilla projects. To check out the latest sources for NSS and NSPR--which may not be part of a stable release--use the following commands:</p> - -<pre class="notranslate">hg clone https://hg.mozilla.org/projects/nspr -hg clone https://hg.mozilla.org/projects/nss -</pre> - -<p>To get the source of a specific release, see <a href="/en-US/docs/Mozilla/Projects/NSS/NSS_Releases">NSS Releases</a>.</p> - -<dl> - <dd> - <dl> - </dl> - </dd> -</dl> - -<h2 id="Build">Build</h2> - -<p>Build NSS using our build script:</p> - -<pre class="notranslate">nss/build.sh -</pre> - -<p>This builds both NSPR and NSS.</p> - -<h2 id="Build_with_make">Build with make</h2> - -<p>Alternatively, there is a <code>make</code> target called "nss_build_all", which produces a similar result. This supports some alternative options, but can be a lot slower.</p> - -<pre class="notranslate">make -C nss nss_build_all USE_64=1 -</pre> - -<p>The make-based build system for NSS uses a variety of variables to control the build. Below are some of the variables, along with possible values they may be set to.</p> - -<dl> - <dt>BUILD_OPT</dt> - <dd> - <dl> - <dt>0</dt> - <dd>Build a debug (non-optimized) version of NSS. <em>This is the default.</em></dd> - <dt>1</dt> - <dd>Build an optimized (non-debug) version of NSS.</dd> - </dl> - </dd> - <dt>USE_64</dt> - <dd> - <dl> - <dt>0</dt> - <dd>Build for a 32-bit environment/ABI. <em>This is the default.</em></dd> - <dt>1</dt> - <dd>Build for a 64-bit environment/ABI. <em>This is recommended.</em></dd> - </dl> - </dd> - <dt>USE_ASAN</dt> - <dd> - <dl> - <dt>0</dt> - <dd>Do not create an <a href="http://clang.llvm.org/docs/AddressSanitizer.html">AddressSanitizer</a> build. <em>This is the default.</em></dd> - <dt>1</dt> - <dd>Create an AddressSanitizer build.</dd> - </dl> - </dd> -</dl> - -<h2 id="Unit_testing">Unit testing</h2> - -<p>NSS contains extensive unit tests. Scripts to run these are found in the <code>tests</code> directory. Run the standard suite by:</p> - -<pre class="notranslate">HOST=localhost DOMSUF=localdomain USE_64=1 nss/tests/all.sh</pre> - -<h3 id="Unit_test_configuration">Unit test configuration</h3> - -<p>NSS tests are configured using environment variables.<br> - The scripts will attempt to infer values for <code>HOST</code> and <code>DOMSUF</code>, but can fail. Replace <code>localhost</code> and <code>localdomain</code> with the hostname and domain suffix for your host. You need to be able to connect to <code>$HOST.$DOMSUF</code>.</p> - -<p>If you don't have a domain suffix you can add an entry to <code>/etc/hosts</code> (on Windows,<code> c:\Windows\System32\drivers\etc\hosts</code>) as follows:</p> - -<pre class="notranslate"><code>127.0.0.1 localhost.localdomain</code></pre> - -<p>Validate this opening a command shell and typing: <code>ping localhost.localdomain</code>.</p> - -<p>Remove the <code>USE_64=1</code> override if using a 32-bit build.</p> - -<h3 id="Test_results">Test results</h3> - -<p>Running all tests can take a considerable amount of time.</p> - -<p>Test output is stored in <code>tests_results/security/$HOST.$NUMBER/</code>. The file <code>results.html</code> summarizes the results, <code>output.log</code> captures all the test output.</p> - -<p>Other subdirectories of <code>nss/tests</code> contain scripts that run a subset of the full suite. Those can be run directly instead of <code>all.sh</code>, which might save some time at the cost of coverage.</p> diff --git a/files/ja/mozilla/projects/nss/getting_started_with_nss/index.html b/files/ja/mozilla/projects/nss/getting_started_with_nss/index.html deleted file mode 100644 index 49c550df32..0000000000 --- a/files/ja/mozilla/projects/nss/getting_started_with_nss/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: NSS を始める -slug: Mozilla/Projects/NSS/Getting_started_with_NSS -translation_of: Mozilla/Projects/NSS/Getting_started_with_NSS ---- -<h2 id="NSSとの関わり方">NSSとの関わり方</h2> - -<p>Network Security Services (NSS) は、Mozilla ソフトウェアで使用されている暗号アルゴリズムやセキュアなネットワークプロトコルのベースライブラリです。</p> - -<p>Mozilla Firefox やその他の NSS を利用したアプリケーションのコアセキュリティを向上させるために、あなたも協力してみませんか?私たちはあなたの貢献を楽しみにしています!</p> - -<p>あなたの興味やスキルにマッチした分野を特定するために、私たちはあなたを支援することができます。<a href="/ja/docs/Archive/Mozilla/Getting_started_with_chat">Mozilla IRC</a> のチャンネル #nss や <a href="https://lists.mozilla.org/listinfo/dev-tech-crypto/">mozilla.dev.tech.crypto</a> ニュースグループで質問することができます。</p> - -<p>NSS ライブラリとそれをサポートするコマンドラインツールは C プログラミング言語で書かれています。ビルドシステムと自動テストは makefile と bash スクリプトに基づいています。</p> - -<p>時間の経過とともに、NSS のさまざまな側面を説明する多くのドキュメントが作成されてきました。まずは以下から始めてみてください。</p> - -<ul> - <li>現在の<a href="/ja/docs/Mozilla/Projects/NSS">主な NSS ドキュメントのページ</a>から他のドキュメントにリンクしています</li> - <li>NSS を使用するアプリケーションの<a href="/ja/docs/Mozilla/Projects/NSS/Overview_of_NSS">一般的な概要</a>と、NSS が提供する機能について説明します</li> - <li>ハイレベルで <a href="/ja/docs/Mozilla/Projects/NSS/An_overview_of_NSS_Internals">NSS の内部</a>を紹介します</li> - <li><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">NSS ソースの取得、構築、テスト</a>について学びます</li> - <li>アーカイブされた mozilla.org ウェブサイトにある<a href="https://www-archive.mozilla.org/projects/security/pki/nss/">古いドキュメント</a></li> -</ul> - -<p>(残念ながら、NSS プロジェクトには現時点でテクニカルライターがいないため、私たちのドキュメントは私たちが望むほど整理されていません。より良い方法でドキュメントを整理することで貢献できるかもしれません)。</p> - -<h2 id="NSS_サンプルコード">NSS サンプルコード</h2> - -<p>NSS アプリケーションの書き方を学ぶのに適した場所は、NSS 開発者によってメンテナンスされているコマンドラインツールです。サブディレクトリ mozilla/security/nss/cmd にあります。</p> - -<p>または、いくつかの基本的な <a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sample_Code">NSS サンプルコー</a>ドを見てみてください。</p> - -<p>新しいサンプルのセットは現在開発中で、<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">新しい NSS サンプルの作成</a>を参照してください。</p> - -<p>サンプルは以下の方法でダウンロードできます:: hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH</p> - -<h2 id="How_to_Contribute">How to Contribute</h2> - -<p>... (この部分はまだ工事中ですが、貢献の機会はたくさんあります)</p> - -<p>bugzilla アカウントをお持ちでない場合は、<a href="https://bugzilla.mozilla.org/">bugzilla.mozilla.org</a> でアカウントを開設してください。</p> - -<p>NSS :: Libraries コンポーネントを使用して、作業したい問題を探してください。私たちは <a href="https://bugzilla.mozilla.org/buglist.cgi?keywords=good-first-bug%2C%20&keywords_type=allwords&classification=Components&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=Libraries&product=NSS">"good-first-bug" というキーワードでマークされた NSS バグ</a>のリストを管理しています。</p> - -<h3 id="Creating_your_Patch">Creating your Patch</h3> - -<p>パッチの作成を始めるには、<a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">NSS のソース、ビルド、テスト</a>についてのセクションを参照してください。満足したら、コードレビューが必要になります。</p> - -<h3 id="Code_Review">Code Review</h3> - -<p><a href="https://phabricator.services.mozilla.com">http://phabricator.services.mozilla.com/</a> は、あなたのBugzilla アカウントを使用するコードレビューツールです。<a href="https://moz-conduit.readthedocs.io/en/latest/phabricator-user.html">レビューのためにパッチをアップロードするには、Phabricator のユーザーインストラクション</a>を使用してください。</p> - -<p>コードレビュー中に評価されるいくつかの項目は、<a href="https://github.com/mozilla/nss-tools/blob/master/nss-code-review-checklist.yaml">Githubのチェックリストフォーム</a>に記載されています。</p> - -<p>レビューを通過した後、あなたのパッチはNSSチームのメンバーによって着地することができます。<a href="/ja/docs/Archive/Mozilla/Getting_started_with_chat">Mozilla IRC</a> のチャンネル #nss で私たちを見つけることができます。</p> - -<p>レビューとテストの両方が行われていないコードは着地させないことに注意してください。コードはテストがあって初めて機能し、テストは自動化の一部であるときにのみ機能します。</p> diff --git a/files/ja/mozilla/projects/nss/index.html b/files/ja/mozilla/projects/nss/index.html deleted file mode 100644 index c72ab56cff..0000000000 --- a/files/ja/mozilla/projects/nss/index.html +++ /dev/null @@ -1,180 +0,0 @@ ---- -title: Network Security Services -slug: Mozilla/Projects/NSS -tags: - - NSS - - NeedsMigration -translation_of: Mozilla/Projects/NSS ---- -<p><strong>Network Security Services</strong> (<strong>NSS</strong>) は、セキュリティ対応のクライアントおよびサーバアプリケーションのクロスプラットフォーム開発をサポートするために設計されたライブラリのセットです。NSS を使用して構築されたアプリケーションは、SSL v3、TLS、PKCS #5、PKCS #7、PKCS #11、PKCS #12、S/MIME、X.509 v3 証明書、およびその他のセキュリティ標準をサポートすることができます。</p> - -<p>サポートされている規格の詳細については、<a href="/ja/docs/Mozilla/Projects/NSS/Overview_of_NSS">NSS の概要</a>を参照してください。よくある質問のリストについては、<a href="/ja/docs/Mozilla/Projects/NSS/NSS_FAQ">FAQ</a>を参照してください。</p> - -<p>NSS は Mozilla Public License の下で利用可能です。NSS のリリースを tar ファイルとしてダウンロードする方法については、<a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">Download PKI Source</a> を参照してください。</p> - -<p>開発者の方でNSSに貢献したいと思っている方は、NSSの内部の詳細についてのハイレベルな概要と、NSSを使い始めるためのドキュメントを読んでみてはいかがでしょうか。</p> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">ドキュメント</h2> - - <h3 id="背景となる情報">背景となる情報</h3> - - <dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/Overview_of_NSS">NSS の概要</a></dt> - <dd>NSS とその能力の概要を説明します。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_FAQ">NSS FAQ</a></dt> - <dd>NSS に関する基本的な質問に答えます。</dd> - <dt><a href="/ja/docs/Introduction_to_Public-Key_Cryptography">公開鍵暗号入門</a></dt> - <dd>NSS の基礎となる公開鍵暗号の基本的な概念を解説します。</dd> - <dt><a href="/ja/docs/Introduction_to_SSL">SSL 入門</a></dt> - <dd>SSL でサポートされている暗号化方式や、SSL ハンドシェイクの手順など、SSL プロトコルを紹介しています。</dd> - </dl> - - <h3 id="はじめに">はじめに</h3> - - <dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Releases">NSS のリリース</a></dt> - <dd>このページでは、NSS の現在のリリース情報と過去のリリース情報を掲載しています。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">ソースコードを取得してビルドする</a></dt> - <dd>サポートされている異なるプラットフォーム上で NSS を構築する方法の説明書。</dd> - <dt><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Mercurial を使って Mozilla のソースコードを取得する</a></dt> - <dd>Mercurial との連携についての情報です。</dd> - <dt><a href="/ja/docs/Mozilla/Developer_Guide/Source_Code/CVS">CVS を使った Mozilla ソースコードの取得 (非推奨)</a></dt> - <dd>古い非推奨の CVS ドキュメント。</dd> - </dl> - - <h3 id="NSS_の_API">NSS の API</h3> - - <dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/Introduction_to_Network_Security_Services">Network Security Services のご紹介</a></dt> - <dd>NSS ライブラリの概要と使用するために知っておくべきことを紹介しています。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/SSL_functions">NSS SSL 公開関数</a></dt> - <dd>NSS 共有ライブラリがエクスポートした SSL API をまとめます。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_reference">NSS SSL リファレンス</a></dt> - <dd>SSL 操作を呼び出すためのAPIです。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_API_Guidelines">NSS API ガイドライン</a></dt> - <dd>ライブラリとコードがどのように構成されているか、コードを開発する際のガイドライン (命名規則、エラー処理、スレッドの安全性など) を説明します。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Tech_Notes">NSS 技術ノート</a></dt> - <dd>NSS の新機能に関する最新情報や、NSS を使ったプログラミングの高度なトピックについての補足資料を提供する NSS テクニカルノートのリンク集です。</dd> - </dl> - - <h3 id="ツール、テスト、その他技術的な詳細">ツール、テスト、その他技術的な詳細</h3> - - <dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/Building">NSS のビルド手順</a></dt> - <dd>NSS のリリースをチェックアウトしてビルドする方法を説明します。</dd> - </dl> - - <dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Developer_Tutorial">NSS 開発者向けチュートリアル</a></dt> - <dd>NSS での変更の仕方。コーディングスタイル、ABI 互換性の維持。</dd> - </dl> - - <dl> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/tools">NSS ツール</a></dt> - <dd>NSS を使用したアプリケーションの開発、デバッグ、管理のためのツールです。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sample_Code">サンプルコード</a></dt> - <dd>暗号処理、証明書の取り扱い、SSL などに NSS がどのように利用できるかを実演します。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Third-Party_Code">サードパーティコード</a></dt> - <dd>NSS ライブラリに含まれるサードパーティのコードの一覧です。</dd> - <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/testnss_32.html">NSS 3.2 Test Suite</a></dt> - <dd><strong>アーカイブ版</strong>。標準の NSS テストの実行方法について説明しています。</dd> - <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/performance_reports.html">NSS Performance Reports</a></dt> - <dd><strong>アーカイブ版</strong>。NSS 3.2 以降のリリースのパフォーマンスレポートへのリンクです。</dd> - <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">Encryption Technologies Available in NSS 3.11</a></dt> - <dd><strong>アーカイブ版</strong>。NSS 3.11 で使用されている暗号アルゴリズムの一覧です。</dd> - <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/loadable_certs.html">NSS 3.1 Loadable Root Certificates</a></dt> - <dd><strong>アーカイブ版</strong>。ルート CA 証明書をロードするスキームについて説明します。</dd> - <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/db_formats.html">cert7.db</a></dt> - <dd><strong>アーカイブ版</strong>。cert7.db データベースの一般的なフォーマット。</dd> - </dl> - - <h3 id="PKCS_11_情報">PKCS #11 情報</h3> - - <ul> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11" title="PKCS11">Documentation on PKCS #11 modules</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_Implement">Implementing PKCS #11 for NSS</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_Module_Specs" title="PKCS11_Module_Specs">The strings NSS uses to load PKCS #11 modules</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_FAQ">PKCS #11 FAQ</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_Jar_Install">Using the JAR Installation Manager to Install a PKCS #11 Cryptographic Module</a></li> - <li><a href="https://www-archive.mozilla.org/projects/security/pki/pkcs11/">PKCS #11 Conformance Testing - Archived version</a></li> - </ul> - - <dl> - </dl> - - <h3 id="NSS_にプリロードされた_CA_証明書">NSS にプリロードされた CA 証明書</h3> - - <ul> - <li><a href="https://www.mozilla.org/projects/security/certs/policy/">Mozilla CA certificate policy</a></li> - <li><a href="https://wiki.mozilla.org/CA/Included_Certificates">List of pre-loaded CA certificates</a> - <ul> - <li>このリストの消費者は、含まれる各ルート証明書のトラストビット設定を考慮する必要があります。<a href="https://www.imperialviolet.org/2012/01/30/mozillaroots.html">More Information</a>, <a href="https://github.com/agl/extract-nss-root-certs">root とそのトラストビットの抽出</a></li> - </ul> - </li> - </ul> - - <dl> - </dl> - - <h3 id="NSS_は_Netscape_Portable_Runtime_NSPR_の上に構築されています。">NSS は Netscape Portable Runtime (NSPR) の上に構築されています。</h3> - - <dl> - <dt><a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Projects/NSPR">Netscape Portable Runtime</a></dt> - <dd>NSPR project page.</dd> - <dt><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference">NSPR Reference</a></dt> - <dd>NSPR API documentation.</dd> - </dl> - - <h3 id="その他の情報">その他の情報</h3> - - <ul> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/JavaScript_crypto" title="JavaScript_crypto">Using the window.crypto object from JavaScript</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/HTTP_Delegation" title="HTTP_Delegation">Delegation of HTTP download for OCSP</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/TLS_Cipher_Suite_Discovery" title="TLS_Cipher_Suite_Discovery">TLS Cipher Suite Discovery</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/NSS_Certificate_Download_Specification" title="NSS_Certificate_Download_Specification">NSS Certificate Download Specification</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/NSS/FIPS_Mode_-_an_explanation" title="FIPS Mode - an explanation">FIPS Mode - an explanation</a></li> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/NSS_Key_Log_Format" title="NSS Key Log Format">Format of key log files</a></li> - <li>View <a href="https://wiki.developer.mozilla.org/en-US/docs/tag/NSS" title="/en-US/docs/tag/NSS">all NSS-related articles on MDN</a></li> - </ul> - - <h3 id="計画">計画</h3> - - <p>NSS の計画に関する情報は、<a class="external external-icon" href="https://wiki.mozilla.org/NSS">wiki.mozilla.org</a> に掲載されています。</p> - - <ul> - <li><a class="external external-icon" href="https://wiki.mozilla.org/FIPS_Validation">FIPS Validation</a></li> - <li><a class="external external-icon" href="https://wiki.mozilla.org/NSS:Roadmap">NSS Roadmap page</a></li> - <li><a href="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness" title="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness">NSS Improvement Project</a></li> - </ul> - </td> - <td> - <h2 class="Community" id="Community" name="Community">コミュニティ</h2> - - <ul> - <li>Mozilla Security フォーラムを見る...</li> - </ul> - - <p>{{ DiscussionList("dev-security", "mozilla.dev.security") }}</p> - - <ul> - <li>Mozilla Cryptography フォーラムを見る...</li> - </ul> - - <p>{{ DiscussionList("dev-tech-crypto", "mozilla.dev.tech.crypto") }}</p> - - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">関連トピック</h2> - - <ul> - <li><a href="https://wiki.developer.mozilla.org/en-US/docs/Security" title="Security">Security</a></li> - </ul> - - <dl> - </dl> - </td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/projects/nss/introduction_to_network_security_services/index.html b/files/ja/mozilla/projects/nss/introduction_to_network_security_services/index.html deleted file mode 100644 index 921b4d76ab..0000000000 --- a/files/ja/mozilla/projects/nss/introduction_to_network_security_services/index.html +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: Network Security Services のご紹介 -slug: Mozilla/Projects/NSS/Introduction_to_Network_Security_Services -tags: - - NSS -translation_of: Mozilla/Projects/NSS/Introduction_to_Network_Security_Services ---- -<p><strong>Network Security Services (NSS)</strong> とは、SSL、S/MIME、その他インターネットセキュリティ規格をサポートするアプリケーションのクロスプラットフォーム開発を支援するように設計されたライブラリの一式です。NSS の一般的な概観やサポートしている規格についての情報は <a href="ja/Overview_of_NSS">NSS 概観</a> をご覧ください。</p> - -<h3 id=".E5.85.B1.E6.9C.89.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA" name=".E5.85.B1.E6.9C.89.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">共有ライブラリ</h3> - -<p>Network Security Services は、スタティックライブラリと共有ライブラリの両方を提供します。共有ライブラリを利用するアプリケーションは、ライブラリがエクスポートする API のみを利用しなければなりません。3 つの共有ライブラリは、共通機能をエクスポートします。</p> - -<ul> - <li>SSL ライブラリは SSL のコア機能をサポートします。</li> - <li>S/MIME ライブラリは S/MIME のコア機能をサポートします。</li> - <li>NSS ライブラリは暗号化のコア機能をサポートします。</li> -</ul> - -<p>エクスポートされた API を利用しているアプリケーションが、将来のバージョンのライブラリでも互換性を保てることを保証します。NSS 3.2 の共有ライブラリからエクスポートされた共通機能の完全なリストは、<a href="ja/NSS_functions">NSS の機能</a> をご覧ください。</p> - -<p>どの NSS 3.1.1 のスタティックライブラリが上記 NSS 3.2 の共有ライブラリに置き換わったのかは、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/release_notes_32.html#migration">Migration from NSS 3.1.1</a> をご覧ください。</p> - -<p>下の図 1 は、上に挙げられた 3 つの共有ライブラリと NSPR 間の関係を単純化したものを示しています。NSPR は、スレッド管理や I/O といった、低レベルでのクロスプラットフォームサポートを提供します。(NSPR は、別の Mozilla プロジェクトであることにご注意ください。詳細は、<a href="ja/NSPR">Netscape Portable Runtime</a> をご覧ください。)</p> - -<dl> - <dt>図 1 NSS コアライブラリ間および NSPR 間の関係</dt> -</dl> - - - -<h3 id=".E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87.E3.81.A8.E7.89.B9.E5.88.A5.E3.81.AA.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA" name=".E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87.E3.81.A8.E7.89.B9.E5.88.A5.E3.81.AA.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">命名規則と特別なライブラリ</h3> - -<p>Windows と Unix は、スタティックライブラリおよびダイナミックライブラリに対し、それぞれ違った命名規則を利用します。</p> - -<table style="text-align: left;"> - <tbody> - <tr> - <th></th> - <th>Windows</th> - <th>Unix</th> - </tr> - <tr> - <th>スタティック</th> - <td><code>.lib</code></td> - <td><code>.a</code></td> - </tr> - <tr> - <th>ダイナミック</th> - <td><code>.dll</code></td> - <td><code>.so</code> または <code>.sl</code></td> - </tr> - </tbody> -</table> - -<p>加えて、Windows はダイナミックライブラリにバインドされた「インポート」ライブラリを持っています。そのため NSS ライブラリは、次の形式になっています。</p> - -<ul> - <li><code>libnss3.so</code> - Unix 共有ライブラリ</li> - <li><code>libnss3.sl</code> - HP-UX 共有ライブラリ</li> - <li><code>libnss.a</code> - Unix スタティックライブラリ</li> - <li><code>nss3.dll</code> - Windows 共有ライブラリ</li> - <li><code>nss3.lib</code> - Windows import library binding to <code>nss3.dll</code> にバインドされた Windows インポートライブラリ</li> - <li><code>nss.lib</code> - Windows スタティックライブラリ</li> -</ul> - -<p>NSS、SSL、および S/MIME は、上記すべての形式を備えています。</p> - -<p>次のスタティックライブラリは、どの共有ライブラリにも含まれません。</p> - -<ul> - <li><code>libcrmf.a</code>/<code>crmf.lib</code> は、CRMF 操作に API を提供します。</li> - <li><code>libjar.a</code>/<code>jar.lib</code> は、JAR ファイルを生成するために API を提供します。</li> -</ul> - -<p>次のスタティックライブラリは、外部のロード可能な PKCS #11 モジュールにのみ含まれます。</p> - -<ul> - <li><code>libnssckfw.a</code>/<code>nssckfw.lib</code> は、PKCS #11 モジュールを書くための API を提供します。</li> - <li><code>libswfci.a</code>/<code>swfci.lib</code> は、FORTEZZA ソフトウェアをサポートします。</li> -</ul> - -<p>次の共有ライブラリは、独立ロード可能なモジュール (standalone loadable modules) で、直接リンクされることを目的にしていません。</p> - -<ul> - <li><code>libfort.so</code>/<code>libfort.sl</code>/<code>fort32.dll</code> は、FORTEZZA ハードウェアへのサポートを提供します。</li> - <li><code>libswft.so</code>/<code>libswft.sl</code>/<code>swft32.dll</code> は、FORTEZZA ハードウェアへのサポートを提供します。</li> - <li><code>libnssckbi.so</code>/<code>libnssckbi.sl</code>/<code>nssckbi.dll</code> は、信頼済みルート証明書のデフォルトセットを定義します。</li> -</ul> - -<h3 id="ILP32_.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88" name="ILP32_.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88">ILP32 のサポート</h3> - -<p>NSS 3.2 以降のバージョンでは、新たに 2 つの共有ライブラリが PARisc CPU 用 HP-UX プラットフォームおよび (Ultra) Sparc (非 x86) CPU 用 Solaris 用に加えられています。これら HP-UX および Solaris プラットフォームは、ILP32 プログラムモデルを 32 ビット CPU および 64 ビット CPU 上で走らせるプログラムを利用できます。新たに加えられた 2 つのライブラリは、それぞれこの 2 つの CPU で使用する際に最適化されたパフォーマンスを提供します。</p> - -<p>これら 2 つの共有ライブラリは他のプラットフォーム向けには提供されません。これらのライブラリの名前は、下の表に示すように、プラットフォームに依存しています。</p> - -<table style="text-align: left;"> - <tbody> - <tr> - <th>プラットフォーム</th> - <th>32 ビット CPU 向け</th> - <th>64 ビット CPU 向け</th> - </tr> - <tr> - <td>Solaris/Sparc</td> - <td><code>libfreebl_pure32_3.so</code></td> - <td><code>libfreebl_hybrid_3.so</code></td> - </tr> - <tr> - <td>HPUX/PARisc</td> - <td><code>libfreebl_pure32_3.sl</code></td> - <td><code>libfreebl_hybrid_3.sl</code></td> - </tr> - <tr> - <td>AIX (将来のリリースを計画)</td> - <td><code>libfreebl_pure32_3_shr.a</code></td> - <td><code>libfreebl_hybrid_3_shr.a</code></td> - </tr> - </tbody> -</table> - -<p>これらのライブラリにアプリケーションをリンクしないでください。ライブラリは NSS 作動時に動的にロードされます。プログラムをライブラリのうちどちらかにリンクさせた場合、アプリケーションプログラムが特定の CPU 上でしか作動しなくなったり (例: 64 ビット CPU 上のみで作動し、32 ビット CPU では作動しない)、または 64 ビット CPU 上のより効率的な 64 ビットコードを利用できなくなる場合があります。</p> - -<p>これらの共有ライブラリを受け入れることができるプラットフォーム上では、その共有ライブラリがないと NSS 3.2 は作動しません。そのため、アプリケーションがこれらのファイルを NSS 共有ライブラリのディストリビューションを含むようにしてください。これら共有ライブラリは、他の NSS 共有ライブラリ (例えば <code>libnss3.so</code>) がインストールされているディレクトリにインストールされていなければなりません。二つの共有ライブラリはともに、インストール先のシステムが 32 ビット CPU や 64 ビット CPU が使われている場合は、必ずインストールされます。NSS が作動時にローカルシステムに対して正しいファイルを選択します。</p> - -<p>NSS 3.x はまた、上記プラットフォーム向けの LP64 モデルも利用可能ですが、NSS 3.x の LP64 モデルはこれら二つの共有ライブラリを持たないことを念頭においてください。</p> - -<h3 id=".E7.9F.A5.E3.81.A3.E3.81.A6.E3.81.8A.E3.81.8F.E3.81.B9.E3.81.8D.E3.81.93.E3.81.A8" name=".E7.9F.A5.E3.81.A3.E3.81.A6.E3.81.8A.E3.81.8F.E3.81.B9.E3.81.8D.E3.81.93.E3.81.A8">知っておくべきこと</h3> - -<p>NSS を利用する前に、次の話題を理解していることが求められます。</p> - -<ul> - <li>公開鍵暗号の概念と技術</li> - <li>セキュリティつきソケット層 (SSL) プロトコル</li> - <li>暗号認証インターフェース (cryptographic token interfaces) の PKCS #11 規格</li> - <li>クロスプラットフォーム開発の要点および技術</li> -</ul> - -<h3 id=".E3.82.88.E3.82.8A.E5.A4.9A.E3.81.8F.E3.81.AE.E6.83.85.E5.A0.B1.E3.82.92.E5.BE.97.E3.82.8B.E3.81.AB.E3.81.AF" name=".E3.82.88.E3.82.8A.E5.A4.9A.E3.81.8F.E3.81.AE.E6.83.85.E5.A0.B1.E3.82.92.E5.BE.97.E3.82.8B.E3.81.AB.E3.81.AF">より多くの情報を得るには</h3> - -<p>NSS を利用する前に理解しておかなければならない PKI および SSL の情報は、以下のページをご覧ください。</p> - -<ul> - <li><a href="ja/Introduction_to_Public-Key_Cryptography">公開鍵暗号入門</a></li> - <li><a href="ja/Introduction_to_SSL">SSL 入門</a></li> -</ul> - -<p>API に関する参考文献、ビルドガイド、およびその他の有益な情報へのリンクは、<a href="ja/NSS">NSS プロジェクトのページ</a> をご覧ください。</p> - -<p>上で述べられているように、NSS は NSPR の上にビルドされています。NSPR 用 API に関する参考文献は、<a href="ja/NSPR_API_Reference">NSPR API リファレンス</a> をご覧ください。</p> - -<p>{{ languages( { "en": "en/Introduction_to_Network_Security_Services" } ) }}</p> diff --git a/files/ja/mozilla/projects/nss/new_nss_samples/index.html b/files/ja/mozilla/projects/nss/new_nss_samples/index.html deleted file mode 100644 index be47c481f4..0000000000 --- a/files/ja/mozilla/projects/nss/new_nss_samples/index.html +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: 新しい NSS サンプル -slug: Mozilla/Projects/NSS/New_NSS_Samples -tags: - - Example -translation_of: Mozilla/Projects/NSS/New_NSS_Samples ---- -<h2 id="New_NSS_Sample_Code">New NSS Sample Code</h2> - -<p>このサンプルコード集では、暗号処理、証明書の取り扱い、SSL などに NSS をどのように利用できるかを示しています。また、暗号技術の応用におけるベストプラクティスをいくつか示しています。</p> - -<p>These new examples are a work in progress. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">https://bugzilla.mozilla.org/show_bug.cgi?id=490238</a></p> - -<p>サンプルのダウンロード方法</p> - -<pre class="bz_comment_text notranslate" id="comment_text_42">hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH -</pre> - -<p>サンプル一覧。</p> - -<ol> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Sample1_-_Hashing">Sample Code 1: Hashing</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Sample2_-_Initialize_NSS_Database">Sample Code 2: Init NSS database</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Encrypt_Decrypt_MAC_Using_Token">Sample Code 3: Encrypt/Decrypt and Mac Using Token</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Encrypt_Decrypt_MAC_Keys_As_Session_Objects">Sample Code 4: Encrypt/Decrypt and Mac Using Session Objects</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Enc_Dec_MAC_Output_Plblic_Key_as_CSR">Sample Code 5: Encrypt/Decrypt/MAC Output Public Key as a CSR </a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Enc_Dec_MAC_Using_Key_Wrap_CertReq_PKCS10_CSR">Sample Code 6: Encrypt/Decrypt/MAC Generating a PKCS#11 CSR</a></li> -</ol> - -<p>これらのサンプルで使用されている共通のコード。</p> - -<ol> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Utiltiies_for_nss_samples">Sample Code 0: Utilities</a></li> -</ol> - -<p>これらのサンプルの主執筆者である Mozilla Community のメンバーである Shailendra Jain 氏に感謝します。</p> diff --git a/files/ja/mozilla/projects/nss/notes_on_tls_-_ssl_3.0_intolerant_servers/index.html b/files/ja/mozilla/projects/nss/notes_on_tls_-_ssl_3.0_intolerant_servers/index.html deleted file mode 100644 index b56f599981..0000000000 --- a/files/ja/mozilla/projects/nss/notes_on_tls_-_ssl_3.0_intolerant_servers/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Notes on TLS - SSL 3.0 Intolerant Servers -slug: Mozilla/Projects/NSS/Notes_on_TLS_-_SSL_3.0_Intolerant_Servers -tags: - - Gecko - - NSS - - Security -translation_of: Mozilla/Projects/NSS/Notes_on_TLS_-_SSL_3.0_Intolerant_Servers ---- -<p> </p> - -<h3 id=".E4.B8.8D.E5.85.B7.E5.90.88" name=".E4.B8.8D.E5.85.B7.E5.90.88">不具合</h3> - -<p>多くの Netscape 6.x/7.x および Mozilla 利用者が、いくつかのセキュリティ保護されたサイト -- オンライントランザクションやオンラインバンクでHTTPSプロトコルを使っている一般的なサイト -- で何も表示されないと報告してきています。 接続は終わっているように見えますが空白ページが表示されます。これがMozillaベースのブラウザがTLS/SSL 3.0 狭量(不寛容)なサーバに遭遇したときの問題の主な症状です。</p> - -<h3 id="Cause" name="Cause">原因</h3> - -<p>現状、SSL 3.0 仕様の狭量な実装がされたいくつかのWebサーバがあります。 この狭量な実装は<strong>SSL 3.0</strong> および <strong>TLS (aka SSL 3.1)</strong> 仕様に従っているクライアントからの接続の試みを拒否します。 </p> - -<p>Netscape 6.x/7.x および Mozilla ブラウザ (0.9.1 以降のバージョン) は、TLSの仕様を正しく実装しており、ユーザはこの問題のあるサイトを利用できません。</p> - -<h3 id=".E6.8A.80.E8.A1.93.E6.83.85.E5.A0.B1" name=".E6.8A.80.E8.A1.93.E6.83.85.E5.A0.B1">技術情報</h3> - -<p>The <strong>SSL 3.0</strong> and <strong>TLS (aka SSL 3.1)</strong> specs both contain a provision -- the same provision -- for detecting "version rollback attacks". It is designed to permit a server to detect a man-in-the-middle that is altering the SSL client hello (connection) requests as they pass from the client to the server, altering them by changing the protocol version number to a lower version number. This feature was kind of meaningless until <strong>TLS (SSL 3.1)</strong> came along because there was no version higher than 3.0 from which to be rolled back. TLS is now available and used, and products that have implemented the roll-back detection incorrectly are not interoperable with TLS/SSL spec-compliant clients. Normally the servers which have this problem are not equipped to deal with the TLS protocol, but instead of rolling back to SSL 3.0 as the rollback provision provides, they terminate/drop the connection, thus resulting in most cases a blank page display.</p> - -<p>For up-to-date information, you can read a Bugzilla bug report which keeps track of this problem with Mozilla-based browsers. See {{ Bug(59321) }}.</p> - -<h3 id="Servers_currently_known_to_exhibit_this_intolerant_behavior" name="Servers_currently_known_to_exhibit_this_intolerant_behavior">Servers currently known to exhibit this intolerant behavior</h3> - -<p>As of this writing, this problem has been reported for the following servers: (Wherever there is an upgraded version which fixes the problem, it is indicated by an asterisked remark in the parentheses. )</p> - -<ul> - <li>Domino-Go-Webserver/4.6.2.6 (and perhaps some later versions)</li> - <li>IBM_HTTP_Server/1.3.6.3 or earlier (* Update to 1.3.6.4)</li> - <li>IBM_HTTP_Server/1.3.12.1 or earlier (* <a class="external" href="http://www6.software.ibm.com/dl/websphere/http-p">Update to 1.3.12.2</a>)</li> - <li>Java Web Server 2</li> - <li>OSU/3.2 - DECthreads HTTP server for OpenVM</li> - <li>Stronghold/2.2</li> - <li>Webmail v. 3.6.1 by Infinite Technologies (* Update available)</li> -</ul> - -<p>N.B. There might be servers other than those listed above which exhibit this problem. If you find such a server, feel free to add it to this page. For up-to-date information, you can read this {{bug(59321)}} which keeps a list of TLS/SSL 3.0 intolerant servers.</p> - -<h3 id="Users_.E3.81.93.E3.81.AE.E5.95.8F.E9.A1.8C.E3.82.92.E9.81.BF.E3.81.91.E3.82.8B.E3.81.AB.E3.81.AF.3F" name="Users:_.E3.81.93.E3.81.AE.E5.95.8F.E9.A1.8C.E3.82.92.E9.81.BF.E3.81.91.E3.82.8B.E3.81.AB.E3.81.AF.3F">Users: この問題を避けるには?</h3> - -<h4 id="Netscape_6.1_Preview_Release_1.2C_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.1_.E4.BB.A5.E5.89.8D" name="Netscape_6.1_Preview_Release_1.2C_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.1_.E4.BB.A5.E5.89.8D">Netscape 6.1 Preview Release 1, または Mozilla 0.9.1 以前</h4> - -<p>These versions shipped with the TLS option turned <strong>ON</strong> as the default but with no way to deal with the problem servers. If you are using these old versions, please update to the latest Netscape or Mozilla versions. You can also avoid such a problem by editing an existing profile -- check the preference option setting at: <code>Edit | Preferences | Privacy and Security | SSL | Enable TLS</code>, and turn it <strong>OFF</strong> if it is <strong>ON</strong> for these earlier browsers.</p> - -<h4 id="Netscape_6.1_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.2_.E4.BB.A5.E9.99.8D" name="Netscape_6.1_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.2_.E4.BB.A5.E9.99.8D">Netscape 6.1 または Mozilla 0.9.2 以降</h4> - -<p>These browsers shipped with the TLS option <strong>ON</strong> but also included a graceful rollback mechanism on the client side when they encounter known TLS/SSL 3.0 intolerant servers.</p> - -<h4 id="Firefox_2_.E4.BB.A5.E9.99.8D" name="Firefox_2_.E4.BB.A5.E9.99.8D">Firefox 2 以降</h4> - -<p>Firefox 2から、SSL 2.0のサポートは最初から無効にされています; unless it is expressly re-enabled by the user using about:config. See <a href="/ja/Security_in_Firefox_2" title="ja/Security_in_Firefox_2">Security in Firefox 2</a> for details.</p> - -<h3 id="Web.E3.82.B5.E3.82.A4.E3.83.88.E7.AE.A1.E7.90.86.E8.80.85_How_to_avoid_this_problem.3F" name="Web.E3.82.B5.E3.82.A4.E3.83.88.E7.AE.A1.E7.90.86.E8.80.85:_How_to_avoid_this_problem.3F">Webサイト管理者: この問題を避けるには?</h3> - -<ul> - <li>Upgrade to a newer version if available, which corrects this problem. There will be other network clients which implement TLS/SSL 3.0 specification correctly and have a problem with your site. Let's not perpetuate the problem servers.</li> - <li>Contact the manufacturer and inquire if there is a new version available which fixes this problem.</li> - <li>Post a note on your site instructing users of old versions of browsers like Netscape 6.0/6.01/6.1 Preview Release 1 and Mozilla 0.9.1 and earlier to turn <strong>OFF</strong> the TLS option at: <code>Edit | Preferences | Privacy and Security | SSL | Enable TLS</code>. However, this is a temporary workaround at best. We recommend strongly that you urge users to upgrade to the latest Netscape version (or at least Netscape 6.1) since the newer versions have the graceful rollback implemented in the code.</li> - <li>If you have questions concerning Netscape browsers and problem servers, please contact us using the feedback address at the top of this page.</li> -</ul> - -<h3 id="Detecting_intolerant_servers" name="Detecting_intolerant_servers">Detecting intolerant servers</h3> - -<p>Because newer versions of Netscape and Mozilla have built-in workaround for the problem servers, it is now unlikely that you will experience this problem. But if you're running Netscape 6.0/6.01/6.1 PR 1 or Mozilla build (prior to 6/11/2001), you should look out for the symptom described below. You may also run this test with versions later than the older versions of Netscape 6.x or Mozilla -- just in case code changes in Netscape 6.1/Mozilla 0.9.2 or later may not catch all problem servers.</p> - -<ul> - <li>When you find a secure site which simply does not display any page content or drops the connection, check to see if the preference option <code>Edit | Preferences | Privacy and Security | SSL | Enable TLS</code> is turned <strong>ON</strong>. If so, turn it <strong>OFF</strong>.</li> - <li>Now re-visit the problem site. If the content displays this time, you are most likely witnessing a TLS/SSL 3.0 intolerant server.</li> - <li>Report such a problem to the server's administrator.</li> -</ul> - -<h3 id="How_to_report_an_intolerant_server" name="How_to_report_an_intolerant_server">How to report an intolerant server</h3> - -<ul> - <li><em>Optional:</em> Get the name of the SSL server software used by the website. To do so, add <code><span class="nowiki">http://toolbar.netcraft.com/site_report?url=</span></code> to the beginning of the URL. The server software will appear next to <strong>Server</strong> under <strong>SSL Certificate Information</strong>.<br> - <br> - For instance, to check <code><span class="nowiki">https://bugzilla.mozilla.org/</span></code>, then visit <a class="external" href="http://toolbar.netcraft.com/site_report?url=https://bugzilla.mozilla.org/" rel="freelink">http://toolbar.netcraft.com/site_rep...a.mozilla.org/</a>.</li> - <li>Add the information on such a server (software, URL) to {{bug(59321)}} at Bugzilla. (Note: You will be asked to provide your email address before you can file a bug at Bugzilla.)</li> -</ul> - -<div class="originaldocinfo"> -<h3 id=".E5.8E.9F.E6.96.87.E6.83.85.E5.A0.B1" name=".E5.8E.9F.E6.96.87.E6.83.85.E5.A0.B1">原文情報</h3> - -<ul> - <li>著者 : 桃井 勝彦</li> - <li>最終更新日: 2003年1月27日</li> - <li>Copyright © 2001-2003 Netscape. All rights reserved.</li> -</ul> -</div> diff --git a/files/ja/mozilla/projects/nss/nss_3.18_release_notes/index.html b/files/ja/mozilla/projects/nss/nss_3.18_release_notes/index.html deleted file mode 100644 index 707389d205..0000000000 --- a/files/ja/mozilla/projects/nss/nss_3.18_release_notes/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: NSS 3.18 release notes -slug: Mozilla/Projects/NSS/NSS_3.18_release_notes -translation_of: Mozilla/Projects/NSS/NSS_3.18_release_notes ---- -<h2 id="はじめに">はじめに</h2> - -<p>NSSチームはマイナーリリースであるNetwork Security Services (NSS) 3.18をリリースしました。</p> - -<h2 id="配布情報">配布情報</h2> - -<p>HGタグはNSS_3_18_RTMです。NSS 3.18はNSPR 4.10.8またはそれより新しいバージョンを必要とします。</p> - -<p>NSS 3.18のソースコードの配布物はftp.mozilla.orgまたは安全なHTTPSのダウンロードリンクから入手できます:</p> - -<ul> - <li>Source tarballs:<br> - <a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_18_RTM/src/">https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_18_RTM/src/</a></li> -</ul> - -<h2 id="NSS_3.18で新しくなった点">NSS 3.18で新しくなった点</h2> - -<h3 id="新機能">新機能</h3> - -<ul> - <li>When importing certificates and keys from a PKCS#12 source, it's now possible to override the nicknames, prior to importing them into the NSS database, using new API SEC_PKCS12DecoderRenameCertNicknames.</li> - <li>The tstclnt test utility program has new command-line options -C, -D, -b and -R.<br> - Use -C one, two or three times to print information about the certificates received from a server, and information about the locally found and trusted issuer certificates, to diagnose server side configuration issues. It is possible to run tstclnt without providing a database (-D). A PKCS#11 library that contains root CA certificates can be loaded by tstclnt, which may either be the nssckbi library provided by NSS (-b) or another compatible library (-R).</li> -</ul> - -<h4 id="新しい関数">新しい関数</h4> - -<ul> - <li><em>in certdb.h</em> - - <ul> - <li><strong>SEC_CheckCrlTimes</strong> - Check the validity of a CRL at the given time.</li> - <li><strong>SEC_GetCrlTimes</strong> - Extract the validity times from a CRL.</li> - </ul> - </li> - <li><em>in p12.h</em> - <ul> - <li><strong>SEC_PKCS12DecoderRenameCertNicknames</strong> - call an application provided callback for each certificate found in a SEC_PKCS12DecoderContext.</li> - </ul> - </li> - <li><em>in pk11pub.h</em> - <ul> - <li><strong>__PK11_SetCertificateNickname</strong> - this is an internal symbol for NSS use only, as with all exported NSS symbols that have a leading underscore '_'. Applications that use or depend on these symbols can and will break in future NSS releases.</li> - </ul> - </li> -</ul> - -<h4 id="新しい型">新しい型</h4> - -<ul> - <li><em>in p12.h</em> - - <ul> - <li><strong>SEC_PKCS12NicknameRenameCallback</strong> - a function pointer definition. An application that uses SEC_PKCS12DecoderRenameCertNicknames must implement a callback function that implements this function interface.</li> - </ul> - </li> -</ul> - -<h2 id="NSS_3.18での目立った変更点">NSS 3.18での目立った変更点</h2> - -<ul> - <li>既定の状態で有効なTLSのプロトコルバージョンの最大値がTLS 1.0からTLS 1.2に引き上げられました。同様に、既定の状態で有効なDTLSのプロトコルバージョンの最大値もDTLS 1.0からDTLS 1.2に引き上げられました。</li> - <li>RSA鍵ペアを生成する際にcertutilが使う鍵の既定のサイズが1024ビットから2048ビットに引き上げられました。</li> - <li>Mac OS Xでは、OSにsqliteのライブラリのバージョン3.5またはそれ以上がインストールされている場合、既定の状態でsoftokn共有ライブラリにリンクされるようになりました。</li> - <li>以下の認証局証明書について、コードとWebサイトの署名に対する<strong>信頼のビットが無効化されました。</strong> - <ul> - <li>OU = Equifax Secure Certificate Authority - <ul> - <li>SHA1 Fingerprint: D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A</li> - </ul> - </li> - <li>CN = Equifax Secure Global eBusiness CA-1 - <ul> - <li>SHA1 Fingerprint: 7E:78:4A:10:1C:82:65:CC:2D:E1:F1:6D:47:B4:40:CA:D9:0A:19:45</li> - </ul> - </li> - <li>CN = TC TrustCenter Class 3 CA II - <ul> - <li>SHA1 Fingerprint: 80:25:EF:F4:6E:70:C8:D4:72:24:65:84:FE:40:3B:8A:8D:6A:DB:F5</li> - </ul> - </li> - </ul> - </li> - <li>以下の認証局証明書が<strong>追加されました。</strong> - <ul> - <li>CN = Staat der Nederlanden Root CA - G3 - <ul> - <li>SHA1 Fingerprint: D8:EB:6B:41:51:92:59:E0:F3:E7:85:00:C0:3D:B6:88:97:C9:EE:FC</li> - </ul> - </li> - <li>CN = Staat der Nederlanden EV Root CA - <ul> - <li>SHA1 Fingerprint: 76:E2:7E:C1:4F:DB:82:C1:C0:A6:75:B5:05:BE:3D:29:B4:ED:DB:BB</li> - </ul> - </li> - <li>CN = IdenTrust Commercial Root CA 1 - <ul> - <li>SHA1 Fingerprint: DF:71:7E:AA:4A:D9:4E:C9:55:84:99:60:2D:48:DE:5F:BC:F0:3A:25</li> - </ul> - </li> - <li>CN = IdenTrust Public Sector Root CA 1 - <ul> - <li>SHA1 Fingerprint: BA:29:41:60:77:98:3F:F4:F3:EF:F2:31:05:3B:2E:EA:6D:4D:45:FD</li> - </ul> - </li> - <li>CN = S-TRUST Universal Root CA - <ul> - <li>SHA1 Fingerprint: 1B:3D:11:14:EA:7A:0F:95:58:54:41:95:BF:6B:25:82:AB:40:CE:9A</li> - </ul> - </li> - <li>CN = Entrust Root Certification Authority - G2 - <ul> - <li>SHA1 Fingerprint: 8C:F4:27:FD:79:0C:3A:D1:66:06:8D:E8:1E:57:EF:BB:93:22:72:D4</li> - </ul> - </li> - <li>CN = Entrust Root Certification Authority - EC1 - <ul> - <li>SHA1 Fingerprint: 20:D8:06:40:DF:9B:25:F5:12:25:3A:11:EA:F7:59:8A:EB:14:B5:47</li> - </ul> - </li> - <li>CN = CFCA EV ROOT - <ul> - <li>SHA1 Fingerprint: E2:B8:29:4B:55:84:AB:6B:58:C2:90:46:6C:AC:3F:B8:39:8F:84:83</li> - </ul> - </li> - </ul> - </li> - <li>ルート認証局リストのバージョン番号は2.3に更新されました。</li> -</ul> - -<h2 id="NSS_3.18で修正されたバグ">NSS 3.18で修正されたバグ</h2> - -<p>NSS 3.18で修正されたバグの一覧を返すBugzillaのクエリは以下の通りです:</p> - -<p><a href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.18">https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.18</a></p> - -<h2 id="互換性">互換性</h2> - -<p>NSS 3.18共有ライブラリはすべての古いNSS 3.x共有ライブラリと後方互換性があります。古いNSS3.x共有ライブラリとリンクされたプログラムは、再コンパイルまたは再リンクなしでNSS 3.18と組み合わせて動作します。また、NSS公開関数に列挙された関数のみに限定してNSSのAPIを利用しているアプリケーションは、将来のバージョンのNSS共有ライブラリにおいても利用できます。</p> - -<h2 id="フィードバック">フィードバック</h2> - -<p>バグに遭遇した場合は<a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=NSS">、 bugzilla.mozilla.org</a> に(プロダクトとしてNSSを選択して)バグレポートを登録して下さい。</p> - -<p> </p> diff --git a/files/ja/mozilla/projects/nss/nss_3.57_release_notes/index.html b/files/ja/mozilla/projects/nss/nss_3.57_release_notes/index.html deleted file mode 100644 index 31afee3691..0000000000 --- a/files/ja/mozilla/projects/nss/nss_3.57_release_notes/index.html +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: NSS 3.57 リリースノート -slug: Mozilla/Projects/NSS/NSS_3.57_release_notes -translation_of: Mozilla/Projects/NSS/NSS_3.57_release_notes ---- -<h2 id="Introduction">Introduction</h2> - -<p>The NSS team has released Network Security Services (NSS) 3.57 on <strong>18 September 2020</strong>, which is a minor release.</p> - -<p>The NSS team would like to recognize first-time contributors:</p> - -<ul> - <li><cite>Khem Raj</cite></li> -</ul> - -<h2 id="Distribution_Information">Distribution Information</h2> - -<p>The HG tag is NSS_3_57_RTM. NSS 3.57 requires NSPR 4.29 or newer.</p> - -<p>NSS 3.57 source distributions are available on ftp.mozilla.org for secure HTTPS download:</p> - -<ul> - <li>Source tarballs:<br> - <a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_57_RTM/src/">https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_57_RTM/src/</a></li> -</ul> - -<p>Other releases are available <a href="/en-US/docs/Mozilla/Projects/NSS/NSS_Releases">in NSS Releases</a>.</p> - -<h2 id="Notable_Changes_in_NSS_3.57">Notable Changes in NSS 3.57</h2> - -<ul> - <li>NSPR dependency updated to 4.29.</li> -</ul> - -<h3 id="Certificate_Authority_Changes">Certificate Authority Changes</h3> - -<ul> - <li>The following CA certificates were Added: - <ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- CN=Trustwave Global Certification Authority - - <ul> - <li>SHA-256 Fingerprint: 97552015F5DDFC3C8788C006944555408894450084F100867086BC1A2BB58DC8</li> - </ul> - </li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- CN=Trustwave Global ECC P256 Certification Authority - <ul> - <li>SHA-256 Fingerprint: 945BBC825EA554F489D1FD51A73DDF2EA624AC7019A05205225C22A78CCFA8B4</li> - </ul> - </li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- CN=Trustwave Global ECC P384 Certification Authority - <ul> - <li>SHA-256 Fingerprint: 55903859C8C0C3EBB8759ECE4E2557225FF5758BBD38EBD48276601E1BD58097</li> - </ul> - </li> - </ul> - </li> - <li>The following CA certificates were Removed: - <ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1651211">Bug 1651211</a> - CN=EE Certification Centre Root CA - <ul> - <li>SHA-256 Fingerprint:<br> - 3E84BA4342908516E77573C0992F0979CA084E4685681FF195CCBA8A229B8A76</li> - </ul> - </li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656077">Bug 1656077</a> - O=Government Root Certification Authority; C=TW - <ul> - <li>SHA-256 Fingerprint:<br> - 7600295EEFE85B9E1FD624DB76062AAAAE59818A54D2774CD4C0B2C01131E1B3</li> - </ul> - </li> - </ul> - </li> - <li>Trust settings for the following CA certificates were Modified: - <ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1653092">Bug 1653092</a> - CN=OISTE WISeKey Global Root GA CA - <ul> - <li>Websites (server authentication) trust bit removed.</li> - </ul> - </li> - </ul> - </li> -</ul> - -<h2 id="Bugs_fixed_in_NSS_3.57">Bugs fixed in NSS 3.57</h2> - -<ul> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1651211">Bug 1651211</a> - Remove EE Certification Centre Root CA certificate.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1653092">Bug 1653092</a> - Turn off Websites Trust Bit for OISTE WISeKey Global Root GA CA.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656077">Bug 1656077 </a>- Remove Taiwan Government Root Certification Authority certificate.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- Add SecureTrust's Trustwave Global root certificates to NSS.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1659256">Bug 1659256</a> - AArch64 AES optimization shouldn't be enabled with gcc 4.8.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1651834">Bug 1651834 </a>- Fix Clang static analyzer warnings.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1661378">Bug 1661378</a> - Fix Build failure with Clang 11.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1659727">Bug 1659727</a> - Fix mpcpucache.c invalid output constraint on Linux/ARM.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1662738">Bug 1662738</a> - Only run freebl_fips_RNG_PowerUpSelfTest when linked with NSPR.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1661810">Bug 1661810</a> - Fix Crash @ arm_aes_encrypt_ecb_128 when building with Clang 11.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1659252">Bug 1659252</a> - Fix Make build with NSS_DISABLE_DBM=1.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660304">Bug 1660304</a> - Add POST tests for KDFs as required by FIPS.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663346">Bug 1663346</a> - Use 64-bit compilation on e2k architecture.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1605922">Bug 1605922</a> - Account for negative sign in mp_radix_size.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1653641">Bug 1653641</a> - Cleanup inaccurate DTLS comments, code review fixes.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660372">Bug 1660372</a> - NSS 3.57 should depend on NSPR 4.29</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660734">Bug 1660734</a> - Fix Makefile typos.</li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660735">Bug 1660735</a> - Fix Makefile typos.</li> -</ul> - -<p>This Bugzilla query returns all the bugs fixed in NSS 3.57:</p> - -<p><a class="external" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.57" rel="noopener">https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Components&query_format=advanced&product=NSS&target_milestone=3.57</a></p> - -<h2 id="Compatibility">Compatibility</h2> - -<p>NSS 3.57 shared libraries are backward compatible with all older NSS 3.x shared libraries. A program linked with older NSS 3.x shared libraries will work with NSS 3.57 shared libraries without recompiling or relinking. Furthermore, applications that restrict their use of NSS APIs to the functions listed in NSS Public Functions will remain compatible with future versions of the NSS shared libraries.</p> - -<h2 id="Feedback">Feedback</h2> - -<p>Bugs discovered should be reported by filing a bug report with<a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=NSS"> bugzilla.mozilla.org</a> (product NSS).</p> diff --git a/files/ja/mozilla/projects/nss/nss_api_guidelines/index.html b/files/ja/mozilla/projects/nss/nss_api_guidelines/index.html deleted file mode 100644 index d01fc56f20..0000000000 --- a/files/ja/mozilla/projects/nss/nss_api_guidelines/index.html +++ /dev/null @@ -1,534 +0,0 @@ ---- -title: NSS API ガイドライン -slug: Mozilla/Projects/NSS/NSS_API_Guidelines -translation_of: Mozilla/Projects/NSS/NSS_API_Guidelines ---- -<h1 id="NSS_API_ガイドライン">NSS API ガイドライン</h1> - -<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p> - -<h2 id="Introduction">Introduction</h2> - -<p>This document describes how the NSS code is organized, the libraries that get built from the NSS sources, and guidelines for writing NSS code. These guidelines will familiarize you with some of the ways things can be done in the NSS code. This will help you understand existing NSS code. It should also help you understand how to write new code, and where to place it.</p> - -<p>Some of the guidelines in this document, are more forward-looking than documentary. These rules are here to help us all immediately achieve more consistent and usable code, but some existing code won't follow all these rules.</p> - -<p><a name="Structure"> </a></p> - -<h2 id="NSS_API_Structure"><a name="Structure">NSS API Structure</a></h2> - -<p>This section explains the structure and relationships of the NSS libraries. The <a href="#Layering">Layering</a> section explains how the NSS code is layered, and how higher-level functions wrap low-level functions. The <a href="#Libraries"> Libraries</a> section descibes the NSS libraries, the functionality each provides, and the layer in which the library (mostly) operates.</p> - -<h3 id="Layering_2"><a name="Layering"></a>Layering</h3> - -<p>Each separate component of the API should live in its own layer. The functions in these APIs should never call API layers above them. In addition, some low-level APIs may be completely opaque to higher level layers. That is, access to these functions should only be provided by the API directly above them. The NSS APIs are layered, as shown in this diagram:</p> - -<p><img alt='A diagram of the different layers that collectively make up "NSS". Dependencies are only permitted between siblings and layers below them.' src="https://mdn.mozillademos.org/files/5379/layer.gif" style="height: 507px; line-height: 1.572; width: 427px;"></p> - -<p><span style="line-height: 1.572;">The boxes in the gray section, towards the center, are exported only through PKCS #11. PKCS #11 is only exported through the Wrappers. The areas which need the most work (both here and throughout the code) is: </span></p> - -<ol> - <li><span style="line-height: 1.572;">The relationship of the Certificate library with just about every other component (most noticeably PKCS #12, PKCS #7, and PKCS #11)</span></li> - <li><span style="line-height: 1.572;">Splitting Low Key and High Key components more clearly</span></li> - <li><span style="line-height: 1.572;">The Crypto wrappers (PKCS #11 Wrappers) and High Key </span></li> - <li><span style="line-height: 1.572;">PKCS #12 and PKCS #5</span></li> -</ol> - -<p><a name="Libraries"> </a></p> - -<h3 id="Libraries_2"><a name="Libraries">Libraries</a></h3> - -<p>NSS compiles into the libraries described below. The Layer indicates the main layer, seen in the previous diagram, in which the library operates. The Directory is the location of the library code in the NSS source tree. The Public Headers is a list of header files that contain types, and functions, that are publicly available to higer-level APIs.</p> - -<table style="width: 75%;"> - <tbody> - <tr> - <th>Library</th> - <th>Description</th> - <th>Layer</th> - <th>Directory</th> - <th>Public Headers</th> - </tr> - <tr> - <td>certdb</td> - <td>Provides all certificate handling functions and types. The certdb library manipulates the certificate database (add, create, delete certificates and CRLs). It also provides general certificate-handling routines (create a certificate, verify, add/check certificate extensions).</td> - <td>Low Cert</td> - <td>lib/certdb</td> - <td>cdbhdl.h, certdb.h, cert.h, certt.h</td> - </tr> - <tr> - <td>certhi</td> - <td>Provides high-level certificate-related functions, that do not access the certificate database, nor individual certificate data directly. Currently, OCSP checking settings are exported through certhi.</td> - <td>High Cert</td> - <td>lib/certhigh</td> - <td>ocsp.h, ocspt.h</td> - </tr> - <tr> - <td>crmf</td> - <td>Provides functions, and data types, to handle Certificate Management Message Format (CMMF) and Certificate Request Message Format (CRMF, see <a href="https://tools.ietf.org/html/rfc2511"> RFC 2511</a>) data. CMMF no longer exists as a proposed standard; CMMF functions have been incorporated into the proposal for <a href="https://tools.ietf.org/html/rfc2510"> Certificate Management Protocols (CMP)</a>.</td> - <td>Same Level as SSL</td> - <td>lib/crmf</td> - <td>cmmf.h, crmf.h, crmft.h, cmmft.h, crmffut.h</td> - </tr> - <tr> - <td>cryptohi</td> - <td>Provides high-level cryptographic support operations: such as signing, verifying signatures, key generation, key manipulation, hashing; and data types. This code is above the PKCS #11 layer.</td> - <td>Sign/Verify</td> - <td>lib/cryptohi</td> - <td>cryptohi.h, cryptoht.h, hasht.h, keyhi.h, keythi.h, key.h, keyt.h, sechash.h</td> - </tr> - <tr> - <td>fort</td> - <td>Provides a PKCS #11 interface, to Fortezza crypto services. Fortezza is a set of security algorithms, used by the U.S. government. There is also a SWFT library that provides a software-only implementation of a PKCS #11 Fortezza token.</td> - <td>PKCS #11</td> - <td>lib/fortcrypt</td> - <td>cryptint.h, fmutex.h, fortsock.h, fpkcs11.h, fpkcs11f.h, fpkcs11t.h, fpkmem.h, fpkstrs.h, genci.h, maci.h</td> - </tr> - <tr> - <td>freebl</td> - <td>Provides the API to actual cryptographic operations. The freebl is a wrapper API. You must supply a library that implements the cryptographic operations, such as BSAFE from RSA Security. This is also known as the "bottom layer" API, or BLAPI.</td> - <td>Within PKCS #11, wraps Crypto</td> - <td>lib/freebl</td> - <td>blapi.h, blapit.h</td> - </tr> - <tr> - <td>jar</td> - <td>Provides support for reading and writing data in Java Archive (jar) format, including zlib compression.</td> - <td>Port</td> - <td>lib/jar</td> - <td>jar-ds.h, jar.h, jarfile.h</td> - </tr> - <tr> - <td>nss</td> - <td>Provides high-level initialiazation and shutdown of security services. Specifically, this library provides NSS_Init() for establishing default certificate, key, module databases, and initializing a default random number generator. NSS_Shutdown() closes these databases, to prevent further access by an application.</td> - <td>Above High Cert, High Key</td> - <td>lib/nss</td> - <td>nss.h</td> - </tr> - <tr> - <td>pk11wrap</td> - <td>Provides access to PKCS #11 modules, through a unified interface. The pkcs11wrap library provides functions for selecting/finding PKCS #11 modules and slots. It also provides functions that invoke operations in selected modules and slots, such as key selection and generation, signing, encryption and decryption, etc.</td> - <td>Crypto Wrapper</td> - <td>lib/pk11wrap</td> - <td>pk11func.h, secmod.h, secmodt.h</td> - </tr> - <tr> - <td>pkcs12</td> - <td>Provides functions and types for encoding and decoding PKCS #12 data. PKCS #12 can be used to to encode keys, and certificates, for export or import into other applications.</td> - <td>PKCS #12</td> - <td>lib/pkcs12</td> - <td>pkcs12t.h, pkcs12.h, p12plcy.h, p12.h, p12t.h</td> - </tr> - <tr> - <td>pkcs7</td> - <td>Provides functions and types for encoding and decoding encrypted data in PKCS #7 format. For example, PKCS #7 is used to encrypt certificate data to exchange between applications, or to encrypt S/MIME message data.</td> - <td>PKCS #7</td> - <td>lib/pkcs7</td> - <td>secmime.h, secpkcs7.h, pkcs7t.h</td> - </tr> - <tr> - <td>softoken</td> - <td>Provides a software implementation of a PKCS #11 module.</td> - <td>PKCS #11: implementation</td> - <td>lib/softoken</td> - <td>keydbt.h, keylow.h, keytboth.h, keytlow.h, secpkcs5.h, pkcs11.h, pkcs11f.h, pkcs11p.h, pkcs11t.h, pkcs11u.h</td> - </tr> - <tr> - <td>ssl</td> - <td>Provides an implementation of the SSL protocol using NSS and NSPR.</td> - <td>SSL</td> - <td>lib/ssl</td> - <td>ssl.h, sslerr.h, sslproto.h, preenc.h</td> - </tr> - <tr> - <td>secutil</td> - <td>Provides utility functions and data types used by other libraries. The library supports base-64 encoding/decoding, reader-writer locks, the SECItem data type, DER encoding/decoding, error types and numbers, OID handling, and secure random number generation.</td> - <td>Utility for any Layer</td> - <td>lib/util</td> - <td>base64.h, ciferfam.h, nssb64.h, nssb64t.h, nsslocks.h, nssrwlk.h, nssrwlkt.h, portreg.h, pqgutil.h, secasn1.h, secasn1t.h, seccomon.h, secder.h, secdert.h, secdig.h, secdigt.h, secitem.h, secoid.h, secoidt.h, secport.h, secrng.h, secrngt.h, secerr.h, watcomfx.h</td> - </tr> - </tbody> -</table> - -<h2 id="Naming_Conventions"><a name="Naming">Naming Conventions</a></h2> - -<p>This section describes the rules that (ideally) should be followed for naming and identifying new files, functions, and data types.</p> - -<p><a name="CVSID"> </a></p> - -<h3 id="CVS_ID"><a name="CVSID">CVS ID</a></h3> - -<p>Each file should include a CVS ID string for identification. The preferred format is:</p> - -<pre class="notranslate"> "@(#) $RCSfile: nss-guidelines.html, - v $ $Revision: 48936 $ $Date: 2009-08-11 07:45:57 -0700 (Tue, 11 Aug 2009) $ $Name$" -</pre> - -<p>You can put the string in a comment or in a static char array. Use #ifdef DEBUG to include the array in debug builds only. The advantage of using an array is that you can use strings(1) to pull the ID tags out of a (debug) compiled library. You can even put them in header files; the header files are protected from double inclusion. The only catch is that you have to determine the name of the array.</p> - -<p>Here is an example from lib/base/baset.h:</p> - -<pre class="notranslate"> #ifdef DEBUG - static const char BASET_CVS_ID[] = "@(#) $RCSfile: nss-guidelines.html, - v $ $Revision: 48936 $ $Date: 2009-08-11 07:45:57 -0700 (Tue, 11 Aug 2009) $ $Name$"; - #endif /* DEBUG */ -</pre> - -<p>The difference, between this and Id, is that Id has some useless information (<em>every</em> file is "experimental"), and doesn't have Name. Name is the tag (if any) from which this file was pulled. If you're good with tagging your releases, and then checking out (or exporting!) from the tag for your build, this saves you from messing around with specific files revision numbers.</p> - -<h3 id="Header_Files"><a name="HeaderFiles">Header Files</a></h3> - -<p>We have a preferred naming system for include files. We had been moving towards one, for some time, but for the NSS 3.0 project we finally wrote it down.<br> - </p> - -<table style="width: 90%;"> - <tbody> - <tr> - <th></th> - <th>Data Types</th> - <th>Function Prototypes</th> - </tr> - <tr> - <td>Public</td> - <td>nss____t.h</td> - <td>nss____.h</td> - </tr> - <tr> - <td>Friend (only if required)</td> - <td>nss____tf.h</td> - <td>nss____f.h</td> - </tr> - <tr> - <td>NSS-private</td> - <td>____t.h</td> - <td>____.h</td> - </tr> - <tr> - <td>Module-private</td> - <td>____tm.h</td> - <td>____m.h</td> - </tr> - </tbody> -</table> - -<p>The files on the right include the files to their left; the files in a row include the files directly above them. Header files always include what they need; the files are protected against double inclusion (and even double opening by the compiler).</p> - -<div class="note"> -<p>Note: It's not necessary all eight files exist. Further, this is a simple ideal, and often reality is more complex.</p> -</div> - -<p>We would like to keep names to 8.3, even if we no longer support win16. This usually gives us four characters to identify a module of NSS.</p> - -<p>In short:</p> - -<ol> - <li>Header files for consumption outside NSS start with "nss."</li> - <li>Header files with types have a trailing "t", header files with prototypes don't. "extern" declarations of data also go in the prototypes files.</li> - <li>"Friend" headers are for things that we really wish weren't used by non-NSS code, but which are. Those files have a trailing "f," and their use should be deprecated.</li> - <li>"Module" headers are for things used only within a specific subset of NSS; things which would have been "static" if we had combined separate C source files together. These header files have a trailing "m."<a name="FuncsAndTypes"></a></li> -</ol> - -<h3 id="Functions_and_Types"><a name="FuncsAndTypes">Functions and Types</a></h3> - -<p>There are a number of ways of doing things in our API, as well as naming decisions for functions that can affect the usefulness of our library. If our library is self-consistent with how we accomplish these tasks, it makes it easier for the developer to learn how to use our functions. This section of the document should grow as we develop our API.</p> - -<p>First some general rules. These rules are derived from existing coding practices inside the security library, since consistency is more important than debates about what might look nice.</p> - -<ol> - <li><strong>Public functions</strong> should have the form LAYER_Body(), where LAYER is an all caps prefix for what layer the function lives in, and Body is concatenated English words, where the beginning letter of each word is capitalized (also known as <a href="https://en.wikipedia.org/wiki/Camel_case">CamelCase</a>). For Example: LAYER_CapitalizedEnglishWords() or CERT_DestroyCertificate().</li> - <li><strong>Data types</strong> and typdefs should have the Form LAYERBody, with the same definitions for LAYER as public functions, and Body in camel case English words. For example: LAYERCapitalizedEnglishWords or SECKEYPrivateKey.</li> - <li><strong>Structures</strong> should have the same name as their typedefs, with the string Str added to the end. For example LAYERCapitalizedEnglishWordsStr or SECKEYPrivateKeyStr.</li> - <li><strong>Private functions</strong> should have the form layer_Body(), where layer is the all lower case prefix for what layer the function lives in, and Body is camel case English words. Private functions include functions that may be "public" in a C sense, but are not exported out of the layer. For example: layer_CapitalizedEnglishWords() or pk11_GenerateKeyID().</li> - <li><strong>Public macros</strong> should have the form LAYER_BODY(), where LAYER is an all caps prefix for what layer the macro lives in, and BODY is English words, all in upper case, separated by underscores. For example: LAYER_UPPER_CASE_ENGLISH_WORDS() or DER_CONVERT_BIT_STRING().</li> - <li><strong>Structure members</strong> for exposed data structures should have the form capitalizedEnglishWords (the first letter uncapitalized). For example: PK11RSAGenParamsStr.<strong>keySizeInBits</strong></li> - <li>For <strong>members of enums</strong>, our current API has no standard (typedefs for enums should follow the Data types standard). There seem to be three reasonable options: - <ol> - <li>Enum members have the same standard as exposed data structure members.</li> - <li>Enum members have the same standard as data types.</li> - <li>Enum members have the same standard as public macros (minus the '()' of course).</li> - </ol> - Options 2 and 3 are the more preferred options. Option 1, currently the most common used for enums, actually creates namespace pollution.</li> - <li><strong>Callback functions</strong>, and functions used in function tables, should have a typedef used to define the complete signature of the given function. Function typedefs should have the following format: LAYERBody(), with the same definitions for LAYER as public functions, and Body is camel case English words. For example: LAYERCapitalizedEnglishWords or SECKEYPrivateKey.<a name="Opaque"></a></li> -</ol> - -<h2 id="Opaque_Data_Structures"><a name="Opaque">Opaque Data Structures</a></h2> - -<p>There are many data structures in the security library whose definition is effectively private, to the portion of the security library that defines and operates on those data structures. External code does not have access to these definitions. The goal here is to increase the opaqueness of these structures. This will allow us to modify the size, definition, and format of these data structures in future releases, without interfering with the operation of existing applications that use the security library.</p> - -<p>The first task is to ensure the data structure definition lives in a private header file, while its declaration lives in the public. The current standard in the security library is to typedef the data structure name, the easiest way to accomplish this would be to add the typedef to the public header file.</p> - -<p>For example, for the structure SECMyOpaqueData you would add:</p> - -<pre class="notranslate"> typedef struct SECMyOpaqueDataStr SECMyOpaqueData;</pre> - -<p>and add the actual structure definition to the private header file. In this same example:</p> - -<pre class="notranslate"> struct SECMyOpaqueDataStr { - unsigned long myPrivateData1; - unsigned long myPrivateData2; - char *myName; - };</pre> - -<p>the second task is to determine if individual data fields, within the data structure, are part of the API. One example may be the peerCert field, in an SSL data structure. Accessor functions, for these data elements, should be added to the API.</p> - -<p>There can be legitimate exceptions to this 'make everything opaque' rule. For example, in container structures, such as SECItem, or maybe linked list data structures. These data structures need to be examined on a case by case basis, to determine if</p> - -<ol> - <li>They are truly stable and will not change in future release</li> - <li>It is necessary for the callers of the API to know the size of these structures, as they may allocate new ones and pass them down.<a name="Arenas"></a></li> -</ol> - -<h2 id="Memory_Allocation_with_Arenas"><a name="Arenas">Memory Allocation with Arenas</a></h2> - -<p>This section discusses memory allocation using arenas. NSS code uses arenas, and this section explains some of the improvements we are making.</p> - -<p>NSS makes use of traditional memory allocation functions, wrapping NSPR's PR_Alloc in a util function called PORT_Alloc. Though NSS makes further use of an NSPR memory-allocation facility which uses 'Arenas' and 'ArenaPools'. This was added via javascript; a fast, lightweight, non-thread-safe (though 'free-threaded') implementation.</p> - -<p>Experience shows that users of the security library expect arenas to be threadsafe, so we added locking, and other useful changes.</p> - -<ul> - <li>There has always been confusion as to the difference between Arenas and ArenaPools. We will simplify down to one logical 'memory bucket' type. Consensus called this type NSSArena.</li> - <li>We have lots of code which takes an optional arena pointer, using the arena if there is one, or alternatively the heap if there isn't. Therefore, we wrap that logic into the allocators. Knowing what to then free does takes discipline not to leak memory, but it simplifies things a lot. Also, the implementation of free works (doesn't crash), no matter if from an arena, or the heap, as long as from our allocators. Combined with purify, this also helps us catch cases where things being allocated by one allocator are freed by another, which is a common Windows pitfall.</li> - <li>The security code often wants to be sure to zero memory, when it's being freed; we'll add it to the primitives to deal with.</li> -</ul> - -<p>The ARENA_THREADMARK preprocessor definition (default in debug builds), and code it encloses, will add some checking for the following situation:</p> - -<ol> - <li>Thread A marks the arena, and allocates some memory from it.</li> - <li>Thread B allocates some memory from the arena.</li> - <li>Thread A releases the arena back to the mark.</li> - <li>Thread B now finds itself with a pointer to released data.</li> - <li>Some thread -- doesn't matter which -- allocates some data from the arena; this may overlap the chunk thread B has.</li> - <li>Boom!</li> -</ol> - -<p>Threadmark code notes the thread ID, whenever an arena is marked, and disallows any allocations or marks by any other thread. (Frees are allowed.)</p> - -<p>The ARENA_DESTRUCTOR_LIST preprocessor definition, and the code it encloses, are an effort to make the following work together:</p> - -<ol> - <li>Arenas, letting you allocate stuff and then removing them all at once</li> - <li>Lazy creation of pure-memory objects from ASN.1 blobs, for example use of NSSPKIXCertificate doesn't drag all the code in for all constituent objects, unless they're actually being used</li> - <li>Our agressive pointer-tracking facility</li> -</ol> - -<p>All these are useful, but they don't combine well. Now some of the pointer-tracking pressure has eased off, we can drop its use when it becomes too difficult.</p> - -<p>Many routines are defined to take an NSSArena *arenaOpt argument. This means if an arena is specified (non-null), it is used, otherwise (null) the routine uses the heap. You can think of the heap as a default arena you can't destroy.<a name="Errors"></a></p> - -<h2 id="Error_Handling"><a name="Errors">Error Handling</a></h2> - -<p>NSS 3.0 introduces the concept of an error stack. When something goes wrong, the call stack unwinds, with routines returning an error indication. Each level which flags a problem, adds its own error number to the stack. At the bottom of the stack is the fundamental error, for example: file not found, and on top is an error precisely relating to what you are doing.</p> - -<div class="note"> -<p>Note: Error stacks are vertical, and never horizontal. If multiple things go wrong simultaneously, and you want to report them all, use another mechanism.</p> -</div> - -<p>Errors, though not integers, are done as external constants, instead of preprocessor definitions. This is so any additional error doesn't trigger the entire tree to rebuild. Likewise, the external references to errors are made in the prototypes files, with the functions which can return them. Error stacks are thread-private.</p> - -<p>The usual semantic is that public routines clear the stack first, private routines don't. Usually, every public routine has a private counterpart, and the implementation of the public routine looks like this:</p> - -<pre class="notranslate"> NSSImplement rv * - NSSType_Method - ( - NSSType *t, - NSSFoo *arg1, - NSSBar *arg2 - ) - { - nss_ClearErrorStack(); - - #ifdef DEBUG - if( !nssFoo_verifyPointer(arg1) ) return (rv *)NULL; - if( !nssBar_verifyPointer(arg2) ) return (rv *)NULL; - #endif /* DEBUG */ - - return nssType_Method(t, arg1, arg2); - } -</pre> - -<p>Aside from error cases, all documented entry points should check pointers in a debug, wherever possible. Pointers to user-supplied buffers, and templates, should be checked against NULL. Pointers to context-style functions should be checked using special debug macros. These macros only define code when DEBUG is turned on, providing a way for systems to register, deregister, and check valid pointers.</p> - -<p>SECPORT_DECL_PTR_CLASS(<em>classname</em>,<em> size</em>) - declare a class of pointers (labelled<em> classname</em>) this object file needs to check. This class is local only to this object file.<em> Size</em> is the expected number of pointers of type<em> classname</em>.</p> - -<p>SECPORT_DECL_GLOBAL_PTR_CLASS(<em>classname</em>,<em> size</em>) - same as above except <em>classname</em> can be used in other object files.</p> - -<p>SECPORT_ADD_POINTER(<em>classname</em>, <em>pointer</em>) - Add <em>pointer</em> as a valid pointer for class<em>classname</em>. This is usually called by a Create function.</p> - -<p>SECPORT_VERIFY_POINTER(<em>classname</em>,<em> pointer</em>,<em> secError</em>,<em> returnValue</em>)- Check if a given <em>pointer</em> really belongs to the requested class. If it doesn't set the error<em> secError</em> and return the value<em> returnValue</em>.</p> - -<p>SECPORT_REMOVE_POINTER(<em>classname</em>,<em> pointer</em>) - Remove a pointer from the valid list. Usually called by a destroy function.</p> - -<p>Finally, error logging should be added an documented when debug is turned on. Interfaces for these are in NSPR.</p> - -<p><a name="ThreadSafety"> </a></p> - -<h2 id="Thread_Safety"><a name="ThreadSafety">Thread Safety</a></h2> - -<p>Code developed using the NSS APIs needs to make use of thread safety features. First to examine is <strong>object creation</strong> and <strong>deletion</strong>.</p> - -<p>Object creation is usually not a problem. No other threads have access to allocated memory just created. Exceptions to this include objects which are created on the fly, or as global objects.</p> - -<p>Deletion, on the other hand, may be trickier. Threads may be referencing the object at the same time a another thread tries to delete it. The semantics depend on the way the application uses the object, also how and when the application wants to destroy it. For some data structures, this problem can be removed by protected reference counting. The object does not disappear until all users have released it.</p> - -<p>Next we examine <strong>global data</strong>, including function local static structures. Just initialized, and never to be changed global data, does not need to protection from mutexes. We should also determine if global data should be moved to a session context (see <a href="#SessionContext">session context</a> and <a href="#GlobalEffects">global effects </a>below).</p> - -<div class="note"> -<p>Note: Permanent objects, like data in files, databases, tokens, etc. should be treated as global data. Global data which is changed rarely, should be protected by reader/writer locks.</p> -</div> - -<p>Aside from global data,<strong> allocated data</strong> that gets modified needs to be examined. Data that's just been allocated, within a function, is safe to modify. No other code has access to that data pointer. Once that data pointer is made visible to the 'outside', either by returning the pointer, or attaching the pointer to an existing visible data structure, access to the data should be protected. Data structures that are read only, like SECKEYPublicKeys or PK11SymKeys, need not be protected.</p> - -<p><a name="SessionContext">Many</a> of the data structures in the security code contain some sort of <strong>session state</strong> or <strong>session context</strong>. These data structures may be accessed without data protection as long as:</p> - -<ol> - <li>This semantic is documented in the functions which use these data structures.</li> - <li>These data structures are used for single streams, and not reused.</li> -</ol> - -<p>Examples of these data in structures may include things like the PKCS #7 ContentInfo structure. Example code should be included in the documentation, to show how to safely use these data objects.</p> - -<p>A major type of global and allocated data that should be examined is various <strong>data on lists</strong>. Queued, linked, and hash table stored objects should be examined with special care. Make sure adding, removing, accessing, and destroying these objects are all safe operations.</p> - -<p>There are a number of strategies, and entire books about how to safely access data on lists. Some simple strategies and their issues:</p> - -<ul> - <li><strong>Use hash tables:</strong> Hash table lookups are usually quite fast, limiting the contention on the lock. This is best for large lists of objects. Be sure to calculate the hash value first, then only lock over the hash table value itself. Be sure to increment the reference count, on the returned object, before unlocking. Examples of hash tables can be found in security/nss/lib/certdb/pcertdb.c</li> - <li><strong>Lock over the entire search: </strong>For small linked listed, queues, or arrays, you can lock over the entire search. This strategy is best when lists are short, or even better if lists are relatively read only (they don't change very often) and using reader/writer locks.</li> - <li><strong>Copy the linked list: </strong>Instead of operating on the global list, you can copy the list. This also requires small lists.</li> - <li><strong>Lock over single element with retry:</strong> For medium sized lists, you can secure the reference to each element, complete a test, then detect if the given element has been removed from the list. In the case of removal, the search can either be either restarted, or terminated. This method is a more complicated than the other methods: requiring the calling of search code tolerant to often repeated element inspection.</li> - <li>Examples of the previous strategies can be found in <a href="https://searchfox.org/mozilla-central/source/security/nss/lib/pk11wrap/pk11slot.c">security/nss/lib/pk11wrap/pk11slot.c.</a></li> -</ul> - -<p>Where possible use the NSPR list primitives. From these you can even set up SECUtil style thread-safe lists that use some combination of the above strategies.</p> - -<p><a name="ServiceFunctions"></a>In order to be fully thread safe, your code must understand the semantics of the <strong>service functions </strong>it calls, and whether they are thread safe. For now, we should internally document which service functions we call, and how we expect them to behave in a threaded environment.</p> - -<p><a name="GlobalEffects"></a>Finally, from an API point of view, we should examine functions which have <strong>global effects</strong>. Functions like XXX_SetDefaultYYY(); should not operate on global data, particularly if they may be called multiple times, to provide different semantics for different operations. For example, the following should be avoided :</p> - -<ul> - <li>SEC_SetKey(keyForOperation);<br> - SEC_Encrypt(Data,Length);</li> -</ul> - -<p>Instead, a context handle should be created, and the SEC_SetKey() function, above, made on that handle. Fortunately most of the existing API has the correct semantics.</p> - -<p>The exception to this global effects rule may be functions which set global state for an application at initialization time.</p> - -<p><a name="Design"> </a></p> - -<h2 id="MethodsFunctions_Design"><a name="Design">Methods/Functions Design</a></h2> - -<p><a name="Design"> </a><a name="InitShutdown"> </a></p> - -<h3 id="Init_Shutdown_Functions"><a name="InitShutdown">Init, Shutdown Functions</a></h3> - -<p>If a layer has some global initialization tasks, which need to be completed before the layer can be used, that layer should supply an initialization function of the form LAYER_Init(). If an initialization function is supplied, a corresponding LAYER_Shutdown() function should also be supplied. LAYER_INIT() should increment a count of the number of times it is called, and LAYER_Shutdown() should decrement that count, and shutdown when the count reaches '0'.</p> - -<p><a name="OpenClose"> </a></p> - -<h3 id="Open_Close_Functions"><a name="OpenClose">Open, Close Functions</a></h3> - -<p>Open functions should have a corresponding close function. Open and close function are not reference counted, like init and shutdown functions.</p> - -<p><a name="CreateFuncs"> </a></p> - -<h3 id="Creation_Functions"><a name="CreateFuncs">Creation Functions</a></h3> - -<p>In general, data objects should all have functions which create them. These functions should have the form LAYER_CreateDataType[FromDataType](). For instance generating a new key would change from PK11_KeyGen() to PK11_CreateSymKey().</p> - -<p><a name="DestroyFuncs"> </a></p> - -<h3 id="Destruction_Functions"><a name="DestroyFuncs">Destruction Functions</a></h3> - -<p>In the security library we have 3 different ways of saying 'get rid of this data object': Free, Delete, and Destroy.</p> - -<p>It turns out there are several different semantics of getting rid of a data object too:</p> - -<ol> - <li>decrement the reference count, and when the object goes to '0' free/delete/destroy it</li> - <li>destroy it right now, this very instance, not matter what</li> - <li>make any permanent objects associated with this data object go away</li> - <li>a combination of 1 and 3, or 2 and 3</li> -</ol> - -<p>Unfortunately, within the security library Free, Delete, and Destroy are all used interchangeably, for all sorts of object destruction. For instance, CERT_DestroyCertificate() is type 1, PK11_DestroySlot() is type 2, and PK11_DestroyTokenObject() is type 3.</p> - -<div class="note"> -<p>Note: In non-reference counted functions, types 1 and 2 are the same.</p> -</div> - -<p>We are standardizing on the following definitions:</p> - -<p>Destroy - means #1 for reference counted objects, #2 for non reference counted objects.</p> - -<p>Delete - means #3.</p> - -<p>This has the advantage of<em> not</em> surfacing the reference countedness of a data object. If you own a pointer to an object, you must always destroy it. There is no way to destroy an object by bypassing it's reference count. Also, the signature of public destruction functions do not have the 'freeit' PRBool, since the structures being freed are opaque.</p> - -<p><a name="DupCopy"> </a></p> - -<h3 id="Dup_Copy_and_Reference_Functions"><a name="DupCopy">Dup, Copy, and Reference Functions</a></h3> - -<p>Functions that return a new reference or copy of a given object should have the form LAYER_DupDataType(). For instance, CERT_DupCertifiate() will remain the same, but PK11_ReferenceSlot() will become PK11_DupSlot(), and PK11_CloneContext() will become PK11_DupContext().</p> - -<p><a name="SearchFuncs"> </a></p> - -<h3 id="Search_Functions"><a name="SearchFuncs">Search Functions</a></h3> - -<p>There are several different kinds of searches done via the security library. The first is a search for exactly one object, meeting a given criteria. These types of searches include CERT_FindCertByDERCert(), PK11_FindAnyCertFromDERCert(), PK11_FindKeyByCert(), PK11_GetBestSlot(). These functions should all have the form LAYER_FindDataType[ByDataType]().</p> - -<p>The second kind of search, looks for all the objects that match a given criteria. These functions operate on a variety of levels. Some return allocated arrays of data, some return linked lists of data, others use callbacks to return data elements one at a time. Unfortunately, there are good reasons to maintain all these types. So here are some guidelines to make them more manageable:</p> - -<p>All callback operating search functions should be in the low level of the API, if exposed at all. Developers dealing with SSL and PKCS #7 layers should not have to see any of these functions. These functions should have the form LAYER_TraverseStorageObjectOrList().</p> - -<p>List and Array returning functions should be available at the higher layers of the API, most wrapping LAYER_Traverse() functions. They should have the form LAYER_LookupDataType{List|Array}[ByDataType]().</p> - -<ul> -</ul> - -<p><a name="Accessors"> </a></p> - -<h3 id="Accesssor_Functions"><a name="Accessors">Accesssor Functions</a></h3> - -<p>Accessor Functions should take the following formats:</p> - -<p>LAYER_DataTypeGetElement() -- Get a specific element of a data structure.<br> - LAYER_DataTypeSetElement() -- Set a specific element of a data structure.<br> - LAYER_DataTypeExtractDataType() -- Get a pointer to the second data type which was derived for elements of the first data type.</p> - -<p>Examples: PK11_SlotGetSeries(), PK11_SymKeyGetSeries(), CERT_CertificateExtractPublicKey()</p> - -<p><a name="Params"> </a></p> - -<h3 id="Parameter_ordering"><a name="Params">Parameter ordering</a></h3> - -<p>Most functions will have a 'Natural' ordering for parameters. To keep consistency we should have some minimal parameter consistency. For most functions, they can be seen as operating on a particular object. This object, that the function is operating on, should come first. For instance, in most SSL functions this is the NSPR Socket, or the SSL Socket structure: Update, final, encrypt, decrypt type functions operating on their state contexts, etc.</p> - -<p>All encrypt and decrypt functions, which return data inline, should have a consistent signature:</p> - -<pre class="notranslate">SECStatus MY_FunctionName(MyContext *<em>context</em>, - unsigned char *<em>outBuf</em>, - SECBufferLen *<em>outLen</em>, - SECBufferLen<em>maxOutLength</em>, - unsigned char *<em>inBuf</em>, - SECBufferLen<em>inLen</em>) -</pre> - -<p>Encrypt and decrypt like functions which have different properties, additional parameters, callbacks, etc., should insert their additional parameters between the context (first parameter) and the output buffer.</p> - -<p>All hashing update, MACing update, and encrypt/decrypt functions which act like filters should have a consistent signature:</p> - -<pre class="notranslate">SECStatus PK11_DigestOp(PK11Context *<em>context</em>, - unsigned char *<em>inBuf</em>, - SECBufferLen<em>inLen</em>) -</pre> - -<p>Functions like these which have different properties, for example, additional parameters, callbacks, etc., should insert their additional parameters between the context (first parameter) and the input buffer.</p> - -<p>Within your layer, multiple similar functions should have consistent parameter order.<a name="Callbacks"></a></p> - -<h3 id="Callback_Functions"><a name="Callbacks"> Callback Functions</a></h3> - -<p><a name="Callbacks"> </a> Callback functions should all contain an opaque parameter (void *) as their first argument, passed by the original caller. Callbacks which are set, like SSL callbacks, should have defaults which provide generally useful semantics.</p> diff --git a/files/ja/mozilla/projects/nss/nss_developer_tutorial/index.html b/files/ja/mozilla/projects/nss/nss_developer_tutorial/index.html deleted file mode 100644 index 125fe4bf2f..0000000000 --- a/files/ja/mozilla/projects/nss/nss_developer_tutorial/index.html +++ /dev/null @@ -1,214 +0,0 @@ ---- -title: NSS 開発者向けチュートリアル -slug: Mozilla/Projects/NSS/NSS_Developer_Tutorial -translation_of: Mozilla/Projects/NSS/NSS_Developer_Tutorial ---- -<div title="Page 1"> -<div> -<div> -<div> -<h2 id="NSS_Coding_Style">NSS Coding Style</h2> - -<h3 id="Formatting">Formatting</h3> - -<p><strong>Line length</strong> should not exceed 80 characters.</p> - -<p><strong>Indentation level</strong> is 4.</p> - -<p><strong>Tabs</strong> are used heavily in many NSS source files. Try to stay consistent when you modify existing code. The proper use of tabs has often been confusing for new NSS developers, so in <code>nss/lib/ssl</code>, we're gradually removing the use of tabs.</p> - -<p><strong>Curly braces</strong>: both of the following styles are allowed:</p> - -<pre class="brush: cpp notranslate">if (condition) { - action1(); -} else { - action2(); -}</pre> - -<p>Or:</p> - -<pre class="brush: cpp notranslate">if (condition) -{ - action1(); -} -else -{ - action2(); -}</pre> - -<p>The former style is more common. When modifying existing code, try to stay consistent. In new code, prefer the former style, as it conserves vertical space.</p> - -<p>When a block of code consists of a single statement, NSS doesn’t require curly braces, so both of these examples are fine:</p> - -<pre class="brush: cpp notranslate">if (condition) { - action(); -} -</pre> -</div> -</div> -</div> -</div> - -<div title="Page 2"> -<div> -<div> -<div> -<p>Or:</p> - -<pre class="brush: cpp notranslate">if (condition) - action();</pre> - -<p>although the use of curly braces is more common.</p> - -<p><strong>Multiple-line comments</strong> should be formatted as follows:</p> - -<pre class="brush: cpp notranslate">/* - * Line1 - * Line2 - */ </pre> - -<p>or</p> - -<pre class="brush: cpp notranslate">/* -** Line 1 -** Line 2 -*/ -</pre> - -<p>The following styles are also common, because they conserve vertical space:</p> - -<pre class="brush: cpp notranslate">/* Line1 - * Line2 - */</pre> - -<p>or</p> - -<pre class="brush: cpp notranslate">/* Line1 -** Line2 -*/</pre> - -<p>or</p> - -<pre class="brush: cpp notranslate">/* Line1 - * Line2 */</pre> - -<h3 id="Naming">Naming</h3> - -<p>Public functions are named <code>FOO_DoOneAction</code>.</p> - -<p>Global, but unexported functions, are usually named <code>foo_DoOneAction</code>.</p> - -<p>Variable, and function parameter names, always start with a lowercase letter. The most common style is <code>fooBarBaz</code>, although <code>foobarbaz</code> and <code>foo_bar_baz</code> are also used.</p> - -<h3 id="Miscellaneous">Miscellaneous</h3> - -<p><strong>goto</strong> can be used, to simplify resource deallocation, before returning from a function.</p> - -<p>A data buffer is usually represented as:</p> -</div> -</div> -</div> -</div> - -<div title="Page 3"> -<div> -<div> -<div> -<pre class="brush: cpp notranslate">unsigned char *data; -unsigned int len;</pre> - -<p>The buffer pointer is <code>unsigned char *</code>, as opposed to <code>void *</code>, so we can perform pointer arithmetic without casting. Use <code>char *</code> only if the data is interpreted as text characters.</p> - -<p>For historical reasons, the buffer length is <code>unsigned int</code>, as opposed to <code>size_t</code>. Unfortunately, this can be a source of integer overflow bugs on 64-bit systems.</p> - -<h2 id="C_Features">C Features</h2> - -<p>NSS requires C99. However, not all features from C99 are equally available.</p> - -<ul> - <li>Variables can be declared, at the point they are first used.</li> - <li>The <code>inline</code> keyword can be used.</li> - <li>Variadic macro arguments are permitted, but their use should be limited to using <code>__VA_ARGS__</code>.</li> - <li>The exact-width integer types in NSPR should be used, in preference to those declared in <code><stdint.h></code> (which will be used by NSPR in the future).</li> - <li>Universal character names are not permitted, as are wide character types (<code>char16_t</code> and <code>char32_t</code>). NSS source should only include ASCII text. Escape non-printing characters (with <code>\x</code> if there is no special escape such as \r, \n, and \t) and avoid defining string literals that use non-ASCII characters.</li> - <li>One line comments starting with <code>//</code> are permitted.</li> -</ul> - -<p>Check with nss-dev@ before using a language feature not already used, if you are uncertain. Please update this list if you do.</p> - -<p>These restrictions are different for C++ unit tests, which can use most C++11 features. The <a href="/en-US/docs/Using_CXX_in_Mozilla_code">Mozilla C++ language features guide</a>, and the <a href="https://chromium-cpp.appspot.com/">Chromium C++ usage guide</a>, list C++ features that are known to be widely available and compatible. You should limit features to those that appear in both guides. Ask on nss-dev@ if you think this is restrictive, or if you wish to prohibit a specific feature.</p> - -<h2 id="NSS_C_ABI_backward_compatibility">NSS C ABI backward compatibility</h2> - -<h3 id="Functions">Functions</h3> - -<p>Exported functions cannot be removed.</p> - -<p>The function prototype of an exported function, cannot be changed, with these exceptions:</p> - -<ul> - <li> - <p>A <code>Foo *</code> parameter can be changed to <code>const Foo *</code>. This change is always safe.</p> - </li> - <li> - <p>Sometimes an <code>int</code> parameter can be changed to <code>unsigned int</code>, or an <code>int *</code> parameter can be changed to <code>unsigned int *</code>. Whether such a change is safe needs to be reviewed on a case-by-case basis.</p> - </li> -</ul> - -<h2 id="Types">Types</h2> - -<h3 id="Structs">Structs</h3> - -<p>Members of an exported struct, cannot be reordered or removed.</p> - -<p>Under certain circumstances, it is safe to add new members to an exported struct at the end.</p> - -<p>Opaque structs give us complete freedom to change them, but require applications to call NSS functions, to allocate and free them.</p> - -<h3 id="Enums">Enums</h3> - -<p>The numeric values of public enumerators cannot be changed. To stress this fact, we often explicitly assign numeric values to enumerators, rather than relying on the values assigned by the compiler.</p> - -<h3 id="Symbol_export_lists">Symbol export lists</h3> - -<p>The <code>manifest.mn</code> file, in a directory in the NSS source tree, specifies which headers are public, and which headers are private.</p> - -<p>Public headers are in the <code>EXPORTS</code> variable.</p> - -<p>Private headers,which may be included by files in other directories, are in the <code>PRIVATE_EXPORTS</code> variable.</p> -</div> -</div> -</div> -</div> - -<div title="Page 4"> -<div> -<div> -<div> -<p>Private headers, that are only included by files in the same directory, are not listed in either variable.</p> - -<p>Only functions listed in the symbol export lists (<code>nss.def</code>, <code>ssl.def</code>, <code>smime.def</code>, etc.) are truly public functions. Unfortunately, public headers may declare private functions, for historical reasons. The symbol export lists are the authoritative source of public functions.</p> - -<h3 id="Behavioral_changes">Behavioral changes</h3> - -<p><strong>Bug/quirk compatible</strong>: Occasionally we cannot fix a bug, because applications may depend on the buggy behavior. We would need to add a new function to provide the desired behavior.</p> - -<p>Similarly, <strong>new options</strong> often need to be disabled by default.</p> - -<h2 id="NSS_reviewfeature_approval_process">NSS review/feature approval process</h2> - -<p>NSS doesn’t have 'super reviewers'. We wish to increase the number of NSS developers, who have broad understanding of NSS.</p> - -<p>One review is usually enough for the review to pass. For critical code reviews, such as a patch release of a stable branch, two reviews may be more reasonable.</p> - -<p>For new features, especially those that appear controversial, try to find a reviewer from a different company or organization than your own, to avoid any perceptions of bias.</p> - -<h2 id="Update_NSS_in_mozilla-inbound_and_mozilla-central">Update NSS in mozilla-inbound and mozilla-central</h2> - -<p>The procedure is documented at <a href="https://developer.mozilla.org/en-US/docs/Updating_NSPR_or_NSS_in_mozilla-central">https://developer.mozilla.org/en-US/docs/Updating_NSPR_or_NSS_in_mozilla-central. </a></p> - -<p>If it is necessary to apply private patches, please document them in <code><tree>/security/patches/README</code>.</p> -</div> -</div> -</div> -</div> diff --git a/files/ja/mozilla/projects/nss/nss_faq/index.html b/files/ja/mozilla/projects/nss/nss_faq/index.html deleted file mode 100644 index f1ec76a4c4..0000000000 --- a/files/ja/mozilla/projects/nss/nss_faq/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: NSS FAQ -slug: Mozilla/Projects/NSS/NSS_FAQ -tags: - - NSS -translation_of: Mozilla/Projects/NSS/FAQ ---- -<h3 id=".E4.B8.80.E8.88.AC.E7.9A.84.E3.81.AA.E8.B3.AA.E5.95.8F" name=".E4.B8.80.E8.88.AC.E7.9A.84.E3.81.AA.E8.B3.AA.E5.95.8F"> 一般的な質問 </h3> -<h3 id="Network_Security_Services_.28NSS.29_.E3.81.A8.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="Network_Security_Services_.28NSS.29_.E3.81.A8.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> Network Security Services (NSS) とは何ですか? </h3> -<p>NSS とは、セキュリティ機能が利用できるクライアント/サーバアプリケーションのクロスプラットフォーム開発をサポートするようにデザインされたライブラリ、API、ユーティリティ、そして参考文献のセットです。NSS では、Netscape や他の会社で利用されている暗号ライブラリの完全にオープンソースな実装が提供されます。NSS が利用されている製品の例としては、Netscape 6 ブラウザ、iPlanet E-Commerce Solutions のサーバ製品、Gateway Connected Touch Pad with Instant AOL などが挙げられます。 -</p><p>NSS の概要については、<a href="ja/Overview_of_NSS">NSS 概観</a> をご覧ください。オープンソース NSS プロジェクトの詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/">NSS プロジェクトのページ</a> をご覧ください。 -</p> -<h3 id="NSS_.E3.81.A7.E3.81.AF.E4.BD.95.E3.81.8C.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F_.E7.A7.81.E3.81.8C.E4.BD.BF.E3.81.A3.E3.81.A6.E3.81.84.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.A7.E5.BD.B9.E3.81.AB.E7.AB.8B.E3.81.A4.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.A7.E3.81.AF.E4.BD.95.E3.81.8C.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F_.E7.A7.81.E3.81.8C.E4.BD.BF.E3.81.A3.E3.81.A6.E3.81.84.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.A7.E5.BD.B9.E3.81.AB.E7.AB.8B.E3.81.A4.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> NSS では何ができるのですか? 私が使っているアプリケーションで役に立つのでしょうか? </h3> -<p>あなたが使っているアプリケーションに、SSL、S/MIME、その他のインターネットセキュリティスタンダードの機能を加えたい場合 Netscape Security Services (NSS) を使うことができます。NSS は SSL および TSL のすべてのバージョンをサポートしているので、すでに SSL をサポートしている多数のクライアントやサーバと通信する必要があるアプリケーションにはまさにうってつけといえます。 -</p><p>NSS に PKCS #11 インターフェースが含まれているということは、あなたのアプリケーションがサーバ上の <a href="#.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2.E3.82.A2.E3.82.AF.E3.82.BB.E3.83.A9.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F">ハードウェアアクセラレータ</a> や二因子認証 (two-factor authentication) のための <a href="#NSS_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.97.E3.81.A6.E3.82.B9.E3.83.9E.E3.83.BC.E3.83.88.E3.82.AB.E3.83.BC.E3.83.89.E3.82.92.E7.A7.81.E3.81.AE.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F">スマートカード</a> を利用できるということを意味しています。 -</p> -<h4 id="NSS_.E3.81.AF_OpenSSL_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF_OpenSSL_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は OpenSSL と比べてどうですか? </h4> -<p><a class="external" href="http://www.openssl.org/">OpenSSL</a> はサーバサイド SSL、TLS、および汎用暗号化機能ライブラリを実装するオープンソースプロジェクトですが、PKCS #11 をサポートしていません。OpenSSL は Eric A. Young と Tim J. Hudson によって開発された SSLeay ライブラリに基づいており、Apache サーバで幅広く使用されています。Apache スタイルのライセンスが付与されています。 -</p><p>NSS は <a href="ja/PKCS11_FAQ">PKCS #11</a> や S/MIME をはじめとして、サーバおよびクライアント両方のアプリケーションをサポートしています。できるだけ多くの用途を可能にするため、NSS は <a class="external" href="http://www.mozilla-japan.org/MPL/">Mozilla Public License</a> と <a class="external" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a> の両方でライセンスされています。MPL 条項下または GPL 条項下のどちらでライセンスするかを選択することができます。 -</p> -<h4 id="NSS_.E3.81.AF_SSLRef_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF_SSLRef_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は SSLRef と比べてどうですか? </h4> -<p>SSLRef は初期の SSL プロトコルのレファレンス実装で、フィックスされることのないバグがあり、TLS や新しい 56-bit エクスポート暗号スイートをサポートしていません。さらに SSLRef は PKCS#1 への Bleichenbacher 攻撃に対する修正が施されていません。 -</p><p>Netscape はもう SSLRef を管理していませんし、利用できないようにしています。SSLRef は SSL 実装の一例としてビルドされたものであり、製品としてのアプリケーションのためにビルドされたものではありません。 -</p><p>NSS は商業的な開発者によって利用されるような目的からデザインされたもので、Netscape や他の会社から出されている多くのクライアント/サーバ製品で利用されているセキュリティ機能をサポートするために利用されているのと同じアーキテクチャを使用した完全なソフトウェア開発キットを備えています。 -</p> -<h4 id=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.97.E3.83.A9.E3.83.83.E3.83.88.E3.83.95.E3.82.A9.E3.83.BC.E3.83.A0.E3.80.81.E9.96.8B.E7.99.BA.E7.92.B0.E5.A2.83.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.97.E3.83.A9.E3.83.83.E3.83.88.E3.83.95.E3.82.A9.E3.83.BC.E3.83.A0.E3.80.81.E9.96.8B.E7.99.BA.E7.92.B0.E5.A2.83.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> どのようなプラットフォーム、開発環境がサポートされているのでしょう? </h4> -<div class="warning">このセクションの内容は古くなっています</div> -<p>iPlanet E-Commerce Solutions は NSS 3.1 が 18のプラットフォームで利用できることを確認しています。その中には、AIX 4.3、HP-UX 11.0、Red Hat Linux 6.0、Solaris (2.6 以降) 、Windows NT (4.0 以降) 、そして Windows 2000 が含まれており、他の貢献者がさらに多くのプラットフォームで利用できるよう作業を進めています。NSS 3.1 API には C または C++ 開発環境が必要です。 -</p><p>最新の NSS リリースノートやプラットフォームに関する詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/#Info">プロジェクト情報</a> をご覧ください。 -</p> -<h4 id=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E6.9A.97.E5.8F.B7.E5.8C.96.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E6.9A.97.E5.8F.B7.E5.8C.96.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> どのような暗号化スタンダードがサポートされているのでしょう? </h4> -<p>NSS は SSL <a href="ja/Glossary#SSL">SSL v2/v3</a>、<a href="ja/Glossary#TLS">TLS</a>、<a href="ja/Glossary#PKCS_.235">PKCS #5</a>、<a href="ja/Glossary#PKCS_.237">PKCS #7</a>、<a href="ja/Glossary#PKCS_.2311">PKCS #11</a>、<a href="ja/Glossary#PKCS_.2312">PKCS #12</a>、<a href="ja/Glossary#S.2FMIME">S/MIME</a>、そして <a href="ja/Glossary#X.509">X.509 v3</a> 証明書をサポートしています。詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">Encryption Technologies Available in NSS 3.11</a> をご覧ください。 -</p> -<h4 id="NSS_.E3.81.A8_PSM_.E3.81.A8.E3.81.AE.E9.96.A2.E4.BF.82.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.82.82.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name="NSS_.E3.81.A8_PSM_.E3.81.A8.E3.81.AE.E9.96.A2.E4.BF.82.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.82.82.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> NSS と PSM との関係はどのようなものでしょう? </h4> -<p>Personal Security Manager (PSM) は NSS の上にビルドされており、セキュリティ機能を備えたアプリケーションのクロスプラットフォーム開発をサポートするようにデザインされたライブラリとデーモンから成っています。PSM バイナリーでは、アプリケーションのために暗号処理を行うクライアントモジュールが提供されます。Netscape Personal Security Manager は、Netscape 6 や Gateway Connected Touch Pad with Instant AOL とともに公開されており、Communicagotr 4.7x でも利用できるようになっています。 -</p><p>PSM オープンソースプロジェクトについての詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/psm/">Personal Security Manager</a> をご覧ください。 -</p> -<h4 id=".E3.82.BD.E3.83.BC.E3.82.B9.E3.81.AF.E3.81.A9.E3.81.93.E3.81.A7.E6.89.8B.E3.81.AB.E5.85.A5.E3.82.8C.E3.82.89.E3.82.8C.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name=".E3.82.BD.E3.83.BC.E3.82.B9.E3.81.AF.E3.81.A9.E3.81.93.E3.81.A7.E6.89.8B.E3.81.AB.E5.85.A5.E3.82.8C.E3.82.89.E3.82.8C.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> ソースはどこで手に入れられますか? </h4> -<div class="warning">このセクションの内容は古くなっています</div> -<p>NSS 3.1 ソースのチェックアウトおよびビルド方法については、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/buildnss_31.html">NSS 3.1 ビルドガイド</a> をご覧ください。 -</p><p>ソースコードは <a class=" link-ftp" href="ftp://ftp.mozilla.org/pub/mozilla.org/security/" rel="freelink">ftp://ftp.mozilla.org/pub/mozilla.org/security/</a> からも tar ファイルとしてダウンロードできます。 -</p> -<h4 id=".E3.81.84.E3.81.8F.E3.82.89.E3.81.97.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name=".E3.81.84.E3.81.8F.E3.82.89.E3.81.97.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> いくらしますか? </h4> -<p>NSS ソースコードおよびバイナリ (利用できるようになった暁には) は完全に無料です。ライセンス料、著作権使用料、購読料、すべて無料です。 -</p> -<h3 id=".E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91.E3.81.AE.E8.B3.AA.E5.95.8F" name=".E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91.E3.81.AE.E8.B3.AA.E5.95.8F"> 開発者向けの質問 </h3> -<h4 id=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2.E3.82.A2.E3.82.AF.E3.82.BB.E3.83.A9.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2.E3.82.A2.E3.82.AF.E3.82.BB.E3.83.A9.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> どのようなハードウェアアクセラレータがサポートされているのでしょう? </h4> -<p>NSS はハードウェアアクセラレーションのための PKCS #11 インターフェースをサポートしています。Chrysalis-IT や nCipher、Rainbow Technologies をはじめとする大手のアクセラレータベンダーもこのインターフェースをサポートしているため、NSS が利用できるアプリケーションもまた多様なハードウェアアクセラレーションをサポートできます。 -</p> -<h4 id="NSS_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.97.E3.81.A6.E3.82.B9.E3.83.9E.E3.83.BC.E3.83.88.E3.82.AB.E3.83.BC.E3.83.89.E3.82.92.E7.A7.81.E3.81.AE.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name="NSS_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.97.E3.81.A6.E3.82.B9.E3.83.9E.E3.83.BC.E3.83.88.E3.82.AB.E3.83.BC.E3.83.89.E3.82.92.E7.A7.81.E3.81.AE.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> NSS を利用してスマートカードを私のプリケーションに組み込むにはどうしたら良いでしょう? </h4> -<p>NSS は スマートカードのための PKCS #11 インターフェースをサポートしています。そのため、NSS によって提供される PKCS #11 インターフェースを利用するアプリケーションは、ActiveCard や Litronic、SafeNet、SecureID Technologies をはじめとする大手のベンダーのスマートカードをサポートします。これらのカードは PKCS #11 インターフェースをサポートしています。 -</p> -<h4 id="NSS_.E3.81.AF.E4.BB.96.E3.81.AE_Netscape_.E8.A3.BD.E5.93.81.E3.81.A8.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E4.BA.92.E6.8F.9B.E6.80.A7.E3.81.8C.E3.81.82.E3.82.8A.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF.E4.BB.96.E3.81.AE_Netscape_.E8.A3.BD.E5.93.81.E3.81.A8.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E4.BA.92.E6.8F.9B.E6.80.A7.E3.81.8C.E3.81.82.E3.82.8A.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は他の Netscape 製品とどのような互換性がありますか? </h4> -<p>NSS は他の Netscape 製品と二つの方法で緊密に統合されています。第一に、SSL や TLS を実装するために NSS を利用することで SSL および TLS をサポートする Netscape や他のベンダーからのすべての製品と SSL 通信が可能になります。第ニに、NSS を利用することで Netscape クライアントとサーバ製品、そしてあなたのアプリケーションとの間で証明書を簡単に共有することができます。 -</p> -<h4 id="NSS_.E3.81.AB.E3.81.AF_Netscape_Portable_Runtime_.28NSPR.29_.E3.81.8C.E5.BF.85.E8.A6.81.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AB.E3.81.AF_Netscape_Portable_Runtime_.28NSPR.29_.E3.81.8C.E5.BF.85.E8.A6.81.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> NSS には Netscape Portable Runtime (NSPR) が必要ですか? </h4> -<p>クロスプラットフォームサポートを提供するため、NSS は Netscape Portable Runtime (NSPR) ライブラリを移植用インターフェースおよびネットワーク I/O やスレッドモデルのための一貫したクロスプラットフォーム・セマンティクスを提供する実装として利用します。アプリケーション全体で NSPR を利用することもできますし、NSS を呼び出す部分内でのみ利用することもできます。Netscape ではマルチスレッドアプリケーションでは NSPR またはネイティブな OS スレッドモデルを採用することを強くお薦めします。(最近の NSPR リリースでは、NSPR のスレッドモデルは、OS がネイティブなスレッドを持っている限り、ネイティブスレッドモデルと互換性を持つようになっています。) あるいは、オープンソース NSPR 実装を採用して、あなたの既存のアプリケーションのスレッドモデルと互換性を持たせることもできます。NSPR に関するより詳しい情報は、<a href="ja/NSPR">Netscape Portable Runtime</a> で見ることができます。 -</p> -<h4 id=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.97.E3.83.AD.E3.83.88.E3.82.B3.E3.83.AB.E3.81.8C_HTTP_.E3.81.A7.E3.81.AA.E3.81.8F.E3.81.A6.E3.82.82_NSS_.E3.81.AF.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.97.E3.83.AD.E3.83.88.E3.82.B3.E3.83.AB.E3.81.8C_HTTP_.E3.81.A7.E3.81.AA.E3.81.8F.E3.81.A6.E3.82.82_NSS_.E3.81.AF.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> アプリケーションプロトコルが HTTP でなくても NSS は利用できるのでしょうか? </h4> -<p>はい。SSL はアプリケーションプロトコルとは独立しており、TCP/IP を利用したカスタムアプリケーションプロトコルだけではなく、共通のインターネット標準のアプリケーションプロトコル (HTTP、POP3、FTP、SMTP など) でも作動します。 -</p> -<h4 id="NSS_.E3.82.92.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.AE.E3.81.8F.E3.82.89.E3.81.84.E6.99.82.E9.96.93.E3.81.8C.E3.81.8B.E3.81.8B.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name="NSS_.E3.82.92.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.AE.E3.81.8F.E3.82.89.E3.81.84.E6.99.82.E9.96.93.E3.81.8C.E3.81.8B.E3.81.8B.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> NSS をアプリケーションに組み込むにはどのくらい時間がかかるのでしょうか? </h4> -<p>統合のための作業は関係する要素の数によります。例えば、開発者の技術やアプリケーションの複雑さ、アプリケーションで要求されるセキュリティのレベルなどです。NSS には、統合プロセスをすぐに開始できるように、SSL API についての詳細な参考文献や基本的な SSL 機能 (暗号化されたセッションの設定、サーバ認証、そしてクライアント認証) のデモ用サンプルコードが含まれています。ただし、あなたのアプリケーションが洗練された証明書管理やスマートカード、ハードウェアアクセラレーションを必要とする場合、統合作業はより広範囲に渡ることになるでしょう。 -</p> -<h4 id="NSS_.E3.83.84.E3.83.BC.E3.83.AB.E3.81.AF.E3.81.A9.E3.81.93.E3.81.8B.E3.82.89.E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.83.84.E3.83.BC.E3.83.AB.E3.81.AF.E3.81.A9.E3.81.93.E3.81.8B.E3.82.89.E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS ツールはどこからダウンロードできますか? </h4> -<p>いくつかのプラットフォーム向けのコマンドラインツールを含んだ NSS バイナリビルドは <a class=" external" href="http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases" rel="freelink">http://ftp.mozilla.org/pub/mozilla.o...y/nss/releases</a> からダウンロードできます。同時に必要になる NSPR は <a class=" external" href="http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/" rel="freelink">http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/</a> からダウンロードできます。 -</p> -<h4 id="SSL_.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6.E3.82.88.E3.82.8A.E8.A9.B3.E3.81.97.E3.81.8F.E7.9F.A5.E3.82.8B.E3.81.9F.E3.82.81.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="SSL_.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6.E3.82.88.E3.82.8A.E8.A9.B3.E3.81.97.E3.81.8F.E7.9F.A5.E3.82.8B.E3.81.9F.E3.82.81.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> SSL についてより詳しく知るためにはどうしたら良いですか? </h4> -<p>NSS は SSL に関連する広範な参考文献を用意しています。そのなかには高レベルな導入、詳細な API 参考文献、シンプルなクライアント/サーバアプリケーションのためのサンプルコード、オリジナルの SSL 3.0 仕様、デバッグ SSL アプリケーションについての情報が含まれます。詳しくは <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ssl/">SSL/TLS プロジェクトページ</a> をご覧ください。また、デバッグ SSL アプリケーションで利用されているものも含めた NSS ツールについての詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/tools/">NSS セキュリティツール</a> をご覧ください。 -</p> -<h3 id=".E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E8.B3.AA.E5.95.8F" name=".E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E8.B3.AA.E5.95.8F"> ライセンスに関する質問 </h3> -<h4 id="NSS_.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS はどのようにライセンスされていますか? </h4> -<p>NSS は <a class="external" href="http://www.mozilla-japan.org/MPL/">Mozilla Public License</a> および <a class="external" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a> でデュアルライセンスされています。詳しくは <a class="external" href="http://www.mozilla-japan.org/crypto-faq.html#1-3">Mozilla Crypto FAQ</a> をご覧ください。 -</p> -<h4 id="NSS_.E3.81.AF.E5.90.88.E8.A1.86.E5.9B.BD.E5.A4.96.E3.81.A7.E3.82.82.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF.E5.90.88.E8.A1.86.E5.9B.BD.E5.A4.96.E3.81.A7.E3.82.82.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は合衆国外でも利用できますか? </h4> -<div class="warning">このセクションの内容は古くなっています</div> -<p>利用できます。<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/buildnss_31.html">NSS 3.1 ビルドガイド</a> および <a class=" link-ftp" href="ftp://ftp.mozilla.org/pub/mozilla.org/security/" rel="freelink">ftp://ftp.mozilla.org/pub/mozilla.org/security/</a> をご覧ください。ただし、NSS ソースコードは合衆国輸出規制や他の合衆国の法律の対象となり、特定の国 (2000 年 1 月時点では、キューバ、イラン、イラク、リビア、北朝鮮、スーダン、シリアおよびタリバン支配地域のアフガニスタン) 、あるいは合衆国からの輸出物を受け取ることが禁じられている個人や組織 ((a) 産業安全保障局の Denied Parties List または Entity List、(b) 財務省外国資産管理局の Specially Designated Nationals および Blocked Persons リスト、(c) ミサイル技術、核兵器、化学兵器、生物兵器に関与する) に対しては輸出、再輸出が認められない可能性があります。 -</p><p>暗号化機能を持つソフトウェアの合衆国輸出管理についてのより詳しい情報は、<a class="external" href="http://www.mozilla-japan.org/crypto-faq.html">Mozilla Crypto FAQ</a> をご覧ください。 -</p>{{ languages( { "en": "en/NSS_FAQ" } ) }} diff --git a/files/ja/mozilla/projects/nss/nss_reference/fc_login/index.html b/files/ja/mozilla/projects/nss/nss_reference/fc_login/index.html deleted file mode 100644 index 0b7ac5c8a5..0000000000 --- a/files/ja/mozilla/projects/nss/nss_reference/fc_login/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: FC_Login -slug: Mozilla/Projects/NSS/NSS_reference/FC_Login -tags: - - NSS -translation_of: Mozilla/Projects/NSS/Reference/FC_Login ---- -<p> </p><p><br> -</p><p>{{ 英語版章題("Name") }} -</p> -<h3 id="Name" name="Name"> Name </h3> -<p><code>FC_Login()</code> - log a user into a token. -</p><p>{{ 英語版章題("Syntax") }} -</p> -<h3 id="Syntax" name="Syntax"> Syntax </h3> -<pre class="eval"><a href="ja/CK_RV">CK_RV</a> FC_Login( - <a href="ja/CK_SESSION_HANDLE">CK_SESSION_HANDLE</a> hSession, - <a href="ja/CK_USER_TYPE">CK_USER_TYPE</a> userType, - <a href="ja/CK_CHAR">CK_CHAR_PTR</a> pPin, - <a href="ja/CK_ULONG">CK_ULONG</a> ulPinLen -); -</pre> -<p>{{ 英語版章題("Parameters") }} -</p> -<h3 id="Parameters" name="Parameters"> Parameters </h3> -<p><code>FC_Login()</code> takes four parameters: -</p> -<dl><dt><code>hSession</code> -</dt><dd>{{ mediawiki.external('in') }} a session handle -</dd><dt><code>userType</code> -</dt><dd>{{ mediawiki.external('in') }} the user type (<code>CKU_SO</code> or <code>CKU_USER</code>) -</dd><dt><code>pPin</code> -</dt><dd>{{ mediawiki.external('in') }} a pointer that points to the user's PIN -</dd><dt><code>ulPinLen</code> -</dt><dd>{{ mediawiki.external('in') }} the length of the PIN -</dd></dl> -<p>{{ 英語版章題("Description") }} -</p> -<h3 id="Description" name="Description"> Description </h3> -<p><code>FC_Login()</code> logs a user into a token. -</p><p>The Security Officer (<code>CKU_SO</code>) only logs in to initialize the normal user's PIN. The SO PIN is the empty string. The NSS cryptographic module doesn't allow the SO to log in if the normal user's PIN is already initialized. -</p><p>{{ 英語版章題("Return value") }} -</p> -<h3 id="Return_value" name="Return_value"> Return value </h3> -<p><code>FC_Login()</code> returns the following return codes. -</p> -<ul><li> <code>CKR_OK</code>: the user logged in successfully. -</li><li> <code>CKR_DEVICE_ERROR</code>: the token is in the Error state. -</li><li> <code>CKR_HOST_MEMORY</code>: memory allocation failed. -</li><li> <code>CKR_PIN_INCORRECT</code>: the PIN is incorrect. -</li><li> <code>CKR_PIN_LEN_RANGE</code>: the PIN is too long (<code>ulPinLen</code> is greater than 255).<div class="note">The function should return <code>CKR_PIN_INCORRECT</code> in this case.</div> -</li><li> <code>CKR_SESSION_HANDLE_INVALID</code>: the session handle is invalid. -</li><li> <code>CKR_USER_ALREADY_LOGGED_IN</code>: the user is already logged in. -</li><li> <code>CKR_USER_TYPE_INVALID</code> -<ul><li> The token can't authenticate the user because there is no key database or the user's password isn't initialized. -</li><li> <code>userType</code> is <code>CKU_SO</code> and the normal user's PIN is already initialized. -</li></ul> -</li></ul> -<p>{{ 英語版章題("See also") }} -</p> -<h3 id="See_also" name="See_also"> See also </h3> -<ul><li> <a href="ja/NSC_Login">NSC_Login</a> -</li></ul> -<div class="noinclude"> -</div> -{{ languages( { "en": "en/FC_Login" } ) }} diff --git a/files/ja/mozilla/projects/nss/nss_reference/index.html b/files/ja/mozilla/projects/nss/nss_reference/index.html deleted file mode 100644 index b1a02b000e..0000000000 --- a/files/ja/mozilla/projects/nss/nss_reference/index.html +++ /dev/null @@ -1,200 +0,0 @@ ---- -title: NSS リファレンス -slug: Mozilla/Projects/NSS/NSS_reference -tags: - - NSS -translation_of: Mozilla/Projects/NSS/Reference ---- -<h3 id=".E6.B3.A8.E6.84.8F.E4.BA.8B.E9.A0.85" name=".E6.B3.A8.E6.84.8F.E4.BA.8B.E9.A0.85">注意事項</h3> - -<div class="note"> -<ul> - <li>We are migrating the <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/">SSL Reference</a> from www.mozilla.org. If you are inclined to help with this migration, your help would be very much appreciated.</li> -</ul> - -<ul> - <li>The proposed chapters below are based on the chapters of the SSL Reference and the categories of functions in <a class="external" href="http://developer.mozilla.org/en/docs/NSS_functions">NSS Public Functions</a>.</li> -</ul> - -<ul> - <li>Should a particular page require the use of an underscore, please see the documentation for the <a>Title Override Extension</a>.</li> -</ul> -</div> - -<h3 id="NSS_.E3.81.AE.E3.83.93.E3.83.AB.E3.83.89.E3.81.A8.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB" name="NSS_.E3.81.AE.E3.83.93.E3.83.AB.E3.83.89.E3.81.A8.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB"><a href="ja/NSS_reference/Building_and_installing_NSS">NSS のビルドとインストール</a></h3> - -<h3 id="NSS_.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E6.A6.82.E8.A6.B3" name="NSS_.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E6.A6.82.E8.A6.B3">NSS アプリケーションの概観</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslintro.html">"Overview of an SSL Application"</a> in the SSL Reference.</p> - -<h3 id="NSS_.E5.85.A5.E9.96.80" name="NSS_.E5.85.A5.E9.96.80">NSS 入門</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/gtstd.html">"Getting Started With SSL"</a> in the SSL Reference.</p> - -<h3 id=".E3.83.87.E3.83.BC.E3.82.BF.E5.9E.8B" name=".E3.83.87.E3.83.BC.E3.82.BF.E5.9E.8B">データ型</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/ssltyp.html">"Selected SSL Types and Structures"</a> in the SSL Reference.</p> - -<h3 id=".E3.83.A6.E3.83.BC.E3.83.86.E3.82.A3.E3.83.AA.E3.83.86.E3.82.A3.E9.96.A2.E6.95.B0" name=".E3.83.A6.E3.83.BC.E3.83.86.E3.82.A3.E3.83.AA.E3.83.86.E3.82.A3.E9.96.A2.E6.95.B0">ユーティリティ関数</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#utils">"Utility Functions"</a> in NSS Public Functions.</p> - -<h3 id=".E8.A8.BC.E6.98.8E.E6.9B.B8.E9.96.A2.E6.95.B0" name=".E8.A8.BC.E6.98.8E.E6.9B.B8.E9.96.A2.E6.95.B0">証明書関数</h3> - -<p>Based on <a href="ja/NSS_Certificate_Functions">Certificate Functions</a> in the SSL Reference and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#cert">"Certificate Functions"</a> in NSS Public Functions.</p> - -<ul> - <li><a href="ja/NSS_Certificate_Functions#Validating_Certificates">Validating Certificates</a> - - <ul> - <li><a href="ja/NSS_Certificate_Functions#CERT_VerifyCertNow">CERT_VerifyCertNow</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_VerifyCert">CERT_VerifyCert</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_VerifyCertName">CERT_VerifyCertName</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_CheckCertValidTimes">CERT_CheckCertValidTimes</a></li> - <li><a href="ja/NSS_Certificate_Functions#NSS_CmpCertChainWCANames">NSS_CmpCertChainWCANames</a></li> - </ul> - </li> - <li><a href="ja/NSS_Certificate_Functions#Manipulating_Certificates">Manipulating Certificates</a> - <ul> - <li><a href="ja/NSS_Certificate_Functions#CERT_DupCertificate">CERT_DupCertificate</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_DestroyCertificate">CERT_DestroyCertificate</a></li> - <li>SEC_DeletePermCertificate</li> - <li>__CERT_ClosePermCertDB</li> - </ul> - </li> - <li><a href="ja/NSS_Certificate_Functions#Getting_Certificate_Information">Getting Certificate Information</a> - <ul> - <li><a href="ja/NSS_Certificate_Functions#CERT_FindCertByName">CERT_FindCertByName</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_GetCertNicknames">CERT_GetCertNicknames</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_FreeNicknames">CERT_FreeNicknames</a></li> - <li><a href="ja/NSS_Certificate_Functions#CERT_GetDefaultCertDB">CERT_GetDefaultCertDB</a></li> - <li><a href="ja/NSS_Certificate_Functions#NSS_FindCertKEAType">NSS_FindCertKEAType</a></li> - </ul> - </li> - <li><a href="ja/NSS_Certificate_Functions#Comparing_SecItem_Objects">Comparing SecItem Objects</a> - <ul> - <li><a href="ja/NSS_Certificate_Functions#SECITEM_CompareItem">SECITEM_CompareItem</a></li> - </ul> - </li> -</ul> - -<h3 id=".E9.8D.B5.E9.96.A2.E6.95.B0" name=".E9.8D.B5.E9.96.A2.E6.95.B0">鍵関数</h3> - -<p>Based on <a href="ja/NSS_Key_Functions">Key Functions</a> in the SSL Reference.</p> - -<ul> - <li><a href="ja/NSS_Key_Functions#SECKEY_GetDefaultKeyDB">SECKEY_GetDefaultKeyDB</a></li> - <li><a href="ja/NSS_Key_Functions#SECKEY_DestroyPrivateKey">SECKEY_DestroyPrivateKey</a></li> -</ul> - -<h3 id=".E9.9B.BB.E5.AD.90.E7.BD.B2.E5.90.8D" name=".E9.9B.BB.E5.AD.90.E7.BD.B2.E5.90.8D">電子署名</h3> - -<p>This API consists of the routines used to perform signature generation and the routines used to perform signature verification.</p> - -<h3 id=".E6.9A.97.E5.8F.B7.E5.8C.96.2F.E5.BE.A9.E5.8F.B7.E5.8C.96" name=".E6.9A.97.E5.8F.B7.E5.8C.96.2F.E5.BE.A9.E5.8F.B7.E5.8C.96">暗号化/復号化</h3> - -<h3 id=".E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5" name=".E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5">ハッシュ</h3> - -<h3 id=".E9.8D.B5.E7.94.9F.E6.88.90" name=".E9.8D.B5.E7.94.9F.E6.88.90">鍵生成</h3> - -<p>Generate keys, key pairs, and domain parameters.</p> - -<h3 id=".E4.B9.B1.E6.95.B0.E7.94.9F.E6.88.90" name=".E4.B9.B1.E6.95.B0.E7.94.9F.E6.88.90">乱数生成</h3> - -<p>This API consists of the two routines used for pseudorandom number generation -- PK11_GenerateRandomOnSlot and PK11_GenerateRandom -- and the two routines used for seeding pseudorandom number generation -- PK11_SeedRandom and PK11_RandomUpdate.</p> - -<h3 id="PKCS_.2311_.E9.96.A2.E6.95.B0" name="PKCS_.2311_.E9.96.A2.E6.95.B0">PKCS #11 関数</h3> - -<p>Based on <a href="ja/NSS_PKCS11_Functions">PKCS #11 Functions</a> in the SSL Reference and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#crypto">"Crypto Functions"</a> in NSS Public Functions.</p> - -<ul> - <li><a href="ja/NSS_PKCS11_Functions#SECMOD_LoadUserModule">SECMOD_LoadUserModule</a></li> - <li><a href="ja/NSS_PKCS11_Functions#SECMOD_UnloadUserModule">SECMOD_UnloadUserModule</a></li> - <li><a href="ja/NSS_PKCS11_Functions#SECMOD_CloseUserDB">SECMOD_CloseUserDB</a></li> - <li><a href="ja/NSS_PKCS11_Functions#SECMOD_OpenUserDB">SECMOD_OpenUserDB</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_FindCertFromNickname">PK11_FindCertFromNickname</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_FindKeyByAnyCert">PK11_FindKeyByAnyCert</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_GetSlotName">PK11_GetSlotName</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_GetTokenName">PK11_GetTokenName</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_IsHW">PK11_IsHW</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_IsPresent">PK11_IsPresent</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_IsReadOnly">PK11_IsReadOnly</a></li> - <li><a href="ja/NSS_PKCS11_Functions#PK11_SetPasswordFunc">PK11_SetPasswordFunc</a></li> -</ul> - -<h3 id="SSL_.E9.96.A2.E6.95.B0" name="SSL_.E9.96.A2.E6.95.B0">SSL 関数</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslfnc.html">"SSL Functions"</a> in the SSL Reference and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#ssl">"SSL Functions"</a> and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#dep">"Deprecated SSL Functions"</a> in NSS Public Functions.</p> - -<ul> - <li>SSL_ConfigServerSessionIDCache</li> - <li>SSL_ClearSessionCache</li> -</ul> - -<h3 id="S.2FMIME" name="S.2FMIME">S/MIME</h3> - -<p>Based on the <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/smime/">S/MIME Reference</a> (which only has one written chapter) and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#smime">"S/MIME Functions"</a> in NSS Public Functions.</p> - -<h3 id="PKCS_.237_.E9.96.A2.E6.95.B0" name="PKCS_.237_.E9.96.A2.E6.95.B0">PKCS #7 関数</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#pkcs7">"PKCS #7 Functions"</a> in NSS Public Functions.</p> - -<h3 id="PKCS_.235_.E9.96.A2.E6.95.B0" name="PKCS_.235_.E9.96.A2.E6.95.B0">PKCS #5 関数</h3> - -<p>Password-based encryption</p> - -<ul> - <li>SEC_PKCS5GetIV</li> - <li>SEC_PKCS5CreateAlgorithmID</li> - <li>SEC_PKCS5GetCryptoAlgorithm</li> - <li>SEC_PKCS5GetKeyLength</li> - <li>SEC_PKCS5GetPBEAlgorithm</li> - <li>SEC_PKCS5IsAlgorithmPBEAlg</li> -</ul> - -<h3 id="PKCS_.2312_.E9.96.A2.E6.95.B0" name="PKCS_.2312_.E9.96.A2.E6.95.B0">PKCS #12 関数</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#pkcs12">"PKCS #12 Functions"</a> in NSS Public Functions. Used to exchange data such as private keys and certificates between two parties.</p> - -<ul> - <li>SEC_PKCS12CreateExportContext</li> - <li>SEC_PKCS12CreatePasswordPrivSafe</li> - <li>SEC_PKCS12CreateUnencryptedSafe</li> - <li>SEC_PKCS12AddCertAndKey</li> - <li>SEC_PKCS12AddPasswordIntegrity</li> - <li>SEC_PKCS12EnableCipher</li> - <li>SEC_PKCS12Encode</li> - <li>SEC_PKCS12DestroyExportContext</li> - <li>SEC_PKCS12DecoderStart</li> - <li>SEC_PKCS12DecoderImportBags</li> - <li>SEC_PKCS12DecoderUpdate</li> - <li>SEC_PKCS12DecoderFinish</li> - <li>SEC_PKCS12DecoderValidateBags</li> - <li>SEC_PKCS12DecoderVerify</li> - <li>SEC_PKCS12DecoderGetCerts</li> - <li>SEC_PKCS12DecoderSetTargetTokenCAs</li> - <li>SEC_PKCS12DecoderIterateInit</li> - <li>SEC_PKCS12DecoderIterateNext</li> - <li>SEC_PKCS12IsEncryptionAllowed</li> - <li>SEC_PKCS12SetPreferredCipher</li> -</ul> - -<h3 id=".E3.82.A8.E3.83.A9.E3.83.BC.E3.82.B3.E3.83.BC.E3.83.89" name=".E3.82.A8.E3.83.A9.E3.83.BC.E3.82.B3.E3.83.BC.E3.83.89">エラーコード</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslerr.html">"NSS and SSL Error Codes"</a> in the SSL Reference.</p> - -<h3 id="NSS_.E7.92.B0.E5.A2.83.E5.A4.89.E6.95.B0" name="NSS_.E7.92.B0.E5.A2.83.E5.A4.89.E6.95.B0"><a href="ja/NSS_reference/NSS_environment_variables">NSS 環境変数</a></h3> - -<h3 id="NSS_.E6.9A.97.E5.8F.B7.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB" name="NSS_.E6.9A.97.E5.8F.B7.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB"><a href="ja/NSS_reference/NSS_cryptographic_module">NSS 暗号モジュール</a></h3> - -<h3 id="NSS_.E6.8A.80.E8.A1.93.E3.83.8E.E3.83.BC.E3.83.88" name="NSS_.E6.8A.80.E8.A1.93.E3.83.8E.E3.83.BC.E3.83.88">NSS 技術ノート</h3> - -<p><a class="external" href="http://www.mozilla.org/projects/security/pki/nss/tech-notes">NSS Tech Notes</a> <a href="ja/NSS_Memory_allocation">NSS Memory allocation</a></p> - -<h3 id=".E3.83.84.E3.83.BC.E3.83.AB" name=".E3.83.84.E3.83.BC.E3.83.AB">ツール</h3> - -<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/tools/">NSS Tools</a> documentation on www.mozilla.org.</p> - -<div class="noinclude"></div> - -<p>{{ languages( { "en": "en/NSS_reference" } ) }}</p> diff --git a/files/ja/mozilla/projects/nss/nss_releases/index.html b/files/ja/mozilla/projects/nss/nss_releases/index.html deleted file mode 100644 index f275377979..0000000000 --- a/files/ja/mozilla/projects/nss/nss_releases/index.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: NSS の最新バージョンのリリースノート -slug: Mozilla/Projects/NSS/NSS_Releases -translation_of: Mozilla/Projects/NSS/NSS_Releases ---- -<p>現在の NSS の<strong>安定版</strong>リリースは 3.57 で、<strong>2020年9月18日</strong>にリリースされました。(NSS 3.57 のリリースノート)</p> - -<p>The current <strong>ESR</strong> releases of NSS are 3.44.4 (<a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.4_release_notes">NSS 3.44.4 release notes</a>), intended for Firefox ESR 68, which was released on <strong>19 May 2020</strong>, and 3.53.1 <a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.53.1_release_notes">(NSS 3.53.1 release notes)</a>, intended for Firefox ESR 78, which was released on <strong>16 June 2020</strong>.</p> - -<h2 id="Past_releases">Past releases</h2> - -<ul> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.57_release_notes">NSS 3.57 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.56_release_notes">NSS 3.56 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.55_release_notes">NSS 3.55 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.54_release_notes">NSS 3.54 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.53.1_release_notes">NSS 3.53.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.53_release_notes">NSS 3.53 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.52.1_release_notes">NSS 3.52.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.4_release_notes">NSS 3.44.4 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.52_release_notes">NSS 3.52 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.51.1_release_notes">NSS 3.51.1 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.51_release_notes">NSS 3.51 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.50_release_notes">NSS 3.50 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.49.2_release_notes">NSS 3.49.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.49.1_release_notes">NSS 3.49.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.49_release_notes">NSS 3.49 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.48.1_release_notes">NSS 3.48.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.48_release_notes">NSS 3.48 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.47.1_release_notes">NSS 3.47.1 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.47_release_notes">NSS 3.47 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.46.1_release_notes">NSS 3.46.1 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.46_release_notes">NSS 3.46 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.45_release_notes">NSS 3.45 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.3_release_notes">NSS 3.44.3 release notes</a></li> - <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.2_release_notes">NSS 3.44.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.1_release_notes">NSS 3.44.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44_release_notes">NSS 3.44 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.43_release_notes">NSS 3.43 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.42.1_release_notes">NSS 3.42.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.42_release_notes">NSS 3.42 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.8_release_notes">NSS 3.36.8 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.7_release_notes">NSS 3.36.7 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.41_release_notes">NSS 3.41 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.40.1_release_notes">NSS 3.40.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.6_release_notes">NSS 3.36.6 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.40_release_notes">NSS 3.40 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.39_release_notes">NSS 3.39 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.38_release_notes">NSS 3.38 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.37.3_release_notes">NSS 3.37.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.37.1_release_notes">NSS 3.37.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.37_release_notes">NSS 3.37 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.5_release_notes">NSS 3.36.5 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.4_release_notes">NSS 3.36.4 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.2_release_notes">NSS 3.36.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.1_release_notes">NSS 3.36.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36_release_notes">NSS 3.36 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.35_release_notes">NSS 3.35 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.34.1_release_notes">NSS 3.34.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.34_release_notes">NSS 3.34 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.33_release_notes">NSS 3.33 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.32_release_notes">NSS 3.32 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.31.1_release_notes">NSS 3.31.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.31_release_notes">NSS 3.31 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.30.2_release_notes">NSS 3.30.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.30.1_release_notes">NSS 3.30.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.30_release_notes">NSS 3.30 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.5_release_notes">NSS 3.29.5 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.3_release_notes">NSS 3.29.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.2_release_notes">NSS 3.29.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.1_release_notes">NSS 3.29.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29_release_notes">NSS 3.29 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.5_release_notes">NSS 3.28.5 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.4_release_notes">NSS 3.28.4 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.3_release_notes">NSS 3.28.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.2_release_notes">NSS 3.28.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.1_release_notes">NSS 3.28.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28_release_notes">NSS 3.28 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.27.2_release_notes">NSS 3.27.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.27.1_release_notes">NSS 3.27.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.27_release_notes">NSS 3.27 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.26.2_release_notes">NSS 3.26.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.26_release_notes">NSS 3.26 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.25.1_release_notes">NSS 3.25.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.25_release_notes">NSS 3.25 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.24_release_notes">NSS 3.24 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.23_release_notes">NSS 3.23 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.22.2_release_notes">NSS 3.22.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.22.1_release_notes">NSS 3.22.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.22_release_notes">NSS 3.22 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.4_release_notes">NSS 3.21.4 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.3_release_notes">NSS 3.21.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.2_release_notes">NSS 3.21.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.1_release_notes">NSS 3.21.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21_release_notes">NSS 3.21 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.20.1_release_notes">NSS 3.20.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.20_release_notes">NSS 3.20 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19.3_release_notes">NSS 3.19.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19.2_release_notes">NSS 3.19.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19.1_release_notes">NSS 3.19.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19_release_notes">NSS 3.19 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.18.1_release_notes">NSS 3.18.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.18_release_notes">NSS 3.18 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.4_release_notes">NSS 3.17.4 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.3_release_notes">NSS 3.17.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.2_release_notes">NSS 3.17.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.1_release_notes">NSS 3.17.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17_release_notes">NSS 3.17 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.6_release_notes">NSS 3.16.6 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.5_release_notes">NSS 3.16.5 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.4_release_notes">NSS 3.16.4 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.3_release_notes">NSS 3.16.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2.3_release_notes">NSS 3.16.2.3 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2.2_release_notes">NSS 3.16.2.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2.1_release_notes">NSS 3.16.2.1 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2_release_notes">NSS 3.16.2 release notes</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.1_release_notes">NSS 3.16.1 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.16_release_notes">NSS 3.16 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15.5_release_notes">NSS 3.15.5 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15.4_release_notes">NSS 3.15.4 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15.3.1_release_notes">NSS 3.15.3.1 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15.3_release_notes">NSS 3.15.3 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15.2_release_notes">NSS 3.15.2 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15.1_release_notes">NSS 3.15.1 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.15_release_notes" title="NSS 3.15 release notes">NSS 3.15 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.14.5_release_notes" title="NSS 3.14.5 release notes">NSS 3.14.5 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.14.4_release_notes" title="NSS 3.14.4 release notes">NSS 3.14.4 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.14.3_release_notes" title="NSS 3.14.3 release notes">NSS 3.14.3 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.14.2_release_notes" title="NSS 3.14.2 release notes">NSS 3.14.2 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.14.1_release_notes" title="NSS 3.14.1 release notes">NSS 3.14.1 release notes</a></li> - <li><a href="/en-US/docs/NSS/NSS_3.14_release_notes" title="NSS 3.14 release notes">NSS 3.14 release notes</a></li> - <li><a href="/en-US/docs/NSS/release_notes.html">Older release notes</a></li> -</ul> - -<h2 id="Future_releases">Future releases</h2> - -<p>Release planning is done on the Mozilla wiki: {{interwiki("wikimo", "NSS:Release Versions")}}.</p> diff --git a/files/ja/mozilla/projects/nss/nss_sample_code/index.html b/files/ja/mozilla/projects/nss/nss_sample_code/index.html deleted file mode 100644 index 4a70911b42..0000000000 --- a/files/ja/mozilla/projects/nss/nss_sample_code/index.html +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: NSS サンプルコード -slug: Mozilla/Projects/NSS/NSS_Sample_Code -tags: - - Example -translation_of: Mozilla/Projects/NSS/NSS_Sample_Code ---- -<h2 id="NSS_Sample_Code">NSS Sample Code</h2> - -<p>ここにあるサンプルコード集では、暗号処理、証明書の取り扱い、SSL などに NSS がどのように利用できるかを示しています。また、暗号化の応用におけるベストプラクティスをいくつか示しています。</p> - -<p>差し替え中の古いサンプル</p> - -<ol> - <li><a href="nss_sample_code/NSS_Sample_Code_Sample1">Sample Code 1: Key Generation and Transport Between Servers</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample2">Sample Code 2: Symmetric Encryption</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample3">Sample Code 3: Hashing, MAC</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample4">Sample Code 4: PKI Encryption</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample5">Sample Code 5: PKI Encryption with a raw public & private key in DER format</a></li> - <li><a href="nss_sample_code/NSS_Sample_Code_sample6">Sample Code 6: Persistent Symmetric Keys in NSS database</a></li> -</ol> - -<p><br> - リプレースが必要な非常に古い事例です。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">https://bugzilla.mozilla.org/show_bug.cgi?id=490238</a> を参照してください。</p> - -<p>新しいサンプルをダウンロードすることができます。</p> - -<pre class="bz_comment_text notranslate" id="comment_text_42">hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH -</pre> - -<p>新しいサンプル: <a href="/ja/docs/Mozilla/Projects/NSS/New_NSS_Samples">https://developer.mozilla.org/ja/docs/Mozilla/Projects/NSS/New_NSS_Samples</a></p> diff --git a/files/ja/mozilla/projects/nss/nss_sources_building_testing/index.html b/files/ja/mozilla/projects/nss/nss_sources_building_testing/index.html deleted file mode 100644 index eb799cad8a..0000000000 --- a/files/ja/mozilla/projects/nss/nss_sources_building_testing/index.html +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: NSS ソースのビルドのテスト -slug: Mozilla/Projects/NSS/NSS_Sources_Building_Testing -translation_of: Mozilla/Projects/NSS/NSS_Sources_Building_Testing ---- -<p><a href="/ja/docs/Mozilla/Projects/NSS">Network Security Services (NSS)</a> のソースコードの取得、構築方法、テストスイートの実行方法。</p> - -<h2 id="ソースコードの取得と簡単な概要">ソースコードの取得と簡単な概要</h2> - -<p>最も簡単な方法は、<a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/">Mozilla のダウンロードサーバ</a>から NSS リリースのアーカイブをダウンロードすることです。バージョン番号が一番高いディレクトリを探してください。NSS はベースライブラリ <a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a> に依存しているので、NSS と NSPR の両方を組み合わせたアーカイブをダウンロードする必要があります。</p> - -<p>If you are a software developer and intend to contribute enhancements to NSS, you should obtain the latest development snapshot of NSS using mercurial/hg (a <a href="https://www.mercurial-scm.org/" title="https://www.mercurial-scm.org/">distributed source control management tool</a>). In order to get started, anonymous read-only access is sufficient. Create a new directory on your computer that you will use as your local work area, and run the following commands.</p> - -<pre class="language-html notranslate" style='margin-top: 0.5em; margin-bottom: 0.5em; padding: 1em; background-color: rgb(15, 12, 10); font-size: 14px; line-height: 21px; font-family: Consolas, Monaco, "Andale Mono", monospace; color: rgb(255, 255, 255); text-shadow: rgb(0, 0, 0) 0px 1px; direction: ltr;'>hg clone https://hg.mozilla.org/projects/nspr -hg clone https://hg.mozilla.org/projects/nss</pre> - -<p>After the above commands complete, you should have two local directories, named nspr and nss, next to each other.</p> - -<p>(Historical information: NSPR and NSS source code have recently been re-organized into a new directory structure. In past versions, all files were located in a directory hierarchy that started with the "mozilla" prefix. The NSPR base library was located in directory mozilla/nsprpub. The subdirectories dbm, security/dbm, security/coreconf, security/nss were part of the NSS sources.)</p> - -<p>The nss directory contains the following important subdirectories:</p> - -<ul> - <li>nss/coreconf<br> - Contains knowledge for cross platform building.</li> - <li>nss/lib<br> - Contains all the library code that is used to create the runtime libraries used by applications.</li> - <li>nss/cmd<br> - Contains a set of various tool programs that are built using NSS. Several tools are general purpose and can be used to inspect and manipulate the storage files that software using the NSS library creates and modifies. Other tools are only used for testing purposes. However, all these tools are good examples of how to write software that makes use of the NSS library.</li> - <li>nss/test<br> - This directory contains the NSS test suite, which is routinely used to ensure that changes to NSS don't introduce regressions.</li> - <li>nss/gtests<br> - Code for NSS unit tests running in <a href="https://github.com/abseil/googletest">Googletest</a>.</li> -</ul> - -<p>It is important to mention the difference between internal NSS code and exported interfaces. Software that would like to use the NSS library must use only the exported interfaces. These can be found by looking at the files with the .def file extension, inside the nss/lib directory hierarchy. Any C function that isn't contained in .def files is strictly for private use within NSS, and applications and test tools are not allowed to call them. For any functions that are listed in the .def files, NSS promises that the binary function interface (ABI) will remain stable.</p> - -<h2 id="Building_NSS">Building NSS</h2> - -<p>NSS is built using <a class="external external-icon" href="https://gyp.gsrc.io/" rel="noopener">gyp</a> and <a class="external external-icon" href="https://ninja-build.org/" rel="noopener">ninja</a>, or with <a class="external external-icon" href="https://www.gnu.org/software/make/" rel="noopener">make</a> on systems that don't have those tools. The <a href="/en-US/docs/Mozilla/Projects/NSS/Building">complete build instructions</a> include more information.</p> - -<p>Once the build is done, you can find the build output below directory dist/?, where ? will be a name dynamically derived from your system's architecture. Exported header files for NSS applications can be found in directory "include", library files in directory "lib", and the tools in directory "bin". In order to run the tools, you should set your system environment to use the libraries of your build from the "lib" directory, e.g., using the LD_LIBRARY_PATH or DYLD_LIBRARY_PATH environment variable.</p> - -<h2 id="Running_the_NSS_test_suite">Running the NSS test suite</h2> - -<p>This is an important part of development work, in order to ensure your changes don't introduce regressions. When adding new features to NSS, tests for the new feature should be added as well.</p> - -<p>You must build NSS prior to running the tests. After the build on your computer has succeeded, before you can run the tests on your computer, it might be necessary to set additional environment variables. The NSS tests will start TCP/IP server tools on your computer, and in order for that to work, the NSS test suite needs to know which hostname can be used by client tools to connect to the server tools. On machines that are configured with a hostname that has been registered in your network's DNS, this should work automatically. In other environments (for example in home networks), you could set the HOST and DOMSUF (for domain suffix) environment variables to tell the NSS suite which hostname to use. As a test, it must be possible to successfully use the command "ping $HOST.$DOMSUF" on your computer (ping reports receiving replies). On many computers the variables HOST=localhost DOMSUF=localdomain works. In case you built NSS in 64 bits, you need to set the USE_64 environment variable to 1 to run the tests. If you get name resolution errors, try to disable IPv6 on the loopback device.</p> - -<p>After you have set the required environment variables, use "cd nss/tests" and start the tests using "./all.sh". The tests will take a while to complete; on a slow computer it could take a couple of hours.</p> - -<p>Once the test suite has completed, a summary will be printed that shows the number of failures. You can find the test suite results in directory nss/../tests_results (i.e. the results directory ends up next to the nss directory, not within it). Each test suite execution will create a new subdirectory; you should clean them up from time to time. Inside the directory you'll find text file output.log, which contains a detailed report of all tests being executed. In order to learn about the details of test failures, search the file for the uppercase test FAILED.</p> - -<p>If desired, it's possible to run only subsets of the tests. Read the contents of file all.sh to learn how that works.</p> diff --git a/files/ja/mozilla/projects/nss/nss_tech_notes/index.html b/files/ja/mozilla/projects/nss/nss_tech_notes/index.html deleted file mode 100644 index c474d6824b..0000000000 --- a/files/ja/mozilla/projects/nss/nss_tech_notes/index.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: NSS 技術ノート -slug: Mozilla/Projects/NSS/NSS_Tech_Notes -translation_of: Mozilla/Projects/NSS/NSS_Tech_Notes ---- -<h2 id="NSS_技術ノート">NSS 技術ノート</h2> - -<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p> - -<p>NSS technical notes provide latest information about new NSS features and supplementary documentation for advanced topics in programming with NSS.</p> - -<ol> - <li>TN1: <a href="nss_tech_notes/nss_tech_note1">How to use the NSS ASN.1 and QuickDER decoders</a>.</li> - <li>TN2: <a href="nss_tech_notes/nss_tech_note2">Using the PKCS #11 Module Logger</a>.</li> - <li>TN3: <a href="nss_tech_notes/nss_tech_note3">All About Certificate Extensions</a>.</li> - <li>TN4: <a href="nss_tech_notes/nss_tech_note4">Pulling certificate extension information out of SSL certificates</a>.</li> - <li>TN5: <a href="nss_tech_notes/nss_tech_note5">Using NSS to perform miscellaneous cryptographic operations</a>.</li> - <li>TN6: <a href="nss_tech_notes/nss_tech_note6">NSS .chk Files for the FIPS Mode</a>.</li> - <li>TN7: <a href="nss_tech_notes/nss_tech_note7">RSA Signing and Encryption with NSS</a>.</li> - <li>TN8: <a href="nss_tech_notes/nss_tech_note8">Background Information on libSSL's Cache Functions and SIDs</a>.</li> -</ol> diff --git a/files/ja/mozilla/projects/nss/nss_third-party_code/index.html b/files/ja/mozilla/projects/nss/nss_third-party_code/index.html deleted file mode 100644 index dbf7262a06..0000000000 --- a/files/ja/mozilla/projects/nss/nss_third-party_code/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: NSS サードパーティコード -slug: Mozilla/Projects/NSS/NSS_Third-Party_Code -tags: - - NSS -translation_of: Mozilla/Projects/NSS/NSS_Third-Party_Code ---- -<p>これは、NSS のリポジトリに含まれるサードパーティ製のコードのリストで、2つのリストに分かれています。NSS ライブラリにコンパイルされるコードと、テストにのみ使用されるコードです。</p> - -<p>NSS ライブラリにコンパイルできるコードがすべて<em>そう</em>とは限らないことに注意してください。多くの場合、これはビルド時に様々なトレードオフを考慮して設定することができます。</p> - -<h2 id="コンパイル">コンパイル</h2> - -<ul> - <li>sqlite [/lib/sqlite]</li> - <li>BerkleyDB [/lib/dbm]</li> - <li>zlib [/lib/zlib]</li> - <li>libjar [/lib/jar]</li> - <li>Fiat-Crypto, Ring [lib/freebl/ecl]</li> -</ul> - -<h2 id="テストに使用">テストに使用</h2> - -<ul> - <li>GTest [/gtests]</li> -</ul> - -<h3 id="特定のテストツールでダウンロード">特定のテストツールでダウンロード</h3> - -<ul> - <li>TLSFuzzer [/tests/tlsfuzzer]</li> - <li>BoGo tests [/tests/bogo]</li> - <li>BoringSSL, OpenSSL [/tests/interop]</li> -</ul> diff --git a/files/ja/mozilla/projects/nss/overview_of_nss/index.html b/files/ja/mozilla/projects/nss/overview_of_nss/index.html deleted file mode 100644 index 455e20b6cb..0000000000 --- a/files/ja/mozilla/projects/nss/overview_of_nss/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: NSS の概要 -slug: Mozilla/Projects/NSS/Overview_of_NSS -tags: - - NSS -translation_of: Mozilla/Projects/NSS/Overview ---- -<h2 id="Open_Source_Crypto_Libraries">Open Source Crypto Libraries</h2> - -<h3 id=".E5.AE.9F.E7.B8.BE.E3.81.AE.E3.81.82.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.BB.E3.82.BB.E3.82.AD.E3.83.A5.E3.83.AA.E3.83.86.E3.82.A3.E3.83.BB.E3.82.A2.E3.83.BC.E3.82.AD.E3.83.86.E3.82.AF.E3.83.81.E3.83.A3" name=".E5.AE.9F.E7.B8.BE.E3.81.AE.E3.81.82.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.BB.E3.82.BB.E3.82.AD.E3.83.A5.E3.83.AA.E3.83.86.E3.82.A3.E3.83.BB.E3.82.A2.E3.83.BC.E3.82.AD.E3.83.86.E3.82.AF.E3.83.81.E3.83.A3">実績のあるアプリケーション・セキュリティ・アーキテクチャ</h3> - -<p>もし、SSL、S/MIMEやその他のインターネットセキュリティ標準を貴方のアプリケーションでサポートしたければ、すべてのセキュリティ機能を実装した Network Security Services (NSS) を使うことができます。NSSは、暗号ライブラリの完全なオープンソース実装を提供します。NSSは、AOL、Red Hat、Sunやその他の企業の下記を含む様々な製品で使われています。:</p> - -<ul> - <li><a class="external" href="http://www.mozilla-japan.org/products/">Mozilla クライアント製品</a>, <a class="external" href="http://www.mozilla-japan.org/products/mozilla1.x/">Mozilla Suite</a>, <a class="external" href="http://www.mozilla.com/firefox/">Firefox</a>, と <a class="external" href="http://www.mozilla.com/thunderbird/">Thunderbird</a>を含む。</li> - <li><a class="external" href="http://browser.netscape.com/">Netscape ブラウザ</a></li> - <li><a class="external" href="http://communicator.aol.com/">AOL Communicator</a> と <a class="external" href="http://www.aim.com/">AOL Instant Messenger</a> (AIM)</li> - <li><a class="external" href="http://www.gnome.org/projects/evolution/">Evolution</a>, <a class="external" href="http://gaim.sourceforge.net/">Gaim</a>, や <a class="external" href="http://www.openoffice.org/">OpenOffice.org</a> 2.0 などのオープンソースクライアントアプリケーション。</li> - <li><a class="external" href="http://www.redhat.com/solutions/">Red Hat</a> のサーバ製品: <a class="external" href="http://www.redhat.com/software/rha/directory/">Red Hat Directory Server</a>, <a class="external" href="http://www.redhat.com/software/rha/certificate/">Red Hat Certificate System</a>, と Apache web server の <a class="external" href="http://directory.fedora.redhat.com/wiki/Mod_nss">mod_nss</a> SSL module.</li> - <li><a class="external" href="http://www.sun.com/software/javaenterprisesystem/index.xml">Sun Java Enterprise System</a>のサーバ製品、Sun Java System Web Server, Sun Java System Directory Server, Sun Java System Portal Server, Sun Java System Messaging Server, と Sun Java System Application Server.</li> -</ul> - -<p>NSS には、プラットフォームでのパフォーマンスを最適化するために、開発者や OEM がアセンブラコードといったパッチを配布できるようにするフレームワークが含まれています。NSS 3.x は 18 のプラットフォームでその性能を発揮しています。</p> - -<p>NSSのより詳しい情報については、 <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/index.html">NSS Project Page</a> と <a href="ja/NSS_FAQ">NSS FAQ</a> を参照してください。</p> - -<p>JavaインターフェースからNSSのソースコードは Mozilla CVSツリーにあります。詳細は、 <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/jss/">Network Security Services for Java</a>を参照してください。</p> - -<p>NSS は Netscape Portable Runtime(<a href="ja/NSPR">NSPR</a>)を使用します。この NSPR は、プラットフォームに依存しないオープンソースAPIであり、システムファンクションはクロスプラットフォーム開発を可能にするように設計されています。NSS と同様、NSPR はさまざまな製品で厳しいテストを経てきました。より詳しい情報は、<a class="external" href="http://www.mozilla-japan.org/projects/nspr/">NSPR プロジェクトページ</a>を参照してください。</p> - -<h3 id=".E7.9B.B8.E4.BA.92.E9.81.8B.E7.94.A8.E6.80.A7.E3.81.A8.E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89" name=".E7.9B.B8.E4.BA.92.E9.81.8B.E7.94.A8.E6.80.A7.E3.81.A8.E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89">相互運用性とオープンスタンダード</h3> - -<p>NSSを使って、あなたのアプリケーションで次の一連のセキュリティ標準をサポートすることができます:</p> - -<ul> - <li><a href="ja/Glossary#SSL">SSL v2 and v3</a>. Secure Sockets Layer (SSL) プロトコルは、クライアントとサーバの相互認証、および、認証され暗号化された接続の確立を可能にします。</li> - <li><a class="external" href="http://www.ietf.org/rfc/rfc2246.txt">TLS v1 (</a><a class="external" href="http://tools.ietf.org/html/rfc2246" title="http://tools.ietf.org/html/rfc2246">RFC 2246</a>). IETFによる Transport Layer Security (TLS) プロトコルは、SSLの実装と後方互換性を持ちながら、最終的にはSSLに取って代わります。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1/index.html">PKCS #1</a>. RSAアルゴリズムに基づいた公開鍵暗号法を統括する実装のRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-3/index.html">PKCS #3</a>. Diffie-Hellman 鍵共有を統括する実装のRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-5/index.html">PKCS #5</a>. ストレージの秘密鍵を暗号化する場合などに使用するパスワードに基づく暗号化を管理するRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-7/index.html">PKCS #7</a>. 電子署名や電子封筒などのデータ暗号化アプリケーションを管理するRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-8/index.html">PKCS #8</a>. 秘密鍵のストレージと暗号化を管理するRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-9/index.html">PKCS #9</a>. PKCS #7、PKCS #8およびPKCS#10と共に使われ、それらのタイプを含む選択された属性タイプ管理するRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-10/index.html">PKCS #10</a>. 証明書の要求構文を管理するRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-11/index.html">PKCS #11</a>. 暗号トークン(ハードウェアアクセラレータやスマートカード、ICカード)とのコミュニケーションを管理し、特定のアルゴリズムと実装から独立したアプリケーションを可能にするRSA標準。</li> - <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-12/index.html">PKCS #12</a>. 秘密鍵、証明書、および他の秘密資料の格納または輸送に使われるフォーマットを管理するRSA標準。</li> - <li><a href="ja/Glossary#S.2FMIME">S/MIME (RFC 2311 and RFC 2633)</a>. 署名および暗号化されたMIMEデータの送受信のための一貫した方法を提供する、(一般的なインターネットMIME標準に基づいた)IETFメッセージ仕様。</li> - <li><a href="ja/Glossary#X.509">X.509 v3</a>. 公開鍵暗号法の中で認証のために使用される証明書のフォーマットを管理するITUの標準。</li> - <li><a href="ja/Glossary#OCSP">OCSP (RFC 2560)</a>. オンライン証明書ステータスプロトコル(Online Certificate Status Protocol, OCSP)は、証明書有効性のリアルタイムな確認方法を管理します。</li> - <li><a class="external" href="http://www.ietf.org/rfc/rfc3280.txt">PKIX Certificate and CRL Profile (</a><a class="external" href="http://tools.ietf.org/html/rfc3280" title="http://tools.ietf.org/html/rfc3280">RFC 3280</a>). (PKIXで知られている)IETFの公開鍵基盤(X.509)ワーキンググループによって開発中のインターネット用の公開鍵暗号基盤用の4部の標準の第1の部分。</li> - <li>RSA, DSA, ECDSA, Diffie-Hellman, EC Diffie-Hellman, <a class="external" href="http://csrc.nist.gov/encryption/aes/">AES</a>, Triple DES, DES, RC2, RC4, SHA-1, SHA-256, SHA-384, SHA-512, MD2, MD5, HMAC: 公開鍵および共通鍵暗号で使われる一般的な暗号化アルゴリズム。</li> - <li>FIPS 186-2 疑似乱数生成器。</li> -</ul> - -<p>完全な詳細に関しては、 <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">暗号化技術</a>を参照してください。</p> - -<h3 id="FIPS_140_.E5.A6.A5.E5.BD.93.E6.80.A7.E7.A2.BA.E8.AA.8D_.E3.81.A8_NISCC_.E3.83.86.E3.82.B9.E3.83.88" name="FIPS_140_.E5.A6.A5.E5.BD.93.E6.80.A7.E7.A2.BA.E8.AA.8D_.E3.81.A8_NISCC_.E3.83.86.E3.82.B9.E3.83.88">FIPS 140 妥当性確認 と NISCC テスト</h3> - -<p>NSS ソフトウェア暗号モジュールは、3度に渡り FIPS 140適合試験のセキュリティレベル1と2に合格しています。 詳細については <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/fips/">NSS FIPS</a> ページ (<a class="external" href="http://wiki.mozilla.org/FIPS_Validation">Or this one</a>)を参照してください。</p> - -<p>NSS ライブラリは NISCC の<a class="external" href="http://www.niscc.gov.uk/niscc/docs/re-20030930-00749.pdf?lang=en">TLS/SSL</a> および <a class="external" href="http://www.uniras.gov.uk/niscc/docs/re-20031104-00752.pdf?lang=en">S/MIME</a> のテストスイート(160万の不正入力によるテストケース)を通過しています。</p> - -<h3 id="Complete_Software_Development_Kit" name="Complete_Software_Development_Kit">Complete Software Development Kit</h3> - -<p>ライブラリとAPIに加えて、NSSは、デバッグ、診断、認証および鍵管理、暗号化モジュール管理および他の開発タスクのために必要な<a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/tools/">セキュリティ・ツール</a>を提供します。</p> - -<p>NSSには、大規模で増大する <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/#Documentation">資料</a>が付いています。資料には、入門教材、 API リファレンス、コマンドラインツールの man ページ、および <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/sample-code/">サンプルコード</a>が含まれています。</p> - -<p>NSSは、ソースと共有(ダイナミック)ライブラリが利用できます。すべての NSSリリースには以前のバージョンとの後方互換性があり、NSSユーザはそれらのアプリケーションを再コンパイルまたは再リンクすることなく新しいNSS共有ライブラリにアップグレードすることができます。</p> - -<h3 id=".E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.BD.E3.83.BC.E3.82.B9.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.A8.E9.85.8D.E5.B8.83" name=".E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.BD.E3.83.BC.E3.82.B9.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.A8.E9.85.8D.E5.B8.83">オープンソースライセンスと配布</h3> - -<p>NSS は、<a class="external" href="http://www.mozilla.org/MPL/">Mozilla Public License</a>, <a class="external" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>, <a class="external" href="http://www.gnu.org/copyleft/lesser.html">GNU Lesser General Public License</a>の3種類でライセンスされています。 最新のソースコードは、 <a class="external" href="http://www.mozilla.org" rel="freelink">http://www.mozilla.org</a> とミラーサイトから、世界中で無料で取得できます。</p> - -<p>{{ languages( { "en": "en/Overview_of_NSS" } ) }}</p> diff --git a/files/ja/mozilla/projects/nss/pkcs11/index.html b/files/ja/mozilla/projects/nss/pkcs11/index.html deleted file mode 100644 index 8c41add1ee..0000000000 --- a/files/ja/mozilla/projects/nss/pkcs11/index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: PKCS11 -slug: Mozilla/Projects/NSS/PKCS11 -tags: - - NSS - - Security -translation_of: Mozilla/Projects/NSS/PKCS11 ---- -<p> -</p><p>暗号化モジュール実装者のための PKCS #11 情報: -</p> -<ul><li> <a href="ja/PKCS11_Implement">Implementing PKCS #11 for NSS</a> -</li><li> <a href="ja/PKCS11_FAQ">PKCS #11 FAQ</a> -</li><li> <a href="ja/PKCS11_Jar_Install">Using the JAR Installation Manager to Install a PKCS #11 Cryptographic Module</a> -</li><li> <a href="ja/PKCS11_Conformance">PKCS #11 Conformance Testing</a> -</li></ul> -{{ languages( { "en": "en/PKCS11" } ) }} diff --git a/files/ja/mozilla/projects/nss/ssl_functions/index.html b/files/ja/mozilla/projects/nss/ssl_functions/index.html deleted file mode 100644 index 58d409092f..0000000000 --- a/files/ja/mozilla/projects/nss/ssl_functions/index.html +++ /dev/null @@ -1,300 +0,0 @@ ---- -title: SSL 関数 -slug: Mozilla/Projects/NSS/SSL_functions -translation_of: Mozilla/Projects/NSS/SSL_functions ---- -<p>ここで紹介する公開関数は、SSL および TLS プロトコルを使用して通信するためのソケットを設定するために使用します。SSL をサポートするアプリケーションでは、ここに記載されている機能に加えて、このページで後述する証明書機能、暗号機能、ユーティリティ機能の一部を使用しています。</p> - -<p>Other sources of information:</p> - -<ul> - <li>The <a href="https://developer.mozilla.org/en-US/docs/NSS_reference">NSS_reference</a> documents the functions most commonly used by applications to support SSL.</li> - <li>The <a href="https://developer.mozilla.org/en-US/docs/NSS">NSS</a> home page links to additional SSL documentation.</li> -</ul> - -<p>If documentation is available for a function listed below, the function name is linked to either its MDC wiki page or its entry in the <a class="external" href="/en-US/docs/Mozilla/Projects/NSS/SSL_functions/OLD_SSL_Reference">old SSL Reference</a>. The <a class="external" href="https://dxr.mozilla.org/">Mozilla Cross Reference</a> (DXR) link for each function provides access to the function definition, prototype definition, and source code references. The NSS version column indicates which versions of NSS support the function.</p> - -<table class="standard-table"> - <tbody> - <tr> - <th>Function name/documentation</th> - <th>Source code</th> - <th>NSS versions</th> - </tr> - <tr> - <td><a class="external" href="/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslfnc.html#1106762"><code>NSS_GetClientAuthData</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_GetClientAuthData">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1228530"><code>NSS_SetDomesticPolicy</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_SetDomesticPolicy">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1100285"><code>NSS_SetExportPolicy</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_SetExportPolicy">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>NSS_SetFrancePolicy</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_SetFrancePolicy">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>NSSSSL_VersionCheck</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSSSSL_VersionCheck">MXR</a></td> - <td>3.2.1 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088888"><code>SSL_AuthCertificate</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_AuthCertificate">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088805"><code>SSL_AuthCertificateHook</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_AuthCertificateHook">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088928"><code>SSL_BadCertHook</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_BadCertHook">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_CertDBHandleSet</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CertDBHandleSet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_Canbypass</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_Canbypass">MXR</a></td> - <td>3.11.7 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1210463"><code>SSL_CipherPolicyGet</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPolicyGet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1104647"><code>SSL_CipherPolicySet</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPolicySet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1214800"><code>SSL_CipherPrefGet</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefGet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1208119"><code>SSL_CipherPrefGetDefault</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefGetDefault">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1214758"><code>SSL_CipherPrefSet</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefSet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1084747"><code>SSL_CipherPrefSetDefault</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefSetDefault">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1138601"><code>SSL_ClearSessionCache</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ClearSessionCache">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1142625"><code>SSL_ConfigMPServerSIDCache</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ConfigMPServerSIDCache">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1217647"><code>SSL_ConfigSecureServer</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ConfigSecureServer">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1143851"><code>SSL_ConfigServerSessionIDCache</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ConfigServerSessionIDCache">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1142625"><code>SSL_DataPending</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_DataPending">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1133431"><code>SSL_ForceHandshake</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ForceHandshake">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_ForceHandshakeWithTimeout</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ForceHandshakeWithTimeout">MXR</a></td> - <td>3.11.4 and later</td> - </tr> - <tr> - <td><code>SSL_GetChannelInfo</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetChannelInfo">MXR</a></td> - <td>3.4 and later</td> - </tr> - <tr> - <td><code>SSL_GetCipherSuiteInfo</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetCipherSuiteInfo">MXR</a></td> - <td>3.4 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1126622"><code>SSL_GetClientAuthDataHook</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetClientAuthDataHook">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_GetMaxServerCacheLocks</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetMaxServerCacheLocks">MXR</a></td> - <td>3.4 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1092869"><code>SSL_GetSessionID</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetSessionID">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_GetStatistics</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetStatistics">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1112702"><code>SSL_HandshakeCallback</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_HandshakeCallback">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1085950"><code>SSL_ImportFD</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ImportFD">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1162055"><code>SSL_InheritMPServerSIDCache</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_InheritMPServerSIDCache">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1089420"><code>SSL_InvalidateSession</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_InvalidateSession">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_LocalCertificate</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_LocalCertificate">MXR</a></td> - <td>3.4 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1194921"><code>SSL_OptionGet</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionGet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1204897"><code>SSL_OptionGetDefault</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionGetDefault">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1086543"><code>SSL_OptionSet</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionSet">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1068466"><code>SSL_OptionSetDefault</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionSetDefault">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1096168"><code>SSL_PeerCertificate</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_PeerCertificate">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_PreencryptedFileToStream</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_PreencryptedFileToStream">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_PreencryptedStreamToFile</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_PreencryptedStreamToFile">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1232052"><code>SSL_ReHandshake</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ReHandshake">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_ReHandshakeWithTimeout</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ReHandshakeWithTimeout">MXR</a></td> - <td>3.11.4 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1058001"><code>SSL_ResetHandshake</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ResetHandshake">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_RestartHandshakeAfterCertReq</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RestartHandshakeAfterCertReq">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_RestartHandshakeAfterServerCert</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RestartHandshakeAfterServerCert">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_RevealCert</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RevealCert">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1123385"><code>SSL_RevealPinArg</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RevealPinArg">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1081175"><code>SSL_RevealURL</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RevealURL">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1092805"><code>SSL_SecurityStatus</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SecurityStatus">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_SetMaxServerCacheLocks</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetMaxServerCacheLocks">MXR</a></td> - <td>3.4 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088040"><code>SSL_SetPKCS11PinArg</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetPKCS11PinArg">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1124562"><code>SSL_SetSockPeerID</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetSockPeerID">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1087792"><code>SSL_SetURL</code></a></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetURL">MXR</a></td> - <td>3.2 and later</td> - </tr> - <tr> - <td><code>SSL_ShutdownServerSessionIDCache</code></td> - <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ShutdownServerSessionIDCache">MXR</a></td> - <td>3.7.4 and later</td> - </tr> - </tbody> -</table> diff --git a/files/ja/mozilla/projects/nss/tools/index.html b/files/ja/mozilla/projects/nss/tools/index.html deleted file mode 100644 index 427ba92a75..0000000000 --- a/files/ja/mozilla/projects/nss/tools/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: NSS ツール -slug: Mozilla/Projects/NSS/tools -translation_of: Mozilla/Projects/NSS/tools ---- -<h2 id="NSS_セキュリティツール">NSS セキュリティツール</h2> - -<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p> - -<h3 id="Overview">Overview</h3> - -<p>The NSS Security Tools allow developers to test, debug, and manage applications that use NSS. The <a href="#Tools">Tools Information</a> table below describes both the tools that are currently working and those that are still under development. The links for each tool take you to the source code, documentation, plans, and related links for each tool. The links will become active when information is available.</p> - -<p>Currently, you must download the NSS 3.1 source and build it to create binary files for the NSS tools. For information about downloading the NSS source, see <a href="https://developer.mozilla.org/NSS/Building">https://developer.mozilla.org/NSS/Building</a>.</p> - -<p>If you have feedback or questions, please feel free to post to <a href="news://news.mozilla.org/mozilla.dev.tech.crypto"> mozilla.dev.tech.crypto</a>. This newsgroup is the preferred forum for all questions about NSS and NSS tools.</p> - -<h3 id="Overall_Objectives">Overall Objectives</h3> - -<ol> - <li>Provide a tool for analyzing and repairing certificate databases (<a href="#dbck">dbck</a>).</li> - <li>Migrate tools from secutil.h interface to PKCS #11 interface.</li> - <li>Eliminate redundant functionality in tools. Many tools implement private versions of PKCS11Init(), OpenCertDB(), etc.</li> - <li>Eliminate use of getopt() and replace with NSPR calls to get command options (to eliminate platform dependencies with getopt()).</li> -</ol> - -<h3 id="Tools_Information"><a name="Tools">Tools Information</a></h3> - -<table style="width: 90%;"> - <tbody> - <tr> - <th><strong>Tool</strong></th> - <th><strong>Description</strong></th> - <th><strong>Links</strong></th> - </tr> - <tr> - <td><a name="certutil">certutil 2.0</a></td> - <td>Manage certificate and key databases (cert7.db and key3.db).</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/certutil/">Source</a>, <a href="tools/NSS_Tools_certutil">Documentation</a>, <a href="tools/NSS_Tools_certutil-tasks">Tasks/Plans</a> </font></td> - </tr> - <tr> - <td><a name="cmsutil">cmsutil 1.0</a></td> - <td>Performs basic CMS operations such as encrypting, decrypting, and signing messages.</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/smimetools/">Source</a>, <a href="tools/NSS_Tools_cmsutil">Documentation</a> </font></td> - </tr> - <tr> - <td><a name="crlutil">crlutil</a></td> - <td>Manage certificate revocation lists (CRLs).</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/crlutil/">Source</a>, <a href="tools/NSS_Tools_crlutil">Documentation</a>, </font></td> - </tr> - <tr> - <td><a name="dbck">dbck 1.0</a></td> - <td>Analyze and repair certificate databases (not working in NSS 3.2)</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/dbck/">Source</a>, <a href="tools/NSS_Tools_dbck-tasks">Tasks/Plans</a> </font></td> - </tr> - <tr> - <td><a name="modutil">modutil 1.1</a></td> - <td>Manage the database of PKCS11 modules (secmod.db). Add modules and modify the properties of existing modules (such as whether a module is the default provider of some crypto service).</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/modutil/">Source</a>, <a href="tools/NSS_Tools_modutil">Documentation</a>, <a href="tools/NSS_Tools_modutil-tasks">Tasks/Plans</a> </font></td> - </tr> - <tr> - <td><a name="pk12util">pk12util 1.0</a></td> - <td>Import and export keys and certificates between the cert/key databases and files in PKCS12 format.</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/pk12util/">Source</a>, <a href="tools/NSS_Tools_pk12util">Documentation</a>, <a href="tools/NSS_Tools_pk12util-tasks">Tasks/Plans</a> </font></td> - </tr> - <tr> - <td><a name="signtool">signtool 1.3</a></td> - <td>Create digitally-signed jar archives containing files and/or code.</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/signtool/">Source</a>, <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/SecurityToolsSummary.html#jarsigner"> Documentation</a>, </font></td> - </tr> - <tr> - <td><a name="signver">signver 1.1</a></td> - <td>Verify signatures on digitally-signed objects.</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/signver/">Source</a>, <a href="https://docs.oracle.com/javase/tutorial/deployment/jar/verify.html"> Documentation</a>, <a href="tools/NSS_Tools_signver-tasks">Tasks/Plans</a> </font></td> - </tr> - <tr> - </tr> - <tr> - <td><a name="sslstrength">sslstrength</a></td> - <td>SSL Strength</td> - <td><font size="-1"><a href="tools/NSS_Tools_sslstrength">Documentation</a> </font></td> - </tr> - <tr> - <td><a name="ssltap">ssltap 3.2</a></td> - <td>Proxy requests for an SSL server and display the contents of the messages exchanged between the client and server. The ssltap tool does not decrypt data, but it shows things like the type of SSL message (clientHello, serverHello, etc) and connection data (protocol version, cipher suite, etc). This tool is very useful for debugging.</td> - <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/ssltap/">Source</a>, <a href="tools/NSS_Tools_ssltap">Documentation</a> </font></td> - </tr> - </tbody> -</table> - -<ol> - <li><font size="-1"><a name="note1"></a> Currently points to the Netscape Certificate Management System Administration Guide on docs.sun.com. For additional information about this tool, see <a href="http://developer.netscape.com/docs/manuals/security.html#OBJ">Object Signing</a>. </font></li> - <li><font size="-1"><a name="note2"></a> Currently points to the signver documentation on developer.netscape.com. For additional information about this tool, see <a href="http://developer.netscape.com/docs/manuals/security.html#FORM">Form Signing</a> </font></li> -</ol> diff --git a/files/ja/mozilla/projects/spidermonkey/build_documentation/index.html b/files/ja/mozilla/projects/spidermonkey/build_documentation/index.html deleted file mode 100644 index dd5a4146c2..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/build_documentation/index.html +++ /dev/null @@ -1,290 +0,0 @@ ---- -title: SpiderMonkey のビルド -slug: Mozilla/Projects/SpiderMonkey/Build_Documentation -tags: - - Build documentation - - Guide - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Build_Documentation ---- -<div>{{SpiderMonkeySidebar("General")}}</div> - -<h2 id="SpiderMonkey_のビルド">SpiderMonkey のビルド</h2> - -<p>この文書は SpiderMonkey の最新版をソースコードからビルドする方法を解説します。</p> - -<p><strong>ビルドを始める前に、必要なツールがインストールされていることを確認してください</strong>。<a href="/En/Developer_Guide/Build_Instructions/Linux_Prerequisites" title="en/Linux_Build_Prerequisites">Linux</a>, <a href="/En/Developer_Guide/Build_Instructions/Windows_Prerequisites" title="en/Windows_Build_Prerequisites">Windows</a>, <a href="/En/Developer_Guide/Build_Instructions/Mac_OS_X_Prerequisites" title="en/Mac_OS_X_Build_Prerequisites">Mac</a>, <a href="/En/Developer_Guide/Build_Instructions" title="en/Build_Documentation">その他の環境</a> での準備は、それぞれのドキュメントをごらんください。28 より古いバージョンのビルドをする際は、<a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a> が追加で必要となります。</p> - -<p style="margin: 0px 0px 1.7em; padding: 0px;">また <a class="internal" href="/En/SpiderMonkey/Getting_SpiderMonkey_source_code#Getting_the_latest_SpiderMonkey_source_code" title="En/SpiderMonkey/Getting SpiderMonkey source code#Getting the latest SpiderMonkey source code">SpiderMonkey 最新版のソースコード</a> も必要です。</p> - -<h3 id="非開発者向け_(最適化)_ビルド">非開発者向け (最適化) ビルド</h3> - -<p>実運用用のために SpiderMonkey をインストールする場合、またはパフォーマンスベンチマークを実行する場合は、これらの手順を使用してください (SpiderMonkey を C++ アプリケーションのライブラリとして使用したい場合、または SpiderMonkey 自体の改善に取り組んでいる場合は、代わりに下記のように開発者/デバッグビルドを行ってください)。</p> - -<pre class="eval line-numbers language-html">cd js/src -autoconf2.13 - -# この名前は、バージョン管理システムで無視させるために "_OPT.OBJ" で終わる必要があります。 -mkdir build_OPT.OBJ -cd build_OPT.OBJ -../configure -# Windows では "mozmake" を使います。 -make -</pre> - -<p>これについてのいくつかのメモ:</p> - -<ul> - <li> - <p>最も一般的なビルドの問題は依存関係の問題です。<a href="/ja/docs/Mozilla/Developer_Guide/Build_Documentation#Getting_started">プラットフォーム用のビルド前提条件ページ</a>を見てください。</p> - </li> - <li> - <p>SpiderMonkey はソースディレクトリでの構築をサポートしていません。上記のように、別のビルドディレクトリに設定してビルドする必要があります。</p> - </li> - <li> - <p>はい、autoconf バージョン 2.13 が本当に必要です。 それ以降のバージョンは動作しません (ただし、システムの autoconf としてインストールしないでください。これも機能しません。そのバージョンは非常に古いため、お勧めできません)。</p> - </li> -</ul> - -<div class="note"> -<p><strong>メモ</strong>: Mac を使用していて、次のようなエラーが表示される場合</p> - -<p>"<code>checking whether the C compiler (gcc-4.2 ) works... no<br> - configure: error: installation or configuration problem: C compiler cannot create executables.</code>"</p> - -<p>次のように設定してみてください。</p> - -<pre><code>CC=clang CXX=clang++ ../configure</code></pre> - -<p>baldrdash がコンパイルに失敗する可能性もあります。</p> - -<pre class="line-numbers language-html"><code class="language-html">/usr/local/Cellar/llvm/7.0.1/lib/clang/7.0.1/include/inttypes.h:30:15: fatal error: 'inttypes.h' file not found - -/usr/local/Cellar/llvm/7.0.1/lib/clang/7.0.1/include/inttypes.h:30:15: fatal error: 'inttypes.h' file not found, err: true</code></pre> - -<p>これは Mohave 以降、ヘッダーが /usr/include にインストールされなくなったためです。コマンドラインツール -> 新機能の下の<a href="https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes">リリースノート</a>を参照してください。</p> - -<p>リリースノートには、この互換性パッケージは近い将来提供されなくなると記載されているので、macOS 上のビルドシステムは SDK のヘッダを探すように適合させる必要があるでしょう。<br> - <br> - それまでは、次のことが役に立ちます。</p> - -<pre><code>open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pk -</code></pre> -</div> - -<p>これにより <code>build-release/dist/bin</code> ディレクトリに <code>js</code> という実行可能ファイルが構築されます。ヘルプページを表示する <code>dist/bin/js --help</code> でテストできます。これで、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">シェルを実行して試す</a>準備が整いました。</p> - -<p>Mac、Linux、または UNIX では、追加のコマンド <code>make install</code> を使用してシステムに SpiderMonkey をインストールできます。これは共有ライブラリを <code>/usr/local/lib</code> に、C ヘッダファイルを <code>usr/local/include</code> に、そして <code>js</code> 実行ファイルを <code>/usr/local/bin</code> にインストールします。</p> - -<h3 id="開発者向け(デバッグ用)ビルド">開発者向け(デバッグ用)ビルド</h3> - -<p>SpiderMonkey 自身の開発やデバッグを目的とする場合、日々のデバッグにはデバッグビルドを、パフォーマンステストには最適化ビルドを、それぞれ別のディレクトリで行うことになります。デバッグビルドを行うには、上記の手順に加えて以下の 3 ステップを行います:</p> - -<pre class="eval">cd js/src -autoconf-2.13 - -# This name should end with "_DBG.OBJ" to make the version control system ignore it. -mkdir build_DBG.OBJ -cd build_DBG.OBJ -../configure --enable-debug --disable-optimize -# Use "mozmake" on Windows -make -</pre> - -<p><code>JS_GC_ZEAL</code> オプションをつけてビルドすると、zealous ガベージコレクションが有効になります。これはメモリリークに代表されるメモリ関連のデバッグを行う時に有用です。詳細は <a class="internal" href="/SpiderMonkey/JSAPI_Reference/JS_SetGCZeal" title="En/SpiderMonkey/JSAPI Reference/JS SetGCZeal"><code>JS_SetGCZeal()</code></a> をご覧ください。</p> - -<p>この他のビルドオプションについては、上記で作成したビルドディレクトリ内で次のコマンドを実行してください:</p> - -<pre class="eval">../configure --help -</pre> - -<h4 id="コンパイルデータベースの生成">コンパイルデータベースの生成</h4> - -<p>一部のツール (IDE、静的アナライザー、リファクタリングツールなど) は、ソフトウェアを構築するために必要なすべての要素の説明を含む <code><a href="https://clang.llvm.org/docs/JSONCompilationDatabase.html">compile_commands.json</a></code> というファイルを使用するため、ツールは構築システムも理解する必要はありません。</p> - -<p>SpiderMonkey 設定スクリプトを使用して <code>compile_commands.json</code> を生成するには、次のように CompileDB バックエンドを有効にします。</p> - -<pre class="syntaxbox"> ../configure <options> --enable-build-backends=CompileDB,RecursiveMake -</pre> - -<p>(RecursiveMake はあなたもビルドできるようになりたいと思うのでそこにあります!)</p> - -<h3 id="Building" name="Building">Windows でのビルド</h3> - -<div class="note"> -<p>バージョン 28 以降、<strong>スレッドセーフビルドがデフォルト</strong>となり、すべての POSIX プラットフォームでそのまま使用できるはずです。したがって、次の手順は Windows を使用している場合、または古いバージョンの SpiderMonkey をコンパイルしている場合にのみ関係があります。</p> -</div> - -<p>The <a href="https://wiki.mozilla.org/MozillaBuild">MozillaBuild</a> batch file you used to open your shell (e.g. <code>start-shell-msvc2013.bat</code> or <code>start-shell-msvc2013-x64.bat</code>) determines whether the compiler toolchain will target 32-bit or 64-bit builds. To create a 64-bit build, note that you must configure with <code>--target=x86_64-pc-mingw32 --host=x86_64-pc-mingw32</code>.</p> - -<p>Since the POSIX NSPR emulation is not available for Windows, a working version of NSPR must be available to your build. <strong>The easiest option is to configure with <code>--enable-nspr-build.</code></strong><code> </code>This configure option builds the in-tree version of NSPR which is probably what you want; <span style="line-height: normal;"><span style="line-height: normal;">because SpiderMonkey uses newer NSPR symbols, the NSPR that ships with your operating system probably does not work.</span></span></p> - -<p>If <code>--enable-nspr-build</code> does not work, explicitly tell <code>configure</code> where to find NSPR using the <code>--with-nspr-cflags</code> and <code>--with-nspr-libs</code> configure options. For example, assuming your local NSPR has been installed to <code>C:/mozilla-build/msys/local</code>:</p> - -<pre><span style="line-height: normal;"><code><span style="line-height: normal;"><code><code>./configure<code> --with-nspr-cflags="-IC:/mozilla-build/msys/local/include" \ - --with-nspr-libs="<span style="line-height: normal;"><code><span style="line-height: normal;"><code><code><code>C:/mozilla-build/msys/local</code></code></code></span></code></span>/lib/libnspr4.a \ - <span style="line-height: normal;"><code><span style="line-height: normal;"><code><code><code>C:/mozilla-build/msys/local</code></code></code></span></code></span>/lib/libplds4.a \ - <span style="line-height: normal;"><code><span style="line-height: normal;"><code><code><code>C:/mozilla-build/msys/local</code></code></code></span></code></span>/lib/libplc4.a"</code> -</code></code></span></code></span></pre> - -<p>If you get symbol loading or dynamic library errors, you can force the correct NSPR to load with:</p> - -<pre class="line-numbers language-html"><code class="language-html">PATH="$PATH;C:/mozilla-build/msys/local/lib/" ./js</code></pre> - -<h2 id="Specifying_installation_directories">Specifying installation directories</h2> - -<p><code>make install</code> puts files in the following directories by default. You can override this by passing options to the <code>configure</code> script:</p> - -<table class="standard-table"> - <tbody> - <tr> - <th>What it is</th> - <th>Where it gets put</th> - <th><code>configure</code> option</th> - </tr> - <tr> - <td>executables, shell scripts</td> - <td><code>/usr/local/bin</code></td> - <td><code>--bindir</code></td> - </tr> - <tr> - <td>libraries, data</td> - <td><code>/usr/local/lib</code></td> - <td><code>--libdir</code></td> - </tr> - <tr> - <td>architecture-independent data</td> - <td><code>/usr/local/share</code></td> - <td><code>--sharedir</code></td> - </tr> - <tr> - <td>C header files</td> - <td><code>/usr/local/include</code></td> - <td><code>--includedir</code></td> - </tr> - </tbody> -</table> - -<p>For convenience, you can pass the <code>configure</code> script an option of the form <code>--prefix=<PREFIXDIR></code>, which substitutes <code><PREFIXDIR></code> for <code>/usr/local</code> in all the settings above, in one step. This is usually the least troublesome thing to do, as it preserves the typical arrangement of <code>lib</code>, <code>bin</code>, and the rest.</p> - -<div class="note"><strong>Note:</strong> All directories you pass to <code>configure</code> are recorded in the generated makefile, so you don't need to specify them again until you re-run <code>configure</code>.</div> - -<h2 id="Building_SpiderMonkey_as_a_static_library">Building SpiderMonkey as a static library</h2> - -<p>By default, SpiderMonkey builds as a shared library. However, you can build SpiderMonkey as a static library by specifying the <code>--disable-shared-js</code> flag when you run <code>configure</code>.</p> - -<h2 id="Specifying_compilers_and_compiler_flags">Specifying compilers and compiler flags</h2> - -<p>If you want to use a compiler other than the one the <code>configure</code> script chooses for you by default, you can set the <code>CXX</code> variable in the environment when you run <code>configure</code>. This will save the values you specify in the generated makefile, so once you've set it, you don't need to do so again until you re-run <code>configure</code>.</p> - -<p>If you'd like to pass certain flags to the compiler, you can set the <code>CXXFLAGS</code> environment variable when you run <code>configure</code>. For example, if you're using the GNU toolchain, the following will pass the <code>-g3</code> flag to the compiler, causing it to emit debug information about macros. Then you can use those macros in <code>gdb</code> commands:</p> - -<pre class="eval line-numbers language-html"><code class="language-html">$ CXXFLAGS=-g3 $SRC/configure -... -checking whether the C++ compiler (c++ -g3 ) works... yes -... -$</code></pre> - -<h2 id="Cross-compiling_options">Cross-compiling options</h2> - -<p>For cross-compiling you will need a cross-compiling compiler. That tends to be easier with clang as clang has cross-compiling support built in. You may need other libraries though. For example on debian linux you'll need the following to cross compile from x86_64 to x86.</p> - -<pre class="syntaxbox">apt install clang libstdc++-8-dev-i386-cross binutils-i686-gnu zlib1g-dev:i386</pre> - -<p>You'll also need rust, in addition to having normal rust set up you'll need to add another target to your existing rust toolchain (don't add a new toolchain spidermonkey will use only one toolchain and use it for both host and target code:</p> - -<pre class="syntaxbox">rustup target add i686-unknown-linux-gnu</pre> - -<p>To build a 32-bit version on a 64-bit Linux system, you can use the following:</p> - -<pre class="eval line-numbers language-html"><code class="language-html">PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig CC="gcc -m32 -mfpmath=sse -msse -msse2" CXX="g++ -m32 -mfpmath=sse -msse -msse2" AR=ar \ -$SRC/configure --target=i686-pc-linux</code></pre> - -<p>Or for clang.</p> - -<pre class="syntaxbox">$SRC/configure --target=i686-pc-linux-gnu</pre> - -<p>To build a 32-bit arm version on a 64-bit Linux system, that runs in the arm simulator, you can use the following:</p> - -<pre class="line-numbers language-html"><code class="language-html"> AR=ar CC="gcc -m32 -mfpmath=sse -msse -msse2" CXX="g++ -m32 -mfpmath=sse -msse -msse2" \ - $SRC/configure --target=i686-pc-linux --enable-simulator=arm</code></pre> - -<p>To build a 32-bit version on a 64-bit Mac system (the target version is specific to your OS/X SDK), you can use the following:</p> - -<pre class="syntaxbox">$SRC/configure --target=i386-apple-darwin16.7.0 # Choose the appropriate SDK version for your version of OS/X</pre> - -<p>To build a 64-bit version on a 32-bit Mac system (e.g. Mac OS X 10.5), you can use the following:</p> - -<pre class="eval line-numbers language-html"><code class="language-html">AR=ar CC="gcc -m64" CXX="g++ -m64" ../configure --target=x86_64-apple-darwin10.0.0</code></pre> - -<p>To build a 64-bit Windows version, you can use the following:</p> - -<pre class="eval line-numbers language-html"><code class="language-html">$SRC/configure --host=x86_64-pc-mingw32 --target=x86_64-pc-mingw32</code></pre> - -<div class="note"><strong>Note:</strong> You must have started your MozillaBuild shell with the proper -x64.bat script in order for the 64-bit compilers to be in your PATH.</div> - -<p>Whatever compiler and flags you pass to <code>configure</code> are recorded in the generated makefile, so you don't need to specify them again until you re-run <code>configure</code>.</p> - -<h2 id="Building_your_application">Building your application</h2> - -<p>While "How to build your complete application" is clearly out of scope for this document, here are some tips that will help get you on your way:</p> - -<ul> - <li>The SpiderMonkey developers frequently and deliberately change the JSAPI ABI. You cannot use headers built for one version/configuration of JSAPI to create object files which will be linked against another.</li> - <li>Support for JS_THREADSAFE was recently removed, and threadsafe builds are now enabled by default.</li> - <li>The <code>js-config</code> script, described below, is the recommended way to determine correct include paths, required libraries, etc. for your embedding to use during compilation. We highly recommend calling the <code>js-config</code> script from your embedding's makefile to set your CFLAGS, LDFLAGS, and so forth.</li> - <li>To install SpiderMonkey somewhere other than the default, you must use the <code>configure</code> <code>--prefix</code> option, as described above. Failure to do so may break your <code>js-config.h</code> header or <code>js-config</code> script.</li> - <li>Some features detected by the <code>configure</code> script do not work for cross-compilation.</li> -</ul> - -<h3 id="Using_the_js-config_script">Using the js-config script</h3> - -<p>In addition to the SpiderMonkey libraries, header files, and shell, the SpiderMonkey build also produces a shell script named <code>js-config</code> which other build systems can use to find out how to compile code using the SpiderMonkey APIs, and how to link with the SpiderMonkey libraries.</p> - -<div class="note"><strong>Note:</strong> In SpiderMonkey 1.8.5, the js-config script is not generated properly on many platforms. If the instructions below do not work, you can try this <a href="https://developer.mozilla.org/en/SpiderMonkey/1.8.5#js-config" title="https://developer.mozilla.org/en/SpiderMonkey/1.8.5#js-config">workaround</a>.</div> - -<p>When invoked with the <code>--cflags</code> option, <code>js-config</code> prints the flags that you should pass to the C compiler when compiling files that use the SpiderMonkey API. These flags ensure the compiler will find the SpiderMonkey header files.</p> - -<pre class="eval line-numbers language-html"><code class="language-html">$ ./js-config --cflags # Example output: -I/usr/local/include/js -I/usr/include/nspr</code></pre> - -<p>When invoked with the <code>--libs</code> option, <code>js-config</code> prints the flags that you should pass to the C compiler when linking an executable or shared library that uses SpiderMonkey. These flags ensure the compiler will find the SpiderMonkey libraries, along with any libraries that SpiderMonkey itself depends upon (like NSPR).</p> - -<pre class="eval line-numbers language-html"><code class="language-html">$ ./js-config --libs # Example output: -L/usr/local/lib -lmozjs -L/usr/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl -ldl -lm -lm -ldl</code></pre> - -<h2 id="Test" name="Test">Testing SpiderMonkey</h2> - -<ul> - <li> - <p>Run <code>${BUILDDIR}/dist/bin/js </code><code>Y.js</code> and check if appropriate output is printed. (It should say: <code>5! is 120</code>.)</p> - </li> - <li> - <p>Run the main test suite by running <code>./tests/jstests.py ${BUILDDIR}/dist/bin/js</code></p> - </li> - <li> - <p>Run JIT-specific tests by running: <code>./jit-test/jit_test.py ${BUILDDIR}/dist/bin/js</code></p> - </li> -</ul> - -<h2 id="Building_SpiderMonkey_1.8_or_earlier">Building SpiderMonkey 1.8 or earlier</h2> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">Use these instructions to build SpiderMonkey from an official source release or from the old CVS repository. To build the latest SpiderMonkey sources from Mercurial, see <a href="https://developer.mozilla.org/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation$edit#Building_SpiderMonkey_tip" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;">Building SpiderMonkey </a>above.</p> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"><a href="https://developer.mozilla.org/en/SpiderMonkey" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/SpiderMonkey">SpiderMonkey</a> is easy to build from source if you have the usual Mozilla build prerequisites installed. Before you begin, make sure you have right build tools for your computer: <a href="https://developer.mozilla.org/en/Developer_Guide/Build_Instructions/Linux_Prerequisites" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/Linux_Build_Prerequisites">Linux</a>, <a href="https://developer.mozilla.org/en/Developer_Guide/Build_Instructions/Windows_Prerequisites" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/Windows_Build_Prerequisites">Windows</a>, <a href="https://developer.mozilla.org/en/Developer_Guide/Build_Instructions/Mac_OS_X_Prerequisites" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/Mac_OS_X_Build_Prerequisites">Mac</a>, <a href="https://developer.mozilla.org/en/Developer_Guide/Build_Instructions" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/Build_Documentation">others</a>.</p> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">First, download a SpiderMonkey source distribution, such as <a class="external external-icon" href="http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;">SpiderMonkey 1.8 Release Candidate 1</a>.</p> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">To build, use these commands:</p> - -<pre class="eval line-numbers language-html" style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; background-clip: initial; background-color: rgb(246, 246, 242); font: normal normal normal 100%/normal 'Courier New', 'Andale Mono', monospace;"><code class="language-html">tar xvzf js-1.8.0-rc1.tar.gz -cd js/src -make -f Makefile.ref</code></pre> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">This builds a debug version of SpiderMonkey. All build files are created in a subdirectory named depending on your system (for example,<code style="font: normal normal normal 100%/normal 'Courier New', 'Andale Mono', monospace; color: inherit; font-weight: inherit;">Linux_All_DBG.OBJ</code> if you are on Linux). To install this build on your system, see <a class="external external-icon" href="http://ebixio.com/blog/2010/07/31/how-to-install-libjs-spidermonkey/" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="http://ebixio.com/blog/2010/07/31/how-to-install-libjs-spidermonkey/">SpiderMonkey installation instructions</a>.</p> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">To build an optimized (non-debug) version of SpiderMonkey:</p> - -<pre class="eval line-numbers language-html" style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; background-clip: initial; background-color: rgb(246, 246, 242); font: normal normal normal 100%/normal 'Courier New', 'Andale Mono', monospace;"><code class="language-html">make BUILD_OPT=1 -f Makefile.ref</code></pre> - -<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">To build a <a href="https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="JS_THREADSAFE">thread-safe</a> version of SpiderMonkey:</p> - -<pre class="eval line-numbers language-html" style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; background-clip: initial; background-color: rgb(246, 246, 242); font: normal normal normal 100%/normal 'Courier New', 'Andale Mono', monospace;"><code class="language-html">make JS_DIST=/full/path/to/directory/containing/nspr JS_THREADSAFE=1 -f Makefile.ref</code></pre> diff --git a/files/ja/mozilla/projects/spidermonkey/bytecodes/index.html b/files/ja/mozilla/projects/spidermonkey/bytecodes/index.html deleted file mode 100644 index a9ddaeee75..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/bytecodes/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: バイトコード -slug: Mozilla/Projects/SpiderMonkey/Bytecodes -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Internals/Bytecodes ---- -<div>{{SpiderMonkeySidebar("Internals")}}</div> - -<h2 id="バックグラウンド">バックグラウンド</h2> - -<p>SpiderMonkey バイトコードは、JavaScript エンジンで使用される標準形式のコード表現です。JavaScript フロントエンドは、ソーステキストから AST を構築してから、その AST から JSScript データ構造の一部としてスタックベースのバイトコードを生成します。バイトコードは、JSScript データ構造にも含まれているアトムとオブジェクトを (通常は配列インデックスで) 参照できます。</p> - -<p>エンジン内では、すべてのバイトコードはスタックフレーム内で実行されます。グローバル (最上位) コードでも eval コードでもスタックフレームが関連付けられています。スタック上のフレームには、いくつかの異なるカテゴリの JavaScript 値 (タグ付き値形式) 用のスペースがあります。単一の JavaScript 値のスペースは「スロット」と呼ばれ、カテゴリは次のとおりです。</p> - -<ul> - <li>引数スロット: 現在のフレームに渡される実際の引数を保持します</li> - <li>ローカルスロット: 現在のコードで使用されているローカル変数を保持します</li> - <li>式スロット: スタック上で式を計算するために必要な一時スペースを保持します。たとえば、<code>(a + b) + c</code> では、a をプッシュしてから b をプッシュして add をプッシュし、さらに c をプッシュから add のようにします。これには、最大2つの式スロットの深さが必要です</li> -</ul> - -<p><code>this</code> のような値と呼び出し先/戻り値を保持する、専用の機能のために予約されているいくつかのスロットもあります。</p> - -<p>式スタックにプッシュされた最新の値に対応する "Top of Stack" (TOS) が常にあります。すべてのバイトコードは、この場所に関して暗黙的に機能します。</p> - -<h2 id="バイトコードリスト">バイトコードリスト</h2> - -<p>すべてのオペコードには、実行全体のスタック効果を表すために [-popcount, +pushcount] という注釈が付けられています。</p> - -<p>バイトコードのリストは <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Internals/Bytecode">SpiderMonkey の内部: バイトコードの説明ページ</a>に移動しました。</p> diff --git a/files/ja/mozilla/projects/spidermonkey/creating_javascript_jstest_reftests/index.html b/files/ja/mozilla/projects/spidermonkey/creating_javascript_jstest_reftests/index.html deleted file mode 100644 index 5a438b7932..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/creating_javascript_jstest_reftests/index.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: JavaScript jstest reftests を作成する -slug: Mozilla/Projects/SpiderMonkey/Creating_JavaScript_jstest_reftests -tags: - - Junk - - NeedsUpdate -translation_of: Mozilla/Projects/SpiderMonkey/Creating_JavaScript_jstest_reftests ---- -<p>このページにはすぐにコンテンツが表示されます。</p> diff --git a/files/ja/mozilla/projects/spidermonkey/creating_javascript_tests/index.html b/files/ja/mozilla/projects/spidermonkey/creating_javascript_tests/index.html deleted file mode 100644 index d093c38e42..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/creating_javascript_tests/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: JavaScript のテストを作成する -slug: Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests -translation_of: Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests ---- -<div>{{SpiderMonkeySidebar("Tests")}}</div> - -<div class="summary"> -<p>主に 2 つの SpiderMonkey テストスイート: <strong>jstests</strong> (in js/src/tests) と <strong>jit-tests</strong> (in js/src/jit-test) があります。詳細については、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Running_Automated_JavaScript_Tests">自動 JavaScript テストの実行</a>を参照してください。</p> -</div> - -<p>新しいテストはどのテストスイートに属しますか?</p> - -<ol> - <li><strong>jit-tests</strong> は JIT の実装をテストすることを目的としています。正当性や機能性をテストするテストのみをこれらのスイートに追加してください。</li> - <li><strong>jstests</strong> is intended for tests of language-visible functionality. Please put tests of functionality into jstests even if related tests are in jit-tests, since jstests are closer to (and more easily converted to) <a href="https://github.com/tc39/test262/blob/master/README.md">test262</a> tests. (In fact, the test262 test suite is run as part of jstests.)</li> -</ol> - -<p>Practical differences between the two test suites:</p> - -<ol> -</ol> - -<p><strong>jstest</strong></p> - -<ol> - <li><strong>New jstest files </strong>should be put the code in the appropriate subdirectory of js/src/tests/non262/, or, under some scenarios, contributed directly to the <a href="https://github.com/tc39/test262/blob/master/README.md">test262 repository</a>.</li> - <li>jstests run in both the shell and the browser (although you can specify that the test should be run in only one of the two locations).</li> - <li>jstests automatically load js/src/tests/shell.js before they run, which creates a ton of functions.</li> - <li>Read more advice on jstests <a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests/jsreftests">here</a>.</li> -</ol> - -<p><strong>jit-test</strong></p> - -<ol> - <li><strong>New jit-test files </strong>should be put in js/src/jit-test/tests/basic or one of the other appropriate subdirectories of jit-test/tests. </li> - <li>jit-tests run only in the shell.</li> - <li>jit-tests do not load extra test functionality automatically.</li> -</ol> - -<h2 id="Creating_the_test_case_file" name="Creating_the_test_case_file">新しいテストファイルを書く</h2> - -<p>Have a look at the existing files and follow what they do. All tests, in both suite, can use the <em>assertEq</em> function.</p> - -<p><strong>assertEq(v1, v2[, message])</strong></p> - -<p style="margin-left: 40px;">Check that v1 and v2 are the same value. If they're not, throw an exception (which will cause the test to fail).</p> - -<p>If you are writing a jstests, additional testing functionality is provided for you in shell.js files. You can read about them <a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Running_Automated_JavaScript_Tests">here</a>.</p> - -<h3 id="Performance_testing" name="Performance_testing">Performance testing and general advice</h3> - -<p><strong>Do not</strong> attempt to test the performance of engine features in the test suite. </p> - -<p>Please keep in mind that the JavaScript test suite is run on a wide variety of wildly varying hardware plaforms, from phones all the way up to servers. Even tests that check for polynomial time complexity will start to fail in a few years when they have sped up enough to run faster than the granularity of the OS scheduler or when run on platforms with higher latencies than your development workstation. These tests will also show up as infrequent oranges on our heavily loaded test machines, lowering the value of our test suite for everyone. Just don't do it, it's never worth it.</p> - -<p><strong>Do not</strong> add performance tests to the test suite.</p> - -<p>It is not generally even possible to tell if the speed of any particular feature is going to be important in the real world without running a real-world benchmark. It is <em>very</em> hard to write a good real-world benchmark. For this reason, the best place to find out if a change is performance sensitive is on arewefastyet.com.</p> - -<p><strong>Focus on writing fast, light tests that cover a single feature. There is basically no cost to adding a new test, so add as many feature tests as needed to cover each feature orthogonally. Remember that whenever a test fails, someone -- probably you -- is going to have to figure out what went wrong.</strong></p> - -<h3 id="Testing_your_test">Testing your test</h3> - -<p>Run your new test locally before checking it in (or posting it for review). Nobody likes patches that include failing tests!</p> - -<p>See<a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Running_Automated_JavaScript_Tests"> Running Automated Javascript Tests</a> for instructions on how to run jstests or jit-tests.</p> - -<p>It's also a good sanity check to run each new test against an unpatched shell or browser. The test should fail if it's working properly.</p> - -<h3 id="Checking_in_completed_tests" name="Checking_in_completed_tests">Checking in completed tests</h3> - -<p>Tests are usually reviewed and pushed just like any other code change. Just include the test in your patch.</p> - -<p><strong>Security-sensitive tests should <strong>not</strong> be committed</strong> until the corresponding bug has been made public. Instead, ask a SpiderMonkey peer how to proceed.</p> - -<p>It is OK under certain circumstances to push new tests to certain repositories without a code review. Don't do this unless you know what you're doing. Ask a SpiderMonkey peer for details.</p> diff --git a/files/ja/mozilla/projects/spidermonkey/foss/index.html b/files/ja/mozilla/projects/spidermonkey/foss/index.html deleted file mode 100644 index 70ad9afcb6..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/foss/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: FOSS -slug: Mozilla/Projects/SpiderMonkey/FOSS -tags: - - Guide - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/FOSS ---- -<div>{{SpiderMonkeySidebar}}</div> - -<p>自身の SpiderMonkey ベースのオープンソースプロジェクトを追加してください (必要ならばカテゴリを追加してください) !</p> - -<h2 id="ラッパーバインディング">ラッパー/バインディング</h2> - -<h3 id="C">C++</h3> - -<ul> - <li><a href="https://github.com/cocos2d/cocos2d-js">Cocos2d-JS</a> - Cocos2d-JS は SpiderMonkey を組み込んだクロスプラットフォームのゲームエンジンで、Web とネイティブプラットフォームの両方に同じ API を提供します。<a href="http://www.cocos2d-x.org/wiki/Getting_Started_Cocos2d-js">Getting started here</a>.</li> - <li><a class="external" href="http://flusspferd.org/" title="http://flusspferd.org/">Flusspferd</a> - (新しい) C++ バインディング</li> - <li><a href="http://code.google.com/p/libjspp/" title="http://code.google.com/p/libjspp/">libjspp</a> - SpiderMonkey を拡張して埋め込むための C++ テンプレートベースのライブラリ。SpiderMonkey 1.8.5 以降で動作します。</li> - <li style="text-align: left;"><a class="external" href="http://spiderape.sourceforge.net/" title="http://spiderape.sourceforge.net/">Spiderape</a> - SpiderMonkey の最も古い C++ バインディング</li> - <li><a class="external text" href="http://www.trixul.com/" rel="nofollow" title="http://www.trixul.com/">TriXUL</a> - <a class="external text" href="http://trixul.cvs.sourceforge.net/trixul/trixul/layout/jsengine" rel="nofollow" title="http://trixul.cvs.sourceforge.net/trixul/trixul/layout/jsengine">(TriXUL CVS)</a> - Trixul XML ベースの GUI ツールキットは、SpiderMonkey を組み込み、JavaScript を使用してその GUI の背後にロジックを実装し、JavaScript から C++ オブジェクトへの呼び出しをサポートします。</li> -</ul> - -<h3 id="Rust">Rust</h3> - -<ul> - <li><a class="external" href="https://crates.io/crates/mozjs" title="http://live.gnome.org/Gjs">mozjs</a> - <a href="https://servo.org/">Servo</a> で使用されている Rust バインディング</li> -</ul> - -<h3 id="GNOME">GNOME</h3> - -<ul> - <li><a class="external" href="http://live.gnome.org/Gjs" title="http://live.gnome.org/Gjs">gjs</a> - GNOME への JavaScript バインディング(概して、GObject のイントロスペクションメカニズムを使用している任意のライブラリへの)</li> -</ul> - -<h3 id="Objective_Caml">Objective Caml</h3> - -<ul> - <li><a class="external" href="http://alain.frisch.fr/soft.html#spider" title="http://alain.frisch.fr/soft.html#spider">http://alain.frisch.fr/soft.html#spider</a> - OCaml アプリケーションに SpiderMonkey を埋め込むためのバインディング</li> -</ul> - -<h3 id="Perl">Perl</h3> - -<ul> - <li><a class="external" href="http://jspl.msg.mx/" title="http://jspl.msg.mx/">http://jspl.msg.mx/</a> - SpiderMonkey と Perl を相互に埋め込むためのバインディング。JavaScript から CPAN モジュールを使用できるようにする JS シェルが含まれています。</li> -</ul> - -<h3 id="Python">Python</h3> - -<ul> - <li><a class="external" href="http://pypi.python.org/pypi/python-spidermonkey" title="http://pypi.python.org/pypi/python-spidermonkey">http://pypi.python.org/pypi/python-spidermonkey</a></li> -</ul> - -<h3 id="wxWidgets">wxWidgets</h3> - -<ul> - <li><a class="external" href="http://gluescript.sourceforge.net/" title="http://gluescript.sourceforge.net/">GLUEscript</a> (formerly <a class="external" href="http://www.wxjavascript.net/" title="http://www.wxjavascript.net/">wxJavaScript</a>)</li> -</ul> - -<h3 id="Code_generators">Code generators</h3> - -<ul> - <li><a class="external" href="http://jsapigen.sourceforge.net" title="http://jsapigen.sourceforge.net/">jsapigen</a> - C アプリケーションに SpiderMonkey を埋め込むためのバインディングを生成する</li> -</ul> - -<h2 id="拡張機能">拡張機能</h2> - -<ul> - <li> - <p><a class="external" href="http://code.google.com/p/jslibs/" title="http://code.google.com/p/jslibs/">http://code.google.com/p/jslibs/</a> - <a class="external" href="http://en.wikipedia.org/wiki/Zlib" title="Zlib">zlib</a>, <a class="external" href="http://en.wikipedia.org/wiki/SQLite" title="SQLite">SQLite</a>, <a class="mw-redirect external" href="http://en.wikipedia.org/wiki/NSPR" title="NSPR">NSPR</a>, <a class="external" href="http://en.wikipedia.org/wiki/Open_Dynamics_Engine" title="Open Dynamics Engine">ode</a>, <a class="external" href="http://en.wikipedia.org/wiki/Libpng" title="Libpng">libpng</a>, <a class="external" href="http://en.wikipedia.org/wiki/Libjpeg" title="Libjpeg">libjpeg</a>, <a class="external" href="http://en.wikipedia.org/wiki/Libffi" title="Libffi">libffi</a>, (...) SpiderMonkey 用のライブラリ</p> - </li> - <li> - <p><a class="external" href="http://www.jsdb.org/" title="http://www.jsdb.org/">http://www.jsdb.org/</a> - ファイル、ネットワーク、データベース、圧縮、メールなどのネイティブオブジェクトを含む JS シェル</p> - </li> - <li> - <p><a class="external" href="http://code.google.com/p/gpsee/" title="http://code.google.com/p/gpsee/"><u>http://code.google.com/p/gpsee/</u></a> - SpiderMonkey 用の commonJS プラットフォーム、母国語モジュールの相互運用方法、モジュールなど。既存の埋め込みを補完するように設計された GPSEE は、サンプルの簡単な埋め込み、スクリプトホスト、および Mozilla の JS シェルの拡張バージョンを同梱しています。バンドルされているモジュールには、ByteArray、ByteString、CGI、POSIX Signals、FFI などのサポートが含まれています。</p> - </li> - <li> - <p><a class="external" href="http://javalikescript.free.fr/" title="http://javalikescript.free.fr/">http://javalikescript.free.fr/</a> - 拡張可能なツーリングフレームワークを提供することを目的とした汎用 JavaScript プラットフォーム</p> - </li> - <li> - <p><a href="http://www.synchro.net/" title="http://www.synchro.net/">http://www.synchro.net/</a> - telnet/SSH 掲示板システム (BBS) とインターネットサーバ (HTTP/SMTP/FTP)。JavaScript で記述された追加のインターネットサービス(IRC、IMAP、Gopher など)。</p> - </li> - <li> - <p><a href="https://github.com/mindbit/libjssql/wiki" title="https://github.com/mindbit/libjssql/wiki">https://github.com/mindbit/libjssql/wiki</a> - JDBC にできるだけ似せた、JavaScript 用の汎用 SQL API を提供することを目的としたライブラリ</p> - </li> -</ul> - -<h2 id="その他">その他</h2> - -<ul> - <li><a class="external" href="http://groups.google.com/group/serverjs" title="http://groups.google.com/group/serverjs">ServerJS</a>, 細分化されたサーバサイドの Javascript の世界に対する標準化の取り組み</li> - <li><a class="external" href="http://play0ad.com/" title="http://wildfiregames.com/0ad/">0 A.D.</a>, JavaScript スクリプトを使った歴史的な RTS ゲーム</li> - <li><a class="external" href="http://soubok.googlepages.com/javascript" title="http://soubok.googlepages.com/javascript">http://soubok.googlepages.com/javascript</a></li> - <li><a class="external text" href="http://malzilla.sourceforge.net/" rel="nofollow" title="http://malzilla.sourceforge.net/">Malzilla</a> - SpiderMonkey を使用して、Web ページ上の JavaScript を難読化して<a href="https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%82%A6%E3%82%A7%E3%82%A2">マルウェア</a>を除去するためのツール</li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/getting_spidermonkey_source_code/index.html b/files/ja/mozilla/projects/spidermonkey/getting_spidermonkey_source_code/index.html deleted file mode 100644 index 3296d837dc..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/getting_spidermonkey_source_code/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: SpiderMonkeyソースコードの取得 -slug: Mozilla/Projects/SpiderMonkey/Getting_SpiderMonkey_source_code -tags: - - Guide - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Getting_SpiderMonkey_source_code ---- -<div>{{SpiderMonkeySidebar}}</div> - -<p>SpiderMonkey のソースコードは gzip 形式でも直接 Mercurial リポジトリからも入手できます。</p> - -<h2 id="gzip_で圧縮された_SpiderMonkey_のソースコードのダウンロード">gzip で圧縮された SpiderMonkey のソースコードのダウンロード</h2> - -<p>gzip で圧縮された SpiderMonkey のソースコードを次の URL からダウンロードできます:</p> - -<pre><span class="plain"><a href="http://ftp.mozilla.org/pub/mozilla.org/js/" title="http://ftp.mozilla.org/pub/mozilla.org/js/">http://ftp.mozilla.org/pub/mozilla.org/js/</a></span> -</pre> - -<p>コマンドラインから SpiderMonkey ソースコード ver24.2 をダウンロードして展開する例です:</p> - -<pre>mkdir mozilla -cd mozilla -wget <a href="http://ftp.mozilla.org/pub/mozilla.org/js/mozjs-24.2.0.tar.bz2">http://ftp.mozilla.org/pub/mozilla.org/js/mozjs-24.2.0.tar.bz2</a> -tar xjf mozjs-24.2.0.tar.bz2 -</pre> - -<p>These commands should work on most platforms including Windows, as long as on Windows you are using the <a href="/En/Developer_Guide/Build_Instructions/Windows_Prerequisites#mozillabuild" title="https://developer.mozilla.org/en/Windows_Build_Prerequisites#mozillabuild">MozillaBuild</a> bash shell.</p> - -<h2 id="Getting_the_latest_SpiderMonkey_source_code" name="Getting_the_latest_SpiderMonkey_source_code">Mercurial から最新の SpiderMonkey ソースコードを入手する</h2> - -<p>The <a href="/en/Mercurial" title="en/Mercurial">Mercurial</a> repository at <a class="external" href="http://hg.mozilla.org/mozilla-central/" title="http://hg.mozilla.org/mozilla-central/">http://hg.mozilla.org/mozilla-central/</a> hosts the latest SpiderMonkey sources. Mercurial is also known as hg.</p> - -<p>The following command line downloads the entire Mozilla repository, including the full change history and a lot of Gecko and Firefox source code that isn't part of SpiderMonkey. It also changes to the SpiderMonkey directory (js/src).</p> - -<pre class="eval">hg clone <span class="nowiki">http://hg.mozilla.org/mozilla-central/</span> -cd js/src -</pre> - -<p>To avoid getting the full change history, click the <code>zip</code> or <code>gz</code> links at <a class="external" href="http://hg.mozilla.org/index.cgi/mozilla-central/file/tip" title="http://hg.mozilla.org/index.cgi/mozilla-central/file/tip">http://hg.mozilla.org/index.cgi/mozilla-central/file/tip</a>. This fetches a snapshot of the current Mozilla tree.</p> - -<p>If you have problems with the instructions above, you can read the full details of using Mercurial to get Mozilla code <a href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial" title="https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial">here</a>. That page also contains links to several bundles, which can be useful if you have a poor network connection.</p> - -<h2 id="Getting_the_latest_SpiderMonkey_source_code" name="Getting_the_latest_SpiderMonkey_source_code">Git で最新の SpiderMonkey のソースコードを取得する</h2> - -<p>The following command line downloads the entire Mozilla repository, including the full change history and a lot of Gecko and Firefox source code that isn't part of SpiderMonkey. It also changes to the SpiderMonkey directory (js/src).</p> - -<pre class="eval">git clone https://github.com/mozilla/gecko-dev.git -cd gecko-dev/js/src -</pre> - -<p>If you want a faster (about 5 times as of January 2015) download, try doing a shallow clone (no version control history).</p> - -<pre class="eval">git clone --depth 1 https://github.com/mozilla/gecko-dev.git -</pre> - -<p>If you have any problems check the <a href="https://wiki.mozilla.org/Github" title="https://wiki.mozilla.org/Github">https://wiki.mozilla.org/Github</a> page.</p> - -<h2 id="Getting_older_SpiderMonkey_sources_from_CVS" name="Getting_older_SpiderMonkey_sources_from_CVS">CVS から古い SpiderMonkey ソースを入手する</h2> - -<div class="note"><strong>Note:</strong> You will need to explicitly fetch the JavaScript shell sources even if you currently build another Mozilla project, as there are files specific to the shell that are not normally found in a Mozilla source tree.</div> - -<p>Just like when you're fetching any other Mozilla project from CVS, you need to log into the CVS server first. To do this, <code>cd</code> into the base directory you'd like to check out the code into, then enter the following command at your command line:</p> - -<pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot login -</pre> - -<p>When prompted, enter the password <code>anonymous</code>.</p> - -<p>Once you've logged in, <code>cd</code> into the root of your CVS tree and enter the following command:</p> - -<pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -l mozilla/js/src mozilla/js/src/config mozilla/js/src/editline mozilla/js/src/fdlibm -</pre> - -<p>This checks out all the files needed in order to build the JavaScript shell.</p> - -<p>If you also want the regression tests, add this command:</p> - -<pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/js/tests -</pre> - -<h2 id="Getting_older_branch_versions_of_SpiderMonkey" name="Getting_older_branch_versions_of_SpiderMonkey">SpiderMonkey の古いブランチバージョンを入手する</h2> - -<p>If you want to experiment with a specific branch's version of SpiderMonkey, you need to check out js/src from branch but check out <code>editline</code> and <code>config</code> from trunk:</p> - -<pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -l -r <em><var>BRANCH_NAME</var></em> mozilla/js/src mozilla/js/src/fdlibm -cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -l mozilla/js/src/config mozilla/js/src/editline -</pre> - -<p>Change <code><em>BRANCH_NAME</em></code> to the name of the branch you want to check out. You can use a JavaScript branch name (e.g. <code>JS_1_7_ALPHA_BRANCH</code>) or a Mozilla branch name (e.g. <code>MOZILLA_1_8_BRANCH</code>).</p> diff --git a/files/ja/mozilla/projects/spidermonkey/hacking_tips/index.html b/files/ja/mozilla/projects/spidermonkey/hacking_tips/index.html deleted file mode 100644 index 933d9d64a4..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/hacking_tips/index.html +++ /dev/null @@ -1,654 +0,0 @@ ---- -title: ハッキングのヒント -slug: Mozilla/Projects/SpiderMonkey/Hacking_Tips -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Hacking_Tips ---- -<div>{{SpiderMonkeySidebar("Getting_started")}}</div> - -<p>このページには、SpiderMonkey に関連する問題の調査に役立つヒントがいくつか掲載されています。ここに記載されているヒントはすべて、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey のビルドドキュメント</a>の最後に取得された JavaScript シェルを扱っています。2つの部分に分かれており、1つはデバッグに関するセクション、もう1つはドラフト最適化に関するセクションです。これらのヒントの多くは、JS シェルのデバッグビルドにのみ適用されます。それらはリリースビルドでは機能しません。</p> - -<h2 id="デバッグのヒント">デバッグのヒント</h2> - -<h3 id="ヘルプの入手_(JS_シェルから)">ヘルプの入手 (JS シェルから)</h3> - -<p><strong>help</strong> 関数を使用して、シェルのすべてのプリミティブ関数のリストを記述します。いくつかの関数は 'os' オブジェクトの下に移動されているので、<strong>help(os)</strong> はその "namespace" のメンバーだけを簡単に助けます。</p> - -<h3 id="関数のバイトコードを取得する_(JSシェルから)">関数のバイトコードを取得する (JSシェルから)</h3> - -<p>シェルには、関数のバイトコードをソースノートとともにダンプするための小さな関数 <strong>dis</strong> があります。引数がなければ、呼び出し元のバイトコードをダンプします。</p> - -<pre class="eval"><code>js> function f () { - return 1; -} -js> <strong>dis(</strong>f<strong>)</strong>; -flags: -loc op ------ -- -main: -00000: one -00001: return -00002: stop - -Source notes: - ofs line pc delta desc args ----- ---- ----- ------ -------- ------ - 0: 1 0 [ 0] newline - 1: 2 0 [ 0] colspan 2 - 3: 2 2 [ 2] colspan 9 - -</code></pre> - -<h3 id="関数のバイトコードを取得する_(gdbから)">関数のバイトコードを取得する (gdbから)</h3> - -<p><em>jsopcode.cpp</em> では、<strong>js::DisassembleAtPC</strong> という名前の関数が使用されています。PC はスクリプトのバイトコードを出力できます。<strong>js::DumpScript</strong> などのこの関数のいくつかの変種はデバッグに便利です。</p> - -<h3 id="JS_スタックのプリント_(gdbから)">JS スタックのプリント (gdbから)</h3> - -<p>jsobj.cppでは、<strong>js::DumpBacktrace</strong> という名前の関数が、JS スタックのバックトレース à la gdb を出力します。バックトレースには次の順序で、スタックの深さ、インタープリタフレームポインタ (<em>js/src/vm/Stack.h</em>、<strong>StackFrame</strong> クラスを参照) または IonMonkeyでコンパイルした場合は (nil)、コールロケーションのファイルと行番号、およびカッコの下に実行された JSScript ポインタと jsbytecode ポインタ (pc) が含まれます。</p> - -<pre class="eval"><code>$ gdb --args js -[…] -(gdb) b js::ReportOverRecursed -(gdb) r -js> function f(i) { - if (i % 2) f(i + 1); - else f(i + 3); -} -js> f(0) - -Breakpoint 1, js::ReportOverRecursed (maybecx=0xfdca70) at /home/nicolas/mozilla/ionmonkey/js/src/jscntxt.cpp:495 -495 if (maybecx) -(gdb) call <strong>js::DumpBacktrace(</strong>maybecx<strong>)</strong> -#0 (nil) typein:2 (0x7fffef1231c0 @ 0) -#1 (nil) typein:2 (0x7fffef1231c0 @ 24) -#2 (nil) typein:3 (0x7fffef1231c0 @ 47) -#3 (nil) typein:2 (0x7fffef1231c0 @ 24) -#4 (nil) typein:3 (0x7fffef1231c0 @ 47) -[…] -#25157 0x7fffefbbc250 typein:2 (0x7fffef1231c0 @ 24) -#25158 0x7fffefbbc1c8 typein:3 (0x7fffef1231c0 @ 47) -#25159 0x7fffefbbc140 typein:2 (0x7fffef1231c0 @ 24) -#25160 0x7fffefbbc0b8 typein:3 (0x7fffef1231c0 @ 47) -#25161 0x7fffefbbc030 typein:5 (0x7fffef123280 @ 9) - -</code></pre> - -<p>Note, you can do the exact same exercise above using <code>lldb</code> (necessary on OSX after Apple removed <code>gdb</code>) by running <code>lldb -f js</code> then following the remaining steps.</p> - -<p>Since SpiderMonkey 48, we have a gdb unwinder. This unwinder is able to read the frames created by the JIT, and to display the frames which are after these JIT frames.</p> - -<pre><code>$ gdb --args out/dist/bin/js ./foo.js -[…] -SpiderMonkey unwinder is disabled by default, to enable it type: - enable unwinder .* SpiderMonkey -(gdb) b js::math_cos -(gdb) run -[…] -#0 js::math_cos (cx=0x14f2640, argc=1, vp=0x7fffffff6a88) at js/src/jsmath.cpp:338 -338 CallArgs args = CallArgsFromVp(argc, vp); -(gdb) enable unwinder .* SpiderMonkey -(gdb) backtrace 10 -#0 0x0000000000f89979 in js::math_cos(JSContext*, unsigned int, JS::Value*) (cx=0x14f2640, argc=1, vp=0x7fffffff6a88) at js/src/jsmath.cpp:338 -#1 0x0000000000ca9c6e in js::CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (cx=0x14f2640, native=0xf89960 , args=...) at js/src/jscntxtinlines.h:235 -#2 0x0000000000c87625 in js::Invoke(JSContext*, JS::CallArgs const&, js::MaybeConstruct) (cx=0x14f2640, args=..., construct=js::NO_CONSTRUCT) at js/src/vm/Interpreter.cpp:476 -#3 0x000000000069bdcf in js::jit::DoCallFallback(JSContext*, js::jit::BaselineFrame*, js::jit::ICCall_Fallback*, uint32_t, JS::Value*, JS::MutableHandleValue) (cx=0x14f2640, frame=0x7fffffff6ad8, stub_=0x1798838, argc=1, vp=0x7fffffff6a88, res=JSVAL_VOID) at js/src/jit/BaselineIC.cpp:6113 -#4 0x00007ffff7f41395 in </code><<JitFrame_Exit>><code> () -#5 0x00007ffff7f42223 in </code><<JitFrame_BaselineStub>><code> () -#6 0x00007ffff7f4423d in </code><<JitFrame_BaselineJS>><code> () -#7 0x00007ffff7f4222e in </code><<JitFrame_BaselineStub>><code> () -#8 0x00007ffff7f4326a in </code><<JitFrame_BaselineJS>><code> () -#9 0x00007ffff7f38d5f in </code><<JitFrame_Entry>><code> () -#10 0x00000000006a86de in EnterBaseline(JSContext*, js::jit::EnterJitData&) (cx=0x14f2640, data=...) at js/src/jit/BaselineJIT.cpp:150 -</code></pre> - -<p>Note, when you enable the unwinder, the current version of gdb (7.10.1) does not flush the backtrace. Therefore, the JIT frames do not appear until you settle on the next breakpoint. To work-around this issue you can use the recording feature of <code>gdb</code>, to step one instruction, and settle back to where you came from with the following set of <code>gdb</code> commands:</p> - -<pre><code>(gdb) record full -(gdb) si -(gdb) record goto 0 -(gdb) record stop -</code></pre> - -<p>If you have a core file, you can use the gdb unwinder the same way, or do everything from the command line as follow:</p> - -<pre><code>$ gdb -ex 'enable unwinder .* SpiderMonkey' -ex 'bt 0' -ex 'thread apply all backtrace' -ex 'quit' out/dist/bin/js corefile -</code></pre> - -<p>The gdb unwinder is supposed to be loaded by <code>dist/bin/js-gdb.py</code> and load python scripts which are located in <code>js/src/gdb/mozilla</code> under gdb. If gdb does not load the unwinder by default, you can force it to, by using the <code>source</code> command with the <code>js-gdb.py</code> file.</p> - -<h3 id="生成されたコードにブレークポイントを設定する_(gdb_x86_x86-64_arm_から)">生成されたコードにブレークポイントを設定する (gdb, x86 / x86-64, arm から)</h3> - -<p>To set a breakpoint the generated code of a specific JSScript compiled with IonMonkey. Set a breakpoint on the instruction you are interested in. If you have no precise idea which function you are looking at, you can set a breakpoint on the <strong>js::ion::CodeGenerator::visitStart</strong> function. Optionally, a condition on the <strong>ins->id()</strong> of the LIR instruction can be added to select precisely the instruction you are looking for. Once the breakpoint is on <strong>CodeGenerator</strong> function of the LIR instruction, add a command to generate a static breakpoint in the generated code.</p> - -<pre class="eval"><code>$ gdb --args js -[…] -(gdb) b js::ion::CodeGenerator::visitStart -(gdb) command ->call masm.breakpoint() ->continue ->end -(gdb) r -js> function f(a, b) { return a + b; } -js> for (var i = 0; i < 100000; i++) f(i, i + 1); - -Breakpoint 1, js::ion::CodeGenerator::visitStart (this=0x101ed20, lir=0x10234e0) - at /home/nicolas/mozilla/ionmonkey/js/src/ion/CodeGenerator.cpp:609 -609 } - -Program received signal SIGTRAP, Trace/breakpoint trap. -0x00007ffff7fb165a in ?? () -(gdb) - -</code></pre> - -<p>Once you hit the generated breakpoint, you can replace it by a gdb breakpoint to make it conditional, the procedure is to first replace the generated breakpoint by a nop instruction, and to set a breakpoint at the address of the nop.</p> - -<pre class="eval"><code>(gdb) x /5i $pc - 1 - 0x7ffff7fb1659: int3 -=> 0x7ffff7fb165a: mov 0x28(%rsp),%rax - 0x7ffff7fb165f: mov %eax,%ecx - 0x7ffff7fb1661: mov 0x30(%rsp),%rdx - 0x7ffff7fb1666: mov %edx,%ebx - -(gdb) # replace the int3 by a nop -(gdb) set *(unsigned char *) ($pc - 1) = 0x90 -(gdb) x /1i $pc - 1 - 0x7ffff7fb1659: nop - -(gdb) # set a breakpoint at the previous location -(gdb) b *0x7ffff7fb1659 -Breakpoint 2 at 0x7ffff7fb1659 -</code> -</pre> - -<h3 id="イオン生成アセンブリコードのプリント_(gdb_から)">イオン生成アセンブリコードのプリント (gdb から)</h3> - -<p>If you want to look at the assembly code generated by IonMonkey, you can follow this procedure:</p> - -<ul> - <li>Place a breakpoint at CodeGenerator.cpp on the CodeGenerator::link method.</li> - <li>Step next a few times, so that the "code" variable gets generated</li> - <li>Print code->code_, which is the address of the code</li> - <li>Disassembly code read at this address (using x/Ni address, where N is the number of instructions you would like to see)</li> -</ul> - -<p>Here is an example. It might be simpler to use the CodeGenerator::link lineno instead of the full qualified name to put the breakpoint. Let's say that the line number of this function is 4780, for instance:</p> - -<pre>(gdb) b CodeGenerator.cpp:4780 -Breakpoint 1 at 0x84cade0: file /home/code/mozilla-central/js/src/ion/CodeGenerator.cpp, line 4780. -(gdb) r -Starting program: /home/code/mozilla-central/js/src/32-release/js -f /home/code/jaeger.js -[Thread debugging using libthread_db enabled] -Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". -[New Thread 0xf7903b40 (LWP 12563)] -[New Thread 0xf6bdeb40 (LWP 12564)] -Run#0 - -Breakpoint 1, js::ion::CodeGenerator::link (this=0x86badf8) - at /home/code/mozilla-central/js/src/ion/CodeGenerator.cpp:4780 -4780 { -(gdb) n -4781 JSContext *cx = GetIonContext()->cx; -(gdb) n -4783 Linker linker(masm); -(gdb) n -4784 IonCode *code = linker.newCode(cx, JSC::ION_CODE); -(gdb) n -4785 if (!code) -(gdb) p code->code_ -$1 = (uint8_t *) 0xf7fd25a8 "\201", <incomplete sequence \354\200> -(gdb) x/2i 0xf7fd25a8 - 0xf7fd25a8: sub $0x80,%esp - 0xf7fd25ae: mov 0x94(%esp),%ecx - -</pre> - -<p>On arm, the compiled JS code will always be ARM machine code, whereas spidermonkey itself is frequently Thumb2. Since there isn't debug info for the jitted code, you will need to tell gdb that you are looking at ARM code:</p> - -<pre>(gdb) set arm force-mode arm -</pre> - -<p>Or you can wrap the x command in your own command:</p> - -<pre>def xi - set arm force-mode arm - eval "x/%di %d", $arg0, $arg1 - set arm force-mode auto -end - -</pre> - -<h3 id="Printing_asm.jswasm_generated_assembly_code_(from_gdb)">Printing asm.js/wasm generated assembly code (from gdb)</h3> - -<ul> - <li> - <p>Set a breakpoint on <code>js::wasm::Instance::callExport</code> (defined in <code>WasmInstance.cpp</code> as of November 18th 2016). This will trigger for *any* asm.js/wasm call, so you should find a way to set this breakpoint for the only generated codes you want to look at.</p> - </li> - <li> - <p>Run the program.</p> - </li> - <li> - <p>Do <code>next</code> in gdb until you reach the definition of the <code>funcPtr</code>:</p> - </li> -</ul> - -<pre>// Call the per-exported-function trampoline created by GenerateEntry. │ -auto funcPtr = JS_DATA_TO_FUNC_PTR(ExportFuncPtr, codeBase() + func.entryOffset()); │ -if (!CALL_GENERATED_2(funcPtr, exportArgs.begin(), &tlsData_)) │ - return false; </pre> - -<ul> - <li><code>After it's set, x/64i funcPtr</code> will show you the trampoline code. There should be a call to an address at some point ; that's what we're targeting. Copy that address.</li> -</ul> - -<pre><code> 0x7ffff7ff6000: push %r15 - 0x7ffff7ff6002: push %r14 - 0x7ffff7ff6004: push %r13 - 0x7ffff7ff6006: push %r12 - 0x7ffff7ff6008: push %rbp - 0x7ffff7ff6009: push %rbx - 0x7ffff7ff600a: movabs $0xea4f80,%r10 - 0x7ffff7ff6014: mov 0x178(%r10),%r10 - 0x7ffff7ff601b: mov %rsp,0x40(%r10) - 0x7ffff7ff601f: mov (%rsi),%r15 - 0x7ffff7ff6022: mov %rdi,%r10 - 0x7ffff7ff6025: push %r10 - 0x7ffff7ff6027: test $0xf,%spl - 0x7ffff7ff602b: je 0x7ffff7ff6032 - 0x7ffff7ff6031: int3 - 0x7ffff7ff6032: callq 0x7ffff7ff5000 <------ right here</code></pre> - -<ul> - <li><code>x/64i address</code> (in this case: <code>x/64i 0x7ffff7ff6032</code>).</li> - <li>If you want to put a breakpoint at the function's entry, you can do: <code>b *address </code>(for instance here, <code>b* 0x7ffff7ff6032</code>). Then you can display the instructions around pc with<code> x/20i $pc, </code>and execute instruction by instruction with<code> stepi.</code></li> -</ul> - -<h3 id="Finding_the_script_of_Ion_generated_assembly_(from_gdb)">Finding the script of Ion generated assembly (from gdb)</h3> - -<p>When facing a bug in which you are in the middle of IonMonkey generated code, first thing to note, is that gdb's backtrace is not reliable, because the generated code does not keep a frame pointer. To figure it out you have to read the stack to infer the IonMonkey frame.</p> - -<pre><code>(gdb) </code>x /64a $sp -[…] -0x7fffffff9838: 0x7ffff7fad2da 0x141 -0x7fffffff9848: 0x7fffef134d40 0x2 -[…] -(gdb) p (*(JSFunction**) 0x7fffffff9848)->u.i.script_->lineno -$1 = 1 -(gdb) p (*(JSFunction**) 0x7fffffff9848)->u.i.script_->filename -$2 = 0xff92d1 "typein" -</pre> - -<p>The stack is order as defined in js/src/ion/IonFrames-x86-shared.h, it is composed of the return address, a descriptor (a small value), the JSFunction (if it is even) or a JSScript (if the it is odd, remove it to dereference the pointer) and the frame ends with the number of actual arguments (a small value too). If you want to know at which LIR the code is failing at, the <strong>js::ion::CodeGenerator::generateBody</strong> function can be intrumented to dump the LIR <strong>id</strong> before each instruction.</p> - -<pre><code>for (; iter != current->end(); iter++) { - IonSpew(IonSpew_Codegen, "instruction %s", iter->opName()); - […] - - masm.store16(Imm32(iter->id()), Address(StackPointer, -8)); // added - if (!iter->accept(this)) - return false; -</code> -<code> […] -</code><code>}</code></pre> - -<p><code>This modification will add an instruction which abuse the stack pointer </code>to store an immediate value (the LIR id) to a location which would never be generated by any sane compiler. Thus when dumping the assembly under gdb, this kind of instructions would be easily noticeable.</p> - -<h3 id="Viewing_the_MIRGraph_of_IonOdin_compilations_(from_gdb)">Viewing the MIRGraph of Ion/Odin compilations (from gdb)</h3> - -<p>With gdb instrumentation, we can call <a href="https://github.com/sstangl/iongraph">iongraph</a> program within gdb when the execution is stopped. This instrumentation adds an <strong><code>iongraph</code></strong> command when provided with an instance of a <strong><code>MIRGenerator*</code></strong>, will call <code>iongraph</code>, <code>graphviz</code> and your prefered png viewer to display the MIR graph at the precise time of the execution. To find <strong><code>MIRGenetator*</code></strong> instances, is best is to look up into the stack for <code>OptimizeMIR</code>, or <code>CodeGenerator::generateBody</code>. <strong><code>OptimizeMIR</code></strong> function has a <strong><code>mir</code></strong> argument, and the <strong><code>CodeGenerator::generateBody</code></strong> function has a member <strong><code>this->gen</code></strong>.</p> - -<pre><code>(gdb) bt</code> -#0 0x00000000007eaad4 in js::InlineList<js::jit::MBasicBlock>::begin() const (this=0x33dbbc0) at …/js/src/jit/InlineList.h:280 -#1 0x00000000007cb845 in js::jit::MIRGraph::begin() (this=0x33dbbc0) at …/js/src/jit/MIRGraph.h:787 -#2 0x0000000000837d25 in js::jit::BuildPhiReverseMapping(js::jit::MIRGraph&) (graph=...) at …/js/src/jit/IonAnalysis.cpp:2436 -#3 0x000000000083317f in js::jit::OptimizeMIR(js::jit::MIRGenerator*) (mir=0x33dbdf0) at …/js/src/jit/Ion.cpp:1570 -… -(gdb) frame 3 -#3 0x000000000083317f in js::jit::OptimizeMIR(js::jit::MIRGenerator*) (mir=0x33dbdf0) at …/js/src/jit/Ion.cpp:1570 -<code>(gdb) iongraph mir</code> - function 0 (asm.js compilation): success; 1 passes<code>.</code> -<code>/* open your png viewer with the result of iongraph */</code></pre> - -<p>This gdb instrumentation is supposed to work with debug builds, or with optimized build compiled with <code>--enable-jitspew</code> configure flag. External programs such as <code>iongraph</code>, <code>dot</code>, and your png viewer are search into the <code>PATH</code>, otherwise custom one can either be configured with environment variables (<code>GDB_IONGRAPH</code>, <code>GDB_DOT</code>, <code>GDB_PNGVIEWER</code>) before starting gdb, or with gdb parameters (<code>set iongraph-bin <path></code>, <code>set dot-bin <path></code>, <code>set pngviewer-bin <path></code>) within gdb.</p> - -<p>Enabling GDB instrumentation may require launching a JS shell executable that shares a directory with a file name "js-gdb.py". If js/src/js does not provide the "iongraph" command, try js/src/shell/js. GDB may complain that ~/.gdbinit requires modification to authorize user scripts, and if so will print out directions.</p> - -<h3 id="Break_on_valgrind_errors">Break on valgrind errors</h3> - -<p>Sometimes, a bug can be reproduced under valgrind but hardly under gdb. One way to investigate is to let valgrind start gdb for you, the other way documented here is to let valgrind act as a gdb server which can be manipulated from the gdb remote.</p> - -<pre><code>$ valgrind --smc-check=all-non-file</code> --vex-iropt-register-updates=allregs-at-mem-access <code>--vgdb-error=0 ./js …</code></pre> - -<p>This command will tell you how to start gdb as a remote. Be aware that functions which are usually dumping some output will do it in the shell where valgrind is started and not in the shell where gdb is started. Thus functions such as <strong>js::DumpBacktrace</strong>, when called from gdb, will print their output in the shell containing valgrind.</p> - -<h3 id="Adding_spew_for_Compilations_Bailouts_Invalidations_(from_gdb)">Adding spew for Compilations & Bailouts & Invalidations (from gdb)</h3> - -<p>If you are in rr, and forgot to record with the spew enabled with IONFLAGS or because this is an optimized build, then you can add similar spew with extra breakpoints within gdb. gdb has the ability to set breakpoints with commands, but a simpler / friendlier version is to use <strong>dprintf</strong>, with a location, and followed by printf-like arguments.</p> - -<pre>(gdb) dprintf js::jit::IonBuilder::IonBuilder, "Compiling %s:%d:%d-%d\n", info->script_->scriptSource()->filename_.mTuple.mFirstA, info->script_->lineno_, info->script_->sourceStart_, info->script_->sourceEnd_ -Dprintf 1 at 0x7fb4f6a104eb: file /home/nicolas/mozilla/contrib-push/js/src/jit/IonBuilder.cpp, line 159. -(gdb) cond 1 inliningDepth == 0 -(gdb) dprintf js::jit::BailoutIonToBaseline, "Bailout from %s:%d:%d-%d\n", iter.script()->scriptSource()->filename_.mTuple.mFirstA, iter.script()->lineno_, iter.script()->sourceStart_, iter.script()->sourceEnd_ -Dprintf 2 at 0x7fb4f6fe43dc: js::jit::BailoutIonToBaseline. (2 locations) -(gdb) dprintf Ion.cpp:3196, "Invalidate %s:%d:%d-%d\n", co->script_->scriptSource()->filename_.mTuple.mFirstA, co->script_->lineno_, co->script_->sourceStart_, co->script_->sourceEnd_ -Dprintf 3 at 0x7fb4f6a0b62a: file /home/nicolas/mozilla/contrib-push/js/src/jit/Ion.cpp, line 3196. -<code>(gdb) continue</code> -Compiling self-hosted:650:20470-21501 -Bailout from self-hosted:20:403-500 -Invalidate self-hosted:20:403-500 -</pre> - -<p>Note: the line 3196, listed above, corresponds to the location of the <a href="http://searchfox.org/mozilla-central/rev/f6c298b36db67a7109079c0dd7755f329c1d58e2/js/src/jit/Ion.cpp#3196">Jit spew inside jit::Invalidate function</a>.</p> - -<h2 id="ハッキングのヒント">ハッキングのヒント</h2> - -<h3 id="Benchmarking_(shell)">Benchmarking (shell)</h3> - -<p><a href="http://arewefastyet.com">AreWeFastYet.com</a> display the benchmark results of the JavaScript shell, and browser for B2G. These benchmarks are publicly recognized benchmarks suggested by other companies and are used as a metric to evaluate how fast JavaScript engines. This tool is maintained by the JavaScript Team, to find regressions and to compare SpiderMonkey with other JavaScript engines when possible. To run these benchmarks localy, you can clone <a href="https://github.com/haytjes/arewefastyet.git">AreWeFastYet sources</a> and look inside the <em>benchmarks</em> directory to run individual benchmarks with your JS shell.</p> - -<h3 id="Using_the_Gecko_Profiler_(browser_xpcshell)">Using the Gecko Profiler (browser / xpcshell)</h3> - -<p>see the section dedicated to <a href="/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler" title="/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler">profiling with the gecko profiler</a>. This method of profiling has the advantage of mixing the JavaScript stack with the C++ stack, which is useful to analyze library function issues. One tip is to start looking at a script with an inverted JS stack to locate the most expensive JS function, then to focus on the frame of this JS function, and to remove the inverted stack and look at C++ part of this function to determine from where the cost is coming from.</p> - -<h3 id="Using_the_JIT_Inspector_(browser)">Using the JIT Inspector (browser)</h3> - -<p>Install the <a href="https://addons.mozilla.org/en-US/firefox/addon/jit-inspector/" title="https://addons.mozilla.org/en-US/firefox/addon/jit-inspector/">JIT Inspector</a> addon in your browser. This addon provides estimated cost of IonMonkey , the Baseline compiler, and the interpreter. In addition it provides a clean way to analyze if instructions are inferred as being monomorphic or polymorphic in addition to the number of time each category of type has been observed.</p> - -<h3 id="Using_the_TraceLogger_(JS_shell_browser)">Using the TraceLogger (JS shell / browser)</h3> - -<p>Create graphs showing time spent in which engine and which function like <a href="https://raw.githubusercontent.com/h4writer/tracelogger/master/screenshot.png" title="http://alasal.be/ionmonkey/index.php?subject=octane-richards-82d28bdf9317">this</a>.</p> - -<p>Whenever running a testcase the file "tl-data.json" and several "tl-*" files get created in the "/tmp" directory. (Per proces a "tl-data-*PID*.json" file and per thread a "tl-tree.*PID*.*ID*.tl", "tl-event.*PID*.*ID*.tl" and "tl-dict.*PID*.*ID*.json" file). These files contain all information to create a tracelogger graph. On <a href="https://github.com/h4writer/tracelogger">https://github.com/h4writer/tracelogger</a> you can find the instructions to create the graph (Tools V2 > 1. Creating a tracelogging graph).</p> - -<p>Note 1: when you are doing this from "file:///" you will probably get a security warning in the console. This is because firefox doesn't allow loading files from the harddisk using httprequest, even when the file loading the file is on the harddisk. There are two solutions. One is to create a localhost server and serving the files there. The simplest way to do this is to run <code>python -m SimpleHTTPServer</code> from within the above directory. The other being disable this check in "about:config", by temporarily switching "security.fileuri.strict_origin_policy" to false</p> - -<p>Note 2: The files can be very big and take a long time to load in the browser. Therefore it might be good to reduce the logged file. This will remove entries that took only a minor time (=entries that will only show up with les than 1px). This can be done with the reduce.py script in <a href="https://github.com/haytjes/tracelogger/tree/master/tools_v2" title="https://github.com/haytjes/tracelogger">https://github.com/haytjes/tracelogger/tree/master/tools_v2</a>. You need to download "engine.js", "reduce.py", "reduce.js", "reduce-tree.js" and "reduce-corrections.js". Running this tool is a matter of running "python reduce.py JS_SHELL /tmp/tl-data.json tl-reduced". Where JS_SHELL is a real shell.</p> - -<h3 id="Using_callgrind_(JS_shell)">Using callgrind (JS shell)</h3> - -<p>As SpiderMonkey just-in-time compiler are rewriting the executed program, valgrind should be informed from the command line by adding <strong>--smc-check=all-non-file</strong>.</p> - -<pre class="eval"><code>$ valgrind --tool=callgrind --callgrind-out-file=bench.clg \ - --smc-check=all-non-file</code> --vex-iropt-register-updates=allregs-at-mem-access<code> ./js ./run.js -</code></pre> - -<p>The output file can then be use with <strong>kcachegrind</strong> which provides a graphical view of the call graph.</p> - -<h3 id="Using_IonMonkey_spew_(JS_shell)">Using IonMonkey spew (JS shell)</h3> - -<p>IonMonkey spew is extremely verbose (not as much as the INFER spew), but you can filter it to focus on the list of compiled scripts or channels, IonMonkey spew channels can be selected with the IONFLAGS environment variable, and compilation spew can be filtered with IONFILTER.</p> - -<p>IONFLAGS contains the names of each channel separated by commas. The <strong>logs</strong> channel produces 2 files in <em>/tmp/</em>, one (<em>/tmp/ion.json</em>) made to be used with <a class="external text" href="https://github.com/sstangl/iongraph" rel="nofollow">iongraph</a> (made by Sean Stangl) and another one (<em>/tmp/ion.cfg</em>) made to be used with <a class="external text" href="http://java.net/projects/c1visualizer/" rel="nofollow">c1visualizer</a>. These tools will show the MIR & LIR steps done by IonMonkey during the compilation. If you would like to use <a class="external text" href="https://github.com/sstangl/iongraph" rel="nofollow" style="line-height: 1.572;">iongraph</a>, you must install <a href="http://www.graphviz.org/Download..php" title="http://www.graphviz.org/Download..php">Graphviz</a>.</p> - -<p>Compilation logs and spew can be filtered with the IONFILTER environment variable which contains locations as output in other spew channels. Multiple locations can be separated with comma as a separator of locations.</p> - -<pre class="eval"><code>$ IONFILTER=pdfjs.js:16934 IONFLAGS=logs,scripts,osi,bailouts ./js --ion-offthread-compile=off ./run.js 2>&1 | less</code></pre> - -<p>The <strong>bailouts</strong> channel is likely to be the first thing you should focus on, because this means that something does not stay in IonMonkey and fallback to the interpreter. This channel output locations (as returned by the<strong> id()</strong> function of both instructions) of the latest MIR and the latest LIR phases. These locations should correspond to phases of the <strong>logs</strong> and a filter can be used to remove uninteresting functions.</p> - -<h3 id="Using_the_ARM_simulator">Using the ARM simulator</h3> - -<p>The ARM simulator can be used to test the ARM JIT backend on x86/x64 hardware. An ARM simulator build is an x86 shell (or browser) with the ARM JIT backend. Instead of entering JIT code, it runs it in a simulator (interpreter) for ARM code. To use the simulator, compile an x86 shell (32-bit, x64 doesn't work as we use a different Value format there), and pass --enable-arm-simulator to configure. For instance, on a 64-bit Linux host you can use the following configure command to get an ARM simulator build:</p> - -<pre class="line-numbers language-html"><code class="language-html">AR=ar CC="gcc -m32" CXX="g++ -m32" ../configure --target=i686-pc-linux --enable-debug --disable-optimize --enable-threadsafe --enable-simulator=arm</code></pre> - -<p>Or on OS X:</p> - -<pre> $ AR=ar CC="clang -m32" CXX="clang++ -m32" ../configure --target=i686-apple-darwin10.0.0 --enable-debug --disable-optimize --enable-threadsafe --enable-arm-simulator</pre> - -<p>An --enable-debug --enable-optimize build is recommended if you want to run jit-tests or jstests.</p> - -<h4 id="Use_the_VIXL_Debugger_in_the_simulator_(arm64)">Use the VIXL Debugger in the simulator (arm64)</h4> - -<p>Set a breakpoint (see the comments above about <code>masm.breakpoint()</code>) and run with the environment variable <code>USE_DEBUGGER=1</code>. This will then drop you into a simple debugger provided with VIXL, the ARM simulator technology used for arm64 simulation.</p> - -<h4 id="Use_the_Simulator_Debugger_for_arm32">Use the Simulator Debugger for arm32</h4> - -<p>The same instructions for arm64 in the preceeding section apply, but the environment variable differs: Use <code>ARM_SIM_DEBUGGER=1</code>.</p> - -<h4 id="Building_the_browser_with_the_ARM_simulator">Building the browser with the ARM simulator</h4> - -<p>You can also build the entire browser with the ARM simulator backend, for instance to reproduce browser-only JS failures on ARM. Make sure to build a browser for x86 (32-bits) and add this option to your mozconfig file:</p> - -<pre>ac_add_options --enable-arm-simulator -</pre> - -<p>If you are under an Ubuntu or Debian 64-bits distribution and you want to build a 32-bits browser, it might be hard to find the relevant 32-bits dependencies. You can use <a href="https://github.com/padenot/fx-32-on-64.sh">padenot's scripts</a> which will magically setup a chrooted 32-bits environment and do All The Things (c) for you (you just need to modify the mozconfig file).</p> - -<h3 id="Using_rr_on_a_test">Using rr on a test</h3> - -<p>Get the command line for your test run using -s:</p> - -<pre>./jit_test.py -s $JS_SHELL saved-stacks/async.js</pre> - -<p>Insert 'rr' before the shell invocation:</p> - -<pre><code>rr $JS_SHELL -f $JS_SRC/jit-test/lib/prolog.js --js-cache $JS_SRC/jit-test/.js-cache -e "const platform='linux2'; const libdir='$JS_SRC/jit-test/lib/'; const scriptdir='$JS_SRC/jit-test/tests/saved-stacks/'" -f $JS_SRC/jit-test/tests/saved-stacks/async.js</code></pre> - -<p>(note that the above is an example; simply setting JS_SHELL and JS_SRC will not work). Or if this is an intermittent, run it in a loop capturing an rr log for every one until it fails:</p> - -<pre><code>n=1; while rr ...same.as.above...; do echo passed $n; n=$(( $n + 1 )); done</code></pre> - -<p>Wait until it hits a failure. Now you can run <code>rr replay</code> to replay that last (failed) run under gdb.</p> - -<h4 id="rr_with_reftest">rr with reftest</h4> - -<p>To break on the write of a differing pixel:</p> - -<ol> - <li>Find the X/Y of a pixel that differs</li> - <li>Use 'run Z' where Z is the mark in the log for TEST-START. For example in '[rr 28496 607198]REFTEST TEST-START | file:///home/bgirard/mozilla-central/tree/image/test/reftest/bmp/bmpsuite/b/wrapper.html?badpalettesize.bmp' Z would be 607198.</li> - <li>break 'mozilla::dom::CanvasRenderingContext2D::DrawWindow(nsGlobalWindow&, double, double, double, double, nsAString_internal const&, unsigned int, mozilla::ErrorResult&)'</li> - <li>cont</li> - <li>break 'PresShell::RenderDocument(nsRect const&, unsigned int, unsigned int, gfxContext*)'</li> - <li>set print object on</li> - <li>set $x = <YOUR X VALUE></li> - <li>set $y = <YOUR Y VALUE></li> - <li>print &((cairo_image_surface_t*)aThebesContext->mDT.mRawPtr->mSurface).data[$y * ((cairo_image_surface_t*)aThebesContext->mDT.mRawPtr->mSurface).stride + $x * ((cairo_image_surface_t*)aThebesContext->mDT.mRawPtr->mSurface).depth / 8]</li> - <li> - <p>watch *(char*)<ADDRESS OF PREVIOUS COMMAND> (NOTE: If you set a watch on the previous expression gdb will watch the expression and run out of watchpoint)</p> - </li> -</ol> - -<h4 id="rr_with_emacs">rr with emacs</h4> - -<p>Within emacs, do <code>M-x gud-gdb</code> and replace the command line with <code>rr replay</code>. When gdb comes up, enter</p> - -<pre><code>set annot 1</code></pre> - -<p>to get it to emit file location information so that emacs will pop up the corresponding source. Note that if you <code>reverse-continue</code> over a SIGSEGV and you're using the standard .gdbinit that sets a catchpoint for that signal, you'll get an additional stop at the catchpoint. Just <code>reverse-continue</code> again to continue to your breakpoints or whatever.</p> - -<h3 id="Hack_Replacing_one_instruction">[Hack] Replacing one instruction</h3> - -<p>To replace one specific instruction, you can use in visit function of each instruction the JSScript <strong>filename</strong> in <strong>lineno</strong> fields as well as the <strong>id()</strong> of the LIR / MIR instructions. The JSScript can be obtained from <strong>info().script()</strong>.</p> - -<pre class="eval"><code>bool -CodeGeneratorX86Shared::visitGuardShape(LGuardShape *guard) -{ - if (info().script()->lineno == 16934 && guard->id() == 522) { - [… another impl only for this one …] - return true; - } - [… old impl …] -</code></pre> - -<h3 id="Hack_Spewing_all_compiled_code">[Hack] Spewing all compiled code</h3> - -<p>I usually just add this to the apropriate executableCopy.</p> - -<pre><span class="quote"> if (getenv("INST_DUMP")) { - char buf[4096]; - sprintf(buf, "gdb /proc/%d/exe %d -batch -ex 'set pagination off' -ex 'set arm force-mode arm' -ex 'x/%di %p' -ex 'set arm force-mode auto'", getpid(), getpid(), m_buffer.size() / 4, buffer); - system(buf); - }</span> - -</pre> - -<p>If you aren't running on arm, you should omit the -ex 'set arm force-mode arm' and -ex 'set arm force-mode auto'. And you should change the size()/4 to be something more apropriate for your architecture.</p> - -<h3 id="Benchmarking_with_sub-milliseconds_(JS_shell)">Benchmarking with sub-milliseconds (JS shell)</h3> - -<p>In the shell we have 2 simple ways to benchmark a script, we can either use the <strong>-b</strong> shell option (<strong>--print-timing</strong>) which will evaluate a script given on the command line without any need to instrument the benchmark and print an extra line showing the run-time of the script. The other way is to wrap the section that you want to measure with the <strong>dateNow()</strong> function call which returns the number of milliseconds, with a decimal part for sub-milliseconds.</p> - -<pre class="eval">js> dateNow() - dateNow() --0.0009765625<code> -</code></pre> - -<h3 id="Benchmarking_with_sub-milliseconds_(browser)">Benchmarking with sub-milliseconds (browser)</h3> - -<p>In a simillar way as <strong>dateNow()</strong> in the JS shell, you can use <strong>performance.now()</strong> in the JavaScript code of a page.</p> - -<h3 id="Dumping_the_JavaScript_heap">Dumping the JavaScript heap</h3> - -<p>From the shell, you can call the dumpHeap before Firefox function to dump out all GC things (reachable and unreachable) that are present in the heap. By default the function writes to stdout, but a filename can be specified as an argument.</p> - -<p>Example output might look as follows:</p> - -<pre class="eval"><code>0x1234abcd B global object -</code>========== -# zone 0x56789123 -# compartment http://gmail.com [in zone 0x56789123] -# compartment http://gmail.com/iframe [in zone 0x56789123] -# arena<code> allockind=3 size=64 -0x1234abcd B object -> 0x1234abcd B prop1 -> 0xabcd1234 W prop2 -0xabcd1234 W object -> 0xdeadbeef B prop3 -# arena allockind=5 size=72 -0xdeadbeef W object -> 0xabcd1234 W prop4 </code></pre> - -<p>The output is textual. The first section of the file contains a list of roots, one per line. Each root has the form "0xabcd1234 <color> <description>", where <color> is the color of the given GC thing (B for black, G for gray, W for white) and <description> is a string. The list of roots ends with a line containing "==========".</p> - -<p>After the roots come a series of zones. A zone starts with several "comment lines" that start with hashes. The first comment declares the zone. It is followed by lines listing each compartment within the zone. After all the compartments come arenas, which is where the GC things are actually stored. Each arena is followed by all the GC things in the arena. A GC thing starts with a line giving its address, its color, and the thing kind (object, function, whatever). After this come a list of addresses that the GC thing points to, each one starting with ">".</p> - -<p>It's also possible to dump the JavaScript heap from C++ code (or from gdb) using the js::DumpHeap function. It is part of jsfriendapi.h and it is available in release builds.</p> - -<h3 id="Inspecting_MIR_objects_within_a_debugger">Inspecting MIR objects within a debugger</h3> - -<p>For MIRGraph, MBasicBlock, and MDefinition and its subclasses (MInstruction, MConstant, etc.), call the dump member function.</p> - -<pre> (gdb) call graph->dump() - - (gdb) call block->dump() - - (gdb) call def->dump() - -</pre> - -<h3 id="Benchmarking_without_a_Phone">Benchmarking without a Phone</h3> - -<p>If you do not have a mobile device or prefer to test on your desktop first, you will need to downgrade your computer such as it is able to run programs as fast as-if they were running on a phone.</p> - -<p>On Linux, you can manage the resources available to one program by using cgroup, and to do you can install <strong>libcgroup</strong> which provides some convenient tools such as <strong>cgexec</strong> to wrap the program that you want to benchmark.</p> - -<p>The following list of commands is used to create 3 control groups. The top-level control group is just to group the <strong>mask</strong> and the <strong>negate-mask</strong>. The <strong>mask</strong> control group is used to run the program that we want to benchmark. The <strong>negate-mask</strong> control group is used to reserve resources which might be used by the other program if not reserved.</p> - -<pre> $ sudo cgcreate -a nicolas:users -t nicolas:users -g cpuset,cpu,memory:/benchmarks - $ cgcreate -a nicolas:users -t nicolas:users -g cpuset,cpu,memory:/benchmarks/mask - $ cgcreate -a nicolas:users -t nicolas:users -g cpuset,cpu,memory:/benchmarks/negate-mask -</pre> - -<p>Then we restrict programs of these groups to the first core of the CPU. This is a list of cpu, which means that we can allocate 2 cores by doing <strong>0-1</strong> instead of <strong>0</strong>.</p> - -<pre> $ cgset -r cpuset.cpus=0 /benchmarks - $ cgset -r cpuset.cpus=0 /benchmarks/mask - $ cgset -r cpuset.cpus=0 /benchmarks/negate-mask -</pre> - -<p>Then we restrict programs of these groups to the first memory node. Most of the time you will only have one, otherwise you should read what is the best setting to set here. If this is not set, you will have some error when you will try to write a pid in <strong>/sys/fs/cgroup/cpuset/benchmarks/mask/tasks</strong> while running <strong>cgexec</strong>.</p> - -<pre> $ cgset -r cpuset.mems=0 /benchmarks - $ cgset -r cpuset.mems=0 /benchmarks/mask - $ cgset -r cpuset.mems=0 /benchmarks/negate-mask -</pre> - -<p>Then we limit the performance of the CPU, as a proportion such as the result approximately correspond to what you might have if you were running on a phone. For example an Unagi is approximately 40 times slower than my computer. So I allocate <strong>1/40</strong> for the mask, and <strong>39/40</strong> for the negate-mask.</p> - -<pre> $ cgset -r cpu.shares=1 /benchmarks/mask - $ cgset -r cpu.shares=39 /benchmarks/negate-mask -</pre> - -<p>Then we limit the memory available, to what would be available on the phone. For example an Unagi you want to limit this to 512 MB. As there is no swap, on this device, we set the <strong>memsw</strong> (Memory+Swap) to the same value.</p> - -<pre> $ cgset -r memory.limit_in_bytes=$((512*1024*1024)) /benchmarks/mask - $ cgset -r memory.memsw.limit_in_bytes=$((512*1024*1024)) /benchmarks/mask -</pre> - -<p>And finally, we run the program that we want to benchmark after the one which is consuming resources. In case of the JS Shell we might also want to set the amount of memory available to change the GC settings as if we were running on a Firefox OS device.</p> - -<pre> $ cgexec -g 'cpuset,cpu,memory:/benchmarks/negate-mask' yes > /dev/null & - $ cgexec -g 'cpuset,cpu,memory:/benchmarks/mask' ./js --available-memory=512 ./run.js -</pre> - -<h3 id="How_to_debug_oomTest()_failures">How to debug oomTest() failures</h3> - -<p>The oomTest() function executes a piece of code many times, simulating an OOM failure at each successive allocation it makes. It's designed to highlight incorrect OOM handling and this may show up as a crash or assertion failure at some later point.</p> - -<p>When debugging such a crash the most useful thing is to locate the last simulated alloction failure, as it's usually this that has caused the subsequent crash.</p> - -<p>My workflow for doing this is as follows:</p> - -<ol> - <li>Build a version of the engine with <code>--enable-debug</code> and <code>--enable-oom-breakpoint</code> configure flags.</li> - <li>Set the environment variable <code>OOM_VERBOSE=1</code> and reproduce the failure. This will print an allocation count at each simulated failure. Note the count of the last allocation.</li> - <li>Run the engine under a debugger and set a breakpoint on the function <code>js_failedAllocBreakpoint</code>.</li> - <li>Run the program and continue the necessary number of times until you reach the final allocation. - <ul> - <li>e.g. in lldb, if the allocation failure number shown is 1500, run `continue -i 1498` (subtracted 2 because we've already hit it once and don't want to skip the last). Drop "-i" for gdb.</li> - </ul> - </li> - <li>Dump a backtrace. This should show you the point at which the OOM is incorrectly handled, which will be a few frames up from the breakpoint.</li> -</ol> - -<p>Note: if you are on linux it may be simpler to use rr.</p> - -<p>Some guidelines for handling OOM that lead to failures when they are not followed:</p> - -<ol> - <li>Check for allocation failure! - <ul> - <li>Fallible allocations should always must be checked and handled, at a minimum by returning a status indicating failure to the caller.</li> - </ul> - </li> - <li>Report OOM to the context if you have one - <ul> - <li>If a function has a <code>JSContext*</code> argument, usually it should call <code>js::ReportOutOfMemory(cx)</code> on allocation failure to report this to the context.</li> - </ul> - </li> - <li>Sometimes it's OK to ignore OOM - <ul> - <li>For example if you are performing a speculative optimisation you might abandon it and continue anyway. But in this case you may have to call cx->recoverFromOutOfMemory() if something further down the stack has already reported the failure.</li> - </ul> - </li> -</ol> - -<h3 id="Debugging_GC_markingrooting">Debugging GC marking/rooting</h3> - -<p>The <strong>js::debug</strong> namespace contains some functions that are useful for watching mark bits for an individual JSObject* (or any Cell*). <strong>js/src/gc/Heap.h</strong> contains a comment describing an example usage. Reproduced here:</p> - -<pre>// Sample usage from gdb: -// -// (gdb) p $word = js::debug::GetMarkWordAddress(obj) -// $1 = (uintptr_t *) 0x7fa56d5fe360 -// (gdb) p/x $mask = js::debug::GetMarkMask(obj, js::gc::GRAY) -// $2 = 0x200000000 -// (gdb) watch *$word -// Hardware watchpoint 7: *$word -// (gdb) cond 7 *$word & $mask -// (gdb) cont -// -// Note that this is *not* a watchpoint on a single bit. It is a watchpoint on -// the whole word, which will trigger whenever the word changes and the -// selected bit is set after the change. -// -// So if the bit changing is the desired one, this is exactly what you want. -// But if a different bit changes (either set or cleared), you may still stop -// execution if the $mask bit happened to already be set. gdb does not expose -// enough information to restrict the watchpoint to just a single bit. -</pre> - -<p>Most of the time, you will want <strong>js::gc::BLACK</strong> (or you can just use 0) for the 2nd param to <strong>js::debug::GetMarkMask</strong>.</p> diff --git a/files/ja/mozilla/projects/spidermonkey/how_to_embed_the_javascript_engine/index.html b/files/ja/mozilla/projects/spidermonkey/how_to_embed_the_javascript_engine/index.html deleted file mode 100644 index 7b623d6cbd..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/how_to_embed_the_javascript_engine/index.html +++ /dev/null @@ -1,474 +0,0 @@ ---- -title: JavaScript エンジンを埋め込む方法 -slug: Mozilla/Projects/SpiderMonkey/How_to_embed_the_JavaScript_engine -tags: - - Embedding Mozilla - - JavaScript - - SpiderMonkey - - チュートリアル -translation_of: Mozilla/Projects/SpiderMonkey/How_to_embed_the_JavaScript_engine ---- -<div>{{SpiderMonkeySidebar("General")}}</div> - -<p>特により良いコードの例として <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide" title="En/SpiderMonkey/JSAPI_User_Guide">JSAPI User Guide</a> も参照して下さい。</p> - -<h2 id="A_Bare_Bones_Tutorial" name="A_Bare_Bones_Tutorial">チュートリアル要点</h2> - -<h3 id="Hello_World_サンプル組み込みアプリケーション">Hello World サンプル組み込みアプリケーション</h3> - -<p>次のコードは、SpiderMonkey を埋め込んで単純な JavaScript スクリプトを実行する方法を示す非常に単純なアプリケーションです。下のコードのサンプルをビルドして実行するための手順を参照してください。</p> - -<p>コードは SpiderMonkey のバージョンごとに異なりますので、SpiderMonkey の正しいバージョンを選択してください。</p> - -<h4 id="SpiderMonkey_24">SpiderMonkey 24</h4> - -<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp"><span class="comment token">// following code might be needed in some case</span> -<span class="comment token">// #define __STDC_LIMIT_MACROS</span> -<span class="comment token">// #include <stdint.h></span> -#include <span class="string token">"jsapi.h"</span> - -<span class="comment token">/* The class of the global object. */</span> -static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span> - <span class="string token">"global"</span><span class="punctuation token">,</span> - JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span> - JS_PropertyStub<span class="punctuation token">,</span> - JS_DeletePropertyStub<span class="punctuation token">,</span> - JS_PropertyStub<span class="punctuation token">,</span> - JS_StrictPropertyStub<span class="punctuation token">,</span> - JS_EnumerateStub<span class="punctuation token">,</span> - JS_ResolveStub<span class="punctuation token">,</span> - JS_ConvertStub<span class="punctuation token">,</span> -<span class="punctuation token">}</span><span class="punctuation token">;</span> - -int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span> -<span class="punctuation token">{</span> - JSRuntime <span class="operator token">*</span>rt <span class="operator token">=</span> <span class="function token">JS_NewRuntime</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">,</span> JS_USE_HELPER_THREADS<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>rt<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span>rt<span class="punctuation token">,</span> <span class="number token">8192</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span> - <span class="comment token">// out of scope before we JS_DestroyContext.</span> - - JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span> - <span class="comment token">// time you're spinning the event loop</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>global<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span> - JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - - const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span> - const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span> - int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span> - bool ok <span class="operator token">=</span> <span class="function token">JS_EvaluateScript</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> filename<span class="punctuation token">,</span> lineno<span class="punctuation token">,</span> rval<span class="punctuation token">.</span><span class="function token">address</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<span class="punctuation token">.</span><span class="function token">toString</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_DestroyRuntime</span><span class="punctuation token">(</span>rt<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span> -<span class="punctuation token">}</span></code></pre> - -<h4 id="SpiderMonkey_31">SpiderMonkey 31</h4> - -<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp"><span class="comment token">// following code might be needed in some case</span> -<span class="comment token">// #define __STDC_LIMIT_MACROS</span> -<span class="comment token">// #include <stdint.h></span> -#include <span class="string token">"jsapi.h"</span> - -<span class="comment token">/* The class of the global object. */</span> -static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span> - <span class="string token">"global"</span><span class="punctuation token">,</span> - JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span> - JS_PropertyStub<span class="punctuation token">,</span> - JS_DeletePropertyStub<span class="punctuation token">,</span> - JS_PropertyStub<span class="punctuation token">,</span> - JS_StrictPropertyStub<span class="punctuation token">,</span> - JS_EnumerateStub<span class="punctuation token">,</span> - JS_ResolveStub<span class="punctuation token">,</span> - JS_ConvertStub<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - JS_GlobalObjectTraceHook -<span class="punctuation token">}</span><span class="punctuation token">;</span> - -int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span> -<span class="punctuation token">{</span> - <span class="function token">JS_Init</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - - JSRuntime <span class="operator token">*</span>rt <span class="operator token">=</span> <span class="function token">JS_NewRuntime</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">,</span> JS_USE_HELPER_THREADS<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>rt<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span>rt<span class="punctuation token">,</span> <span class="number token">8192</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span> - <span class="comment token">// out of scope before we JS_DestroyContext.</span> - - JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span> - <span class="comment token">// time you're spinning the event loop</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">,</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span>FireOnNewGlobalHook<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>global<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span> - JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - - const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span> - const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span> - int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span> - bool ok <span class="operator token">=</span> <span class="function token">JS_EvaluateScript</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> filename<span class="punctuation token">,</span> lineno<span class="punctuation token">,</span> <span class="operator token">&</span>rval<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<span class="punctuation token">.</span><span class="function token">toString</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_DestroyRuntime</span><span class="punctuation token">(</span>rt<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span> -<span class="punctuation token">}</span></code></pre> - -<h4 id="SpiderMonkey_38">SpiderMonkey 38</h4> - -<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp"><span class="comment token">// following code might be needed in some case</span> -<span class="comment token">// #define __STDC_LIMIT_MACROS</span> -<span class="comment token">// #include <stdint.h></span> -#include <span class="string token">"jsapi.h"</span> - -<span class="comment token">/* The class of the global object. */</span> -static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span> - <span class="string token">"global"</span><span class="punctuation token">,</span> - JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - JS_GlobalObjectTraceHook -<span class="punctuation token">}</span><span class="punctuation token">;</span> - -int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span> -<span class="punctuation token">{</span> - <span class="function token">JS_Init</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - - JSRuntime <span class="operator token">*</span>rt <span class="operator token">=</span> <span class="function token">JS_NewRuntime</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>rt<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span>rt<span class="punctuation token">,</span> <span class="number token">8192</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span> - <span class="comment token">// out of scope before we JS_DestroyContext.</span> - - JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span> - <span class="comment token">// time you're spinning the event loop</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">,</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span>FireOnNewGlobalHook<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>global<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span> - JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - - const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span> - const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span> - int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span> - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>CompileOptions <span class="function token">opts</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - opts<span class="punctuation token">.</span><span class="function token">setFileAndLine</span><span class="punctuation token">(</span>filename<span class="punctuation token">,</span> lineno<span class="punctuation token">)</span><span class="punctuation token">;</span> - bool ok <span class="operator token">=</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span><span class="function token">Evaluate</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">,</span> opts<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> <span class="operator token">&</span>rval<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<span class="punctuation token">.</span><span class="function token">toString</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_DestroyRuntime</span><span class="punctuation token">(</span>rt<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span> -<span class="punctuation token">}</span></code></pre> - -<h4 id="SpiderMonkey_45">SpiderMonkey 45</h4> - -<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp"><span class="comment token">// following code might be needed in some case</span> -<span class="comment token">// #define __STDC_LIMIT_MACROS</span> -<span class="comment token">// #include <stdint.h></span> -#include <span class="string token">"jsapi.h"</span> -#include <span class="string token">"js/Initialization.h"</span> - -<span class="comment token">/* The class of the global object. */</span> -static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span> - <span class="string token">"global"</span><span class="punctuation token">,</span> - JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - JS_GlobalObjectTraceHook -<span class="punctuation token">}</span><span class="punctuation token">;</span> - -int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span> -<span class="punctuation token">{</span> - <span class="function token">JS_Init</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - - JSRuntime <span class="operator token">*</span>rt <span class="operator token">=</span> <span class="function token">JS_NewRuntime</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>rt<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span>rt<span class="punctuation token">,</span> <span class="number token">8192</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span> - <span class="comment token">// out of scope before we JS_DestroyContext.</span> - - JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span> - <span class="comment token">// time you're spinning the event loop</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">,</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span>FireOnNewGlobalHook<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>global<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span> - JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - - const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span> - const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span> - int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span> - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>CompileOptions <span class="function token">opts</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - opts<span class="punctuation token">.</span><span class="function token">setFileAndLine</span><span class="punctuation token">(</span>filename<span class="punctuation token">,</span> lineno<span class="punctuation token">)</span><span class="punctuation token">;</span> - bool ok <span class="operator token">=</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span><span class="function token">Evaluate</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> opts<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> <span class="operator token">&</span>rval<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<span class="punctuation token">.</span><span class="function token">toString</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_DestroyRuntime</span><span class="punctuation token">(</span>rt<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span> -<span class="punctuation token">}</span></code></pre> - -<h4 id="SpiderMonkey_52">SpiderMonkey 52</h4> - -<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp">#include <span class="string token">"jsapi.h"</span> -#include <span class="string token">"js/Initialization.h"</span> - -static JSClassOps global_ops <span class="operator token">=</span> <span class="punctuation token">{</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - nullptr<span class="punctuation token">,</span> - JS_GlobalObjectTraceHook -<span class="punctuation token">}</span><span class="punctuation token">;</span> - -<span class="comment token">/* The class of the global object. */</span> -static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span> - <span class="string token">"global"</span><span class="punctuation token">,</span> - JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span> - <span class="operator token">&</span>global_ops -<span class="punctuation token">}</span><span class="punctuation token">;</span> - -int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span> -<span class="punctuation token">{</span> - <span class="function token">JS_Init</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - - JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>JS<span class="punctuation token">:</span><span class="punctuation token">:</span><span class="function token">InitSelfHostedCode</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span> - <span class="comment token">// out of scope before we JS_DestroyContext.</span> - - JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span> - <span class="comment token">// time you're spinning the event loop</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>CompartmentOptions options<span class="punctuation token">;</span> - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">,</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span>FireOnNewGlobalHook<span class="punctuation token">,</span> options<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>global<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - - <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span> - JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span> - - const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span> - const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span> - int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span> - JS<span class="punctuation token">:</span><span class="punctuation token">:</span>CompileOptions <span class="function token">opts</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - opts<span class="punctuation token">.</span><span class="function token">setFileAndLine</span><span class="punctuation token">(</span>filename<span class="punctuation token">,</span> lineno<span class="punctuation token">)</span><span class="punctuation token">;</span> - bool ok <span class="operator token">=</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span><span class="function token">Evaluate</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> opts<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> <span class="operator token">&</span>rval<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span> - <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<span class="punctuation token">.</span><span class="function token">toString</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="punctuation token">}</span> - - <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span> -<span class="punctuation token">}</span></code></pre> - -<h3 id="Hello_Worldの例のビルドと実行">Hello Worldの例のビルドと実行</h3> - -<div> -<p>ビルドコマンドラインは OS とツールに依存します。Mac と Linux のコマンドラインのサンプルを次に示します (<code><objdir></code> は SpiderMonkey がビルドされたディレクトリです)。</p> - -<pre class="line-numbers language-html"><code class="language-html"># </code>SpiderMonkey のデバッグビルドを使用している場合は、以下のコマンドに加えて -DDEBUG が必要です。<code class="language-html"> -# </code>SpiderMonkey 31 以外のバージョンを使用している場合は、-lmozjs-XX を自分のバージョンに変更してください。<code class="language-html"> - -[Mac] -clang++ -std=c++11 -I<span class="tag token"><span class="tag token"><span class="punctuation token"><</span>objdir</span><span class="punctuation token">></span></span>/dist/include -L<span class="tag token"><span class="tag token"><span class="punctuation token"><</span>objdir</span><span class="punctuation token">></span></span>/dist/lib helloworld.cpp -o helloworld -lmozjs-31 -lz -[Linux] -g++ -std=c++11 -I<span class="tag token"><span class="tag token"><span class="punctuation token"><</span>objdir</span><span class="punctuation token">></span></span>/dist/include -L<span class="tag token"><span class="tag token"><span class="punctuation token"><</span>objdir</span><span class="punctuation token">></span></span>/dist/lib helloworld.cpp -o helloworld -lmozjs-31 -lz -lpthread -ldl</code></pre> - -<p><code>"helloworld, it is TIME"</code> と表示されます (ここでは TIME が現在の時刻です)。</p> - -<ol> - <li>Make sure the build computer has the prerequisites for building SpiderMonkey: <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Linux_Prerequisites" title="Linux Prerequisites">Linux</a>, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Windows_Prerequisites" title="Windows build prerequisites">Windows</a>, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Mac_OS_X_Prerequisites" title="Mac OS X Build Prerequisites">Mac OS X</a>, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions" title="Build Instructions">others</a>. For Windows, the following steps will assume that you have installed the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Windows_Prerequisites" title="MozillaBuild">MozillaBuild</a> package.</li> - <li>Get the SpiderMonkey source code. You can <a href="http://ftp.mozilla.org/pub/mozilla.org/js/" title="http://ftp.mozilla.org/pub/mozilla.org/js/">download a source archive</a> or use Mercurial (hg) to <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Getting_SpiderMonkey_source_code#Getting_the_latest_SpiderMonkey_source_code" title="Getting the latest SpiderMonkey source code">pull the SpiderMonkey repository</a>. On Windows, do not install the SpiderMonkey source code under the MSYS root directory (which is usually c:\mozilla-build\msys). Instead use something like c:\mozjs-31.2.0</li> - <li>Compile SpiderMonkey using the build instructions at <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation" title="Build Documentation">SpiderMonkey Build Documentation</a>. By default this will build a SpiderMonkey shared library that you will link into your application in a later step.</li> - <li>Copy the code example above into a text editor and save the file as helloworld.cpp in the SpiderMonkey js\src directory. To get a copy of the code sample without line numbers, hover over the sample near the top until buttons appear. Then click the view source button, and copy the code from the window that appears.</li> - <li>Compile the helloworld application and link to the SpiderMonkey library.</li> - <li>Run the helloworld executable at the command line: - <pre class="line-numbers language-html"><code class="language-html">./helloworld</code></pre> - </li> -</ol> -</div> - -<h3 id="JavaScript_から_C_関数の呼び出し方">JavaScript から C 関数の呼び出し方</h3> - -<p><code>doit</code> という名前のC関数について言及します。これは呼び出されるときに少なくとも二つの実際のパラメータを使います。(もし呼びだし元がより少ないパラメータを使う場合、JSエンジンは無くなった一つの変数に対して未定義の変数が渡される事を確認すべきです):</p> - -<pre class="eval">#define DOIT_MINARGS 2 - -static JSBool -doit(JSContext *cx, unsigned argc, jsval *vp) -{ -<span id="the-code"><a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=jsval"> jsval</a> *<a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=argv">argv</a> = <a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=JS_ARGV">JS_ARGV</a>(<a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=cx">cx</a>, <a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=vp">vp</a>);</span> - /* - * Look in argv for argc actual parameters, set *rval to return a - * value to the caller. - */ - ... -} -</pre> - -<p>そして、以下のようにコーディングし、JSに渡します:</p> - -<pre class="eval">ok = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction">JS_DefineFunction</a>(cx, global, "doit", doit, DOIT_MINARGS, 0); -</pre> - -<p>または、ネイティブな関数群として定義するならば、おそらくそれらをテーブルの中に置き、関数テーブルとして定義するでしょう:</p> - -<pre class="eval">static <a href="/En/SpiderMonkey/JSAPI_Reference/JSFunctionSpec" title="En/SpiderMonkey/JSAPI_Reference/JSFunctionSpec">JSFunctionSpec</a> my_functions[] = { - {"doit", doit, DOIT_MINARGS, 0, 0}, - etc... - {0,0,0,0,0}, -}; -</pre> - -<p>(最終的に、すべてのNULL 関数はテーブルを終端します)そして、以下のようにします:</p> - -<pre class="eval">ok = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions">JS_DefineFunctions</a>(cx, global, my_functions); -</pre> - -<h3 id="C_から_JavaScript_の関数の呼び出し方">C から JavaScript の関数の呼び出し方</h3> - -<p>クリックイベントを最上位の UI から座標 (x,y) の UI 要素に焦点をあてます:</p> - -<pre class="eval">JSObject *target, *event; -jsval argv[1], rval; - -/* - * Find event target and make event object to represent this click. - * Pass cx to NewEventObject so JS_NewObject can be called. - */ -target = FindEventTargetAt(cx, global, x, y); -event = NewEventObject(cx, "click", x, y); -argv[0] = <a href="/en/SpiderMonkey/JSAPI_Reference/OBJECT_TO_JSVAL" title="en/SpiderMonkey/JSAPI_Reference/OBJECT_TO_JSVAL">OBJECT_TO_JSVAL</a>(event); - -/* To emulate the DOM, you might want to try "onclick" too. */ -ok = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>(cx, target, "onClick", 1, argv, &rval); - -/* Now test rval to see whether we should cancel the event. */ -if (<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_BOOLEAN" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_BOOLEAN">JSVAL_IS_BOOLEAN</a>(rval) && !<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_BOOLEAN" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_BOOLEAN">JSVAL_TO_BOOLEAN</a>(rval)) - CancelEvent(event); -</pre> - -<p>繰り返しますが、ここではエラーチェックは無視しています。(関数呼び出し後の 戻り値 !ok のテストような)、いくつかのCのイベント管理処理やハンドラーが偽値を返したときのイベントをキャンセルする場合のDOMの伝統的なやり方を適切にエミュレートするために疑似コードを用いています。</p> - -<div class="originaldocinfo"> -<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> - -<ul> - <li>Author: Brendan Eich</li> - <li>Last Updated Date: 21 February, 2000</li> -</ul> -</div> diff --git a/files/ja/mozilla/projects/spidermonkey/index.html b/files/ja/mozilla/projects/spidermonkey/index.html deleted file mode 100644 index e285c49690..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: SpiderMonkey -slug: Mozilla/Projects/SpiderMonkey -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey ---- -<div>{{SpiderMonkeySidebar}}</div> - -<p class="summary"><strong>SpiderMonkey</strong> は 、C / C++ で書かれた <a href="/ja/docs/Web/JavaScript">JavaScript</a> エンジンです。Firefoxを含む、Mozillaの複数の製品で使用されており、MPL2 ライセンスの下で利用できます。</p> - -<p>独立したソースコードリリースは、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases">リリースページ</a>にあります。</p> - -<div class="topicpage-table"> -<div class="section"> -<h2 id="ガイド">ガイド</h2> - -<h3 id="ビルド">ビルド</h3> - -<dl> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation">SpiderMonkey のビルド手順</a></dt> - <dd>SpiderMonkey をビルドしてテストスイートを実行する方法について。</dd> -</dl> - -<h3 id="SpiderMonkey_の利用">SpiderMonkey の利用</h3> - -<dl> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">JavaScript シェルの手引き</a></dt> - <dd>JavaScript シェルの取得、構築、利用方法について。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide">JSAPI ユーザガイド</a></dt> - <dd>このガイドでは、SpiderMonkey の概要と、あなたのアプリケーションを JavaScript 対応にするため、アプリケーションから組み込んだエンジンを呼び出す方法について説明します。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Cookbook">JSAPI クックブック</a></dt> - <dd>よく使われる JavaScript の式や文の JSAPI 表現を解説します。</dd> - <dt><a href="/ja/docs/SpiderMonkey/GC_Rooting_Guide">GC ルーティングガイド</a></dt> - <dd>SpiderMonkey の世代別 GC に対応したコードの書き方を解説します。</dd> - <dt><a href="/ja/docs/How_to_embed_the_JavaScript_engine">JavaScript エンジンの埋め込み方</a></dt> - <dd>SpiderMonkey の埋め込み方の古い解説です。</dd> -</dl> - -<h2 id="SpiderMonkey_のハック">SpiderMonkey のハック</h2> - -<dl> - <dt><a href="https://wiki.mozilla.org/JavaScript:New_to_SpiderMonkey">SpiderMonkey 入門</a></dt> - <dd>SpiderMonkey をハックするためのガイド。</dd> - <dt><a href="/ja/docs/SpiderMonkey/Setting_up_CDT_to_work_on_SpiderMonkey">SpiderMonkey 開発のための CDT 設定</a></dt> - <dd>SpiderMonkey を開発するための Eclipse 設定手順を解説します。</dd> - <dt><a href="http://blog.cdleary.com/2011/11/contributing-to-spidermonkey/">SpiderMonkey に貢献するには</a></dt> - <dd>4 分弱のスライドキャストです。</dd> -</dl> - -<dl> - <dt><a href="/ja/docs/SpiderMonkey/Running_Automated_JavaScript_Tests">JavaScript テストの自動実行</a></dt> - <dd>JavaScript テストスイートの自動実行方法について解説します。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests">JavaScript のテストを作成する</a></dt> - <dd>JavaScript テストスイートに対するテストの追加方法を解説します。</dd> -</dl> -</div> - -<div class="section"> -<h2 id="リファレンス">リファレンス</h2> - -<dl> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference">JSAPI レファレンス</a></dt> - <dd>SpiderMonkey の API レファレンスです。</dd> - <dt><a href="/ja/docs/SpiderMonkey/JS_Debugger_API_Reference">JS Debugger API レファレンス</a></dt> - <dd>Gecko 8.0 {{GeckoRelease("8.0")}} と同時にリリースされた SpiderMonkey 1.8.6 で導入された、<code>Debugger</code> オブジェクトの API について解説します。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Internals/Bytecode">バイトコードの解説</a></dt> - <dd>SpiderMonkey が利用するバイトコードのリストです。</dd> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Parser_API">Parser API</a></dt> - <dd>SpiderMonkey の持つ構文解析器と、JavaScript API からの利用方法を解説しています。</dd> -</dl> - -<h2 id="TIPS、トリック、哲学">TIPS、トリック、哲学</h2> - -<dl> - <dt><a href="/ja/docs/SpiderMonkey/Future_directions">今後の方針</a></dt> - <dd>機能、設計、コーディングにおける今後の方針を述べています。</dd> - <dt><a href="/ja/docs/SpiderMonkey/Internals">SpiderMonkey の内部構造</a></dt> - <dd>設計の概要と、ファイル単位での実装の解説です。</dd> - <dt><a href="/ja/docs/SpiderMonkey/Bytecodes">バイトコードのレファレンス</a></dt> - <dd>SpiderMonkey の使用するバイトコードのレファレンスです。</dd> - <dt><a href="/ja/docs/SpiderMonkey/Internals/Garbage_collection">SpiderMonkey の内部構造: GC</a></dt> - <dd>GC の内部構造を解説します。</dd> - <dt><a href="/ja/docs/SpiderMonkey/Hacking_Tips">SpiderMonkey の内部構造: ハックのための TIPS </a></dt> - <dd>SpiderMonkey をハックするために有用なツールと TIPS がまとめられています。</dd> -</dl> - -<h2 id="関連項目">関連項目</h2> - -<ul> - <li><a href="/ja/docs/Web/JavaScript">JavaScript</a></li> - <li><a href="/ja/docs/SpiderMonkey/FOSS">SpiderMonkey を利用した FOSS プロジェクト</a></li> -</ul> - -<h2 id="リリースノート">リリースノート</h2> - -<dl> - <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases">SpiderMonkey リリースノート</a></dt> - <dd>現在のリリースと、次にあげる過去のリリースに対するリリースノートがまとめられています:<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/52">52</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/45">45</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/38">38</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/31">31</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/24">24</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/17">17</a></dd> -</dl> -</div> -</div> diff --git a/files/ja/mozilla/projects/spidermonkey/index/index.html b/files/ja/mozilla/projects/spidermonkey/index/index.html deleted file mode 100644 index f59feeeb07..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/index/index.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Index -slug: Mozilla/Projects/SpiderMonkey/Index -tags: - - Index - - MDN Meta - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Index ---- -<p>{{Index("/ja/docs/Mozilla/Projects/SpiderMonkey")}}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/internals/bytecode/index.html b/files/ja/mozilla/projects/spidermonkey/internals/bytecode/index.html deleted file mode 100644 index f4e65a7748..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/internals/bytecode/index.html +++ /dev/null @@ -1,6855 +0,0 @@ ---- -title: バイトコードの説明 -slug: Mozilla/Projects/SpiderMonkey/Internals/Bytecode -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Internals/Bytecode ---- -<div>{{SpiderMonkeySidebar("Internals")}}</div> - -<h2 id="バイトコード一覧">バイトコード一覧</h2> - -<p>この文書は <a href="http://dxr.mozilla.org/mozilla-central/source/js/src/vm/make_opcode_doc.py">make_opcode_doc.py</a> によって <a href="http://dxr.mozilla.org/mozilla-central/source/js/src/vm/Opcodes.h">Opcodes.h</a> から自動的に生成されます。</p> - -<h3 id="ステートメント">ステートメント</h3> - -<h4 id="Jumps">Jumps</h4> - -<dl> - <dt id="JSOP_AND">JSOP_AND [-1, +1] (JUMP, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>69 (0x45)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>cond</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>cond</code></td> - </tr> - </tbody> - </table> - - <p>スタックの先頭の値をブール値に変換し、結果が <code>false</code> の場合、現在のバイトコードから 32-bit のオフセットにジャンプします。</p> - </dd> - <dt id="JSOP_GOTO">JSOP_GOTO [-0, +0] (JUMP)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>6 (0x06)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>現在のバイトコードから 32-bit のオフセットにジャンプします。</p> - </dd> - <dt id="JSOP_IFEQ">JSOP_IFEQ [-1, +0] (JUMP, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>7 (0x07)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>cond</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, converts it into a boolean, if the result is <code>false</code>, jumps to a 32-bit offset from the current bytecode.</p> - - <p>The idea is that a sequence like <code>JSOP_ZERO</code>; <code>JSOP_ZERO</code>; <code>JSOP_EQ</code>; <code>JSOP_IFEQ</code>; <code>JSOP_RETURN</code>; reads like a nice linear sequence that will execute the return.</p> - </dd> - <dt id="JSOP_IFNE">JSOP_IFNE [-1, +0] (JUMP, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>8 (0x08)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>cond</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, converts it into a boolean, if the result is <code>true</code>, jumps to a 32-bit offset from the current bytecode.</p> - </dd> - <dt id="JSOP_LABEL">JSOP_LABEL [-0, +0] (CODE_OFFSET)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>106 (0x6a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This opcode precedes every labeled statement. It's a no-op.</p> - - <p><code>offset</code> is the offset to the next instruction after this statement, the one <code>break LABEL;</code> would jump to. IonMonkey uses this.</p> - </dd> - <dt id="JSOP_LOOPENTRY">JSOP_LOOPENTRY [-0, +0] (LOOPENTRY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>227 (0xe3)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t icIndex, uint8_t BITFIELD</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>6</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This opcode is the target of the entry jump for some loop. The uint8 argument is a bitfield. The lower 7 bits of the argument indicate the loop depth. This value starts at 1 and is just a hint: deeply nested loops all have the same value. The upper bit is set if Ion should be able to OSR at this point, which is true unless there is non-loop state on the stack. See <code>JSOP_JUMPTARGET</code> for the icIndex argument.</p> - </dd> - <dt id="JSOP_LOOPHEAD">JSOP_LOOPHEAD [-0, +0] (ICINDEX)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>109 (0x6d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t icIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Another no-op.</p> - - <p>This opcode is the target of the backwards jump for some loop. See <code>JSOP_JUMPTARGET</code> for the icIndex operand.</p> - </dd> - <dt id="JSOP_OR">JSOP_OR [-1, +1] (JUMP, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>68 (0x44)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>cond</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>cond</code></td> - </tr> - </tbody> - </table> - - <p>Converts the top of stack value into a boolean, if the result is <code>true</code>, jumps to a 32-bit offset from the current bytecode.</p> - </dd> -</dl> - -<h4 id="Switch_Statement">Switch Statement</h4> - -<dl> - <dt id="JSOP_CASE">JSOP_CASE [-2, +1] (JUMP)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>121 (0x79)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val, cond</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val(if !cond)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>val</code> and <code>cond</code>. If <code>cond</code> is <code>true</code>, jumps to a 32-bit offset from the current bytecode, re-pushes <code>val</code> onto the stack if <code>false</code>.</p> - </dd> - <dt id="JSOP_CONDSWITCH">JSOP_CONDSWITCH [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>120 (0x78)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This no-op appears after the bytecode for EXPR in <code>switch (EXPR) {...}</code> if the switch cannot be optimized using <code>JSOP_TABLESWITCH</code>.</p> - - <p>For a non-optimized switch statement like this:</p> - - <pre class="notranslate"> switch (EXPR) { - case V0: - C0; - ... - default: - D; - } -</pre> - - <p>the bytecode looks like this:</p> - - <pre class="notranslate"> (EXPR) - condswitch - (V0) - case ->C0 - ... - default ->D - (C0) - ... - (D) -</pre> - - <p>Note that code for all case-labels is emitted first, then code for the body of each case clause.</p> - </dd> - <dt id="JSOP_DEFAULT">JSOP_DEFAULT [-1, +0] (JUMP)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>122 (0x7a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This appears after all cases in a <code>JSOP_CONDSWITCH</code>, whether there is a <code>default:</code> label in the switch statement or not. Pop the switch operand from the stack and jump to a 32-bit offset from the current bytecode. offset from the current bytecode.</p> - </dd> - <dt id="JSOP_TABLESWITCH">JSOP_TABLESWITCH [-1, +0] (TABLESWITCH, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>70 (0x46)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t len, int32_t low, int32_t high,uint24_t firstResumeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>len</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>i</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value as <code>i</code>, if <code>low <= i <= high</code>, jumps to a 32-bit offset: offset is stored in the script's resumeOffsets</p> - - <pre class="notranslate"> list at index 'firstResumeIndex + (i - low)' -</pre> - - <p>jumps to a 32-bit offset: <code>len</code> from the current bytecode otherwise</p> - </dd> -</dl> - -<h4 id="For-In_Statement">For-In Statement</h4> - -<dl> - <dt id="JSOP_ENDITER">JSOP_ENDITER [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>78 (0x4e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>iter</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Exits a for-in loop by popping the iterator object from the stack and closing it.</p> - </dd> - <dt id="JSOP_ISGENCLOSING">JSOP_ISGENCLOSING [-1, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>187 (0xbb)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val, res</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a boolean indicating whether the top of the stack is MagicValue(<code>JS_GENERATOR_CLOSING</code>).</p> - </dd> - <dt id="JSOP_ISNOITER">JSOP_ISNOITER [-1, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>77 (0x4d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val, res</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a boolean indicating whether the value on top of the stack is MagicValue(<code>JS_NO_ITER_VALUE</code>).</p> - </dd> - <dt id="JSOP_ITER">JSOP_ITER [-1, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>75 (0x4b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>iter</code></td> - </tr> - </tbody> - </table> - - <p>Sets up a for-in loop. It pops the top of stack value as <code>val</code> and pushes <code>iter</code> which is an iterator for <code>val</code>.</p> - </dd> - <dt id="JSOP_MOREITER">JSOP_MOREITER [-1, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>76 (0x4c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>iter</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>iter, val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the next iterated value onto the stack. If no value is available, MagicValue(<code>JS_NO_ITER_VALUE</code>) is pushed.</p> - </dd> -</dl> - -<h4 id="With_Statement">With Statement</h4> - -<dl> - <dt id="JSOP_ENTERWITH">JSOP_ENTERWITH [-1, +0] (SCOPE)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>3 (0x03)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t staticWithIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, converts it to an object, and adds a <code>WithEnvironmentObject</code> wrapping that object to the environment chain.</p> - - <p>There is a matching <code>JSOP_LEAVEWITH</code> instruction later. All name lookups between the two that may need to consult the With object are deoptimized.</p> - </dd> - <dt id="JSOP_LEAVEWITH">JSOP_LEAVEWITH [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>4 (0x04)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the environment chain object pushed by <code>JSOP_ENTERWITH</code>.</p> - </dd> -</dl> - -<h4 id="Exception_Handling">Exception Handling</h4> - -<dl> - <dt id="JSOP_EXCEPTION">JSOP_EXCEPTION [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>118 (0x76)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>exception</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the current pending exception onto the stack and clears the pending exception. This is only emitted at the beginning of code for a catch-block, so it is known that an exception is pending. It is used to implement catch-blocks and <code>yield*</code>.</p> - </dd> - <dt id="JSOP_FINALLY">JSOP_FINALLY [-0, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>135 (0x87)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>false, resumeIndex</code></td> - </tr> - </tbody> - </table> - - <p>This opcode has a def count of 2, but these values are already on the stack (they're pushed by <code>JSOP_GOSUB</code>).</p> - </dd> - <dt id="JSOP_GOSUB">JSOP_GOSUB [-2, +0] (JUMP)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>116 (0x74)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t offset</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>false, resumeIndex</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This opcode is used for entering a <code>finally</code> block. Jumps to a 32-bit offset from the current pc.</p> - - <p>Note: this op doesn't actually push/pop any values, but it has a use count of 2 (for the <code>false</code> + resumeIndex values pushed by preceding bytecode ops) because the <code>finally</code> entry point does not expect these values on the stack. See also <code>JSOP_FINALLY</code> (it has a def count of 2).</p> - - <p>When the execution resumes from <code>finally</code> block, those stack values are popped.</p> - </dd> - <dt id="JSOP_RETSUB">JSOP_RETSUB [-2, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>117 (0x75)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This opcode is used for returning from a <code>finally</code> block.</p> - - <p>Pops the top two values on the stack as <code>rval</code> and <code>lval</code>. Then: - If <code>lval</code> is true, throws <code>rval</code>. - If <code>lval</code> is false, jumps to the resumeIndex stored in <code>lval</code>.</p> - </dd> - <dt id="JSOP_THROW">JSOP_THROW [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>112 (0x70)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value as <code>v</code>, sets pending exception as <code>v</code>, then raises error.</p> - </dd> - <dt id="JSOP_THROWMSG">JSOP_THROWMSG [-0, +0] (UINT16)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>74 (0x4a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t msgNumber</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Sometimes we know when emitting that an operation will always throw.</p> - - <p>Throws the indicated <code>JSMSG</code>.</p> - </dd> - <dt id="JSOP_TRY">JSOP_TRY [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>134 (0x86)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This no-op appears at the top of the bytecode for a <code>TryStatement</code>.</p> - - <p>Location information for catch/finally blocks is stored in a side table, <code>script->trynotes()</code>.</p> - </dd> -</dl> - -<h4 id="Function">Function</h4> - -<dl> - <dt id="JSOP_CALL">JSOP_CALL [-(argc+2), +1] (ARGC, INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>58 (0x3a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Invokes <code>callee</code> with <code>this</code> and <code>args</code>, pushes return value onto the stack.</p> - </dd> - <dt id="JSOP_CALLITER">JSOP_CALLITER [-2, +1] (ARGC, INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>145 (0x91)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc (must be 0)</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Like <code>JSOP_CALL</code>, but used as part of for-of and destructuring bytecode to provide better error messages.</p> - </dd> - <dt id="JSOP_CALL_IGNORES_RV">JSOP_CALL_IGNORES_RV [-(argc+2), +1] (ARGC, INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>231 (0xe7)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Like <code>JSOP_CALL</code>, but tells the function that the return value is ignored. stack.</p> - </dd> - <dt id="JSOP_CHECKISCALLABLE">JSOP_CHECKISCALLABLE [-1, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>219 (0xdb)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t kind</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Checks that the top value on the stack is callable, and throws a TypeError if not. The operand <code>kind</code> is used only to generate an appropriate error message.</p> - </dd> - <dt id="JSOP_EVAL">JSOP_EVAL [-(argc+2), +1] (ARGC, INVOKE, TYPESET, CHECKSLOPPY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>123 (0x7b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Invokes <code>eval</code> with <code>args</code> and pushes return value onto the stack.</p> - - <p>If <code>eval</code> in global scope is not original one, invokes the function with <code>this</code> and <code>args</code>, and pushes return value onto the stack.</p> - </dd> - <dt id="JSOP_FUNAPPLY">JSOP_FUNAPPLY [-(argc+2), +1] (ARGC, INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>79 (0x4f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Invokes <code>callee</code> with <code>this</code> and <code>args</code>, pushes return value onto the stack.</p> - - <p>This is for <code>f.apply</code>.</p> - </dd> - <dt id="JSOP_FUNCALL">JSOP_FUNCALL [-(argc+2), +1] (ARGC, INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>108 (0x6c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Invokes <code>callee</code> with <code>this</code> and <code>args</code>, pushes return value onto the stack.</p> - - <p>If <code>callee</code> is determined to be the canonical <code>Function.prototype.call</code> function, then this operation is optimized to directly call <code>callee</code> with <code>args[0]</code> as <code>this</code>, and the remaining arguments as formal args to <code>callee</code>.</p> - - <p>Like <code>JSOP_FUNAPPLY</code> but for <code>f.call</code> instead of <code>f.apply</code>.</p> - </dd> - <dt id="JSOP_FUNWITHPROTO">JSOP_FUNWITHPROTO [-1, +1] (OBJECT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>52 (0x34)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t funcIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>proto</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a clone of a function with a given [[Prototype]] onto the stack.</p> - </dd> - <dt id="JSOP_GETRVAL">JSOP_GETRVAL [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>2 (0x02)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Pushes stack frame's <code>rval</code> onto the stack.</p> - </dd> - <dt id="JSOP_LAMBDA">JSOP_LAMBDA [-0, +1] (OBJECT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>130 (0x82)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t funcIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a closure for a named or anonymous function expression onto the stack.</p> - </dd> - <dt id="JSOP_LAMBDA_ARROW">JSOP_LAMBDA_ARROW [-1, +1] (OBJECT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>131 (0x83)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t funcIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>new.target</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value as <code>new.target</code>, pushes an arrow function with lexical <code>new.target</code> onto the stack.</p> - </dd> - <dt id="JSOP_NEW">JSOP_NEW [-(argc+3), +1] (ARGC, INVOKE, TYPESET, IC, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>82 (0x52)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1], newTarget</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Invokes <code>callee</code> as a constructor with <code>this</code> and <code>args</code>, pushes return value onto the stack.</p> - </dd> - <dt id="JSOP_OPTIMIZE_SPREADCALL">JSOP_OPTIMIZE_SPREADCALL [-1, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>178 (0xb2)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>arr</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>arr, optimized</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top stack value, pushes the value and a boolean value that indicates whether the spread operation for the value can be optimized in spread call.</p> - </dd> - <dt id="JSOP_RETRVAL">JSOP_RETRVAL [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>153 (0x99)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Stops interpretation and returns value set by <code>JSOP_SETRVAL</code>. When not set, returns <code>undefined</code>.</p> - - <p>Also emitted at end of script so interpreter don't need to check if opcode is still in script range.</p> - </dd> - <dt id="JSOP_RETURN">JSOP_RETURN [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>5 (0x05)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value as <code>rval</code>, stops interpretation of current script and returns <code>rval</code>.</p> - </dd> - <dt id="JSOP_SETFUNNAME">JSOP_SETFUNNAME [-2, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>182 (0xb6)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t prefixKind</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>fun, name</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>fun</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>name</code> and <code>fun</code>, defines the name of <code>fun</code> to <code>name</code> with prefix if any, and pushes <code>fun</code> back onto the stack.</p> - </dd> - <dt id="JSOP_SETRVAL">JSOP_SETRVAL [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>152 (0x98)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value as <code>rval</code>, sets the return value in stack frame as <code>rval</code>.</p> - </dd> - <dt id="JSOP_SPREADCALL">JSOP_SPREADCALL [-3, +1] (INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>41 (0x29)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>spreadcall variant of <code>JSOP_CALL</code>.</p> - - <p>Invokes <code>callee</code> with <code>this</code> and <code>args</code>, pushes the return value onto the stack.</p> - - <p><code>args</code> is an Array object which contains actual arguments.</p> - </dd> - <dt id="JSOP_SPREADEVAL">JSOP_SPREADEVAL [-3, +1] (INVOKE, TYPESET, CHECKSLOPPY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>43 (0x2b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>spreadcall variant of <code>JSOP_EVAL</code></p> - - <p>Invokes <code>eval</code> with <code>args</code> and pushes the return value onto the stack.</p> - - <p>If <code>eval</code> in global scope is not original one, invokes the function with <code>this</code> and <code>args</code>, and pushes return value onto the stack.</p> - </dd> - <dt id="JSOP_SPREADNEW">JSOP_SPREADNEW [-4, +1] (INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>42 (0x2a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args, newTarget</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>spreadcall variant of <code>JSOP_NEW</code></p> - - <p>Invokes <code>callee</code> as a constructor with <code>this</code> and <code>args</code>, pushes the return value onto the stack.</p> - </dd> - <dt id="JSOP_SPREADSUPERCALL">JSOP_SPREADSUPERCALL [-4, +1] (INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>166 (0xa6)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args, newTarget</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>spreadcall variant of <code>JSOP_SUPERCALL</code>.</p> - - <p>Behaves exactly like <code>JSOP_SPREADNEW</code>.</p> - </dd> - <dt id="JSOP_STRICTEVAL">JSOP_STRICTEVAL [-(argc+2), +1] (ARGC, INVOKE, TYPESET, CHECKSTRICT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>124 (0x7c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Invokes <code>eval</code> with <code>args</code> and pushes return value onto the stack.</p> - - <p>If <code>eval</code> in global scope is not original one, invokes the function with <code>this</code> and <code>args</code>, and pushes return value onto the stack.</p> - </dd> - <dt id="JSOP_STRICTSPREADEVAL">JSOP_STRICTSPREADEVAL [-3, +1] (INVOKE, TYPESET, CHECKSTRICT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>50 (0x32)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>spreadcall variant of <code>JSOP_EVAL</code></p> - - <p>Invokes <code>eval</code> with <code>args</code> and pushes the return value onto the stack.</p> - - <p>If <code>eval</code> in global scope is not original one, invokes the function with <code>this</code> and <code>args</code>, and pushes return value onto the stack.</p> - </dd> - <dt id="JSOP_SUPERCALL">JSOP_SUPERCALL [-(argc+3), +1] (ARGC, INVOKE, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>165 (0xa5)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argc</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee, this, args[0], ..., args[argc-1], newTarget</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Behaves exactly like <code>JSOP_NEW</code>, but allows JITs to distinguish the two cases.</p> - </dd> - <dt id="JSOP_TRYSKIPAWAIT">JSOP_TRYSKIPAWAIT [-1, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>223 (0xdf)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>value</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>value_or_resolved, canskip</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value as <code>value</code>, checks if the await for <code>value</code> can be skipped. If the await operation can be skipped and the resolution value for <code>value</code> can be acquired, pushes the resolution value and <code>true</code> onto the stack. Otherwise, pushes <code>value</code> and <code>false</code> on the stack.</p> - </dd> -</dl> - -<h4 id="Generator">Generator</h4> - -<dl> - <dt id="JSOP_ASYNCAWAIT">JSOP_ASYNCAWAIT [-2, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>151 (0x97)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>value, gen</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>promise</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>value</code> and <code>gen</code> from the stack, then starts "awaiting" for <code>value</code> to be resolved, which will then resume the execution of <code>gen</code>. Pushes the async function promise on the stack, so that it'll be returned to the caller on the very first "await".</p> - </dd> - <dt id="JSOP_ASYNCRESOLVE">JSOP_ASYNCRESOLVE [-2, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>192 (0xc0)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t fulfillOrReject</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>valueOrReason, gen</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>promise</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>valueOrReason</code> and <code>gen</code> from the stack, then pushes the promise resolved with <code>valueOrReason</code>. `gen` must be the internal generator object created in async functions. The pushed promise is the async function's result promise, which is stored in `gen`.</p> - </dd> - <dt id="JSOP_AWAIT">JSOP_AWAIT [-2, +1] (RESUMEINDEX)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>209 (0xd1)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t resumeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>promise, gen</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>resolved</code></td> - </tr> - </tbody> - </table> - - <p>Pops the generator and the return value <code>promise</code>, stops interpretation and returns <code>promise</code>. Pushes resolved value onto the stack.</p> - </dd> - <dt id="JSOP_CHECKISOBJ">JSOP_CHECKISOBJ [-1, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>14 (0x0e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t kind</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>result</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>result</code></td> - </tr> - </tbody> - </table> - - <p>Checks that the top value on the stack is an object, and throws a TypeError if not. The operand <code>kind</code> is used only to generate an appropriate error message.</p> - </dd> - <dt id="JSOP_FINALYIELDRVAL">JSOP_FINALYIELDRVAL [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>204 (0xcc)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>gen</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the generator and suspends and closes it. Yields the value in the frame's return value slot.</p> - </dd> - <dt id="JSOP_GENERATOR">JSOP_GENERATOR [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>212 (0xd4)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>generator</code></td> - </tr> - </tbody> - </table> - - <p>Initializes generator frame, creates a generator and pushes it on the stack.</p> - </dd> - <dt id="JSOP_INITIALYIELD">JSOP_INITIALYIELD [-1, +1] (RESUMEINDEX)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>202 (0xca)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t resumeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>generator</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>generator</code></td> - </tr> - </tbody> - </table> - - <p>Pops the generator from the top of the stack, suspends it and stops interpretation.</p> - </dd> - <dt id="JSOP_RESUME">JSOP_RESUME [-2, +1] (UINT8, INVOKE)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>205 (0xcd)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>resume kind (AbstractGeneratorObject::ResumeKind)</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>gen, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Pops the generator and argument from the stack, pushes a new generator frame and resumes execution of it. Pushes the return value after the generator yields.</p> - </dd> - <dt id="JSOP_TOASYNCITER">JSOP_TOASYNCITER [-2, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>210 (0xd2)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>iter, next</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>asynciter</code></td> - </tr> - </tbody> - </table> - - <p>Pops the iterator and its next method from the top of the stack, and create async iterator from it and push the async iterator back onto the stack.</p> - </dd> - <dt id="JSOP_YIELD">JSOP_YIELD [-2, +1] (RESUMEINDEX)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>203 (0xcb)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t resumeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>rval1, gen</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval2</code></td> - </tr> - </tbody> - </table> - - <p>Pops the generator and the return value <code>rval1</code>, stops interpretation and returns <code>rval1</code>. Pushes sent value from <code>send()</code> onto the stack.</p> - </dd> -</dl> - -<h4 id="Debugger">Debugger</h4> - -<dl> - <dt id="JSOP_DEBUGGER">JSOP_DEBUGGER [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>115 (0x73)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Invokes debugger.</p> - </dd> - <dt id="JSOP_DEBUGLEAVELEXICALENV">JSOP_DEBUGLEAVELEXICALENV [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>201 (0xc9)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>The opcode to assist the debugger.</p> - </dd> -</dl> - -<h3 id="Variables_and_Scopes">Variables and Scopes</h3> - -<h4 id="Variables">Variables</h4> - -<dl> - <dt id="JSOP_BINDNAME">JSOP_BINDNAME [-0, +1] (ATOM, NAME, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>110 (0x6e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>env</code></td> - </tr> - </tbody> - </table> - - <p>Looks up name on the environment chain and pushes the environment which contains the name onto the stack. If not found, pushes global lexical environment onto the stack.</p> - </dd> - <dt id="JSOP_DEFCONST">JSOP_DEFCONST [-0, +0] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>128 (0x80)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Defines the new constant binding on global lexical environment.</p> - - <p>Throws if a binding with the same name already exists on the environment, or if a var binding with the same name exists on the global.</p> - </dd> - <dt id="JSOP_DEFFUN">JSOP_DEFFUN [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>127 (0x7f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>fun</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Defines the given function on the current scope.</p> - - <p>This is used for global scripts and also in some cases for function scripts where use of dynamic scoping inhibits optimization.</p> - </dd> - <dt id="JSOP_DEFLET">JSOP_DEFLET [-0, +0] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>162 (0xa2)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Defines the new mutable binding on global lexical environment.</p> - - <p>Throws if a binding with the same name already exists on the environment, or if a var binding with the same name exists on the global.</p> - </dd> - <dt id="JSOP_DEFVAR">JSOP_DEFVAR [-0, +0] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>129 (0x81)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Defines the new binding on the frame's current variables-object (the environment on the environment chain designated to receive new variables).</p> - - <p>Throws if the current variables-object is the global object and a binding with the same name exists on the global lexical environment.</p> - - <p>This is used for global scripts and also in some cases for function scripts where use of dynamic scoping inhibits optimization.</p> - </dd> - <dt id="JSOP_DELNAME">JSOP_DELNAME [-0, +1] (ATOM, NAME, CHECKSLOPPY)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>36 (0x24)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>succeeded</code></td> - </tr> - </tbody> - </table> - - <p>Looks up name on the environment chain and deletes it, pushes <code>true</code> onto the stack if succeeded (if the property was present and deleted or if the property wasn't present in the first place), <code>false</code> if not.</p> - - <p>Strict mode code should never contain this opcode.</p> - </dd> - <dt id="JSOP_GETIMPORT">JSOP_GETIMPORT [-0, +1] (ATOM, NAME, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>176 (0xb0)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Gets the value of a module import by name and pushes it onto the stack.</p> - </dd> - <dt id="JSOP_GETNAME">JSOP_GETNAME [-0, +1] (ATOM, NAME, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>59 (0x3b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Looks up name on the environment chain and pushes its value onto the stack.</p> - </dd> - <dt id="JSOP_SETNAME">JSOP_SETNAME [-2, +1] (ATOM, NAME, PROPSET, DETECTING, CHECKSLOPPY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>111 (0x6f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>env, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops an environment and value from the stack, assigns value to the given name, and pushes the value back on the stack</p> - </dd> - <dt id="JSOP_STRICTSETNAME">JSOP_STRICTSETNAME [-2, +1] (ATOM, NAME, PROPSET, DETECTING, CHECKSTRICT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>49 (0x31)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>env, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops a environment and value from the stack, assigns value to the given name, and pushes the value back on the stack. If the set failed, then throw a TypeError, per usual strict mode semantics.</p> - </dd> -</dl> - -<h4 id="Free_Variables">Free Variables</h4> - -<dl> - <dt id="JSOP_BINDGNAME">JSOP_BINDGNAME [-0, +1] (ATOM, NAME, GNAME, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>214 (0xd6)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>global</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the global environment onto the stack if the script doesn't have a non-syntactic global scope. Otherwise will act like <code>JSOP_BINDNAME</code>.</p> - - <p><code>nameIndex</code> is only used when acting like <code>JSOP_BINDNAME</code>.</p> - </dd> - <dt id="JSOP_BINDVAR">JSOP_BINDVAR [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>213 (0xd5)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>env</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the nearest <code>var</code> environment.</p> - </dd> - <dt id="JSOP_GETGNAME">JSOP_GETGNAME [-0, +1] (ATOM, NAME, TYPESET, GNAME, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>154 (0x9a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Looks up name on global environment and pushes its value onto the stack, unless the script has a non-syntactic global scope, in which case it acts just like <code>JSOP_NAME</code>.</p> - - <p>Free variable references that must either be found on the global or a ReferenceError.</p> - </dd> - <dt id="JSOP_INITGLEXICAL">JSOP_INITGLEXICAL [-1, +1] (ATOM, NAME, PROPINIT, GNAME, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>161 (0xa1)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Initializes an uninitialized global lexical binding with the top of stack value.</p> - </dd> - <dt id="JSOP_SETGNAME">JSOP_SETGNAME [-2, +1] (ATOM, NAME, PROPSET, DETECTING, GNAME, CHECKSLOPPY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>155 (0x9b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>env, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>val</code> and <code>env</code>, sets property of <code>env</code> as <code>val</code> and pushes <code>val</code> back on the stack.</p> - - <p><code>env</code> should be the global lexical environment unless the script has a non-syntactic global scope, in which case acts like <code>JSOP_SETNAME</code>.</p> - </dd> - <dt id="JSOP_STRICTSETGNAME">JSOP_STRICTSETGNAME [-2, +1] (ATOM, NAME, PROPSET, DETECTING, GNAME, CHECKSTRICT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>156 (0x9c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>env, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>val</code> and <code>env</code>, sets property of <code>env</code> as <code>val</code> and pushes <code>val</code> back on the stack. Throws a TypeError if the set fails, per strict mode semantics.</p> - - <p><code>env</code> should be the global lexical environment unless the script has a non-syntactic global scope, in which case acts like <code>JSOP_STRICTSETNAME</code>.</p> - </dd> -</dl> - -<h4 id="Local_Variables">Local Variables</h4> - -<dl> - <dt id="JSOP_CHECKLEXICAL">JSOP_CHECKLEXICAL [-0, +0] (LOCAL, NAME)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>138 (0x8a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t localno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Checks if the value of the local variable is the <code>JS_UNINITIALIZED_LEXICAL</code> magic, throwing an error if so.</p> - </dd> - <dt id="JSOP_GETLOCAL">JSOP_GETLOCAL [-0, +1] (LOCAL, NAME)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>86 (0x56)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t localno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the value of local variable onto the stack.</p> - </dd> - <dt id="JSOP_INITLEXICAL">JSOP_INITLEXICAL [-1, +1] (LOCAL, NAME, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>139 (0x8b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t localno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Initializes an uninitialized local lexical binding with the top of stack value.</p> - </dd> - <dt id="JSOP_SETLOCAL">JSOP_SETLOCAL [-1, +1] (LOCAL, NAME, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>87 (0x57)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t localno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Stores the top stack value to the given local.</p> - </dd> - <dt id="JSOP_THROWSETCALLEE">JSOP_THROWSETCALLEE [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>179 (0xb3)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Throws a runtime TypeError for invalid assignment to the callee in a named lambda, which is always a <code>const</code> binding. This is a different bytecode than <code>JSOP_SETCONST</code> because the named lambda callee, if not closed over, does not have a frame slot to look up the name with for the error message.</p> - </dd> - <dt id="JSOP_THROWSETCONST">JSOP_THROWSETCONST [-1, +1] (LOCAL, NAME, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>169 (0xa9)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t localno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Throws a runtime TypeError for invalid assignment to <code>const</code>. The localno is used for better error messages.</p> - </dd> -</dl> - -<h4 id="Aliased_Variables">Aliased Variables</h4> - -<dl> - <dt id="JSOP_CHECKALIASEDLEXICAL">JSOP_CHECKALIASEDLEXICAL [-0, +0] (ENVCOORD, NAME)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>140 (0x8c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t hops, uint24_t slot</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Checks if the value of the aliased variable is the <code>JS_UNINITIALIZED_LEXICAL</code> magic, throwing an error if so.</p> - </dd> - <dt id="JSOP_GETALIASEDVAR">JSOP_GETALIASEDVAR [-0, +1] (ENVCOORD, NAME, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>136 (0x88)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t hops, uint24_t slot</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>aliasedVar</code></td> - </tr> - </tbody> - </table> - - <p>Pushes aliased variable onto the stack.</p> - - <p>An "aliased variable" is a var, let, or formal arg that is aliased. Sources of aliasing include: nested functions accessing the vars of an enclosing function, function statements that are conditionally executed, <code>eval</code>, <code>with</code>, and <code>arguments</code>. All of these cases require creating a CallObject to own the aliased variable.</p> - - <p>An ALIASEDVAR opcode contains the following immediates:</p> - - <pre class="notranslate">uint8 hops: the number of environment objects to skip to find the - EnvironmentObject containing the variable being accessed -uint24 slot: the slot containing the variable in the EnvironmentObject - (this 'slot' does not include RESERVED_SLOTS). -</pre> - </dd> - <dt id="JSOP_INITALIASEDLEXICAL">JSOP_INITALIASEDLEXICAL [-1, +1] (ENVCOORD, NAME, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>141 (0x8d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t hops, uint24_t slot</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Initializes an uninitialized aliased lexical binding with the top of stack value.</p> - </dd> - <dt id="JSOP_SETALIASEDVAR">JSOP_SETALIASEDVAR [-1, +1] (ENVCOORD, NAME, PROPSET, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>137 (0x89)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t hops, uint24_t slot</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Sets aliased variable as the top of stack value.</p> - </dd> - <dt id="JSOP_THROWSETALIASEDCONST">JSOP_THROWSETALIASEDCONST [-1, +1] (ENVCOORD, NAME, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>170 (0xaa)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t hops, uint24_t slot</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Throws a runtime TypeError for invalid assignment to <code>const</code>. The environment coordinate is used for better error messages.</p> - </dd> -</dl> - -<h4 id="Intrinsics">Intrinsics</h4> - -<dl> - <dt id="JSOP_GETINTRINSIC">JSOP_GETINTRINSIC [-0, +1] (ATOM, NAME, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>143 (0x8f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>intrinsic[name]</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the value of the intrinsic onto the stack.</p> - - <p>Intrinsic names are emitted instead of <code>JSOP_*NAME</code> ops when the <code>CompileOptions</code> flag <code>selfHostingMode</code> is set.</p> - - <p>They are used in self-hosted code to access other self-hosted values and intrinsic functions the runtime doesn't give client JS code access to.</p> - </dd> - <dt id="JSOP_SETINTRINSIC">JSOP_SETINTRINSIC [-1, +1] (ATOM, NAME, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>144 (0x90)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Stores the top stack value in the specified intrinsic.</p> - </dd> -</dl> - -<h4 id="Block-local_Scope">Block-local Scope</h4> - -<dl> - <dt id="JSOP_FRESHENLEXICALENV">JSOP_FRESHENLEXICALENV [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>197 (0xc5)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Replaces the current block on the env chain with a fresh block that copies all the bindings in the block. This operation implements the behavior of inducing a fresh lexical environment for every iteration of a for(let ...; ...; ...) loop, if any declarations induced by such a loop are captured within the loop.</p> - </dd> - <dt id="JSOP_POPLEXICALENV">JSOP_POPLEXICALENV [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>200 (0xc8)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops lexical environment from the env chain.</p> - </dd> - <dt id="JSOP_PUSHLEXICALENV">JSOP_PUSHLEXICALENV [-0, +0] (SCOPE)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>199 (0xc7)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t scopeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pushes lexical environment onto the env chain.</p> - </dd> - <dt id="JSOP_RECREATELEXICALENV">JSOP_RECREATELEXICALENV [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>198 (0xc6)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Recreates the current block on the env chain with a fresh block with uninitialized bindings. This operation implements the behavior of inducing a fresh lexical environment for every iteration of a for-in/of loop whose loop-head has a (captured) lexical declaration.</p> - </dd> -</dl> - -<h4 id="This">This</h4> - -<dl> - <dt id="JSOP_CHECKRETURN">JSOP_CHECKRETURN [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>190 (0xbe)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>this</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Check if a derived class constructor has a valid return value and <code>this</code> value before it returns. If the return value is not an object, stores the <code>this</code> value to the return value slot.</p> - </dd> - <dt id="JSOP_CHECKTHIS">JSOP_CHECKTHIS [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>189 (0xbd)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>this</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>this</code></td> - </tr> - </tbody> - </table> - - <p>Throw if the value on top of the stack is the TDZ MagicValue. Used in derived class constructors.</p> - </dd> - <dt id="JSOP_CHECKTHISREINIT">JSOP_CHECKTHISREINIT [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>191 (0xbf)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>this</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>this</code></td> - </tr> - </tbody> - </table> - - <p>Throw an exception if the value on top of the stack is not the TDZ MagicValue. Used in derived class constructors.</p> - </dd> - <dt id="JSOP_FUNCTIONTHIS">JSOP_FUNCTIONTHIS [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>185 (0xb9)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>this</code></td> - </tr> - </tbody> - </table> - - <p>Determines the <code>this</code> value for current function frame and pushes it onto the stack. Emitted in the prologue of functions with a this-binding.</p> - </dd> - <dt id="JSOP_GIMPLICITTHIS">JSOP_GIMPLICITTHIS [-0, +1] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>157 (0x9d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>this</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the implicit <code>this</code> value for calls to the associated name onto the stack; only used when the implicit this might be derived from a non-syntactic scope (instead of the global itself).</p> - - <p>Note that code evaluated via the Debugger API uses DebugEnvironmentProxy objects on its scope chain, which are non-syntactic environments that refer to syntactic environments. As a result, the binding we want may be held by a syntactic environments such as CallObject or VarEnvrionmentObject.</p> - </dd> - <dt id="JSOP_GLOBALTHIS">JSOP_GLOBALTHIS [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>186 (0xba)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>this</code></td> - </tr> - </tbody> - </table> - - <p>Pushes <code>this</code> value for current stack frame onto the stack. Emitted when <code>this</code> refers to the global <code>this</code>.</p> - </dd> - <dt id="JSOP_IMPLICITTHIS">JSOP_IMPLICITTHIS [-0, +1] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>226 (0xe2)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>this</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the implicit <code>this</code> value for calls to the associated name onto the stack.</p> - </dd> -</dl> - -<h4 id="Super">Super</h4> - -<dl> - <dt id="JSOP_SUPERBASE">JSOP_SUPERBASE [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>103 (0x67)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>homeObjectProto</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the prototype of the home object for |callee| onto the stack.</p> - </dd> - <dt id="JSOP_SUPERFUN">JSOP_SUPERFUN [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>164 (0xa4)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>callee</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>superFun</code></td> - </tr> - </tbody> - </table> - - <p>Push the function to invoke with |super()|. This is the prototype of the function passed in as |callee|.</p> - </dd> -</dl> - -<h4 id="Arguments">Arguments</h4> - -<dl> - <dt id="JSOP_ARGUMENTS">JSOP_ARGUMENTS [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>9 (0x09)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>arguments</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the <code>arguments</code> object for the current function activation.</p> - - <p>If <code><code>JSS</code>cript</code> is not marked <code>needsArgsObj</code>, then a <code>JS_OPTIMIZED_ARGUMENTS</code> magic value is pushed. Otherwise, a proper arguments object is constructed and pushed.</p> - - <p>This opcode requires that the function does not have rest parameter.</p> - </dd> - <dt id="JSOP_CALLEE">JSOP_CALLEE [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>132 (0x84)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>callee</code></td> - </tr> - </tbody> - </table> - - <p>Pushes current callee onto the stack.</p> - - <p>Used for named function expression self-naming, if lightweight.</p> - </dd> - <dt id="JSOP_ENVCALLEE">JSOP_ENVCALLEE [-0, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>206 (0xce)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t numHops</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>callee</code></td> - </tr> - </tbody> - </table> - - <p>Load the callee stored in a CallObject on the environment chain. The numHops operand is the number of environment objects to skip on the environment chain.</p> - </dd> - <dt id="JSOP_GETARG">JSOP_GETARG [-0, +1] (QARG, NAME)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>84 (0x54)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>arguments[argno]</code></td> - </tr> - </tbody> - </table> - - <p>Fast get op for function arguments and local variables.</p> - - <p>Pushes <code>arguments[argno]</code> onto the stack.</p> - </dd> - <dt id="JSOP_NEWTARGET">JSOP_NEWTARGET [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>148 (0x94)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>new.target</code></td> - </tr> - </tbody> - </table> - - <p>Push "new.target"</p> - </dd> - <dt id="JSOP_REST">JSOP_REST [-0, +1] (TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>224 (0xe0)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rest</code></td> - </tr> - </tbody> - </table> - - <p>Creates rest parameter array for current function call, and pushes it onto the stack.</p> - </dd> - <dt id="JSOP_SETARG">JSOP_SETARG [-1, +1] (QARG, NAME)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>85 (0x55)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t argno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Fast set op for function arguments and local variables.</p> - - <p>Sets <code>arguments[argno]</code> as the top of stack value.</p> - </dd> -</dl> - -<h4 id="Var_Scope">Var Scope</h4> - -<dl> - <dt id="JSOP_POPVARENV">JSOP_POPVARENV [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>181 (0xb5)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops a var environment from the env chain.</p> - </dd> - <dt id="JSOP_PUSHVARENV">JSOP_PUSHVARENV [-0, +0] (SCOPE)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>180 (0xb4)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t scopeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pushes a var environment onto the env chain.</p> - </dd> -</dl> - -<h4 id="Modules">Modules</h4> - -<dl> - <dt id="JSOP_DYNAMIC_IMPORT">JSOP_DYNAMIC_IMPORT [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>233 (0xe9)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>arg</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>rval</code></td> - </tr> - </tbody> - </table> - - <p>Dynamic import of the module specified by the string value on the top of the stack.</p> - </dd> - <dt id="JSOP_IMPORTMETA">JSOP_IMPORTMETA [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>232 (0xe8)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>import.meta</code></td> - </tr> - </tbody> - </table> - - <p>Push "import.meta"</p> - </dd> -</dl> - -<h3 id="Operators">Operators</h3> - -<h4 id="Comparison_Operators">Comparison Operators</h4> - -<dl> - <dt id="JSOP_EQ">JSOP_EQ [-2, +1] (DETECTING, IC)<br> - JSOP_GE [-2, +1] (IC)<br> - JSOP_GT [-2, +1] (IC)<br> - JSOP_LE [-2, +1] (IC)<br> - JSOP_LT [-2, +1] (IC)<br> - JSOP_NE [-2, +1] (DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>JSOP_EQ: 18 (0x12)<br> - JSOP_GE: 23 (0x17)<br> - JSOP_GT: 22 (0x16)<br> - JSOP_LE: 21 (0x15)<br> - JSOP_LT: 20 (0x14)<br> - JSOP_NE: 19 (0x13)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval OP rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values from the stack and pushes the result of comparing them.</p> - </dd> - <dt id="JSOP_STRICTEQ">JSOP_STRICTEQ [-2, +1] (DETECTING, IC)<br> - JSOP_STRICTNE [-2, +1] (DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>JSOP_STRICTEQ: 72 (0x48)<br> - JSOP_STRICTNE: 73 (0x49)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval OP rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values from the stack, then pushes the result of applying the operator to the two values.</p> - </dd> -</dl> - -<h4 id="Arithmetic_Operators">Arithmetic Operators</h4> - -<dl> - <dt id="JSOP_ADD">JSOP_ADD [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>27 (0x1b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval + rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of <code>lval + rval</code>.</p> - </dd> - <dt id="JSOP_DEC">JSOP_DEC [-1, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>235 (0xeb)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(val - 1)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the numeric value <code>val</code> from the stack, then pushes <code>val - 1</code>.</p> - </dd> - <dt id="JSOP_INC">JSOP_INC [-1, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>234 (0xea)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(val + 1)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the numeric value <code>val</code> from the stack, then pushes <code>val + 1</code>.</p> - </dd> - <dt id="JSOP_DIV">JSOP_DIV [-2, +1] (IC)<br> - JSOP_MOD [-2, +1] (IC)<br> - JSOP_MUL [-2, +1] (IC)<br> - JSOP_SUB [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>JSOP_DIV: 30 (0x1e)<br> - JSOP_MOD: 31 (0x1f)<br> - JSOP_MUL: 29 (0x1d)<br> - JSOP_SUB: 28 (0x1c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval OP rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of applying the arithmetic operation to them.</p> - </dd> - <dt id="JSOP_NEG">JSOP_NEG [-1, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>34 (0x22)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(-val)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the value <code>val</code> from the stack, then pushes <code>-val</code>.</p> - </dd> - <dt id="JSOP_POS">JSOP_POS [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>35 (0x23)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(+val)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the value <code>val</code> from the stack, then pushes <code>+val</code>. (<code>+val</code> is the value converted to a number.)</p> - </dd> - <dt id="JSOP_POW">JSOP_POW [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>150 (0x96)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval ** rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of <code>Math.pow(lval, rval)</code>.</p> - </dd> - <dt id="JSOP_TONUMERIC">JSOP_TONUMERIC [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>236 (0xec)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>ToNumeric(val)</code></td> - </tr> - </tbody> - </table> - - <p>Pop <code>val</code> from the stack, then push the result of <code>ToNumeric(val)</code>.</p> - </dd> -</dl> - -<h4 id="Bitwise_Logical_Operators">Bitwise Logical Operators</h4> - -<dl> - <dt id="JSOP_BITAND">JSOP_BITAND [-2, +1] (IC)<br> - JSOP_BITOR [-2, +1] (IC)<br> - JSOP_BITXOR [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>JSOP_BITAND: 17 (0x11)<br> - JSOP_BITOR: 15 (0x0f)<br> - JSOP_BITXOR: 16 (0x10)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval OP rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of the operation applied to the two operands, converting both to 32-bit signed integers if necessary.</p> - </dd> - <dt id="JSOP_BITNOT">JSOP_BITNOT [-1, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>33 (0x21)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(~val)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the value <code>val</code> from the stack, then pushes <code>~val</code>.</p> - </dd> -</dl> - -<h4 id="Bitwise_Shift_Operators">Bitwise Shift Operators</h4> - -<dl> - <dt id="JSOP_LSH">JSOP_LSH [-2, +1] (IC)<br> - JSOP_RSH [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>JSOP_LSH: 24 (0x18)<br> - JSOP_RSH: 25 (0x19)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval OP rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of the operation applied to the operands.</p> - </dd> - <dt id="JSOP_URSH">JSOP_URSH [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>26 (0x1a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>lval, rval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(lval >>> rval)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes <code>lval >>> rval</code>.</p> - </dd> -</dl> - -<h4 id="Logical_Operators">Logical Operators</h4> - -<dl> - <dt id="JSOP_NOT">JSOP_NOT [-1, +1] (DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>32 (0x20)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(!val)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the value <code>val</code> from the stack, then pushes <code>!val</code>.</p> - </dd> -</dl> - -<h4 id="Special_Operators">Special Operators</h4> - -<dl> - <dt id="JSOP_DELELEM">JSOP_DELELEM [-2, +1] (ELEM, CHECKSLOPPY)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>38 (0x26)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, propval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>succeeded</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>propval</code> and <code>obj</code>, deletes <code>propval</code> property from <code>obj</code>, pushes <code>true</code> onto the stack if succeeded, <code>false</code> if not.</p> - </dd> - <dt id="JSOP_DELPROP">JSOP_DELPROP [-1, +1] (ATOM, PROP, CHECKSLOPPY)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>37 (0x25)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>succeeded</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, deletes property from it, pushes <code>true</code> onto the stack if succeeded, <code>false</code> if not.</p> - </dd> - <dt id="JSOP_IN">JSOP_IN [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>113 (0x71)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>id, obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(id in obj)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>id</code> and <code>obj</code> from the stack, then pushes <code>id in obj</code>. This will throw a <code>TypeError</code> if <code>obj</code> is not an object.</p> - - <p>Note that <code>obj</code> is the top value.</p> - </dd> - <dt id="JSOP_INSTANCEOF">JSOP_INSTANCEOF [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>114 (0x72)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, ctor</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(obj instanceof ctor)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>obj</code> and <code>ctor</code> from the stack, then pushes <code>obj instanceof ctor</code>. This will throw a <code>TypeError</code> if <code>obj</code> is not an object.</p> - </dd> - <dt id="JSOP_STRICTDELPROP">JSOP_STRICTDELPROP [-1, +1] (ATOM, PROP, CHECKSTRICT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>46 (0x2e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>succeeded</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value and attempts to delete the given property from it. Pushes <code>true</code> onto success, else throws a TypeError per strict mode property-deletion requirements.</p> - </dd> - <dt id="JSOP_TYPEOF">JSOP_TYPEOF [-1, +1] (DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>39 (0x27)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(typeof val)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the value <code>val</code> from the stack, then pushes <code>typeof val</code>.</p> - </dd> - <dt id="JSOP_TYPEOFEXPR">JSOP_TYPEOFEXPR [-1, +1] (DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>196 (0xc4)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(typeof val)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top stack value as <code>val</code> and pushes <code>typeof val</code>. Note that this opcode isn't used when, in the original source code, <code>val</code> is a name -- see <code><code>JSOP_TYPEOF</code></code> for that. (This is because <code>typeof undefinedName === "undefined"</code>.)</p> - </dd> - <dt id="JSOP_VOID">JSOP_VOID [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>40 (0x28)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>undefined</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top value on the stack and pushes <code>undefined</code>.</p> - </dd> -</dl> - -<h4 id="Stack_Operations">Stack Operations</h4> - -<dl> - <dt id="JSOP_DUP">JSOP_DUP [-1, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>12 (0x0c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v, v</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a copy of the top value on the stack.</p> - </dd> - <dt id="JSOP_DUP2">JSOP_DUP2 [-2, +4]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>13 (0x0d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v1, v2</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v1, v2, v1, v2</code></td> - </tr> - </tbody> - </table> - - <p>Duplicates the top two values on the stack.</p> - </dd> - <dt id="JSOP_DUPAT">JSOP_DUPAT [-0, +1] (UINT24)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>44 (0x2c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t n</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v[n], v[n-1], ..., v[1], v[0]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v[n], v[n-1], ..., v[1], v[0], v[n]</code></td> - </tr> - </tbody> - </table> - - <p>Duplicates the Nth value from the top onto the stack.</p> - </dd> - <dt id="JSOP_PICK">JSOP_PICK [-0, +0] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>133 (0x85)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t n</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v[n], v[n-1], ..., v[1], v[0]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v[n-1], ..., v[1], v[0], v[n]</code></td> - </tr> - </tbody> - </table> - - <p>Picks the nth element from the stack and moves it to the top of the stack.</p> - </dd> - <dt id="JSOP_POP">JSOP_POP [-1, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>81 (0x51)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top value off the stack.</p> - </dd> - <dt id="JSOP_POPN">JSOP_POPN [-n, +0] (UINT16)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>11 (0x0b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t n</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v[n-1], ..., v[1], v[0]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Pops the top <code>n</code> values from the stack.</p> - </dd> - <dt id="JSOP_SWAP">JSOP_SWAP [-2, +2]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>10 (0x0a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v1, v2</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v2, v1</code></td> - </tr> - </tbody> - </table> - - <p>Swaps the top two values on the stack. This is useful for things like post-increment/decrement.</p> - </dd> - <dt id="JSOP_UNPICK">JSOP_UNPICK [-0, +0] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>183 (0xb7)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t n</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>v[n], v[n-1], ..., v[1], v[0]</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v[0], v[n], v[n-1], ..., v[1]</code></td> - </tr> - </tbody> - </table> - - <p>Moves the top of the stack value under the nth element of the stack. Note: n must NOT be 0.</p> - </dd> -</dl> - -<h4 id="Debugger_2">Debugger</h4> - -<dl> - <dt id="JSOP_DEBUGAFTERYIELD">JSOP_DEBUGAFTERYIELD [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>208 (0xd0)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Bytecode emitted after <code>yield</code> expressions to help the Debugger fix up the frame in the JITs. No-op in the interpreter.</p> - </dd> -</dl> - -<h3 id="Literals">Literals</h3> - -<h4 id="Constants">Constants</h4> - -<dl> - <dt id="JSOP_BIGINT">JSOP_BIGINT [-0, +1] (BIGINT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>237 (0xed)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t constIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a BigInt constant onto the stack.</p> - </dd> - <dt id="JSOP_BUILTINPROTO">JSOP_BUILTINPROTO [-0, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>221 (0xdd)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t kind</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>%BuiltinPrototype%</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the current global's builtin prototype for a given proto key.</p> - </dd> - <dt id="JSOP_DOUBLE">JSOP_DOUBLE [-0, +1] (DOUBLE)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>60 (0x3c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>DoubleValue literal</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>9</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes numeric constant onto the stack.</p> - </dd> - <dt id="JSOP_FALSE">JSOP_FALSE [-0, +1]<br> - JSOP_TRUE [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>JSOP_FALSE: 66 (0x42)<br> - JSOP_TRUE: 67 (0x43)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>true/false</code></td> - </tr> - </tbody> - </table> - - <p>Pushes boolean value onto the stack.</p> - </dd> - <dt id="JSOP_INT32">JSOP_INT32 [-0, +1] (INT32)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>216 (0xd8)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int32_t val</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes 32-bit int immediate integer operand onto the stack.</p> - </dd> - <dt id="JSOP_INT8">JSOP_INT8 [-0, +1] (INT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>215 (0xd7)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>int8_t val</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes 8-bit int immediate integer operand onto the stack.</p> - </dd> - <dt id="JSOP_IS_CONSTRUCTING">JSOP_IS_CONSTRUCTING [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>65 (0x41)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>JS_IS_CONSTRUCTING</code></td> - </tr> - </tbody> - </table> - - <p>Pushes <code><code>JS_IS_CONSTRUCTING</code></code></p> - </dd> - <dt id="JSOP_NULL">JSOP_NULL [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>64 (0x40)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>null</code></td> - </tr> - </tbody> - </table> - - <p>Pushes <code>null</code> onto the stack.</p> - </dd> - <dt id="JSOP_ONE">JSOP_ONE [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>63 (0x3f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>1</code></td> - </tr> - </tbody> - </table> - - <p>Pushes <code>1</code> onto the stack.</p> - </dd> - <dt id="JSOP_STRING">JSOP_STRING [-0, +1] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>61 (0x3d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t atomIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>atom</code></td> - </tr> - </tbody> - </table> - - <p>Pushes string constant onto the stack.</p> - </dd> - <dt id="JSOP_SYMBOL">JSOP_SYMBOL [-0, +1] (UINT8)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>45 (0x2d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint8_t symbol (the JS::SymbolCode of the symbol to use)</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>2</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>symbol</code></td> - </tr> - </tbody> - </table> - - <p>Push a well-known symbol onto the operand stack.</p> - </dd> - <dt id="JSOP_UINT16">JSOP_UINT16 [-0, +1] (UINT16)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>88 (0x58)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint16_t val</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>3</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes unsigned 16-bit int immediate integer operand onto the stack.</p> - </dd> - <dt id="JSOP_UINT24">JSOP_UINT24 [-0, +1] (UINT24)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>188 (0xbc)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t val</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pushes unsigned 24-bit int immediate integer operand onto the stack.</p> - </dd> - <dt id="JSOP_UNDEFINED">JSOP_UNDEFINED [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>1 (0x01)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>undefined</code></td> - </tr> - </tbody> - </table> - - <p>Pushes <code>undefined</code> onto the stack.</p> - </dd> - <dt id="JSOP_UNINITIALIZED">JSOP_UNINITIALIZED [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>142 (0x8e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>uninitialized</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a <code>JS_UNINITIALIZED_LEXICAL</code> value onto the stack, representing an uninitialized lexical binding.</p> - - <p>This opcode is used with the <code>JSOP_INITLEXICAL</code> opcode.</p> - </dd> - <dt id="JSOP_ZERO">JSOP_ZERO [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>62 (0x3e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>0</code></td> - </tr> - </tbody> - </table> - - <p>Pushes <code>0</code> onto the stack.</p> - </dd> -</dl> - -<h4 id="Object">Object</h4> - -<dl> - <dt id="JSOP_CALLELEM">JSOP_CALLELEM [-2, +1] (ELEM, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>193 (0xc1)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, propval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj[propval]</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>propval</code> and <code>obj</code>, pushes <code>propval</code> property of <code>obj</code> onto the stack. Requires the value under <code>obj</code> to be the receiver of the following call.</p> - - <p>Like <code>JSOP_GETELEM</code> but for call context.</p> - </dd> - <dt id="JSOP_CALLPROP">JSOP_CALLPROP [-1, +1] (ATOM, PROP, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>184 (0xb8)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj[name]</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, pushes property of it onto the stack. Requires the value under <code>obj</code> to be the receiver of the following call.</p> - - <p>Like <code>JSOP_GETPROP</code> but for call context.</p> - </dd> - <dt id="JSOP_CALLSITEOBJ">JSOP_CALLSITEOBJ [-0, +1] (OBJECT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>101 (0x65)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t objectIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes the call site object specified by objectIndex onto the stack. Defines the raw property specified by objectIndex + 1 on the call site object and freezes both the call site object as well as its raw property.</p> - </dd> - <dt id="JSOP_CHECKCLASSHERITAGE">JSOP_CHECKCLASSHERITAGE [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>51 (0x33)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>heritage</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>heritage</code></td> - </tr> - </tbody> - </table> - - <p>Ensures the result of a class's heritage expression is either null or a constructor.</p> - </dd> - <dt id="JSOP_CHECKOBJCOERCIBLE">JSOP_CHECKOBJCOERCIBLE [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>163 (0xa3)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Throw if the value on the stack is not coerscible to an object (is |null| or |undefined|).</p> - </dd> - <dt id="JSOP_GETBOUNDNAME">JSOP_GETBOUNDNAME [-1, +1] (ATOM, NAME, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>195 (0xc3)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>env</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>v</code></td> - </tr> - </tbody> - </table> - - <p>Pops an environment, gets the value of a bound name on it. If the name is not bound to the environment, throw a ReferenceError. Used in conjunction with BINDNAME.</p> - </dd> - <dt id="JSOP_GETELEM">JSOP_GETELEM [-2, +1] (ELEM, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>55 (0x37)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, propval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj[propval]</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>propval</code> and <code>obj</code>, pushes <code>propval</code> property of <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_GETELEM_SUPER">JSOP_GETELEM_SUPER [-3, +1] (ELEM, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>125 (0x7d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>receiver, propval, obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj[propval]</code></td> - </tr> - </tbody> - </table> - - <p>LIKE <code>JSOP_GETELEM</code> but takes receiver on stack, and the propval is evaluated before the obj.</p> - </dd> - <dt id="JSOP_GETPROP">JSOP_GETPROP [-1, +1] (ATOM, PROP, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>53 (0x35)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj[name]</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, pushes property of it onto the stack.</p> - </dd> - <dt id="JSOP_GETPROP_SUPER">JSOP_GETPROP_SUPER [-2, +1] (ATOM, PROP, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>104 (0x68)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>receiver, obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj[name]</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values, and pushes the property of one, using the other as the receiver.</p> - </dd> - <dt id="JSOP_INITELEM">JSOP_INITELEM [-3, +1] (ELEM, PROPINIT, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>94 (0x5e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, id, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a numeric property in an object literal, like <code>{1: x}</code>.</p> - - <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITELEM_GETTER">JSOP_INITELEM_GETTER [-3, +1] (ELEM, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>99 (0x63)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, id, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a numeric getter in an object literal like <code>{get 2() {}}</code>.</p> - - <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> getter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITELEM_SETTER">JSOP_INITELEM_SETTER [-3, +1] (ELEM, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>100 (0x64)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, id, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a numeric setter in an object literal like <code>{set 2(v) {}}</code>.</p> - - <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> setter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHIDDENELEM">JSOP_INITHIDDENELEM [-3, +1] (ELEM, PROPINIT, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>175 (0xaf)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, id, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-enumerable numeric property in an object literal, like <code>{1: x}</code>.</p> - - <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHIDDENELEM_GETTER">JSOP_INITHIDDENELEM_GETTER [-3, +1] (ELEM, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>173 (0xad)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, id, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-enumerable numeric getter in an object literal like <code>{get 2() {}}</code>.</p> - - <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> getter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHIDDENELEM_SETTER">JSOP_INITHIDDENELEM_SETTER [-3, +1] (ELEM, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>174 (0xae)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, id, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-enumerable numeric setter in an object literal like <code>{set 2(v) {}}</code>.</p> - - <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> setter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHIDDENPROP">JSOP_INITHIDDENPROP [-2, +1] (ATOM, PROP, PROPINIT, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>147 (0x93)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-enumerable data-property on an object.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines <code>nameIndex</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHIDDENPROP_GETTER">JSOP_INITHIDDENPROP_GETTER [-2, +1] (ATOM, PROP, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>171 (0xab)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-enumerable getter in an object literal.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines getter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHIDDENPROP_SETTER">JSOP_INITHIDDENPROP_SETTER [-2, +1] (ATOM, PROP, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>172 (0xac)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-enumerable setter in an object literal.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines setter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITHOMEOBJECT">JSOP_INITHOMEOBJECT [-2, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>92 (0x5c)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>fun, homeObject</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>fun</code></td> - </tr> - </tbody> - </table> - - <p>Initialize the home object for functions with super bindings.</p> - - <p>This opcode takes the function and the object to be the home object, does the set, and leaves the function on the stack.</p> - </dd> - <dt id="JSOP_INITLOCKEDPROP">JSOP_INITLOCKEDPROP [-2, +1] (ATOM, PROP, PROPINIT, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>146 (0x92)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a non-configurable, non-writable, non-enumerable data-property on an object.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines <code>nameIndex</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITPROP">JSOP_INITPROP [-2, +1] (ATOM, PROP, PROPINIT, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>93 (0x5d)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a named property in an object literal, like <code>{a: x}</code>.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines <code>nameIndex</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITPROP_GETTER">JSOP_INITPROP_GETTER [-2, +1] (ATOM, PROP, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>97 (0x61)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a getter in an object literal.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines getter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITPROP_SETTER">JSOP_INITPROP_SETTER [-2, +1] (ATOM, PROP, PROPINIT, DETECTING)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>98 (0x62)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize a setter in an object literal.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines setter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_MUTATEPROTO">JSOP_MUTATEPROTO [-2, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>194 (0xc2)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, newProto</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>succeeded</code></td> - </tr> - </tbody> - </table> - - <p><code>__proto__: v</code> inside an object initializer.</p> - - <p>Pops the top two values on the stack as <code>newProto</code> and <code>obj</code>, sets prototype of <code>obj</code> as <code>newProto</code>, pushes <code>true</code> onto the stack if succeeded, <code>false</code> if not.</p> - </dd> - <dt id="JSOP_NEWINIT">JSOP_NEWINIT [-0, +1] (UINT32, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>89 (0x59)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>(uint32_t extra)</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes newly created object onto the stack.</p> - - <p>This opcode has four extra bytes so it can be exchanged with <code>JSOP_NEWOBJECT</code> during emit.</p> - </dd> - <dt id="JSOP_NEWOBJECT">JSOP_NEWOBJECT [-0, +1] (OBJECT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>91 (0x5b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t baseobjIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes newly created object onto the stack.</p> - - <p>This opcode takes an object with the final shape, which can be set at the start and slots then filled in directly.</p> - </dd> - <dt id="JSOP_OBJECT">JSOP_OBJECT [-0, +1] (OBJECT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>80 (0x50)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t objectIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes deep-cloned object literal or singleton onto the stack.</p> - </dd> - <dt id="JSOP_OBJWITHPROTO">JSOP_OBJWITHPROTO [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>83 (0x53)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>proto</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes newly created object onto the stack with provided [[Prototype]].</p> - </dd> - <dt id="JSOP_SETELEM">JSOP_SETELEM [-3, +1] (ELEM, PROPSET, DETECTING, CHECKSLOPPY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>56 (0x38)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, propval, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top three values on the stack as <code>val</code>, <code>propval</code> and <code>obj</code>, sets <code>propval</code> property of <code>obj</code> as <code>val</code>, pushes <code>val</code> onto the stack.</p> - </dd> - <dt id="JSOP_SETELEM_SUPER">JSOP_SETELEM_SUPER [-4, +1] (ELEM, PROPSET, DETECTING, CHECKSLOPPY)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>158 (0x9e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>receiver, propval, obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>LIKE <code>JSOP_SETELEM</code>, but takes receiver on the stack, and the propval is evaluated before the base.</p> - </dd> - <dt id="JSOP_SETPROP">JSOP_SETPROP [-2, +1] (ATOM, PROP, PROPSET, DETECTING, CHECKSLOPPY, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>54 (0x36)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code> and performs <code>obj.prop = val</code>, pushing <code>val</code> back onto the stack.</p> - </dd> - <dt id="JSOP_SETPROP_SUPER">JSOP_SETPROP_SUPER [-3, +1] (ATOM, PROP, PROPSET, DETECTING, CHECKSLOPPY)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>107 (0x6b)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>receiver, obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top three values on the stack as <code>val</code>, <code>obj</code> and <code>receiver</code>, and performs <code>obj.prop = val</code>, pushing <code>val</code> back onto the stack.</p> - </dd> - <dt id="JSOP_STRICTDELELEM">JSOP_STRICTDELELEM [-2, +1] (ELEM, CHECKSTRICT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>47 (0x2f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, propval</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>succeeded</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>propval</code> and <code>obj</code>, and attempts to delete <code>propval</code> property from <code>obj</code>. Pushes <code>true</code> onto the stack on success, else throws a TypeError per strict mode property deletion requirements.</p> - </dd> - <dt id="JSOP_STRICTSETELEM">JSOP_STRICTSETELEM [-3, +1] (ELEM, PROPSET, DETECTING, CHECKSTRICT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>57 (0x39)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, propval, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top three values on the stack as <code>val</code>, <code>propval</code> and <code>obj</code>, sets <code>propval</code> property of <code>obj</code> as <code>val</code>, pushes <code>val</code> onto the stack. Throws a TypeError if the set fails, per strict mode semantics.</p> - </dd> - <dt id="JSOP_STRICTSETELEM_SUPER">JSOP_STRICTSETELEM_SUPER [-4, +1] (ELEM, PROPSET, DETECTING, CHECKSTRICT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>159 (0x9f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>receiver, propval, obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>LIKE <code>JSOP_STRICTSETELEM</code>, but takes receiver on the stack, and the propval is evaluated before the base.</p> - </dd> - <dt id="JSOP_STRICTSETPROP">JSOP_STRICTSETPROP [-2, +1] (ATOM, PROP, PROPSET, DETECTING, CHECKSTRICT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>48 (0x30)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, and performs <code>obj.prop = val</code>, pushing <code>val</code> back onto the stack. Throws a TypeError if the set-operation failed (per strict mode semantics).</p> - </dd> - <dt id="JSOP_STRICTSETPROP_SUPER">JSOP_STRICTSETPROP_SUPER [-3, +1] (ATOM, PROP, PROPSET, DETECTING, CHECKSTRICT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>105 (0x69)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>receiver, obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top three values on the stack as <code>val</code> and <code>obj</code>, and <code>receiver</code>, and performs <code>obj.prop = val</code>, pushing <code>val</code> back onto the stack. Throws a TypeError if the set-operation failed (per strict mode semantics).</p> - </dd> - <dt id="JSOP_TOID">JSOP_TOID [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>225 (0xe1)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>propertyNameValue</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>propertyKey</code></td> - </tr> - </tbody> - </table> - - <p>Replace the top-of-stack value propertyNameValue with ToPropertyKey(propertyNameValue).</p> - </dd> -</dl> - -<h4 id="Array">Array</h4> - -<dl> - <dt id="JSOP_HOLE">JSOP_HOLE [-0, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>218 (0xda)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>hole</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a <code>JS_ELEMENTS_HOLE</code> value onto the stack, representing an omitted property in an array literal (e.g. property 0 in the array <code>[, 1]</code>).</p> - - <p>This opcode is used with the <code>JSOP_NEWARRAY</code> opcode.</p> - </dd> - <dt id="JSOP_INITELEM_ARRAY">JSOP_INITELEM_ARRAY [-2, +1] (UINT32, ELEM, PROPINIT, DETECTING, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>96 (0x60)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t index</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Initialize an array element.</p> - - <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, sets <code>index</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p> - </dd> - <dt id="JSOP_INITELEM_INC">JSOP_INITELEM_INC [-3, +2] (ELEM, PROPINIT, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>95 (0x5f)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj, index, val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj, (index + 1)</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top three values on the stack as <code>val</code>, <code>index</code> and <code>obj</code>, sets <code>index</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> and <code>index + 1</code> onto the stack.</p> - - <p>This opcode is used in Array literals with spread and spreadcall arguments.</p> - </dd> - <dt id="JSOP_LENGTH">JSOP_LENGTH [-1, +1] (ATOM, PROP, TYPESET, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>217 (0xd9)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t nameIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj['length']</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top of stack value, pushes the <code>length</code> property of it onto the stack.</p> - </dd> - <dt id="JSOP_NEWARRAY">JSOP_NEWARRAY [-0, +1] (UINT32, IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>90 (0x5a)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t length</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes newly created array onto the stack.</p> - - <p>This opcode takes the final length, which is preallocated.</p> - </dd> - <dt id="JSOP_NEWARRAY_COPYONWRITE">JSOP_NEWARRAY_COPYONWRITE [-0, +1] (OBJECT)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>102 (0x66)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t objectIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>obj</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a newly created array onto the stack, whose elements are the same as that of a template object's copy on write elements.</p> - </dd> -</dl> - -<h4 id="RegExp">RegExp</h4> - -<dl> - <dt id="JSOP_REGEXP">JSOP_REGEXP [-0, +1] (REGEXP)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>160 (0xa0)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t regexpIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>regexp</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a regular expression literal onto the stack. It requires special "clone on exec" handling.</p> - </dd> -</dl> - -<h4 id="Class">Class</h4> - -<dl> - <dt id="JSOP_CLASSCONSTRUCTOR">JSOP_CLASSCONSTRUCTOR [-0, +1] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>167 (0xa7)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>atom className</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>constructor</code></td> - </tr> - </tbody> - </table> - - <p>Push a default constructor for a base class literal.</p> - </dd> - <dt id="JSOP_DERIVEDCONSTRUCTOR">JSOP_DERIVEDCONSTRUCTOR [-1, +1] (ATOM)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>168 (0xa8)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>atom className</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>proto</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>constructor</code></td> - </tr> - </tbody> - </table> - - <p>Push a default constructor for a derived class literal.</p> - </dd> -</dl> - -<h3 id="Other">Other</h3> - -<dl> - <dt id="JSOP_DEBUGCHECKSELFHOSTED">JSOP_DEBUGCHECKSELFHOSTED [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>177 (0xb1)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>checkVal</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>checkVal</code></td> - </tr> - </tbody> - </table> - - <p>Examines the top stack value, asserting that it's either a self-hosted function or a self-hosted intrinsic. This opcode does nothing in a non-debug build.</p> - </dd> - <dt id="JSOP_FORCEINTERPRETER">JSOP_FORCEINTERPRETER [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>207 (0xcf)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>No-op bytecode only emitted in some self-hosted functions. Not handled by the JITs so the script always runs in the interpreter.</p> - </dd> - <dt id="JSOP_HASOWN">JSOP_HASOWN [-2, +1] (IC)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>211 (0xd3)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>id, obj</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>(obj.hasOwnProperty(id))</code></td> - </tr> - </tbody> - </table> - - <p>Pops the top two values <code>id</code> and <code>obj</code> from the stack, then pushes obj.hasOwnProperty(id)</p> - - <p>Note that <code>obj</code> is the top value.</p> - </dd> - <dt id="JSOP_ITERNEXT">JSOP_ITERNEXT [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>222 (0xde)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>val</code></td> - </tr> - </tbody> - </table> - - <p>NOP opcode to hint to IonBuilder that the value on top of the stack is the (likely string) key in a for-in loop.</p> - </dd> - <dt id="JSOP_JUMPTARGET">JSOP_JUMPTARGET [-0, +0] (ICINDEX)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>230 (0xe6)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t icIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>This opcode is a no-op and it indicates the location of a jump instruction target. Some other opcodes act as jump targets as well, see BytecodeIsJumpTarget. The IC index is used by the Baseline interpreter.</p> - </dd> - <dt id="JSOP_LINENO">JSOP_LINENO [-0, +0] (UINT32)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>119 (0x77)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint32_t lineno</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>5</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>Embedded lineno to speedup <code>pc->line</code> mapping.</p> - </dd> - <dt id="JSOP_NOP">JSOP_NOP [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>0 (0x00)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>No operation is performed.</p> - </dd> - <dt id="JSOP_NOP_DESTRUCTURING">JSOP_NOP_DESTRUCTURING [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>229 (0xe5)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>No-op used by the decompiler to produce nicer error messages about destructuring code.</p> - </dd> - <dt id="JSOP_RESUMEINDEX">JSOP_RESUMEINDEX [-0, +1] (RESUMEINDEX)</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>126 (0x7e)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code>uint24_t resumeIndex</code></td> - </tr> - <tr> - <th>Length</th> - <td><code>4</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>resumeIndex</code></td> - </tr> - </tbody> - </table> - - <p>Pushes a resumeIndex (stored as 24-bit operand) on the stack.</p> - - <p>Resume indexes are used for ops like <code>JSOP_YIELD</code> and <code>JSOP_GOSUB</code>. <code>JSS</code>cript and BaselineScript have lists of resume entries (one for each resumeIndex); this lets the JIT resume at these ops from JIT code.</p> - </dd> - <dt id="JSOP_TOSTRING">JSOP_TOSTRING [-1, +1]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>228 (0xe4)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code>val</code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code>ToString(val)</code></td> - </tr> - </tbody> - </table> - - <p>Converts the value on the top of the stack to a String.</p> - </dd> - <dt id="JSOP_TRY_DESTRUCTURING">JSOP_TRY_DESTRUCTURING [-0, +0]</dt> - <dd> - <table class="standard-table"> - <tbody> - <tr> - <th>Value</th> - <td><code>220 (0xdc)</code></td> - </tr> - <tr> - <th>Operands</th> - <td><code> </code></td> - </tr> - <tr> - <th>Length</th> - <td><code>1</code></td> - </tr> - <tr> - <th>Stack Uses</th> - <td><code> </code></td> - </tr> - <tr> - <th>Stack Defs</th> - <td><code> </code></td> - </tr> - </tbody> - </table> - - <p>No-op used by the exception unwinder to determine the correct environment to unwind to when performing IteratorClose due to destructuring.</p> - </dd> -</dl> diff --git a/files/ja/mozilla/projects/spidermonkey/internals/garbage_collection/index.html b/files/ja/mozilla/projects/spidermonkey/internals/garbage_collection/index.html deleted file mode 100644 index e12b08f89b..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/internals/garbage_collection/index.html +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Garbage collection -slug: Mozilla/Projects/SpiderMonkey/Internals/Garbage_collection -translation_of: Mozilla/Projects/SpiderMonkey/Internals/Garbage_collection ---- -<div class="note"> - <strong>この文書について: これはSpiderMonkeyのGC内部についての雑多な草案です。内容が古いまたは不正確な場合があります。</strong></div> -<div class="warning"> - <p><strong>警告:</strong>SpiderMonkey ガベージコレクションTipsは悲しいことに古い内容であり、完全に無視されるべきものとなってしまいました、</p> -</div> -<h2 id="デザインの概要">デザインの概要</h2> -<p>SpiderMonkeyは、オプションでインクリメンタルマーキングモード(<span style="line-height: 1.5;">incremental marking mode)を有効にされたマーク & スイープ方式のガベージコレクション(GC)を持っています。マークフェイズでは、インクリメンタルマーキングに必要なマークスタックを用います。ファイナライザを伴わないオブジェクトのスイープは、バックグラウンドスレッドにて実行されます。</span></p> -<p>世代別GCおよびコンパクションGC(compacting GC)の実装に向けた作業が進行中です。</p> -<p> </p> -<h2 id="主要なデータ構造">主要なデータ構造</h2> -<h3 id="Cell">Cell</h3> -<p><strong>Cell</strong> は、外部からも使用される、GCによって割当と回収が行われるメモリーの単位です。つまり、GC以外から見れば、GCの仕事はCellの割当と自動的な回収ということになります。</p> -<p>例えばJSObjectのように、CellはGCによって割り当てられる全てのクラスの基底クラスとなります。</p> -<h3 id="Allocation_Kind">Allocation Kind</h3> -<p>Cellは、Allocation Kindにより分類されます。Allocation Kindはオブジェクトのサイズおよびファイナライズの振る舞いを定義します。Allocation Kindは<strong>AllocKind列挙型</strong>によって定義されます。</p> -<p>Arenas always hold objects of the same allocation kind. Thus, an arena holds objects all of the same size and finalization behavior.</p> -<h3 id="Compartment">Compartment</h3> -<p>JSヒープはCompartmentに分割されます。Compartmentの要点は以下になります:</p> -<ul> - <li>あらゆるCell(JSヒープオブジェクト)は、Compartmentのどれか一つに属します(ヒープはCompartmentに分類されることを意味します)。</li> - <li>オブジェクトは、別のCompartment内のオブジェクトに対する直接のポインタを保持することはできません。代わりに、他のオブジェクト用のラッパーを保持することになります。ラッパーは、Compartment間のセキュリティチェックに用いられます。同じCompartment内のオブジェクトは同じアクセス権限を持っているため、セキュリティチェックの必要はありませんが、cross-compartment wrapper(Compartment間ラッパー)のトラバース時にチェックが行われるかもしれません。</li> - <li>エンジンは同時にひとつのCompartmentのGCが可能です。同様に、エンジンは他をGCしている場合を除いて、Compartmentの集合に対してGCが可能です。cross-compartment wrapperは、ひとつないし複数のCompartmentのGCのrootとして用いられます。</li> -</ul> -<p>Compartmentは、SpiderMonkeyにおける、GCを含む特にメモリに関連した事項の構造的かつ分野横断的なコンセプトになっています。詳細は<a href="“/ja/SpiderMonkey/SpiderMonkey_compartments" title="https://developer.mozilla.org/ja/SpiderMonkey/SpiderMonkey_compartments">Compartments</a>を参照してください。</p> -<p><strong>JSCompartment</strong>はGCに関連した重要なフィールドを保持しています:</p> -<dl> - <dt style="margin-left: 40px;"> - ArenaLists型 arenas</dt> - <dd style="margin-left: 40px;"> - この構造体は、それぞれのAllocation KindのArenaの2つのリストを記録しています。未使用のArenaのリストと、割当済みのArenaのリストです。</dd> - <dt style="margin-left: 40px;"> - bool型 needsBarrier</dt> - <dd style="margin-left: 40px;"> - このCompartmentにおけるGCが、インクリメンタルバリアの実行を必要とする場合にtrueとなります。すなわり、このCompartmentが現在インクリメンタルGCを実行しているかどうかを表します。</dd> - <dt style="margin-left: 40px;"> - CompartmentGCState型 gcState</dt> - <dd style="margin-left: 40px;"> - このCompartmentが現在GCを実行しているかどうかを表します。もし実行していなければ、GCの実行がスケジュールされているかを表します。</dd> - <dt style="margin-left: 40px;"> - size_t型 gcBytes, gcTriggerBytes, gcMallocBytes, gcMaxMallocBytes</dt> - <dd style="margin-left: 40px;"> - GCのスケジュールに使用される情報を表します</dd> - <dt style="margin-left: 40px;"> - WrapperMap型 crossCompartmentWrappers</dt> - <dd style="margin-left: 40px;"> - このCompartment内のオブジェクトのラッパーの集合です。Mapのキーはオブジェクト、値はラッパーです。同じオブジェクトに対するラッパーが複数回要求される場合、エンジンが同一のラッパーを毎回返せるようにするためにマッピングが必要とされます。ラッパーオブジェクトの集合は同様に、単一および複数のcompartmentの(non-globalな)GCにおいても必要となります</dd> -</dl> -<h3 id="Zone">Zone</h3> -<p>TODO(原文ママ)</p> -<h3 id="Chunk">Chunk</h3> -<p>Chunkはメモリの割当における最大の内部単位となります。</p> -<p>Chunkは1MBのサイズを持ち、内部にArena、パディング、Mark Bitmap(ChunkBitmap)、解放されたArenaのビットマップ、およびChunkヘッダ(ChunkInfo)を保持しています。</p> -<p>ChunkInfoは、ChunkInfo::freeArenasHeadから開始しており、ArenaHeader::nextを介してリンクしている未割当のArenaのリストを保持します。また、ChunkInfoは未割当のArenaの数の基本的な情報を保持しています。</p> -<p>TODO ChunkInfo next/prev(原文ママ)</p> -<h3 id="Arena">Arena</h3> -<p>Arenaはメモリ割当の内部単位です。</p> -<p>Arenaは1ページ(ほぼ全てのプラットフォームで4096バイト)の大きさであり、ArenaHeaderと、僅かなパディングとなるバイト領域と、整列された要素の配列を含みます。Arena内のすべての要素は、同じAllocation Kindとサイズを持ちます。</p> -<p>すべてのArenaは、ArenaHeader::firstFreeSpanOffetsから始まる自由なメモリ区間のリストを保持します。自由なメモリ区間の最後のCell(最後であるのが望ましい)は、次の自由なメモリ区間を表すFreeSpanを保持します。</p> -<h3 id="Free_Span">Free Span</h3> -<p><strong>構造体<code>FreeSpan</code></strong>は、Arena内の自由なCell <strong>[first, last]</strong>の連続を表します。FreeSpanは、自由なメモリ区間から割当を行うための関数を保持しています。</p> -<h3 id="Mark_Bitmap">Mark Bitmap</h3> -<p>マークビットマップは<strong>ChunkBitmap</strong>によって表されます。</p> -<p>マークビットマップはGC Cellごとのビットを持ちます。故に、複数のCellによって構成されているオブジェクトは、ビットマップ中の複数のビットを使います。</p> -<h2 id="Exact_Stack_Rooting_API">Exact Stack Rooting API</h2> -<div class="note"> - <p><strong>注</strong>:GC rootの実装とおよびSpiderMonkey内での使用についての情報となります。SpiderMonkeyを埋め込んで使う場合の、Rooting APIの使用方法については、<a href="“/ja/docs/SpiderMonkey/GC_Rooting_Guide" title='“/ja/docs/SpiderMonkey/GC_Rooting_Guide"'> GC Rooting Guide</a>を参照してください。</p> -</div> -<p>GC rootの実装とおよびSpiderMonkey内での使用についての情報となります。 <a href="/en-US/docs/SpiderMonkey/Internals/GC/Exact_Stack_Rooting" title="/en-US/docs/SpiderMonkey/Internals/GC/Exact_Stack_Rooting">Exact Stack Rooting</a>.</p> -<h2 id="マーキング">マーキング</h2> -<p>TODO(原文ママ)</p> -<h2 id="インクリメンタルマーキング">インクリメンタルマーキング</h2> -<p>インクリメンタルマーキングは、マーキングの最中に(JavaScriptプログラムによる)状態の変更が発生しても、他のマーキング作業の実行が可能であることを意味します。つまり、マーキングによる長時間のプログラムの実行の停止の代わりに、小さな停止の集まりがGCの実行となるのです。停止時間は10msもしくはそれ以下に抑えられます。</p> -<p>長時間の停止が必要となる可能性も常に存在します。インクリメンタルGCの間のメモリ割当の頻度が高い場合、エンジンはインクリメンタルGCの完了の前にout of memoryを実行するかもしれません。そのような場合、エンジンは幾つかのメモリーの返還とプログラムの実行の継続のために、非インクリメンタルな完全なGCを直ちに再実行しなくてはなりません。</p> -<h3 id="Incremental_write_barrier(インクリメンタル書き込みバリア)">Incremental write barrier(インクリメンタル書き込みバリア)</h3> -<h4 id="write_barrierを必要とする問題">write barrierを必要とする問題</h4> -<p>インクリメンタルGCは正確性の担保のためにwrite barrierを必要とします。</p> -<p>TODO(原文ママ)、基本的な問題を表す図を用意する<img alt="Very poor diagram showing IGC hazard that requires a write barrier" src="https://mdn.mozillademos.org/files/5187/IGC-hazard.png" style="width: 640px; height: 400px;"></p> -<p>基本的な問題は以下の通りです(色の説明については、辞書を参照)。オブジェクトAはblackかつポインタ領域を所持しています。オブジェクトBはwhiteとします。ここで、インクリメンタルなスライスが止まり、プログラムの実行による状態の変更が再開しました。プログラムがBをAに保存したことにより、AはBへのポインタを持つことになります。そして、Bへのすべての既存のポインタが削除されました。そのとき、</p> -<ul> - <li>Bは生存している。なぜならAはblackであり、Bへのポインタを含んでいるから。</li> - <li>Bはマーク作業が実行されない。なぜならBはAを介してのみ到達可能であり、Aがblackである故にAはすでにマーク作業が完了しているから。</li> - <li>以上により、Bは生存しているが、GCの回収対象となってしまう。</li> -</ul> -<p>write barrierは、ポインタの保存の発生前に実行され、生存しているオブジェクトが回収されないようにするために情報を記録する機構の一つです。</p> -<h4 id="SpiderMonkeyのincremental_write_barrier">SpiderMonkeyのincremental write barrier</h4> -<p>SpiderMonkeyは、(相対的に)シンプルな、s<strong>snapshot-at-the-beginning allocate-black barrier</strong>と呼ばれる一般的なincremental write barrierを用いています。</p> -<p>このバリアの動作を理解するために、事象を単純にするために、新規にオブジェクトが割り当てられることの無いインクリメンタルGCを仮定します。生存しているオブジェクトを回収しないようにするためにはどうすればよいでしょうか? 一つの方法としては、インクリメンタルGCの最初の時点で生存していたすべてのオブジェクトをマークするという手法があります(これは、オブジェクトへの全ての参照が現在のインクリメンタルGC中に消えた場合は、次のインクリメンタルGC時にそのオブジェクトが回収されるということです)。この手法は、インクリメンタルGCの開始時に生存しているオブジェクトのスナップショットを保存し、それら全てをマークするのと<em>コンセプト上は</em>同義であるために、<strong>snapshot-at-the-beginning</strong>と呼ばれています。実際にはスナップショットを撮る訳ではありません。そのような場合は完全な非インクリメンタルなマーク作業が必要となります。</p> -<p style="">snapshot-at-the-beginningバリアの実装は単純です。GCポインタを保持する場所がプログラムによって上書きされたタイミングで、バリアは開始します。バリアは単純にポインタによって指し示されているオブジェクトをblackにします。鍵となるのは、オブジェクトへの全てのポインタが上書きされた場合にのみ、オブジェクトはマークされず”死んだもの”となりうるという点です。そのため、オブジェクトへのポインタが上書きされたタイミングでオブジェクトをblackにすれば、オブジェクトが”死ぬ”ということは発生し得ないのです。</p> -<p style="">FIXME(原文ママ):指し示されたオブジェクトをblackにするだけは十分ではないと思います。マークされていない別のオブジェクトがあったら何がおこりますか? マークスタックについても言及すべきです。「指し示されているオブジェクトをblackにする」というのは、「再帰的に指し示されたオブジェクトをblackにする」という意味で書かれていますか?</p> -<p>これで、メモリの割当の正確性についても話します。新規に割り当てられたオブジェクトはGCの開始時には存在していませんでした。snapshot-at-the-beginningバリアはこれについては巧くカバーしません。ですが、もし新規に割り当てられたオブジェクトが生存している場合は、それが回収されないようにする必要があります。これは簡単で、インクリメンタルGC中に新規にオブジェクトが割り当てられたら、それをマークすれば良いのです。これを名付けて<strong>allocate-black</strong>と言います。</p> -<h4 id="SpiderMonkeyの_incremental_read_barrier(インクリメンタル読み取りバリア)">SpiderMonkeyの incremental read barrier(インクリメンタル読み取りバリア)</h4> -<p>インクリメンタルGCの教科書的な実装では、write barrierしかありません。SpiderMonkeyでは、weak pointer(用語集参照)のためにread barrierも用意しています。</p> -<p>TODO(原文ママ):解説の完成</p> -<h4 id="実装の詳細">実装の詳細</h4> -<p>write barrierは実行時のコストを伴うので、SpiderMonkeyはインクリメンタルGCの実行中以外ではスキップするようにしています。各compartmentの<code>needsBarrier()</code>フラグによって、バリアが必要かどうかを示しています。</p> -<p><code>T*</code>型のフィールドのように、全ての<code>T</code>型はwrite barrierを必要としており、<code>T::writeBarrierPre(old)</code>という関数が存在しています。たとえば、<code>JSObject*</code>がwrite barrierを必要とする場合、関数<code>ObjectImpl::writeBarrierPre(ObjectImpl *old)</code>が存在します(<code>JSObject</code>は<code>ObjectImpl</code>を継承しています。)。 <code><strong>zone->needsBarrier()</strong></code>がtrueである場合、<code>writeBarrierPre()</code>は<code>old</code>をマークする、ということです。</p> -<p>HeapPtr<t>クラスはwrite barrierの起動を簡単にするために提供されています。HeapPtr<t>は<strong><code>T*</code></strong>をカプセル化し、割当時にwrite barrierを起動します。これにより、GCポインタ型のオブジェクトの領域は、通常、HeapPtr<T><t>として定義されています。<strong>HeapValue</strong>クラスはValueに対して同じことを行います。<strong>HeapSlot</strong>(および関連する<strong>HeapSlotArray</strong>)も同様に、オブジェクトスロットに対するものです。<strong>HeapId</strong>は、同じくjsidに対する物です。TODO(原文ママ):なぜHeapValueとHeapSlotの2つが存在するのか</t></t></t></p> -<p>オブジェクトのプライベート領域は、特別に取り扱う必要があります。プライベート領域自体は、エンジンに対しては隠されていますが、マークされる必要があるものを指し示すかもしれません(例:JSObjectのポインタの配列)。この例では、プライベート領域が上書きされた場合、JSObjectのポインタは”死ぬ”ことになります。そのため、write barrierはそれらをマークしなければなりません。<strong>ObjectImpl::privateWriteBarrierPre</strong>はプライベート領域が上書きされる前にJSObjectクラスのトレースフックによって起動され、これに対処します。</p> -<p>他の詳細事項として、write barrierは新規に確保されたオブジェクトのフィールドの初期化時には、上書きされるポインタが存在しないことから、スキップすることができます。</p> -<h2 id="Sweeping(スイーピング)">Sweeping(スイーピング)</h2> -<p>TODO(原文ママ)</p> -<h2 id="世代別GC">世代別GC</h2> -<p>TODO(原文ママ)</p> -<h2 id="GC統計API">GC統計API</h2> -<p>実行時に<a href="“/ja/docs/SpiderMonkey/Internals/GC/Statistics_API" title='“/ja/docs/SpiderMonkey/Internals/GC/StatisticsAPI"'>GC統計API</a>.を通じて、GCが保持する明確な統計情報にアクセスする事ができます。</p> -<h2 id="ソースファイル">ソースファイル</h2> -<p><strong>jsgc{.h,inlines.h,.cpp}</strong> GCを起動するためのエントリーポイントを含む内部API関数群を定義します。</p> -<p><strong>jsgcstats.{h,cpp}</strong> 保守的なスタックスキャンに基づく情報収集のための構造体ConservativeGCStatsを定義します。TODO(原文ママ):削除されたときに消す</p> -<p><strong>gc/Barrier[-inl].h</strong> インクリメンタルおよび世代別用のwrite barrierを実装しています。</p> -<p><strong>gc/Heap.h</strong> GCのヒープ構造の根幹を成す、<code>Chunk</code>, <code>ChunkInfo</code>, <code>ChunkBitmap</code>, <code>Arena</code>, <code>ArenaHeader</code>, <code>Cell</code>, <code>FreeSpan</code>といった一連の構造体を定義します。</p> -<p><strong>gc/Marking.{h,cpp}</strong> 多様なGC対象用のマーク作業関数の全てを定義します。</p> -<p><strong>gc/Memory.{h,cpp}</strong> ページの配置と解放(mapping and unmapping)のための僅かな関数に加えて、プラットフォーム固有の実装を保持しています。配置・解放(map/unmap)用の関数はチャンクの確保と解放(allocate and release )用のために、 jsgc.cppによって使用されています。使用されておらずディスクに格納する代わりメモリ破棄が可能なページをOS伝えるなどに用いる、確保または解放(commit or decommit)のための関数もあります。</p> -<p><strong>gc/Root.h</strong> GCルートとして用いられる変数クラスを定義します。</p> -<p><strong>gc/Statistics.{h,cpp}</strong> SpiderMonkey GCのパフォーマンスカウンタとして保存される Statics構造体を定義しています。</p> -<h2 id="用語の解説">用語の解説</h2> -<p>TODO(原文ママ): SpiderMonkeyの実装と色の名前が一致しているかを確認</p> -<p><strong>black(黒)</strong>一般的な計算機科学の文脈において、マークフェイズ中、マーク済かつ子供がgray(マークキューに積まれている)なオブジェクトをblackとします。SpiderMonkeyでは、マークビットが設定されたオブジェクトをblackと見なします。</p> -<p><strong>gray(灰色)</strong>:一般的な計算機科学の文脈において、マークフェイズ中、マークキューに積まれているオブジェクトをgrayとします。SpiderMonkeyでは、マークスタック内のオブジェクトの子孫かつblackで無いものはgrayとなります。つまり、状態が明白でないオブジェクトがgrayであるということです。</p> -<p><strong>Handle(ハンドル)</strong> 私たちのGCでは、Handleはルートによって登録されたどこかを指し示すポインタです。</p> -<p><strong>root</strong> TODO(原文ママ): 上からコピーする</p> -<p><strong>weak pointer(弱参照ポインタ)</strong> 一般的な計算機科学の文脈において、weak pointerはGC目的で指し示された値が生存し続ける必要がなくなるポインタです。具体的には、既にポインタの指し示す対象が既にGCされている場合は、weak pointerのget()メソッドが返す値はnullポインタとなります。Gecko/SpiderMonkeyでは、weak pointerはマークされていないがGC対象となりうるオブジェクトへのポインタとなります。そのため、get()メソッドは存在せず、指し示す値がGCされたかどうかの保証も存在しません。プログラマは、指し示されたオブジェクトの生存時間が、weak pointerの生存時間よりも長いことを保証する必要があります。TODO(原文ママ) これが正しいか確認。</p> -<p><strong>white(白)</strong> 一般的な計算機科学の文脈において、マークフェイズ中、まだ辿れていないオブジェクトはwhiteとなります。マークされなかった場合、マークフェイズの後にオブジェクトはwhiteとなります。SpiderMonkeyでは、grayでもblackでもない(blackでもマークスタック内のオブジェクトの子でもない)オブジェクトがwhiteとなります。</p> -<h2 id="クリーンアップの可能性">クリーンアップの可能性</h2> -<p><strong>MarkPagesInUse</strong> はすべてのプラットフォームで何の操作も実施しません。</p> -<p>統計ファイルのマージ。</p> -<p><code>ArenaLists::refillFreeLists</code>は悪いネーミングです。それは、たとえ<code>Arena</code>の解放リストが完全ではなくても、<code>Cell</code>の確保を試みるように見えます。</p> diff --git a/files/ja/mozilla/projects/spidermonkey/internals/index.html b/files/ja/mozilla/projects/spidermonkey/internals/index.html deleted file mode 100644 index 49e8157aa7..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/internals/index.html +++ /dev/null @@ -1,290 +0,0 @@ ---- -title: Internals -slug: Mozilla/Projects/SpiderMonkey/Internals -tags: - - JavaScript - - SpiderMonkey - - 要更新 - - 要翻訳 -translation_of: Mozilla/Projects/SpiderMonkey/Internals ---- -<div>{{SpiderMonkeySidebar("Internals")}}</div> - -<h2 id="Design_walk-through" name="Design_walk-through">設計</h2> - -<p>SpiderMonkey は型付けされていないバイトコードと JavaScript で扱いうる値を表す<code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS::Value" title="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS::Value"> JS::Value </a></code>型に対する演算を高速に行えるインタプリタです。Just-In-Time (JIT) コンパイラやガベージコレクションの機構を備え、JavaScript の値が持つ基本的な振る舞いと <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-15">ECMA 262-5.1 §15</a> とその他の拡張で定義された標準ライブラリを実装し、いくつかのパブリックな API が提供されています。</p> - -<h3 id="インタプリタ">インタプリタ</h3> - -<p>多くの移植可能なインタプリタと同様、SpiderMonkey のインタプリタは主に単一の長大な関数として実装されています。バイトコードを 1 つずつ実行され、現在の命令に対応するコードへの分岐は <code>switch </code>文を利用して行われます(コンパイラによっては、より高速な手法が利用されます)。JS で記述された関数同士の呼び出し時にはJavaScript のスタックフレームが伸長し、C のスタックは消費されません。一方 JS で記述された関数から、C で定義された関数を呼び出し、また JS で記述された関数を呼ぶような場合は、コールスタックは通常通りに消費されるため、インタプリタは再突入可能となっています。</p> - -<p>SpiderMonkey バイトコードの処理には、引数の型による多くの特例が存在します。通常はインタプリタのループ内で処理されますが、邪魔な抽象化を無視する場合もあります。密な配列やプロパティキャッシュのような最適化は、<code>jsinterp.cpp</code> に定義されている <code>jsarray.*</code> や <code>jsobj.*</code> によって隠蔽され、透過的に行われるわけでは「ありません」。</p> - -<p>インタプリタに関する状態は、インタプリタのエントリポイントに引数として渡されます。暗黙的な状態は <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JSRuntime" title="SpiderMonkey/JSAPI_Reference/JSRuntime">JSContext</a></code> 型の値にまとめられており、API であろうがなかろうが、SpiderMonkey のすべての関数は第 1 引数に、JSContext 型のポインタをとります。</p> - -<h3 id="コンパイラ">コンパイラ</h3> - -<p>コンパイラは JavaScript のソースコードを処理し、<em>script</em> を生成します。script にはバイトコードとそのソースコード、ソースに対するアノテーション、文字列、数値、識別子のリテラルが含まれます。またソースコード中で定義されている関数も含む、オブジェクトも script には含まれます。それぞれの関数は入れ子になった script を保持します。</p> - -<p>The compiler consists of: a random-logic rather than table-driven lexical scanner, a recursive-descent parser that produces an AST, and a tree-walking code generator. Semantic and lexical feedback are used to disambiguate hard cases such as missing semicolons, assignable expressions ("lvalues" in C parlance), and whether <code>/</code> is the division symbol or the start of a regular expression. The compiler attempts no error recovery; it bails out on the first error. The emitter does some constant folding and a few codegen optimizations; about the fanciest thing it does is to attach source notes to the script for the decompiler's benefit.</p> - -<p>The decompiler implements <code>Function.toSource()</code>, which reconstructs a function's source code. It translates postfix bytecode into infix source by consulting a separate byte-sized code, called <em>source notes</em>, to disambiguate bytecodes that result from more than one grammatical production.</p> - -<h3 id="Garbage_collector">Garbage collector</h3> - -<p>The GC is a mark-and-sweep, non-conservative (exact) collector. It is used to hold JS objects and string descriptors (<a href="http://dxr.mozilla.org/mozilla-central/source/js/src/vm/String.h">JSString</a>), but not string bytes. It runs automatically only when maxbytes (as passed to <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_NewRuntime" title="SpiderMonkey/JSAPI_Reference/JS_NewRuntime">JS_NewRuntime</a></code>) bytes of GC things have been allocated and another thing-allocation request is made. JS API users should call <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_GC" title="SpiderMonkey/JSAPI_Reference/JS_GC">JS_GC</a></code> or <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_MaybeGC" title="SpiderMonkey/JSAPI_Reference/JS_MaybeGC">JS_MaybeGC</a></code> between script executions or from the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetOperationCallback" title="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetOperationCallback">operation callback</a>, as often as necessary.</p> - -<p>Because the GC is exact, C/C++ applications must ensure that all live objects, strings, and numbers are GC-reachable.</p> - -<h3 id="JavaScript_values">JavaScript values</h3> - -<p>The type <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS::Value" title="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS::Value">JS::Value</a></code> represents a JavaScript value.</p> - -<p>The representation is 64 bits and uses NaN-boxing on all platforms, although the exact NaN-boxing format depends on the platform. NaN-boxing is a technique based on the fact that in IEEE-754 there are 2**47 different bit patterns that all represent NaN. Hence, we can encode any floating-point value as a C++ <code>double </code>(noting that JavaScript NaN must be represented as one canonical NaN format). Other values are encoded as a value and a type tag:</p> - -<ul> - <li>On x86, ARM, and similar 32-bit platforms, we use what we call "nunboxing", in which non-<code>double </code>values are a 32-bit type tag and a 32-bit payload, which is normally either a pointer or a signed 32-bit integer. There are a few special values: <code>NullValue()</code>, <code>UndefinedValue()</code>, <code>TrueValue()</code> and <code>FalseValue().</code></li> - <li>On x64 and similar 64-bit platforms, pointers are longer than 32 bits, so we can't use the nunboxing format. Instead, we use "punboxing", which has 17 bits of tag and 47 bits of payload.</li> -</ul> - -<p>Only JIT code really depends on the layout--everything else in the engine interacts with values through functions like <code>val.isDouble()</code>. Most parts of the JIT also avoid depending directly on the layout: the files <code>PunboxAssembler.h</code> and <code>NunboxAssembler.h</code> are used to generate native code that depends on the value layout.</p> - -<p>Objects consist of a possibly shared structural description, called the map or scope; and unshared property values in a vector, called the slots. Each property has an <a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/jsid" title="SpiderMonkey/JSAPI_Reference/jsid">id</a>, either a nonnegative integer or an atom (unique string), with the same tagged-pointer encoding as a <code>jsval</code>.</p> - -<p>The atom manager consists of a hash table associating strings uniquely with scanner/parser information such as keyword type, index in script or function literal pool, etc. Atoms play three roles: as literals referred to by unaligned 16-bit immediate bytecode operands, as unique string descriptors for efficient property name hashing, and as members of the root GC set for exact GC.</p> - -<h3 id="Standard_library">Standard library</h3> - -<p>The methods for arrays, booleans, dates, functions, numbers, and strings are implemented using the JS API. Most are <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JSFastNative" title="SpiderMonkey/JSAPI_Reference/JSFastNative">JSFastNative</a></code>s. Most string methods are customized to accept a primitive string as the <code>this</code> argument. (Otherwise, SpiderMonkey converts primitive values to objects before invoking their methods, per <span class="pl-s1"><span class="pl-s">ECMA 262-3 §</span></span>11.2.1.)</p> - -<h3 id="Error_handling">Error handling</h3> - -<p>SpiderMonkey has two interdependent error-handling systems: JavaScript exceptions (which are <em>not</em> implemented with, or even compatible with, any kind of native C/C++ exception handling) and error reporting. In general, both functions inside SpiderMonkey and JSAPI callback functions signal errors by calling <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_ReportError" title="SpiderMonkey/JSAPI_Reference/JS_ReportError">JS_ReportError</a></code> or one of its variants, or <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="SpiderMonkey/JSAPI_Reference/JS_SetPendingException">JS_SetPendingException</a></code>, and returning <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JSBool" title="SpiderMonkey/JSAPI_Reference/JSBool">JS_FALSE</a></code> or <code>NULL</code>.</p> - -<h3 id="Public_APIs">Public APIs</h3> - -<p>The public C/C++ interface, called the JSAPI, is in most places a thin (but source-compatible across versions) layer over the implementation. See the <a href="/en-US/docs/SpiderMonkey/JSAPI_User_Guide" title="JSAPI_User_Guide">JSAPI User Guide</a>. There is an additional public API for JavaScript debuggers, <a href="/en-US/docs/JSDBGAPI_Reference" title="JSDBGAPI_Reference">JSDBGAPI</a>, but {{Source("js/jsd/jsdebug.h")}} might be a better API for debuggers. Another API, <a href="/en-US/docs/JSXDRAPI" title="JSXDRAPI">JSXDRAPI</a>, provides serialization for JavaScript scripts. (XUL Fastload uses this.)</p> - -<h3 id="Just-In-Time_compiler">Just-In-Time compiler</h3> - -<p>SpiderMonkey contains a <a href="https://blog.mozilla.org/javascript/2013/04/05/the-baseline-compiler-has-landed/">baseline compiler</a> as first tier. A second tier JIT, code-named <em>IonMonkey</em> was enabled in <a href="https://blog.mozilla.org/javascript/2012/09/12/ionmonkey-in-firefox-18/" title="https://blog.mozilla.org/javascript/2012/09/12/ionmonkey-in-firefox-18/">Firefox 18</a>. <a href="https://wiki.mozilla.org/IonMonkey">IonMonkey</a> is an optimizing compiler.</p> - -<h3 id="Self-hosting_of_built-in_functions_in_JS">Self-hosting of built-in functions in JS</h3> - -<p>Starting with Firefox 17, SpiderMonkey has the ability to implement built-in functions in self-hosted JS code. This code is compiled in a special compilation mode that gives it access to functionality that's not normally exposed to JS code, but that's required for safe and specification-conformant implementation of built-in functions.</p> - -<p>All self-hosted code lives in <code>.js</code> files under <code>builtin/</code>. For details on implementing self-hosted built-ins, see <a href="/en-US/docs/SpiderMonkey/Internals/self-hosting" title="SpiderMonkey/self-hosting">self-hosting</a>.</p> - -<h2 id="File_walkthrough" name="File_walkthrough">File walkthrough</h2> - -<h4 id="jsapi.cpp.2C_jsapi.h" name="jsapi.cpp.2C_jsapi.h">jsapi.cpp, jsapi.h</h4> - -<p>The public API to be used by almost all client code.</p> - -<h4 id="jspubtd.h.2C_jsprvtd.h" name="jspubtd.h.2C_jsprvtd.h">jspubtd.h, jsprvtd.h</h4> - -<p>These files exist to group struct and scalar typedefs so they can be used everywhere without dragging in struct definitions from N different files. The <code>jspubtd.h</code> file contains public typedefs, and is included automatically when needed. The <code>jsprvtd.h</code> file contains private typedefs and is included by various .h files that need type names, but not type sizes or declarations.</p> - -<h4 id="jsdbgapi.cpp.2C_jsdbgapi.h" name="jsdbgapi.cpp.2C_jsdbgapi.h">jsdbgapi.cpp, jsdbgapi.h</h4> - -<p>The debugging API. Provided so far:</p> - -<p><strong>Traps</strong>, with which breakpoints, single-stepping, step over, step out, and so on can be implemented. The debugger will have to consult jsopcode.def on its own to figure out where to plant trap instructions to implement functions like step out, but a future jsdbgapi.h will provide convenience interfaces to do these things. At most one trap per bytecode can be set. When a script (<code><a href="/en-US/docs/JSScript" title="JSScript">JSScript</a></code>) is destroyed, all traps set in its bytecode are cleared.</p> - -<p><strong>Watchpoints</strong>, for intercepting set operations on properties and running a debugger-supplied function that receives the old value and a pointer to the new one, which it can use to modify the new value being set.</p> - -<p><strong>Line number</strong> to PC and back mapping functions. The line-to-PC direction "rounds" toward the next bytecode generated from a line greater than or equal to the input line, and may return the PC of a for-loop update part, if given the line number of the loop body's closing brace. Any line after the last one in a script or function maps to a PC one byte beyond the last bytecode in the script. An example, from perfect.js:</p> - -<pre class="brush:js;first-line:14">function perfect(n) { - print("The perfect numbers up to " + n + " are:"); - // We build sumOfDivisors[i] to hold a string expression for - // the sum of the divisors of i, excluding i itself. - var sumOfDivisors = new ExprArray(n + 1, 1); - for (var divisor = 2; divisor <= n; divisor++) { - for (var j = divisor + divisor; j <= n; j += divisor) { - sumOfDivisors[j] += " + " + divisor; - } - // At this point everything up to 'divisor' has its sumOfDivisors - // expression calculated, so we can determine whether it's perfect - // already by evaluating. - if (eval(sumOfDivisors[divisor]) == divisor) { - print("" + divisor + " = " + sumOfDivisors[divisor]); - } - } - delete sumOfDivisors; - print("That's all."); -}</pre> - -<p>The line number to PC and back mappings can be tested using the js program with the following script:</p> - -<pre class="brush:js">load("perfect.js"); -print(perfect); -dis(perfect); -print(); -for (var ln = 0; ln <= 40; ln++) { - var pc = line2pc(perfect, ln); - var ln2 = pc2line(perfect, pc); - print("\tline " + ln + " => pc " + pc + " => line " + ln2); -} -</pre> - -<p>The result of the for loop over lines 0 to 40 inclusive is:</p> - -<pre>line 0 => pc 0 => line 16 -line 1 => pc 0 => line 16 -line 2 => pc 0 => line 16 -line 3 => pc 0 => line 16 -line 4 => pc 0 => line 16 -line 5 => pc 0 => line 16 -line 6 => pc 0 => line 16 -line 7 => pc 0 => line 16 -line 8 => pc 0 => line 16 -line 9 => pc 0 => line 16 -line 10 => pc 0 => line 16 -line 11 => pc 0 => line 16 -line 12 => pc 0 => line 16 -line 13 => pc 0 => line 16 -line 14 => pc 0 => line 16 -line 15 => pc 0 => line 16 -line 16 => pc 0 => line 16 -line 17 => pc 19 => line 20 -line 18 => pc 19 => line 20 -line 19 => pc 19 => line 20 -line 20 => pc 19 => line 20 -line 21 => pc 36 => line 21 -line 22 => pc 53 => line 22 -line 23 => pc 74 => line 23 -line 24 => pc 92 => line 22 -line 25 => pc 106 => line 28 -line 26 => pc 106 => line 28 -line 27 => pc 106 => line 28 -line 28 => pc 106 => line 28 -line 29 => pc 127 => line 29 -line 30 => pc 154 => line 21 -line 31 => pc 154 => line 21 -line 32 => pc 161 => line 32 -line 33 => pc 172 => line 33 -line 34 => pc 172 => line 33 -line 35 => pc 172 => line 33 -line 36 => pc 172 => line 33 -line 37 => pc 172 => line 33 -line 38 => pc 172 => line 33 -line 39 => pc 172 => line 33 -line 40 => pc 172 => line 33 -</pre> - -<h4 id="jsconfig.h" name="jsconfig.h">jsconfig.h</h4> - -<p>Various configuration macros defined as 0 or 1 depending on how <code><a href="/en-US/docs/JS_VERSION" title="JS_VERSION">JS_VERSION</a></code> is defined (as 10 for JavaScript 1.0, 11 for JavaScript 1.1, etc.). Not all macros are tested around related code yet. In particular, JS 1.0 support is missing from SpiderMonkey.</p> - -<h4 id="js.cpp.2C_jsshell.msg" name="js.cpp.2C_jsshell.msg">js.cpp, jsshell.msg</h4> - -<p>The "JS shell", a simple interpreter program that uses the JS API and more than a few internal interfaces (some of these internal interfaces could be replaced by <code>jsapi.h</code> calls). The js program built from this source provides a test vehicle for evaluating scripts and calling functions, trying out new debugger primitives, etc.</p> - -<p>A look at the places where <code>jsshell.msg</code> is used in <code>js.cpp</code> shows how error messages can be handled in JSAPI applications. These messages can be localized at compile time by replacing the <code>.msg</code> file; or, with a little modification to the source, at run time.</p> - -<p><a href="/en-US/docs/SpiderMonkey/Introduction_to_the_JavaScript_shell" title="https://developer.mozilla.org/en/introduction_to_the_javascript_shell">More information on the JavaScript shell</a>.</p> - -<h4 id="js.msg" name="js.msg">js.msg</h4> - -<p>SpiderMonkey error messages.</p> - -<h4 id="jsarray..2A.2C_jsbool..2A.2C_jdsdate..2A.2C_jsfun..2A.2C_jsmath..2A.2C_jsnum..2A.2C_jsstr..2A" name="jsarray..2A.2C_jsbool..2A.2C_jdsdate..2A.2C_jsfun..2A.2C_jsmath..2A.2C_jsnum..2A.2C_jsstr..2A">jsarray.*, jsbool.*, jsdate.*, jsfun.*, jsmath.*, jsnum.*, jsstr.*</h4> - -<p>These file pairs implement the standard classes and (where they exist) their underlying primitive types. They have similar structure, generally starting with class definitions and continuing with internal constructors, finalizers, and helper functions.</p> - -<h4 id="jsobj..2A.2C_jsscope..2A" name="jsobj..2A.2C_jsscope..2A">jsobj.*, jsscope.*</h4> - -<p>These two pairs declare and implement the JS object system. All of the following happen here:</p> - -<ul> - <li>creating objects by class and prototype, and finalizing objects;</li> - <li>defining, looking up, getting, setting, and deleting properties;</li> - <li>creating and destroying properties and binding names to them.</li> -</ul> - -<p>The details of a native object's map (scope) are mostly hidden in <code>jsscope.{{mediawiki.external('ch')}}</code>.</p> - -<h4 id="jsatom.cpp.2C_jsatom.h" name="jsatom.cpp.2C_jsatom.h">jsatom.cpp, jsatom.h</h4> - -<p>The atom manager. Contains well-known string constants, their atoms, the global atom hash table and related state, the js_Atomize() function that turns a counted string of bytes into an atom, and literal pool (<code>JSAtomMap</code>) methods.</p> - -<h4 id="jsarena.cpp.2C_jsarena.h" name="jsarena.cpp.2C_jsarena.h">jsarena.cpp, jsarena.h</h4> - -<p>Last-In-First-Out allocation macros that amortize malloc costs and allow for en-masse freeing. See the paper mentioned in <code>jsarena.h</code>'s major comment.</p> - -<h4 id="jsgc.cpp.2C_jsgc.h" name="jsgc.cpp.2C_jsgc.h">jsgc.cpp, jsgc.h</h4> - -<p>The garbage collector and tracing routines.</p> - -<h4 id="jsinterp..2A.2C_jscntxt..2A.2C_jsinvoke.cpp" name="jsinterp..2A.2C_jscntxt..2A.2C_jsinvoke.cpp">jsinterp.*, jscntxt.*, jsinvoke.cpp</h4> - -<p>The bytecode interpreter, and related functions such as Call and AllocStack, live in <em>jsinterp.cpp</em>. The JSContext constructor and destructor are factored out into <em>jscntxt.cpp</em> for minimal linking when the compiler part of JS is split from the interpreter part into a separate program.</p> - -<p><code>jsinvoke.cpp</code> is a build hack used on some platforms to build <code>js_Interpret</code> under different compiler options from the rest of <code>jsinterp.cpp</code>.</p> - -<h4 id="jstracer.*_nanojit*">jstracer.*, nanojit/*</h4> - -<p><a href="/en-US/docs/SpiderMonkey/Internals/Tracing_JIT" title="SpiderMonkey/Internals/Tracing JIT">The tracing JIT</a>. The interface between the JIT and the rest of SpiderMonkey is conceptually small—the interpreter calls into the trace recorder—but as with everything else, there are tendrils everywhere.</p> - -<h4 id="jsemit..2A.2C_jsopcode.tbl.2C_jsopcode..2A.2C_jsparse..2A.2C_jsscan..2A.2C_jsscript..2A" name="jsemit..2A.2C_jsopcode.tbl.2C_jsopcode..2A.2C_jsparse..2A.2C_jsscan..2A.2C_jsscript..2A">jsemit.*, jsopcode.tbl, jsopcode.*, jsparse.*, jsscan.*, jsscript.*</h4> - -<p>Compiler and decompiler modules. The <em>jsopcode.tbl</em> file is a C preprocessor source that defines almost everything there is to know about JS bytecodes. See its major comment for how to use it. For now, a debugger will use it and its dependents such as <em>jsopcode.h</em> directly, but over time we intend to extend <em>jsdbgapi.h</em> to hide uninteresting details and provide conveniences. The code generator is split across paragraphs of code in <em>jsparse.cpp</em>, and the utility methods called on <code>JSCodeGenerator</code> appear in <em>jsemit.cpp</em>. Source notes generated by <em>jsparse.cpp</em> and <em>jsemit.cpp</em> are used in <em>jsscript.cpp</em> to map line number to program counter and back.</p> - -<h4 id="jstypes.h" name="jstypes.h">jstypes.h</h4> - -<p>Fundamental representation types and utility macros. This file alone among all .h files in SpiderMonkey must be included first by .cpp files. It is not nested in .h files, as other prerequisite .h files generally are, since it is also a direct dependency of most .cpp files and would be over-included if nested in addition to being directly included.</p> - -<h4 id="jsbit.h.2C_jslog2.cpp" name="jsbit.h.2C_jslog2.cpp">jsbit.h, jslog2.cpp</h4> - -<p>Bit-twiddling routines. Most of the work here is selectively enabling compiler-specific intrinsics such as GCC's <code>__builtin_ctz</code>, which is useful in calculating base-2 logarithms of integers.</p> - -<h4 id="jsutil.cpp.2C_jsutil.h" name="jsutil.cpp.2C_jsutil.h">jsutil.cpp, jsutil.h</h4> - -<p>The <code>JS_ASSERT</code> macro is used throughout the source as a proof device to make invariants and preconditions clear to the reader, and to hold the line during maintenance and evolution against regressions or violations of assumptions that it would be too expensive to test unconditionally at run-time. Certain assertions are followed by run-time tests that cope with assertion failure, but only where I'm too smart or paranoid to believe the assertion will never fail...</p> - -<h4 id="jsclist.h" name="jsclist.h">jsclist.h</h4> - -<p>Doubly-linked circular list struct and macros.</p> - -<h4 id="jscpucfg.cpp" name="jscpucfg.cpp">jscpucfg.cpp</h4> - -<p>This standalone program generates <em>jscpucfg.h</em>, a header file containing bytes per word and other constants that depend on CPU architecture and C compiler type model. It tries to discover most of these constants by running its own experiments on the build host, so if you are cross-compiling, beware.</p> - -<h4 id="jsdtoa.cpp.2C_jsdtoa.h.2C_dtoa.c" name="jsdtoa.cpp.2C_jsdtoa.h.2C_dtoa.c">jsdtoa.cpp, jsdtoa.h, dtoa.c</h4> - -<p>dtoa.c contains David Gay's portable double-precision floating point to string conversion code, with Permission To Use notice included. jsdtoa.cpp <code>#include</code>s this file.</p> - -<h4 id="jshash.cpp.2C_jshash.h.2C_jsdhash.cpp.2C_jsdhash.h" name="jshash.cpp.2C_jshash.h.2C_jsdhash.cpp.2C_jsdhash.h">jshash.cpp, jshash.h, jsdhash.cpp, jsdhash.h</h4> - -<p>Portable, extensible hash tables. These use multiplicative hash for strength reduction over division hash, yet with very good key distribution over power of two table sizes. jshash resolves collisions via chaining, so each entry burns a malloc and can fragment the heap. jsdhash uses open addressing.</p> - -<h4 id="jslong.cpp.2C_jslong.h" name="jslong.cpp.2C_jslong.h">jslong.cpp, jslong.h</h4> - -<p>64-bit integer emulation, and compatible macros that use intrinsic C types, like <code>long long</code>, on platforms where they exist (most everywhere, these days).</p> - -<h4 id="jsprf..2A" name="jsprf..2A">jsprf.*</h4> - -<p>Portable, buffer-overrun-resistant sprintf and friends. For no good reason save lack of time, the %e, %f, and %g formats cause your system's native sprintf, rather than <code>JS_dtoa()</code>, to be used. This bug doesn't affect SpiderMonkey, because it uses its own <code>JS_dtoa()</code> call in <code>jsnum.cpp</code> to convert from double to string, but it's a bug that we'll fix later, and one you should be aware of if you intend to use a <code>JS_*printf()</code> function with your own floating type arguments - various vendor sprintf's mishandle NaN, +/-Inf, and some even print normal floating values inaccurately.</p> - -<h4 id="prmjtime.c.2C_prmjtime.h" name="prmjtime.c.2C_prmjtime.h">prmjtime.c, prmjtime.h</h4> - -<p>Time functions. These interfaces are named in a way that makes local vs. universal time confusion likely. Caveat emptor, and we're working on it. To make matters worse, Java (and therefore JavaScript) uses "local" time numbers (offsets from the epoch) in its Date class.</p> - -<h4 id="jsfile.cpp.2C_jsfile.h.2C_jsfile.msg" name="jsfile.cpp.2C_jsfile.h.2C_jsfile.msg">jsfile.cpp, jsfile.h, jsfile.msg</h4> - -<p>Obsolete. Do not use these files.</p> - -<h4 id="Makefile.in.2C_build.mk" name="Makefile.in.2C_build.mk">Makefile.in, build.mk</h4> - -<p>Mozilla makefiles. If you're building Gecko or Firefox, the larger build system will use these files. They are also used for current standalone builds.</p> - -<h4 id="Makefile.ref.2C_rules.mk.2C_config.mk.2C_config.2F.2A" name="Makefile.ref.2C_rules.mk.2C_config.mk.2C_config.2F.2A">Makefile.ref, rules.mk, config.mk, config/*</h4> - -<p>Obsolete SpiderMonkey standalone makefiles from 1.8 and earlier. See <a href="/en-US/docs/SpiderMonkey/Build_Documentation#Building_SpiderMonkey_1.8_or_earlier" title="SpiderMonkey/Build Documentation#Building SpiderMonkey 1.8 or earlier">SpiderMonkey Build Documentation</a>.</p> - -<h3 id="See_also">See also</h3> - -<ul> - <li><a href="/jsd" title="jsd">jsd</a></li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/internals/thread_safety/index.html b/files/ja/mozilla/projects/spidermonkey/internals/thread_safety/index.html deleted file mode 100644 index 90bfb3fb10..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/internals/thread_safety/index.html +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Thread Safety -slug: Mozilla/Projects/SpiderMonkey/Internals/Thread_Safety -tags: - - JavaScript - - SpiderMonkey ---- -<p>This page describes implementation details of the <a href="/ja/SpiderMonkey" title="ja/SpiderMonkey">SpiderMonkey</a> JavaScript engine. It is mainly of interest to people working on SpiderMonkey itself, but this information is also helpful for anyone embedding SpiderMonkey in a multithreaded environment. See also <code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>.</p> -<p>{{ 英語版章題("General background") }}</p> -<h4 id="General_background" name="General_background">General background</h4> -<p>SpiderMonkeyは、最上位の構造体として<code><a href="/ja/JS_NewRuntime" title="ja/JS_NewRuntime">JSRuntime</a></code>を利用します。これらの構造体は、メモリの管理とグローバルなデータ構造を扱います。 通常の場合プログラムは、多くのスレッドを利用する場合でも、1つだけ<code>JSRuntime</code>を使います。<code>JSRuntime</code>は、JSオブジェクトが動作する 世界といってもよいでしょう。オブジェクトは、他の<code>JSRuntime</code>に移って動作することはできません。 <span class="comment">SpiderMonkey has a top-level struct, <code><a href="/ja/JS_NewRuntime" title="ja/JS_NewRuntime"></code>, that handles, among other things, memory management and "global" data structures. A program typically has only one <code>JSRuntime</code>, even if it has many threads. The <code>JSRuntime</code> is the universe in which JS objects live; they can't travel to other <code>JSRuntime</code>s.</a></span></p> -<p>全てのJSコードとほとんどのJSAPIの呼び出しは、<code><a href="/ja/JS_NewContext" title="ja/JS_NewContext">JSContext</a></code>の中で動作します。<code>JSContext</code>は、 <code>JSRuntime</code>の子供のようなもので、例えば、例外の処理などは、<code>JSContext</code>ごとに実行されます。 各<code>JSContext</code>は、同時に複数スレッドからアクセスしてはなりません。 <span class="comment">All JS code and most JSAPI calls run within a <code><a href="/ja/JS_NewContext" title="ja/JS_NewContext">JSContext</a></code>. The <code>JSContext</code> is a child of the <code>JSRuntime</code>; exception handling, for example, is per-<code>JSContext</code>. Each <code>JSContext</code> must be used by only one thread at a time.</span></p> -<p>オブジェクトは、同じ<code>JSRuntime</code>内の<code>JSContext</code>間で共有できます。コンテキストとオブジェクトの間には、固定的な関係はありません。 <span class="comment">Objects may be shared among <code>JSContext</code>s within a <code>JSRuntime</code>. There's no fixed association between an object and a context.</span></p> -<p>SpiderMonkeyにおけるスレッドセーフ機能は、<code>-DJS_THREADSAFE</code>をつけてコンパイルすることで有効になります。<code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を有効にしたビルドでは、次のような操作について特別な処理が行われます。 <span class="comment">Thread-safety in SpiderMonkey is turned on by compiling with <code>-DJS_THREADSAFE</code>. In a <code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code> build, these operations are handled specially:</span></p> -<ul> <li><code>JSRuntime</code>のデータ構造にアクセスする場合</li> <li>ガーベジコレクションを行う場合</li> <li>オブジェクトのプロパティにアクセスする場合</li> -</ul> -<p><span class="comment">* access to <code>JSRuntime</code> data structures * garbage collection * access to properties of objects</span></p> -<p><code>JSRuntime</code>のデータ構造へのアクセスは、mutexによってシリアライズされます。 GCとプロパティに関する処理については、もう少し詳しく説明します。 <span class="comment">Accesses to <code>JSRuntime</code> data structures are serialized with a few mutexes. The treatment of GC and properties requires more explanation.</span></p> -<p>{{ 英語版章題("Making GC thread-safe") }}</p> -<h4 id="Making_GC_thread-safe" name="Making_GC_thread-safe">Making GC thread-safe</h4> -<p><code>JS_THREADSAFE</code>を用いるときは、APIを若干変更します。プログラム中でJSAPIを呼び出すときは、次に示す"request"で くくらなくてはなりません。 <span class="comment">With <code>JS_THREADSAFE</code>, the API changes slightly. The program must group JSAPI calls into "requests":</span></p> -<pre class="eval"> <a href="/ja/JS_SetContextThread" title="ja/JS_SetContextThread">JS_SetContextThread</a>(cx); - <a href="/ja/JS_BeginRequest" title="ja/JS_BeginRequest">JS_BeginRequest</a>(cx); - /* ... do stuff ... */ - <a href="/ja/JS_EndRequest" title="ja/JS_EndRequest">JS_EndRequest</a>(cx); - <a href="/ja/JS_ClearContextThread" title="ja/JS_ClearContextThread">JS_ClearContextThread</a>(cx); -</pre> -<p>複数のスレッドがrequest内で同じ<code>JSRuntime</code>を同時にアクセスできるため、この操作がボトルネックになることはありません。詳細は<a href="/ja/JS_BeginRequest" title="ja/JS_BeginRequest">JS_BeginRequest</a>を参照してください。 <span class="comment">It isn't a bottleneck; multiple threads are allowed to be in requests on the same <code>JSRuntime</code> at once. See <a href="/ja/JS_BeginRequest" title="ja/JS_BeginRequest">JS_BeginRequest</a>.</span></p> -<p>requestの最も顕著な効果は、いつでも複数のスレッドがrequestのくくりを実行することができるか、1つのスレッドだけがGCを実行していて他のスレッドが停止させられている 用にすることです。JS_GC()を呼び出しても、他のスレッドが停止させられるまでは、処理がブロックされます。つまり、他のスレッドがJSAPIを呼び出していないか (呼び出していないときには、特に注意する必要がないので)、JSAPIを実行中であってもGCが終了するのを待っているブロックしている状態になるまで、 GCの実行は停止させられます。 <span class="comment">The most obvious effect of a request is: at any given moment there can either be multiple threads in active requests, or one thread doing GC and all requests suspended. A call to JS_GC() will block until the latter becomes possible. In other words, GC waits until each other thread is either outside JSAPI (in which case we don't care what it's doing) or else in JSAPI, but blocked, waiting for GC to finish.</span></p> -<p>requestのくくりの中にいないときには、スレッドは、GCに影響を与えるような処理を行ってはいけません。 当たり前のことですが、requestのくくりの中では、GCが抑止されてしまうので、ブロックしたり、時間のかかる処理を行ってはいけません。 <span class="comment">Threads must not do anything that would affect GC while outside a request. And obviously you shouldn't block or otherwise dilly-dally while in a request; it prohibits GC. 最適化のために、スレッドには、スレッドごとの大きさごとに分けられた、割り当て可能なGC用のメモリの集合に関するフリーリストを持っています。 このリストにより、ほとんどの場合ロックせずにメモリを割り当てることができます。スレッドがロックを必要とするのは、スレッドの対応するフリーリストが 空だった場合だけです。このようなことが怒った場合に、ロックして広域のGC割り当てを行い、<code>JSRuntime</code>から、フリーリストに領域を補充します。 <!--As an optimization, each thread has its own size-classified freelists containing chunks of GC-managed memory ready to be allocated. This allows allocation to avoid locking most of the time (a significant speed win). A thread needs to lock on allocation only when the relevant per-thread freelist is empty. When this happens, the thread also refills that freelist from the <code>JSRuntime</code>-wide GC allocator while it's in the lock.</span></p> -<p>{{ 英語版章題("Making property accesses thread-safe") }}</p> -<h4 id="Making_property_accesses_thread-safe" name="Making_property_accesses_thread-safe">Making property accesses thread-safe</h4> -<p>JSAPIのユーザにとっては、プロパティへのアクセスは全てシリアライズされているように見えます。これから記述する方法は、SpiderMonkeyの内部に関するもので ユーザにとっては見えない、最適化についてです。 <span class="comment">To the JSAPI user, all property accesses appear to be serialized. The scheme described below is an optimization, internal to SpiderMonkey and invisible to the user.</span></p> -<p>SpiderMonkeyの実装では、mutableなオブジェクトは必要に応じて暗黙のうちにロックされます。ロックの手順は、うまく最適化されていて、単なるmutexではありません。 <span class="comment">SpiderMonkey implicitly locks mutable objects as needed. The locking protocol is cleverly optimized. It's not a simple mutex.</span></p> -<p>それぞれの、mutableなオブジェクトは、<code>JSContext</code>が"占有"している(つまり、コンテキストがロックをしなくてもプロパティにアクセスできる) か、<code>JSRuntime</code>内の<code>JSContext</code>で、"共有"しているかのいずれかです。(繰り返しになりますが、JSAPIのユーザにとっては、全てのオブジェクトは 共有されており、この"所有関係"は、ユーザには見えないように最適化されています。) <span class="comment">Each mutable object is either "owned" by a <code>JSContext</code>, meaning that context may access its properties without locking; or "shared" across all <code>JSContext</code>s in the <code>JSRuntime</code>. (Again, to the end user, all objects are shared--this "ownership" is a transparent optimization.)</span></p> -<p>初期状態では、オブジェクトの所有者は、オブジェクトを作った<code>JSContext</code.です。他の<code>JSContext</code>がオブジェクトにアクセスしようとするまでは、 ロックは全く必要ではありません。他のコンテキストがアクセスしようとした時点で、<code>JSRuntime</code>の広域ロックを取得します。ただ、この時点においても プロパティへの通常のアクセスは、1つのオブジェクト(つまり、プロパティを持っているオブジェクトのこと)のmutable部分に触る必要があるだけです。 従って、デッドロックは問題になりません。* また、スレッドがロックする必要がある場合でも、オブジェクトを所有しているコンテキストが requestのくくりを実行していないのであれば、コストのかかる他のスレッドとのランデブ**を避けることができます。 <span class="comment">Initially an object is owned by the <code>JSContext</code> in which it was created. Locking is never needed until some other <code>JSContext</code> tries to access the object. At that point, we acquire a <code>JSRuntime</code>-wide lock. But even then, each ordinary property access only needs to touch mutable parts of one object (the one that has the property), so deadlock isn't an issue.* And even though the calling thread must lock, it can still avoid a costly rendezvous** with another thread, if the context that owns the object is not currently in a request.</span></p> -<p>I found it helpful to read the code for <code><a href="http://lxr.mozilla.org/seamonkey/ident?i=OBJ_GET_SLOT" class="external">OBJ_GET_SLOT</a></code>, defined in <a href="http://hg.mozilla.org/mozilla-central/?file/tip/js/src/jsobj.h" class="external">jsobj.h</a>, and track down the various things it calls.</p> -<pre class="eval"> /* Thread-safe functions and wrapper macros for accessing slots in obj. */ - #define OBJ_GET_SLOT(cx,obj,slot) \ - (OBJ_CHECK_SLOT(obj, slot), \ - (OBJ_IS_NATIVE(obj) && OBJ_SCOPE(obj)->ownercx == cx) \ - ? LOCKED_OBJ_GET_SLOT(obj, slot) \ - : js_GetSlotThreadSafe(cx, obj, slot)) -</pre> -<p>Here <code>OBJ_CHECK_SLOT()</code> is just an assertion. <code>LOCKED_OBJ_GET_SLOT()</code> is the fast path; it amounts to an array access. <code>OBJ_SCOPE(obj)->ownercx</code> is the object's owning context, or <code>NULL</code> if the object is "shared". (An <code>OBJ_SCOPE</code> is just a handy place to stick this field; it is often shared across multiple objects, so all this locking is somewhat higher than object-level.)</p> -<p>This may appear unsafe, at least in SMP environments where writing a word isn't guaranteed to make the new value immediately visible to other CPUs. Requests save the day again: entering or leaving a request always briefly acquires a lock, which forces a read-write barrier. This barrier is necessary and sufficient to make several of these optimizations safe.</p> -<p>In short, any <code>JSContext</code> may touch any object, yet not only is locking usually optimized away, the threads don't even have to execute atomic instructions or barrier instructions in the most common path.</p> -<hr> -<p>* deadlock isn't an issue: That is, SpiderMonkey doesn't need any special code to detect and avoid potential deadlock when getting or setting an ordinary property, because it can't happen--you're only locking one object at a time. Assigning to <code>__proto__</code> is an example of a special case: SpiderMonkey checks for prototype chain cycles, which means locking the whole chain. So in that case, and maybe others, SpiderMonkey does extra work to avoid deadlock.</p> -<p>** can still avoid a costly rendezvous: That is, it can avoid "asking" that thread to surrender the object and then waiting for the thread to respond. It just takes the object. See <a href="http://lxr.mozilla.org/seamonkey/ident?i=ClaimScope" class="external">ClaimScope</a> in jslock.c.</p> -<p>{{ 英語版章題("Patent") }}</p> -<h4 id="Patent" name="Patent">Patent</h4> -<p>The SpiderMonkey request model is patented: <a href="http://www.wipo.int/pctdb/en/wo.jsp?wo=2003042845" class=" external" rel="freelink">http://www.wipo.int/pctdb/en/wo.jsp?wo=2003042845</a></p> -<p>The Mozilla Public License in the SpiderMonkey source code grants a worldwide royalty-free license to this invention.</p> - -<p>{{ languages( { "en": "en/SpiderMonkey_Internals/Thread_Safety" } ) }} </p> diff --git a/files/ja/mozilla/projects/spidermonkey/introduction_to_the_javascript_shell/index.html b/files/ja/mozilla/projects/spidermonkey/introduction_to_the_javascript_shell/index.html deleted file mode 100644 index f07dc77d69..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/introduction_to_the_javascript_shell/index.html +++ /dev/null @@ -1,376 +0,0 @@ ---- -title: JavaScript シェルの紹介 -slug: Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell ---- -<div>{{SpiderMonkeySidebar("General")}}</div> - -<div class="summary"> -<p><strong>JavaScript シェル</strong> (<code>js</code>) は <a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> ソース配布に含まれているコマンドラインプログラムです。 これは、Python の対話型プロンプト、Lisp の read-eval-print ループ、または Ruby の irb に相当する JavaScript です。この記事では、シェルを使用して JavaScript コードを試したり JavaScript プログラムを実行したりする方法について説明します。</p> -</div> - -<p>SpiderMonkey JavaScript シェルを入手するには、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation">SpiderMonkey ビルドドキュメント</a>を参照するか、<a href="https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/">Nightly Builds</a> からプラットフォーム用にコンパイルされたバイナリをダウンロードしてください。</p> - -<p>他の JavaScript シェルのリストについては、<a href="/ja/docs/JavaScript/Shells">JavaScript シェル</a>を参照してください。</p> - -<div class="note"> -<p>メモ: SpiderMonkey 44 {{geckoRelease(44)}} 以降、標準の Web 互換の JavaScript バージョンがデフォルトで使用されます (JS 1.7 以降ではなくなりました)。組み込みの <code>version()</code> シェルは、従来の機能をテストするためにまだ存在しています。</p> -</div> - -<h2 id="Using_the_JavaScript_shell" name="Using_the_JavaScript_shell">JavaScript シェルを実行する</h2> - -<p>シェルには2つの動作モードがあります。インタラクティブシェルとして使用することができます。ここでは、プロンプトで JavaScript コードを入力してすぐに満足のいく結果を得ることができます。これは、新機能の実験やテストに便利です。実行する JavaScript プログラムファイルをコマンドラインで渡すこともできます。その場合、プログラムは自動的に実行されます。</p> - -<p>ビルドの資料に従って、make install を使用してビルド済みシェルをインストールした後は、次のコマンドを使用して対話モードでシェルを実行できます。</p> - -<pre class="eval">js -</pre> - -<p style="text-align: right;">[ If you get " symbol lookup error: ./js: undefined symbol: PR_SetCurrentThreadName" e.g. from a Bash console when using a pre-compiled binary, try <path to your Firefox's run-mozilla.sh>/run-mozilla.sh ./js -- that worked for me]</p> - -<p>ファイル <code>foo.js</code> 内の JavaScript コードを実行したい場合は、次のコマンドを使用できます:</p> - -<pre class="eval">js foo.js -</pre> - -<p><code>foo.js</code> を実行してからインタラクティブシェルにドロップするには、次のようにします:</p> - -<pre class="eval">js -f foo.js -i -</pre> - -<h2 id="リファレンス">リファレンス</h2> - -<div class="note"><strong>メモ:</strong> JavaScript シェルは JavaScript エンジンのテスト環境として使用されるため、使用可能なオプションと組み込み関数は時間の経過とともに変わる可能性があります。</div> - -<h3 id="Command_line_options" name="Command_line_options">コマンドラインオプション</h3> - -<p>シェルを制御するために指定できるコマンドラインオプションは多数あります。これらは以下に要約されています。文書化されていないものがあるかどうかを確認するには、必ず自分の jsshell で <strong>-h</strong> を使用してください。</p> - -<dl> - <dt><code>-c, --compileonly</code></dt> - <dd>プログラムをコンパイルして実行しないようシェルに指示します。これは、プログラムを実行せずにプログラム内の構文エラーを素早くチェックするのに便利な方法です。</dd> - <dt><code>-e <em>script</em></code></dt> - <dd>指定した<em>スクリプト</em>を実行します。これは、実行するコードを含むリテラル文字列です。</dd> - <dt><code>-f <em>filename</em></code></dt> - <dd><em>filename</em> で指定された JavaScript プログラムを実行します。</dd> - <dt><code>-i</code></dt> - <dd>インタラクティブモードを有効にします。(ファイル名が指定されていない場合はデフォルト)</dd> - <dt><code>--no-ion</code></dt> - <dd>最適化 JIT コンパイラを無効にします。</dd> - <dt><code>--no-baseline</code></dt> - <dd>ベースライン JIT コンパイラを無効にします。</dd> - <dt><code>-P</code></dt> - <dd>ファイルの最初の行が "/usr/bin/env js -P" の場合、ファイルの内容は JavaScript エンジンによって解釈されます。</dd> - <dd>これにより、JavaScript ファイルを UNIX および OS X マシン上で実行可能にすることができます。</dd> - <dt><code>-s</code></dt> - <dd>厳密な警告モードを有効にします。</dd> - <dt><code>-w, --warnings</code></dt> - <dd>警告メッセージを有効にします。</dd> - <dt><code>-W</code>, --nowarnings</dt> - <dd>警告メッセージを無効にします。</dd> -</dl> - -<h3 id="Environment_options" name="Environment_options">環境オプション</h3> - -<p>js シェルの動作を変更するために設定できる環境変数がいくつかあります。</p> - -<dl> - <dt><code>JS_STDOUT=<em>file</em></code></dt> - <dd>標準出力を <em>file</em> にリダイレクトします。</dd> - <dt><code>JS_STDERR=<em>file</em></code></dt> - <dd>標準エラー出力を <em>file</em> にリダイレクトします。</dd> -</dl> - -<h3 id="Built-in_functions" name="Built-in_functions">組み込み関数</h3> - -<p>JavaScript シェルをより便利にするために、JavaScript プログラムからでもインタラクティブモードでも使える、多くの組み込み関数が提供されています。</p> - -<div class="warning"> -<p><strong>注</strong>: このリストは不完全であり、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Shell_global_objects">Shell のグローバルオブジェクト</a>と重複しています。詳しくは {{Source("js/src/shell/js.cpp")}} を参照してください (<code>shell_functions</code>について)。</p> -</div> - -<h4 id="build.28.29" name="build.28.29"><code>build()</code></h4> - -<p>JavaScript シェルが構築された日時を返します。</p> - -<div class="note"><strong>メモ:</strong> パラメータなしの <code>clear()</code> は本当にすべてをクリアします。これにはこれらすべての組み込み関数が含まれます。</div> - -<h4 id="clone.28function.2C_.5Bscope.5D.29" name="clone.28function.2C_.5Bscope.5D.29"><code>clone(<em>function, [scope]</em>)</code></h4> - -<p>指定された <var>function</var> オブジェクトを複製します。scope が指定されていない場合、新しいオブジェクトの親は元のオブジェクトのものと同じです。それ以外の場合、新しいオブジェクトは <em>scope</em> で指定されたオブジェクトの範囲内に配置されます。</p> - -<h4 id="countHeap" name="countHeap"><code>countHeap(<em>[start[, kind]]</em>)</code></h4> - -<p>{{ jsapi_minversion_inline("1.8") }} ヒープ内のライブ GC のもの、または <em>start</em> から到達可能なもので、指定された値が null ではないものの数を数えます。<em>kind</em> はすべてのものを数える <code>'all'</code> (デフォルト)、またはその種類のものだけを数えるための <code>'object'</code>, <code>'double'</code>, <code>'string'</code>, <code>'function'</code>, <code>'qname'</code>, <code>'namespace'</code>, <code>'xml'</code> のいずれかです。</p> - -<h4 id="evalcx.28string.5B.2C_object.5D.29" name="evalcx.28string.5B.2C_object.5D.29"><code>dumpHeap(<em>[fileName[, start[, toFind[, maxDepth[, toIgnore]]]]]</em>)</code></h4> - -<p>{{ jsapi_minversion_inline("1.8") }} 既存のすべてのオブジェクト (または特定の興味深い部分グラフ) のグラフをファイルにダンプします。詳しくは、この関数の C/C++ バージョン、<code>JS_DumpHeap</code> を参照してください。</p> - -<h4 id="evalcx.28string.5B.2C_object.5D.29" name="evalcx.28string.5B.2C_object.5D.29"><code>evalcx(<em>string[, object]</em>)</code></h4> - -<p>JavaScript コードを文字列で評価します。<em>object</em> が指定されている場合、コードはそのオブジェクト内で実行され、サンドボックスとして扱われます。</p> - -<p><em>string</em> が空で <em>object</em> が指定されていない場合、<code>evalcx()</code> は、意欲的な標準クラスを持つ新しいオブジェクトを返します。</p> - -<p><em>string</em> が "lazy" で <em>object</em> が指定されていない場合、<code>evalcx()</code> は lazy 標準クラスを持つ新しいオブジェクトを返します。</p> - -<div class="note"><strong>メモ:</strong> <code>evalcx()</code> は、シェル内で <code>evalInSandbox</code> のような環境をテストするために、JavaScript エンジンの内部で深く作業している人にのみ役立ちます。</div> - -<h4 id="gc.28.29" name="gc.28.29"><code>gc()</code></h4> - -<p>ガベージコレクタを実行してメモリを解放します。</p> - -<h4 id="gcparam.28.29" name="gcparam.28.29"><code>gcparam(<em>name[, value]</em>)</code></h4> - -<p>{{ jsapi_minversion_inline("1.8") }} ガベージコレクタのパラメータを読み込むか設定します。</p> - -<p>名前は <a href="https://searchfox.org/mozilla-central/source/js/src/builtin/TestingFunctions.cpp#464">https://searchfox.org/mozilla-central/source/js/src/builtin/TestingFunctions.cpp#464</a> の <code>FOR_EACH_GC_PARAM</code> で定義されているパラメータキーのいずれか (<code>'maxBytes'</code>、<code>'maxMallocBytes'</code>、'<code>gcNumber</code>' など) でなければなりません。</p> - -<p><em>value</em> が指定されていない場合、<code>gcparam()</code> は name という名前の GC パラメータに関連付けられている現在の値を返します。</p> - -<p><em>value</em> が指定されている場合、それは正の uint32 に変換可能でなければなりません。<code>gcparam()</code> は GC パラメータの <em>name</em> を <em>value</em> に設定します。</p> - -<p>詳しくは C/C++ 関数の <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetGCParameter">JS_GetGCParameter</a></code> および <a class="internal" href="https://developer.mozilla.org/En/SpiderMonkey/JSAPI_Reference/JS_SetGCParameter" title="en/SpiderMonkey/JSAPI Reference/JS SetGCParameter"><code>JS_SetGCParameter</code></a> を参照してください。</p> - -<h4 id="gczeal.28.29" name="gczeal.28.29"><code>gczeal(level)</code></h4> - -<p>{{ jsapi_minversion_inline("1.8") }} <code>DEBUG</code> のみ。デバッグ機能である GC の活動量のレベルを設定します。これは、通常の定期的なガベージコレクションの場合は 0、非常に頻繁な GC の場合は 1、非常に頻繁な GC の場合は 2 になります。<br> - 0 以外は JavaScript の実行を非常に遅くしますが、GC 関連のバグを明らかにしたり再現したりするのに役立ちます。詳しくは、この関数の C/C++ バージョンである <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetGCZeal">JS_SetGCZeal</a></code> を参照してください。</p> - -<h4 id="getpda.28object.29" name="getpda.28object.29"><code>getpda(<em>object</em>)</code></h4> - -<p>指定した <em>object</em> のプロパティ記述子を返します。</p> - -<h4 id="getslx.28object.29" name="getslx.28object.29"><code>getslx(<em>object</em>)</code></h4> - -<p>指定されたオブジェクトを構成するコードの行数であるスクリプト行エクステントを返します。</p> - -<h4 id="help.28.5Bcommand_....5D.29" name="help.28.5Bcommand_....5D.29"><code>help(<em>[command ...]</em>)</code></h4> - -<p>指定されたコマンド、または指定されていない場合は使用可能なすべての機能に関する簡単なヘルプ情報を表示します。</p> - -<h4 id="intern.28string.29" name="intern.28string.29"><code>intern(<em>string</em>)</code></h4> - -<p>指定された <var>string</var> をアトムテーブルに内部化します。すべての文字列はアトムと呼ばれる一意の識別子を持ちます。このシステムにより、文字列間の比較が簡単になります。</p> - -<div class="note"><strong>メモ:</strong> この関数は、JavaScript エンジンをテストするときにのみ使用されることを意図しています。</div> - -<h4 id="line2pc.28.5Bfunction.2C_.5D_line.29" name="line2pc.28.5Bfunction.2C_.5D_line.29"><code>line2pc(<em>[function, ] line</em>)</code></h4> - -<p>指定されたコード行に対応するプログラムカウンタ値を返します。<em>function</em> が指定されている場合、<em>line</em> は指定された関数へのオフセットです。</p> - -<h4 id="load.28filename1_.5Bfilename.5D.29" name="load.28filename1_.5Bfilename.5D.29"><code>load(<em>filename1</em> <em>[filename]</em>)</code></h4> - -<p>指定された名前で JavaScript ファイルをロードします。</p> - -<div class="note"><strong>メモ:</strong> JavaScript 以外のファイルをロードするには、<code>read()</code> を使用してください。</div> - -<h4 id="options.28.5Boption_....5D.29" name="options.28.5Boption_....5D.29"><code>options(<em>[option ...]</em>)</code></h4> - -<p>オプションを設定または取得できます。コマンドラインでオプションを指定した場合、<code>options</code> を呼び出した結果は、どのオプションを要求したかを示します。新しいオプションを渡して設定することもできます。</p> - -<p>利用可能なオプションは以下のとおりです:</p> - -<table class="standard-table"> - <tbody> - <tr> - <td class="header">オプション名</td> - <td class="header">説明</td> - </tr> - <tr> - <td><code>strict</code></td> - <td>ストリクトモードが有効になります。</td> - </tr> - <tr> - <td><code>werror</code></td> - <td>警告はエラーとして扱われます。</td> - </tr> - <tr> - <td><code>atline</code></td> - <td><code>atline</code> が有効になっているとき、<code>//@line <em>num</em></code> の形式のコメントは次の行の番号を <code><em>num</em></code> に設定します。</td> - </tr> - </tbody> -</table> - -<h4 id="pc2line.28function.2C_.5Bpc.5D.29" name="pc2line.28function.2C_.5Bpc.5D.29"><code>pc2line(<em>function, [pc]</em>)</code></h4> - -<p>指定された <em>function</em> の最初の行に対応する JavaScript コードの行番号を返します。関数にプログラムカウンタオフセットを指定した場合は、そのオフセットを含むコード行の行番号が返されます。</p> - -<h4 id="print.28.5Bexpression_....5D.29" name="print.28.5Bexpression_....5D.29"><code>print(<em>[expression ...]</em>)</code></h4> - -<p><em>expression(s)</em> を評価し、その結果を <code>stdout</code> にスペース (" ") で区切って表示し、改行 ("\n") で終了します。</p> - -<h4 id="print.28.5Bexpression_....5D.29" name="print.28.5Bexpression_....5D.29"><code>putstr(<em>expression</em>)</code></h4> - -<p><em>expression</em> を評価し、その結果を <code>stdout</code> に表示します。</p> - -<h4 id="quit.28.29" name="quit.28.29"><code>quit(<em>[status]</em>)</code></h4> - -<p>シェルを終了します。省略した場合、<em>status</em> はデフォルトで 0 になります。</p> - -<h4 id="read.28filename.5B.2C_type.5D.29" name="read.28filename.5B.2C_type.5D.29"><code>read(<em>filename[, type]</em>)</code></h4> - -<p>ファイルの内容を読み込んで返します。typeが "binary" の場合は <code>Uint8Array</code> が返され、それ以外の場合は UTF-8 でデコードされた文字列が返されます。</p> - -<h4 id="readline.28.29" name="readline.28.29"><code>readline()</code></h4> - -<p><code>stdin</code> から単一行の入力を読み込み、呼び出し元に返します。これを使って JavaScript でインタラクティブシェルプログラムを作成することができます。</p> - -<h4 id="scatter.28fnArray.29" name="scatter.28fnArray.29">Reflect.parse()</h4> - -<p><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Parser_API" title="en/SpiderMonkey/Parser_API">Parser API</a> を参照してください。</p> - -<div class="note"><strong>メモ:</strong> この関数は、JavaScript エンジンをテストするときにのみ使用することを意図しています。</div> - -<h4 id="seal.28object.5B.2C_deep.5D.29" name="seal.28object.5B.2C_deep.5D.29"><code>seal(<em>object[, deep]</em>)</code></h4> - -<p>指定した <em>object</em>、または <em>deep</em> が <code>true</code> の場合はオブジェクトグラフをシールします。オブジェクトまたはオブジェクトグラフを封印することで、それらのオブジェクトの変更を無効にします。</p> - -<h4 id="sleep.28dt.29" name="sleep.28dt.29"><code>sleep(dt)</code></h4> - -<p>{{ jsapi_minversion_inline("1.8") }} <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_THREADSAFE">JS_THREADSAFE</a></code> でのみビルドされます。<em>dt</em> 秒間スリープします。秒の端数がサポートされています。成功した場合に<code>true</code>、スリープが中断された場合に<code>false</code>を返します。</p> - -<h4 id="stackQuota" name="stackQuota"><code>stackQuota(<em>[number]</em>)</code> {{obsolete_inline}}</h4> - -<p>スクリプトスタッククォータを取得または設定します。</p> - -<h4 id="throwError.28.29" name="throwError.28.29"><code>throwError()</code></h4> - -<p><code>JS_ReportError()</code> 関数からエラーをスローします。</p> - -<div class="note"><strong>メモ:</strong> この関数は、JavaScript エンジンをテストするときにのみ使用することを意図しています。</div> - -<h4 id="trap.28.5Bfunction.2C_.5Bpc.2C.5D.5D_expression.29" name="trap.28.5Bfunction.2C_.5Bpc.2C.5D.5D_expression.29"><code>trap(<em>[function, [pc,]] expression</em>)</code></h4> - -<p>JavaScript コードの特定の位置にトラップを設定します。関数 <em>function</em> の <em>pc</em> で指定されたオフセットのバイトコードが実行されようとしているとき、式は評価されます。</p> - -<p><code>line2pc()</code> と組み合わせて使用すると、これは強力なデバッグメカニズムです。たとえば、関数 <code>doSomething()</code> の 6 行目が実行されたときにメッセージを表示したい場合は、次のように入力します。</p> - -<pre>trap(doSomething, line2pc(doSomething, 6), "print('line 6!\n')"); -</pre> - -<div class="note"><strong>メモ:</strong> トラップが設定されると、<code>untrap()</code> を使用してトラップを削除するまで、プログラム内の対応するバイトコードが <code>trap</code> バイトコードに置き換えられます。</div> - -<h4 id="untrap.28function_.5B.2C_pc.5D.29" name="untrap.28function_.5B.2C_pc.5D.29"><code>untrap(<em>function [, pc]</em>)</code></h4> - -<p>オフセット <em>pc</em> で指定した <em>function</em> からトラップを削除します。<em>pc</em> が指定されていない場合、トラップは関数のエントリポイントから削除されます。</p> - -<p>指定された場所にトラップがない場合、この機能は無効です。</p> - -<h4 id="version.28.5Bnumber.5D.29" name="version.28.5Bnumber.5D.29"><code>version(<em>[number]</em>)</code></h4> - -<p><code>version()</code> 関数を使用すると、JavaScript のバージョン番号を取得または設定できます。これは、特定のバージョンの JavaScript でのみ使用可能な構文にアクセスするのに役立ちます (たとえば、<a href="/ja/docs/Web/JavaScript/New_in_JavaScript/1.7#Using_JavaScript_1.7">JavaScript 1.7 の使用</a>を参照)。</p> - -<h3 id="Debug_functions" name="Debug_functions">デバッグ関数</h3> - -<p>これらの組み込み関数は <code>DEBUG</code> ビルドでのみ利用可能です。</p> - -<h4 id="dis.28.5Bfunction.5D.29" name="dis.28.5Bfunction.5D.29"><code>dis(<em>[function]</em>)</code></h4> - -<p>プログラム全体、または指定された <em>function</em> の JavaScript バイトコードを逆アセンブルします。</p> - -<p>たとえば、以下の JavaScript 関数を入力したとします。</p> - -<pre class="eval">function test() { - var i = 3; - print(i+2); -} -</pre> - -<p>それから <code>dis(test);</code> コマンドを実行すると、この出力が得られます。</p> - -<pre>main: -00000: uint16 3 -00003: setvar 0 -00006: pop -00007: name "print" -00010: pushobj -00011: getvar 0 -00014: uint16 2 -00017: add -00018: call 1 -00021: pop -00022: stop - -Source notes: - 0: 0 [ 0] newline - 1: 3 [ 3] decl offset 0 - 2: 7 [ 4] newline - 3: 18 [ 11] xdelta - 4: 18 [ 0] pcbase offset 11 -</pre> - -<h4 id="dissrc.28.5Bfunction.5D.29" name="dissrc.28.5Bfunction.5D.29"><code>dissrc(<em>[function]</em>)</code></h4> - -<p>プログラム全体または指定された <em>function</em> の JavaScript バイトコードを逆アセンブルして、ソース行を表示します。この関数は、シェルの起動時に <code>-f</code> フラグを使用するか、<code>load()</code> 関数を使用してファイルからロードされたプログラムに対してのみ機能します。</p> - -<p>プログラムに関数 <code>doStuff()</code> が含まれている場合は、次のようになります。</p> - -<pre>function doStuff(input) { - print("Enter a number: "); - var n1 = readline(); - print("Enter another one: "); - var n2 = readline(); - - print("You entered " + n1 + " and " + n2 + "\n"); -} -</pre> - -<p><code>dissrc(doStuff)</code> 関数を呼び出すと、次の出力が得られます。</p> - -<pre>;------------------------- 10: print("Enter a number: "); -00000: 10 name "print" -00003: 10 pushobj -00004: 10 string "Enter a number: " -00007: 10 call 1 -00010: 10 pop -;------------------------- 11: var n1 = readline(); -00011: 11 name "readline" -00014: 11 pushobj -00015: 11 call 0 -00018: 11 setvar 0 -00021: 11 pop -;------------------------- 12: print("Enter another one: "); -00022: 12 name "print" -00025: 12 pushobj -00026: 12 string "Enter another one: " -00029: 12 call 1 -00032: 12 pop -;------------------------- 13: var n2 = readline(); -00033: 13 name "readline" -00036: 13 pushobj -00037: 13 call 0 -00040: 13 setvar 1 -00043: 13 pop -;------------------------- 14: -;------------------------- 15: print("You entered " + n1 + " and " + n2 + "\n"); -00044: 15 name "print" -00047: 15 pushobj -00048: 15 string "You entered " -00051: 15 getvar 0 -00054: 15 add -00055: 15 string " and " -00058: 15 add -00059: 15 getvar 1 -00062: 15 add -00063: 15 string "\\n" -00066: 15 add -00067: 15 call 1 -00070: 15 pop -00071: 15 stop -</pre> - -<h4 id="dumpheap.28.28.5BfileName.5B.2C_start.5B.2C_toFind.5B.2C_maxDepth.5B.2C_toIgnore.5D.5D.5D.5D.5D.29" name="dumpheap.28.28.5BfileName.5B.2C_start.5B.2C_toFind.5B.2C_maxDepth.5B.2C_toIgnore.5D.5D.5D.5D.5D.29"><code>dumpheap((<em>[fileName[, start[, toFind[, maxDepth[, toIgnore]]]]]</em>)</code></h4> - -<p>GC 情報をダンプします。これは <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DumpHeap">JS_DumpHeap</a></code> の軽量なラッパーです。</p> - -<h4 id="gczeal.28zeal.29" name="gczeal.28zeal.29"><code>gczeal(<em>zeal</em>)</code></h4> - -<p>GC の危険性の発見に役立つように、頻繁な GC を有効にします。<em>zeal</em> は整数です。意味は <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetGCZeal">JS_SetGCZeal</a></code> のパラメータと同じです。</p> - -<h4 id="notes.28.5Bfunction.5D.29" name="notes.28.5Bfunction.5D.29"><code>notes(<em>[function]</em>)</code></h4> - -<p>指定した機能のソースノートを表示します。ソースノートには、バイトコードをソースコードにマップする情報が含まれています。これは、<code>dissrc()</code> 関数を使用する場合など、コードを逆コンパイルするときに使用されます。</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_cookbook/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_cookbook/index.html deleted file mode 100644 index efb0e70aa0..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_cookbook/index.html +++ /dev/null @@ -1,514 +0,0 @@ ---- -title: JSAPI Cookbook -slug: Mozilla/Projects/SpiderMonkey/JSAPI_Cookbook -tags: - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_Cookbook ---- -<p>この記事は僅かなJavaScript共通の用語であるJSAPIについて記載しています。</p> - -<div class="note"><strong>Note:</strong> <a class="internal" href="/En/SpiderMonkey/FOSS" title="En/SpiderMonkey/FOSS">FOSS</a> wiki ページには、 SpiderMonkey と JSAPI を使用する際に生活を楽にする他のライブラリやプログラムへのリンクがいくつか含まれています。</div> - -<h2 id="基礎">基礎</h2> - -<h3 id="Finding_the_global_object">Finding the global object</h3> - -<p>それらのレシピの多くは、最初に現在の大域オブジェクトを見つけることを要求します。</p> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var global = this; -</pre> - -<p>There is a function, <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalForScopeChain">JS_GetGlobalForScopeChain</a>(cx)</code>という関数があります。最良の考え方でありときにそれは大域オブジェクトの取得する場合最良の方法です。しかし<code><a href="/en/SpiderMonkey/JSAPI_Reference/JSNative">JSNative</a></code> の中では、これを実行する正しい方法は:</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSBool myNative(JSContext *cx, uintN argc, jsval *vp) -{ - CallArgs args = CallArgsFromVp(argc, vp); - JSObject *global = <a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_GetGlobalForObject" title="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_GetGlobalForObject">JS_GetGlobalForObject</a>(cx, &args.callee()); - ... -} -</pre> - -<h3 id="関数定義">関数定義</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -function justForFun() { - return null; -} -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSBool justForFun(JSContext *cx, uintN argc, jsval *vp) -{ - JS_SET_RVAL(cx, vp, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_NULL" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_NULL">JSVAL_NULL</a>); - return JS_TRUE; -} - -... - -/* - * Add this to your JSContext setup code. - * This makes your C function visible as a global function in JavaScript. - */ -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction">JS_DefineFunction</a>(cx, global, "justForFun", &justForFun, 0, 0)) - return JS_FALSE; -</pre> - -<p>JSAPI関数を一度に定義する場合、JS_DefineFunctions. を用います。 <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions">JS_DefineFunctions</a></code>.</p> - -<h3 id="配列の生成">配列の生成</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var x = []; // or "x = Array()", or "x = new Array" -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSObject *x = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewArrayObject" title="en/SpiderMonkey/JSAPI_Reference/JS_NewArrayObject">JS_NewArrayObject</a>(cx, 0, NULL); -if (x == NULL) - return JS_FALSE; -</pre> - -<h3 id="オブジェクトの生成">オブジェクトの生成</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var x = {}; // or "x = Object()", or "x = new Object" -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSObject *x = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewObject" title="en/SpiderMonkey/JSAPI_Reference/JS_NewObject">JS_NewObject</a>(cx, NULL, NULL, NULL); -if (x == NULL) - return JS_FALSE; -</pre> - -<h3 id="オブジェクトの生成と初期化">オブジェクトの生成と初期化</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var person = new Person("Dave", 24); -</pre> - -<p>JavaScriptではとても単純に処理されています。しかし、JSAPIのアプリケーションでは以下に記述するように3つのことを処理する必要があります:</p> - -<ul> - <li>コンストラクタを参照する、 <code>Person</code></li> - <li>引数を準備する <code>("Dave", 24)</code></li> - <li><code>new</code> キーワードで示す処理を擬似的に作り出すために <a href="/en/SpiderMonkey/JSAPI_Reference/JS_New" title="en/SpiderMonkey/JSAPI_Reference/JS_New"><code>JS_New</code></a> を呼び出します。</li> -</ul> - -<p>(コンストラクタがどのよいうな引数も取らないならば、2番目の段階は省略して 3段階目の処理である <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_New" title="en/SpiderMonkey/JSAPI_Reference/JS_New">JS_New</a>(cx, constructor, 0, NULL)</code> を呼び出せます。)</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ - -jsval constructor_val; -JSObject *constructor; /* BUG - not rooted */ -JSString *name_str; -jsval argv[2]; /* BUG - not rooted */ -JSObject *obj; - -/* Step 1 - Get the value of |Person| and check that it is an object. */ -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_GetProperty">JS_GetProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject" title="en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject">JS_GetGlobalObject</a>(cx), "Person", &constructor_val)) - return JS_FALSE; -if (<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(constructor_val)) { - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportError" title="en/SpiderMonkey/JSAPI_Reference/JS_ReportError">JS_ReportError</a>(cx, "Person is not a constructor"); - return JS_FALSE; -} -constructor = <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(constructor_val); - -/* Step 2 - Set up the arguments. */ -name_str = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ" title="en/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ">JS_NewStringCopyZ</a>(cx, "Dave"); -if (!name_str) - return JS_FALSE; -argv[0] = <a href="/en/SpiderMonkey/JSAPI_Reference/STRING_TO_JSVAL" title="en/SpiderMonkey/JSAPI_Reference/STRING_TO_JSVAL">STRING_TO_JSVAL</a>(name_str); -argv[1] = <a href="/en/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL" title="en/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL">INT_TO_JSVAL</a>(24); - -/* Step 3 - Call |new Person(...argv)|, passing the arguments. */ -obj = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_New" title="en/SpiderMonkey/JSAPI_Reference/JS_New">JS_New</a>(cx, constructor, 2, argv); -if (!obj) - return JS_FALSE; -</pre> - -<h3 id="大域的なJS関数の呼び出し">大域的なJS関数の呼び出し</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var r = foo(); // where f is a global function -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> - * - * Suppose the script defines a global JavaScript - * function foo() and we want to call it from C. - */ -jsval r; -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject" title="en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject">JS_GetGlobalObject</a>(cx), "foo", 0, NULL, &r)) - return JS_FALSE; -</pre> - -<h3 id="局所変数を投資てJS関数を呼び出す">局所変数を投資てJS関数を呼び出す</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var r = f(); // where f is a local variable -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> - * - * Suppose f is a local C variable of type jsval. - */ -jsval r; -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionValue" title="en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionValue">JS_CallFunctionValue</a>(cx, NULL, f, 0, NULL, &r) - return JS_FALSE; -</pre> - -<h3 id="Returning_an_integer" name="Returning_an_integer">整数の戻り値</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -return 23; -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> - * - * Warning: This only works for integers that fit in 32 bits. - * Otherwise, convert the number to floating point (see the next example). - */ -<a href="/en/SpiderMonkey/JSAPI_Reference/JS_SET_RVAL" title="en/SpiderMonkey/JSAPI_Reference/JS_SET_RVAL">JS_SET_RVAL</a>(cx, vp, <a href="/en/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL" title="en/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL">INT_TO_JSVAL</a>(23)); -return JS_TRUE; -</pre> - -<h3 id="Returning_a_floating-point_number" name="Returning_a_floating-point_number">浮動小数点少数の戻り値</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -return 3.14159; -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -<a href="/en/SpiderMonkey/JSAPI_Reference/jsdouble" title="en/SpiderMonkey/JSAPI_Reference/jsdouble">jsdouble</a> n = 3.14159; -return <a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewNumberValue" title="en/SpiderMonkey/JSAPI_Reference/JS_NewNumberValue">JS_NewNumberValue</a>(cx, n, rval); -</pre> - -<h2 id="Exception_handling" name="Exception_handling">例外処理</h2> - -<h3 id="throw" name="throw"><code>throw</code></h3> - -<p>新規に最も共通の用語である <code>エラー</code> オブジェクトを生成した場合、それをハンドラに投げる場合 <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportError" title="en/SpiderMonkey/JSAPI_Reference/JS_ReportError"><code>JS_ReportError</code></a> が処理を行います。 Note JavaScript の例外はC++の例外処理とは異なります。JSAPIコードでは呼び出し側に誤りを通知するために <code>JS_FALSE</code> を返す必要があります。</p> - -<pre class="notranslate">// <strong>JavaScript</strong> -throw new Error("Failed to grow " + varietal + ": too many greenflies."); -</pre> - -<pre class="notranslate">/* <strong>JSAPI</strong> */ -<a>JS_ReportError</a>(cx, "Failed to grow %s: too many greenflies.", varietal); -return JS_FALSE; -</pre> - -<p>エラーメッセージを他国間対応にするには、 <code>SyntaxError</code> や <code>TypeError</code>等のようにエラー種別を投げるように、 <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="en/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber"><code>JS_ReportErrorNumber</code></a> を代わりに用います。</p> - -<p>JavaScriptでは <code>Error</code> オブジェクトだけでなく、他の値を渡す事もサポートしています。 C/C++ から <code>jsval</code> という値を受け取るために<a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException"><code>JS_SetPendingException</code></a> を使います。</p> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -throw exc; -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -<a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException">JS_SetPendingException</a>(cx, exc); -return JS_FALSE; -</pre> - -<p><code>JS_ReportError</code> が新規に <code>Error</code> オブジェクトを生成するとき、現在実行中のスタックの先頭にあるJavaScriptコードの行の属性である <code>fileName</code> と <code>lineNumber</code> をセットします。 これは通常、あなたが本当に必要としているものとは一致しないネイティブ関数を呼び出したコードの行になります。JSAPIコードは直接 <code>Error</code> オブジェクトを生成し、コンストラクタに追加の引数を渡す事でことでこれを無視することができます:</p> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -throw new Error(message, filename, lineno); -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSBool ThrowError(JSContext *cx, JSObject *global, - const char *message, const char *filename, int32 lineno) -{ - JSString *messageStr; - JSString *filenameStr; - jsval args[3]; - jsval exc; - - messageStr = JS_NewStringCopyZ(cx, message); - if (!messageStr) - return JS_FALSE; - filenameStr = JS_NewStringCopyZ(cx, filename); - if (!filenameStr) - return JS_FALSE; - - args[0] = STRING_TO_JSVAL(messageStr); - args[1] = STRING_TO_JSVAL(filenameStr); - args[2] = INT_TO_JSVAL(lineno); - if (<a href="/en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>(cx, global, "Error", 3, args, &exc)) - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException">JS_SetPendingException</a>(cx, exc); - return JS_FALSE; -} - -... - -return ThrowError(cx, global, message, __FILE__, __LINE__); -</pre> - -<p>ここのJSAPIコードは、<code>new</code> がJSAPIを用いて擬似的に作り出すことが難しいため、 <code>new</code> なしに <code>throw Error(message)</code> を擬似的に作り出します。この場合、スクリプトが <code>Error</code>を再定義しなければ、同じ事になります。</p> - -<h3 id="catch" name="catch"><code>catch</code></h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -try { - // try some stuff here; for example: - foo(); - bar(); -} catch (exc) { - // do error-handling stuff here -} -</pre> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ - jsval exc; - - /* try some stuff here; for example: */ - if (!JS_CallFunctionName(cx, global, "foo", 0, NULL, &r)) - goto catch_block; /* instead of returning JS_FALSE */ - if (!JS_CallFunctionName(cx, global, "bar", 0, NULL, &r)) - goto catch_block; /* instead of returning JS_FALSE */ - return JS_TRUE; - -catch_block: - if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_GetPendingException">JS_GetPendingException</a>(cx, &exc)) - return JS_FALSE; - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException">JS_ClearPendingException</a>(cx); - /* do error-handling stuff here */ - return JS_TRUE; -</pre> - -<h3 id="finally" name="finally"><code>finally</code></h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -try { - foo(); - bar(); -} finally { - cleanup(); -} -</pre> - -<p>C/C++の浄化コードがJSAPI内にコールバックしなければ、処理は単純になります:</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ - <a href="/En/SpiderMonkey/JSAPI_Reference/JSBool" title="En/SpiderMonkey/JSAPI_Reference/JSBool">JSBool</a> success = JS_FALSE; - - if (!JS_CallFunctionName(cx, global, "foo", 0, NULL, &r)) - goto finally_block; /* instead of returning JS_FALSE immediately */ - if (!JS_CallFunctionName(cx, global, "bar", 0, NULL, &r)) - goto finally_block; - success = JS_TRUE; - /* Intentionally fall through to the finally block. */ - -finally_block: - cleanup(); - return success; -</pre> - -<p>しかしながら、 <code>cleanup()</code> が実際にJavaScriptの関数であれば、それらはcatchされます。エラーが発生したとき、 <code>JSContext</code><em>の例外処理の待機がセットされます。</em> これは上の例で <code>foo()</code> や <code>bar()</code> で発生するならば、待機中の例外処理は より悪い状態になるであろう <code>cleanup()</code> 処理を呼び出しているときにセットされます。これを避ける為に、JSAPIコードの実装では <code>finally</code> ブロックには以下のことが必要ですt:</p> - -<ul> - <li>古い例外を保存する</li> - <li>cleanupコードを走らせる為に、待機中の例外処理をクリアします</li> - <li>あなたのcleanup処理wp実行します</li> - <li>古い例外を復帰させます</li> - <li>例外が発生していたならば、例外処理を上位に伝えるために、JS_FALSEを戻り値として返します</li> -</ul> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ - <a href="/En/SpiderMonkey/JSAPI_Reference/JSBool" title="En/SpiderMonkey/JSAPI_Reference/JSBool">JSBool</a> success = JS_FALSE; - <a href="/en/SpiderMonkey/JSAPI_Reference/JSExceptionState" title="en/SpiderMonkey/JSAPI_Reference/JSExceptionState">JSExceptionState</a> *exc_state; - - if (!JS_CallFunctionName(cx, global, "foo", 0, NULL, &r)) - goto finally_block; /* instead of returning JS_FALSE immediately */ - if (!JS_CallFunctionName(cx, global, "bar", 0, NULL, &r)) - goto finally_block; - success = JS_TRUE; - /* Intentionally fall through to the finally block. */ - -finally_block: - exc_state = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SaveExceptionState" title="en/SpiderMonkey/JSAPI_Reference/JS_SaveExceptionState">JS_SaveExceptionState</a>(cx); - if (exc_state == NULL) - return JS_FALSE; - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException">JS_ClearPendingException</a>(cx); - - if (!JS_CallFunctionName(cx, global, "cleanup", 0, NULL, &r)) { - /* The new error replaces the previous one, so discard the saved exception state. */ - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_DropExceptionState" title="en/SpiderMonkey/JSAPI_Reference/JS_DropExceptionState">JS_DropExceptionState</a>(cx, exc_state); - return JS_FALSE; - } - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_RestoreExceptionState" title="en/SpiderMonkey/JSAPI_Reference/JS_RestoreExceptionState">JS_RestoreExceptionState</a>(cx, exc_state); - return success; -</pre> - -<h2 id="Object_properties" name="Object_properties">オブジェクトの属性</h2> - -<h3 id="Getting_a_property" name="Getting_a_property">属性の取得</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -var x = y.myprop; -</pre> - -<p>JSAPI関数で、属性を取得する関数が <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_GetProperty">JS_GetProperty</a></code>です。<code>JSObject *</code> を引数として必要とします。 JavaScriptの値は、通常 <code>jsval</code> 変数に保存されるため、変数のキャストまたは変換が必要になります。</p> - -<p><code>y</code> (ブール値、数値、文字列、 <code>null</code>, または <code>undefined</code>などではなく)がオブジェクトであることが確実な場合、これは非常に単純です。 <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a></code> を使い、 <code>y</code> を <code>JSObject *</code>の型にキャストします。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -jsval x; - -assert(<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">!JSVAL_IS_PRIMITIVE</a>(y)); -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_GetProperty">JS_GetProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(y), "myprop", &x)) - return JS_FALSE; -</pre> - -<p>もし <code>y</code> がオブジェクトでなければ、コードは壊れます。これはときに受け入れ難いことです。代替的にJavaScriptに振る舞いを擬似的に実行することになります。非常に良い考えですJavaScriptはクラッシュしません。しかし、その正確な振る舞いの実装では、非常に複雑なものになります。</p> - -<p>多くの実装では、特別に処理が扱いやすくなるわけではありません。通常、 <code>!<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(y)</code> を検査し、良いメッセージとともに <code>Error</code> を投げることが最良な処理です。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -jsval x; - -if (<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(y)) - return ThrowError(cx, global, "Parameter y must be an object.", __FILE__, __LINE__); /* see the <a href="#throw">#throw</a> example */ -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_GetProperty">JS_GetProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(y), "myprop", &x)) - return JS_FALSE; -</pre> - -<h3 id="Setting_a_property" name="Setting_a_property">属性の設定</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -y.myprop = x; -</pre> - -<p><code>y</code> がオブジェクトではない場合を懸念するならば、上述の属性の取得を参照して下さい。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -assert(!<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(y)); -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_SetProperty">JS_SetProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(y), "myprop", &x)) - return JS_FALSE; -</pre> - -<h3 id="Checking_for_a_property" name="Checking_for_a_property">属性の検査</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -if ("myprop" in y) { - // then do something -} -</pre> - -<p><code>y</code> がオブジェクトではない場合を懸念するならば、上述の属性の取得を参照して下さい。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSBool found; - -assert(!<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(y)); -if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_HasProperty">JS_HasProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(y), "myprop", &found)) - return JS_FALSE; -if (found) { - // then do something -} -</pre> - -<h3 id="固定属性を定義する">固定属性を定義する</h3> - -<p>これはビルトイン関数 <code>Object.defineProperty()</code>に関わる最初の3つの例です。この関数は、オブジェクトの個別の属性の挙動に関してはっきりした操作をJavaScriptのコードに与えます。</p> - -<p>この関数を使って、上書きや削除できない固定属性を生成できます。<code>writable: false</code> によって属性を読み出し専用に作り、 <code>configurable: false</code> に設定して、再定義や削除されることから防ぎます。 フラグ <code>enumerable: true</code> は forループ内にあるときにこの属性が設定されます。</p> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -Object.defineProperty(obj, "prop", {value: 123, - writable: false, - enumerable: true, - configurable: false}); -</pre> - -<p>JSAPI関数の類似した関数に、 <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineProperty">JS_DefineProperty</a></code>があります。属性 <code>JSPROP_READONLY</code> を持っており、その属性は<code>writeable: false</code>に一致します。<code>JSPROP_ENUMERATE</code> は <code>enumerable: true</code>,に一致し、 <code>JSPROP_PERMANENT</code> は <code>configurable: false</code>にその属性が一致します。これらの設定の相対的な挙動を得るためには、必要ない属性のビットを単純に省いて下さい。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -if (!JS_DefineProperty(cx, obj, "prop", INT_TO_JSVAL(123), - JS_PropertyStub, JS_StrictPropertyStub, - JSPROP_READONLY | JSPROP_ENUMERATE | JSPROP_PERMANENT)) { - return JS_FALSE; -} -</pre> - -<h3 id="設定と取得の属性の定義">設定と取得の属性の定義</h3> - -<p><code>Object.defineProperty()</code> は二つのアクセス関数の属性を定義する為に用いることができます。</p> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -Object.defineProperty(obj, "prop", {get: GetPropFunc, - set: SetPropFunc, - enumerable: true}); -</pre> - -<p>JSAPIバージョンでは、 <code>GetPropFunc</code> と <code>SetPropFunc</code> が <a href="/en/SpiderMonkey/JSAPI_Reference/JSNative" title="en/SpiderMonkey/JSAPI_Reference/JSNative"><code>JSNative</code></a>型のC/C++ 関数関数として用意されています。of type .</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -if (!JS_DefineProperty(cx, obj, "prop", JSVAL_VOID, - (JSPropertyOp) GetPropFunc, (JSStrictPropertyOp) SetPropFunc, - JSPROP_SHARED | JSPROP_NATIVE_ACCESSORS | JSPROP_ENUMERATE)) { - return JS_FALSE; -} -</pre> - -<h3 id="取得のための呼び出し専用属性の定義">取得のための呼び出し専用属性の定義</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -Object.defineProperty(obj, "prop", {get: GetPropFunc, - enumerable: true}); -</pre> - -<p>JSAPIバージョン では、属性を読み出し専用に定義し、設定用にはNULLを通します。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -if (!JS_DefineProperty(cx, obj, "prop", JSVAL_VOID, - GetPropFunc, NULL, - JSPROP_SHARED | JSPROP_NATIVE_ACCESSORS | JSPROP_ENUMERATE)) { - return JS_FALSE; -} -</pre> - -<h2 id="Prototypes" name="Prototypes">プロトタイプチェインの働き</h2> - -<h3 id="String.prototypeにネイティブでは読み出し専用属性を定義します">String.prototypeにネイティブでは読み出し専用属性を定義します</h3> - -<pre class="eval notranslate">// <strong>JavaScript</strong> -Object.defineProperty(String.prototype, "md5sum", {get: GetMD5Func, - enumerable: true}); -</pre> - -<p>何かが大域的なStringオブジェクトを別な何かに取り替えるならば、以下のようなトリックは動作しません。</p> - -<pre class="eval notranslate">/* <strong>JSAPI</strong> */ -JSObject *string, *string_prototype; -jsval val; - -// Get the String constructor from the global object. -if (!JS_GetProperty(cx, global, "String", &val)) - return JS_FALSE; -if (JSVAL_IS_PRIMITIVE(val)) - return ThrowError(cx, global, "String is not an object", __FILE__, __LINE__); -string = JSVAL_TO_OBJECT(val); - -// Get String.prototype. -if (!JS_GetProperty(cx, string, "prototype", &val)) - return JS_FALSE; -if (JSVAL_IS_PRIMITIVE(val)) - return ThrowError(cx, global, "String.prototype is not an object", __FILE__, __LINE__); -string_prototype = JSVAL_TO_OBJECT(val); - -// ...and now we can add some new functionality to all strings. -if (!JS_DefineProperty(cx, string_prototype, "md5sum", JSVAL_VOID, GetMD5Func, NULL, - JSPROP_SHARED | JSPROP_NATIVE_ACCESSORS | JSPROP_ENUMERATE)) - return JS_FALSE; -</pre> - -<h2 id="Wanted" name="Wanted">Wanted</h2> - -<ul> - <li>Simulating <code>for</code> and <code>for each</code>.</li> - <li>Actually outputting errors.</li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/alphabetical_list/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/alphabetical_list/index.html deleted file mode 100644 index 4bf1ac4123..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/alphabetical_list/index.html +++ /dev/null @@ -1,228 +0,0 @@ ---- -title: Alphabetical List -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/Alphabetical_List -tags: - - JSAPI_Reference - - SpiderMonkey ---- -<p>参照: <a href="/ja/docs/JSAPI_Reference">グループ別一覧</a>, <a href="/ja/docs/tag/JSAPI_Reference">カテゴリ表示 (自動)</a>.</p> -<ul> - <li><a href="/ja/docs/BOOLEAN_TO_JSVAL">BOOLEAN_TO_JSVAL</a></li> - <li><a href="/ja/docs/DOUBLE_TO_JSVAL">DOUBLE_TO_JSVAL</a></li> - <li><a href="/ja/docs/INT_FITS_IN_JSVAL">INT_FITS_IN_JSVAL</a></li> - <li><a href="/ja/docs/INT_TO_JSVAL">INT_TO_JSVAL</a></li> - <li><a href="/ja/docs/JS_AddNamedRoot">JS_AddNamedRoot</a></li> - <li><a href="/ja/docs/JS_AddRoot">JS_AddRoot</a></li> - <li><a href="/ja/docs/JS_AliasElement">JS_AliasElement</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_AliasProperty">JS_AliasProperty</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_BeginRequest">JS_BeginRequest</a></li> - <li><a href="/ja/docs/JS_CallFunction">JS_CallFunction</a></li> - <li><a href="/ja/docs/JS_CallFunctionName">JS_CallFunctionName</a></li> - <li><a href="/ja/docs/JS_CallFunctionValue">JS_CallFunctionValue</a></li> - <li><a href="/ja/docs/JS_CheckAccess">JS_CheckAccess</a></li> - <li><a href="/ja/docs/JS_ClearContextThread">JS_ClearContextThread</a></li> - <li><a href="/ja/docs/JS_ClearScope">JS_ClearScope</a></li> - <li><a href="/ja/docs/JS_CloneFunctionObject">JS_CloneFunctionObject</a></li> - <li><a href="/ja/docs/JS_CompareStrings">JS_CompareStrings</a></li> - <li><a href="/ja/docs/JS_CompileFile">JS_CompileFile</a></li> - <li><a href="/ja/docs/JS_CompileFunction">JS_CompileFunction</a></li> - <li><a href="/ja/docs/JS_CompileFunctionForPrincipals">JS_CompileFunctionForPrincipals</a></li> - <li><a href="/ja/docs/JS_CompileScript">JS_CompileScript</a></li> - <li><a href="/ja/docs/JS_CompileScriptForPrincipals">JS_CompileScriptForPrincipals</a></li> - <li><a href="/ja/docs/JS_CompileUCFunction">JS_CompileUCFunction</a></li> - <li><a href="/ja/docs/JS_CompileUCFunctionForPrincipals">JS_CompileUCFunctionForPrincipals</a></li> - <li><a href="/ja/docs/JS_CompileUCScript">JS_CompileUCScript</a></li> - <li><a href="/ja/docs/JS_CompileUCScriptForPrincipals">JS_CompileUCScriptForPrincipals</a></li> - <li><a href="/ja/docs/JS_ConstructObject">JS_ConstructObject</a></li> - <li><a href="/ja/docs/JS_ContextIterator">JS_ContextIterator</a></li> - <li><a href="/ja/docs/JS_ConvertArguments">JS_ConvertArguments</a></li> - <li><a href="/ja/docs/JS_ConvertStub">JS_ConvertStub</a></li> - <li><a href="/ja/docs/JS_ConvertValue">JS_ConvertValue</a></li> - <li><a href="/ja/docs/JS_DecompileFunction">JS_DecompileFunction</a></li> - <li><a href="/ja/docs/JS_DecompileFunctionBody">JS_DecompileFunctionBody</a></li> - <li><a href="/ja/docs/JS_DecompileScript">JS_DecompileScript</a></li> - <li><a href="/ja/docs/JS_DefineConstDoubles">JS_DefineConstDoubles</a></li> - <li><a href="/ja/docs/JS_DefineElement">JS_DefineElement</a></li> - <li><a href="/ja/docs/JS_DefineFunction">JS_DefineFunction</a></li> - <li><a href="/ja/docs/JS_DefineFunctions">JS_DefineFunctions</a></li> - <li><a href="/ja/docs/JS_DefineObject">JS_DefineObject</a></li> - <li><a href="/ja/docs/JS_DefineProperties">JS_DefineProperties</a></li> - <li><a href="/ja/docs/JS_DefineProperty">JS_DefineProperty</a></li> - <li><a href="/ja/docs/JS_DefinePropertyWithTinyId">JS_DefinePropertyWithTinyId</a></li> - <li><a href="/ja/docs/JS_DefineUCProperty">JS_DefineUCProperty</a></li> - <li><a href="/ja/docs/JS_DefineUCPropertyWithTinyID">JS_DefineUCPropertyWithTinyID</a></li> - <li><a href="/ja/docs/JS_DeleteElement">JS_DeleteElement</a></li> - <li><a href="/ja/docs/JS_DeleteElement2">JS_DeleteElement2</a></li> - <li><a href="/ja/docs/JS_DeleteProperty">JS_DeleteProperty</a></li> - <li><a href="/ja/docs/JS_DeleteProperty2">JS_DeleteProperty2</a></li> - <li><a href="/ja/docs/JS_DeleteUCProperty2">JS_DeleteUCProperty2</a></li> - <li><a href="/ja/docs/JS_DestroyContext">JS_DestroyContext</a></li> - <li><a href="/ja/docs/JS_DestroyIdArray">JS_DestroyIdArray</a></li> - <li><a href="/ja/docs/JS_DestroyRuntime">JS_DestroyRuntime</a></li> - <li><a href="/ja/docs/JS_DestroyScript">JS_DestroyScript</a></li> - <li><a href="/ja/docs/JS_DumpNamedRoots">JS_DumpNamedRoots</a></li> - <li><a href="/ja/docs/JS_EndRequest">JS_EndRequest</a></li> - <li><a href="/ja/docs/JS_Enumerate">JS_Enumerate</a></li> - <li><a href="/ja/docs/JS_EnumerateStub">JS_EnumerateStub</a></li> - <li><a href="/ja/docs/JS_EvaluateScript">JS_EvaluateScript</a></li> - <li><a href="/ja/docs/JS_EvaluateScriptForPrincipals">JS_EvaluateScriptForPrincipals</a></li> - <li><a href="/ja/docs/JS_EvaluateUCScript">JS_EvaluateUCScript</a></li> - <li><a href="/ja/docs/JS_EvaluateUCScriptForPrincipals">JS_EvaluateUCScriptForPrincipals</a></li> - <li><a href="/ja/docs/JS_ExecuteScript">JS_ExecuteScript</a></li> - <li><a href="/ja/docs/JS_FinalizeStub">JS_FinalizeStub</a></li> - <li><a href="/ja/docs/JS_Finish">JS_Finish</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_free">JS_free</a></li> - <li><a href="/ja/docs/JS_GC">JS_GC</a></li> - <li><a href="/ja/docs/JS_GetArrayLength">JS_GetArrayLength</a></li> - <li><a href="/ja/docs/JS_GetClass">JS_GetClass</a></li> - <li><a href="/ja/docs/JS_GetConstructor">JS_GetConstructor</a></li> - <li><a href="/ja/docs/JS_GetContextPrivate">JS_GetContextPrivate</a></li> - <li><a href="/ja/docs/JS_GetContextThread">JS_GetContextThread</a></li> - <li><a href="/ja/docs/JS_GetElement">JS_GetElement</a></li> - <li><a href="/ja/docs/JS_GetEmptyStringValue">JS_GetEmptyStringValue</a></li> - <li><a href="/ja/docs/JS_GetFunctionName">JS_GetFunctionName</a></li> - <li><a href="/ja/docs/JS_GetFunctionObject">JS_GetFunctionObject</a></li> - <li><a href="/ja/docs/JS_GetGlobalObject">JS_GetGlobalObject</a></li> - <li><a href="/ja/docs/JS_GetImplementationVersion">JS_GetImplementationVersion</a></li> - <li><a href="/ja/docs/JS_GetInstancePrivate">JS_GetInstancePrivate</a></li> - <li><a href="/ja/docs/JS_GetNaNValue">JS_GetNaNValue</a></li> - <li><a href="/ja/docs/JS_GetNegativeInfinityValue">JS_GetNegativeInfinityValue</a></li> - <li><a href="/ja/docs/JS_GetParent">JS_GetParent</a></li> - <li><a href="/ja/docs/JS_GetPositiveInfinityValue">JS_GetPositiveInfinityValue</a></li> - <li><a href="/ja/docs/JS_GetPrivate">JS_GetPrivate</a></li> - <li><a href="/ja/docs/JS_GetProperty">JS_GetProperty</a></li> - <li><a href="/ja/docs/JS_GetPropertyAttributes">JS_GetPropertyAttributes</a></li> - <li><a href="/ja/docs/JS_GetPrototype">JS_GetPrototype</a></li> - <li><a href="/ja/docs/JS_GetRuntime">JS_GetRuntime</a></li> - <li><a href="/ja/docs/JS_GetScopeChain">JS_GetScopeChain</a></li> - <li><a href="/ja/docs/JS_GetStringBytes">JS_GetStringBytes</a></li> - <li><a href="/ja/docs/JS_GetStringChars">JS_GetStringChars</a></li> - <li><a href="/ja/docs/JS_GetStringLength">JS_GetStringLength</a></li> - <li><a href="/ja/docs/JS_GetTypeName">JS_GetTypeName</a></li> - <li><a href="/ja/docs/JS_GetUCProperty">JS_GetUCProperty</a></li> - <li><a href="/ja/docs/JS_GetVersion">JS_GetVersion</a></li> - <li><a href="/ja/docs/JS_HasArrayLength">JS_HasArrayLength</a></li> - <li><a href="/ja/docs/JS_IdToValue">JS_IdToValue</a></li> - <li><a href="/ja/docs/JS_Init">JS_Init</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_InitClass">JS_InitClass</a></li> - <li><a href="/ja/docs/JS_InitStandardClasses">JS_InitStandardClasses</a></li> - <li><a href="/ja/docs/JS_InstanceOf">JS_InstanceOf</a></li> - <li><a href="/ja/docs/JS_InternString">JS_InternString</a></li> - <li><a href="/ja/docs/JS_InternUCString">JS_InternUCString</a></li> - <li><a href="/ja/docs/JS_InternUCStringN">JS_InternUCStringN</a></li> - <li><a href="/ja/docs/JS_IsArrayObject">JS_IsArrayObject</a></li> - <li><a href="/ja/docs/JS_IsConstructing">JS_IsConstructing</a></li> - <li><a href="/ja/docs/JS_IsRunning">JS_IsRunning</a></li> - <li><a href="/ja/docs/JS_Lock">JS_Lock</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_LockGCThing">JS_LockGCThing</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_LookupElement">JS_LookupElement</a></li> - <li><a href="/ja/docs/JS_LookupProperty">JS_LookupProperty</a></li> - <li><a href="/ja/docs/JS_LookupUCProperty">JS_LookupUCProperty</a></li> - <li><a href="/ja/docs/JS_malloc">JS_malloc</a></li> - <li><a href="/ja/docs/JS_MaybeGC">JS_MaybeGC</a></li> - <li><a href="/ja/docs/JS_NewArrayObject">JS_NewArrayObject</a></li> - <li><a href="/ja/docs/JS_NewContext">JS_NewContext</a></li> - <li><a href="/ja/docs/JS_NewDouble">JS_NewDouble</a></li> - <li><a href="/ja/docs/JS_NewDoubleValue">JS_NewDoubleValue</a></li> - <li><a href="/ja/docs/JS_NewFunction">JS_NewFunction</a></li> - <li><a href="/ja/docs/JS_NewIdArray">JS_NewIdArray</a></li> - <li><a href="/ja/docs/JS_NewNumberValue">JS_NewNumberValue</a></li> - <li><a href="/ja/docs/JS_NewObject">JS_NewObject</a></li> - <li><a href="/ja/docs/JS_NewRuntime">JS_NewRuntime</a></li> - <li><a href="/ja/docs/JS_NewScriptObject">JS_NewScriptObject</a></li> - <li><a href="/ja/docs/JS_NewString">JS_NewString</a></li> - <li><a href="/ja/docs/JS_NewStringCopyN">JS_NewStringCopyN</a></li> - <li><a href="/ja/docs/JS_NewStringCopyZ">JS_NewStringCopyZ</a></li> - <li><a href="/ja/docs/JS_NewUCString">JS_NewUCString</a></li> - <li><a href="/ja/docs/JS_NewUCStringCopyN">JS_NewUCStringCopyN</a></li> - <li><a href="/ja/docs/JS_NewUCStringCopyZ">JS_NewUCStringCopyZ</a></li> - <li><a href="/ja/docs/JS_ObjectIsFunction">JS_ObjectIsFunction</a></li> - <li><a href="/ja/docs/JS_PropertyStub">JS_PropertyStub</a></li> - <li><a href="/ja/docs/JS_realloc">JS_realloc</a></li> - <li><a href="/ja/docs/JS_RemoveRoot">JS_RemoveRoot</a></li> - <li><a href="/ja/docs/JS_ReportError">JS_ReportError</a></li> - <li><a href="/ja/docs/JS_ReportOutOfMemory">JS_ReportOutOfMemory</a></li> - <li><a href="/ja/docs/JS_ResolveStub">JS_ResolveStub</a></li> - <li><a href="/ja/docs/JS_ResumeRequest">JS_ResumeRequest</a></li> - <li><a href="/ja/docs/JS_SetArrayLength">JS_SetArrayLength</a></li> - <li><a href="/ja/docs/JS_SetBranchCallback">JS_SetBranchCallback</a></li> - <li><a href="/ja/docs/JS_SetContextPrivate">JS_SetContextPrivate</a></li> - <li><a href="/ja/docs/JS_SetContextThread">JS_SetContextThread</a></li> - <li><a href="/ja/docs/JS_SetElement">JS_SetElement</a></li> - <li><a href="/ja/docs/JS_SetErrorReporter">JS_SetErrorReporter</a></li> - <li><a href="/ja/docs/JS_SetGCCallback">JS_SetGCCallback</a></li> - <li><a href="/ja/docs/JS_SetGlobalObject">JS_SetGlobalObject</a></li> - <li><a href="/ja/docs/JS_SetParent">JS_SetParent</a></li> - <li><a href="/ja/docs/JS_SetPrivate">JS_SetPrivate</a></li> - <li><a href="/ja/docs/JS_SetProperty">JS_SetProperty</a></li> - <li><a href="/ja/docs/JS_SetPropertyAttributes">JS_SetPropertyAttributes</a></li> - <li><a href="/ja/docs/JS_SetPrototype">JS_SetPrototype</a></li> - <li><a href="/ja/docs/JS_SetUCProperty">JS_SetUCProperty</a></li> - <li><a href="/ja/docs/JS_SetVersion">JS_SetVersion</a></li> - <li><a href="/ja/docs/JS_strdup">JS_strdup</a></li> - <li><a href="/ja/docs/JS_SuspendRequest">JS_SuspendRequest</a></li> - <li><a href="/ja/docs/JS_TypeOfValue">JS_TypeOfValue</a></li> - <li><a href="/ja/docs/JS_Unlock">JS_Unlock</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_UnlockGCThing">JS_UnlockGCThing</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JS_ValueToBoolean">JS_ValueToBoolean</a></li> - <li><a href="/ja/docs/JS_ValueToECMAInt32">JS_ValueToECMAInt32</a></li> - <li><a href="/ja/docs/JS_ValueToECMAUint32">JS_ValueToECMAUint32</a></li> - <li><a href="/ja/docs/JS_ValueToFunction">JS_ValueToFunction</a></li> - <li><a href="/ja/docs/JS_ValueToId">JS_ValueToId</a></li> - <li><a href="/ja/docs/JS_ValueToInt32">JS_ValueToInt32</a></li> - <li><a href="/ja/docs/JS_ValueToNumber">JS_ValueToNumber</a></li> - <li><a href="/ja/docs/JS_ValueToObject">JS_ValueToObject</a></li> - <li><a href="/ja/docs/JS_ValueToString">JS_ValueToString</a></li> - <li><a href="/ja/docs/JS_ValueToUint16">JS_ValueToUint16</a></li> - <li><a href="/ja/docs/JSCLASS_HAS_PRIVATE">JSCLASS_HAS_PRIVATE</a></li> - <li><a href="/ja/docs/JSCLASS_NEW_ENUMERATE">JSCLASS_NEW_ENUMERATE</a></li> - <li><a href="/ja/docs/JSCLASS_NEW_RESOLVE">JSCLASS_NEW_RESOLVE</a></li> - <li><a href="/ja/docs/JSClass">JSClass</a></li> - <li><a href="/ja/docs/JSConstDoubleSpec">JSConstDoubleSpec</a></li> - <li><a href="/ja/docs/JSErrorReport">JSErrorReport</a></li> - <li><a href="/ja/docs/JSFUN_BOUND_METHOD">JSFUN_BOUND_METHOD</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JSFUN_GLOBAL_PARENT">JSFUN_GLOBAL_PARENT</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JSFunctionSpec">JSFunctionSpec</a></li> - <li><a href="/ja/docs/JSIdArray">JSIdArray</a></li> - <li><a href="/ja/docs/JSObjectOps">JSObjectOps</a></li> - <li><a href="/ja/docs/JSPRINCIPALS_DROP">JSPRINCIPALS_DROP</a></li> - <li><a href="/ja/docs/JSPRINCIPALS_HOLD">JSPRINCIPALS_HOLD</a></li> - <li><a href="/ja/docs/JSPrincipals">JSPrincipals</a></li> - <li><a href="/ja/docs/JSPROP_ENUMERATE">JSPROP_ENUMERATE</a></li> - <li><a href="/ja/docs/JSPROP_EXPORTED">JSPROP_EXPORTED</a></li> - <li><a href="/ja/docs/JSPROP_INDEX">JSPROP_INDEX</a></li> - <li><a href="/ja/docs/JSPROP_PERMANENT">JSPROP_PERMANENT</a></li> - <li><a href="/ja/docs/JSPROP_READONLY">JSPROP_READONLY</a></li> - <li><a href="/ja/docs/JSProperty">JSProperty</a></li> - <li><a href="/ja/docs/JSPropertySpec">JSPropertySpec</a></li> - <li><a href="/ja/docs/JSRESOLVE_ASSIGNING">JSRESOLVE_ASSIGNING</a></li> - <li><a href="/ja/docs/JSRESOLVE_QUALIFIED">JSRESOLVE_QUALIFIED</a></li> - <li><a href="/ja/docs/JSVAL_FALSE">JSVAL_FALSE</a></li> - <li><a href="/ja/docs/JSVAL_IS_BOOLEAN">JSVAL_IS_BOOLEAN</a></li> - <li><a href="/ja/docs/JSVAL_IS_DOUBLE">JSVAL_IS_DOUBLE</a></li> - <li><a href="/ja/docs/JSVAL_IS_GCTHING">JSVAL_IS_GCTHING</a></li> - <li><a href="/ja/docs/JSVAL_IS_INT">JSVAL_IS_INT</a></li> - <li><a href="/ja/docs/JSVAL_IS_NULL">JSVAL_IS_NULL</a></li> - <li><a href="/ja/docs/JSVAL_IS_NUMBER">JSVAL_IS_NUMBER</a></li> - <li><a href="/ja/docs/JSVAL_IS_OBJECT">JSVAL_IS_OBJECT</a></li> - <li><a href="/ja/docs/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a></li> - <li><a href="/ja/docs/JSVAL_IS_STRING">JSVAL_IS_STRING</a></li> - <li><a href="/ja/docs/JSVAL_IS_VOID">JSVAL_IS_VOID</a></li> - <li><a href="/ja/docs/JSVAL_LOCK">JSVAL_LOCK</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JSVAL_NULL">JSVAL_NULL</a></li> - <li><a href="/ja/docs/JSVAL_ONE">JSVAL_ONE</a></li> - <li><a href="/ja/docs/JSVAL_TO_BOOLEAN">JSVAL_TO_BOOLEAN</a></li> - <li><a href="/ja/docs/JSVAL_TO_DOUBLE">JSVAL_TO_DOUBLE</a></li> - <li><a href="/ja/docs/JSVAL_TO_GCTHING">JSVAL_TO_GCTHING</a></li> - <li><a href="/ja/docs/JSVAL_TO_INT">JSVAL_TO_INT</a></li> - <li><a href="/ja/docs/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a></li> - <li><a href="/ja/docs/JSVAL_TO_PRIVATE">JSVAL_TO_PRIVATE</a></li> - <li><a href="/ja/docs/JSVAL_TO_STRING">JSVAL_TO_STRING</a></li> - <li><a href="/ja/docs/JSVAL_TRUE">JSVAL_TRUE</a></li> - <li><a href="/ja/docs/JSVAL_UNLOCK">JSVAL_UNLOCK</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li> - <li><a href="/ja/docs/JSVAL_VOID">JSVAL_VOID</a></li> - <li><a href="/ja/docs/JSVAL_ZERO">JSVAL_ZERO</a></li> - <li><a href="/ja/docs/OBJECT_TO_JSVAL">OBJECT_TO_JSVAL</a></li> - <li><a href="/ja/docs/PRIVATE_TO_JSVAL">PRIVATE_TO_JSVAL</a></li> - <li><a href="/ja/docs/STRING_TO_JSVAL">STRING_TO_JSVAL</a></li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/index.html deleted file mode 100644 index 5bb96c5566..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/index.html +++ /dev/null @@ -1,926 +0,0 @@ ---- -title: JSAPI リファレンス -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference -tags: - - JSAPI_Reference - - JavaScript - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference ---- -<section class="Quick_links" id="Quick_Links"> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey"><strong><em>SpiderMonkey</em></strong></a></li> - - <li><strong>References:</strong></li> - <li class="toggle"> - <details> - <summary>JSAPI reference</summary> - <ol><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/Alphabetical_List" title="参照: グループ別一覧, カテゴリ表示 (自動)."><code>Alphabetical List</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/Alphabetical_List$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_CompileFile" title=""><code>JS CompileFile</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_CompileFile$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ConstructObject" title="新たにJavaScriptオブジェクトを生成し、コンストラクタを呼び出します。 Create a new JavaScript object and invoke its constructor."><code>JS ConstructObject</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ConstructObject$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyContext" title=""><code>JS DestroyContext</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyContext$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyRuntime" title=""><code>JS DestroyRuntime</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyRuntime$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_EvaluateScript" title=""><code>JS EvaluateScript</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_EvaluateScript$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntime" title=""><code>JS GetRuntime</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntime$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntimePrivate" title=""><code>JS GetRuntimePrivate</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntimePrivate$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewContext" title=""><code>JS NewContext</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewContext$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewRuntime" title="JavaScript ランタイムの初期化を行います。 "><code>JS NewRuntime</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewRuntime$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ShutDown" title=""><code>JS ShutDown</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ShutDown$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSRuntime" title=""><code>JSRuntime</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSRuntime$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSType" title="列挙型 JSType の値は、 JavaScript の値の型を表します。"><code>JSType</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSType$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DefineObject" title=""><code>JS_DefineObject</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DefineObject$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Init" title="JS_Init は廃止されました。替わりに JS_NewRuntime を使用して下さい。"><code>JS_Init</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Init$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Lock" title="JS ランタイム環境をロックします。"><code>JS_Lock</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Lock$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewObject" title=""><code>JS_NewObject</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewObject$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/jsint" title="C 言語 / C++ の整数型のエイリアスです。"><code>jsint</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/jsint$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li></ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Debugger-API</summary> - <ol><li><a href="/ja/docs/Tools/Debugger-API/Debugger">Debugger</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Environment">Debugger.Environment</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Frame">Debugger.Frame</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Memory">Debugger.Memory</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Object">Debugger.Object</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Script">Debugger.Script</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Source">Debugger.Source</a></li><li><a href="/ja/docs/Tools/Debugger-API/Tutorial-Debugger-Statement">Tools/Debugger-API/Tutorial-Debugger-Statement</a></li><li><a href="/ja/docs/Tools/Debugger-API/Tutorial-Breakpoint">チュートリアル: Debuggerを使用したブレークポイントの設定</a></li><li><a href="/ja/docs/Tools/Debugger-API/Tutorial-Allocation-Log-Tree">チュートリアル: コールパスごとの割り当てを表示する</a></li><li><a href="/ja/docs/Tools/Debugger-API/Conventions">一般的な規則</a></li></ol> - </details> - </li> - <li><strong>Guides:</strong></li> - <li class="toggle"> - <details> - <summary>General</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation">Build documentation</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">Introduction to the JavaScript shell</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide">JSAPI user guide</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Cookbook">JSAPI cookbook</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/How_to_embed_the_JavaScript_engine">How to embed the JavaScript engine</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/GC_Rooting_Guide">GC Rooting Guide</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>SpiderMonkey internals</summary> - <ol><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Internals/Garbage_collection">Garbage collection</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Internals/Thread_Safety">Thread Safety</a></li></ol> - </details> - </li> - - <li><strong>Contributing to SpiderMonkey:</strong></li> - <li class="toggle"> - <details> - <summary>Getting started</summary> - <ol> - <li><a href="https://wiki.mozilla.org/JavaScript:New_to_SpiderMonkey">New to SpiderMonkey</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Setting_up_CDT_to_work_on_SpiderMonkey">Setting up CDT to work on SpiderMonkey</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Hacking_Tips">Hacking tips</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Tests</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Running_Automated_JavaScript_Tests">Running Automated JavaScript Tests</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests">Creating JavaScript tests</a></li> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Running_Parsemark">Running Parsemark</a></li> - </ol> - </details> - </li> - - <li><strong>Releases:</strong></li> - <li class="toggle"> - <details> - <summary>Release notes</summary> - <ol><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/52">SpiderMonkey 52</a></li></ol> - </details> - </li> - <li><strong><a href="/ja/docs/MDN">Documentation:</a></strong></li> - <li class="toggle"> - <details> - <summary>Useful lists</summary> - <ol> - <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Index">All pages index</a></li> - <li><a href="/ja/docs/tag/SpiderMonkey">Pages tagged "SpiderMonkey"</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Contribute</summary> - <ol> - <li><a href="/ja/docs/MDN/Doc_status/SpiderMonkey">SpiderMonkey doc status</a></li> - <li><a href="/ja/docs/MDN">The MDN project</a></li> - </ol> - </details> - </li> - </ol> -</section> - -<p><strong>JSAPI</strong> は、<a href="/ja/SpiderMonkey" title="ja/SpiderMonkey">SpiderMonkey</a> JavaScript エンジンのための C API です。JSAPI の使用方法を学ぶには、<a href="/ja/SpiderMonkey/Embedding_SpiderMonkey" title="ja/SpiderMonkey/Embedding_SpiderMonkey">JSAPI User Guide</a> および <a href="/ja/SpiderMonkey/JSAPI_Phrasebook" title="ja/SpiderMonkey/JSAPI_Phrasebook">JSAPI Phrasebook</a> をご覧ください。</p> - -<div class="note">補足: <a class="internal" href="/ja/SpiderMonkey/FOSS" title="ja/SpiderMonkey/FOSS">FOSS</a> のページに、Spidermonkey と JASPI の使用を助ける、他のライブラリやプログラムへのリンクがあります。</div> - -<p><a href="/ja/SpiderMonkey/JSAPI_Reference/Alphabetical_List" title="ja/SpiderMonkey/JSAPI_Reference/Alphabetical_List">アルファベット順一覧</a></p> - -<p><span id="Runtimes_and_contexts"></span></p> - -<h3 id="Runtimes_and_contexts" name="Runtimes_and_contexts">ランタイムとコンテキスト</h3> - -<ul> - <li>typedef <a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a></li> - <li><a href="/ja/JS_NewRuntime" title="ja/JS_NewRuntime">JS_NewRuntime</a></li> - <li><a href="/ja/JS_DestroyRuntime" title="ja/JS_DestroyRuntime">JS_DestroyRuntime</a></li> - <li><a href="/ja/JS_ShutDown" title="ja/JS_ShutDown">JS_ShutDown</a></li> - <li><a href="/ja/JS_GetRuntimePrivate" title="ja/JS_GetRuntimePrivate">JS_GetRuntimePrivate</a></li> - <li><a href="/ja/JS_GetRuntimePrivate" title="ja/JS_GetRuntimePrivate">JS_SetRuntimePrivate</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Init" title="ja/JS_Init">JS_Init</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Finish" title="ja/JS_Finish">JS_Finish</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ContextIterator" title="ja/JS_ContextIterator">JS_ContextIterator</a></li> -</ul> - -<ul> - <li>typedef <a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a></li> - <li><a href="/ja/JS_NewContext" title="ja/JS_NewContext">JS_NewContext</a></li> - <li><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContext</a></li> - <li><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContextMaybeGC</a></li> - <li><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContextNoGC</a></li> - <li><a href="/ja/JS_GetRuntime" title="ja/JS_GetRuntime">JS_GetRuntime</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetContextPrivate" title="ja/JS_GetContextPrivate">JS_GetContextPrivate</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetContextPrivate" title="ja/JS_GetContextPrivate">JS_SetContextPrivate</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetOptions" title="ja/JS_GetOptions">JS_GetOptions</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JS_SetOptions</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_ATLINE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_COMPILE_N_GO</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_DONT_REPORT_UNCAUGHT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_NATIVE_BRANCH_CALLBACK</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JSOPTION_RELIMIT">JSOPTION_RELIMIT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_STRICT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_VAROBJFIX</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_WERROR</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_XML</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_ANONFUNFIX</a><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1_(未リリース)">SpiderMonkey 1.8.1 (未リリース)</a> の新機能</span>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_JIT</a><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1_(未リリース)">SpiderMonkey 1.8.1 (未リリース)</a> の新機能</span>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_NO_SCRIPT_RVAL</a><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1_(未リリース)">SpiderMonkey 1.8.1 (未リリース)</a> の新機能</span>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_UNROOTED_GLOBAL</a><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1_(未リリース)">SpiderMonkey 1.8.1 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ToggleOptions" title="ja/JS_ToggleOptions">JS_ToggleOptions</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetBranchCallback" title="ja/JS_SetBranchCallback">JS_SetBranchCallback</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_SetOperationCallback</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_ClearOperationCallback</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_GetOperationCallback</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_GetOperationLimit</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_SetOperationLimit</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_MAX_OPERATION_LIMIT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_OPERATION_WEIGHT_BASE</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetThreadStackLimit" title="ja/JS_SetThreadStackLimit">JS_SetThreadStackLimit</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetScriptStackQuota" title="ja/JS_SetScriptStackQuota">JS_SetScriptStackQuota</a></li> -</ul> - -<ul> - <li>enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JSVersion" title="ja/JSVersion">JSVersion</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSVersion" title="ja/SpiderMonkey/JSAPI_Reference/JSVERSION_ECMA_3">JSVERSION_ECMA_3</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSVERSION_DEFAULT" title="ja/JSVERSION_DEFAULT">JSVERSION_DEFAULT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSVERSION_LATEST" title="ja/JSVERSION_LATEST">JSVERSION_LATEST</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetImplementationVersion" title="ja/JS_GetImplementationVersion">JS_GetImplementationVersion</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetVersion" title="ja/JS_GetVersion">JS_GetVersion</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetVersion" title="ja/JS_SetVersion">JS_SetVersion</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_StringToVersion" title="ja/JS_StringToVersion">JS_StringToVersion</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_VersionToString" title="ja/JS_VersionToString">JS_VersionToString</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject" title="ja/JS_GetGlobalObject">JS_GetGlobalObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGlobalObject" title="ja/JS_SetGlobalObject">JS_SetGlobalObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InitClass" title="ja/JS_InitClass">JS_InitClass</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InitStandardClasses" title="ja/JS_InitStandardClasses">JS_InitStandardClasses</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ResolveStandardClass" title="ja/JS_ResolveStandardClass">JS_ResolveStandardClass</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EnumerateStandardClasses" title="ja/JS_EnumerateStandardClasses">JS_EnumerateStandardClasses</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EnumerateResolvedStandardClasses" title="ja/JS_EnumerateResolvedStandardClasses">JS_EnumerateResolvedStandardClasses</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsAssigning" title="ja/JS_IsAssigning">JS_IsAssigning</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsConstructing" title="ja/JS_IsConstructing">JS_IsConstructing</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsRunning" title="ja/JS_IsRunning">JS_IsRunning</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetScopeChain" title="ja/JS_GetScopeChain">JS_GetScopeChain</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SaveFrameChain" title="ja/JS_SaveFrameChain">JS_SaveFrameChain</a>, <a href="/en/JS_RestoreFrameChain" title="en/JS_RestoreFrameChain">JS_RestoreFrameChain</a></li> -</ul> - -<p>ロケールコールバック:</p> - -<ul> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleCallbacks" title="ja/JSLocaleCallbacks">JSLocaleCallbacks</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetLocaleCallbacks" title="ja/JS_GetLocaleCallbacks">JS_GetLocaleCallbacks</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetLocaleCallbacks" title="ja/JS_SetLocaleCallbacks">JS_SetLocaleCallbacks</a></li> -</ul> - -<p>ロケールコールバック型:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleToUpperCase" title="ja/JSLocaleToUpperCase">JSLocaleToUpperCase</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleToLowerCase" title="ja/JSLocaleToLowerCase">JSLocaleToLowerCase</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleCompare" title="ja/JSLocaleCompare">JSLocaleCompare</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleToUnicode" title="ja/JSLocaleToUnicode">JSLocaleToUnicode</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JSErrorCallback</a></li> -</ul> - -<p><span id="Scripts"></span></p> - -<h3 id="Scripts" name="Scripts">スクリプト</h3> - -<p>一部の JavaScript コードは直接実行されます:</p> - -<ul> - <li><a href="/ja/JS_EvaluateScript" title="ja/JS_EvaluateScript">JS_EvaluateScript</a></li> - <li><a href="/ja/JS_EvaluateScript" title="ja/JS_EvaluateScript">JS_EvaluateUCScript</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EvaluateScriptForPrincipals" title="ja/JS_EvaluateScriptForPrincipals">JS_EvaluateScriptForPrincipals</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EvaluateScriptForPrincipals" title="ja/JS_EvaluateScriptForPrincipals">JS_EvaluateUCScriptForPrincipals</a></li> -</ul> - -<p>JavaScript コードを可能な <code>JSScript</code> へとコンパイルする代わりに、複数のアイテムを実行することができます。</p> - -<ul> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSScript" title="ja/JSScript">JSScript</a></li> - <li><a href="/ja/JS_CompileFile" title="ja/JS_CompileFile">JS_CompileFile</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFileHandle" title="ja/JS_CompileFileHandle">JS_CompileFileHandle</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFileHandle" title="ja/JS_CompileFileHandle">JS_CompileFileHandleForPrincipals</a></li> - <li><a href="/ja/JS_CompileScript" title="ja/JS_CompileScript">JS_CompileScript</a></li> - <li><a href="/ja/JS_CompileScript" title="ja/JS_CompileScript">JS_CompileUCScript</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileScriptForPrincipals" title="ja/JS_CompileScriptForPrincipals">JS_CompileScriptForPrincipals</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileScriptForPrincipals" title="ja/JS_CompileScriptForPrincipals">JS_CompileUCScriptForPrincipals</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_BufferIsCompilableUnit" title="ja/JS_BufferIsCompilableUnit">JS_BufferIsCompilableUnit</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetScriptObject" title="ja/JS_GetScriptObject">JS_GetScriptObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewScriptObject" title="ja/JS_NewScriptObject">JS_NewScriptObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ExecuteScript" title="ja/JS_ExecuteScript">JS_ExecuteScript</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ExecuteScriptPart" title="ja/JS_ExecuteScriptPart">JS_ExecuteScriptPart</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DecompileScript" title="ja/JS_DecompileScript">JS_DecompileScript</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DestroyScript" title="ja/JS_DestroyScript">JS_DestroyScript</a></li> -</ul> - -<p>JavaScript コードを関数へとコンパイルすることもできます:</p> - -<ul> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSFunction" title="ja/JSFunction">JSFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFunction" title="ja/JS_CompileFunction">JS_CompileFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFunctionForPrincipals" title="ja/JS_CompileFunctionForPrincipals">JS_CompileFunctionForPrincipals</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFunction" title="ja/JS_CompileFunction">JS_CompileUCFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFunctionForPrincipals" title="ja/JS_CompileFunctionForPrincipals">JS_CompileUCFunctionForPrincipals</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DecompileFunction" title="ja/JS_DecompileFunction">JS_DecompileFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DecompileFunctionBody" title="ja/JS_DecompileFunctionBody">JS_DecompileFunctionBody</a></li> -</ul> - -<p><span id="Error_handling"></span></p> - -<h3 id="Error_handling" name="Error_handling">エラーハンドリング</h3> - -<ul> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSErrorReport" title="ja/JSErrorReport">JSErrorReport</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportError" title="ja/JS_ReportError">JS_ReportError</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportWarning" title="ja/JS_ReportWarning">JS_ReportWarning</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorNumber</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorNumberUC</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorFlagsAndNumber</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorFlagsAndNumberUC</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportOutOfMemory" title="ja/JS_ReportOutOfMemory">JS_ReportOutOfMemory</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetErrorReporter" title="ja/JS_SetErrorReporter">JS_SetErrorReporter</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSREPORT_IS_EXCEPTION" title="ja/JSREPORT_IS_EXCEPTION">JSREPORT_IS_EXCEPTION</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSREPORT_IS_STRICT" title="ja/JSREPORT_IS_STRICT">JSREPORT_IS_STRICT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSREPORT_IS_WARNING" title="ja/JSREPORT_IS_WARNING">JSREPORT_IS_WARNING</a></li> -</ul> - -<p>次の関数は、C/C++ 関数に JavaScript 例外のスローとキャッチを許可します。:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsExceptionPending" title="ja/JS_IsExceptionPending">JS_IsExceptionPending</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPendingException" title="ja/JS_GetPendingException">JS_GetPendingException</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="ja/JS_SetPendingException">JS_SetPendingException</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException" title="ja/JS_ClearPendingException">JS_ClearPendingException</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ThrowStopIteration" title="ja/JS_ThrowStopIteration">JS_ThrowStopIteration</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li> -</ul> - -<ul> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSExceptionState" title="ja/JSExceptionState">JSExceptionState</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SaveExceptionState" title="ja/JS_SaveExceptionState">JS_SaveExceptionState</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_RestoreExceptionState" title="ja/JS_RestoreExceptionState">JS_RestoreExceptionState</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DropExceptionState" title="ja/JS_DropExceptionState">JS_DropExceptionState</a></li> -</ul> - -<p>これらの関数は、エラーを例外に、例外をエラーに翻訳します:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportPendingException" title="ja/JS_ReportPendingException">JS_ReportPendingException</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ErrorFromException" title="ja/JS_ErrorFromException">JS_ErrorFromException</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ThrowReportedError" title="ja/JS_ThrowReportedError">JS_ThrowReportedError</a></li> -</ul> - -<p><span id="Values_and_types"></span></p> - -<h3 id="Values_and_types" name="Values_and_types">値と型</h3> - -<ul> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/Jsval" title="ja/jsval">jsval</a></li> -</ul> - -<p><code>jsval</code> 定数:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_NULL" title="ja/JSVAL_NULL">JSVAL_NULL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_VOID" title="ja/JSVAL_VOID">JSVAL_VOID</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TRUE" title="ja/JSVAL_TRUE">JSVAL_TRUE</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TRUE" title="ja/JSVAL_TRUE">JSVAL_FALSE</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_ZERO" title="ja/JSVAL_ZERO">JSVAL_ZERO</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_ONE" title="ja/JSVAL_ONE">JSVAL_ONE</a></li> -</ul> - -<p><code>jsval</code> の型をチェックする関数とマクロ:</p> - -<ul> - <li>enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JSType" title="ja/JSType">JSType</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_TypeOfValue" title="ja/JS_TypeOfValue">JS_TypeOfValue</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_NULL" title="ja/JSVAL_IS_NULL">JSVAL_IS_NULL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_VOID" title="ja/JSVAL_IS_VOID">JSVAL_IS_VOID</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_BOOLEAN" title="ja/JSVAL_IS_BOOLEAN">JSVAL_IS_BOOLEAN</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_NUMBER" title="ja/JSVAL_IS_NUMBER">JSVAL_IS_NUMBER</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_INT" title="ja/JSVAL_IS_INT">JSVAL_IS_INT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_DOUBLE" title="ja/JSVAL_IS_DOUBLE">JSVAL_IS_DOUBLE</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_STRING" title="ja/JSVAL_IS_STRING">JSVAL_IS_STRING</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_OBJECT" title="ja/JSVAL_IS_OBJECT">JSVAL_IS_OBJECT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="ja/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_GCTHING" title="ja/JSVAL_IS_GCTHING">JSVAL_IS_GCTHING</a></li> -</ul> - -<p>関数の引数を圧縮または展開する高レベル型変換ルーチン。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PushArguments" title="ja/JS_PushArguments">JS_PushArguments</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PushArguments" title="ja/JS_PushArguments">JS_PushArgumentsVA</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PopArguments" title="ja/JS_PopArguments">JS_PopArguments</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ConvertArguments" title="ja/JS_ConvertArguments">JS_ConvertArguments</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ConvertArgumentsVA" title="ja/JS_ConvertArgumentsVA">JS_ConvertArgumentsVA</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddArgumentFormatter" title="ja/JS_AddArgumentFormatter">JS_AddArgumentFormatter</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddArgumentFormatter" title="ja/JS_AddArgumentFormatter">JS_RemoveArgumentFormatter</a></li> -</ul> - -<p>次の関数は JS 値を変数型に変換します。これらは任意の型の <code>jsval</code> に安全に適用することができます。これらは新しいオブジェクトを返します。例えば、<code>JS_ValueToObject(cx, s)</code> の <code>s</code> は新しい <code>String</code> ラッパーオブジェクトを作成する文字列です。これらの関数は JavaScript メソッドを呼び出します。例えば、<code>JS_ValueToString(cx, obj)</code> は <code>obj.toString()</code> を呼び出します。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToBoolean" title="ja/JS_ValueToBoolean">JS_ValueToBoolean</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToConstructor" title="ja/JS_ValueToConstructor">JS_ValueToConstructor</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToECMAInt32" title="ja/JS_ValueToECMAInt32">JS_ValueToECMAInt32</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToECMAInt32" title="ja/JS_ValueToECMAInt32">JS_ValueToECMAUint32</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToFunction" title="ja/JS_ValueToFunction">JS_ValueToFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToInt32" title="ja/JS_ValueToInt32">JS_ValueToInt32</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToNumber" title="ja/JS_ValueToNumber">JS_ValueToNumber</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToObject" title="ja/JS_ValueToObject">JS_ValueToObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToString" title="ja/JS_ValueToString">JS_ValueToString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToECMAInt32" title="ja/JS_ValueToECMAInt32">JS_ValueToUint16</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ConvertValue" title="ja/JS_ConvertValue">JS_ConvertValue</a></li> -</ul> - -<p>高速な未チェックの型キャストマクロ。これらのマクロは正しい型として知られていない値に適用してはいけません。C のキャストのように、正しくない値に適用するとクラッシュの原因となります。これらは新しいオブジェクトを作成したり JavaScript コード内に呼び出したりすることはありません。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_BOOLEAN" title="ja/JSVAL_TO_BOOLEAN">JSVAL_TO_BOOLEAN</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/BOOLEAN_TO_JSVAL" title="ja/BOOLEAN_TO_JSVAL">BOOLEAN_TO_JSVAL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_INT" title="ja/JSVAL_TO_INT">JSVAL_TO_INT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL" title="ja/INT_TO_JSVAL">INT_TO_JSVAL</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/INT_FITS_IN_JSVAL" title="ja/INT_FITS_IN_JSVAL">INT_FITS_IN_JSVAL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_DOUBLE" title="ja/JSVAL_TO_DOUBLE">JSVAL_TO_DOUBLE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/DOUBLE_TO_JSVAL" title="ja/DOUBLE_TO_JSVAL">DOUBLE_TO_JSVAL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="ja/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/OBJECT_TO_JSVAL" title="ja/OBJECT_TO_JSVAL">OBJECT_TO_JSVAL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_STRING" title="ja/JSVAL_TO_STRING">JSVAL_TO_STRING</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/STRING_TO_JSVAL" title="ja/STRING_TO_JSVAL">STRING_TO_JSVAL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_GCTHING" title="ja/JSVAL_TO_GCTHING">JSVAL_TO_GCTHING</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/PRIVATE_TO_JSVAL" title="ja/PRIVATE_TO_JSVAL">JSVAL_TO_PRIVATE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/PRIVATE_TO_JSVAL" title="ja/PRIVATE_TO_JSVAL">PRIVATE_TO_JSVAL</a></li> -</ul> - -<p><code>typeof</code> のように振る舞う関数:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetTypeName" title="ja/JS_GetTypeName">JS_GetTypeName</a></li> -</ul> - -<p><code>===</code> のように振る舞う関数:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_StrictlyEqual" title="ja/SpiderMonkey/JSAPI_Reference/JS_StrictlyEqual">JS_StrictlyEqual</a></li> -</ul> - -<p><span id="Memory_management"></span></p> - -<h3 id="Memory_management" name="Memory_management">メモリ管理</h3> - -<p>これらの関数は、標準 C 関数の <code>malloc</code> 系のように動作します。ただし、エラーは <code>errno</code> ではなく、SpiderMonkey のエラー API を使用して報告されます:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_malloc" title="ja/JS_malloc">JS_malloc</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_malloc" title="ja/JS_free">JS_free</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_malloc" title="ja/JS_realloc">JS_realloc</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_malloc" title="ja/JS_strdup">JS_strdup</a></li> -</ul> - -<p>JavaScript オブジェクト、文字列、浮動小数点数はガーベッジコレクションの対象となります。これらの関数は、ガーベッジコレクタ(GC) へのアクセスを提供します:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GC" title="ja/JS_GC">JS_GC</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MaybeGC" title="ja/JS_MaybeGC">JS_MaybeGC</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JS_GetGCParameter</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JS_SetGCParameter</a>, enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JSGCParamKey</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JSGC_MAX_BYTES</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JSGC_MAX_MALLOC_BYTES</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JSGC_STACKPOOL_LIFESPAN</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/SpiderMonkey/JSAPI Reference/JSGC TRIGGER FACTOR">JSGC_TRIGGER_FACTOR</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/SpiderMonkey/JSAPI Reference/JSGC BYTES">JSGC_BYTES</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/SpiderMonkey/JSAPI Reference/JSGC NUMBER">JSGC_NUMBER</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JS_SetGCCallback</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JS_SetGCCallbackRT</a>, enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGCStatus</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGC_BEGIN</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGC_MARK_END</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGC_FINALIZE_END</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGC_END</a></li> - <li><a href="/ja/JS_MarkGCThing" title="ja/JS_MarkGCThing">JS_MarkGCThing</a></li> - <li><a href="/ja/JS_IsAboutToBeFinalized" title="ja/JS_IsAboutToBeFinalized">JS_IsAboutToBeFinalized</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearNewbornRoots" title="ja/JS_ClearNewbornRoots">JS_ClearNewbornRoots</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCZeal" title="ja/JS_SetGCZeal">JS_SetGCZeal</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DumpHeap" title="ja/JS_DumpHeap">JS_DumpHeap</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> -</ul> - -<p>これら残りの API は、アプリケーションがガーベッジコレクションを行う前に、オブジェクトをガーベッジコレクタによる破壊から保護します。</p> - -<p>変数が <em>root</em> の場合、その変数へのポインタはガーベッジコレクタによって開放されません。ルートオブジェクトに対しての失敗は、よくある奇妙なクラッシュの原因です。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddRoot" title="ja/JS_AddRoot">JS_AddRoot</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddRoot" title="ja/JS_AddRoot">JS_AddNamedRoot</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddRoot" title="ja/JS_AddRoot">JS_AddNamedRootRT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_RemoveRoot" title="ja/JS_RemoveRoot">JS_RemoveRoot</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_RemoveRootRT" title="ja/JS_RemoveRootRT">JS_RemoveRootRT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MapGCRoots">JS_MapGCRoots</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JSGCMapRootFun">JSGCMapRootFun</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MAP_GCROOT_NEXT">JS_MAP_GCROOT_NEXT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MAP_GCROOT_REMOVE">JS_MAP_GCROOT_REMOVE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MAP_GCROOT_STOP">JS_MAP_GCROOT_STOP</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DumpNamedRoots" title="ja/JS_DumpNamedRoots">JS_DumpNamedRoots</a></li> -</ul> - -<p>ローカルのルートのスコープは、オブジェクトを別の方法でガーベッジコレクタから保護します。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EnterLocalRootScope" title="ja/JS_EnterLocalRootScope">JS_EnterLocalRootScope</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LeaveLocalRootScope" title="ja/JS_LeaveLocalRootScope">JS_LeaveLocalRootScope</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LeaveLocalRootScopeWithResult" title="ja/JS_LeaveLocalRootScopeWithResult">JS_LeaveLocalRootScopeWithResult</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ForgetLocalRoot" title="ja/JS_ForgetLocalRoot">JS_ForgetLocalRoot</a></li> -</ul> - -<p><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span> オブジェクトが、SpiderMonkey のデータ構造 ("slots") に格納されていない、他のガーベッジコレクタの対象への参照を含む場合、このオブジェクトは、ガーベッジコレクタのこれらの参照へのトラバース (<span style="color: green;">traverse</span>)を有効にするため、<code><a href="/ja/JSClass.mark" title="ja/JSClass.mark">JSTraceOp</a></code> フックを実装しなければなりません。しかし、ガーベッジコレクタは手の届く範囲のオブジェクトのみを整理しますが、すべてのオブジェクトを見つけることはできないため、クラッシュを引き起こします。(SpiderMonkey 1.7 以前のバージョンでは <code>JSMarkOp</code> フックが代わりに使用されます。これは SpiderMonkey 1.8 のリリース後は非推奨です。)</p> - -<p>トレース API は、ガーベッジコレクタと <code>JSTraceOp</code> フックによって使用されます。JSAPI アプリケーションもまた、これらの API をオブジェクトグラフを検査するために使用します。(例えば、これらの API は JS ガーベッジコレクタと他のガーベッジコレクタの、とても円滑な統合をサポートします。)</p> - -<ul> - <li><a href="/ja/JSVAL_IS_TRACEABLE" title="ja/JSVAL_IS_TRACEABLE">JSVAL_IS_TRACEABLE</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JSVAL_TO_TRACEABLE" title="ja/JSVAL_TO_TRACEABLE">JSVAL_TO_TRACEABLE</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JSVAL_TRACE_KIND" title="ja/JSVAL_TRACE_KIND">JSVAL_TRACE_KIND</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li>struct <a href="/ja/JSTracer" title="ja/JSTracer">JSTracer</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_TRACER_INIT" title="ja/JS_TRACER_INIT">JS_TRACER_INIT</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_CallTracer" title="ja/JS_CallTracer">JS_CallTracer</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SET_TRACING_DETAILS" title="ja/JS_SET_TRACING_DETAILS">JS_SET_TRACING_DETAILS</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_SET_TRACING_INDEX" title="ja/JS_SET_TRACING_INDEX">JS_SET_TRACING_INDEX</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_SET_TRACING_NAME" title="ja/JS_SET_TRACING_NAME">JS_SET_TRACING_NAME</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_CALL_TRACER" title="ja/JS_CALL_TRACER">JS_CALL_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_CALL_VALUE_TRACER" title="ja/JS_CALL_VALUE_TRACER">JS_CALL_VALUE_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_CALL_OBJECT_TRACER" title="ja/JS_CALL_OBJECT_TRACER">JS_CALL_OBJECT_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_CALL_STRING_TRACER" title="ja/JS_CALL_STRING_TRACER">JS_CALL_STRING_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_CALL_DOUBLE_TRACER" title="ja/JS_CALL_DOUBLE_TRACER">JS_CALL_DOUBLE_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_TraceChildren" title="ja/JS_TraceChildren">JS_TraceChildren</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_TraceRuntime" title="ja/JS_TraceRuntime">JS_TraceRuntime</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/JS_PrintTraceThingInfo" title="ja/JS_PrintTraceThingInfo">JS_PrintTraceThingInfo</a> (DEBUG-only) <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> -</ul> - -<p>その他の GC API:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_LOCK" title="ja/JSVAL_LOCK">JSVAL_LOCK</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_UNLOCK" title="ja/JSVAL_UNLOCK">JSVAL_UNLOCK</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LockGCThing" title="ja/JS_LockGCThing">JS_LockGCThing</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/JS_LockGCThingRT" title="ja/JS_LockGCThingRT">JS_LockGCThingRT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LockGCThing" title="ja/JS_LockGCThing">JS_UnlockGCThing</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/JS_UnlockGCThingRT" title="ja/JS_UnlockGCThingRT">JS_UnlockGCThingRT</a></li> -</ul> - -<p><span id="Numbers"></span></p> - -<h3 id="Numbers" name="Numbers">数値</h3> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewNumberValue" title="ja/JS_NewNumberValue">JS_NewNumberValue</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewDoubleValue" title="ja/JS_NewDoubleValue">JS_NewDoubleValue</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewDouble" title="ja/JS_NewDouble">JS_NewDouble</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSConstDoubleSpec" title="ja/JSConstDoubleSpec">JSConstDoubleSpec</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineConstDoubles" title="ja/JS_DefineConstDoubles">JS_DefineConstDoubles</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetNaNValue" title="ja/JS_GetNaNValue">JS_GetNaNValue</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPositiveInfinityValue" title="ja/JS_GetPositiveInfinityValue">JS_GetNegativeInfinityValue</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPositiveInfinityValue" title="ja/JS_GetPositiveInfinityValue">JS_GetPositiveInfinityValue</a></li> -</ul> - -<p><span id="Strings"></span></p> - -<h3 id="Strings" name="Strings">文字列</h3> - -<ul> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSString" title="ja/JSString">JSString</a></li> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/jschar" title="ja/jschar">jschar</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewString" title="ja/JS_NewString">JS_NewString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN">JS_NewStringCopyN</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ">JS_NewStringCopyZ</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewString" title="ja/JS_NewString">JS_NewUCString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN">JS_NewUCStringCopyN</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ">JS_NewUCStringCopyZ</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewGrowableString" title="ja/JS_NewGrowableString">JS_NewGrowableString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewDependentString" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewDependentString">JS_NewDependentString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetEmptyStringValue" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetEmptyStringValue">JS_GetEmptyStringValue</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompareStrings" title="ja/SpiderMonkey/JSAPI_Reference/JS_CompareStrings">JS_CompareStrings</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ConcatStrings" title="ja/JS_ConcatStrings">JS_ConcatStrings</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes">JS_GetStringBytes</a> <span class="icon-only-inline" title="これは廃止されたAPIであり、今後の動作は保障されていません。ご注意下さい。"><i class="icon-trash"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes">JS_GetStringBytesZ</a> <span class="icon-only-inline" title="これは廃止されたAPIであり、今後の動作は保障されていません。ご注意下さい。"><i class="icon-trash"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringChars" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetStringChars">JS_GetStringChars</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringLength" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetStringLength">JS_GetStringLength</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MakeStringImmutable" title="ja/SpiderMonkey/JSAPI_Reference/JS_MakeStringImmutable">JS_MakeStringImmutable</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_UndependString" title="ja/SpiderMonkey/JSAPI_Reference/JS_UndependString">JS_UndependString</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CStringsAreUTF8" title="ja/JS_CStringsAreUTF8">JS_CStringsAreUTF8</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CStringsAreUTF8" title="ja/JS_SetCStringsAreUTF8">JS_SetCStringsAreUTF8</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DecodeBytes" title="ja/JS_DecodeBytes">JS_DecodeBytes</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EncodeCharacters" title="ja/JS_EncodeCharacters">JS_EncodeCharacters</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI Reference/JS GetStringBytes">JS_EncodeString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI Reference/JS GetStringBytes">JS_EncodeStringToBuffer</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI Reference/JS GetStringBytes">JS_GetStringEncodingLength</a></li> -</ul> - -<p><em>Interning</em> 文字列は SpiderMonkey エンジンに、可能ならば既存の文字列オブジェクトを再使用するように伝えます。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InternString" title="ja/SpiderMonkey/JSAPI_Reference/JS_InternString">JS_InternString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InternString" title="ja/SpiderMonkey/JSAPI_Reference/JS_InternString">JS_InternUCString</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InternString" title="ja/SpiderMonkey/JSAPI_Reference/JS_InternString">JS_InternUCStringN</a></li> -</ul> - -<p><em>external strings</em> のための文字データはアプリケーションによって提供されるメモリに格納されます。アプリケーションはこれを、SpiderMonkey のヒープとアプリケーションのメモリの間で、<span style="border-bottom: 1px dashed green;" title="copying data back and forth">データを先や後へコピーする</span>ことを防止するために使用します。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddExternalStringFinalizer" title="ja/JS_AddExternalStringFinalizer">JS_AddExternalStringFinalizer</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_RemoveExternalStringFinalizer" title="ja/JS_RemoveExternalStringFinalizer">JS_RemoveExternalStringFinalizer</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetExternalStringGCType" title="ja/JS_GetExternalStringGCType">JS_GetExternalStringGCType</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewExternalString" title="ja/JS_NewExternalString">JS_NewExternalString</a></li> -</ul> - -<p><span id="Objects"></span></p> - -<h3 id="Objects" name="Objects">オブジェクト</h3> - -<ul> - <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSObject" title="ja/JSObject">JSObject</a></li> - <li><a href="/ja/JS_ConstructObject" title="ja/JS_ConstructObject">JS_ConstructObject</a></li> - <li><a href="/ja/JS_ConstructObject" title="ja/JS_ConstructObjectWithArguments">JS_ConstructObjectWithArguments</a></li> - <li><a href="/ja/JS_DefineObject" title="ja/JS_DefineObject">JS_DefineObject</a></li> - <li><a href="/ja/JS_NewObject" title="ja/JS_NewObject">JS_NewObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewGlobalObject" title="ja/SpiderMonkey/JSAPI Reference/JS NewGlobalObject">JS_NewGlobalObject</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewObject" title="ja/JS_NewObject">JS_NewObjectWithGivenProto</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_New" title="ja/SpiderMonkey/JSAPI Reference/JS New">JS_New</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GET_CLASS" title="ja/JS_GET_CLASS">JS_GET_CLASS</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GET_CLASS" title="ja/JS_GET_CLASS">JS_GetClass</a></li> - <li><a href="/ja/JS_GetClassObject" title="ja/JS_GetClassObject">JS_GetClassObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetConstructor" title="ja/JS_GetConstructor">JS_GetConstructor</a></li> - <li><a href="/ja/JS_GetGlobalForObject" title="ja/JS_GetGlobalForObject">JS_GetGlobalForObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetInstancePrivate" title="ja/JS_GetInstancePrivate">JS_GetInstancePrivate</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetParent" title="ja/JS_GetParent">JS_GetParent</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetParent" title="ja/JS_SetParent">JS_SetParent</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPrivate" title="ja/JS_GetPrivate">JS_GetPrivate</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrivate" title="ja/JS_SetPrivate">JS_SetPrivate</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPrototype" title="ja/JS_GetPrototype">JS_GetPrototype</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrototype" title="ja/JS_SetPrototype">JS_SetPrototype</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetReservedSlot" title="ja/JS_GetReservedSlot">JS_GetReservedSlot</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetReservedSlot" title="ja/JS_GetReservedSlot">JS_SetReservedSlot</a></li> - <li><a href="/ja/JS_HasInstance" title="ja/JS_HasInstance">JS_HasInstance</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InstanceOf" title="ja/JS_InstanceOf">JS_InstanceOf</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SealObject" title="ja/JS_SealObject">JS_SealObject</a></li> -</ul> - -<p><span id="Properties"></span></p> - -<h3 id="Properties" name="Properties">プロパティ</h3> - -<p>これらの関数は、直接スクリプトがオブジェクトのプロパティにアクセスする方法に相当します:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="ja/JS_GetProperty">JS_GetProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="ja/JS_GetProperty">JS_GetUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="ja/JS_GetProperty">JS_GetPropertyById</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="ja/JS_SetProperty">JS_SetProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="ja/JS_SetProperty">JS_SetUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="ja/JS_SetProperty">JS_SetPropertyById</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="ja/JS_HasProperty">JS_HasProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="ja/JS_HasProperty">JS_HasUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="ja/JS_HasProperty">JS_HasPropertyById</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty" title="ja/JS_DeleteProperty">JS_DeleteProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty" title="ja/JS_DeleteProperty">JS_DeletePropertyById</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty2" title="ja/JS_DeleteProperty2">JS_DeleteProperty2</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty2" title="ja/JS_DeleteProperty2">JS_DeleteUCProperty2</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty2" title="ja/JS_DeleteProperty2">JS_DeletePropertyById2</a></li> -</ul> - -<p>次の低レベルの関数は、JSAPI アプリケーションが、プロパティの実装方法の詳細へのアクセスを許可します。"Define" は "set" の低レベル版であり、追加の設定へのアクセスを提供し、setter を呼び出しません。同様に、"lookup" は "get" の低レベル版であり、追加のオプションを与え、getter を呼び出しません。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="ja/JS_AlreadyHasOwnElement">JS_AlreadyHasOwnElement</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="ja/JS_AlreadyHasOwnProperty">JS_AlreadyHasOwnProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="ja/JS_AlreadyHasOwnProperty">JS_AlreadyHasOwnUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="ja/JS_AlreadyHasOwnProperty">JS_AlreadyHasOwnPropertyById</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearScope" title="ja/JS_ClearScope">JS_ClearScope</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineProperties" title="ja/JS_DefineProperties">JS_DefineProperties</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="ja/JS_DefineProperty">JS_DefineProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="ja/JS_DefineProperty">JS_DefineUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="ja/JS_DefineProperty">JS_DefinePropertyById</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefinePropertyWithTinyId" title="ja/JS_DefinePropertyWithTinyId">JS_DefinePropertyWithTinyId</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefinePropertyWithTinyId" title="ja/JS_DefinePropertyWithTinyId">JS_DefineUCPropertyWithTinyId</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Enumerate" title="ja/JS_Enumerate">JS_Enumerate</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JS_GetPropertyAttributes</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JS_GetUCPropertyAttributes</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_ENUMERATE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_EXPORTED</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_GETTER</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_INDEX</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_PERMANENT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_READONLY</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_SETTER</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_SHARED</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttrsGetterAndSetter" title="ja/JS_GetPropertyAttrsGetterAndSetter">JS_GetPropertyAttrsGetterAndSetter</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttrsGetterAndSetter" title="ja/JS_GetPropertyAttrsGetterAndSetter">JS_GetUCPropertyAttrsGetterAndSetter</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttrsGetterAndSetter" title="ja/JS_GetPropertyAttrsGetterAndSetter">JS_GetPropertyAttrsGetterAndSetterById</a></li> - <li><a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyDescriptorById" title="ja/SpiderMonkey/JSAPI Reference/JS GetPropertyDescriptorById">JS_GetPropertyDescriptorById</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupPropertyById</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupPropertyWithFlags</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupPropertyWithFlagsById</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewPropertyIterator" title="ja/JS_NewPropertyIterator">JS_NewPropertyIterator</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NextProperty" title="ja/JS_NextProperty">JS_NextProperty</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPropertyAttributes" title="ja/JS_SetPropertyAttributes">JS_SetPropertyAttributes</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPropertyAttributes" title="ja/JS_SetPropertyAttributes">JS_SetUCPropertyAttributes</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AliasProperty" title="ja/JS_AliasProperty">JS_AliasProperty</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> -</ul> - -<p>次の関数は、<code>JS_GetProperty</code> および <code>JS_GetPropertyById</code> のように振る舞います。ただし、E4X XML オブジェクト上の操作は除きます。</p> - -<ul> - <li><a href="/ja/JS_GetMethod" title="ja/JS_GetMethod">JS_GetMethod</a>, <a href="/ja/JS_GetMethodById" title="ja/JS_GetMethodById">JS_GetMethodById</a></li> -</ul> - -<p>SpiderMonkey 拡張は lvalue(オブジェクトのプロパティへの参照) を返すネイティブ関数を許可します:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetCallReturnValue2" title="ja/JS_SetCallReturnValue2">JS_SetCallReturnValue2</a></li> -</ul> - -<p><code><a href="/ja/SpiderMonkey/JSAPI_Reference/jsid" title="ja/jsid">jsid</a></code> は <code>jsval</code> の一種です。ごく少数の API が、<code>jsval</code> の代わりに <code>jsid</code> をプロパティ名に使用します: <code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JS_CheckAccess</a></code> および <code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Enumerate" title="ja/JS_Enumerate">JS_Enumerate</a></code>, <code><a href="/ja/JS_GetMethodById" title="ja/JS_GetMethodById">JS_GetMethodById</a></code>, <code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NextProperty" title="ja/JS_NextProperty">JS_NextProperty</a></code>。</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IdToValue" title="ja/JS_IdToValue">JS_IdToValue</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToId" title="ja/JS_ValueToId">JS_ValueToId</a></li> - <li><a href="/ja/JS_GetObjectId" title="ja/JS_GetObjectId">JS_GetObjectId</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSIdArray" title="ja/JSIdArray">JSIdArray</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DestroyIdArray" title="ja/JS_DestroyIdArray">JS_DestroyIdArray</a></li> -</ul> - -<p><code>jsid</code> 定数:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_VOID" title="ja/JSID_VOID">JSID_VOID</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_EMPTY" title="ja/JSID_EMPTY">JSID_EMPTY</a></li> -</ul> - -<p><code>jsid</code> の型を調べる関数とマクロ:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_VOID" title="ja/JSID_IS_VOID">JSID_IS_VOID</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_INT" title="ja/JSID_IS_INT">JSID_IS_INT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_STRING" title="ja/JSID_IS_STRING">JSID_IS_STRING</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_OBJECT" title="ja/JSID_IS_OBJECT">JSID_IS_OBJECT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_GCTHING" title="ja/JSID_IS_GCTHING">JSID_IS_GCTHING</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_ZERO" title="ja/JSID_IS_ZERO">JSID_IS_ZERO</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_EMPTY" title="ja/JSID_IS_EMPTY">JSID_IS_EMPTY</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_DEFAULT_XML_NAMESPACE" title="ja/JSID_IS_DEFAULT_XML_NAMESPACE">JSID_IS_DEFAULT_XML_NAMESPACE</a></li> -</ul> - -<p><span id="Classes"></span></p> - -<h3 id="Classes" name="Classes">クラス</h3> - -<p>これらの API 機能は、C/C++ に実装された JavaScript からアクセス可能なカスタムクラス—オブジェクト型の定義に使用されます。</p> - -<ul> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass" title="ja/SpiderMonkey/JSAPI_Reference/JSClass">JSClass</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSExtendedClass" title="ja/SpiderMonkey/JSAPI_Reference/JSExtendedClass">JSExtendedClass</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps">JSObjectOps</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSXMLObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSXMLObjectOps">JSXMLObjectOps</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSFunctionSpec" title="ja/SpiderMonkey/JSAPI_Reference/JSFunctionSpec">JSFunctionSpec</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSProperty">JSProperty</a></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSPropertySpec" title="ja/SpiderMonkey/JSAPI_Reference/JSPropertySpec">JSPropertySpec</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InitClass" title="ja/SpiderMonkey/JSAPI_Reference/JS_InitClass">JS_InitClass</a></li> -</ul> - -<p>ネイティブプロパティとメソッドをクラスに追加:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSNative" title="ja/SpiderMonkey/JSAPI_Reference/JSNative">JSNative</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JSFastNative</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSFunctionSpec" title="ja/SpiderMonkey/JSAPI_Reference/JSFunctionSpec">JSFunctionSpec</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_FS" title="ja/JS_FS">JS_FS</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_FS" title="ja/JS_FN">JS_FN</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_FS" title="ja/JS_FS_END">JS_FS_END</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSPropertySpec" title="ja/SpiderMonkey/JSAPI_Reference/JSPropertySpec">JSPropertySpec</a></li> -</ul> - -<p><code>JSFastNative</code> メソッドはこれらのマクロを使用します: <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_CALLEE</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_THIS</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_THIS_OBJECT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_ARGV</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_RVAL</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_SET_RVAL</a></li> -</ul> - -<p><code>JSClass</code> の振る舞いとそのインスタンスは、コールバック関数を使用して多くの方法でカスタマイズすることができます。</p> - -<p><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass" title="ja/SpiderMonkey/JSAPI_Reference/JSClass">JSClass</a> メソッド型:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSPropertyOp" title="ja/SpiderMonkey/JSAPI_Reference/JSPropertyOp">JSPropertyOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSEnumerateOp" title="ja/SpiderMonkey/JSAPI_Reference/JSEnumerateOp">JSEnumerateOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.enumerate" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.enumerate">JSNewEnumerateOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.resolve" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.resolve">JSResolveOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSNewResolveOp</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_ASSIGNING</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_CLASSNAME</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_DECLARING</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_DETECTING</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_QUALIFIED</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defaultValue" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defaultValue">JSConvertOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.finalize" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.finalize">JSFinalizeOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.getObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.getObjectOps">JSGetObjectOps</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.checkAccess" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.checkAccess">JSCheckAccessOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.xdrObject" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.xdrObject">JSXDRObjectOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.hasInstance" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.hasInstance">JSHasInstanceOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.mark" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.mark">JSMarkOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSTraceOp" title="ja/SpiderMonkey/JSAPI_Reference/JSTraceOp">JSTraceOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.reserveSlots" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.reserveSlots">JSReserveSlotsOp</a></li> -</ul> - -<p><a href="/ja/SpiderMonkey/JSAPI_Reference/JSExtendedClass" title="ja/SpiderMonkey/JSAPI_Reference/JSExtendedClass">JSExtendedClass</a> メソッド型:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSIteratorOp" title="ja/SpiderMonkey/JSAPI_Reference/JSIteratorOp">JSIteratorOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSEqualityOp" title="ja/SpiderMonkey/JSAPI_Reference/JSEqualityOp">JSEqualityOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOp" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOp">JSObjectOp</a></li> -</ul> - -<p><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps">JSObjectOps</a> メソッド型:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.newObjectMap" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.newObjectMap">JSNewObjectMapOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.destroyObjectMap" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.destroyObjectMap">JSObjectMapOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.lookupProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.lookupProperty">JSLookupPropOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defineProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defineProperty">JSDefinePropOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getProperty">JSPropertyIdOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getAttributes" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getAttributes">JSAttributesOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defaultValue" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defaultValue">JSConvertOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.enumerate" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.enumerate">JSNewEnumerateOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.checkAccess" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.checkAccess">JSCheckAccessIdOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOp" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOp">JSObjectOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.dropProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.dropProperty">JSPropertyRefOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.xdrObject" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.xdrObject">JSXDRObjectOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.hasInstance" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.hasInstance">JSHasInstanceOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.setProto" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.setProto">JSSetObjectSlotOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSTraceOp" title="ja/SpiderMonkey/JSAPI_Reference/JSTraceOp">JSTraceOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.finalize" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.finalize">JSFinalizeOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getRequiredSlot" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getRequiredSlot">JSGetRequiredSlotOp</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getRequiredSlot" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getRequiredSlot">JSSetRequiredSlotOp</a></li> -</ul> - -<p><a href="/ja/SpiderMonkey/JSAPI_Reference/JSXMLObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSXMLObjectOps">JSXMLObjectOps</a> メソッド型:</p> - -<ul> - <li><a href="/ja/JSGetMethodOp" title="ja/JSGetMethodOp">JSGetMethodOp</a></li> - <li><a href="/ja/JSSetMethodOp" title="ja/JSSetMethodOp">JSSetMethodOp</a></li> - <li><a href="/ja/JSEnumerateValuesOp" title="ja/JSEnumerateValuesOp">JSEnumerateValuesOp</a></li> - <li><a href="/ja/JSEqualityOp" title="ja/JSEqualityOp">JSEqualityOp</a></li> - <li><a href="/ja/JSConcatenateOp" title="ja/JSConcatenateOp">JSConcatenateOp</a></li> -</ul> - -<p>これらの stub 関数はカスタム <code>JSClass</code> の作成時に使用されます:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_ConvertStub</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_EnumerateStub</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_FinalizeStub</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_PropertyStub</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_ResolveStub</a></li> -</ul> - -<p><code>JSClass</code> の振る舞いは、これらのフラグを使用してカスタマイズできます:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSClass.flags</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_CONSTUCT_PROTOTYPE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_GLOBAL_FLAGS</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_HAS_PRIVATE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_HAS_RESERVED_SLOTS</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_IS_EXTENDED</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_MARK_IS_TRACE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_NEW_ENUMERATE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_NEW_RESOLVE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_NEW_RESOLVE_GETS_START</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_PRIVATE_IS_NSISUPPORTS</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_SHARE_ALL_PROPERTIES</a></li> -</ul> - -<p><span id="Arrays"></span></p> - -<h3 id="Arrays" name="Arrays">配列</h3> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewArrayObject" title="ja/JS_NewArrayObject">JS_NewArrayObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsArrayObject" title="ja/JS_IsArrayObject">JS_IsArrayObject</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_HasArrayLength" title="ja/JS_HasArrayLength">JS_HasArrayLength</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetArrayLength" title="ja/JS_GetArrayLength">JS_GetArrayLength</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetArrayLength" title="ja/JS_SetArrayLength">JS_SetArrayLength</a></li> -</ul> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AliasElement" title="ja/JS_AliasElement">JS_AliasElement</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineElement" title="ja/JS_DefineElement">JS_DefineElement</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteElement" title="ja/JS_DeleteElement">JS_DeleteElement</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteElement2" title="ja/JS_DeleteElement2">JS_DeleteElement2</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetElement" title="ja/JS_GetElement">JS_GetElement</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupElement" title="ja/JS_LookupElement">JS_LookupElement</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetElement" title="ja/JS_SetElement">JS_SetElement</a></li> -</ul> - -<p><span id="Functions"></span></p> - -<h3 id="Functions" name="Functions">関数</h3> - -<p>関数またはオブジェクトのメソッドの呼び出し:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CallFunction" title="ja/JS_CallFunction">JS_CallFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="ja/JS_CallFunctionName">JS_CallFunctionName</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CallFunctionValue" title="ja/JS_CallFunctionValue">JS_CallFunctionValue</a></li> -</ul> - -<p>関数アクセサリ:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ObjectIsFunction" title="ja/JS_ObjectIsFunction">JS_ObjectIsFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionArity" title="ja/JS_GetFunctionArity">JS_GetFunctionArity</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionFlags" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionFlags">JS_GetFunctionFlags</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionId" title="ja/JS_GetFunctionId">JS_GetFunctionId</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionName" title="ja/JS_GetFunctionName">JS_GetFunctionName</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionObject" title="ja/JS_GetFunctionObject">JS_GetFunctionObject</a></li> -</ul> - -<p>関数の生成:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CloneFunctionObject" title="ja/JS_CloneFunctionObject">JS_CloneFunctionObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="ja/JS_DefineFunction">JS_DefineFunction</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="ja/JS_DefineFunction">JS_DefineUCFunction</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions" title="ja/JS_DefineFunctions">JS_DefineFunctions</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewFunction" title="ja/JS_NewFunction">JS_NewFunction</a></li> -</ul> - -<p><span id="RegExps"></span></p> - -<h3 id="RegExps" name="RegExps">正規表現</h3> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject">JS_NewRegExpObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject">JS_NewUCRegExpObject</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetRegExpInput" title="ja/SpiderMonkey/JSAPI_Reference/JS_SetRegExpInput">JS_SetRegExpInput</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearRegExpRoots" title="ja/SpiderMonkey/JSAPI_Reference/JS_ClearRegExpRoots">JS_ClearRegExpRoots</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearRegExpStatics" title="ja/SpiderMonkey/JSAPI_Reference/JS_ClearRegExpStatics">JS_ClearRegExpStatics</a></li> -</ul> - -<p><span id="Security"></span></p> - -<h3 id="Security" name="Security">セキュリティ</h3> - -<p><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1">SpiderMonkey 1.8.1</a> の新機能</span> セキュリティのコールバックは、ランタイムごと、またはコンテキストごとに設定できます。</p> - -<ul> - <li> - <ul> - <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSPrincipals" title="ja/JSPrincipals">JSPrincipals</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSPRINCIPALS_HOLD" title="ja/JSPRINCIPALS_HOLD">JSPRINCIPALS_HOLD</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSPRINCIPALS_HOLD" title="ja/JSPRINCIPALS_HOLD">JSPRINCIPALS_DROP</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetObjectPrincipalsFinder" title="ja/JS_SetObjectPrincipalsFinder">JS_SetObjectPrincipalsFinder</a> <span class="inlineIndicator standardNote">JSAPI 1.8 まで</span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrincipalsTranscoder" title="ja/JS_SetPrincipalsTranscoder">JS_SetPrincipalsTranscoder</a> <span class="inlineIndicator standardNote">JSAPI 1.8 まで</span></li> - </ul> - - <ul> - <li>enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSAccessMode</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_PROTO</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_PARENT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_IMPORT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_WATCH</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_READ</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_WRITE</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JS_CheckAccess</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.checkAccess" title="ja/JSObjectOps.checkAccess">JSObjectOps.checkAccess</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.checkAccess" title="ja/JSClass.checkAccess">JSClass.checkAccess</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetCheckObjectAccessCallback" title="ja/JS_SetCheckObjectAccessCallback">JS_SetCheckObjectAccessCallback</a> <span class="inlineIndicator standardNote">JSAPI 1.8 まで</span></li> - </ul> - - <ul> - <li><a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks" title="ja/SpiderMonkey/JSAPI Reference/JS GetSecurityCallbacks">JS_GetSecurityCallbacks</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks" title="ja/SpiderMonkey/JSAPI Reference/JS GetSecurityCallbacks">JS_SetContextSecurityCallbacks</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks" title="ja/SpiderMonkey/JSAPI Reference/JS GetSecurityCallbacks">JS_GetRuntimeSecurityCallbacks</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks">JS_SetRuntimeSecurityCallbacks</a></li> - </ul> - </li> -</ul> - -<p><span id="Threading"></span></p> - -<h3 id="Threading" name="Threading">スレッド</h3> - -<p>次の関数は SpiderMonkey のスレッドモデルをサポートしています。</p> - -<p><span class="inlineIndicator standardNote">JSAPI 1.7 まで</span> これらは <code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE" title="ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE">JS_THREADSAFE</a></code> ビルドでのみ利用可能です。</p> - -<p><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span> これらの関数はいつでも利用可能です。ただし、<code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code> 無しのビルドでは何もしません</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="ja/JS_BeginRequest">JS_BeginRequest</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="ja/JS_BeginRequest">JS_EndRequest</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_YieldRequest" title="ja/JS_YieldRequest">JS_YieldRequest</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="ja/JS_SuspendRequest">JS_SuspendRequest</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="ja/JS_SuspendRequest">JS_ResumeRequest</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetContextThread" title="ja/JS_GetContextThread">JS_GetContextThread</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearContextThread" title="ja/JS_ClearContextThread">JS_SetContextThread</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearContextThread" title="ja/JS_ClearContextThread">JS_ClearContextThread</a></li> -</ul> - -<p>次の関数はすべてのビルドに存在します。ただし、<code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE" title="ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE">JS_THREADSAFE</a></code> 無しのビルドでは何もしません:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LockRuntime" title="ja/SpiderMonkey/JSAPI_Reference/JS_LockRuntime">JS_LockRuntime</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_UnlockRuntime" title="ja/SpiderMonkey/JSAPI_Reference/JS_UnlockRuntime">JS_UnlockRuntime</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Lock" title="ja/JS_Lock">JS_Lock</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Unlock" title="ja/JS_Unlock">JS_Unlock</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> -</ul> - -<p><span id="Time"></span></p> - -<h3 id="Time" name="Time">時間</h3> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Now" title="ja/SpiderMonkey/JSAPI_Reference/JS_Now">JS_Now</a></li> -</ul> - -<p><span id="Callback_Types"></span></p> - -<h3 id="Callback_Types" name="Callback_Types">コールバック型</h3> - -<p>ネイティブ関数型:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSNative" title="ja/JSNative">JSNative</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/JSFastNative">JSFastNative</a></li> -</ul> - -<p>その他のコールバック型:</p> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddExternalStringFinalizer" title="ja/JS_AddExternalStringFinalizer">JSStringFinalizeOp</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddExternalStringFinalizer" title="ja/JS_AddExternalStringFinalizer">JS_AddExternalStringFinalizer</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_TRACER_INIT" title="ja/JS_TRACER_INIT">JSTraceCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_TRACER_INIT" title="ja/JS_TRACER_INIT">JS_TRACER_INIT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SET_TRACING_DETAILS" title="ja/JS_SET_TRACING_DETAILS">JSTraceNamePrinter</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SET_TRACING_DETAILS" title="ja/JS_SET_TRACING_DETAILS">JS_SET_TRACING_DETAILS</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetContextCallback" title="ja/JS_SetContextCallback">JSContextCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetContextCallback" title="ja/JS_SetContextCallback">JS_SetContextCallback</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGCCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JS_SetGCCallback</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetExtraGCRoots" title="ja/JS_SetExtraGCRoots">JSTraceDataOp</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetExtraGCRoots" title="ja/JS_SetExtraGCRoots">JS_SetExtraGCRoots</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetBranchCallback" title="ja/JS_SetBranchCallback">JSBranchCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetBranchCallback" title="ja/JS_SetBranchCallback">JS_SetBranchCallback</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetErrorReporter" title="ja/JS_SetErrorReporter">JSErrorReporter</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetErrorReporter" title="ja/JS_SetErrorReporter">JS_SetErrorReporter</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JSErrorCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorNumber</a> and friends</li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddArgumentFormatter" title="ja/JS_AddArgumentFormatter">JSArgumentFormatter</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddArgumentFormatter" title="ja/JS_AddArgumentFormatter">JS_AddArgumentFormatter</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrincipalsTranscoder" title="ja/JS_SetPrincipalsTranscoder">JSPrincipalsTranscoder</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrincipalsTranscoder" title="ja/JS_SetPrincipalsTranscoder">JS_SetPrincipalsTranscoder</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetObjectPrincipalsFinder" title="ja/JS_SetObjectPrincipalsFinder">JSObjectPrincipalsFinder</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetObjectPrincipalsFinder" title="ja/JS_SetObjectPrincipalsFinder">JS_SetObjectPrincipalsFinder</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MapGCRoots">JSGCRootMapFun</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MapGCRoots">JS_MapGCRoots</a></li> -</ul> - -<p>上記の<a href="#Classes">クラス</a>も参照してください。</p> - -<p><span id="Macros"></span></p> - -<h3 id="Macros" name="Macros">マクロ</h3> - -<ul> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DEFAULT_XML_NAMESPACE_ID" title="ja/JS_DEFAULT_XML_NAMESPACE_ID">JS_DEFAULT_XML_NAMESPACE_ID</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_BOUND_METHOD" title="ja/JSFUN_BOUND_METHOD">JSFUN_BOUND_METHOD</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_GETTER" title="ja/JSFUN_GETTER">JSFUN_GETTER</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_GLOBAL_PARENT" title="ja/JSFUN_GLOBAL_PARENT">JSFUN_GLOBAL_PARENT</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_HEAVYWEIGHT" title="ja/JSFUN_HEAVYWEIGHT">JSFUN_HEAVYWEIGHT</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_LAMBDA" title="ja/JSFUN_LAMBDA">JSFUN_LAMBDA</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_SETTER" title="ja/JSFUN_SETTER">JSFUN_SETTER</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/JSREG_GLOB">JSREG_GLOB</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/JSREG_FOLD">JSREG_FOLD</a></li> - <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/JSREG_MULTILINE">JSREG_MULTILINE</a></li> -</ul> - -<p><span id="C++_features"></span></p> - -<h3 id="C.2B.2B_features" name="C.2B.2B_features">C++ の機能</h3> - -<ul> - <li>class <a href="/ja/JSAutoRequest" title="ja/JSAutoRequest">JSAutoRequest</a></li> - <li>class <a href="/ja/JSAutoLocalRootScope" title="ja/JSAutoLocalRootScope">JSAutoLocalRootScope</a></li> - <li>class <a href="/ja/JS::PerfMeasurement" title="ja/JS::PerfMeasurement">JS::PerfMeasurement</a> (in <code>jsperf.h</code>)</li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_compilefile/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_compilefile/index.html deleted file mode 100644 index a6d409dc85..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_compilefile/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: JS CompileFile -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_CompileFile -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_CompileUTF8File ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_CompileFile</code></div> - -<p></p> - -<p>外部ファイルに含まれるスクリプトをコンパイルします。 <span class="comment">Compile a script stored in an external file.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval"><a href="/ja/JSScript" title="ja/JSScript">JSScript</a> * <strong>JS_CompileFile</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx, <a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *obj, - const char *filename); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *</code></td> - <td>スクリプトをコンパイルするときのコンテキスト {{ Jsapi-requires-request() }}</td> - </tr> - <tr> - <td><code>obj</code></td> - <td><code>JSObject *</code></td> - <td>スクリプトと関連付けるオブジェクト<span class="comment">Object with which the script is associated.</span></td> - </tr> - <tr> - <td><code>filename</code></td> - <td><code>const char *</code></td> - <td>スクリプトを含むファイルの名前<span class="comment">Name of file containing the script to compile.</span></td> - </tr> - </tbody> -</table> - -<h2 id=".E8.A7.A3.E8.AA.AC" name=".E8.A7.A3.E8.AA.AC">解説</h2> - -<p><code>JS_CompileFile</code>は、JavaScriptエンジンで実行するために外部ファイルのスクリプトをコンパイルする関数です。 <span class="comment"><code>JS_CompileFile</code> compiles the text of script in an external file location for execution by the JS engine.</span></p> - -<p><code>filename</code>は、コンパイル対象のスクリプトを含んでいるファイルの名前を引数に取ります。 <span class="comment"><code>filename</code> is the name of the file containing the script to compile.</span></p> - -<p>コンパイルが成功したとき、<code>JS_CompileFile</code>はコンパイル済みのスクリプトへのポインタを返値とします。失敗時には<code>NULL</code>を返します。 <span class="comment">On success, <code>JS_CompileFile</code> returns a pointer to the compiled script. Otherwise it returns <code>NULL</code>.</span></p> - -<p>ファイル名でスクリプトを指定するのではなく、文字列の引数として関数に渡す場合には、<code><a href="/ja/JS_CompileScript" title="ja/JS_CompileScript">JS_CompileScript</a></code>を使ってください。 <span class="comment">To pass a script as an argument to a function rather than having to specify a file location, use <code><a href="/ja/JS_CompileScript">JS_CompileScript</a></code> instead.</span></p> - -<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2> - -<p>{{ LXRSearch("ident", "i", "JS_CompileFile") }}</p> - -<p><a href="/ja/JS_CompileScript" title="ja/JS_CompileScript">JS_CompileScript</a>, <a href="/ja/JS_DecompileScript" title="ja/JS_DecompileScript">JS_DecompileScript</a>, <a href="/ja/JS_DestroyScript" title="ja/JS_DestroyScript">JS_DestroyScript</a>, <a href="/ja/JS_EvaluateScript" title="ja/JS_EvaluateScript">JS_EvaluateScript</a>, <a href="/ja/JS_ExecuteScript" title="ja/JS_ExecuteScript">JS_ExecuteScript</a></p> - -<p>{{ languages( { "en": "en/JS_CompileFile" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_constructobject/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_constructobject/index.html deleted file mode 100644 index ae7b116ff2..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_constructobject/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: JS ConstructObject -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ConstructObject -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ConstructObject ---- -<p></p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_ConstructObject</code></div> -<p></p> - -<p>新たにJavaScriptオブジェクトを生成し、コンストラクタを呼び出します。 <span class="comment">Create a new JavaScript object and invoke its constructor.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval"><a href="/ja/JSObject" title="ja/JSObject">JSObject</a> * <strong>JS_ConstructObject</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx, <a href="/ja/JSClass" title="ja/JSClass">JSClass</a> *clasp, - <a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *proto, <a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *parent); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *</code></td> - <td>新たなオブジェクトを配置するコンテキスト<span class="comment">The context in which to create the new object. {{ jsapi-requires-request }}</td> </tr> <tr> <td><code>clasp</code></td> <td><code><a href="/ja/JSClass">JSClass</a> *</code></td> <td>オブジェクト生成時に利用するクラスへのポインタ。<code>NULL</code>を指定したときは、一般的なJavaScript <code>Object</code>が生成されます。<!--Pointer to the class to use for the new object. If this is <code>NULL</code>, an ordinary JavaScript <code>Object</code> is created.</span></td> - </tr> - <tr> - <td><code>proto</code></td> - <td><code><a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *</code></td> - <td>クラスとなるプロトタイプオブジェクトへのポインタ<span class="comment">Pointer to the prototype object to use for the new class.</span></td> - </tr> - <tr> - <td><code>parent</code></td> - <td><code><a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *</code></td> - <td>新たなオブジェクトの __parent__ プロパティに指定するオブジェクトへのポインタ<span class="comment">Pointer to which to set the new object's __parent__ property.</span></td> - </tr> - </tbody> -</table> - -<h2 id=".E8.A7.A3.E8.AA.AC" name=".E8.A7.A3.E8.AA.AC">解説</h2> - -<p><code>JS_ConstructObject</code>は、与えられたクラス、プロトタイプ、親オブジェクト、コンストラクタ関数をもとに新たなオブジェクトのインスタンスを生成する関数です。<code>cx</code>には、新たなオブジェクトを配置するランタイムと結び付けられたコンテキストへのポインタを指定します。<code>clasp</code>には、ファイナライズ処理などの内部関数が定義された既存クラスへのポインタを指定します。<code>proto</code>は、新たなオブジェクトのプロトタイプとなるオブジェクトへのポインタを指定する引数です。 <span class="comment"><code>JS_ConstructObject</code> instantiates a new object based on a specified class, prototype, and parent object, and then invokes its constructor function. <code>cx</code> is a pointer to a context associated with the runtime in which to establish the new object. <code>clasp</code> is a pointer to an existing class to use for internal methods, such as finalize. <code>proto</code> is an optional pointer to the prototype object with which to associate the new object.</span></p> - -<p>自分自身をプロトタイプオブジェクトにするには、<code>proto</code>に<code>NULL</code>を指定してください。このとき、<code>clasp</code>がプロトタイプを定義している場合には、<code>JS_ConstructObject</code>は新たなオブジェクトのプロトタイプにそれを用います。定義していない場合は、空オブジェクトスタブをプロトタイプとします。 <span class="comment">Set <code>proto</code> to <code>NULL</code> to force JS to assign a prototype object for you. In this case, <code>JS_ConstructObject</code> attempts to assign the new object the prototype object belonging to <code>clasp</code>, if one is defined there. Otherwise, it creates an empty object stub for the prototype.</span></p> - -<p><code>parent</code>には、新規オブジェクトの親プロパティとなるオブジェクトへのポインタを指定します。この引数はオプションであり、<code>parent</code>に<code>NULL</code>を指定することで親プロパティを持たないオブジェクトになります。 <span class="comment"><code>parent</code> is an optional pointer to an existing object to which to set the new object's parent object property. You can set <code>parent</code> to <code>NULL</code> if you do not want to set the parent property.</span></p> - -<p><code>JS_ConstructObject</code>が成功したとき、新たに生成されたオブジェクトへのポインタをその返値とします。失敗したときは<code>NULL</code>を返します。 <span class="comment">On success, <code>JS_ConstructObject</code> returns a pointer to the newly instantiated object. Otherwise it returns <code>NULL</code>.</span></p> - -<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2> - -<p>{{ LXRSearch("ident", "i", "JS_ConstructObject") }}</p> - -<p><a href="/ja/JS_DefineObject" title="ja/JS_DefineObject">JS_DefineObject</a>, <a href="/ja/JS_GetFunctionObject" title="ja/JS_GetFunctionObject">JS_GetFunctionObject</a>, <a href="/ja/JS_NewArrayObject" title="ja/JS_NewArrayObject">JS_NewArrayObject</a>, <a href="/ja/JS_NewObject" title="ja/JS_NewObject">JS_NewObject</a>, <a href="/ja/JS_ValueToObject" title="ja/JS_ValueToObject">JS_ValueToObject</a></p> - -<p>{{ languages( { "en": "en/JS_ConstructObject" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_defineobject/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_defineobject/index.html deleted file mode 100644 index 782201ccc5..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_defineobject/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: JS_DefineObject -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DefineObject -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DefineObject ---- -<p> -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_NewRuntime</code></div> -<p></p> - -<p>あるオブジェクトのプロパティとなるオブジェクトを生成する関数です。 <span class="comment">Create an object that is a property of another object.</span> {{ 英語版章題("Syntax") }}</p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval">JSObject * JS_DefineObject(JSContext *cx, JSObject *obj, - const char *name, JSClass *clasp, JSObject *proto, - uintN flags); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code>JSContext *</code></td> - <td>エラー報告に用いるランタイム環境から派生したコンテキストへのポインタ<span class="comment">Pointer to a JS context from which to derive runtime information for error reporting.</span> {{ Jsapi-requires-request() }}</td> - </tr> - <tr> - <td><code>obj</code></td> - <td><code>JSObject *</code></td> - <td>生成したオブジェクトをプロパティとして持つオブジェクトへのポインタ<span class="comment">Object to which this new object belongs as a property.</span></td> - </tr> - <tr> - <td><code>name</code></td> - <td><code>const char *</code></td> - <td><code>obj</code>でのプロパティ名<span class="comment">Name of the property that encapsulates the new object in <code>obj</code>.</span></td> - </tr> - <tr> - <td><code>clasp</code></td> - <td><code>JSClass *</code></td> - <td>オブジェクト生成に用いるクラス<span class="comment">Class to use for the new object.</span></td> - </tr> - <tr> - <td><code>proto</code></td> - <td><code>JSObject *</code></td> - <td>オブジェクト生成に用いるプロトタイプ<span class="comment">Prototype object to use for the new object.</span></td> - </tr> - <tr> - <td><code>flags</code></td> - <td><code>uintN</code></td> - <td>生成したオブジェクトの属性を指定するフラグ<span class="comment">Property flags for the new object.</span></td> - </tr> - </tbody> -</table> - -<p>{{ 英語版章題("Description") }}</p> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><code>JS_DefineObject</code>は、オブジェクトのインスタンスを生成し、それを引数<code>obj</code>で指定した既存オブジェクトのプロパティとして設定する関数です。引数<code>name</code>で、<code>obj</code>でのプロパティ名を指定し、<code>flags</code>でそのプロパティの属性を指定します。以下の表で設定可能な<code>flags</code>の値を示します。これらの値は単一、あるいは複数の値の論理和として引数に与えることができます。 <span class="comment"><code>JS_DefineObject</code> instantiates and names a new object for an existing object, <code>obj</code>. <code>name</code> is the property name to assign to <code>obj</code> to hold the new object, and <code>flags</code> contains the property flags to set for the newly created property. The following table lists possible values you can pass in <code>flags</code>, either singly, or <code>OR</code>'d together:</span></p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Flag</th> - <th>Purpose</th> - </tr> - <tr> - <td><code>JSPROP_ENUMERATE</code></td> - <td><code>for</code>と<code>in</code>ループを使ったアクセス(<a href="ja/Core_JavaScript_1.5_Guide/Object_Manipulation_Statements">Core JavaScript 1.5 Guide:Object Manipulation Statements</a>)を可能にします。<span class="comment">Property is visible to <code>for</code> and <code>in</code> loops.</span></td> - </tr> - <tr> - <td><code>JSPROP_READONLY</code></td> - <td>プロパティの値を読み取り専用にします。<span class="comment">Property is read only.</span></td> - </tr> - <tr> - <td><code>JSPROP_PERMANENT</code></td> - <td>プロパティの削除を不可能にします。<span class="comment">Property cannot be deleted.</span></td> - </tr> - <tr> - <td><code>JSPROP_EXPORTED</code></td> - <td>Property can be imported by other objects.</td> - </tr> - <tr> - <td><code>JSPROP_INDEX</code></td> - <td>Property is actually an index into an array of properties, and is cast to a const <code>char *</code>.</td> - </tr> - </tbody> -</table> - -<p>引数<code>clasp</code>はオブジェクトの生成時に用いる基底クラスへのポインタ、引数<code>proto</code>はプロトタイプへのポインタをそれぞれとります。<code>proto</code>に<code>NULL</code>を指定した場合、JavaScriptは自分自身をプロトタイプとします。引数<code>obj</code>はオブジェクトの親オブジェクトになります。 <span class="comment"><code>clasp</code> is a pointer to the base class to use when creating the new object, and <code>proto</code> is an pointer to the prototype upon which to base the new object. If you set <code>proto</code> to <code>NULL</code>, JS sets the prototype object for you. The parent object for the new object is set to <code>obj</code>.</span></p> - -<p><code>JS_DefineObject</code>が成功したとき、返値は新たに生成したプロパティオブジェクトへのポインタになります。もしすでにプロパティが設定されていた場合、オブジェクトは生成されず、返り値は<code>NULL</code>になります。 <span class="comment"><code>JS_DefineObject</code> returns a pointer to the newly created property object if successful. If the property already exists, or cannot be created, <code>JS_DefineObject</code> returns <code>NULL</code>.</span> {{ 英語版章題("See Also") }}</p> - -<h3 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h3> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td>Groups</td> - <td><a href="ja/JSAPI_Reference#Functions">Functions</a></td> - </tr> - <tr> - <td>Documents</td> - <td>{{ LXRSearch("ident", "i", "JS_DefineObject", "LXR ID Search") }}</td> - </tr> - <tr> - <td>Entries</td> - <td> - <p><a href="ja/JSClass">JSClass</a>, <a href="ja/JS_DefineConstDoubles">JS_DefineConstDoubles</a>, <a href="ja/JS_DefineElement">JS_DefineElement</a>, <a href="ja/JS_DefineFunction">JS_DefineFunction</a>, <a href="ja/JS_DefineFunctions">JS_DefineFunctions</a>, <a href="ja/JS_DefineProperties">JS_DefineProperties</a>, <a href="ja/JS_DefineProperty">JS_DefineProperty</a>, <a href="ja/JS_DefinePropertyWithTinyId">JS_DefinePropertyWithTinyId</a>, <a href="ja/JS_NewObject">JS_NewObject</a>, <a href="ja/JS_ValueToObject">JS_ValueToObject</a></p> - </td> - </tr> - </tbody> -</table> - -<div class="noinclude"> </div> - -<p>{{ languages( { "en": "en/JS_DefineObject" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroycontext/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroycontext/index.html deleted file mode 100644 index be77b35a40..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroycontext/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: JS DestroyContext -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyContext -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyContext ---- -<p> - - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_DestroyContext</code></div> - - -<p></p> - -<p><code>JSContext</code>を解放します。</p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval">void <strong>JS_DestroyContext</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx); - -void <strong>JS_DestroyContextNoGC</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx); - -void <strong>JS_DestroyContextMaybeGC</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *</code></td> - <td>解放するコンテキスト</td> - </tr> - </tbody> -</table> - -<h2 id=".E8.A7.A3.E8.AA.AC" name=".E8.A7.A3.E8.AA.AC">解説</h2> - -<p>これらの関数はコンテキスト<code>cx</code>を解放します。それに加え、<code>JS_DestroyContext</code>は実行し、<code>cx</code>の<a href="/ja/JS_GetGlobalObject" title="ja/JS_GetGlobalObject">グローバルオブジェクト</a>が利用したメモリを回収するためにガベージコレクションを実行します。<code>JS_DestroyContextNoGC</code>はガベージコレクションを実行しません。<code>JS_DestroyContextMaybeGC</code>では、JavaScriptエンジンが十分なメモリ領域を解放できる可能性を判断し、ガベージコレクションを実行するか否かを判断します。 <span class="comment">These functions destroy a context, <code>cx</code>. <code>JS_DestroyContext</code> additionally performs garbage collection to reclaim any memory that was being used by <code>cx</code>'s <a href="/ja/JS_GetGlobalObject">global object</a>. <code>JS_DestroyContextNoGC</code> does not perform garbage collection. <code>JS_DestroyContextMaybeGC</code> may or may not perform garbage collection; the engine makes an educated guess as to whether enough memory would be reclaimed to justify the work.</span></p> - -<p><code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を有効にしたビルドでは、<code>cx</code>のrequest内でこの関数を呼ばないでください。</p> - -<p><code><a href="/ja/JS_SetContextCallback" title="ja/JS_SetContextCallback">JS_SetContextCallback</a></code>が以前に実行された場合は、そこで設定したコールバック関数が実行されます。 <span class="comment">In a <code><a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a></code> build, the caller must '''not''' be in a request on <code>cx</code>. If <code><a href="/ja/JS_SetContextCallback">JS_SetContextCallback</a></code> has been called, this calls the callback.</span></p> - -<p>{{ LXRSearch("ident", "i", "JS_DestroyContext") }}</p> - -<p>{{ languages( { "en": "en/JS_DestroyContext" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroyruntime/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroyruntime/index.html deleted file mode 100644 index d65b41c6d6..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroyruntime/index.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: JS DestroyRuntime -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyRuntime -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyRuntime ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_DestroyRuntime</code></div> - -<p></p> - -<p>JavaScriptランタイム環境を解放します。 <span class="comment">Frees a JavaScript runtime.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval">void <strong>JS_DestroyRuntime</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> *rt); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>rt</code></td> - <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> *</code></td> - <td>解放するランタイム<span class="comment">The runtime to destroy.</span></td> - </tr> - </tbody> -</table> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><code>JS_DestroyRuntime</code>は、JavaScriptランタイム環境<code>rt</code>を解放する関数です。JSAPIの利用を終えた後は必ず<code>JS_DestroyRuntime</code>を呼び出してください。<code>JS_DestroyRuntime</code>を呼ぶことで、ガベージコレクションおよび<code><a href="/ja/JS_NewRuntime" title="ja/JS_NewRuntime">JS_NewRuntime</a></code>によって確保されたメモリ領域の解放が行われます。 <span class="comment"><code>JS_DestroyRuntime</code> frees the specified the JavaScript runtime environment, <code>rt</code>. Call <code>JS_DestroyRuntime</code> after completing all other JS API calls. <code>JS_DestroyRuntime</code> garbage collects and frees the memory previously allocated by <code><a href="/ja/JS_NewRuntime">JS_NewRuntime</a></code>.</span></p> - -<p>{{ LXRSearch("ident", "i", "JS_DestroyRuntime") }}</p> - -<p>{{ languages( { "en": "en/JS_DestroyRuntime" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_dumpheap/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_dumpheap/index.html deleted file mode 100644 index 4a9b9b3dba..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_dumpheap/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: JS_DumpHeap -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DumpHeap -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DumpHeap ---- -<div>{{SpiderMonkeySidebar("JSAPI")}}</div> - -<p>{{ obsolete_header("jsapi38") }}</p> - -<p>{{ Jsapi_minversion_header("1.8") }}</p> - -<div class="summary"><code>DEBUG</code> のみ。ヒープに割り当てられたもののオブジェクトグラフをダンプします。</div> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="brush: cpp">bool -JS_DumpHeap(JSRuntime *rt, FILE *fp, void* startThing, JSGCTraceKind kind, - void *thingToFind, size_t maxDepth, void *thingToIgnore); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td>{{jsapixref("JSRuntime", "JSContext *")}}</td> - <td>Pointer to a JS context. Every <code>JSContext</code> is permanently associated with a <code>JSRuntime</code>; each <code>JSRuntime</code> contains a GC heap.</td> - </tr> - <tr> - <td><code>fp</code></td> - <td><code>FILE *</code></td> - <td>File for the dump output.</td> - </tr> - <tr> - <td><code>startThing</code></td> - <td><code>void *</code></td> - <td><code>NULL</code> or a pointer to a GC thing (use {{jsapixref("JS::Value", "JS::Value::toGCThing()")}} to obtain a pointer to pass here). When null, dump all things reachable from the runtime roots. When non-null, dump only things reachable from the object indicated.</td> - </tr> - <tr> - <td><code>startKind</code></td> - <td><code>JSGCTraceKind</code></td> - <td>Trace kind of <code>startThing</code>, if <code>startThing</code> is not null. Must be <code>JSTRACE_OBJECT</code> when <code>startThing</code> is null.</td> - </tr> - <tr> - <td><code>thingToFind</code></td> - <td><code>void *</code></td> - <td><code>NULL</code> or a pointer to a GC thing. If this is non-null, JS_DumpHeap only dumps paths in the object graph leading to the specified thing.</td> - </tr> - <tr> - <td><code>maxDepth</code></td> - <td><code>size_t</code></td> - <td>The upper bound on the number of edges to descend from the graph roots.</td> - </tr> - <tr> - <td><code>thingToIgnore</code></td> - <td><code>void *</code></td> - <td><code>NULL</code> or a pointer to a GC thing that will be ignored during graph traversal.</td> - </tr> - </tbody> -</table> - -<pre class="brush: cpp">enum JSGCTraceKind -{ - // These trace kinds have a publicly exposed, although opaque, C++ type. - // Note: The order here is determined by our Value packing. Other users - // should sort alphabetically, for consistency. - JSTRACE_OBJECT = 0x00, - JSTRACE_STRING = 0x01, - JSTRACE_SYMBOL = 0x02, - JSTRACE_SCRIPT = 0x03, - - // Shape details are exposed through JS_TraceShapeCycleCollectorChildren. - JSTRACE_SHAPE = 0x04, - - // The kind associated with a nullptr. - JSTRACE_NULL = 0x06, - - // A kind that indicates the real kind should be looked up in the arena. - JSTRACE_OUTOFLINE = 0x07, - - // The following kinds do not have an exposed C++ idiom. - JSTRACE_BASE_SHAPE = 0x0F, - JSTRACE_JITCODE = 0x1F, - JSTRACE_LAZY_SCRIPT = 0x2F, - JSTRACE_TYPE_OBJECT = 0x3F, - - JSTRACE_LAST = JSTRACE_TYPE_OBJECT -}; -</pre> - -<h2 id="Description" name="Description">Description</h2> - -<p>See {{ Bug(378261) }} for detail.</p> - -<p>When tracing a thing, the GC needs to know about the layout of the object it is looking at. There are a fixed number of different layouts that the GC knows about. The "trace kind" is a static map which tells which layout a GC thing has.</p> - -<p>Although this map is public, the details are completely hidden. Not all of the matching C++ types are exposed, and those that are, are opaque.</p> - -<p>See {{jsapixref("JS::Value", "JS::Value::gcKind()")}} and {{jsapixref("JSTraceCallback")}} in <codde>Tracer.h</codde> for more details.</p> - -<h2 id="See_Also" name="See_Also">See Also</h2> - -<ul> - <li>{{bug(378261)}}</li> - <li>{{bug(1122842)}}</li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_evaluatescript/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_evaluatescript/index.html deleted file mode 100644 index a58d781ab4..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_evaluatescript/index.html +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: JS EvaluateScript -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_EvaluateScript -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_EvaluateScript ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_EvaluateScript</code></div> - - -<p></p> - -<p>スクリプトのコンパイルおよび実行を行います。 <span class="comment">Compile and execute a script.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval"><a href="ja/JSBool">JSBool</a> <strong>JS_EvaluateScript</strong>(<a href="ja/JSContext">JSContext</a> *cx, <a href="ja/JSObject">JSObject</a> *obj, - const char *src, <a href="ja/UintN">uintN</a> length, const char *filename, - <a href="ja/UintN">uintN</a> lineno, <a href="ja/Jsval">jsval</a> *rval); - -<a href="ja/JSBool">JSBool</a> <strong>JS_EvaluateUCScript</strong>(<a href="ja/JSContext">JSContext</a> *cx, <a href="ja/JSObject">JSObject</a> *obj, - const <a href="ja/Jschar">jschar</a> *src, <a href="ja/UintN">uintN</a> length, const char *filename, - <a href="ja/UintN">uintN</a> lineno, <a href="ja/Jsval">jsval</a> *rval); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code><a href="ja/JSContext">JSContext</a> *</code></td> - <td>スクリプトを実行するコンテキスト<span class="comment">The context in which to run the script.</span> {{ Jsapi-requires-request() }}</td> - </tr> - <tr> - <td><code>obj</code></td> - <td><code><a href="ja/JSObject">JSObject</a> *</code></td> - <td>スクリプトと関連付けるオブジェクト<span class="comment">Object with which the script is associated.</span></td> - </tr> - <tr> - <td><code>src</code></td> - <td><code>const char *</code><em>or</em> <code>const <a href="ja/Jschar">jschar</a> *</code></td> - <td>コンパイル・実行対象となるスクリプト文字列<span class="comment">String containing the script to compile and execute.</span></td> - </tr> - <tr> - <td><code>length</code></td> - <td><code>size_t</code></td> - <td><code>src</code>の文字列長<span class="comment">The length of <code>src</code>, in characters.</span></td> - </tr> - <tr> - <td><code>filename</code></td> - <td><code>const char *</code></td> - <td>エラーメッセージ出力に利用されるスクリプトのファイル名またはそのURLを示す文字列。<span class="comment">Name of file or URL containing the script. Used to report filename or URL in error messages.</span></td> - </tr> - <tr> - <td><code>lineno</code></td> - <td><code><a href="ja/UintN">uintN</a></code></td> - <td>エラー発生時に出力される行数<span class="comment">Line number. Used to report the offending line in the file or URL if an error occurs.</span></td> - </tr> - <tr> - <td><code>rval</code></td> - <td><code><a href="ja/Jsval">jsval</a> *</code></td> - <td>実行結果の出力先。実行に成功したとき、<code>*rval</code>にはスクリプトの最終行の実行結果の値が格納されます。<span class="comment">Out parameter. On success, <code>*rval</code> receives the value of the last-executed expression statement processed in the script.</span></td> - </tr> - </tbody> -</table> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><code>JS_EvaluateScript</code>は、オブジェクト<code>obj</code>に結合する形でスクリプトをコンパイル・実行する関数です。実行が成功したとき、<code>rval</code>にスクリプトの最終行の実行結果の値へのポインタが格納されています。この関数のUnicode版として、<code>JS_EvaluateUCScript</code>が用意されています。 <span class="comment"><code>JS_EvaluateScript</code> compiles and executes a script associated with a JS object, <code>obj</code>. On successful completion, <code>rval</code> is a pointer to a variable that holds the value from the last executed expression statement processed in the script. <code>JS_EvaluateUCScript</code> is the Unicode version of the function.</span></p> - -<p><code>src</code>はスクリプト文字列、<code>length</code>はその文字列の長さをそれぞれ引数として取ります。 <span class="comment"><code>src</code> is the string containing the text of the script. <code>length</code> indicates the size of the text version of the script in characters.</span></p> - -<p><code>filename</code>はスクリプトの位置を示すファイル名またはURLを引数として取ります。ここで指定した情報は、コンパイルエラーが発生したときのエラーメッセージに利用されます。<code>lineno</code>も同様にエラーメッセージとして出力される行番号として利用されます。 <span class="comment"><code>filename</code> is the name of the file (or URL) containing the script. This information is used in messages if an error occurs during compilation. Similarly, <code>lineno</code> is used to report the line number of the script or file where an error occurred during compilation.</span></p> - -<p>スクリプトのコンパイルと実行が成功したとき、<code>JS_EvaluateScript</code>および<code>JS_EvaluateUCScript</code>は<code>JS_TRUE</code>を、失敗したときは<code>JS_FALSE</code>をそれぞれ返します。コンパイル・実行に失敗したとき、<code>*rval</code>の値は未定義とみなす必要があります。 <span class="comment">If a script compiles and executes successfully, <code>JS_EvaluateScript</code> or <code>JS_EvaluateUCScript</code> returns <code>JS_TRUE</code>. Otherwise it returns <code>JS_FALSE</code>. On failure, your application should assume that <code>*rval</code> is undefined.</span></p> - -<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2> - -<p>{{ LXRSearch("ident", "i", "JS_EvaluateScript") }}<br> - {{ LXRSearch("ident", "i", "JS_EvaluateUCScript") }}</p> - -<p><a href="ja/JS_CompileFile">JS_CompileFile</a>, <a href="ja/JS_CompileScript">JS_CompileScript</a>, <a href="ja/JS_DecompileScript">JS_DecompileScript</a>, <a href="ja/JS_DestroyScript">JS_DestroyScript</a>, <a href="ja/JS_EvaluateScriptForPrincipals">JS_EvaluateScriptForPrincipals</a>, <a href="ja/JS_ExecuteScript">JS_ExecuteScript</a></p> - -<p>{{ languages( { "en": "en/JS_EvaluateScript" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getgcparameter/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getgcparameter/index.html deleted file mode 100644 index 1bfa969e7c..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getgcparameter/index.html +++ /dev/null @@ -1,323 +0,0 @@ ---- -title: JS_GetGCParameter -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetGCParameter -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetGCParameter ---- -<div>{{SpiderMonkeySidebar("JSAPI")}}</div> - -<div class="summary"> -<p>ガベージコレクションに関連するパフォーマンスパラメータを調整します。</p> -</div> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="brush: cpp">uint32_t -JS_GetGCParameter(JSRuntime *rt, JSGCParamKey key); - -void -JS_SetGCParameter(JSRuntime *rt, JSGCParamKey key, uint32_t value); - -uint32_t -JS_GetGCParameterForThread(JSContext *cx, JSGCParamKey key); // Added in SpiderMonkeySidebar 17 - -void -JS_SetGCParameterForThread(JSContext *cx, JSGCParamKey key, uint32_t value); // Added in SpiderMonkeySidebar 17 -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>rt</code></td> - <td>{{jsapixref("JSRuntime", "JSRuntime *")}}</td> - <td>The runtime to configure.</td> - </tr> - <tr> - <td><code>cx</code></td> - <td>{{jsapixref("JSRuntime", "JSContext *")}}</td> - <td>The context to configure. {{ Jsapi-requires-request() }}</td> - </tr> - <tr> - <td><code>key</code></td> - <td><code>JSGCParamKey</code></td> - <td>Specifies which garbage collection parameter to get or set.</td> - </tr> - <tr> - <td><code>value</code></td> - <td><code>uint32_t</code></td> - <td><em>(<code>JS_SetGCParameter</code> only)</em> The value to assign to the parameter.</td> - </tr> - </tbody> -</table> - -<pre class="brush: cpp">typedef enum JSGCParamKey { - JSGC_MAX_BYTES, - JSGC_MAX_MALLOC_BYTES, - JSGC_MAX_NURSERY_BYTES, - JSGC_BYTES, - JSGC_NUMBER, - JSGC_MODE, - JSGC_UNUSED_CHUNKS, - JSGC_TOTAL_CHUNKS, - JSGC_SLICE_TIME_BUDGET, - JSGC_MARK_STACK_LIMIT, - JSGC_HIGH_FREQUENCY_TIME_LIMIT, - JSGC_HIGH_FREQUENCY_LOW_LIMIT, - JSGC_HIGH_FREQUENCY_HIGH_LIMIT, - JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MAX, - JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MIN, - JSGC_LOW_FREQUENCY_HEAP_GROWTH, - JSGC_DYNAMIC_HEAP_GROWTH, - JSGC_DYNAMIC_MARK_SLICE, - JSGC_ALLOCATION_THRESHOLD, - JSGC_MIN_EMPTY_CHUNK_COUNT, - JSGC_MAX_EMPTY_CHUNK_COUNT, - JSGC_COMPACTION_ENABLED, - JSGC_ALLOCATION_THRESHOLD_FACTOR, - JSGC_ALLOCATION_THRESHOLD_FACTOR_AVOID_INTERRUPT, - JSGC_NURSERY_FREE_THRESHOLD_FOR_IDLE_COLLECTION, - JSGC_PRETENURE_THRESHOLD, - JSGC_PRETENURE_GROUP_THRESHOLD, - JSGC_NURSERY_FREE_THRESHOLD_FOR_IDLE_COLLECTION_PERCENT, - JSGC_MIN_NURSERY_BYTES, - JSGC_MIN_LAST_DITCH_GC_PERIOD, -} JSGCParamKey; -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Value (C++/JS Shell)</th> - <th>Description</th> - </tr> - <tr> - <td><code>JSGC_MAX_BYTES</code> / <code>"maxBytes"</code></td> - <td>Maximum nominal heap before last ditch GC.</td> - </tr> - <tr> - <td><code>JSGC_MAX_MALLOC_BYTES</code> / <code>"maxMallocBytes"</code></td> - <td>Number of JS_malloc bytes before last ditch GC.</td> - </tr> - <tr> - <td><code>JSGC_MAX_NURSERY_BYTES</code> / <code>"maxNurseryBytes"</code></td> - <td>Maximum size the nursery may grow to, or 0 to disable generational GC.</td> - </tr> - <tr> - <td><code>JSGC_MIN_NURSERY_BYTES</code> / <code>"minNurseryBytes"</code></td> - <td>Minimum size the nursery may shrink to.</td> - </tr> - <tr> - <td><code>JSGC_BYTES</code> / <code>"gcBytes"</code></td> - <td>Amount of bytes allocated by the GC.</td> - </tr> - <tr> - <td><code>JSGC_NUMBER</code> / <code>"gcNumber"</code></td> - <td>Number of times GC has been invoked. Includes both major and minor GC.</td> - </tr> - <tr> - <td><code>JSGC_MODE</code> / <code>"mode"</code></td> - <td> - <p>Select GC mode:</p> - - <dl> - <dt><code>JSGC_MODE_GLOBAL</code> (0)</dt> - <dd>The GC runs all objects are visited in a single<em>slice</em>.</dd> - <dt><code>JSGC_MODE_ZONE</code> (1)</dt> - <dd>The GC runs only the objects that belong to some<em>zones</em> are visited in a single<em>slice</em>.</dd> - <dt><code>JSGC_MODE_INCREMENTAL</code> (2)</dt> - <dd>The GC runs all objects are visited in multiple<em>slices</em>.</dd> - <dt><code>JSGC_MODE_ZONE_INCREMENTAL</code> (3)</dt> - <dd>The GC runs only the objects that belong to some<em>zones</em> are visited in multiple<em>slices</em>.</dd> - </dl> - - <p>This does not affect generational GC, see <code>JSGC_MAX_NURSERY_BYTES</code></p> - </td> - </tr> - <tr> - <td><code>JSGC_UNUSED_CHUNKS</code> / <code>"unusedChunks"</code></td> - <td>Number of cached empty GC chunks.</td> - </tr> - <tr> - <td><code>JSGC_TOTAL_CHUNKS</code> / <code>"totalChunks"</code></td> - <td>Total number of allocated GC chunks.</td> - </tr> - <tr> - <td><code>JSGC_SLICE_TIME_BUDGET</code> / <code>"sliceTimeBudget"</code></td> - <td>Max milliseconds to spend in an incremental GC slice. 0 for infinite.</td> - </tr> - <tr> - <td><code>JSGC_MARK_STACK_LIMIT</code> / <code>"markStackLimit"</code></td> - <td>Maximum size the GC mark stack can grow to (units: entries).</td> - </tr> - <tr> - <td><code>JSGC_HIGH_FREQUENCY_TIME_LIMIT</code> / <code>"highFrequencyTimeLimit"</code></td> - <td>GCs less than this far apart in time will be considered 'high-frequency GCs'.</td> - </tr> - <tr> - <td><code>JSGC_HIGH_FREQUENCY_LOW_LIMIT</code> / <code>"highFrequencyLowLimit"</code></td> - <td rowspan="4"> - <p>Controls for dynamic heap growth. When the GC is in "high frequency" mode (see above) then, the heap will be allowed to grow between collections according to these four parameters. See ZoneHeapThreshold::computeZoneHeapGrowthFactorForHeapSize in GC.cpp for the details.</p> - - <p>The first two parameters are in MB and the remaining two are in percentage of heap size.</p> - </td> - </tr> - <tr> - <td><code>JSGC_HIGH_FREQUENCY_HIGH_LIMIT</code> / <code>"highFrequencyHighLimit"</code></td> - </tr> - <tr> - <td><code>JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MAX</code> / <code>"highFrequencyHeapGrowthMax"</code></td> - </tr> - <tr> - <td><code>JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MIN</code> / <code>"highFrequencyHeapGrowthMin"</code></td> - </tr> - <tr> - <td><code>JSGC_LOW_FREQUENCY_HEAP_GROWTH</code> / <code>"lowFrequencyHeapGrowth"</code></td> - <td>Heap growth percentage for low frequency GCs.</td> - </tr> - <tr> - <td><code>JSGC_DYNAMIC_HEAP_GROWTH</code> / <code>"dynamicHeapGrowth"</code></td> - <td>If false, the heap growth percentage is fixed at 300%. If true, it is determined based on whether GCs are high- or low- frequency.</td> - </tr> - <tr> - <td><code>JSGC_DYNAMIC_MARK_SLICE</code> / <code>"dynamicMarkSlice"</code></td> - <td>If true, high-frequency GCs will use a longer mark slice.</td> - </tr> - <tr> - <td><code>JSGC_ALLOCATION_THRESHOLD</code> / <code>"allocationThreshold"</code></td> - <td>Lower limit after which we limit the heap growth. The heap will be collected if it is greater than: <code>MAX(allocThreshold, lastSize) * thresholdFactor</code>, This establishes allocThreshold as a baseline or default heap size.</td> - </tr> - <tr> - <td><code>JSGC_ALLOCATION_THRESHOLD_FACTOR</code> / <code>"allocationThresholdFactor"</code></td> - <td rowspan="2"> - <p>These thresholds (as percentages) are compared with the zone threshold (above) to decide when to begin an incremental collection. <code>JSGC_ALLOCATION_THRESHOLD_FACTOR_AVOID_INTERRUPT</code> is used when a GC is already in progress for other zones and we may wish to avoid interrupting it.</p> - - <p>Additionally if a zone expands beyond the threshold without this factor, then it will be collected non-incrementally</p> - </td> - </tr> - <tr> - <td><code>JSGC_ALLOCATION_THRESHOLD_FACTOR_AVOID_INTERRUPT</code> / <code>"allocationThresholdfactorAvoidInterrupt"</code></td> - </tr> - <tr> - <td><code>JSGC_MIN_EMPTY_CHUNK_COUNT</code> / <code>"minEmptyChunkCount"</code></td> - <td>We try to keep at least this many unused chunks in the free chunk pool at all times, even after a shrinking GC.</td> - </tr> - <tr> - <td><code>JSGC_MAX_EMPTY_CHUNK_COUNT</code> / <code>"maxEmptyChunkCount"</code></td> - <td>We never keep more than this many unused chunks in the free chunk pool.</td> - </tr> - <tr> - <td><code>JSGC_COMPACTION_ENABLED</code> / <code>"compactingEnabled"</code></td> - <td>non-zero to enable compacting, zero to disable.</td> - </tr> - <tr> - <td><code>JSGC_NURSERY_FREE_THRESHOLD_FOR_IDLE_COLLECTION</code> / <code>"nurseryFreeThresholdForIdleCollection"</code></td> - <td>Collect the nursery in idle time if it has less than this many bytes of free space.</td> - </tr> - <tr> - <td><code>JSGC_NURSERY_FREE_THRESHOLD_FOR_IDLE_COLLECTION_PERCENT</code> / <code>"nurseryFreeThresholdForIdleCollectionPercent"</code></td> - <td>Collect the nursery in idle time if it has less than this percentage of capacity free (value from 0 - 99).</td> - </tr> - <tr> - <td><code>JSGC_PRETENURE_THRESHOLD</code> / <code>"pretenureThreshold"</code></td> - <td>If this percentage of the nursery is tenured and the nursery is at least 4MB, then process object groups to look for pretenuring candidates.</td> - </tr> - <tr> - <td><code>JSGC_PRETENURE_GROUP_THRESHOLD</code> / <code>"pretenureGroupThreshold"</code></td> - <td>If more than this number of objects in a given object group are tenured, then pretenruing will be enabled for new objects in this group.</td> - </tr> - <tr> - <td><code>JSGC_MIN_LAST_DITCH_GC_PERIOD</code> / <code>"minLastDitchGCPeriod"</code></td> - <td>The minimum time to allow between triggering last ditch GCs in seconds.</td> - </tr> - </tbody> -</table> - -<h2 id="Description" name="Description">説明</h2> - -<p><code>JS_GetGCParameter</code> returns the current parameter of the garbage collection.</p> - -<p>If successful, <code>JS_GetGCParameter</code> returns the current parameter.</p> - -<p><code>JS_SetGCParameter</code> ajusts the parameter of the garbage collection.</p> - -<h2 id="See_Also" name="See_Also">あわせて参照</h2> - -<ul> - <li>{{ LXRSearch("ident", "i", "JS_GetGCParameter") }}</li> - <li>{{ LXRSearch("ident", "i", "JS_SetGCParameter") }}</li> - <li>{{bug(474801)}} - <ul> - <li><code>JSGC_BYTES</code></li> - <li><code>JSGC_NUMBER</code></li> - </ul> - </li> - <li>{{bug(474497)}} - <ul> - <li><code>JSGC_MAX_CODE_CACHE_BYTES</code></li> - <li>This option no-longer exists</li> - <li><code>JS_GetGCParameterForThread</code></li> - <li><code>JS_SetGCParameterForThread</code></li> - </ul> - </li> - <li>{{bug(624229)}} - <ul> - <li><code>JSGC_MODE</code></li> - </ul> - </li> - <li>{{bug(631733)}} - <ul> - <li><code>JSGC_UNUSED_CHUNKS</code></li> - </ul> - </li> - <li>{{bug(674480)}} - <ul> - <li><code>JSGC_TOTAL_CHUNKS</code></li> - </ul> - </li> - <li>{{bug(641025)}} - <ul> - <li><code>JSGC_SLICE_TIME_BUDGET</code></li> - </ul> - </li> - <li>{{bug(673551)}} - <ul> - <li><code>JSGC_MARK_STACK_LIMIT</code></li> - </ul> - </li> - <li>{{bug(765435)}} - <ul> - <li><code>JSGC_HIGH_FREQUENCY_TIME_LIMIT</code></li> - <li><code>JSGC_HIGH_FREQUENCY_LOW_LIMIT</code></li> - <li><code>JSGC_HIGH_FREQUENCY_HIGH_LIMIT</code></li> - <li><code>JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MAX</code></li> - <li><code>JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MIN</code></li> - <li><code>JSGC_LOW_FREQUENCY_HEAP_GROWTH</code></li> - <li><code>JSGC_DYNAMIC_HEAP_GROWTH</code></li> - <li><code>JSGC_DYNAMIC_MARK_SLICE</code></li> - </ul> - </li> - <li>{{bug(800063)}} - <ul> - <li><code>JSGC_ALLOCATION_THRESHOLD</code></li> - </ul> - </li> - <li>{{bug(871005)}} - <ul> - <li><code>JSGC_DECOMMIT_THRESHOLD</code></li> - <li>This option is no-longer exists</li> - </ul> - </li> - <li>{{bug(1017141)}} - <ul> - <li><code>JSGC_MIN_EMPTY_CHUNK_COUNT</code></li> - <li><code>JSGC_MAX_EMPTY_CHUNK_COUNT</code></li> - </ul> - </li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntime/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntime/index.html deleted file mode 100644 index 36a7593d57..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntime/index.html +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: JS GetRuntime -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntime -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntime ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_GetRuntime</code></div> - - - -<p></p> - -<p><code>JSRuntime</code>へのポインタを取得します。 <span class="comment">Retrieves a pointer to the <code>JSRuntime</code>.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval"><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> * <strong>JS_GetRuntime</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *</code></td> - <td>コンテキスト</td> - </tr> - </tbody> -</table> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><code>JS_GetRuntime</code>は、<code>JSContext</code> <code>cx</code>と関連付けられた<code>JSRuntime</code>へのポインタを取得する関数です。各コンテキストは、その生成時に指定した (<code><a href="/ja/JS_NewContext" title="ja/JS_NewContext">JS_NewContext</a></code>を参照) <code>JSRuntime</code>と関連付けられており、<code>JS_GetRuntime</code>を使うことでその関連付けを取得することができます。 <span class="comment"><code>JS_GetRuntime</code> retrieves a pointer to the <code>JSRuntime</code> with which a specified <code>JSContext</code>, <code>cx</code>, is associated. Each context is associated with a particular <code>JSRuntime</code> when it is created (see <code><a href="/ja/JS_NewContext">JS_NewContext</a></code>); <code>JS_GetRuntime</code> provides a convenient, programmatic way to look up the association.</span></p> - -<p>{{ LXRSearch("ident", "i", "JS_GetRuntime") }}</p> - -<p>{{ languages( { "en": "en/JS_GetRuntime" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntimeprivate/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntimeprivate/index.html deleted file mode 100644 index c4f3f7937b..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntimeprivate/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: JS GetRuntimePrivate -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntimePrivate -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntimePrivate ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_GetRuntimePrivate</code></div> - - -<p></p> - -<p><code>JSRuntime</code>オブジェクトと関連付けられたアプリケーション固有のフィールドにアクセスします。 <span class="comment">Access a <code>JSRuntime</code> field for application-specific data.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval">void * <strong>JS_GetRuntimePrivate</strong>(<a href="ja/JSRuntime">JSRuntime</a> *rt); - -void <strong>JS_SetRuntimePrivate</strong>(<a href="ja/JSRuntime">JSRuntime</a> *rt, void *data); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>rt</code></td> - <td><code><a href="ja/JSRuntime">JSRuntime</a> *</code></td> - <td>JavaScriptランタイム環境<span class="comment">Any JS runtime.</span></td> - </tr> - <tr> - <td><code>data</code></td> - <td><code>void *</code></td> - <td><em>(<code>JS_SetRuntimePrivate</code>のみ)</em>ランタイム<code>rt</code>と関連付けるアプリケーション固有のデータへのポインタ <span class="comment">''(in <code>JS_SetRuntimePrivate</code>)'' Pointer to application-defined data to be associated with the runtime <code>rt</code>.</span></td> - </tr> - </tbody> -</table> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p>各<code>JSRuntime</code>内には、アプリケーション内で用いる任意のデータを指し示す<code>void *</code>型のフィールドが存在します。このフィールドは、コールバック関数が容易にアクセスできる領域であるため、その中でのデータ格納に有用に使えます。<code>JS_GetRuntimePrivate</code>でフィールドの値を取得し、<code>JS_SetRuntimePrivate</code>で値を設定します。フィールドの初期値は<code>NULL</code>に設定されています。 <span class="comment">Each <code>JSRuntime</code> has a field of type <code>void *</code> which the application may use for any purpose. It is especially useful for storing data which callbacks may then easily access. <code>JS_GetRuntimePrivate</code> gets the value of this field and <code>JS_SetRuntimePrivate</code> sets it. The field is initially <code>NULL</code>.</span></p> - -<p>このプライベートなデータのメモリ管理はアプリケーション側の責任になります。JavaScriptエンジン自体がこの領域を利用することはありません。 <span class="comment">Memory management for this private data is the application's responsibility. The JavaScript engine itself never uses it.</span></p> - -<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2> - -<p>{{ LXRSearch("ident", "i", "JS_GetRuntimePrivate") }}</p> - -<p><a href="ja/JS_GetContextPrivate">JS_GetContextPrivate</a>, <a href="ja/JS_SetContextPrivate">JS_SetContextPrivate</a>, <a href="ja/JS_GetPrivate">JS_GetPrivate</a>, <a href="ja/JS_SetPrivate">JS_SetPrivate</a>, <a href="ja/JS_GetInstancePrivate">JS_GetInstancePrivate</a></p> - -<p>{{ languages( { "en": "en/JS_GetRuntimePrivate" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_init/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_init/index.html deleted file mode 100644 index 1d52ec7034..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_init/index.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: JS_Init -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Init -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Init ---- -<div>{{obsolete_header}}</div> - - -<h2 id="Syntax" name="Syntax">構文</h2> - - -<pre class="syntaxbox"><a href="/ja/docs/JSRuntime" title="JSRuntime">JSRuntime</a> * <strong>JS_Init</strong>(<a href="/ja/docs/jsint" title="jsint">uint32</a> maxbytes); -</pre> - - -<table class="standard-table"> - <thead> - <tr> - <th>名称</th> - <th>型</th> - <th>説明</th> - </tr> -</thead> -<tbody> - <tr> - <td><code>maxbytes</code></td> - <td><code><a href="/ja/docs/jsint" title="jsint">uint32</a></code></td> - <td>ガベージコレクション実行後に割り当てられたバイト数</td> - </tr> - </tbody> -</table> - - -<h2 id="Description" name="Description">説明</h2> -<p><code>JS_Init</code> は廃止されました。替わりに <code><a href="/ja/docs/JS_NewRuntime" title="JS_NewRuntime">JS_NewRuntime</a></code> を使用して下さい。</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_lock/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_lock/index.html deleted file mode 100644 index 1ffb9dee10..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_lock/index.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: JS_Lock -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Lock -tags: - - JSAPI_Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Lock ---- -<div> - {{obsolete_header("jsapi12")}}</div> -<p>JS ランタイム環境をロックします。</p> -<h2 id="Syntax" name="Syntax">構文</h2> -<pre class="syntaxbox">void <strong>JS_Lock</strong>(<a href="/ja/docs/JSRuntime" title="JSRuntime">JSRuntime</a> *rt); -</pre> -<table class="standard-table"> - <thead> - <tr> - <th>名称</th> - <th>型</th> - <th>説明</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>rt</code></td> - <td><code><a href="/ja/docs/JSRuntime" title="JSRuntime">JSRuntime</a> *</code></td> - <td>ロックするランタイムへのポインタ</td> - </tr> - </tbody> -</table> -<h2 id="Description" name="Description">説明</h2> -<p><code>JS_Lock</code> は非推奨 API です。使用しないで下さい。</p> -<h2 id="See_also" name="See_also">関連情報</h2> -<ul> - <li>{{LXRSearch("ident", "i", "JS_Lock")}}</li> - <li><a href="/ja/docs/JS_GetRuntime" title="JS_GetRuntime"><code>JS_GetRuntime</code></a> 、 <a href="/ja/docs/SpiderMonkey/JSAPI_Reference/JS_Unlock"><code>JS_Unlock</code></a></li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newcontext/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newcontext/index.html deleted file mode 100644 index ab77638f70..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newcontext/index.html +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: JS NewContext -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewContext -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewContext ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_NewContext</code></div> - -<p></p> - -<p>新たなJavaScriptコンテキストを生成します。 <span class="comment">Creates a new JavaScript context.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<p><span class="comment">= Syntax =</span></p> - -<pre class="eval"><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> * <strong>JS_NewContext</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> *rt, size_t stackchunksize); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>rt</code></td> - <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> *</code></td> - <td>コンテキストの親となるランタイムを指定します。JavaScriptのオブジェクト、関数、文字列、数値は<code>JSRuntime</code>内のコンテキスト内で共有されますが、<code>JSRuntime</code>をまたぐことはありません。 - <p><span class="comment">Parent runtime for the new context. JavaScript objects, functions, strings, and numbers may be shared among the contexts in a <code>JSRuntime</code>, but they cannot be shared across <code>JSRuntime</code>s.</span></p> - </td> - </tr> - <tr> - <td><code>stackchunksize</code></td> - <td><code>size_t</code></td> - <td> - <p>各スタック領域のサイズをバイトで指定します。標準的には<code>8192</code>が適切な値であり、大抵の場合において調節すべきでないパラメータです。 <span class="comment">The size, in bytes, of each "stack chunk". This is a memory management tuning parameter which most users should not adjust. <code>8192</code> is a good default value.</span></p> - </td> - </tr> - </tbody> -</table> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><span class="comment">= Description =</span> スクリプトの実行および値の保持に利用するコンテキストを新規に生成する関数です。各スクリプトは独自のコンテキスト上で実行され、各コンテキストは特定の<code>JSRuntime</code>オブジェクト<code>rt</code>と関連づけられています。 <span class="comment">Creates a new JavaScript context for executing scripts and examining JavaScript values. Each script runs in its own context, and each context must be associated with a specified <code>JSRuntime</code>, <code>rt</code>.</span></p> - -<p><code>JS_NewContext</code>は、成功したとき新たなコンテキストへのポインタを返します。失敗したときは<code>NULL</code>を返します。 <span class="comment">On success, <code>JS_NewContext</code> returns a pointer to the new context. Otherwise it returns <code>NULL</code>.</span></p> - -<p>この関数の呼び元は、コンテキストを使い終わったら<code><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContext</a></code>を実行しなければなりません。<code>JSRuntime</code>を解放する前に、その<code>JSContext</code>をすべて解放する必要があります。 <span class="comment">The caller must call <code><a href="/ja/JS_DestroyContext">JS_DestroyContext</a></code> when it is done using the context. Before a <code>JSRuntime</code> may be destroyed, all the <code>JSContext</code>s associated with it must be destroyed.</span></p> - -<p><code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を有効にしたビルドでは、ある<code>JSContext</code>を同時にアクセスできるスレッドは一つだけです。新規の<code>JSContext</code>は、初期状態で呼び元のスレッドと関連付けられます。コンテキストがあるスレッドと関連付けられている間は、他のスレッドからそれを利用したり解放することはできません。<code>JSContext</code>を別のスレッドに移動する場合は、<code><a href="/ja/JS_ClearContextThread" title="ja/JS_ClearContextThread">JS_ClearContextThread</a></code>と<code><a href="/ja/JS_SetContextThread" title="ja/JS_SetContextThread">JS_SetContextThread</a></code>を利用してください。 <span class="comment">In a <code><a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a></code> build, only one thread may use a <code>JSContext</code> at a time. The new <code>JSContext</code> is initially associated with the calling thread. As long as it stays associated with that thread, no other thread may use it or destroy it. A <code>JSContext</code> may be transferred from one thread to another by calling <code><a href="/ja/JS_ClearContextThread">JS_ClearContextThread</a></code> and <code><a href="/ja/JS_SetContextThread">JS_SetContextThread</a></code>.</span></p> - -<p>新たに生成した<code>JSContext</code>は、初期状態においてグローバルオブジェクトを持ちません。 <span class="comment">The new <code>JSContext</code> initially has no global object.</span></p> - -<h3 id=".E6.B3.A8.E8.A8.98" name=".E6.B3.A8.E8.A8.98">注記</h3> - -<p><span class="comment">== Notes ==</span> 一度生成されたコンテキストは異なるスクリプトやJSAPI呼び出しのために複数回利用される可能性があります。具体的には、Webブラウザが各HTMLに対応する独立したコンテキストを生成したときに、ページ内のすべてのスクリプトは同じコンテキストを用いて実行されるといったシナリオが考えられます。 <span class="comment">Once created, a context can be used any number of times for different scripts or JSAPI queries. For example, a browser would create a separate context for each HTML page; every script in the page would use the same context.</span></p> - -<p>新規コンテキストは、<code>Object</code>、<code>Date</code>、<code>Array</code>といった標準的なグローバルオブジェクトを一切保持していません。それらを利用するには、<code><a href="/ja/JS_InitStandardClasses" title="ja/JS_InitStandardClasses">JS_InitStandardClasses</a></code>を呼び出す必要があります。JSAPIを利用するアプリケーションで独自の関数やクラスを提供したい場合には、<code><a href="/ja/JS_GetGlobalObject" title="ja/JS_GetGlobalObject">JS_GetGlobalObject</a></code>を使ってそのコンテキストのグローバルオブジェクトを取得し、<code><a href="/ja/JS_DefineFunctions" title="ja/JS_DefineFunctions">JS_DefineFunctions</a></code>および<code><a href="/ja/JS_InitClass" title="ja/JS_InitClass">JS_InitClass</a></code>をそれに適用することで独自のグローバル関数やクラスをコンテキストに追加できます。 <span class="comment">The new context initially does not contain any globals, even standard globals such as <code>Object</code>, <code>Date</code>, and <code>Array</code>. To create them, call <code><a href="/ja/JS_InitStandardClasses">JS_InitStandardClasses</a></code>. A JSAPI application typically also provides some custom functions and classes. Use <code><a href="/ja/JS_GetGlobalObject">JS_GetGlobalObject</a></code> to get a context's global object. Use <code></code> and <code><a href="/ja/JS_InitClass">JS_InitClass</a></code> to add custom global functions and classes to the context.</span></p> - -<p><code>stackchunksize</code>は、JavaScriptのスタックサイズを調節するものではありません(JSAPIでは、スタック長を調節するインタフェースを提供していません)。<code>stackchunksize</code>に大きい値を設定するのは誤った方法です。<code>DEBUG</code>ビルドにおいて、<code>stackchunksize</code>を大きくすると性能が著しく劣化します。一般的には<code>8192</code>が推奨されます。 <span class="comment">The <code>stackchunksize</code> parameter does not control the JavaScript stack size. (The JSAPI does not provide a way to adjust the stack depth limit.) Passing a large number for <code>stackchunksize</code> is a mistake. In a <code>DEBUG</code> build, large chunk sizes can degrade performance dramatically. The usual value of <code>8192</code> is recommended.</span></p> - -<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2> - -<p><span class="comment">= See Also =</span></p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td>Groups</td> - <td><a href="/ja/JSAPI_Reference#Functions" title="ja/JSAPI_Reference#Functions">Functions</a></td> - </tr> - <tr> - <td>Documents</td> - <td>{{ LXRSearch("ident", "i", "JS_NewContext", "LXR ID Search") }}</td> - </tr> - <tr> - <td>Entries</td> - <td><a href="/ja/JS_ContextIterator" title="ja/JS_ContextIterator">JS_ContextIterator</a>, - <p><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContext</a>, <a href="/ja/JS_SetContextCallback" title="ja/JS_SetContextCallback">JS_SetContextCallback</a></p> - </td> - </tr> - </tbody> -</table> - -<p>{{ languages( { "en": "en/JS_NewContext" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newobject/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newobject/index.html deleted file mode 100644 index 8efb4676c7..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newobject/index.html +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: JS_NewObject -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewObject -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewObject ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_NewObject</code></div> - -<p></p> - -<p>{{ 英語版章題("Summary") }}</p> - -<h2 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h2> - -<p>オブジェクトのインスタンスを生成する関数です。<span class="comment">Instantiates a new object.</span></p> - -<p>{{ 英語版章題("Syntax") }}</p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre>JSObject * JS_NewObject(JSContext *cx, JSClass *clasp, JSObject *proto, - JSObject *parent); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code>JSContext *</code></td> - <td>ランタイム環境へのアクセスに用いる JSContext ポインタ<span class="comment">Pointer to a JS context from which to derive runtime information.</span></td> - </tr> - <tr> - <td><code>clasp</code></td> - <td><code>JSClass *</code></td> - <td>オブジェクト生成に用いるクラスへのポインタ<span class="comment">Pointer to the class to use for the new object.</span></td> - </tr> - <tr> - <td><code>proto</code></td> - <td><code>JSObject *</code></td> - <td>クラスとして用いる prototype オブジェクトへのポインタ<span class="comment">Pointer to the prototype object to use for the new class.</span></td> - </tr> - <tr> - <td><code>parent</code></td> - <td><code>JSObject *</code></td> - <td>新規オブジェクトの<code>__parent__</code>プロパティになる親オブジェクトへのポインタ。<span class="comment">Pointer to which to set the new object's <code>__parent__</code> property.</span></td> - </tr> - </tbody> -</table> - -<p>{{ 英語版章題("Description") }}</p> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><code>JS_NewObject</code>は、引数に指定したクラス、プロトタイプ、親オブジェクトを元にしてオブジェクトのインスタンスを生成する関数です。<code>cx</code>は、新規オブジェクトを生成するランタイム環境の子となるコンテキストへのポインタです。<code>clasp</code>は、<code>finalize</code>のような内部で定義されたメソッドを使う既存クラスへのポインタです。<code>proto</code>は、新規に生成するオブジェクトのプロトタイプとなるオブジェクトへのポインタです。 <span class="comment"><code>JS_NewObject</code> instantiates a new object based on a specified class, prototype, and parent object. <code>cx</code> is a pointer to a context associated with the runtime in which to establish the new object. <code>clasp</code> is a pointer to an existing class to use for internal methods, such as <code>finalize</code>. <code>proto</code> is an optional pointer to the prototype object with which to associate the new object.</span></p> - -<p>Set <code>proto</code> to <code>NULL</code> to force JS to assign a prototype object for you. In this case, <code>JS_NewObject</code> attempts to assign the new object the prototype object belonging to <code>clasp</code>, if one is defined there. Otherwise, it creates an empty object stub for the prototype.</p> - -<p>引数<code>parent</code>は、新たに生成したオブジェクトをプロパティとして持つ親オブジェクトを指定するものです。<code>__parent__</code>プロパティを設定したくない時は、<code>parent</code>に<code>NULL</code>を指定してください。 <span class="comment"><code>parent</code> is an optional pointer to an existing object to which to set the new object's parent object property. You can set parent to <code>NULL</code> if you do not want to set the <code>__parent__</code> property.</span></p> - -<p><code>JS_NewObject</code>が成功したとき、その返値は生成したオブジェクトのインスタンスへのポインタになり、失敗した時はNULLを返します。 <span class="comment">On success, <code>JS_NewObject</code> returns a pointer to the newly instantiated object. Otherwise it returns <code>NULL</code>.</span></p> - -<p>{{ 英語版章題("Notes") }}</p> - -<h3 id=".E6.B3.A8.E8.A8.98" name=".E6.B3.A8.E8.A8.98">注記</h3> - -<p>既存オブジェクトのプロパティとなるオブジェクトを生成するには、<code><a href="ja/JS_DefineObject">JS_DefineObject</a></code>を用いてください。 <span class="comment">To create a new object that is a property of an existing object, use <code>JS_DefineObject</code>.</span></p> - -<p>{{ 英語版章題("See Also") }}</p> - -<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td>Groups</td> - <td><a href="ja/JSAPI_Reference#Functions">Functions</a></td> - </tr> - <tr> - <td>Documents</td> - <td>{{ LXRSearch("ident", "i", "JS_NewObject", "LXR ID Search") }}</td> - </tr> - <tr> - <td>Entries</td> - <td> - <p><a href="ja/JSClass">JSClass</a>, <a href="ja/JS_ConstructObject">JS_ConstructObject</a>, <a href="ja/JS_DefineObject">JS_DefineObject</a>, <a href="ja/JS_GetFunctionObject">JS_GetFunctionObject</a>, <a href="ja/JS_NewArrayObject">JS_NewArrayObject</a>, <a href="ja/JS_ValueToObject">JS_ValueToObject</a></p> - </td> - </tr> - </tbody> -</table> - -<div class="noinclude"> </div> - -<p>{{ languages( { "en": "en/JS_NewObject" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newruntime/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newruntime/index.html deleted file mode 100644 index 5db8397cb9..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newruntime/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: JS NewRuntime -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewRuntime -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewRuntime ---- -<p></p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_NewRuntime</code></div> -<p></p> - -<p>JavaScript ランタイムの初期化を行います。 {{ 英語版章題("Syntax") }}</p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval"><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> * <strong>JS_NewRuntime</strong>(uint32 maxbytes); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>maxbytes</code></td> - <td><code>uint32</code></td> - <td>ガベージコレクション動作後の最大メモリ使用量<span class="comment">Maximum number of allocated bytes after which garbage collection is run.</span></td> - </tr> - </tbody> -</table> - -<p>{{ 英語版章題("Description") }}</p> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p><code>JS_NewRuntime</code>は、JavaScriptランタイム環境の初期化を行う関数です。他のJSAPI関数を使うには前もって必ず<code>JS_NewRuntime</code>を呼ぶことになります。<code>JS_NewRuntime</code>は、<code>JSRuntime</code>に用いるメモリ領域を確保し、ランタイム内の初期化を行います。引数<code>maxbytes</code>で、ガベージコレクションが動作した後の最大メモリ使用量を指定します。 <span class="comment"><code>JS_NewRuntime</code> initializes the JavaScript runtime environment. Call <code>JS_NewRuntime</code> before making any other API calls. <code>JS_NewRuntime</code> allocates memory for the <code>JSRuntime</code> and initializes certain internal runtime structures. <code>maxbytes</code> specifies the number of allocated bytes after which garbage collection is run.</span></p> - -<p>一般的に、ほとんどのアプリケーションで必要とされる<code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a></code>は一つのみです。<code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を有効にしたビルドでは、<code>JSRuntime</code>を共有する<code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a></code>を各スレッドごとに一つ用意することで、複数スレッドからランタイムにアクセスすることが可能です。複数のランタイムが必要になるのは、JavaScriptの値やオブジェクト、関数をスレッド間で完全に分離させたいときだけです。 <span class="comment">Generally speaking, most applications need only one <code><a href="/ja/JSRuntime">JSRuntime</a></code>. In a <code><a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a></code> build, each runtime is capable of handling multiple execution threads, using one <code><a href="/ja/JSContext">JSContext</a></code> per thread, sharing the same <code>JSRuntime</code>. You only need multiple runtimes if your application requires completely separate JS engines that cannot share values, objects, and functions.</span></p> - -<p><code>JS_NewRuntime</code>が成功したときは、新たに生成されたランタイムへのポインタがその返り値となり、失敗した時は<code>NULL</code>を返します。<code>JS_NewRuntime</code>の呼び出し元は、後で必ずそのランタイムを<code><a href="/ja/JS_DestroyRuntime" title="ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code>を用いて破棄しなければなりません。 <span class="comment">On success, <code>JS_NewRuntime</code> returns a pointer to the newly created runtime, which the caller must later destroy using <code><a href="/ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code>. Otherwise it returns <code>NULL</code>.</span> {{ 英語版章題("Notes") }}</p> - -<h3 id=".E6.B3.A8.E8.A8.98" name=".E6.B3.A8.E8.A8.98">注記</h3> - -<p>一般的には、<code>JS_NewRuntime</code>はアプリケーション内でまず最初に実行し、<code><a href="/ja/JS_DestroyRuntime" title="ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code>や<code><a href="/ja/JS_ShutDown" title="ja/JS_ShutDown">JS_ShutDown</a></code>を終了時に呼ぶことになります。 <span class="comment">Ordinarily, <code>JS_NewRuntime</code> should be the first JSAPI call in an application, and <code><a href="/ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code> and <code><a href="/ja/JS_ShutDown">JS_ShutDown</a></code> should be the last ones.</span></p> - -<p>{{ LXRSearch("ident", "i", "JS_NewRuntime") }}</p> - -<p>{{ languages( { "en": "en/JS_NewRuntime" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_setgczeal/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_setgczeal/index.html deleted file mode 100644 index 0be58ee8dc..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_setgczeal/index.html +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: JS_SetGCZeal -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetGCZeal -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetGCZeal ---- -<div>{{SpiderMonkeySidebar("JSAPI")}}</div> - -<div>{{jsapi_minversion_header("1.8")}}</div> - -<div class="summary"> -<p>GC の活動量、JSAPI アプリケーションの GC 関連のバグを見つけるのに役立つテストおよびデバッグ機能を有効にします。</p> -</div> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="brush: cpp">void -JS_SetGCZeal(JSContext *cx, uint8_t zeal, uint32_t frequency); -</pre> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td>{{jsapixref("JSRuntime", "JSContext *")}}</td> - <td>A context. The GC zeal level of the associated {{jsapixref("JSRuntime")}} is set.</td> - </tr> - <tr> - <td><code>zeal</code></td> - <td><code>uint8_t</code></td> - <td>The desired level of garbage collection.</td> - </tr> - <tr> - <td><code>frequency</code></td> - <td><code>uint32_t</code></td> - <td>With some zeal levels, a GC is triggered every <code>frequency</code> allocations.</td> - </tr> - </tbody> -</table> - -<h2 id="Description" name="Description">説明</h2> - -<p><strong><code>JS_SetGCZeal</code></strong> sets the level of additional garbage collection to perform for a runtime, for the purpose of finding or reproducing bugs.</p> - -<p>There are several different levels which have different functions:</p> - -<table class="fullwidth-table"> - <thead> - <tr> - <th scope="col">Zeal level</th> - <th scope="col">Description</th> - </tr> - </thead> - <tbody> - <tr> - <td>0</td> - <td>Normal amount of collection. The default: no additional collections are performed.</td> - </tr> - <tr> - <td>1</td> - <td>Collect when roots are added or removed.</td> - </tr> - <tr> - <td>2</td> - <td>Collect when every <code>frequency</code> allocations.</td> - </tr> - <tr> - <td>3</td> - <td>Collect on window paints.</td> - </tr> - <tr> - <td>4</td> - <td>Verify pre write barriers between instructions.</td> - </tr> - <tr> - <td>5</td> - <td>Verify pre write barriers between window paints.</td> - </tr> - <tr> - <td>6</td> - <td>Verify stack rooting.</td> - </tr> - <tr> - <td>7</td> - <td>Collect the nursery every <code>frequency</code> nursery allocations.</td> - </tr> - <tr> - <td>8</td> - <td>Incremental GC in two slices: 1) mark roots 2) finish collection.</td> - </tr> - <tr> - <td>9</td> - <td>Incremental GC in two slices: 1) mark all 2) new marking and finish.</td> - </tr> - <tr> - <td>10</td> - <td>Incremental GC in multiple slices.</td> - </tr> - <tr> - <td>11</td> - <td>Verify post write barriers between instructions.</td> - </tr> - <tr> - <td>12</td> - <td>Verify post write barriers between paints.</td> - </tr> - <tr> - <td>13</td> - <td>Check internal hashtables on minor GC.</td> - </tr> - <tr> - <td>14</td> - <td>Perform a shrinking collection every <code>frequency</code> allocations.</td> - </tr> - </tbody> -</table> - -<p>With GC zeal enabled, GC-related crashes are much easier to reproduce (they happen more reliably) and debug (they happen sooner, closer to the source of the bug). The drawback is that GC zeal can cause JavaScript code to run extremely slowly.</p> - -<p>Regularly running your test suite with GC zeal enabled at level 2 is a good practice.</p> - -<p>This function is available only in <code>DEBUG</code> builds. To enable this function in an optimized build, define the macro <code>JS_GC_ZEAL</code> building SpiderMonkey.</p> - -<p>(In a debug build of Gecko, you can also set the current GC zeal level using the <code>javascript.options.gczeal</code> preference.)</p> - -<h2 id="See_Also" name="See_Also">あわせて参照</h2> - -<ul> - <li>{{LXRSearch("ident", "i", "JS_SetGCZeal")}}</li> - <li>{{LXRSearch("ident", "i", "JS_GC_ZEAL")}}</li> - <li>{{jsapixref("JS_ScheduleGC")}}</li> - <li>{{bug(308429)}}</li> - <li>{{bug(650978)}}</li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_shutdown/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_shutdown/index.html deleted file mode 100644 index 5d4e2faacd..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_shutdown/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: JS ShutDown -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ShutDown -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ShutDown ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JS_ShutDown</code></div> - -<p></p> - -<p>ランタイム間で共有している資源を解放します。</p> - -<p><span class="comment">Free all resources shared among runtimes.</span></p> - -<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2> - -<pre class="eval">void <strong>JS_ShutDown</strong>(void); -</pre> - -<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2> - -<p>ランタイム間で共有している資源を解放する関数です。この関数を呼ぶのは<code>JSRuntime</code>オブジェクトが存在しないとき(具体的には、<code><a href="/ja/JS_DestroyRuntime" title="ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code>を読んだ後のプログラムの最後など)だけにしてください。 <span class="comment">Frees all resources shared among runtimes. Call this only when no <code>JSRuntime</code>s exist (for example, at the end of the program, after calling <code><a href="/ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code>).</span></p> - -<p>利用時の注意点: この関数は<code><a class="external" href="http://mxr.mozilla.org/seamonkey/source/js/src/jsdtoa.c">jsdtoa.c</a></code>が確保するメモリ領域と、<code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>オプションを有効にしたビルドにおける<code><a class="external" href="http://mxr.mozilla.org/seamonkey/source/js/src/jslock.c">jslock.c</a></code>が確保するmutex領域を解放します。 <span class="comment">Implementation note: This cleans up memory allocated by <code><a class="external" href="http://mxr.mozilla.org/seamonkey/source/js/src/jsdtoa.c">jsdtoa.c</a></code> and, in <code><a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a></code> builds, mutexes allocated by <code><a class="external" href="http://mxr.mozilla.org/seamonkey/source/js/src/jslock.c">jslock.c</a></code>.</span></p> - -<p>{{ LXRSearch("ident", "i", "JS_ShutDown") }}</p> - -<p>{{ languages( { "en": "en/JS_ShutDown" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_threadsafe/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_threadsafe/index.html deleted file mode 100644 index b827d4c832..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_threadsafe/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: JS_THREADSAFE -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_THREADSAFE -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_THREADSAFE ---- -<p class="note">{{ note("JS_THREADSAFE は現在恒久的に有効です。") }}</p> - -<p><strong><code>JS_THREADSAFE</code></strong> は、オブジェクトや文字列が共有されていない限り、JavaScript コードの複数のスレッドを同時に実行するためのサポートを可能にするコンパイル時オプションです。</p> - -<p>最近この機能に大きな変更を加えました。最近まで、スレッド間でオブジェクトを共有することでうまくいくことが多かったのですが、スクリプトを使うとクラッシュすることがありました。この機能は完全に削除されました。JavaScript エンジンを使用する各スレッドは、本質的にまったく別のメモリ領域で動作する必要があります。</p> - -<h2 id="Requests" name="Requests">Requests</h2> - -<p>In a <code>JS_THREADSAFE</code> build, the application must separate code that uses the JSAPI from code that performs blocking I/O or time-consuming calculations.</p> - -<p>A <em>request</em> is a region of code that uses the JSAPI. Requests must be bracketed with calls to <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="en/JS_BeginRequest">JS_BeginRequest</a>()</code> and <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="en/JS_BeginRequest">JS_EndRequest</a>()</code>.</p> - -<pre class="eval"><a href="/en/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="en/JS_BeginRequest">JS_BeginRequest</a>(cx); -/* ... do JSAPI stuff ... */ -<a href="/en/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="en/JS_BeginRequest">JS_EndRequest</a>(cx); -</pre> - -<p>A request is always associated with a specific <code>JSContext</code> and runs from start to finish on a single thread.</p> - -<p>Most JSAPI functions require the caller to be in a request. In this reference, these JSAPI functions are marked with the words "Requires request", like this:</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code>JSContext *</code></td> - <td>The context to use. {{ Jsapi-requires-request() }}</td> - </tr> - </tbody> -</table> - -<p>Most JSAPI callback functions are always called from within a request. These callbacks are (unreliably!) documented with the words "Provides request", like this:</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <th>Name</th> - <th>Type</th> - <th>Description</th> - </tr> - <tr> - <td><code>cx</code></td> - <td><code>JSContext *</code></td> - <td>The context in which the event ocurred. Provides request. <em>In <code><a href="/en-US/docs/JS_THREADSAFE#Requests">JS_THREADSAFE</a></code> builds, the JavaScript engine calls this callback only from within an active request on <code>cx</code>. The callback does not need to call <code>JS_BeginRequest()</code>).</em></td> - </tr> - </tbody> -</table> - -<p>In particular, <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSNative" title="en/JSNative">JSNative</a></code> callbacks provide a request. This means that any potentially long-running operation in a native must be bracketed with calls to <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="en/JS_SuspendRequest">JS_SuspendRequest</a>()</code> and <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="en/JS_SuspendRequest">JS_ResumeRequest</a>()</code>.</p> - -<pre class="eval"><a href="/En/SpiderMonkey/JSAPI_Reference/JSBool" title="en/JSBool">JSBool</a> socket_recv(<a href="/en/SpiderMonkey/JSAPI_Reference/JSRuntime" title="en/JSRuntime">JSContext</a> *cx, <a href="/en/SpiderMonkey/JSAPI_Reference/jsint" title="en/jsint">unsigned int</a> argc, <a href="/En/SpiderMonkey/JSAPI_Reference/Jsval" title="en/jsval">jsval</a> *vp) -{ - ... - rc = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="en/JS_SuspendRequest">JS_SuspendRequest</a>(cx); - read_size = recv(socket, buf, size, flags); - <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="en/JS_SuspendRequest">JS_ResumeRequest</a>(cx, rc); - ... -} -</pre> - -<h2 id="Garbage_collection" name="Garbage_collection">Garbage collection</h2> - -<p>Requests help make garbage collection safe when multiple threads are using the JSAPI. For each thread that is in a request:</p> - -<ul> - <li>Almost any call into the JSAPI may trigger garbage collection; but</li> - <li>Garbage collection does not happen at any other time (such as, for example, at the moment before the return value of <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewObject" title="en/JS_NewObject">JS_NewObject</a></code> is assigned to a rooted variable).</li> -</ul> - -<p>These are actually the same rules that apply to single-threaded JSAPI programs. But in multithreaded programs, if you break the rules, your program is more likely to crash. This is because in single-threaded programs, a random call into the JSAPI is actually pretty unlikely to trigger GC, especially if the calling thread has not been using up a lot of memory. In a multithreaded program, even if the calling thread has been idle, other threads may be active or may call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GC" title="en/JS_GC">JS_GC</a>()</code>.</p> - -<p>The above rules mean that at any given moment, there can be either <strong>(a)</strong> multiple threads in active requests, or <strong>(b)</strong> one thread doing GC and all requests suspended. When one thread calls JS_GC or otherwise finds that garbage collection is necessary, it must wait for all other threads that are in requests to pause before garbage collection can occur. To keep this wait time to a minimum, <strong>applications must avoid long-running requests.</strong> The recommended technique in SpiderMonkey 1.8 and later is to periodically call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_YieldRequest" title="en/JS_YieldRequest">JS_YieldRequest</a></code> from an <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="en/JS_SetOperationCallback">operation callback</a>.</p> - -<h2 id="Sharing_strings_among_threads" name="Sharing_strings_among_threads">Sharing data among threads</h2> - -<p>"Data can be marshaled across the process boundary through a process known as <em>smuggling</em>." --<em>Mr. Bunny's Guide to ActiveX</em></p> - -<p>Even in JS_THREADSAFE builds, threads cannot safely share objects or strings.</p> - -<p>Instead, data must be copied when it is sent from one thread to another. Use <code>JS_WriteStructuredClone</code> to transform data into a flat array of bytes that can be safely written to disk, sent to another process or even another machine, or just passed to another thread. Then use <code>JS_ReadStructuredClone</code> on the other side to turn the serialized data back into JavaScript objects, strings, and so on.</p> - -<h2 id="Sharing_native_functions_and_private_data_among_threads" name="Sharing_native_functions_and_private_data_among_threads">Sharing native functions and private data among threads</h2> - -<p>In a <code>JS_THREADSAFE</code> build, SpiderMonkey's internal data structures that represent JavaScript values are single-thread-only. In a <code>DEBUG</code> build, this is enforced with assertions.</p> - -<p>However, SpiderMonkey does not protect the application's data structures. <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSNative" title="en/JSNative">JSNative</a></code>s and other callback functions can be called concurrently by multiple threads. Multiple threads can end up accessing <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPrivate" title="en/JS_SetPrivate">private data</a> or C/C++ global variables at the same time. It is up to the application to practice safe threading.</p> - -<h2 id="Sharing_contexts_among_threads" name="Sharing_contexts_among_threads">Sharing contexts among threads</h2> - -<p>Ordinarily, a <code>JSContext</code> is created, used, and destroyed by a single thread. This makes sense, as a context can only be used by one thread at a time. However, there are a few cases where an application might need to share contexts across threads. For example:</p> - -<ul> - <li>Many worker threads need to share a "pool" of reusable contexts, to avoid the performance cost of constantly creating and destroying contexts. (This is analogous to a database connection pool.)</li> -</ul> - -<ul> - <li>The application has a <code>JSContext</code> that it needs to use each time some event happens. But the event could happen on any thread.</li> -</ul> - -<p>For such cases, use <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_ClearContextThread" title="en/JS_ClearContextThread">JS_ClearContextThread</a></code> and <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_ClearContextThread" title="en/JS_ClearContextThread">JS_SetContextThread</a></code> to transfer the context safely from one thread to another.</p> - -<h2 id="Further_info" name="Further_info">Further info</h2> - -<p>Note: <a href="/En/SpiderMonkey/Internals/Thread_Safety" title="en/SpiderMonkey_Internals/Thread_Safety">SpiderMonkey Internals: Thread Safety</a> is mostly obsolete.</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsint/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsint/index.html deleted file mode 100644 index c5028558cc..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsint/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: jsint -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/jsint -tags: - - JSAPI_Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/jsint ---- -<p>C 言語 / C++ の整数型のエイリアスです。</p> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="syntaxbox">typedef ... jsint; -typedef ... jsuint; - -typedef ... jsword; -typedef ... jsuword; - -typedef ... intN; -typedef ... uintN; - -typedef ... int8; -typedef ... uint8; -typedef ... int16; -typedef ... uint16; -typedef ... int32; -typedef ... uint32; -typedef ... int64; -typedef ... uint64; -</pre> - - -<h2 id="Description" name="Description">説明</h2> - - -<p><strong><code>jsint</code></strong> および <strong><code>jsuint</code></strong> は 32 ビットの整数型です。</p> - - -<p><strong><code>jsword</code></strong> および <strong><code>jsuword</code></strong> はポインタサイズの整数型です。</p> - - -<p><strong><code>intN</code></strong> および <strong><code>uintN</code></strong> はプラットフォームのネイティブの <code>int</code> 型と同じサイズの整数型です。</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsruntime/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsruntime/index.html deleted file mode 100644 index b221ea62ef..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsruntime/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: JSRuntime -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSRuntime -tags: - - JSAPI Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSRuntime ---- -<p> - -</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> » - <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> » - <code>JSRuntime</code></div> - -<p></p> - -<p>JSAPIにおいて、<strong><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a></code></strong>はメモリ管理や<strong>グローバル</strong>なデータ構造などを扱う最高位のオブジェクトです。複数のスレッドが動作するプログラムにおいても、プログラム内の<code>JSRuntime</code>は一般的に一つだけです。<code>JSRuntime</code>はJavaScriptのオブジェクトを保持する空間であり、オブジェクトは複数の<code>JSRuntime</code>を跨いで移動することはできません。 <span class="comment">JSAPI, <strong><code><a href="/ja/JSRuntime">JSRuntime</a></code></strong> is the top-level object that handles, among other things, memory management and "global" data structures. A program typically has only one <code>JSRuntime</code>, even if it has many threads. The <code>JSRuntime</code> is the universe in which JavaScript objects live; they can't travel to other <code>JSRuntime</code>s.</span></p> - -<p><strong><code>JSContext</code></strong>は<code>JSRuntime</code>の子に位置し、すべてのJavaScriptコードとJSAPIの関数は<code>JSContext</code>を介して実行されます。<code>JSContext</code>内には、<a href="/ja/JS_GetGlobalObject" title="ja/JS_GetGlobalObject">global object</a>や実行時スタックなどが含まれます。 <a href="/ja/JS_SetPendingException" title="ja/JS_SetPendingException">例外処理</a>、<a href="/ja/JS_SetErrorReporter" title="ja/JS_SetErrorReporter">エラー報告</a>、一部の<a href="/ja/JS_SetOptions" title="ja/JS_SetOptions">JavaScriptのオプション</a> などは各<code>JSContext</code>ごとに管理されます。<code>JS_THREADSAFE</code>オプションを有効にしたビルドでは、複数のスレッドからJavaScriptのコードを呼び出し並行して実行できますが、呼び出し元のスレッドはそれぞれ独立した<code>JSContext</code>を持つ形になります。詳細は<code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を参照してください。 <span class="comment">All JavaScript code and most JSAPI calls run within a <strong><code>JSContext</code></strong>. The <code>JSContext</code> is a child of the <code>JSRuntime</code>. Among other things, it contains the <a href="/ja/JS_GetGlobalObject">global object</a> and the execution stack. <a href="/ja/JS_SetPendingException">Exception handling</a>, <a href="/ja/JS_SetErrorReporter">error reporting</a>, and some <a href="/ja/JS_SetOptions">language options</a> are per-<code>JSContext</code>. In a <code>JS_THREADSAFE</code> build, multiple threads may run JavaScript code concurrently, but each such thread must have its own <code>JSContext</code>. See <code> <a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a></code> for details.</span></p> - -<p>JavaScriptオブジェクトとそのコンテキストとの関係は固定されたものでなく、オブジェクトは<code>JSRuntime</code>を介してその子となる<code>JSContext</code>間で共有することができます。 <span class="comment">Objects may be shared among <code>JSContext</code>s within a <code>JSRuntime</code>. There's no fixed association between an object and a context.</span></p> - -<p>{{ languages( { "en": "en/JSRuntime" } ) }}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jstype/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jstype/index.html deleted file mode 100644 index 69037c39ee..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jstype/index.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: JSType -slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSType -tags: - - JSAPI_Reference - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSType ---- -<p>列挙型 <code>JSType</code> の値は、 JavaScript の値の型を表します。</p> -<table class="standard-table"> - <thead> - <tr> - <th>値</th> - <th>説明</th> - </tr> -</thead> -<tbody> - <tr> - <td><code>JSTYPE_VOID</code></td> - <td><code>undefined</code> 値</td> - </tr> - <tr> - <td><code>JSTYPE_OBJECT</code></td> - <td>JavaScript オブジェクト</td> - </tr> - <tr> - <td><code>JSTYPE_FUNCTION</code></td> - <td>関数</td> - </tr> - <tr> - <td><code>JSTYPE_STRING</code></td> - <td>文字列</td> - </tr> - <tr> - <td><code>JSTYPE_NUMBER</code></td> - <td>数値</td> - </tr> - <tr> - <td><code>JSTYPE_BOOLEAN</code></td> - <td>真偽値 (<code>true</code> / <code>false</code>)</td> - </tr> - <tr> - <td><code>JSTYPE_NULL</code></td> - <td><code>null</code> 値</td> - </tr> - <tr> - <td><code>JSTYPE_XML</code></td> - <td>XML オブジェクト</td> - </tr> - </tbody> -</table> -<p> </p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_user_guide/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_user_guide/index.html deleted file mode 100644 index 815bdfd6cf..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsapi_user_guide/index.html +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: JSAPI ユーザガイド -slug: Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide -translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide ---- -<p>{{SpiderMonkeySidebar}}{{Draft}}{{Page("/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide")}}</p> diff --git a/files/ja/mozilla/projects/spidermonkey/jsdbgapi_reference/index.html b/files/ja/mozilla/projects/spidermonkey/jsdbgapi_reference/index.html deleted file mode 100644 index c132f23a19..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/jsdbgapi_reference/index.html +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: JSDBGAPI Reference -slug: Mozilla/Projects/SpiderMonkey/JSDBGAPI_Reference -tags: - - JSDBGAPI_Reference - - JavaScript - - SpiderMonkey ---- -<p> -</p><p>見てのとおり、ほとんどすべての項目がドキュメント化されていません。 -</p><p><tt>trap, untrap, watch, unwatch, line2pc</tt> および <tt>pc2line</tt> 関数の実装は {{ Source("js/src/js.c") }} をご覧ください。{{ Source("js/src/jsdbgapi.h") }} にも (わずかに) コメントがあります。 -</p><p>{{ 英語版章題("Breakpoints") }} -</p> -<h3 id=".E3.83.96.E3.83.AC.E3.83.BC.E3.82.AF.E3.83.9D.E3.82.A4.E3.83.B3.E3.83.88" name=".E3.83.96.E3.83.AC.E3.83.BC.E3.82.AF.E3.83.9D.E3.82.A4.E3.83.B3.E3.83.88"> ブレークポイント </h3> -<ul><li> <code><a href="ja/JS_SetTrap">JS_SetTrap</a></code> -</li><li> <code><a href="ja/JS_GetTrapOpcode">JS_GetTrapOpcode</a></code> -</li><li> <code><a href="ja/JS_ClearTrap">JS_ClearTrap</a></code> -</li><li> <code><a href="ja/JS_ClearScriptTraps">JS_ClearScriptTraps</a></code> -</li><li> <code><a href="ja/JS_ClearAllTraps">JS_ClearAllTraps</a></code> -</li><li> <code><a href="ja/JS_HandleTrap">JS_HandleTrap</a></code> -</li><li> <code><a href="ja/JS_SetInterrupt">JS_SetInterrupt</a></code> -</li><li> <code><a href="ja/JS_ClearInterrupt">JS_ClearInterrupt</a></code> -</li></ul> -<p>{{ 英語版章題("Watchpoints") }} -</p> -<h3 id=".E3.82.A6.E3.82.A9.E3.83.83.E3.83.81.E3.83.9D.E3.82.A4.E3.83.B3.E3.83.88" name=".E3.82.A6.E3.82.A9.E3.83.83.E3.83.81.E3.83.9D.E3.82.A4.E3.83.B3.E3.83.88"> ウォッチポイント </h3> -<ul><li> <code><a href="ja/JS_SetWatchPoint">JS_SetWatchPoint</a></code> -</li><li> <code><a href="ja/JS_ClearWatchPoint">JS_ClearWatchPoint</a></code> -</li><li> <code><a href="ja/JS_ClearWatchPointsForObject">JS_ClearWatchPointsForObject</a></code> -</li><li> <code><a href="ja/JS_ClearAllWatchPoints">JS_ClearAllWatchPoints</a></code> -</li></ul> -<p>{{ 英語版章題("Inspecting the stack") }} -</p> -<h3 id=".E3.82.B9.E3.82.BF.E3.83.83.E3.82.AF.E3.81.AE.E8.AA.BF.E6.9F.BB" name=".E3.82.B9.E3.82.BF.E3.83.83.E3.82.AF.E3.81.AE.E8.AA.BF.E6.9F.BB"> スタックの調査 </h3> -<ul><li> <code><a href="ja/JS_PCToLineNumber">JS_PCToLineNumber</a></code> -</li><li> <code><a href="ja/JS_LineNumberToPC">JS_LineNumberToPC</a></code> -</li><li> <code><a href="ja/JS_GetFunctionScript">JS_GetFunctionScript</a></code> -</li><li> <code><a href="ja/JS_GetFunctionNative">JS_GetFunctionNative</a></code> -</li><li> <code><a href="ja/JS_GetFunctionFastNative">JS_GetFunctionFastNative</a></code> -</li><li> <code><a href="ja/JS_GetScriptPrincipals">JS_GetScriptPrincipals</a></code> -</li></ul> -<ul><li> typedef <code><a href="ja/JSStackFrame">JSStackFrame</a></code> -</li><li> <code><a href="ja/JS_FrameIterator">JS_FrameIterator</a></code> -</li><li> <code><a href="ja/JS_GetFrameScript">JS_GetFrameScript</a></code> -</li><li> <code><a href="ja/JS_GetFramePC">JS_GetFramePC</a></code> -</li><li> <code><a href="ja/JS_GetScriptedCaller">JS_GetScriptedCaller</a></code> -</li><li> <code><a href="ja/JS_StackFramePrincipals">JS_StackFramePrincipals</a></code> -</li><li> <code><a href="ja/JS_EvalFramePrincipals">JS_EvalFramePrincipals</a></code> -</li><li> <code><a href="ja/JS_GetFrameAnnotation">JS_GetFrameAnnotation</a></code> -</li><li> <code><a href="ja/JS_SetFrameAnnotation">JS_SetFrameAnnotation</a></code> -</li><li> <code><a href="ja/JS_GetFramePrincipalArray">JS_GetFramePrincipalArray</a></code> -</li><li> <code><a href="ja/JS_IsNativeFrame">JS_IsNativeFrame</a></code> -</li><li> <code><a href="ja/JS_GetFrameObject">JS_GetFrameObject</a></code> {{ Deprecated_inline() }} -</li><li> <code><a href="ja/JS_GetFrameScopeChain">JS_GetFrameScopeChain</a></code> -</li><li> <code><a href="ja/JS_GetFrameCallObject">JS_GetFrameCallObject</a></code> -</li><li> <code><a href="ja/JS_GetFrameThis">JS_GetFrameThis</a></code> -</li><li> <code><a href="ja/JS_GetFrameFunction">JS_GetFrameFunction</a></code> -</li><li> <code><a href="ja/JS_GetFrameFunctionObject">JS_GetFrameFunctionObject</a></code> -</li><li> <code><a href="ja/JS_IsConstructorFrame">JS_IsConstructorFrame</a></code> -</li><li> <code><a href="ja/JS_IsDebuggerFrame">JS_IsDebuggerFrame</a></code> -</li><li> <code><a href="ja/JS_GetFrameReturnValue">JS_GetFrameReturnValue</a></code> -</li><li> <code><a href="ja/JS_SetFrameReturnValue">JS_SetFrameReturnValue</a></code> -</li><li> <code><a href="ja/JS_GetFrameCalleeObject">JS_GetFrameCalleeObject</a></code> -</li></ul> -<ul><li> <code><a href="ja/JS_GetScriptFilename">JS_GetScriptFilename</a></code> -</li><li> <code><a href="ja/JS_GetScriptBaseLineNumber">JS_GetScriptBaseLineNumber</a></code> -</li><li> <code><a href="ja/JS_GetScriptLineExtent">JS_GetScriptLineExtent</a></code> -</li><li> <code><a href="ja/JS_GetScriptVersion">JS_GetScriptVersion</a></code> -</li></ul> -<ul><li> <code><a href="ja/JS_GetTopScriptFilenameFlags">JS_GetTopScriptFilenameFlags</a></code> -</li><li> <code><a href="ja/JS_GetScriptFilenameFlags">JS_GetScriptFilenameFlags</a></code> -</li><li> <code><a href="ja/JS_FlagScriptFilenamePrefix">JS_FlagScriptFilenamePrefix</a></code> -</li></ul> -<ul><li> <code><a href="ja/JSFILENAME_NULL">JSFILENAME_NULL</a></code> -</li><li> <code><a href="ja/JSFILENAME_SYSTEM">JSFILENAME_SYSTEM</a></code> -</li><li> <code><a href="ja/JSFILENAME_PROTECTED">JSFILENAME_PROTECTED</a></code> -</li></ul> -<p>{{ 英語版章題("Evaluating debug code") }} -</p> -<h3 id=".E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E3.82.B3.E3.83.BC.E3.83.89.E3.81.AE.E8.A9.95.E4.BE.A1" name=".E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E3.82.B3.E3.83.BC.E3.83.89.E3.81.AE.E8.A9.95.E4.BE.A1"> デバッグコードの評価 </h3> -<ul><li> <code><a href="ja/JS_EvaluateInStackFrame">JS_EvaluateInStackFrame</a></code> -</li></ul> -<p>{{ 英語版章題("Examining object properties") }} -</p> -<h3 id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.83.97.E3.83.AD.E3.83.91.E3.83.86.E3.82.A3.E3.81.AE.E6.A4.9C.E6.9F.BB" name=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.83.97.E3.83.AD.E3.83.91.E3.83.86.E3.82.A3.E3.81.AE.E6.A4.9C.E6.9F.BB"> オブジェクトプロパティの検査 </h3> -<ul><li> typedef <code><a href="ja/JSPropertyDesc">JSPropertyDesc</a></code> -</li></ul> -<ul><li> <code><a href="ja/JSPD_ENUMERATE">JSPD_ENUMERATE</a></code> -</li><li> <code><a href="ja/JSPD_READONLY">JSPD_READONLY</a></code> -</li><li> <code><a href="ja/JSPD_PERMANENT">JSPD_PERMANENT</a></code> -</li><li> <code><a href="ja/JSPD_ALIAS">JSPD_ALIAS</a></code> -</li><li> <code><a href="ja/JSPD_ARGUMENT">JSPD_ARGUMENT</a></code> -</li><li> <code><a href="ja/JSPD_VARIABLE">JSPD_VARIABLE</a></code> -</li><li> <code><a href="ja/JSPD_EXCEPTION">JSPD_EXCEPTION</a></code> -</li><li> <code><a href="ja/JSPD_ERROR">JSPD_ERROR</a></code> -</li></ul> -<ul><li> typedef <code><a href="ja/JSPropertyDescArray">JSPropertyDescArray</a></code> -</li></ul> -<ul><li> <code><a href="ja/JS_PropertyIterator">JS_PropertyIterator</a></code> -</li><li> <code><a href="ja/JS_GetPropertyDesc">JS_GetPropertyDesc</a></code> -</li><li> <code><a href="ja/JS_GetPropertyDescArray">JS_GetPropertyDescArray</a></code> -</li><li> <code><a href="ja/JS_PutPropertyDescArray">JS_PutPropertyDescArray</a></code> -</li></ul> -<p>{{ 英語版章題("Hooks") }} -</p> -<h3 id=".E3.83.95.E3.83.83.E3.82.AF" name=".E3.83.95.E3.83.83.E3.82.AF"> フック </h3> -<ul><li> <code><a href="ja/JS_SetDebuggerHandler">JS_SetDebuggerHandler</a></code> -</li><li> <code><a href="ja/JS_SetSourceHandler">JS_SetSourceHandler</a></code> -</li><li> <code><a href="ja/JS_SetExecuteHook">JS_SetExecuteHook</a></code> -</li><li> <code><a href="ja/JS_SetCallHook">JS_SetCallHook</a></code> -</li><li> <code><a href="ja/JS_SetObjectHook">JS_SetObjectHook</a></code> -</li><li> <code><a href="ja/JS_SetThrowHook">JS_SetThrowHook</a></code> -</li><li> <code><a href="ja/JS_SetDebugErrorHook">JS_SetDebugErrorHook</a></code> -</li><li> <code><a href="ja/JS_SetNewScriptHook">JS_SetNewScriptHook</a></code> -</li><li> <code><a href="ja/JS_SetDestroyScriptHook">JS_SetDestroyScriptHook</a></code> -</li></ul> -<ul><li> <code><a href="ja/JS_GetGlobalDebugHooks">JS_GetGlobalDebugHooks</a></code> -</li><li> <code><a href="ja/JS_SetContextDebugHooks">JS_SetContextDebugHooks</a></code> -</li></ul> -<p>{{ 英語版章題("Memory usage") }} -</p> -<h3 id=".E3.83.A1.E3.83.A2.E3.83.AA.E4.BD.BF.E7.94.A8.E9.87.8F" name=".E3.83.A1.E3.83.A2.E3.83.AA.E4.BD.BF.E7.94.A8.E9.87.8F"> メモリ使用量 </h3> -<ul><li> <code><a href="ja/JS_GetObjectTotalSize">JS_GetObjectTotalSize</a></code> -</li><li> <code><a href="ja/JS_GetFunctionTotalSize">JS_GetFunctionTotalSize</a></code> -</li><li> <code><a href="ja/JS_GetScriptTotalSize">JS_GetScriptTotalSize</a></code> -</li></ul> -<p>{{ 英語版章題("System objects") }} -</p> -<h3 id=".E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88" name=".E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88"> システムオブジェクト </h3> -<ul><li> <code><a href="ja/JS_IsSystemObject">JS_IsSystemObject</a></code> -</li><li> <code><a href="ja/JS_NewSystemObject">JS_NewSystemObject</a></code> -</li></ul> -<p>{{ 英語版章題("Profiling") }} -</p> -<h3 id=".E5.88.86.E6.9E.90" name=".E5.88.86.E6.9E.90"> 分析 </h3> -<p>これらの関数は、Mac プロファイラである Shark を使用して SpiderMonkey アプリケーションを分析するために使用されます。<a href="ja/Profiling_JavaScript_with_Shark">Profiling JavaScript with Shark</a> をご覧ください。 -</p> -<ul><li> <code><a href="ja/JS_ConnectShark">JS_ConnectShark</a></code> -</li><li> <code><a href="ja/JS_DisconnectShark">JS_DisconnectShark</a></code> -</li><li> <code><a href="ja/JS_StartChudRemote">JS_StartChudRemote</a></code> -</li><li> <code><a href="ja/JS_StopChudRemote">JS_StopChudRemote</a></code> -</li></ul> -<p>以下の <code><a href="ja/JSNative">JSNative</a></code> 関数は、上記 4 つの API をスクリプトに晒すために使用されます。 -</p> -<ul><li> <code><a href="ja/Js_ConnectShark">js_ConnectShark</a></code> -</li><li> <code><a href="ja/Js_DisconnectShark">js_DisconnectShark</a></code> -</li><li> <code><a href="ja/Js_StartShark">js_StartShark</a></code> -</li><li> <code><a href="ja/Js_StopShark">js_StopShark</a></code> -</li></ul> -{{ languages( { "en": "en/JSDBGAPI_Reference" } ) }} diff --git a/files/ja/mozilla/projects/spidermonkey/parser_api/index.html b/files/ja/mozilla/projects/spidermonkey/parser_api/index.html deleted file mode 100644 index 81b308c6f6..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/parser_api/index.html +++ /dev/null @@ -1,1698 +0,0 @@ ---- -title: Parser API -slug: Mozilla/Projects/SpiderMonkey/Parser_API -tags: - - API - - Guide - - JavaScript - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Parser_API ---- -<div>{{SpiderMonkeySidebar}}</div> - -<div class="summary"> -<p>最近の<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation">スタンドアロンの SpiderMonkey シェル</a>のビルドには、SpiderMonkey パーサーを反映したものが含まれています。これは JavaScript API として提供されています。これにより、シンタックスハイライト、静的解析、トランスレータ、コンパイラ、難読化ツールなど、JavaScript ソースプログラムを操作するツールを JavaScript で記述することが簡単になります。</p> -</div> - -<div class="note"> -<p><strong>メモ:</strong> このページは SpiderMonkey 特有の振る舞いについて説明しており、不完全かもしれません。最新の ECMAScript 機能を含み、SpiderMonkey フォーマットとの下位互換性があるコミュニティ AST 規格については、<a href="https://github.com/estree/estree">ESTree の仕様</a>をご覧ください。</p> -</div> - -<p>例:</p> - -<pre class="notranslate">> var expr = Reflect.parse("obj.foo + 42").body[0].expression -> expr.left.property -({loc:null, type:"Identifier", name:"foo"}) -> expr.right -({loc:{source:null, start:{line:1, column:10}, end:{line:1, column:12}}, type:"Literal", value:42}) -</pre> - -<p>Firefox 7 以降も利用可能です。次のようにしてグローバルオブジェクトにインポートすることができます。</p> - -<pre class="notranslate">Components.utils.import("resource://gre/modules/reflect.jsm") -</pre> - -<p>または指定されたオブジェクトへ:</p> - -<pre class="notranslate">Components.utils.import("resource://gre/modules/reflect.jsm", obj) -</pre> - -<h2 id="組み込みオブジェクト">組み込みオブジェクト</h2> - -<p>SpiderMonkey シェルであっても Firefox (インポート後) であっても、グローバルシングルトンオブジェクト <code>Reflect</code> は現在 <code>parse</code> メソッドだけを含んでいます。</p> - -<h2 id="Reflect_オブジェクトのプロパティ"><code>Reflect</code> オブジェクトのプロパティ</h2> - -<p><code>Reflect</code> オブジェクトは現在単一のメソッドで構成されています。</p> - -<h4 id="Reflect.parsesrc_options"><code>Reflect.parse(src[, options])</code></h4> - -<p><strong><span style="font-family: Courier New;">src</span></strong> を文字列に強制し、結果を JavaScript プログラムとして解析します。デフォルトでは、解析にされた抽象構文ツリー (AST) を表す Program オブジェクト(以下を参照)が返されます。</p> - -<p>追加のオプションは、以下のプロパティのいずれかを含めることができる <strong><span style="font-family: Courier New;">options</span></strong> オブジェクトを介して提供可能です:</p> - -<table style="border-color: #edf2f7; border-style: solid; border-width: 1px; width: 67%;"> - <tbody> - <tr style="background-color: rgb(241, 246, 251);"> - <td><strong><span style="font-family: Courier New;">loc</span></strong></td> - <td>Boolean</td> - <td>Default: <span style="font-family: Courier New;">true</span></td> - </tr> - <tr> - <td colspan="3">When <strong><span style="font-family: Courier New;">loc</span></strong> is <span style="font-family: Courier New;">true</span>, the parser includes source location information in the returned AST nodes.</td> - </tr> - <tr style="background-color: rgb(241, 246, 251);"> - <td><strong><span style="font-family: Courier New;">source</span></strong></td> - <td>String</td> - <td>Default: <span style="font-family: Courier New;">null</span></td> - </tr> - <tr> - <td colspan="3">A description of the input source; typically a filename, path, or URL. This string is not meaningful to the parsing process, but is produced as part of the source location information in the returned AST nodes.</td> - </tr> - <tr style="background-color: rgb(241, 246, 251);"> - <td><strong><span style="font-family: Courier New;">line</span></strong></td> - <td>Number</td> - <td>Default: <span style="font-family: Courier New;">1</span></td> - </tr> - <tr> - <td colspan="3">The initial line number to use for source location information.</td> - </tr> - <tr style="background-color: rgb(241, 246, 251);"> - <td><strong><span style="font-family: Courier New;">builder</span></strong></td> - <td>Builder</td> - <td>Default: <span style="font-family: Courier New;">null</span></td> - </tr> - <tr> - <td colspan="3"> - <p>A builder object, which can be used to produce AST nodes in custom data formats. The expected callback methods are described under <a href="/en/SpiderMonkey/Parser_API#Builder_objects" title="en/SpiderMonkey/Parser API#Builder objects">Builder Objects</a>.</p> - </td> - </tr> - <tr style="background-color: rgb(241, 246, 251);"> - <td><strong><span style="font-family: Courier New;">target</span></strong></td> - <td>String</td> - <td>Default: <span style="font-family: Courier New;">script</span></td> - </tr> - <tr> - <td colspan="3"> - <p>A type of the parsing target, can be either <span style="font-family: Courier New;">script</span> or <span style="font-family: Courier New;">module</span>.</p> - </td> - </tr> - </tbody> -</table> - -<p>If parsing fails due to a syntax error, an instance of <code>SyntaxError</code> is thrown. The syntax error object thrown by <code>Reflect.parse()</code> has the same <code>message</code> property as the syntax error that would be thrown by <code>eval(src)</code>. The <code>lineNumber</code> and <code>fileName</code> properties of the syntax error object indicate the source location of the syntax error.</p> - -<h2 id="Node_オブジェクト">Node オブジェクト</h2> - -<p>By default, <code>Reflect.parse()</code> produces Node objects, which are plain JavaScript objects (i.e., their prototype derives from the standard <code>Object</code> prototype). All node types implement the following interface:</p> - -<pre class="notranslate">interface Node { - type: string; - loc: SourceLocation | null; -} -</pre> - -<p>The <code>type</code> field is a string representing the AST variant type. Each subtype of Node is documented below with the specific string of its <code>type</code> field. You can use this field to determine which interface a node implements.</p> - -<p>The <code>loc</code> field represents the source location information of the node. If the parser produced no information about the node's source location, the field is <code>null</code>; otherwise it is an object consisting of a start position (the position of the first character of the parsed source region) and an end position (the position of the first character <em>after</em> the parsed source region):</p> - -<pre class="notranslate">interface SourceLocation { - source: string | null; - start: Position; - end: Position; -} -</pre> - -<p>Each <code>Position</code> object consists of a <code>line</code> number (1-indexed) and a <code>column</code> number (0-indexed):</p> - -<pre class="notranslate">interface Position { - line: uint32 >= 1; - column: uint32 >= 0; -}</pre> - -<h3 id="Programs">Programs</h3> - -<pre class="notranslate">interface Program <: Node { - type: "Program"; - body: [ Statement ]; -} -</pre> - -<p>A complete program source tree.</p> - -<h3 id="Functions">Functions</h3> - -<pre class="notranslate">interface Function <: Node { - id: Identifier | null; - params: [ Pattern ]; - defaults: [ Expression ]; - rest: Identifier | null; - body: BlockStatement | Expression; - generator: boolean; - expression: boolean; -} -</pre> - -<p>A function declaration or expression. The <code>body</code> of the function may be a block statement, or in the case of an <a href="/en/JavaScript/New_in_JavaScript/1.8#Expression_closures_%28Merge_into_own_page.2fsection%29" title="https://developer.mozilla.org/en/new_in_javascript_1.8#Expression_closures_(Merge_into_own_page.2fsection)">expression closure</a>, an expression.</p> - -<div class="note"><strong>メモ:</strong> Expression closures are SpiderMonkey-specific.</div> - -<p>If the <code>generator</code> flag is <code>true</code>, the function is a <a href="/en/JavaScript/Guide/Iterators_and_Generators" title="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Iterators_and_Generators">generator function</a>, i.e., contains a <code>yield</code> expression in its body (other than in a nested function).</p> - -<div class="note"><strong>メモ:</strong> Generators are SpiderMonkey-specific.</div> - -<p>If the <code>expression</code> flag is <code>true</code>, the function is an expression closure and the <code>body</code> field is an expression.</p> - -<h3 id="Statements">Statements</h3> - -<pre class="notranslate">interface Statement <: Node { } -</pre> - -<p>Any statement.</p> - -<pre class="notranslate">interface EmptyStatement <: Statement { - type: "EmptyStatement"; -} -</pre> - -<p>An empty statement, i.e., a solitary semicolon.</p> - -<pre class="notranslate">interface BlockStatement <: Statement { - type: "BlockStatement"; - body: [ Statement ]; -} -</pre> - -<p>A block statement, i.e., a sequence of statements surrounded by braces.</p> - -<pre class="notranslate">interface ExpressionStatement <: Statement { - type: "ExpressionStatement"; - expression: Expression; -} -</pre> - -<p>An expression statement, i.e., a statement consisting of a single expression.</p> - -<pre class="notranslate">interface IfStatement <: Statement { - type: "IfStatement"; - test: Expression; - consequent: Statement; - alternate: Statement | null; -} -</pre> - -<p>An <code>if</code> statement.</p> - -<pre class="notranslate">interface LabeledStatement <: Statement { - type: "LabeledStatement"; - label: Identifier; - body: Statement; -} -</pre> - -<p>A labeled statement, i.e., a statement prefixed by a <code>break</code>/<code>continue</code> label.</p> - -<pre class="notranslate">interface BreakStatement <: Statement { - type: "BreakStatement"; - label: Identifier | null; -} -</pre> - -<p>A <code>break</code> statement.</p> - -<pre class="notranslate">interface ContinueStatement <: Statement { - type: "ContinueStatement"; - label: Identifier | null; -} -</pre> - -<p>A <code>continue</code> statement.</p> - -<pre class="notranslate">interface WithStatement <: Statement { - type: "WithStatement"; - object: Expression; - body: Statement; -} -</pre> - -<p>A <code>with</code> statement.</p> - -<pre class="notranslate">interface SwitchStatement <: Statement { - type: "SwitchStatement"; - discriminant: Expression; - cases: [ SwitchCase ]; - lexical: boolean; -} -</pre> - -<p>A <code>switch</code> statement. The lexical flag is metadata indicating whether the <code>switch</code> statement contains any unnested <code>let</code> 宣言 (and therefore introduces a new lexical scope).</p> - -<pre class="notranslate">interface ReturnStatement <: Statement { - type: "ReturnStatement"; - argument: Expression | null; -} -</pre> - -<p>A <code>return</code> statement.</p> - -<pre class="notranslate">interface ThrowStatement <: Statement { - type: "ThrowStatement"; - argument: Expression; -} -</pre> - -<p>A <code>throw</code> statement.</p> - -<pre class="notranslate">interface TryStatement <: Statement { - type: "TryStatement"; - block: BlockStatement; - handler: CatchClause | null; - guardedHandlers: [ CatchClause ]; - finalizer: BlockStatement | null; -} -</pre> - -<p>A <code>try</code> statement.</p> - -<div class="note"><strong>メモ:</strong> Multiple <code>catch</code> clauses are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface WhileStatement <: Statement { - type: "WhileStatement"; - test: Expression; - body: Statement; -} -</pre> - -<p>A <code>while</code> statement.</p> - -<pre class="notranslate">interface DoWhileStatement <: Statement { - type: "DoWhileStatement"; - body: Statement; - test: Expression; -} -</pre> - -<p>A <code>do</code>/<code>while</code> statement.</p> - -<pre class="notranslate">interface ForStatement <: Statement { - type: "ForStatement"; - init: VariableDeclaration | Expression | null; - test: Expression | null; - update: Expression | null; - body: Statement; -} -</pre> - -<p>A <code>for</code> statement.</p> - -<pre class="notranslate">interface ForInStatement <: Statement { - type: "ForInStatement"; - left: VariableDeclaration | Expression; - right: Expression; - body: Statement; - each: boolean; -} -</pre> - -<p>A <code>for</code>/<code>in</code> statement, or, if <code>each</code> is <code>true</code>, a <code>for each</code>/<code>in</code> statement.</p> - -<div class="note"><strong>メモ:</strong> The <code>for each</code> form is SpiderMonkey-specific.</div> - -<pre class="notranslate">interface ForOfStatement <: Statement { - type: "ForOfStatement"; - left: VariableDeclaration | Expression; - right: Expression; - body: Statement; -}</pre> - -<p>A <code>for</code>/<code>of</code> statement.</p> - -<pre class="notranslate">interface LetStatement <: Statement { - type: "LetStatement"; - head: [ VariableDeclarator ]; - body: Statement; -} -</pre> - -<p>A <code>let</code> statement.</p> - -<div class="note"><strong>メモ:</strong> The <code>let</code> statement form is SpiderMonkey-specific.</div> - -<pre class="notranslate">interface DebuggerStatement <: Statement { - type: "DebuggerStatement"; -} -</pre> - -<p>A <code>debugger</code> statement.</p> - -<div class="note"><strong>メモ:</strong> The <code>debugger</code> statement is new in ECMAScript 5th edition, although SpiderMonkey has supported it for years.</div> - -<h3 id="宣言">宣言</h3> - -<pre class="notranslate">interface Declaration <: Statement { } -</pre> - -<p>Any declaration node. Note that 宣言 are considered statements; this is because 宣言 can appear in any statement context in the language recognized by the SpiderMonkey parser.</p> - -<div class="note"><strong>メモ:</strong> 宣言 in arbitrary nested scopes are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface FunctionDeclaration <: Function, Declaration { - type: "FunctionDeclaration"; - id: Identifier; - params: [ Pattern ]; - defaults: [ Expression ]; - rest: Identifier | null; - body: BlockStatement | Expression; - generator: boolean; - expression: boolean; -} -</pre> - -<p>A function declaration.</p> - -<div class="note"><strong>メモ:</strong> The <code>id</code> field cannot be <code>null</code>.</div> - -<pre class="notranslate">interface VariableDeclaration <: Declaration { - type: "VariableDeclaration"; - 宣言: [ VariableDeclarator ]; - kind: "var" | "let" | "const"; -} -</pre> - -<p>A variable declaration, via one of <code>var</code>, <code>let</code>, or <code>const</code>.</p> - -<pre class="notranslate">interface VariableDeclarator <: Node { - type: "VariableDeclarator"; - id: Pattern; - init: Expression | null; -} -</pre> - -<p>A variable declarator.</p> - -<div class="note"><strong>メモ:</strong> The <code>id</code> field cannot be <code>null</code>.</div> - -<div class="note"><strong>メモ:</strong> <code>let</code> and <code>const</code> are SpiderMonkey-specific.</div> - -<h3 id="Expressions">Expressions</h3> - -<pre class="notranslate">interface Expression <: Node, Pattern { }</pre> - -<p>Any expression node. Since the left-hand side of an assignment may be any expression in general, an expression can also be a pattern.</p> - -<pre class="notranslate">interface ThisExpression <: Expression { - type: "ThisExpression"; -} -</pre> - -<p>A <code>this</code> expression.</p> - -<pre class="notranslate">interface ArrayExpression <: Expression { - type: "ArrayExpression"; - elements: [ Expression | null ]; -}</pre> - -<p>An array expression.</p> - -<pre class="notranslate">interface ObjectExpression <: Expression { - type: "ObjectExpression"; - properties: [ Property ]; -}</pre> - -<p>An object expression.</p> - -<pre class="notranslate">interface Property <: Node { - type: "Property"; - key: Literal | Identifier; - value: Expression; - kind: "init" | "get" | "set"; -}</pre> - -<p>A literal property in an object expression can have either a string or number as its <code>value</code>. Ordinary property initializers have a <code>kind</code> value <code>"init"</code>; getters and setters have the <code>kind</code> values <code>"get"</code> and <code>"set"</code>, respectively.</p> - -<pre class="notranslate">interface FunctionExpression <: Function, Expression { - type: "FunctionExpression"; - id: Identifier | null; - params: [ Pattern ]; - defaults: [ Expression ]; - rest: Identifier | null; - body: BlockStatement | Expression; - generator: boolean; - expression: boolean; -} -</pre> - -<p>A function expression.</p> - -<pre class="notranslate">interface ArrowExpression <: Function, Expression { - type: "ArrowExpression"; - params: [ Pattern ]; - defaults: [ Expression ]; - rest: Identifier | null; - body: BlockStatement | Expression; - generator: boolean; - expression: boolean; -} -</pre> - -<p>A fat arrow function expression, i.e., `let foo = (bar) => { /* body */ }`.</p> - -<pre class="notranslate">interface SequenceExpression <: Expression { - type: "SequenceExpression"; - expressions: [ Expression ]; -}</pre> - -<p>A sequence expression, i.e., a comma-separated sequence of expressions.</p> - -<pre class="notranslate">interface UnaryExpression <: Expression { - type: "UnaryExpression"; - operator: UnaryOperator; - prefix: boolean; - argument: Expression; -}</pre> - -<p>A unary operator expression.</p> - -<pre class="notranslate">interface BinaryExpression <: Expression { - type: "BinaryExpression"; - operator: BinaryOperator; - left: Expression; - right: Expression; -}</pre> - -<p>A binary operator expression.</p> - -<pre class="notranslate">interface AssignmentExpression <: Expression { - type: "AssignmentExpression"; - operator: AssignmentOperator; - left: Pattern; - right: Expression; -}</pre> - -<p>An assignment operator expression.</p> - -<pre class="notranslate">interface UpdateExpression <: Expression { - type: "UpdateExpression"; - operator: UpdateOperator; - argument: Expression; - prefix: boolean; -}</pre> - -<p>An update (increment or decrement) operator expression.</p> - -<pre class="notranslate">interface LogicalExpression <: Expression { - type: "LogicalExpression"; - operator: LogicalOperator; - left: Expression; - right: Expression; -}</pre> - -<p>A logical operator expression.</p> - -<pre class="notranslate">interface ConditionalExpression <: Expression { - type: "ConditionalExpression"; - test: Expression; - alternate: Expression; - consequent: Expression; -}</pre> - -<p>A conditional expression, i.e., a ternary <code>?</code>/<code>:</code> expression.</p> - -<pre class="notranslate">interface NewExpression <: Expression { - type: "NewExpression"; - callee: Expression; - arguments: [ Expression ]; -}</pre> - -<p>A <code>new</code> expression.</p> - -<pre class="notranslate">interface CallExpression <: Expression { - type: "CallExpression"; - callee: Expression; - arguments: [ Expression ]; -}</pre> - -<p>A function or method call expression.</p> - -<pre class="notranslate">interface MemberExpression <: Expression { - type: "MemberExpression"; - object: Expression; - property: Identifier | Expression; - computed: boolean; -}</pre> - -<p>A member expression. If <code>computed === true</code>, the node corresponds to a computed <code>e1[e2]</code> expression and property is an <code>Expression</code>. If <code>computed === false</code>, the node corresponds to a static <code>e1.x</code> expression and property is an <code>Identifier</code>.</p> - -<pre class="notranslate">interface YieldExpression <: Expression { - type: "YieldExpression"; - argument: Expression | null; -} -</pre> - -<p>A <code>yield</code> expression.</p> - -<div class="note"><strong>メモ:</strong> <code>yield</code> expressions are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface ComprehensionExpression <: Expression { - type: "ComprehensionExpression"; - body: Expression; - blocks: [ ComprehensionBlock | ComprehensionIf ]; - filter: Expression | null; -} -</pre> - -<p>An <a href="/en/JavaScript/Guide/Obsolete_Pages/Working_with_Arrays#Array_comprehensions" title="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Working_with_Arrays#Array_comprehensions">array comprehension</a>. The <code>blocks</code> array corresponds to the sequence of <code>for</code> and <code>for each</code> blocks. The optional <code>filter</code> expression corresponds to the final <code>if</code> clause, if present.</p> - -<div class="note"><strong>メモ:</strong> Array comprehensions are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface GeneratorExpression <: Expression { - type: "GeneratorExpression"; - body: Expression; - blocks: [ ComprehensionBlock | ComprehensionIf ]; - filter: Expression | null; -} -</pre> - -<p>A <a href="/en/JavaScript/Guide/Iterators_and_Generators#Generator_expressions" title="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Iterators_and_Generators#Generator_expressions">generator expression</a>. As with array comprehensions, the <code>blocks</code> array corresponds to the sequence of <code>for</code> and <code>for each</code> blocks, and the optional <code>filter</code> expression corresponds to the final <code>if</code> clause, if present.</p> - -<div class="note"><strong>メモ:</strong> Generator expressions are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface GraphExpression <: Expression { - type: "GraphExpression"; - index: uint32; - expression: Literal; -} -</pre> - -<p>A <a href="/en/JavaScript/Sharp_variables_in_JavaScript" title="https://developer.mozilla.org/en/Sharp_variables_in_JavaScript">graph expression</a>, aka "sharp literal," such as <code>#1={ self: #1# }</code>.</p> - -<div class="note"><strong>メモ:</strong> Graph expressions are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface GraphIndexExpression <: Expression { - type: "GraphIndexExpression"; - index: uint32; -} -</pre> - -<p>A <a href="/en/JavaScript/Sharp_variables_in_JavaScript" title="https://developer.mozilla.org/en/Sharp_variables_in_JavaScript">graph index expression</a>, aka "sharp variable," such as <code>#1#</code>.</p> - -<div class="note"><strong>メモ:</strong> Graph index expressions are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface LetExpression <: Expression { - type: "LetExpression"; - head: [ VariableDeclarator ]; - body: Expression; -} -</pre> - -<p>A <code>let</code> expression.</p> - -<div class="note"><strong>メモ:</strong> The <code>let</code> expression form is SpiderMonkey-specific.</div> - -<h3 id="Patterns">Patterns</h3> - -<pre class="notranslate">interface Pattern <: Node { } -</pre> - -<p>JavaScript 1.7 introduced <a href="/en/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment_%28Merge_into_own_page.2fsection%29" title="https://developer.mozilla.org/en/new_in_javascript_1.7#Destructuring_assignment_(Merge_into_own_page.2fsection)">destructuring assignment and binding</a> forms. All binding forms (such as function parameters, variable 宣言, and <code>catch</code> block headers) accept array and object destructuring patterns in addition to plain identifiers. The left-hand sides of assignment expressions can be arbitrary expressions, but in the case where the expression is an object or array literal, it is interpreted by SpiderMonkey as a destructuring pattern.</p> - -<p>Since the left-hand side of an assignment can in general be any expression, in an assignment context, a pattern can be any expression. In binding positions (such as function parameters, variable 宣言, and <code>catch</code> headers), patterns can only be identifiers in the base case, not arbitrary expressions.</p> - -<pre class="notranslate">interface ObjectPattern <: Pattern { - type: "ObjectPattern"; - properties: [ { key: Literal | Identifier, value: Pattern } ]; -} -</pre> - -<p>An object-destructuring pattern. A literal property in an object pattern can have either a string or number as its <code>value</code>.</p> - -<pre class="notranslate">interface ArrayPattern <: Pattern { - type: "ArrayPattern"; - elements: [ Pattern | null ]; -} -</pre> - -<p>An array-destructuring pattern.</p> - -<h3 id="Clauses">Clauses</h3> - -<pre class="notranslate">interface SwitchCase <: Node { - type: "SwitchCase"; - test: Expression | null; - consequent: [ Statement ]; -} -</pre> - -<p>A <code>case</code> (if <code>test</code> is an <code>Expression</code>) or <code>default</code> (if <code>test === null</code>) clause in the body of a <code>switch</code> statement.</p> - -<pre class="notranslate">interface CatchClause <: Node { - type: "CatchClause"; - param: Pattern; - guard: Expression | null; - body: BlockStatement; -} -</pre> - -<p>A <code>catch</code> clause following a <code>try</code> block. The optional <code>guard</code> property corresponds to the optional expression guard on the bound variable.</p> - -<div class="note"><strong>メモ:</strong> The guard expression is SpiderMonkey-specific.</div> - -<pre class="notranslate">interface ComprehensionBlock <: Node { - type: "ComprehensionBlock"; - left: Pattern; - right: Expression; - each: boolean; -} -</pre> - -<p>A <code>for</code> or <code>for each</code> block in an array comprehension or generator expression.</p> - -<pre class="notranslate">interface ComprehensionIf <: Node { - type: "ComprehensionIf"; - test: Expression; -}</pre> - -<p>An <code>if</code> filter in an array comprehension or generator filter.</p> - -<div class="note"><strong>メモ:</strong> Array comprehensions and generator expressions are SpiderMonkey-specific.</div> - -<h3 id="Miscellaneous">Miscellaneous</h3> - -<pre class="notranslate">interface Identifier <: Node, Expression, Pattern { - type: "Identifier"; - name: string; -} -</pre> - -<p>An identifier. Note that an identifier may be an expression or a destructuring pattern.</p> - -<pre class="notranslate">interface Literal <: Node, Expression { - type: "Literal"; - value: string | boolean | null | number | RegExp; -} -</pre> - -<p>A literal token. Note that a literal can be an expression.</p> - -<pre class="notranslate">enum UnaryOperator { - "-" | "+" | "!" | "~" | "typeof" | "void" | "delete" -} -</pre> - -<p>A unary operator token.</p> - -<pre class="notranslate">enum BinaryOperator { - "==" | "!=" | "===" | "!==" - | "<" | "<=" | ">" | ">=" - | "<<" | ">>" | ">>>" - | "+" | "-" | "*" | "/" | "%" - | "|" | "^" | "&" | "in" - | "instanceof" | ".." -} -</pre> - -<p>A binary operator token.</p> - -<div class="note"><strong>メモ:</strong> The <code>..</code> operator is E4X-specific.</div> - -<pre class="notranslate">enum LogicalOperator { - "||" | "&&" -} -</pre> - -<p>A logical operator token.</p> - -<pre class="notranslate">enum AssignmentOperator { - "=" | "+=" | "-=" | "*=" | "/=" | "%=" - | "<<=" | ">>=" | ">>>=" - | "|=" | "^=" | "&=" -} -</pre> - -<p>An assignment operator token.</p> - -<pre class="notranslate">enum UpdateOperator { - "++" | "--" -} -</pre> - -<p>An update (increment or decrement) operator token.</p> - -<h3 id="E4X">E4X</h3> - -<p>This section describes node types that are provided for E4X support. E4X has since been removed as of Gecko 21.</p> - -<p>{{ Obsolete_header() }}</p> - -<div class="note"><strong>メモ:</strong> E4X is not part of the ECMAScript standard (<a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-262.htm" title="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMA-262</a>), but is a separate standard of its own (<a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-357.htm" title="http://www.ecma-international.org/publications/standards/Ecma-357.htm">ECMA-357</a>).</div> - -<h4 id="宣言_2">宣言</h4> - -<pre class="notranslate">interface XMLDefaultDeclaration <: Declaration { - type: "XMLDefaultDeclaration"; - namespace: Expression; -} -</pre> - -<p>A <code>default xml namespace</code> declaration.</p> - -<h4 id="Expressions_2">Expressions</h4> - -<pre class="notranslate">interface XMLAnyName <: Expression { - type: "XMLAnyName"; -} -</pre> - -<p>The special E4X wildcard pseudo-identifier <code>*</code>.</p> - -<pre class="notranslate">interface XMLQualifiedIdentifier <: Expression { - type: "XMLQualifiedIdentifier"; - left: Identifier | XMLAnyName; - right: Identifier | Expression; - computed: boolean; -} -</pre> - -<p>An E4X qualified identifier, i.e., a pseudo-identifier using the namespace separator <code>::</code>. If the qualified identifier has a computed name (i.e., the <code>id::[expr]</code> form), then <code>computed</code> is <code>true</code> and the <code>right</code> property is an expression.</p> - -<pre class="notranslate">interface XMLFunctionQualifiedIdentifier <: Expression { - type: "XMLFunctionQualifiedIdentifier"; - right: Identifier | Expression; - computed: boolean; -} -</pre> - -<p>An E4X identifier qualified by the <code>function</code> keyword, e.g., <code>function::id</code>.</p> - -<div class="note"><strong>メモ:</strong> <code>function</code>-qualified identifiers are SpiderMonkey-specific.</div> - -<pre class="notranslate">interface XMLAttributeSelector <: Expression { - type: "XMLAttributeSelector"; - attribute: Expression; -} -</pre> - -<p>An E4X attribute selector expression, i.e., an <code>@</code> expression.</p> - -<pre class="notranslate">interface XMLFilterExpression <: Expression { - type: "XMLFilterExpression"; - left: Expression; - right: Expression; -} -</pre> - -<p>An E4X list filter expression, i.e., an expression of the form <code>expr.(expr)</code>.</p> - -<pre class="notranslate">interface XMLElement <: XML, Expression { - type: "XMLElement"; - contents: [ XML ]; -} -</pre> - -<p>An E4X literal representing a single XML element.</p> - -<pre class="notranslate">interface XMLList <: XML, Expression { - type: "XMLList"; - contents: [ XML ]; -} -</pre> - -<p>An E4X literal representing a list of XML elements.</p> - -<h4 id="XML">XML</h4> - -<pre class="notranslate">interface XML <: Node { } -</pre> - -<p>XML data.</p> - -<pre class="notranslate">interface XMLEscape <: XML { - type: "XMLEscape"; - expression: Expression; -} -</pre> - -<p>XML data with an escaped JavaScript expression.</p> - -<pre class="notranslate">interface XMLText <: XML { - type: "XMLText"; - text: string; -} -</pre> - -<p>Literal XML text.</p> - -<pre class="notranslate">interface XMLStartTag <: XML { - type: "XMLStartTag"; - contents: [ XML ]; -} -</pre> - -<p>An XML start tag.</p> - -<pre class="notranslate">interface XMLEndTag <: XML { - type: "XMLEndTag"; - contents: [ XML ]; -} -</pre> - -<p>An XML end tag.</p> - -<pre class="notranslate">interface XMLPointTag <: XML { - type: "XMLPointTag"; - contents: [ XML ]; -} -</pre> - -<p>An XML point tag.</p> - -<pre class="notranslate">interface XMLName <: XML { - type: "XMLName"; - contents: string | [ XML ]; -} -</pre> - -<p>An XML name.</p> - -<pre class="notranslate">interface XMLAttribute <: XML { - type: "XMLAttribute"; - value: string; -} -</pre> - -<p>An XML attribute value.</p> - -<pre class="notranslate">interface XMLCdata <: XML { - type: "XMLCdata"; - contents: string; -} -</pre> - -<p>An XML CDATA node.</p> - -<pre class="notranslate">interface XMLComment <: XML { - type: "XMLComment"; - contents: string; -} -</pre> - -<p>An XML comment.</p> - -<pre class="notranslate">interface XMLProcessingInstruction <: XML { - type: "XMLProcessingInstruction"; - target: string; - contents: string | null; -} -</pre> - -<p>An XML processing instruction.</p> - -<h2 id="ビルダーオブジェクト">ビルダーオブジェクト</h2> - -<p>The optional <strong><code>builder</code></strong> parameter to <code>Reflect.parse()</code> makes it possible to construct user-specified data from the parser, rather than the default <code>Node</code> objects. Builder objects may contain any of the callback methods described in this section.</p> - -<p>Each callback can produce any custom, user-defined datatype; these are referred to below as <code>CustomExpression</code>, <code>CustomStatement</code>, etc.</p> - -<div class="note"><strong>メモ:</strong> Because this library uses <code>null</code> for optional nodes, it is recommended that user-defined datatypes <strong>not</strong> use <code>null</code> as a representation of an AST node.</div> - -<p>If the <strong><code>loc</code></strong> option is enabled (see the <a href="/en/SpiderMonkey/Parser_API#Reflect.parse(src.5b.2c_options.5d)" title="en/SpiderMonkey/Parser API#Reflect.parse(src.5b.2c options.5d)">Reflect.parse() options</a> above), then each callback is provided with the source location information of the parsed node as an extra parameter.</p> - -<p>All builder callbacks are optional. When a callback is missing, the default format is used, but the provided builder methods are still used recursively for sub-nodes.</p> - -<h3 id="Programs_2">Programs</h3> - -<h5 id="programbody_loc"><code>program(body[, loc])</code></h5> - -<pre class="notranslate">body: [ CustomStatement ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomProgram</p> - -<p>Callback to produce a custom program node.</p> - -<h3 id="Statements_2">Statements</h3> - -<h5 id="emptyStatementloc"><code>emptyStatement([loc])</code></h5> - -<pre class="notranslate">loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom empty statement node.</p> - -<h5 id="blockStatementbody_loc"><code>blockStatement(body[, loc])</code></h5> - -<pre class="notranslate">body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom block statement node.</p> - -<h5 id="expressionStatementexpr_loc"><code>expressionStatement(expr[, loc])</code></h5> - -<pre class="notranslate">expr: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom expression statement node.</p> - -<h5 id="labeledStatementlabel_body_loc"><code>labeledStatement(label, body[, loc])</code></h5> - -<pre class="notranslate">label: CustomIdentifier -body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom labeled statement node.</p> - -<h5 id="ifStatementtest_cons_alt_loc"><code>ifStatement(test, cons, alt[, loc])</code></h5> - -<pre class="notranslate">test: CustomExpression -cons: CustomStatement -alt: CustomStatement | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>if</code> statement node.</p> - -<h5 id="switchStatementdisc_cases_isLexical_loc"><code>switchStatement(disc, cases, isLexical[, loc])</code></h5> - -<pre class="notranslate">disc: CustomExpression -cases: [ CustomSwitchCase ] -isLexical: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>switch</code> statement node. The <strong><code>isLexical</code></strong> flag is metadata indicating whether the <code>switch</code> statement contains any unnested <code>let</code> 宣言 (and therefore introduces a new lexical scope).</p> - -<h5 id="whileStatementtest_body_loc"><code>whileStatement(test, body[, loc])</code></h5> - -<pre class="notranslate">test: CustomExpression -body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>while</code> statement node.</p> - -<h5 id="doWhileStatementbody_test_loc"><code>doWhileStatement(body, test[, loc])</code></h5> - -<pre class="notranslate">body: CustomStatement -test: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>do</code>-<code>while</code> statement node.</p> - -<h5 id="forStatementinit_test_update_body_loc"><code>forStatement(init, test, update, body[, loc])</code></h5> - -<pre class="notranslate">init: CustomVariableDeclaration | CustomExpression | null -test: CustomExpression | null -update: CustomExpression | null -body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>for</code> statement node.</p> - -<h5 id="forInStatementleft_right_body_isForEach_loc"><code>forInStatement(left, right, body, isForEach[, loc])</code></h5> - -<pre class="notranslate">left: CustomVariableDeclaration | CustomExpression -right: CustomExpression -body: CustomStatement -isForEach: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>for</code>-<code>in</code> statement node. The <strong><code>isForEach</code></strong> flag indicates whether the node is a <code>for each</code> statement.</p> - -<h5 id="breakStatementlabel_loc"><code>breakStatement(label[, loc])</code></h5> - -<pre class="notranslate">label: CustomIdentifier | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>break</code> statement node.</p> - -<h5 id="continueStatementlabel_loc"><code>continueStatement(label[, loc])</code></h5> - -<pre class="notranslate">label: CustomIdentifier | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>continue</code> statement node.</p> - -<h5 id="withStatementobj_body_loc"><code>withStatement(obj, body[, loc])</code></h5> - -<pre class="notranslate">obj: CustomExpression -body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>with</code> statement node.</p> - -<h5 id="returnStatementarg_loc"><code>returnStatement(arg[, loc])</code></h5> - -<pre class="notranslate">arg: CustomExpression | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>return</code> statement node.</p> - -<h5 id="tryStatementbody_handlers_fin_loc"><code>tryStatement(body, handlers, fin[, loc])</code></h5> - -<pre class="notranslate">body: CustomStatement -handlers: [ CustomCatchClause ] -fin: CustomStatement | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>try</code> statement node.</p> - -<h5 id="throwStatementarg_loc"><code>throwStatement(arg[, loc])</code></h5> - -<pre class="notranslate">arg: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>throw</code> statement node.</p> - -<h5 id="debuggerStatementloc"><code>debuggerStatement([loc])</code></h5> - -<pre class="notranslate">loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>debugger</code> statement node.</p> - -<h5 id="letStatementhead_body_loc"><code>letStatement(head, body[, loc])</code></h5> - -<pre class="notranslate">head: [ CustomDeclarator ] -body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomStatement</p> - -<p>Callback to produce a custom <code>let</code> statement node.</p> - -<h3 id="宣言_3">宣言</h3> - -<h5 id="functionDeclarationname_args_body_isGenerator_isExpression_loc"><code>functionDeclaration(name, args, body, isGenerator, isExpression[, loc])</code></h5> - -<pre class="notranslate">name: string -args: [ CustomPattern ] -body: CustomStatement | CustomExpression -isGenerator: boolean -isExpression: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomDeclaration</p> - -<p>Callback to produce a custom function declaration node.</p> - -<h5 id="variableDeclarationkind_dtors_loc"><code>variableDeclaration(kind, dtors[, loc])</code></h5> - -<pre class="notranslate">kind: "const" | "let" | "var" -dtors: [ CustomDeclarator ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomDeclaration</p> - -<p>Callback to produce a custom variable declaration node.</p> - -<h5 id="variableDeclaratorpatt_init_loc"><code>variableDeclarator(patt, init[, loc])</code></h5> - -<pre class="notranslate">patt: CustomPattern -init: CustomExpression | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomDeclarator</p> - -<p>Callback to produce a custom variable declarator node.</p> - -<h3 id="Expressions_3">Expressions</h3> - -<h5 id="sequenceExpressionexprs_loc"><code>sequenceExpression(exprs[, loc])</code></h5> - -<pre class="notranslate">exprs: [ CustomExpression ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom sequence expression node.</p> - -<h5 id="conditionalExpressiontest_cons_alt_loc"><code>conditionalExpression(test, cons, alt[, loc])</code></h5> - -<pre class="notranslate">test: CustomExpression -cons: CustomExpression -alt: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom conditional expression node.</p> - -<h5 id="unaryExpressionop_arg_isPrefix_loc"><code>unaryExpression(op, arg, isPrefix[, loc])</code></h5> - -<pre class="notranslate">op: UnaryOperator -arg: CustomExpression -isPrefix: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom unary expression node.</p> - -<h5 id="binaryExpressionop_left_right_loc"><code>binaryExpression(op, left, right[, loc])</code></h5> - -<pre class="notranslate">op: BinaryOperator -left: CustomExpression -right: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom binary expression node.</p> - -<h5 id="assignmentExpressionop_left_right_loc"><code>assignmentExpression(op, left, right[, loc])</code></h5> - -<pre class="notranslate">op: AssignmentOperator -left: CustomExpression -right: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom assignment expression node.</p> - -<h5 id="logicalExpressionop_left_right_loc"><code>logicalExpression(op, left, right[, loc])</code></h5> - -<pre class="notranslate">op: LogicalOperator -left: CustomExpression -right: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom logical expression node.</p> - -<h5 id="updateExpressionop_arg_isPrefix_loc"><code>updateExpression(op, arg, isPrefix[, loc])</code></h5> - -<pre class="notranslate">op: UpdateOperator -arg: CustomExpression -isPrefix: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom update expression node.</p> - -<h5 id="newExpressioncallee_args_loc"><code>newExpression(callee, args[, loc])</code></h5> - -<pre class="notranslate">callee: CustomExpression -args: [ CustomExpression ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>new</code>-expression node.</p> - -<h5 id="callExpressioncallee_args_loc"><code>callExpression(callee, args[, loc])</code></h5> - -<pre class="notranslate">callee: CustomExpression -args: [ CustomExpression ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom function call node.</p> - -<h5 id="memberExpressionobj_prop_isComputed_loc"><code>memberExpression(obj, prop, isComputed[, loc])</code></h5> - -<pre class="notranslate">obj: CustomExpression -prop: CustomIdentifier | CustomExpression -isComputed: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom member expression node.</p> - -<h5 id="functionExpressionname_args_body_isGenerator_isExpression_loc"><code>functionExpression(name, args, body, isGenerator, isExpression[, loc])</code></h5> - -<pre class="notranslate">name: CustomIdentifier | null -args: [ CustomPattern ] -body: CustomStatement | CustomExpression -isGenerator: boolean -isExpression: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom function expression node.</p> - -<h5 id="arrayExpressionelts_loc"><code>arrayExpression(elts[, loc])</code></h5> - -<pre class="notranslate">elts: [ CustomExpression | null ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom array expression node.</p> - -<h5 id="objectExpressionprops_loc"><code>objectExpression(props[, loc])</code></h5> - -<pre class="notranslate">props: [ CustomObjectProperty ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom object expression node.</p> - -<h5 id="thisExpressionloc"><code>thisExpression([loc])</code></h5> - -<pre class="notranslate">loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>this</code> expression node.</p> - -<h5 id="graphExpressionindex_expr_loc"><code>graphExpression(index, expr[, loc])</code></h5> - -<pre class="notranslate">index: uint32 >= 1 -expr: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>graph</code> expression node.</p> - -<h5 id="graphIndexExpressionindex_loc"><code>graphIndexExpression(index[, loc])</code></h5> - -<pre class="notranslate">index: uint32 >= 1 -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>graph index</code> expression node.</p> - -<h5 id="comprehensionExpressionbody_blocks_filter_loc"><code>comprehensionExpression(body, blocks, filter[, loc])</code></h5> - -<pre class="notranslate">body: CustomExpression -blocks: [ CustomComprehensionBlock | CustomComprehensionIf ] -filter: CustomExpression | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>comprehension</code> expression node.</p> - -<h5 id="generatorExpressionbody_blocks_filter_loc"><code>generatorExpression(body, blocks, filter[, loc])</code></h5> - -<pre class="notranslate">body: CustomExpression -blocks: [ CustomComprehensionBlock | CustomComprehensionIf ] -filter: CustomExpression | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>generator</code> expression node.</p> - -<h5 id="yieldExpressionarg_loc"><code>yieldExpression(arg[, loc])</code></h5> - -<pre class="notranslate">arg: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>yield</code> expression node.</p> - -<h5 id="letExpressionhead_body_loc"><code>letExpression(head, body[, loc])</code></h5> - -<pre class="notranslate">head: [ CustomDeclarator ] -body: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomExpression</p> - -<p>Callback to produce a custom <code>let</code> expression node.</p> - -<h3 id="Patterns_2">Patterns</h3> - -<h5 id="arrayPatternelts_loc"><code>arrayPattern(elts[, loc])</code></h5> - -<pre class="notranslate">elts: [ CustomPattern | null ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomPattern</p> - -<p>Callback to produce a custom array destructuring pattern node.</p> - -<h5 id="objectPatternprops_loc"><code>objectPattern(props[, loc])</code></h5> - -<pre class="notranslate">props: [ CustomPropertyPattern ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomPattern</p> - -<p>Callback to produce a custom object destructuring pattern node.</p> - -<h5 id="propertyPatternkey_patt_loc"><code>propertyPattern(key, patt[, loc])</code></h5> - -<pre class="notranslate">key: CustomLiteral | CustomIdentifier -patt: CustomPattern -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomPropertyPattern</p> - -<p>Callback to produce a custom object property destructuring pattern node.</p> - -<h3 id="Clauses_2">Clauses</h3> - -<h5 id="switchCasetest_cons_loc"><code>switchCase(test, cons[, loc])</code></h5> - -<pre class="notranslate">test: CustomExpression | null -cons: [ CustomStatement ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomSwitchCase</p> - -<p>Callback to produce a custom <code>case</code> or <code>default</code> clause node. The <strong><code>test</code></strong> argument is <code>null</code> if and only if the node is a <code>default</code> clause.</p> - -<h5 id="catchClausearg_guard_body_loc"><code>catchClause(arg, guard, body[, loc])</code></h5> - -<pre class="notranslate">arg: CustomPattern -guard: CustomExpression -body: CustomStatement -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomCatchClause</p> - -<p>Callback to produce a custom <code>catch</code> clause node.</p> - -<h5 id="comprehensionBlockleft_right_isForEach_loc"><code>comprehensionBlock(left, right, isForEach[, loc])</code></h5> - -<pre class="notranslate">left: CustomPattern -right: CustomExpression -isForEach: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomComprehensionBlock</p> - -<p>Callback to produce a custom comprehension block node. The <strong><code>isForEach</code></strong> flag indicates whether the node is a <code>for each</code> block.</p> - -<p><strong><code>comprehensionIf(test[, loc])</code></strong></p> - -<pre class="notranslate">test: CustomExpression -loc: SourceLocation</pre> - -<p>戻り値: CustomComprehensionIf</p> - -<p>Callback to produce a custom comprehension if node.</p> - -<h3 id="Miscellaneous_2">Miscellaneous</h3> - -<h5 id="identifiername_loc"><code>identifier(name[, loc])</code></h5> - -<pre class="notranslate">name: string -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomIdentifier/CustomPattern/CustomExpression</p> - -<p>Callback to produce a custom identifier node.</p> - -<h5 id="literalval_loc"><code>literal(val[, loc])</code></h5> - -<pre class="notranslate">val: string | boolean | null | number | RegExp -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomLiteral / CustomExpression</p> - -<p>Callback to produce a custom literal node.</p> - -<h5 id="propertykind_key_val_loc"><code>property(kind, key, val[, loc])</code></h5> - -<pre class="notranslate">kind: "init" | "get" | "set" -key: CustomLiteral | CustomIdentifier -val: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomObjectProperty</p> - -<p>Callback to produce a custom object property initializer node.</p> - -<h3 id="E4X_2">E4X</h3> - -<h4 id="宣言_4">宣言</h4> - -<h5 id="xmlDefaultDeclarationns_loc"><code>xmlDefaultDeclaration(ns[, loc])</code></h5> - -<pre class="notranslate">loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomDeclaration</p> - -<p>Callback to produce a custom XML default namespace declaration node.</p> - -<h4 id="Expressions_4">Expressions</h4> - -<h5 id="xmlAnyNameloc"><code>xmlAnyName([loc])</code></h5> - -<pre class="notranslate">loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXMLAnyName/CustomXML/CustomExpression</p> - -<p>Callback to produce a custom XML node for the wildcard pseudo-identifier <code>*</code>.</p> - -<h5 id="xmlAttributeSelectorexpr_loc"><code>xmlAttributeSelector(expr[, loc])</code></h5> - -<pre class="notranslate">expr: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML/CustomExpression</p> - -<p>Callback to produce a custom XML attribute selector node.</p> - -<h5 id="xmlFilterExpressionleft_right_loc"><code>xmlFilterExpression(left, right[, loc])</code></h5> - -<pre class="notranslate">left: CustomExpression -right: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML/CustomExpression</p> - -<p>Callback to produce a custom XML filter expression node.</p> - -<h5 id="xmlQualifiedIdentifierleft_right_isComputed_loc"><code>xmlQualifiedIdentifier(left, right, isComputed[, loc])</code></h5> - -<pre class="notranslate">left: CustomIdentifier | CustomXMLAnyName -right: CustomIdentifier | CustomExpression -isComputed: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML/CustomExpression</p> - -<p>Callback to produce a custom qualified identifier node.</p> - -<h5 id="xmlFunctionQualifiedIdentifierright_isComputed_loc"><code>xmlFunctionQualifiedIdentifier(right, isComputed[, loc])</code></h5> - -<pre class="notranslate">right: CustomIdentifier | CustomExpression -isComputed: boolean -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML/CustomExpression</p> - -<p>Callback to produce a custom XML <code>function</code>-qualified identifier node.</p> - -<h5 id="xmlElementcontents_loc"><code>xmlElement(contents[, loc])</code></h5> - -<pre class="notranslate">contents: [ CustomXML ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML/CustomExpression</p> - -<p>Callback to produce a custom XML element node.</p> - -<h5 id="xmlListcontents_loc"><code>xmlList(contents[, loc])</code></h5> - -<pre class="notranslate">contents: [ CustomXML ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML/CustomExpression</p> - -<p>Callback to produce a custom XML list node.</p> - -<h4 id="XML_2">XML</h4> - -<h5 id="xmlEscapeexpr_loc"><code>xmlEscape(expr[, loc])</code></h5> - -<pre class="notranslate">expr: CustomExpression -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML escape node.</p> - -<h5 id="xmlTexttext_loc"><code>xmlText(text[, loc])</code></h5> - -<pre class="notranslate">text: string -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML text node.</p> - -<h5 id="xmlStartTagcontents_loc"><code>xmlStartTag(contents[, loc])</code></h5> - -<pre class="notranslate">contents: [ CustomXML ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML start-tag node.</p> - -<h5 id="xmlEndTagcontents_loc"><code>xmlEndTag(contents[, loc])</code></h5> - -<pre class="notranslate">contents: [ CustomXML ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML end-tag node.</p> - -<h5 id="xmlPointTagcontents_loc"><code>xmlPointTag(contents[, loc])</code></h5> - -<pre class="notranslate">contents: [ CustomXML ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML point tag node.</p> - -<h5 id="xmlNamecontents_loc"><code>xmlName(contents[, loc])</code></h5> - -<pre class="notranslate">contents: string | [ CustomXML ] -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML name node.</p> - -<h5 id="xmlAttributevalue_loc"><code>xmlAttribute(value[, loc])</code></h5> - -<pre class="notranslate">value: string -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML attribute node.</p> - -<h5 id="xmlCdatacontents_loc"><code>xmlCdata(contents[, loc])</code></h5> - -<pre class="notranslate">contents: string -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML <code>CDATA</code> node.</p> - -<h5 id="xmlCommentcontents_loc"><code>xmlComment(contents[, loc])</code></h5> - -<pre class="notranslate">contents: string -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML comment node.</p> - -<h5 id="xmlProcessingInstructiontarget_contents_loc"><code>xmlProcessingInstruction(target, contents[, loc])</code></h5> - -<pre class="notranslate">target: string -contents: string | null -loc: SourceLocation -</pre> - -<p><strong>戻り値:</strong> CustomXML</p> - -<p>Callback to produce a custom XML processing instruction node.</p> diff --git a/files/ja/mozilla/projects/spidermonkey/releases/52/index.html b/files/ja/mozilla/projects/spidermonkey/releases/52/index.html deleted file mode 100644 index d3ddc2bdb5..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/releases/52/index.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: SpiderMonkey 52 -slug: Mozilla/Projects/SpiderMonkey/Releases/52 -translation_of: Mozilla/Projects/SpiderMonkey/Releases/52 ---- -<p>{{SpiderMonkeySidebar("Releases")}}</p> - -<div class="note" style="color: black;"> -<p><strong>これらのリリースノートは不完全です。</strong></p> - -<p>Mozilla JavaScript チームは <strong>SpiderMonkey 52</strong> のリリースを発表しました。treeherder から完全なソースコードをダウンロードするには、<a href="https://treeherder.mozilla.org/#/jobs?repo=mozilla-esr52&filter-searchStr=spidermonkey-sm-package">mozilla-esr52 リポジトリ</a>にアクセスし、表示される最初の SM(pkg) リンクをクリックします。それは、左下の小さなウィンドウに "artifact uploaded:mozjs-52.x.y.tar.bz2" のような行が表示されます。</p> - -<p>SpiderMonkey 52は、Firefox 52 に搭載された JavaScript エンジンです。以前の SpiderMonkey リリースよりもパフォーマンスが向上しています。また、以下で詳しく説明する新しい言語と API の機能も含まれています。</p> - -<p><a href="news://news.mozilla.org/mozilla.dev.tech.js-engine">mozilla.dev.tech.js-engineニュースグループ</a> に投稿することで、このリリースに関するご意見をお聞かせください。また、<a class="link-https" href="https://bugzilla.mozilla.org/">bugzilla.mozilla.org</a> の Product: Core、Component: JavaScript engine のバグを報告してください。 バグを bug 837921 ("sm.embedding"のエイリアス) にすることをお勧めします。</p> -</div> - -<h2 id="プラットフォームサポート"> プラットフォームサポート</h2> - -<h2 id="SpiderMonkey_52_への移行">SpiderMonkey 52 への移行</h2> - -<h2 id="新しい_JavaScript_言語機能">新しい JavaScript 言語機能</h2> - -<h2 id="新しい_C_API">新しい C++ API</h2> - -<h2 id="削除された_API">削除された API</h2> - -<h2 id="API_の変更">API の変更</h2> - -<h2 id="既知の問題">既知の問題</h2> diff --git a/files/ja/mozilla/projects/spidermonkey/releases/index.html b/files/ja/mozilla/projects/spidermonkey/releases/index.html deleted file mode 100644 index f074c9aeb9..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/releases/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: SpiderMonkey リリースノート -slug: Mozilla/Projects/SpiderMonkey/Releases -translation_of: Mozilla/Projects/SpiderMonkey/Releases ---- -<div>{{SpiderMonkeySidebar("Releases")}}</div> - -<div class="summary"> -<p>ここでは <a href="/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> のリリースノートを一覧で表示しています。</p> -</div> - -<h2 id="現在のリリース">現在のリリース</h2> - -<ul> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/38">SpiderMonkey 38</a></li> -</ul> - -<h2 id="次のリリース">次のリリース</h2> - -<ul> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/45">SpiderMonkey 45</a></li> -</ul> - -<h2 id="過去のリリース">過去のリリース</h2> - -<ul> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/31">SpiderMonkey 31</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/24">SpiderMonkey 24</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/17">SpiderMonkey 17</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/1.8.8">SpiderMonkey 1.8.8</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/1.8.7">SpiderMonkey 1.8.7</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/1.8.5">SpiderMonkey 1.8.5</a></li> - <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/1.8">SpiderMonkey 1.8</a></li> -</ul> diff --git a/files/ja/mozilla/projects/spidermonkey/shell_global_objects/index.html b/files/ja/mozilla/projects/spidermonkey/shell_global_objects/index.html deleted file mode 100644 index b560b3e934..0000000000 --- a/files/ja/mozilla/projects/spidermonkey/shell_global_objects/index.html +++ /dev/null @@ -1,662 +0,0 @@ ---- -title: Shell のグローバルオブジェクト -slug: Mozilla/Projects/SpiderMonkey/Shell_global_objects -tags: - - JavaScript - - NeedsContent - - SpiderMonkey -translation_of: Mozilla/Projects/SpiderMonkey/Shell_global_objects ---- -<p>これらは、プログラムを起動したときに SpiderMonkey <code>js</code> コマンドラインインタプリタによって自動的に設定される<strong>グローバルオブジェクト</strong>です。</p> - -<p><strong>メモ</strong>: このリストは、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">JavaScript シェルの紹介</a>の「<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell#Built-in_functions">組み込み関数</a>」と重複しているため、おそらく完全ではありません。詳しくは <code>js/src/shell/js.cpp</code> (<code>shell_functions</code> 周辺) をご覧ください。</p> - -<p>このページには SpiderMonkey 53 で利用可能な変数と関数がリストされています。各バージョン間には多少の違いがあるかもしれません。js シェルの <code>help()</code> 関数で関数の一覧を見ることができます。</p> - -<h2 id="変数">変数</h2> - -<dl> - <dt><code>scriptArgs</code></dt> - <dd>js シェルに渡された引数を含む配列。</dd> - <dt><code>scriptPath</code></dt> - <dd>スクリプトのパスである文字列。</dd> - <dt><code>console</code></dt> - <dd>以下のプロパティを持つオブジェクト: - <dl> - <dt><code>log</code></dt> - <dd>式を評価して <code>stdout</code> に出力します。この関数は <code>print()</code> 関数のエイリアスです。</dd> - </dl> - </dd> - <dt><code>timesAccessed</code></dt> - <dd>この変数が何回アクセスされたかを示す数を返します</dd> - <dt>PerfMeasurement</dt> - <dd><a href="/ja/docs/Mozilla/JavaScript_code_modules/PerfMeasurement.jsm">PerfMeasurement.jsm</a> を参照してください。</dd> -</dl> - -<h2 id="シェルのみの関数">シェルのみの関数</h2> - -<h3 id="Functions_always_available">Functions always available</h3> - -<dl> - <dt><code>version([number])</code></dt> - <dd>Get or force a script compilation version number.</dd> - <dt><code>options([option ...])</code></dt> - <dd>Get or toggle JavaScript options.</dd> - <dt><code>load(['foo.js' ...])</code></dt> - <dd>Load files named by string arguments. Filename is relative to the current working directory.</dd> - <dt><code>loadRelativeToScript(['foo.js' ...])</code></dt> - <dd>Load files named by string arguments. Filename is relative to the calling script.</dd> - <dt><code>evaluate(code[, options])</code></dt> - <dd>Evaluate code as though it were the contents of a file. <code>options</code> is an optional object that may have these properties: - <dl> - <dt><code>isRunOnce</code></dt> - <dd>use the <code>isRunOnce</code> compiler option (default: <code>false</code>)</dd> - <dt><code>noScriptRval</code></dt> - <dd>use the no-script-rval compiler option (default: <code>false</code>)</dd> - <dt><code>fileName</code></dt> - <dd>filename for error messages and debug info</dd> - <dt><code>lineNumber</code></dt> - <dd>starting line number for error messages and debug info</dd> - <dt><code>columnNumber</code></dt> - <dd>starting column number for error messages and debug info</dd> - <dt><code>global</code></dt> - <dd>global in which to execute the code</dd> - <dt><code>newContext</code></dt> - <dd>if <code>true</code>, create and use a new <code>cx</code> (default: <code>false</code>)</dd> - <dt><code>catchTermination</code></dt> - <dd>if <code>true</code>, catch termination (failure without an exception value, as for slow scripts or out-of-memory) and return <code>'terminated'</code></dd> - <dt><code>element</code></dt> - <dd>if present with value <code>v</code>, convert <code>v</code> to an object <code>o</code> and mark the source as being attached to the DOM element <code>o</code>. If the property is omitted or <code>v</code> is <code>null</code>, don't attribute the source to any DOM element.</dd> - <dt><code>elementAttributeName</code></dt> - <dd>if present and not <code>undefined</code>, the name of property of <code>element</code> that holds this code. This is what <code>Debugger.Source.prototype.elementAttributeName</code> returns.</dd> - <dt><code>sourceMapURL</code></dt> - <dd>if present with value <code>v</code>, convert <code>v</code> to a string, and provide that as the code's source map URL. If omitted, attach no source map URL to the code (although the code may provide one itself, via a <code>//#sourceMappingURL</code> comment).</dd> - <dt><code>sourceIsLazy</code></dt> - <dd>if present and <code>true</code>, indicates that, after compilation, script source should not be cached by the JS engine and should be lazily loaded from the embedding as-needed.</dd> - <dt><code>loadBytecode</code></dt> - <dd>if <code>true</code>, and if the source is a <code>CacheEntryObject</code>, the bytecode would be loaded and decoded from the cache entry instead of being parsed, then it would be executed as usual.</dd> - <dt><code>saveBytecode</code></dt> - <dd>if <code>true</code>, and if the source is a <code>CacheEntryObject</code>, the bytecode would be encoded and saved into the cache entry after the script execution.</dd> - <dt><code>assertEqBytecode</code></dt> - <dd>if <code>true</code>, and if both <code>loadBytecode</code> and <code>saveBytecode</code> are <code>true</code>, then the loaded bytecode and the encoded bytecode are compared. and an assertion is raised if they differ.</dd> - </dl> - </dd> - <dt><code>run('foo.js')</code></dt> - <dd>Run the file named by the first argument, returning the number of of milliseconds spent compiling and executing it.</dd> -</dl> - -<dl> - <dt><code>read('bar.js')</code></dt> - <dd>Reads the file named by the first argument, returning the content of the file as string.</dd> -</dl> - -<dl> - <dt><code>readline()</code></dt> - <dd>Read a single line from <code>stdin</code>.</dd> - <dt><code>readlineBuf([ buf ])</code></dt> - <dd>Emulate <code>readline()</code> on the specified string. The first call with a string argument sets the source buffer. Subsequent calls without an argument then read from this buffer line by line.</dd> - <dt><code>print([exp ...])</code></dt> - <dd>Evaluate and print expressions to <code>stdout</code>.</dd> - <dt><code>printErr([exp ...])</code></dt> - <dd>Evaluate and print expressions to <code>stderr</code>.</dd> - <dt><code>putstr([exp])</code></dt> - <dd>Evaluate and print expression without newline.</dd> - <dt><code>dateNow()</code></dt> - <dd>Return the current time with sub-ms precision.</dd> - <dt><code>help([name ...])</code></dt> - <dd>Display usage and help messages.</dd> - <dt><code>quit()</code></dt> - <dd>Quit the shell.</dd> - <dt><code>assertEq(actual, expected[, msg])</code></dt> - <dd>Throw if the first two arguments are not the same (both <code>+0</code> or both <code>-0</code>, both <code>NaN</code>, or non-zero and <code>===</code>).</dd> - <dt><code>startTimingMutator()</code></dt> - <dd>Start accounting time to mutator vs GC.</dd> - <dt><code>stopTimingMutator()</code></dt> - <dd>Stop accounting time to mutator vs GC and dump the results.</dd> - <dt><code>throwError()</code></dt> - <dd>Throw an error from <code>JS_ReportError</code>.</dd> - <dt><code>intern(str)</code></dt> - <dd>Internalize <code>str</code> in the atom table.</dd> - <dt><code>getslx(obj)</code></dt> - <dd>Get script line extent.</dd> - <dt><code>evalcx(s[, o])</code></dt> - <dd>Evaluate <code>s</code> in optional sandbox object <code>o</code>. if <code>(s == '' && !o)</code> return new <code>o</code> with eager standard classes, if <code>(s == 'lazy' && !o)</code> return new <code>o</code> with lazy standard classes</dd> - <dt><code>evalInWorker(str)</code></dt> - <dd>Evaluate <code>str</code> in a separate thread with its own runtime.</dd> - <dt><code>getSharedArrayBuffer()</code></dt> - <dd>Retrieve the <code>SharedArrayBuffer</code> object from the cross-worker mailbox. The object retrieved may not be identical to the object that was installed, but it references the same shared memory. <code>getSharedArrayBuffer</code> performs an ordering memory barrier.</dd> - <dt><code>setSharedArrayBuffer()</code></dt> - <dd>Install the <code>SharedArrayBuffer</code> object in the cross-worker mailbox. <code>setSharedArrayBuffer</code> performs an ordering memory barrier.</dd> - <dt><code>shapeOf(obj)</code></dt> - <dd>Get the shape of <code>obj</code> (an implementation detail).</dd> - <dt><code>groupOf(obj)</code></dt> - <dd>Get the group of <code>obj</code> (an implementation detail).</dd> - <dt><code>unwrappedObjectsHaveSameShape(obj1, obj2)</code></dt> - <dd>Returns <code>true</code> iff <code>obj1</code> and <code>obj2</code> have the same shape, <code>false</code> otherwise. Both objects are unwrapped first, so this can be used on objects from different globals.</dd> - <dt><code>sleep(dt)</code></dt> - <dd>Sleep for <code>dt</code> seconds.</dd> - <dt><code>compile(code)</code></dt> - <dd>Compiles a string to bytecode, potentially throwing.</dd> - <dt><code>parseModule(code)</code></dt> - <dd>Parses source text as a module and returns a <code>Module</code> object.</dd> - <dt><code>setModuleResolveHook(function(module, specifier) {})</code></dt> - <dd>Set the <code>HostResolveImportedModule</code> hook to <code>function</code>. This hook is used to look up a previously loaded module object. It should be implemented by the module loader.</dd> - <dt><code>getModuleLoadPath()</code></dt> - <dd>Return any <code>--module-load-path</code> argument passed to the shell. Used by the module loader.</dd> - <dt><code>parse(code)</code></dt> - <dd>Parses a string, potentially throwing.</dd> - <dt><code>syntaxParse(code)</code></dt> - <dd>Check the syntax of a string, returning success value</dd> - <dt><code>offThreadCompileScript(code[, options])</code></dt> - <dd>Compile <code>code</code> on a helper thread. To wait for the compilation to finish and run the code, call <code>runOffThreadScript</code>. If present, <code>options</code> may have properties saying how the code should be compiled: - <dl> - <dt><code>noScriptRval</code></dt> - <dd>use the no-script-rval compiler option (default: <code>false</code>)</dd> - <dt><code>fileName</code></dt> - <dd>filename for error messages and debug info</dd> - <dt><code>lineNumber</code></dt> - <dd>starting line number for error messages and debug info</dd> - <dt><code>columnNumber</code></dt> - <dd>starting column number for error messages and debug info</dd> - <dt><code>element</code></dt> - <dd>if present with value <code>v</code>, convert <code>v</code> to an object <code>o</code> and mark the source as being attached to the DOM element <code>o</code>. If the property is omitted or <code>v</code> is <code>null</code>, don't attribute the source to any DOM element.</dd> - <dt><code>elementAttributeName</code></dt> - <dd>if present and not <code>undefined</code>, the name of property of <code>element</code> that holds this code. This is what <code>Debugger.Source.prototype.elementAttributeName</code> returns.</dd> - </dl> - </dd> - <dt><code>runOffThreadScript()</code></dt> - <dd>Wait for off-thread compilation to complete. If an error occurred, throw the appropriate exception; otherwise, run the script and return its value.</dd> - <dt><code>offThreadCompileModule(code)</code></dt> - <dd>Compile <code>code</code> on a helper thread. To wait for the compilation to finish and get the module object, call <code>finishOffThreadModule</code>.</dd> - <dt><code>finishOffThreadModule()</code></dt> - <dd>Wait for off-thread compilation to complete. If an error occurred, throw the appropriate exception; otherwise, return the module object</dd> - <dt><code>timeout([seconds], [func])</code></dt> - <dd>Get/Set the limit in seconds for the execution time for the current context. A negative value (default) means that the execution time is unlimited. If a second argument is provided, it will be invoked when the timer elapses. Calling this function will replace any callback set by <code>setInterruptCallback</code>.</dd> - <dt><code>interruptIf(cond)</code></dt> - <dd>Requests interrupt callback if cond is <code>true</code>. If a callback function is set via <code>timeout</code> or <code>setInterruptCallback</code>, it will be called. No-op otherwise.</dd> - <dt><code>invokeInterruptCallback(fun)</code></dt> - <dd>Forcefully set the interrupt flag and invoke the interrupt handler. If a callback function is set via <code>timeout</code> or <code>setInterruptCallback</code>, it will be called. Before returning, fun is called with the return value of the interrupt handler.</dd> - <dt><code>setInterruptCallback(func)</code></dt> - <dd>Sets <code>func</code> as the interrupt callback function. Calling this function will replace any callback set by <code>timeout</code>.</dd> - <dt><code>enableLastWarning()</code></dt> - <dd>Enable storing the last warning.</dd> - <dt><code>disableLastWarning()</code></dt> - <dd>Disable storing the last warning.</dd> - <dt><code>getLastWarning()</code></dt> - <dd>Returns an object that represents the last warning.</dd> - <dt><code>clearLastWarning()</code></dt> - <dd>Clear the last warning.</dd> - <dt><code>elapsed()</code></dt> - <dd>Execution time elapsed for the current thread.</dd> - <dt><code>decompileFunction(func)</code></dt> - <dd>Decompile a function.</dd> - <dt><code>decompileThis()</code></dt> - <dd>Decompile the currently executing script.</dd> - <dt><code>thisFilename()</code></dt> - <dd>Return the filename of the current script</dd> - <dt><code>newGlobal([options])</code></dt> - <dd>Return a new global object in a new compartment. If options is given, it may have any of the following properties: - <dl> - <dt><code>sameZoneAs</code></dt> - <dd>the compartment will be in the same zone as the given object (defaults to a new zone)</dd> - <dt><code>invisibleToDebugger</code></dt> - <dd>the global will be invisible to the debugger (default <code>false</code>)</dd> - <dt><code>principal</code></dt> - <dd>if present, its value converted to a number must be an integer that fits in 32 bits; use that as the new compartment's principal. Shell principals are toys, meant only for testing; one shell principal subsumes another if its set bits are a superset of the other's. Thus, a principal of <code>0</code> subsumes nothing, while a principals of <code>~0</code> subsumes all other principals. The absence of a principal is treated as if its bits were <code>0xffff</code>, for subsumption purposes. If this property is omitted, supply no principal.</dd> - </dl> - </dd> - <dt><code>createMappedArrayBuffer(filename, [offset, [size]])</code></dt> - <dd>Create an array buffer that mmaps the given file.</dd> - <dt><code>addPromiseReactions(promise, onResolve, onReject)</code></dt> - <dd>Calls the <code>JS::AddPromiseReactions</code> JSAPI function with the given arguments.</dd> - <dt><code>getMaxArgs()</code></dt> - <dd>Return the maximum number of supported args for a call.</dd> - <dt><code>objectEmulatingUndefined()</code></dt> - <dd>Return a new object <code>obj</code> for which <code>typeof obj === "undefined"</code>, <code>obj == null</code> and <code>obj == undefined</code> (and vice versa for <code>!=</code>), and <code>ToBoolean(obj) === false</code>.</dd> - <dt><code>isCachingEnabled()</code></dt> - <dd>Return whether JS caching is enabled.</dd> - <dt><code>setCachingEnabled(b)</code></dt> - <dd>Enable or disable JS caching.</dd> - <dt><code>cacheEntry(code)</code></dt> - <dd>Return a new opaque object which emulates a cache entry of a script. This object encapsulates the code and its cached content. The cache entry is filled and read by the <code>evaluate</code> function by using it in place of the source, and by setting <code>saveBytecode</code> and <code>loadBytecode</code> options.</dd> - <dt><code>printProfilerEvents()</code></dt> - <dd>Register a callback with the profiler that prints javascript profiler events to <code>stderr</code>. Callback is only registered if profiling is enabled.</dd> - <dt><code>enableSingleStepProfiling()</code></dt> - <dd>This function will fail on platforms that don't support single-step profiling (currently everything but ARM-simulator). When enabled, at every instruction a backtrace will be recorded and stored in an array. Adjacent duplicate backtraces are discarded.</dd> - <dt><code>disableSingleStepProfiling()</code></dt> - <dd>Return the array of backtraces recorded by <code>enableSingleStepProfiling</code>.</dd> - <dt><code>enableSPSProfiling()</code></dt> - <dd>Enables SPS instrumentation and corresponding assertions, with slow assertions disabled.</dd> - <dt><code>enableSPSProfilingWithSlowAssertions()</code></dt> - <dd>Enables SPS instrumentation and corresponding assertions, with slow assertions enabled.</dd> - <dt><code>disableSPSProfiling()</code></dt> - <dd>Disables SPS instrumentation</dd> - <dt><code>isLatin1(s)</code></dt> - <dd>Return true iff the string's characters are stored as Latin1.</dd> - <dt><code>stackPointerInfo()</code></dt> - <dd>Return an <code>int32</code> value which corresponds to the offset of the latest stack pointer, such that one can take the differences of 2 to estimate a frame-size.</dd> - <dt><code>entryPoints(params)</code></dt> - <dd>Carry out some JSAPI operation as directed by <code>params</code>, and return an array of objects describing which JavaScript entry points were invoked as a result. <code>params</code> is an object whose properties indicate what operation to perform. Here are the recognized groups of properties: - <dl> - <dt><code>{ function }</code></dt> - <dd>Call the object <code>params.function</code> with no arguments.</dd> - <dt><code>{ object, property }</code></dt> - <dd>Fetch the property named <code>params.property</code> of <code>params.object</code>.</dd> - <dt><code>{ ToString }</code></dt> - <dd>Apply <code>JS::ToString</code> to <code>params.toString</code>.</dd> - <dt><code>{ ToNumber }</code></dt> - <dd>Apply <code>JS::ToNumber</code> to <code>params.toNumber</code>.</dd> - <dt><code>{ eval }</code></dt> - <dd>Apply <code>JS::Evaluate</code> to <code>params.eval</code>.</dd> - </dl> - The return value is an array of strings, with one element for each JavaScript invocation that occurred as a result of the given operation. Each element is the name of the function invoked, or the string <code>'eval:FILENAME'</code> if the code was invoked by <code>eval</code> or something similar.</dd> - <dt><code>drainJobQueue()</code></dt> - <dd>Take jobs from the shell's job queue in FIFO order and run them until the queue is empty.</dd> - <dt><code>setPromiseRejectionTrackerCallback()</code></dt> - <dd>Sets the callback to be invoked whenever a Promise rejection is unhandled or a previously-unhandled rejection becomes handled.</dd> -</dl> - -<h3 id="Functions_available_only_in_DEBUG_build">Functions available only in DEBUG build</h3> - -<dl> - <dt><code>disassemble([fun/code])</code></dt> - <dd>Return the disassembly for the given function or code. All disassembly functions take these options as leading string arguments: - <dl> - <dt><code>-r</code></dt> - <dd>disassemble recursively</dd> - <dt><code>-l</code></dt> - <dd>show line numbers</dd> - <dt><code>-S</code></dt> - <dd>omit source notes</dd> - </dl> - </dd> - <dt><code>dis([fun/code])</code></dt> - <dd>Disassemble functions into bytecodes.</dd> - <dt><code>disfile('foo.js')</code></dt> - <dd>Disassemble script file into bytecodes.</dd> - <dt><code>dissrc([fun/code])</code></dt> - <dd>Disassemble functions with source lines.</dd> - <dt><code>notes([fun])</code></dt> - <dd>Show source notes for functions.</dd> - <dt><code>stackDump(showArgs, showLocals, showThisProps)</code></dt> - <dd>Tries to print a lot of information about the current stack. Similar to the <code>DumpJSStack()</code> function in the browser.</dd> - <dt><code>arrayInfo(a1, a2, ...)</code></dt> - <dd>Report statistics about arrays.</dd> -</dl> - -<h3 id="Functions_available_only_if_ENABLE_INTL_API_is_defined">Functions available only if ENABLE_INTL_API is defined</h3> - -<dl> - <dt><code>addIntlExtras(obj)</code></dt> - <dd>Adds various not-yet-standardized Intl functions as properties on the provided object (this should generally be <code>Intl</code> itself). The added functions and their behavior are experimental: don't depend upon them unless you're willing to update your code if these experimental APIs change underneath you.</dd> -</dl> - -<h3 id="Functions_available_if_--fuzzing-safe_is_not_specified">Functions available if <code>--fuzzing-safe</code> is not specified</h3> - -<dl> - <dt><code>clone(fun[, scope])</code></dt> - <dd>Clone function object.</dd> - <dt><code>getSelfHostedValue()</code></dt> - <dd>Get a self-hosted value by its name. Note that these values don't get cached, so repeatedly getting the same value creates multiple distinct clones.</dd> - <dt><code>line2pc([fun,] line)</code></dt> - <dd>Map line number to PC.</dd> - <dt><code>pc2line(fun[, pc])</code></dt> - <dd>Map PC to line number.</dd> - <dt><code>nestedShell(shellArgs...)</code></dt> - <dd>Execute the given code in a new JS shell process, passing this nested shell the arguments passed to <code>nestedShell</code>. <code>argv[0]</code> of the nested shell will be <code>argv[0]</code> of the current shell (which is assumed to be the actual path to the shell. <code>arguments[0]</code> (of the call to <code>nestedShell</code>) will be <code>argv[1]</code>, <code>arguments[1]</code> will be <code>argv[2]</code>, etc.</dd> - <dt><code>assertFloat32(value, isFloat32)</code></dt> - <dd>In IonMonkey only, asserts that <code>value</code> has (resp. hasn't) the <code>MIRType::Float32</code> if <code>isFloat32</code> is <code>true</code> (resp. <code>false</code>).</dd> - <dt><code>assertRecoveredOnBailout(var)</code></dt> - <dd>In IonMonkey only, asserts that variable has <code>RecoveredOnBailout</code> flag.</dd> - <dt><code>withSourceHook(hook, fun)</code></dt> - <dd>Set this JS runtime's lazy source retrieval hook (that is, the hook used to find sources compiled with <code>CompileOptions::LAZY_SOURCE</code>) to <code>hook</code>; call <code>fun</code> with no arguments; and then restore the runtime's original hook. Return or throw whatever <code>fun</code> did. <code>hook</code> gets passed the requested code's URL, and should return a string. - <p>Notes:</p> - - <ol> - <li>SpiderMonkey may assert if the returned code isn't close enough to the script's real code, so this function is not fuzzer-safe.</li> - <li>The runtime can have only one source retrieval hook active at a time. If <code>fun</code> is not careful, <code>hook</code> could be asked to retrieve the source code for compilations that occurred long before it was set, and that it knows nothing about. The reverse applies as well: the original hook, that we reinstate after the call to <code>fun</code> completes, might be asked for the source code of compilations that <code>fun</code> performed, and which, presumably, only <code>hook</code> knows how to find.</li> - </ol> - </dd> - <dt><code>wrapWithProto(obj)</code></dt> - <dd>Wrap an object into a noop wrapper with prototype semantics. Note: This is not fuzzing safe because it can be used to construct deeply nested wrapper chains that cannot exist in the wild.</dd> - <dt><code>trackedOpts(fun)</code></dt> - <dd>Returns an object describing the tracked optimizations of <code>fun</code>, if any. If <code>fun</code> is not a scripted function or has not been compiled by Ion, <code>null</code> is returned.</dd> - <dt><code>dumpScopeChain(obj)</code></dt> - <dd>Prints the scope chain of an interpreted function or a module.</dd> - <dt><code>crash([message])</code></dt> - <dd>Crashes the process with a <code>MOZ_CRASH</code>.</dd> - <dt><code>setARMHwCapFlags("flag1,flag2 flag3")</code></dt> - <dd>On non-ARM, no-op. On ARM, set the hardware capabilities. The list of flags is available by calling this function with <code>help</code> as the flag's name</dd> - <dt><code>wasmLoop(filename, imports)</code></dt> - <dd>Performs an AFL-style persistent loop reading data from the given file and passing it to the<code>wasmEval</code> function together with the specified imports object.</dd> -</dl> - -<h2 id="テスト用関数">テスト用関数</h2> - -<p>Testing functions are available also on Firefox via <code>Components.utils.getJSTestingFunctions()</code></p> - -<h3 id="Functions_always_available_2">Functions always available</h3> - -<dl> - <dt><code>gc([obj] | 'zone' [, 'shrinking'])</code></dt> - <dd>Run the garbage collector. When obj is given, GC only its zone. If <code>zone</code> is given, GC any zones that were scheduled for GC via schedulegc. If <code>shrinking</code> is passed as the optional second argument, perform a shrinking GC rather than a normal GC.</dd> - <dt><code>minorgc([aboutToOverflow])</code></dt> - <dd>Run a minor collector on the Nursery. When <code>aboutToOverflow</code> is true, marks the store buffer as about-to-overflow before collecting.</dd> - <dt><code>gcparam(name [, value])</code></dt> - <dd>Wrapper for <code>JS_[GS]etGCParameter</code>. The name is one of: - <ul> - <li>maxBytes</li> - <li>maxMallocBytes</li> - <li>gcBytes</li> - <li>gcNumber</li> - <li>mode</li> - <li>unusedChunks</li> - <li>totalChunks</li> - <li>sliceTimeBudget</li> - <li>markStackLimit</li> - <li>highFrequencyTimeLimit</li> - <li>highFrequencyLowLimit</li> - <li>highFrequencyHighLimit</li> - <li>highFrequencyHeapGrowthMax</li> - <li>highFrequencyHeapGrowthMin</li> - <li>lowFrequencyHeapGrowth</li> - <li>dynamicHeapGrowth</li> - <li>dynamicMarkSlice</li> - <li>allocationThreshold</li> - <li>minEmptyChunkCount</li> - <li>maxEmptyChunkCount</li> - <li>compactingEnabled</li> - <li>refreshFrameSlicesEnabled</li> - </ul> - </dd> - <dt><code>relazifyFunctions(...)</code></dt> - <dd>Perform a GC and allow relazification of functions. Accepts the same arguments as <code>gc()</code>.</dd> - <dt><code>getBuildConfiguration()</code></dt> - <dd>Return an object describing some of the configuration options SpiderMonkey was built with.</dd> - <dt><code>hasChild(parent, child)</code></dt> - <dd>Return <code>true</code> if <code>child</code> is a child of <code>parent</code>, as determined by a call to <code>TraceChildren</code></dd> - <dt><code>setSavedStacksRNGState(seed)</code></dt> - <dd>Set this compartment's <code>SavedStacks</code>' RNG state.</dd> - <dt><code>getSavedFrameCount()</code></dt> - <dd>Return the number of <code>SavedFrame</code> instances stored in this compartment's <code>SavedStacks</code> cache.</dd> - <dt><code>saveStack([maxDepth [, compartment]])</code></dt> - <dd>Capture a stack. If <code>maxDepth</code> is given, capture at most <code>maxDepth</code> number of frames. If <code>compartment</code> is given, allocate the <code>js::SavedFrame</code> instances with the given object's compartment.</dd> - <dt><code>saveStack(object [, shouldIgnoreSelfHosted = true]])</code></dt> - <dd>Capture a stack back to the first frame whose principals are subsumed by the object's compartment's principals. If <code>shouldIgnoreSelfHosted</code> is given, control whether self-hosted frames are considered when checking principals.</dd> - <dt><code>callFunctionFromNativeFrame(function)</code></dt> - <dd>Call <code>function</code> with a (C++-)native frame on stack. Required for testing that <code>SaveStack</code> properly handles native frames.</dd> - <dt><code>callFunctionWithAsyncStack(function, stack, asyncCause)</code></dt> - <dd>Call <code>function</code>, using the provided stack as the async stack responsible for the call, and propagate its return value or the exception it throws. The function is called with no arguments, and <code>this</code> is <code>undefined</code>. The specified <code>asyncCause</code> is attached to the provided stack frame.</dd> - <dt><code>enableTrackAllocations()</code></dt> - <dd>Start capturing the JS stack at every allocation. Note that this sets an object metadata callback that will override any other object metadata callback that may be set.</dd> - <dt><code>disableTrackAllocations()</code></dt> - <dd>Stop capturing the JS stack at every allocation.</dd> - <dt><code>makeFinalizeObserver()</code></dt> - <dd>Get a special object whose finalization increases the counter returned by the <code>finalizeCount</code> function.</dd> - <dt><code>finalizeCount()</code></dt> - <dd>Return the current value of the finalization counter that is incremented each time an object returned by the <code>makeFinalizeObserver</code> is finalized.</dd> - <dt><code>resetFinalizeCount()</code></dt> - <dd>Reset the value returned by <code>finalizeCount()</code>.</dd> - <dt><code>gcPreserveCode()</code></dt> - <dd>Preserve JIT code during garbage collections.</dd> - <dt><code>startgc([n [, 'shrinking']])</code></dt> - <dd>Start an incremental GC and run a slice that processes about <code>n</code> objects. If <code>shrinking</code> is passesd as the optional second argument, perform a shrinking GC rather than a normal GC.</dd> - <dt><code>gcslice([n])</code></dt> - <dd>Start or continue an an incremental GC, running a slice that processes about <code>n</code> objects.</dd> - <dt><code>abortgc()</code></dt> - <dd>Abort the current incremental GC.</dd> - <dt><code>fullcompartmentchecks(true|false)</code></dt> - <dd>If <code>true</code>, check for compartment mismatches before every GC.</dd> - <dt><code>nondeterministicGetWeakMapKeys(weakmap)</code></dt> - <dd>Return an array of the keys in the given WeakMap.</dd> - <dt><code>internalConst(name)</code></dt> - <dd>Query an internal constant for the engine. See <code>InternalConst</code> source for the list of constant names.</dd> - <dt><code>isProxy(obj)</code></dt> - <dd>If <code>true</code>, <code>obj</code> is a proxy of some sort</dd> - <dt><code>dumpHeap(['collectNurseryBeforeDump'], [filename])</code></dt> - <dd>Dump reachable and unreachable objects to the named file, or to <code>stdout</code>. If <code>collectNurseryBeforeDump</code> is specified, a minor GC is performed first, otherwise objects in the nursery are ignored.</dd> - <dt><code>terminate()</code></dt> - <dd>Terminate JavaScript execution, as if we had run out of memory or been terminated by the slow script dialog.</dd> - <dt><code>readSPSProfilingStack()</code></dt> - <dd>Reads the jit stack using <code>ProfilingFrameIterator</code>.</dd> - <dt><code>enableOsiPointRegisterChecks()</code></dt> - <dd>Emit extra code to verify live regs at the start of a VM call are not modified before its <code>OsiPoint</code>.</dd> - <dt><code>displayName(fn)</code></dt> - <dd>Gets the display name for a function, which can possibly be a guessed or inferred name based on where the function was defined. This can be different from the <code>name</code> property on the function.</dd> - <dt><code>isAsmJSCompilationAvailable</code></dt> - <dd>Returns whether asm.js compilation is currently available or whether it is disabled (e.g., by the debugger).</dd> - <dt><code>isSimdAvailable</code></dt> - <dd>Returns <code>true</code> if SIMD extensions are supported on this platform.</dd> - <dt><code>getCompilerOptions()</code></dt> - <dd>Return an object describing some of the JIT compiler options.</dd> - <dt><code>isAsmJSModule(fn)</code></dt> - <dd>Returns whether the given value is a function containing <code>"use asm"</code> that has been validated according to the asm.js spec.</dd> - <dt><code>isAsmJSModuleLoadedFromCache(fn)</code></dt> - <dd>Return whether the given asm.js module function has been loaded directly from the cache. This function throws an error if fn is not a validated asm.js module.</dd> - <dt><code>isAsmJSFunction(fn)</code></dt> - <dd>Returns whether the given value is a nested function in an asm.js module that has been both compile- and link-time validated.</dd> - <dt><code>wasmIsSupported()</code></dt> - <dd>Returns a boolean indicating whether WebAssembly is supported on the current device.</dd> - <dt><code>wasmTextToBinary(str)</code></dt> - <dd>Translates the given text wasm module into its binary encoding.</dd> - <dt><code>wasmBinaryToText(bin)</code></dt> - <dd>Translates binary encoding to text format</dd> - <dt><code>wasmExtractCode(module)</code></dt> - <dd>Extracts generated machine code from WebAssembly.Module.</dd> - <dt><code>isLazyFunction(fun)</code></dt> - <dd><code>True</code> if fun is a lazy <code>JSFunction</code>.</dd> - <dt><code>isRelazifiableFunction(fun)</code></dt> - <dd><code>Ture</code> if fun is a <code>JSFunction</code> with a relazifiable <code>JSScript</code>.</dd> - <dt><code>enableShellAllocationMetadataBuilder()</code></dt> - <dd>Use <code>ShellAllocationMetadataBuilder</code> to supply metadata for all newly created objects.</dd> - <dt><code>getAllocationMetadata(obj)</code></dt> - <dd>Get the metadata for an object.</dd> - <dt><code>bailout()</code></dt> - <dd>Force a bailout out of ionmonkey (if running in ionmonkey).</dd> - <dt><code>bailAfter(number)</code></dt> - <dd>Start a counter to bail once after passing the given amount of possible bailout positions in ionmonkey.</dd> - <dt><code>inJit()</code></dt> - <dd>Returns <code>true</code> when called within (jit-)compiled code. When jit compilation is disabled this function returns an error string. This function returns <code>false</code> in all other cases. Depending on truthiness, you should continue to wait for compilation to happen or stop execution.</dd> - <dt><code>inIon()</code></dt> - <dd>Returns <code>true</code> when called within ion. When ion is disabled or when compilation is abnormally slow to start, this function returns an error string. Otherwise, this function returns <code>false</code>. This behaviour ensures that a falsy value means that we are not in ion, but expect a compilation to occur in the future. Conversely, a truthy value means that we are either in ion or that there is litle or no chance of ion ever compiling the current script.</dd> - <dt><code>assertJitStackInvariants()</code></dt> - <dd>Iterates the Jit stack and check that stack invariants hold.</dd> - <dt><code>setCompilerOption(option, number)</code></dt> - <dd>Set a compiler option indexed in JSCompileOption enum to a number.</dd> - <dt><code>setIonCheckGraphCoherency(bool)</code></dt> - <dd>Set whether Ion should perform graph consistency (DEBUG-only) assertions. These assertions are valuable and should be generally enabled, however they can be very expensive for large (wasm) programs.</dd> - <dt><code>serialize(data, [transferables, [policy]])</code></dt> - <dd>Serialize <code>data</code> using <code>JS_WriteStructuredClone</code>. Returns a structured clone buffer object. <code>policy</code> must be an object. The following keys' string values will be used to determine whether the corresponding types may be serialized (value <code>allow</code>, the default) or not (value <code>deny</code>). If denied types are encountered a TypeError will be thrown during cloning. Valid keys: <code>SharedArrayBuffer</code>.</dd> - <dt><code>deserialize(clonebuffer)</code></dt> - <dd>Deserialize data generated by serialize.</dd> - <dt><code>detachArrayBuffer(buffer)</code></dt> - <dd>Detach the given <code>ArrayBuffer</code> object from its memory, i.e. as if it had been transferred to a WebWorker.</dd> - <dt><code>helperThreadCount()</code></dt> - <dd>Returns the number of helper threads available for off-main-thread tasks.</dd> - <dt><code>reportOutOfMemory()</code></dt> - <dd>Report OOM, then clear the exception and return undefined. For crash testing.</dd> - <dt><code>throwOutOfMemory()</code></dt> - <dd>Throw out of memory exception, for OOM handling testing.</dd> - <dt><code>reportLargeAllocationFailure()</code></dt> - <dd>Call the large allocation failure callback, as though a large malloc call failed, then return undefined. In Gecko, this sends a memory pressure notification, which can free up some memory.</dd> - <dt><code>findPath(start, target)</code></dt> - <dd>Return an array describing one of the shortest paths of GC heap edges from <code>start</code> to <code>target</code>, or <code>undefined</code> if <code>target</code> is unreachable from <code>start</code>. Each element of the array is either of the form: <code>{ node: {object or string}, edge: {string describing edge from node} }</code> , if the node is a JavaScript object or value; or of the form: <code>{ type: {string describing node}, edge: {string describing edge} }</code> , if the node is some internal thing that is not a proper JavaScript value (like a shape or a scope chain element). The destination of the i'th array element's edge is the node of the i+1'th array element; the destination of the last array element is implicitly <code>target</code>.</dd> - <dt><code>shortestPaths(start, targets, maxNumPaths)</code></dt> - <dd>Return an array of arrays of shortest retaining paths. There is an array of shortest retaining paths for each object in <code>targets</code>. The maximum number of paths in each of those arrays is bounded by <code>maxNumPaths</code>. Each element in a path is of the form <code>{ predecessor, edge }</code>.</dd> - <dt><code>sharedMemoryEnabled()</code></dt> - <dd>Return true if <code>SharedArrayBuffer</code> and Atomics are enabled</dd> - <dt><code>evalReturningScope(scriptStr, [global])</code></dt> - <dd>Evaluate the script in a new scope and return the scope. If <code>global</code> is present, clone the script to <code>global</code> before executing.</dd> - <dt><code>cloneAndExecuteScript(source, global)</code></dt> - <dd>Compile <code>source</code> in the current compartment, clone it into <code>global</code>'s compartment, and run it there.</dd> - <dt><code>backtrace()</code></dt> - <dd>Dump out a brief backtrace.</dd> - <dt><code>getBacktrace([options])</code></dt> - <dd>Return the current stack as a string. Takes an optional options object, which may contain any or all of the boolean properties <code>options.args</code> - show arguments to each function <code>options.locals</code> - show local variables in each frame <code>options.thisprops</code> - show the properties of the <code>this</code> object of each frame</dd> - <dt><code>byteSize(value)</code></dt> - <dd>Return the size in bytes occupied by <code>value</code>, or <code>undefined</code> if value is not allocated in memory.</dd> - <dt><code>byteSizeOfScript(f)</code></dt> - <dd>Return the size in bytes occupied by the function <code>f</code>'s JSScript.</dd> - <dt><code>setImmutablePrototype(obj)</code></dt> - <dd>Try to make obj's <code>[[Prototype]]</code> immutable, such that subsequent attempts to change it will fail. Return <code>true</code> if obj's <code>[[Prototype]]</code> was successfully made immutable (or if it already was immutable), <code>false</code> otherwise. Throws in case of internal error, or if the operation doesn't even make sense (for example, because the object is a revoked proxy).</dd> - <dt><code>setLazyParsingDisabled(bool)</code></dt> - <dd>Explicitly disable lazy parsing in the current compartment. The default is that lazy parsing is not explicitly disabled.</dd> - <dt><code>setDiscardSource(bool)</code></dt> - <dd>Explicitly enable source discarding in the current compartment. The default is that source discarding is not explicitly enabled.</dd> - <dt><code>getConstructorName(object)</code></dt> - <dd>If the given object was created with <code>new Ctor</code>, return the constructor's display name. Otherwise, return <code>null</code>.</dd> - <dt><code>allocationMarker([options])</code></dt> - <dd>Return a freshly allocated object whose <code>[[Class]]</code> name is <code>AllocationMarker</code>. Such objects are allocated only by calls to this function, never implicitly by the system, making them suitable for use in allocation tooling tests. Takes an optional options object which may contain the following properties: * nursery: bool, whether to allocate the object in the nursery</dd> - <dt><code>setGCCallback({action:"...", options...})</code></dt> - <dd>Set the GC callback. action may be: - <dl> - <dt><code>minorGC</code></dt> - <dd>run a nursery collection</dd> - <dt><code>majorGC</code></dt> - <dd>run a major collection, nesting up to a given <code>depth</code></dd> - </dl> - </dd> - <dt><code>getLcovInfo(global)</code></dt> - <dd>Generate LCOV tracefile for the given compartment. If no global are provided then the current global is used as the default one.</dd> - <dt><code>getModuleEnvironmentNames(module)</code></dt> - <dd>Get the list of a module environment's bound names for a specified module.</dd> - <dt><code>getModuleEnvironmentValue(module, name)</code></dt> - <dd>Get the value of a bound name in a module environment.</dd> - <dt><code>enableForEach()</code></dt> - <dd>Enables the deprecated, non-standard for-each.</dd> - <dt><code>disableForEach()</code></dt> - <dd>Disables the deprecated, non-standard for-each.</dd> -</dl> - -<h3 id="Functions_available_only_if_SPIDERMONKEY_PROMISE_is_defined">Functions available only if SPIDERMONKEY_PROMISE is defined</h3> - -<dl> - <dt><code>settlePromiseNow(promise)</code></dt> - <dd>'Settle' a <code>promise</code> immediately. This just marks the promise as resolved with a value of <code>undefined</code> and causes the firing of any <code>onPromiseSettled</code> hooks set on <code>Debugger</code> instances that are observing the given promise's global as a debuggee.</dd> - <dt><code>getWaitForAllPromise(densePromisesArray)</code></dt> - <dd>Calls the <code>GetWaitForAllPromise</code> JSAPI function and returns the result Promise.</dd> - <dt><code>resolvePromise(promise, resolution)</code></dt> - <dd>Resolve a <code>Promise</code> by calling the JSAPI function <code>JS::ResolvePromise</code>.</dd> - <dt><code>rejectPromise(promise, reason)</code></dt> - <dd>Reject a <code>Promise</code> by calling the JSAPI function <code>JS::RejectPromise</code>.</dd> -</dl> - -<h3 id="Functions_available_only_if_SPIDERMONKEY_PROMISE_is_not_defined">Functions available only if SPIDERMONKEY_PROMISE is not defined</h3> - -<dl> - <dt><code>makeFakePromise()</code></dt> - <dd>Create an object whose <code>[[Class]]</code> name is <code>'Promise'</code> and call <code>JS::dbg::onNewPromise</code> on it before returning it. It doesn't actually have any of the other behavior associated with promises.</dd> - <dt><code>settleFakePromise(promise)</code></dt> - <dd>'Settle' a <code>promise</code> created by <code>makeFakePromise()</code>. This doesn't have any observable effects outside of firing any <code>onPromiseSettled</code> hooks set on <code>Debugger</code> instances that are observing the given promise's global as a debuggee.</dd> -</dl> - -<h3 id="Functions_available_only_if_JS_GC_ZEAL_is_defined">Functions available only if JS_GC_ZEAL is defined</h3> - -<dl> - <dt><code>gczeal(level, [N])</code></dt> - <dd>Specifies how zealous the garbage collector should be. Some of these modes can be set simultaneously, by passing multiple level options, e.g. <code>"2;4"</code> will activate both modes 2 and 4. Modes can be specified by name or number. - <p>Values:</p> - - <dl> - <dt><code>0: (None)</code></dt> - <dd>Normal amount of collection (resets all modes)</dd> - <dt><code>1: (Poke)</code></dt> - <dd>Collect when roots are added or removed</dd> - <dt><code>2: (Alloc)</code></dt> - <dd>Collect when every <code>N</code> allocations (default: 100)</dd> - <dt><code>3: (FrameGC)</code></dt> - <dd>Collect when the window paints (browser only)</dd> - <dt><code>4: (VerifierPre)</code></dt> - <dd>Verify pre write barriers between instructions</dd> - <dt><code>5: (FrameVerifierPre)</code></dt> - <dd>Verify pre write barriers between paints</dd> - <dt><code>6: (StackRooting)</code></dt> - <dd>Verify stack rooting</dd> - <dt><code>7: (GenerationalGC)</code></dt> - <dd>Collect the nursery every <code>N</code> nursery allocations</dd> - <dt><code>8: (IncrementalRootsThenFinish)</code></dt> - <dd>Incremental GC in two slices: 1) mark roots 2) finish collection</dd> - <dt><code>9: (IncrementalMarkAllThenFinish)</code></dt> - <dd>Incremental GC in two slices: 1) mark all 2) new marking and finish</dd> - <dt><code>10: (IncrementalMultipleSlices)</code></dt> - <dd>Incremental GC in multiple slices</dd> - <dt><code>11: (IncrementalMarkingValidator)</code></dt> - <dd>Verify incremental marking</dd> - <dt><code>12: (ElementsBarrier)</code></dt> - <dd>Always use the individual element post-write barrier, regardless of elements size</dd> - <dt><code>13: (CheckHashTablesOnMinorGC)</code></dt> - <dd>Check internal hashtables on minor GC</dd> - <dt><code>14: (Compact)</code></dt> - <dd>Perform a shrinking collection every N allocations</dd> - <dt><code>15: (CheckHeapAfterGC)</code></dt> - <dd>Walk the heap to check its integrity after every GC</dd> - <dt><code>16: (CheckNursery)</code></dt> - <dd>Check nursery integrity on minor GC</dd> - </dl> - </dd> - <dt><code>schedulegc([num | obj])</code></dt> - <dd>If num is given, schedule a GC after num allocations. If obj is given, schedule a GC of obj's zone. Returns the number of allocations before the next trigger.</dd> - <dt><code>selectforgc(obj1, obj2, ...)</code></dt> - <dd>Schedule the given objects to be marked in the next GC slice.</dd> - <dt><code>verifyprebarriers()</code></dt> - <dd>Start or end a run of the pre-write barrier verifier.</dd> - <dt><code>verifypostbarriers()</code></dt> - <dd>Does nothing (the post-write barrier verifier has been remove).</dd> - <dt><code>gcstate()</code></dt> - <dd>Report the global GC state.</dd> - <dt><code>deterministicgc(true|false)</code></dt> - <dd>If <code>true</code>, only allow determinstic GCs to run.</dd> -</dl> - -<h3 id="Functions_available_only_if_JS_TRACE_LOGGING_is_defined">Functions available only if JS_TRACE_LOGGING is defined</h3> - -<dl> - <dt><code>startTraceLogger()</code></dt> - <dd>Start logging the mainThread. Note: tracelogging starts automatically. Disable it by setting environment variable <code>TLOPTIONS=disableMainThread</code></dd> - <dt><code>stopTraceLogger()</code></dt> - <dd>Stop logging the mainThread.</dd> -</dl> - -<h3 id="Functions_available_only_in_nightly_build">Functions available only in nightly build</h3> - -<dl> - <dt><code>objectAddress(obj)</code></dt> - <dd>Return the current address of the object. For debugging only--this address may change during a moving GC.</dd> - <dt><code>sharedAddress(obj)</code></dt> - <dd>Return the address of the shared storage of a <code>SharedArrayBuffer</code>.</dd> -</dl> - -<h3 id="Functions_available_only_in_DEBUG_build_2">Functions available only in DEBUG build</h3> - -<dl> - <dt><code>dumpObject()</code></dt> - <dd>Dump an internal representation of an object.</dd> - <dt><code>dumpStringRepresentation(str)</code></dt> - <dd>Print a human-readable description of how the string <code>str</code> is represented.</dd> - <dt><code>setRNGState(seed0, seed1)</code></dt> - <dd>Set this compartment's RNG state.</dd> -</dl> - -<h3 id="Functions_available_only_in_DEBUG_build_or_JS_OOM_BREAKPOINT_is_defined">Functions available only in DEBUG build or JS_OOM_BREAKPOINT is defined</h3> - -<dl> - <dt><code>oomThreadTypes()</code></dt> - <dd>Get the number of thread types that can be used as an argument for <code>oomAfterAllocations()</code> and <code>oomAtAllocation()</code>.</dd> - <dt><code>oomAfterAllocations(count [,threadType])</code></dt> - <dd>After <code>count</code> <code>js_malloc</code> memory allocations, fail every following allocation (return <code>nullptr</code>). The optional thread type limits the effect to the specified type of helper thread.</dd> - <dt><code>oomAtAllocation(count [,threadType])</code></dt> - <dd>After <code>count</code> <code>js_malloc</code> memory allocations, fail the next allocation (return <code>nullptr</code>). The optional thread type limits the effect to the specified type of helper thread.</dd> - <dt><code>resetOOMFailure()</code></dt> - <dd>Remove the allocation failure scheduled by either <code>oomAfterAllocations()</code> or <code>oomAtAllocation()</code> and return whether any allocation had been caused to fail.</dd> - <dt><code>oomTest(function, [expectExceptionOnFailure = true])</code></dt> - <dd>Test that the passed function behaves correctly under OOM conditions by repeatedly executing it and simulating allocation failure at successive allocations until the function completes without seeing a failure. By default this tests that an exception is raised if execution fails, but this can be disabled by passing false as the optional second parameter. This is also disabled when <code>--fuzzing-safe</code> is specified.</dd> -</dl> - -<h3 id="Functions_available_only_in_DEBUG_build_if_--fuzzing-safe_is_not_specified_and">Functions available only in DEBUG build if <code>--fuzzing-safe</code> is not specified and</h3> - -<dl> - <dt><code>parseRegExp(pattern[, flags[, match_only])</code></dt> - <dd>Parses a <code>RegExp</code> pattern and returns a tree, potentially throwing.</dd> - <dt><code>disRegExp(regexp[, match_only[, input]])</code></dt> - <dd>Dumps <code>RegExp</code> bytecode.</dd> -</dl> |