Ignore:
Timestamp:
Jul 13, 2008, 2:56:09 PM (16 years ago)
Author:
dai_9181
Message:

VarPtr(This)をエラーとして扱うようにした。
・デリゲート生成時にThisに対するオブジェクトポインタが正常に取得できないバグを修正。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/compiler_x86/Compile_Func.cpp

    r672 r687  
    77
    88#include "FunctionValue.h"
     9
     10void Opcode_Func_ObjPtr( const char *Parameter, Type &resultType, bool isCallOn );
    911
    1012int GetFunctionFromName(char *FuncName){
     
    392394
    393395        // オブジェクト ポインタを取得
    394         RELATIVE_VAR relativeVar;
    395         GetVarOffsetReadOnly( thisPtrName, &relativeVar, type );
    396         if( !type.IsObject() )
    397         {
    398             extern int cp;
    399             compiler.errorMessenger.Output(1,NULL,cp);
    400             return;
    401         }
    402 
    403         SetVarPtrToEax( &relativeVar );
    404 
    405         //mov eax,dword ptr[eax]
    406         compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EAX, REG_EAX, 0, MOD_BASE );
     396        Opcode_Func_ObjPtr( thisPtrName, type, true );
    407397
    408398        //push eax
     
    553543    compiler.codeGenerator.op_mov_RV( REG_EAX, tempType.GetClass().GetSize() );
    554544}
    555 void Opcode_Func_VarPtr( const char *Parameter, Type &resultType, bool isCallOn ){
    556     if( isCallOn == false ){
     545void Opcode_Func_VarPtr( const char *Parameter, Type &resultType, bool isCallOn )
     546{
     547    if( isCallOn == false )
     548    {
    557549        // 戻り値の型を取得するだけ
    558550
     
    563555
    564556        return;
     557    }
     558
     559    if( lstrcmpi( Parameter, "This" )==0 )
     560    {
     561        compiler.errorMessenger.Output( 144, "", cp );
    565562    }
    566563
Note: See TracChangeset for help on using the changeset viewer.