Share via


Named Return Value Optimization in Visual C++ 2005

Here is white paper that I will soon be submitting. Feel free to leave your comments.

The Microsoft VC++ optimizing compiler is always looking for new techniques and optimizations to provide the programmer with higher performance when possible. This article will show how the compiler tries to eliminate redundant Copy constructor and Destructor calls in various situations.

Typically when a method returns an instance of an object, a temporary object is created and copied to the target object via the copy constructor. The C++ standard allows the elision of the copy constructor (even if this results in different program behavior) which has a side effect of enabling the compiler to treat both objects as one (see section 12.8. Copying class objects, paragraph 15). The VC8.0 compiler makes use of the flexibility that the standard provides and adds a new feature which is the Named Return Value Optimization (NRVO). NRVO eliminates the copy constructor and destructor of a stack based return value. This optimizes out the redundant copy constructor and destructor calls and thus improves overall performance. It is to be noted that this could lead to different behavior between optimized and non optimized programs (see optimization side effects section).

There are some cases in which the optimization will not take place (see Optimization Limitations section for samples). The more common ones are:

a) Different paths returning different named objects.

b) Multiple return paths (even if the same named object is returned on all paths) with EH states introduced.

c) The named object returned is referenced in an inline asm block.

 

Optimization Description

Here is a simple example in Figure 1 to illustrate the optimization and how it is implemented:

A MyMethod (B &var)

{

          A retVal;

          retVal.member = var.value + bar(var);

          return retVal;

}

Figure 1 – Original Code

 

The program that uses the above function may have a construct such as:

valA = MyMethod(valB);

 

That value that is returned from MyMethod is created in the memory space pointed to by ValA through the use of hidden argument. Here is what the function looks like when we expose the hidden argument and explicitly show the constructors and destructors:

A MyMethod (A &_hiddenArg, B &var)

{

          A retVal;

          retVal.A::A(); // constructor for retVal

          retVal.member = var.value + bar(var);

          _hiddenArg.A::A(retVal); // the copy constructor for A

          return;

retVal.A::~A(); // destructor for retVal

 

}

Figure 2 – Hidden argument code without NRVO (pseudo code)

 

From the above code, it is noticeable that there are some optimization opportunities available. The basic idea is to eliminate the temporary stack based value (retVal) and use the hidden argument. Consequently, this will eliminate the copy constructor and destructor of the stack based value. Here is the NRVO based optimized code:

 

A MyMethod(A &_hiddenArg, B &var)

{

          _hiddenArg.A::A();

          _hiddenArg.member = var.value + bar(var);

          Return

}

Figure 3 – Hidden argument code with NRVO (pseudo code)

 

Code Samples

Sample 1: Simple Example:

#include <stdio.h>

class RVO

{

public:

           

            RVO(){printf("I am in constructor\n");}

            RVO (const RVO& c_RVO) {printf ("I am in copy constructor\n");}

            ~RVO(){printf ("I am in destructor\n");}

            int mem_var;

};

RVO MyMethod (int i)

{

            RVO rvo;

            rvo.mem_var = i;

            return (rvo);

}

int main()

{

            RVO rvo;

            rvo=MyMethod(5);

}

Figure 4 – Sample1.cpp

 

Compiling sample1.cpp with and without NRVO turned on will yield different behavior.

Without NRVO (cl /Od sample1.cpp), the expected output would be:

  I am in constructor

I am in constructor

I am in copy constructor

I am in destructor

I am in destructor

I am in destructor

 

With NRVO (cl /O2 sample1.cpp), the expected output would be:

I am in constructor

I am in constructor

I am in destructor

I am in destructor

 

 

Sample 2: More complex sample:

#include <stdio.h>

class A {

  public:

    A() {printf ("A: I am in constructor\n");i = 1;}

   ~A() { printf ("A: I am in destructor\n"); i = 0;}

    A(const A& a) {printf ("A: I am in copy constructor\n"); i = a.i;}

    int i, x, w;

};

 class B {

  public:

    A a;

    B() { printf ("B: I am in constructor\n");}

    ~B() { printf ("B: I am in destructor\n");}

    B(const B& b) { printf ("B: I am in copy constructor\n");}

};

A MyMethod()

{

    B* b = new B();

    A a = b->a;

    delete b;

    return (a);

}

int main()

{

    A a;

    a = MyMethod();

}

Figure 5 – Sample2.cpp

 

The output without NRVO (cl /Od sample2.cpp) will look like:

A: I am in constructor

A: I am in constructor

B: I am in constructor

A: I am in copy constructor

B: I am in destructor

A: I am in destructor

A: I am in copy constructor

A: I am in destructor

A: I am in destructor

A: I am in destructor

 

While when the NRVO optimization kicks in (cl /O2 sample2.cpp), the output will be:

A: I am in constructor

A: I am in constructor

B: I am in constructor

A: I am in copy constructor

B: I am in destructor

A: I am in destructor

A: I am in destructor

A: I am in destructor

 

Optimization Limitations:

There are some cases where the optimization won’t actually kick in. Here are few samples of such limitations:

 

Sample 3: Exception Sample:

In the face of exceptions the hidden argument must be destructed within the scope of the temporary that it is replacing. To illustrate:

//RVO class is defined above in figure 4

#include <stdio.h>

RVO MyMethod (int i)

{

            RVO rvo;

            rvo.mem_var = i;

            throw "I am throwing an exception!";

            return (rvo);

}

int main()

{

            RVO rvo;

            try

            {

                        rvo=MyMethod(5);

            }

            catch (char* str)

            {

                        printf ("I caught the exception\n");

            }

}

Figure 6 – Sample3.cpp

 

Without NRVO (cl /Od /EHsc sample3.cpp), the expected output would be:

I am in constructor

I am in constructor

I am in destructor

I caught the exception

I am in destructor

 

If the “throw” gets commented out, the output will be:

I am in constructor

I am in constructor

I am in copy constructor

I am in destructor

I am in destructor

I am in destructor

 

Now, if the “throw” gets commented out and the NRVO gets triggered in, the output will look like:

I am in constructor

I am in constructor

I am in destructor

I am in destructor

 

That is to say, sample3.cpp as it is in Figure 6 will behave the same with and without NRVO.

 

Sample 4: Different Named Object Sample:

To make use of the optimization all exit paths must return the same named object. To illustrate consider sample4.cpp:

#include <stdio.h>

class RVO

{

public:

           

            RVO(){printf("I am in constructor\n");}

            RVO (const RVO& c_RVO) {printf ("I am in copy constructor\n");}

            int mem_var;

};

RVO MyMethod (int i)

{

            RVO rvo;

            rvo.mem_var = i;

                        if (rvo.mem_var == 10)

                                    return (RVO());

            return (rvo);

}

int main()

{

            RVO rvo;

            rvo=MyMethod(5);

}

Figure 7 – Sample4.cpp

The output while optimizations are enabled (cl /O2 sample4.cpp) is the same as not enabling any optimizations (cl /Od sample.cpp). The NRVO doesn’t actually take place since not all return paths return the same named object.

I am in constructor

I am in constructor

I am in copy constructor

If you change the above sample to return rvo (as shown below in figure8àsample4.cpp modified) in all exit paths, the optimization will eliminate the copy constructor:

 

#include <stdio.h>

class RVO

{

public:

           

            RVO(){printf("I am in constructor\n");}

            RVO (const RVO& c_RVO) {printf ("I am in copy constructor\n");}

            int mem_var;

};

RVO MyMethod (int i)

{

            RVO rvo;

     if (i==10)

                                    return (rvo);

                        rvo.mem_var = i;

            return (rvo);

}

int main()

{

            RVO rvo;

    rvo=MyMethod(5);

}

Figure 8 – Sample4_Modified.cpp modified to make use of NRVO

 

The output (cl /O2 Sample4_Modified.cpp) will look like:

I am in constructor

I am in constructor

 

Sample 5: EH Restriction Sample:

Figure 9 below illustrates the same sample as in figure 8 except with the addition of a destructor to the RVO class. Having multiple return paths and introducing such a destructor creates EH states in the function. Due to the complexity of the compiler’s tracking which objects needs to be destructed, it avoids the return value optimization. This is actually something that the VC 2005 will need to improve in the future.

//RVO class is defined above in figure 4

#include <stdio.h>

RVO MyMethod (int i)

{

            RVO rvo;

     if (i==10)

                                    return (rvo);

                        rvo.mem_var = i;

            return (rvo);

}

int main()

{

            RVO rvo;

            rvo=MyMethod(5);

}

Figure 8 – Sample5.cpp

 

Compiling Sample5.cpp with and without optimization will yield the same result:

I am in constructor

I am in constructor

I am in copy constructor

I am in destructor

I am in destructor

I am in destructor

To make use of NRVO, try to eliminate the multiple return points in such cases by changing MyMethod to be something like:

RVO MyMethod (int i)

{

            RVO rvo;

                        if (i!=10)

                                    rvo.mem_var = i;

                        return(rvo);

}

Sample 6: Inline asm Restriction:

Another case where the compiler avoids performing NRVO is the when the named return object is referenced in an inline asm block. To illustrate, consider the below sample (sample6.cpp):

#include <stdio.h>

//RVO class is defined above in figure 4

RVO MyMethod (int i)

{

            RVO rvo;

__asm {

                        mov eax,rvo //comment this line out for RVO to kick in

                        mov rvo,eax //comment this line out for RVO to kick in

            }

            return (rvo);

}

int main()

{

            RVO rvo;

            rvo=MyMethod(5);

}

Figure 9 – Sample6.cpp

Compiling sample6.cpp with optimization turned on (cl /O2 sample6.cpp) will still not take advantage of NRVO. That is because the object returned was actually referenced in an inline asm block. Hence the output with and without optimizations will look like:

I am in constructor

I am in constructor

I am in copy constructor

I am in destructor

I am in destructor

I am in destructor

From the output, it is clear that the elimination of the copy constructor and destructor calls did not take place. If the asm block gets commented out, such calls will get eliminated.

Optimization Side Effects:

The programmer should be aware that such optimization might affect the flow of the application. The following example illustrates such a side effect:

#include <stdio.h>

int NumConsCalls=0;

int NumCpyConsCalls=0;

class RVO

{

public:

           

            RVO(){NumConsCalls++;}

            RVO (const RVO& c_RVO) {NumCpyConsCalls++;}

};

RVO MyMethod ()

{

            RVO rvo;

            return (rvo);

}

void main()

{

           RVO rvo;

           rvo=MyMethod();

            int Division = NumConsCalls / NumCpyConsCalls;

            printf ("Constructor calls / Copy constructor calls = %d\n",Division);

}

Figure 10 – Sample7.cpp

 

Compiling Sample7.cpp with no optimizations enabled (cl /Od sample7.cpp) will yield what most users expect. The “constructor” is called twice and the “copy constructor” is called once and hence the division (2/1) yields 2.

 

Constructor calls / Copy constructor calls = 2

On the other hand, if the above code gets compiled with optimization enabled (cl /O2 sample7.cpp), The NRVO will kick in and hence the “copy constructor” call will be eliminated. Consequently, NumCpyConsCalls will be ZERO leading to a division by ZERO exception which if not handled appropriately (as in sample7.cpp) might cause the application to crash.

 

 

References:

[1] The C++ Standard Incorporating Technical Corrigendum 1

 BS ISO/IEC 14882:2003 (Second Edition)

Thanks,

  Ayman B. Shoukry

  Program Manager, VC++ Team

Comments

  • Anonymous
    January 30, 2006
    "With NRVO (cl /O2 sample1.cpp), the expected output would be:
    I am in constructor
    I am in constructor
    I am in destructor
    I am in destructor"

    Figure 3 does list a ctor but not dtor :
    I do undestand the need for the Second constructor call, as an object-to-initial state necessity, but why there is still a dtor call ?
  • Anonymous
    January 30, 2006
    Besides, When I benchmark "hand optimized NRO" (Figure 3) against NRO ( Sample1.cpp with 02), I get much, much better speed (and not dtor call)
  • Anonymous
    April 04, 2006
    The 2 destructors are for the 2 rvo objects. The one in main and the on in MyMethod.

    I would be interested in taking a look at tour benchmark sample.

    Thanks,
    Ayman Shoukry
  • Anonymous
    April 04, 2006
    I was under the impression that the object in MyMethod was not really created when nrvo enabled, so no dtor call needed. (as in "hand nrvo")

    Here are the bench :
    http://tuan.kuranes.free.fr/BenchMark.zip

  • Anonymous
    April 05, 2006
    Only the copy constructor and destructor (resulting from the return) are eliminated. I am sure there are improvments that could be made. I wasn't able to access the ZIP file you provided (page not found..i will probably try later once more).

    Thanks,
    Ayman Shoukry
  • Anonymous
    July 03, 2008
    <a href= http://index2.ghlpof.com >trailer of scary movie 4</a> <a href= http://index5.ghlpof.com >slicksexs</a> <a href= http://index4.ghlpof.com >extras for movies</a> <a href= http://index3.ghlpof.com >fat mature tgp</a> <a href= http://index1.ghlpof.com >breast play</a>
  • Anonymous
    June 02, 2009
    PingBack from http://woodtvstand.info/story.php?id=87777
  • Anonymous
    June 07, 2009
    PingBack from http://greenteafatburner.info/story.php?id=3124
  • Anonymous
    June 11, 2009
    ヒマだょ…誰かかまってぉ…会って遊んだりできる人募集!とりあえずメール下さい☆ uau-love@docomo.ne.jp
  • Anonymous
    June 13, 2009
    カワイイ子ほど家出してみたくなるようです。家出掲示板でそのような子と出会ってみませんか?彼女たちは夕食をおごってあげるだけでお礼にHなご奉仕をしてくれちゃったりします
  • Anonymous
    June 14, 2009
    あなたは右脳派?もしくは左脳派?隠されたあなたの性格分析が3分で出来ちゃう診断サイトの決定版!合コンや話のネタにも使える右脳左脳チェッカーを試してみよう
  • Anonymous
    June 15, 2009
    The comment has been removed
  • Anonymous
    June 16, 2009
    セレブ達は一般の人達とは接する機会もなく、その出会う唯一の場所が「逆援助倶楽部」です。 男性はお金、女性はSEXを要求する場合が多いようです。これは女性に圧倒的な財力があるから成り立つことの出来る関係ではないでしょうか?
  • Anonymous
    June 17, 2009
    貴方のオ○ニーライフのお手伝い、救援部でHな見せたがり女性からエロ写メ、ムービーをゲットしよう!近所の女の子なら実際に合ってHな事ができちゃうかも!?夏に向けて開放的になっている女の子と遊んじゃおう
  • Anonymous
    June 18, 2009
    PingBack from http://barstoolsite.info/story.php?id=346
  • Anonymous
    June 20, 2009
    家出中でネットカフェやマンガ喫茶にいる女の子たちは、お金が無くなり家出掲示板で今晩泊めてくれる男性を探しています。ご飯を食べさせてあげたり泊めてあげることで彼女たちはHなお礼をしてくれる事が多いようです
  • Anonymous
    June 21, 2009
    当サイトは、みんなの「勝ち組負け組度」をチェックする性格診断のサイトです。ホントのあなたをズバリ分析しちゃいます!勝ち組負け組度には、期待以上の意外な結果があるかもしれません
  • Anonymous
    June 22, 2009
    男性が主役の素人ホストでは、男性のテクニック次第で女性会員様から高額な謝礼がもらえます。欲求不満な人妻や、男性と出会いが無い女性が当サイトで男性を求めていらっしゃいます。興味のある方はTOPページからどうぞ
  • Anonymous
    June 23, 2009
    The comment has been removed
  • Anonymous
    June 24, 2009
    The comment has been removed
  • Anonymous
    June 25, 2009
    The comment has been removed
  • Anonymous
    June 26, 2009
    セレブラブではココロとカラダに癒しを求めるセレブ達と会って頂ける男性を募集しています。セレブ女性が集まる当サイトではリッチな彼女たちからの謝礼を保証、安心して男性はお金、女性は体の欲求を満たしていただけます。無料登録は当サイトトップページからどうぞ
  • Anonymous
    June 27, 2009
    家出中でお金が無く、ネットカフェを泊り歩いているSOS少女たちは、家出掲示板で泊めてくれたり遊んでくれる男性を探しています。泊めてあげたりすると彼女たちはHなお礼をしてくれるかもしれません。家出少女と遊びたい方は当サイトはどうぞ
  • Anonymous
    June 28, 2009
    あなたの精神年齢を占ってみよう!当サイトは、みんなの「精神年齢度」をチェックする性格診断のサイトです。精神年齢度には、期待以上の意外な結果があるかも??興味がある方はぜひどうぞ
  • Anonymous
    June 29, 2009
    The comment has been removed
  • Anonymous
    June 30, 2009
    The comment has been removed
  • Anonymous
    July 01, 2009
    The comment has been removed
  • Anonymous
    July 02, 2009
    恋することって怖くないですか?最近ちょっと臆病になってて…そういうの抜きでえっちなことしたくて… lovely-i0709@docomo.ne.jp優しい人がいたらメール待ってます☆
  • Anonymous
    July 03, 2009
    さあ、今夏も新たな出会いを経験してみませんか?当サイトは円助交際の逆、つまり女性が男性を円助する『逆円助交際』を提供します。逆円交際を未経験の方でも気軽に遊べる大人のマッチングシステムです。年齢上限・容姿・経験一切問いません。男性の方は無料で登録して頂けます。貴方も新たな出会いを経験してみませんか
  • Anonymous
    July 05, 2009
    The comment has been removed
  • Anonymous
    July 06, 2009
    The comment has been removed
  • Anonymous
    July 07, 2009
    素人ホストでは日頃のストレスを発散したい、もう一度恋がしたい、そういた女性が癒しを求めて登録されています。当サイトは癒やされたい女性・寂しい女性を癒やす男性が集うカップリングサイトです
  • Anonymous
    July 08, 2009
    The comment has been removed
  • Anonymous
    July 09, 2009
    恥ずかしいけどやらしいことしたくてしょうがありません…誰か一緒にしてくれませんか?とりあえず連絡待ってます☆ cute.y.0902@docomo.ne.jp
  • Anonymous
    July 10, 2009
    The comment has been removed
  • Anonymous
    July 11, 2009
    家出娘や一人で寂しい子が書き込むSOS娘BBSでは彼女たちと遊んであげたり泊めてあげれる、優しい人を募集しています。見返りにHをしてくれる子も多く、いろんな理由がある少女があなたの助けを待っています。
  • Anonymous
    July 12, 2009
    話題の小向美奈子ストリップを盗撮!入念なボディチェックをすり抜けて超小型カメラで撮影した神動画がアップ中!期間限定配信の衝撃的映像を見逃すな
  • Anonymous
    July 13, 2009
    The comment has been removed
  • Anonymous
    July 14, 2009
    mixiで禁止された「出会い」コミュニティーが復活しているのをご存じですか?当サイトでは規制前の楽しかった頃のミクシーを再現しているという好評を頂いております。会員数も右肩上がりに増えていますので、興味のある方はぜひご覧ください
  • Anonymous
    July 15, 2009
    癒されたい女性や、寂しい素人女性を心も体も癒してあげるお仕事をご存じですか?女性宅やホテルに行って依頼主の女性とHしてあげるだけで高額の謝礼を手に入れる事が出来るのです。興味のある方は当サイトTOPページをご覧ください
  • Anonymous
    July 16, 2009
    The comment has been removed
  • Anonymous
    July 18, 2009
    最近TVや雑誌で紹介されている家出掲示板では、全国各地のネットカフェ等を泊り歩いている家出娘のメッセージが多数書き込みされています。彼女たちはお金がないので掲示板で知り合った男性の家にでもすぐに泊まりに行くようです。あなたも書き込みに返事を返してみませんか
  • Anonymous
    July 19, 2009
    あなたの性格を、動物に例えて占っちゃいます。もしかしたらこんな動物かも!?動物占いをうまく使って、楽しい人間関係を築いてください
  • Anonymous
    July 20, 2009
    The comment has been removed
  • Anonymous
    July 21, 2009
    家出中の女性や泊まる所が無い女性達がネットカフェなどで、飲み放題のドリンクで空腹を満たす生活を送っています。当サイトはそんな女性達をサポートしたいという人たちと困っている女性たちの為のサイトです
  • Anonymous
    July 22, 2009
    セレブ女性との割り切りお付き合いで大金を稼いでみませんか?女性に癒しと快楽、男性に謝礼とお互い満たしあえる当サイト、セレブラブはあなたの登録をお待ちしております。
  • Anonymous
    July 23, 2009
    誰か満足させてくれる人いませんか?めんどくさいこと抜きでしよっ♪ gu-gu-m@docomo.ne.jp とりあえずメールして☆
  • Anonymous
    July 24, 2009
    The comment has been removed
  • Anonymous
    July 25, 2009
    家出をして不安な少女の書込みが当、家出掲示板では増えています。泊まらせてあげたり、一日遊んであげるだけで彼女たちはあなたを神と呼び、精一杯のお礼をしてくれるはずです
  • Anonymous
    July 26, 2009
    あなたのゲーマー度を無料ゲーム感覚で測定します。15個の質問に答えるだけの簡単測定で一度遊んでみませんか?ゲームが得意な人もそうでない人もぜひどうぞ。
  • Anonymous
    July 27, 2009
    Hな女性たちは素人ホストを自宅やホテルに呼び、ひとときの癒しを求めていらっしゃいます。当サイトでは男性ホスト様の人員が不足しており、一日3〜4人の女性の相手をするホストもおられます。興味を持たれた方は当サイトにぜひお越しください
  • Anonymous
    July 29, 2009
    実は出会い系には…関係者用入り口があるのを知っていますか?広告主やスポンサー用に用意されたIDではサクラや業者が立ち入ることが出来ないようになっているのです。当サイトでは極秘に入手した関係者用URLが公開されています
  • Anonymous
    July 29, 2009
    男性はお金、女性は快楽を得る逆援助に興味はありませんか?お金を払っても性的欲求を満たしたいセレブ達との割り切り1日のお付き合いで当サイトでは大金を得ることができます。無料登録なのでアルバイト感覚でOK、詳しくはTOPページでどうぞ。
  • Anonymous
    July 30, 2009
    自分のほむぺ初公開でぇす。やっと完成したのでみんなに見てもらいたくて★カキコしました。意見ある方めぇるまってまぁす。 ggg.nj@docomo.ne.jp
  • Anonymous
    July 31, 2009
    セクース好きな女性が集まる★男性との性なる夜を求めた女性達が多数登録しております!セフレ出会いサイト☆セクフレ☆で夏休み中でヒマを持て余している女子○生から、刺激を求めるOLまでみんなまとめてオイシイ関係になっちゃおう
  • Anonymous
    August 01, 2009
    夏休みで気軽に家出する女子○生が急増しています。しかし家出したはいいものの泊る所やお金が無い彼女たちは、掲示板などで泊めてくれる男性を探す子も多いようです。当掲示板にも夏休みに入ってから通常の3倍以上のメッセージが寄せられています
  • Anonymous
    August 02, 2009
    あなたの真のH度を診断できるHチェッカー!コンパや飲み会で盛り上がること間違いなしのおもしろツールでみんなと盛り上がろう
  • Anonymous
    August 03, 2009
    今夏も新たな出会いを経験してみませんか?当サイトは円交の逆、つまり女性が男性を円助する『逆円交際』を提供します。未経験の方でも気軽に遊べる大人のマッチングシステムです。年齢上限・容姿・経験一切問いません。男性の方は無料で登録して頂けます。貴方も新たな出会いを経験してみませんか
  • Anonymous
    August 04, 2009
    今最もアツイバイトは人妻とのセフレ契約です。当サイトではお金を払ってでもセフレがほしい人妻が集まり、男性会員様との逆援生活を待っています。当サイトで欲求不満の女性との出会いをしてみませんか
  • Anonymous
    August 05, 2009
    素人ホストでは、男性のテクニック次第で女性会員様から高額な謝礼がもらえます。欲求不満な人妻や、男性と出会いが無い女性達が当サイトで男性を求めていらっしゃいます。興味のある方はTOPページからどうぞ
  • Anonymous
    August 06, 2009
    さゆのプロフィールが完成しましたぁ。記念すべき初プロフをネットに公開してみました。ドキドキしてるので優しい感想メールしてくれたら心和むかもでぇす po.tomoe.oq@docomo.ne.jp
  • Anonymous
    August 07, 2009
    The comment has been removed
  • Anonymous
    August 08, 2009
    カワイイ子ほど家出してあそんでみたくなるようです。家出掲示板でそのような子と出会ってみませんか?彼女たちは夕食をおごってあげるだけでお礼にHなご奉仕をしてくれちゃったりします
  • Anonymous
    August 10, 2009
    出会ぃも今は逆援助!オンナがオトコを買う時代になりました。当サイトでは逆援希望のセレブ女性が男性を自由に選べるシステムを採用しています。経済的に成功を収めた女性ほど金銭面は豊かですが愛に飢えているのです。興味のある方はどうぞ
  • Anonymous
    August 11, 2009
    即ハメセレブは完全無料でご利用できる出会いコミュニティです。今までにない実績で、あなたの希望に合った人をお探しします。毎月考えられない豪華なイベントを開催しているので出会いを保障します
  • Anonymous
    August 13, 2009
    夏真っ盛り!女の子は開放的な気分で一人Hしたくてウズウズしてるっ!貴方は女の子のオ○ニーを見て気分を高めてあげてネ!もちろん、お手伝いしてもオッケーだよ!さぁ、今すぐ救援部にアクセスしよっ
  • Anonymous
    August 14, 2009
    プロフ見て興味ある方は連絡ください。基本的には携帯依存症なぐらい携帯いじるのとかメールするの好きなのでまずはメアドから交換しましょう。仲良くなったら電話もおっけーなんでよろしくo.natyu.natyu.o@docomo.ne.jp
  • Anonymous
    August 15, 2009
    大好評の逆ナンイベントが毎週開催決定!素敵な出会いのきっかけ探し・アイナビにきませんか?積極的な出会いを求める人達なら無料参加OK!あなたもほんの少しの勇気で素敵な彼氏・彼女をGETしちゃおう!
  • Anonymous
    August 16, 2009
    夏休みで家出する女の子が急増しています。最初はマンガ喫茶やネットカフェで過ごすことが多いようですが、すぐにお小遣いが無くなり家出掲示板で泊めてくれたり遊んでくれる男性を探す子が多いようです。当サイトはそんな女の子達をサポートしたいという人たちと困っている女性たちの為のサイトです
  • Anonymous
    August 17, 2009
    当サイトは、みんなの「玉の輿度」をチェックする性格診断のサイトです。ホントのあなたをズバリ分析しちゃいます!玉の輿度チェッカーの診断結果には、期待以上の意外な結果があるかも
  • Anonymous
    August 19, 2009
    毎月10万円を最低ラインとする謝礼を得て、セレブ女性に癒しを与える仕事があります。無料登録した後はメールアプローチを待つだけでもOK、あなたもセレブラブで欲求を満たしあう関係を作ってみませんか
  • Anonymous
    August 20, 2009
    よーやくプロフ持ちになれました。私の事気になった方がいましたら気軽にメールください。恋バナとか好きなんでよろしくでぇす。zuttozuttoissyodayo@docomo.ne.jp
  • Anonymous
    August 21, 2009
    女性会員様増加につき、当サイトの出張ホストが不足中です。女性の自宅やホテルに出向き、欲望を満たすお手伝いをしてくれる男性アルバイトをただいま募集していますので、興味のある方はTOPページから無料登録をお願いいたします
  • Anonymous
    August 22, 2009
    最近様々なメディアで紹介されている家出掲示板では、全国各地のネットカフェ等を泊り歩いている家出少女のメッセージが多数書き込みされています。彼女たちはお金がないので掲示板で知り合った男性とすぐに遊びに行くようです。あなたも書き込みに返事を返してみませんか
  • Anonymous
    August 23, 2009
    あなたのモテ度数を診断できる、モテる度チェッカー!日頃モテモテでリア充のあなたもそうでないヒキニートの貴方も隠されたモテスキルを測定して今以上にモッテモテになること間違いなし
  • Anonymous
    August 24, 2009
    オ○ニーライフのお手伝い、救援部でHな見せたがり女性からエロ写メ、ムービーをゲットしよう!近所の女の子なら実際に合ってHな事ができちゃうかも!?夏で開放的になっている女の子と遊んじゃおう
  • Anonymous
    August 25, 2009
    メル友募集のあそび場「ラブフリー」はみんなの出逢いを応援する全国版の逆援助コミュニティーです!女の子と真剣にお付き合いしたい方も、複数の女性と戯れたい方も今すぐ無料登録からどうぞ
  • Anonymous
    August 26, 2009
    簡単にお小遣い稼ぎをしたい方必見、当サイト逆¥倶楽部では無料登録して女性の性の欲求に応えるだけのアルバイトです。初心者でもすぐに高収入の逆¥交際に興味をもたれた方はTOPページまでどうぞ。
  • Anonymous
    August 27, 2009
    プロフ作りました。興味ある方連絡まってま〜す。メアドを乗せておくので連絡ください。色んな人の色んな話聞きたい感じですのでヨロシクhappy-my-life-.-@docomo.ne.jp