問題タブ [trampolines]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
8 に答える
47534 参照

c - トランポリン機能とは?

職場での最近の議論の中で、誰かがトランポリン機能について言及しました。

ウィキペディアの説明を読みました。機能の一般的なアイデアを示すだけで十分ですが、もう少し具体的なものが欲しいです。

トランポリンを説明する簡単なコード スニペットはありますか?

0 投票する
3 に答える
1231 参照

optimization - F#/ Scalaで相互再帰を最適化するための標準的な方法は何ですか?

これらの言語は、相互再帰的な関数の最適化を「ネイティブに」サポートしていないので、トランポリンか、ループとして書き直す必要があると思います)何かが足りませんか?

更新:私はFSharpについて嘘をついたようですが、グーグル中に相互の末尾呼び出しの例を見ませんでした

0 投票する
2 に答える
2296 参照

scala - TailCallsの使い方は?

私が正しく理解していれば、scala.util.control.TailCallsを使用して、トランポリンを使用することにより、非末尾再帰関数のスタックオーバーフローを回避できます。APIで与えられた例は簡単です:

ただし、より興味深いケースは、recursve呼び出しのにいくつかの操作を実行する場合です。私はどういうわけかによって実行されている「ナイーブな」階乗の実装を得ました

しかし、これはひどいように見え、これが意図された使用法であるとは思えません。だから私の質問は、TailCallsを使用して階乗関数またはフィボナッチ関数を正しく作成する方法です(はい、アキュムレータを使用して末尾再帰を取得する方法を知っています)?または、TailCallsはこの種の問題には適していませんか?

0 投票する
2 に答える
2002 参照

mono - 「トランポリン タイプ 2 が不足しています」エラーを修正する MonoDevelop 設定

iOSアプリを開発しています。PC でアプリをテストしたところ、すべて問題なく動作しましたが、iPad/iPhone4 で実行すると、「トランポリン タイプ 2 が不足しています」というエラー メッセージが頻繁に表示され、アプリがクラッシュしました。ここ数日、原因の特定/修正に取り組んでおり、ネットで見つけたすべての提案を試しましたが、まだ何の進展もありません. 私たちが見つけた唯一の解決策は、モノタッチで -aot "nrgctx-trampolines=4048" -aot "nimt-trampolines=4048" のようなコンパイラ設定でトランポリン設定を調整することについて話している投稿/ウェブページからのものです。ただし、Unity3D を使用してアプリを開発しているため、このコンパイラ オプションは公開されていません。しかし、Monotouch と Unity3D はどちらも Mono フレームワークに基づいていると思います。

これが正しいかどうか誰にもわかりますか?はいの場合、Unity3D プロジェクトでこのオプションを有効にする方法について誰か教えてもらえますか?

よろしくお願いします!

0 投票する
0 に答える
215 参照

trampolines - トランポリンタイプ 2 の使用量を減らす

Unity3D を使用して iOS アプリを開発していますが、「トランポリン タイプ 2 エラーが不足しています」というエラーが常に発生しています。Unity ではトランポリンの制限を調整することはできないため、使用するトランポリンの量を減らす必要があります。これまでのところ、いくつかの LINQ 呼び出しを削除するなどのいくつかのことを行い、状況が少し改善されたようです。しかし実際には、私たちが行っていることが役に立っているのかどうかはまだよくわかりません。

だから、トランポリン タイプ 2 とは正確には何なのか、アプリによって訴えられるトランポリン タイプ 2 の量をどのように減らすことができるのか教えていただけないでしょうか? ありがとう!

ありがとう!

これは数週間前の私の最初の質問です: 「トランポリンタイプ2が不足しています」エラーを修正するためのMonoDevelop設定

0 投票する
3 に答える
4663 参照

c - 末尾呼び出しの除去を実装するためのいくつかの良い方法は何ですか?

私はC/C ++の不潔な組み合わせで小さなSchemeインタープリターを作成しましたが、適切な末尾呼び出しをまだ実装していません。

私はMTAアルゴリズムの古典的なチェイニーを知っていますが、これを実装する他の素晴らしい方法はありますか?スキームスタックをヒープに置くことができることは知っていますが、標準では無制限の数のアクティブな末尾呼び出しをサポートする必要があるため、それでも適切な除去にはなりません。

私もlongjmpsをいじりましたが、これまでのところ、相互再帰的でない末尾呼び出しに対してのみうまく機能すると思います。

主要なCベースのスキームはどのように適切な末尾再帰を実装しますか?

0 投票する
2 に答える
16165 参照

c++ - How to create a trampoline function for hook

I'm interested in hooking and I decided to see if I could hook some functions. I wasn't interested in using a library like detours because I want to have the experience of doing it on my own. With some sources I found on the internet, I was able to create the code below. It's basic, but it works alright. However when hooking functions that are called by multiple threads it proves to be extremely unstable. If two calls are made at nearly the same time, it'll crash. After some research I think I need to create a trampoline function. After looking for hours all I was not able to find anything other that a general description on what a trampoline was. I could not find anything specifically about writing a trampoline function, or how they really worked. If any one could help me write one, post some sources, or at least point me in the right direction by recommending some articles, sites, books, etc. I would greatly appreciate it.

Below is the code I've written. It's really basic but I hope others might learn from it.

test.cpp

hook.cpp

0 投票する
2 に答える
1347 参照

ios - MonoTouchSIGABRT「タイプ2のトランポリンが不足しています」エラー

ネイティブデバイス(iPad)でMonoTouchアプリを実行すると、SIGABRT/トランポリンが不足するというエラーが発生します。

これは私のアプリのかなり早い段階で発生します-私はMonoTouch.Dialogを使用してセクションを作成しています。

トランポリンの数を増やすためのコンパイラ設定はありますか?

これをプロファイリングして、アプリが不足している理由を見つけるにはどうすればよいですか?

'/private/var/mobile/Applications/9A5EE6EB-CAB8-404E-AF2F-E6571C1AC164/iphone.app/mscorlib.dll'(128)のタイプ2のトランポリンが不足しています

スタックトレース:

System.Linq.Enumerable/c__Iterator1Dで2.MoveNext () <0x000a7> at MonoTouch.Dialog.Section.AddAll (System.Collections.Generic.IEnumerable1)[0x00020] in /Developer/MonoTouch/Source/MonoTouch.Dialog/MonoTouch.Dialog/Elements.cs:2006 at MonoTouch.Dialog.Section.Add(System.Collections.Generic.IEnumerable`1)[0x00000] in / Developer / MonoTouch / Source / MonoTouch.Dialog / MonoTouch.Dialog / Elements.cs:2019 at BuiltSteady.Zaplify.Devices.IPhone.AddPage.ViewDidAppear(bool)[0x000d6] in / Users / ogazitt / zaplify / source / devices / ios /iphone/AddPage.cs:65 at(wrapper runtime-invoke)object.runtime_invoke_dynamic(intptr、intptr、intptr、intptr)<0xffffffff> at MonoTouch.UIKit.UIApplication.Main(string []、string、string)[0x00042] /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:29 at BuiltSteady.Zaplify.Devices.IPhone.Application.Main(string [])[0x00000] in / Users / ogazitt / zaplify / source / devices /ios/iphone/Main.cs:16 at(wrapper runtime-invoke)object.runtime_invoke_dynamic(intptr、intptr、intptr、intptr)<0xffffffff>

ネイティブスタックトレース:

0 zaplifyiphone 0x00ab0334 mono_handle_native_sigsegv + 280 1 zaplifyiphone
0x00ad3088 sigabrt_signal_handler + 180 2 libsystem_c.dylib
0x34f80539 _sigtramp + 48 3 libsystem_c.dylib
0x34f75f5b pthread_killの+ 54 4 libsystem_c.dylib
0x34f6efebアボート+ 94 5 zaplifyiphone
0x00b8c138 monoeg_g_logv + 152 6 zaplifyiphone
0x00b8c1a8 monoeg_g_log + 32 7 zaplifyiphone
0x00aa2454 get_numerous_trampoline + 152 8 zaplifyiphone
0x00aa2898 mono_aot_get_imt_thunk + 56 9 zaplifyiphone
0x00b459b4 initialize_imt_slot + 112 10 zaplifyiphone
0x00b46d9c build_imt_slots + 1124 11 zapl
0x00b46f04 mono_vtable_build_imt_slot + 120 12 zaplifyiphone
0x00ab3024 mono_convert_imt_slot_to_vtable_slot + 292 13 zaplifyiphone 0x00ab329c common_call_trampoline + 284 14 zaplifyiphone 0x00ab17a8
mono_vcall_
0x00011ee0 MonoTouch_Dialog_Section_AddAll_System_Collections_Generic_IEnumerable_1_MonoTouch_Dialog_Element + 188 17 zaplifyiphone 0x00011f68 MonoTouch_Dialog_Section_Add_System_Collections_Generic_IEnumerable_1_MonoTouch_Dialog_Element + 36 18 zaplifyiphone 0x00293f0c BuiltSteady_Zaplify_Devices_IPhone_AddPage_ViewDidAppear_bool + 2068年19 zaplifyiphone 0x00968774 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr mono_jit_runtime_invoke + 1644 + 200 20 zaplifyiphone 0x00a9c980 21 zaplifyiphone
0x00b44e00 mono_runtime_invoke + 128 22 zaplifyiphone
0x00ba1518 monotouch_trampoline + 3228 23のUIKit
0x351ab6b5-[UIViewController _setViewAppearState:isAnimating:] + 144 24 UIKit 0x35205269-[UITabBarController viewDidAppear:] + 100 25 UIKit 0x351ab6b5-[UIViewController _setViewAppearState:isAnimating:] + 144 26 UIKit 0x351d9115-[UIViewController 174 28 CoreFoundation
0x340d0b4b CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 18 29 CoreFoundation 0x340ced87CFRunLoopDoObservers + 258 30 CoreFoundation 0x340cf0e1 __CFRunLoopRun + 760 31 CoreFoundation 0x340524dd CFRunLoopRunSpecific + 300 32 CoreFoundation 0x340523a5 CFRunLoopRunInMode
+ 104 33 GraphicsServices
0x35cString

_intptr_intptr + 240 36 zaplifyiphone 0x00277900 BuiltSteady_Zaplify_Devices_IPhone_Application_Main_string__ + 152 37 zaplifyiphone 0x00968774 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr mono_jit_runtime_invoke + 1644 + 200 38 zaplifyiphone 0x00a9c980 39 zaplifyiphone
0x00b44e00 mono_runtime_invoke + 128 40 zaplifyiphone
0x00b490ac mono_runtime_exec_main + 436 41 zaplifyiphone
0x00b4dd20 mono_runtime_run_main + 756 42 zaplifyiphone
0x00aa0d08 mono_jit_exec + 140 43 zaplifyiphone
0x00a98f18メイン+ 2156 44 zaplifyiphone
0x00002ff4 start + 52