Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 148629 | Differences between
and this patch

Collapse All | Expand All

(-)src-native/BCI/BCIEng/BCIEngProbe/BCIEngProbeInterface.cpp (-5 / +36 lines)
Lines 20-42 Link Here
20
#pragma convert(819)	/* see comment in CommonDef.h about this */
20
#pragma convert(819)	/* see comment in CommonDef.h about this */
21
#endif
21
#endif
22
22
23
#include <assert.h>
24
23
#ifdef MVS 
25
#ifdef MVS 
24
#include <unistd.h> /* for __atoe */
26
#include <unistd.h> /* for __atoe */
25
#endif
27
#endif
26
28
27
#include "CommonDef.h"
28
29
#define _BCIENGINTERFACE_DLL_EXPORT // Make the "C" interface exported
29
#define _BCIENGINTERFACE_DLL_EXPORT // Make the "C" interface exported
30
30
31
#include "BCIEngProbe.h"
32
#include "BCIEngProbeInterface.h"
33
34
#include "CommonDef.h"
35
31
#ifdef WIN32
36
#ifdef WIN32
32
#pragma warning(disable:4786)
37
#pragma warning(disable:4786)
33
#endif
38
#endif
34
39
35
#include "BCIEngProbe.h"
36
#include "BCIEngProbeInterface.h"
37
38
#define TOK_WHITESPACE " \t"
40
#define TOK_WHITESPACE " \t"
39
41
42
int g_use_verifier;
40
//------------------------------------------------------------------------------
43
//------------------------------------------------------------------------------
41
inline static unsigned ExceptionToError(CBCIEngProbeInterfaceException& ex)
44
inline static unsigned ExceptionToError(CBCIEngProbeInterfaceException& ex)
42
{
45
{
Lines 341-346 Link Here
341
344
342
}
345
}
343
346
347
//------------------------------------------------------------------------------
348
void 
349
CBCIEngProbeInterface::UseStackMapRecalculation(bool a_use_recalculation)
350
{
351
	m_peng.m_use_external_verifier = a_use_recalculation;
352
}
344
353
345
//------------------------------------------------------------------------------
354
//------------------------------------------------------------------------------
346
void 
355
void 
Lines 439-444 Link Here
439
	try
448
	try
440
	{
449
	{
441
		CBCIEngProbeInterface* peng = (CBCIEngProbeInterface*)i_pbcieng;
450
		CBCIEngProbeInterface* peng = (CBCIEngProbeInterface*)i_pbcieng;
451
		peng->UseStackMapRecalculation(false);
452
		peng->Instrument(i_pInClass, i_cbInClass, o_ppOutClass, o_pcbOutClass);
453
	}
454
	catch (CBCIEngProbeInterfaceException& ex)
455
	{
456
		uErr = ExceptionToError(ex);
457
	}
458
	return uErr;
459
}
460
461
//------------------------------------------------------------------------------
462
unsigned Instrument2(pbcieng_t i_pbcieng, void* i_pInClass, size_t i_cbInClass, 
463
		            void** o_ppOutClass, size_t* o_pcbOutClass, void *(*pEnv)(void **))
464
{
465
	unsigned uErr = 0;
466
	initialize_dynamic(pEnv);
467
	try
468
	{
469
470
		CBCIEngProbeInterface* peng = (CBCIEngProbeInterface*)i_pbcieng;
471
		peng->UseStackMapRecalculation(true);
442
		peng->Instrument(i_pInClass, i_cbInClass, o_ppOutClass, o_pcbOutClass);
472
		peng->Instrument(i_pInClass, i_cbInClass, o_ppOutClass, o_pcbOutClass);
443
	}
473
	}
444
	catch (CBCIEngProbeInterfaceException& ex)
474
	catch (CBCIEngProbeInterfaceException& ex)
Lines 453-458 Link Here
453
{
483
{
454
	unsigned uErr = 0;
484
	unsigned uErr = 0;
455
	CBCIEngProbeInterface* peng = (CBCIEngProbeInterface*)i_pbcieng;
485
	CBCIEngProbeInterface* peng = (CBCIEngProbeInterface*)i_pbcieng;
486
	//assert(i_pfnMalloc);
456
	peng->SetAllocator(i_pfnMalloc);
487
	peng->SetAllocator(i_pfnMalloc);
457
	return uErr;
488
	return uErr;
458
}
489
}
(-)src-native/BCI/BCIEng/BCIEngProbe/BCIEngProbe.dsp (-4 / +5 lines)
Lines 43-49 Link Here
43
# PROP Ignore_Export_Lib 0
43
# PROP Ignore_Export_Lib 0
44
# PROP Target_Dir ""
44
# PROP Target_Dir ""
45
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "BCIENGPROBE_EXPORTS" /YX /FD /c
45
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "BCIENGPROBE_EXPORTS" /YX /FD /c
46
# ADD CPP /nologo /MT /W3 /GX /Zi /O2 /I "..\..\BCIEng\\" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /c
46
# ADD CPP /nologo /MT /W3 /GX /Zd /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\..\BCIEng\\" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "STATIC_BUILD" /YX /FD /c
47
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
47
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
48
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
48
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
49
# ADD BASE RSC /l 0x409 /d "NDEBUG"
49
# ADD BASE RSC /l 0x409 /d "NDEBUG"
Lines 53-59 Link Here
53
# ADD BSC32 /nologo
53
# ADD BSC32 /nologo
54
LINK32=link.exe
54
LINK32=link.exe
55
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
55
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
56
# ADD LINK32 kernel32.lib bciengj.lib /nologo /dll /debug /machine:I386 /libpath:"..\..\..\bci\jclass\release" /libpath:"..\..\..\bci\bcieng\bciengj\release"
56
# ADD LINK32 bciengj.lib kernel32.lib verifier.lib /nologo /dll /debug /machine:I386 /libpath:"..\..\..\bci\jclass\release" /libpath:"..\..\..\bci\bcieng\bciengj\release" /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\IA-32"
57
57
58
!ELSEIF  "$(CFG)" == "BCIEngProbe - Win32 Debug"
58
!ELSEIF  "$(CFG)" == "BCIEngProbe - Win32 Debug"
59
59
Lines 69-75 Link Here
69
# PROP Ignore_Export_Lib 0
69
# PROP Ignore_Export_Lib 0
70
# PROP Target_Dir ""
70
# PROP Target_Dir ""
71
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "BCIENGPROBE_EXPORTS" /YX /FD /GZ /c
71
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "BCIENGPROBE_EXPORTS" /YX /FD /GZ /c
72
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\BCIEng\\" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /YX /FD /GZ /c
72
# ADD CPP /nologo /MDd /W3 /GX /Zd /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\..\BCIEng\\" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "STATIC_BUILD" /FR /YX /FD /GZ /c
73
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
73
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
74
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
74
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
75
# ADD BASE RSC /l 0x409 /d "_DEBUG"
75
# ADD BASE RSC /l 0x409 /d "_DEBUG"
Lines 79-85 Link Here
79
# ADD BSC32 /nologo
79
# ADD BSC32 /nologo
80
LINK32=link.exe
80
LINK32=link.exe
81
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
81
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
82
# ADD LINK32 bciengj.lib kernel32.lib /nologo /dll /incremental:no /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\bci\jclass\debug" /libpath:"..\..\..\bci\bcieng\bciengj\debug"
82
# ADD LINK32 verifier.lib bciengj.lib kernel32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"Debug/BCIEngProbe.dll " /pdbtype:sept /libpath:"..\..\..\bci\jclass\debug" /libpath:"..\..\..\bci\bcieng\bciengj\debug" /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\IA-32"
83
# SUBTRACT LINK32 /verbose
83
84
84
!ENDIF 
85
!ENDIF 
85
86
(-)src-native/BCI/BCIEng/BCIEngProbe/Makefile.unix (-1 / +5 lines)
Lines 22-28 Link Here
22
include ../../makefile.include
22
include ../../makefile.include
23
23
24
CPPFLAGS += -I.. -I../BCIEngJ -I../../Common -I../../JClass
24
CPPFLAGS += -I.. -I../BCIEngJ -I../../Common -I../../JClass
25
CPPFLAGS += -I../../../../../org.apache.harmony_vmcore_verifier/src/include -I../../../../../org.apache.harmony_vmcore_verifier/src/vmcore/include -I../../../../../org.apache.harmony_vmcore_verifier/src/vmcore/src/verifier-3363/x_verifier 
26
CPPFLAGS += -DSTATIC_BUILD -DLINUX -DPLATFORM_POSIX
25
CFLAGS += $(PIC_FLAG) 
27
CFLAGS += $(PIC_FLAG) 
28
LDIRS += -L../../../../../org.apache.harmony_vmcore_verifier/lib/linux/$(BUILD_MODE_DIR)/$(ARCH_DIR)
29
LIBS = -lverifier
26
30
27
OBJS = 	BCIEngProbe.o \
31
OBJS = 	BCIEngProbe.o \
28
	BCIEngProbeInterface.o
32
	BCIEngProbeInterface.o
Lines 44-50 Link Here
44
	$(CXX_AR) $@ $?
48
	$(CXX_AR) $@ $?
45
49
46
libBCIEngProbe$(SHLIB_EXT) : $(OBJS)
50
libBCIEngProbe$(SHLIB_EXT) : $(OBJS)
47
	$(CXX) $(CFLAGS) $? -o $@ $(SHLIB_FLAG)
51
	$(CXX) $(CFLAGS) $? -o $@ $(SHLIB_FLAG) $(LDIRS) $(LIBS)
48
52
49
clean clobber:
53
clean clobber:
50
	rm -f $(OBJS) libBCIEngProbe$(SHLIB_EXT) libBCIEngProbe.a
54
	rm -f $(OBJS) libBCIEngProbe$(SHLIB_EXT) libBCIEngProbe.a
(-)src-native/BCI/BCIEng/BCIEngProbe/BCIEngProbe.mak (-6 / +8 lines)
Lines 74-80 Link Here
74
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
74
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
75
75
76
CPP=cl.exe
76
CPP=cl.exe
77
CPP_PROJ=/nologo /MT /W3 /GX /Zi /O2 /I "..\..\BCIEng\\" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Fp"$(INTDIR)\BCIEngProbe.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
77
CPP_PROJ=/nologo /MT /W3 /GX /Zd /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\..\BCIEng\\" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "STATIC_BUILD" /Fp"$(INTDIR)\BCIEngProbe.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
78
78
79
.c{$(INTDIR)}.obj::
79
.c{$(INTDIR)}.obj::
80
   $(CPP) @<<
80
   $(CPP) @<<
Lines 114-124 Link Here
114
BSC32_SBRS= \
114
BSC32_SBRS= \
115
	
115
	
116
LINK32=link.exe
116
LINK32=link.exe
117
LINK32_FLAGS=kernel32.lib bciengj.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\BCIEngProbe.pdb" /debug /machine:I386 /out:"$(OUTDIR)\BCIEngProbe.dll" /implib:"$(OUTDIR)\BCIEngProbe.lib" /libpath:"..\..\jclass\release" /libpath:"..\..\bcieng\bciengj\release"
117
LINK32_FLAGS=bciengj.lib kernel32.lib verifier.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\BCIEngProbe.pdb" /debug /machine:I386 /out:"$(OUTDIR)\BCIEngProbe.dll" /implib:"$(OUTDIR)\BCIEngProbe.lib" /libpath:"..\..\..\bci\jclass\release" /libpath:"..\..\..\bci\bcieng\bciengj\release" /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\IA-32" 
118
LINK32_OBJS= \
118
LINK32_OBJS= \
119
	"$(INTDIR)\BCIEngProbe.obj" \
119
	"$(INTDIR)\BCIEngProbe.obj" \
120
	"$(INTDIR)\BCIEngProbeInterface.obj" \
120
	"$(INTDIR)\BCIEngProbeInterface.obj" \
121
	"..\BCIEngJ\Release\BCIEngJ.lib"
121
	"..\BCIEngJ\Release\BCIEngJ.lib" \
122
	"..\..\JClass\Release\JClassStat.lib"
122
123
123
"$(OUTDIR)\BCIEngProbe.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
124
"$(OUTDIR)\BCIEngProbe.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
124
    $(LINK32) @<<
125
    $(LINK32) @<<
Lines 164-170 Link Here
164
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
165
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
165
166
166
CPP=cl.exe
167
CPP=cl.exe
167
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\BCIEng\\" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\BCIEngProbe.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
168
CPP_PROJ=/nologo /MDd /W3 /GX /Zd /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\..\BCIEng\\" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "STATIC_BUILD" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\BCIEngProbe.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
168
169
169
.c{$(INTDIR)}.obj::
170
.c{$(INTDIR)}.obj::
170
   $(CPP) @<<
171
   $(CPP) @<<
Lines 211-221 Link Here
211
<<
212
<<
212
213
213
LINK32=link.exe
214
LINK32=link.exe
214
LINK32_FLAGS=bciengj.lib kernel32.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\BCIEngProbe.pdb" /debug /machine:I386 /out:"$(OUTDIR)\BCIEngProbe.dll" /implib:"$(OUTDIR)\BCIEngProbe.lib" /pdbtype:sept /libpath:"..\..\jclass\debug" /libpath:"..\..\bcieng\bciengj\debug"
215
LINK32_FLAGS=bciengj.lib kernel32.lib verifier.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\BCIEngProbe.pdb" /debug /machine:I386 /out:"$(OUTDIR)\BCIEngProbe.dll" /implib:"$(OUTDIR)\BCIEngProbe.lib" /pdbtype:sept /libpath:"..\..\..\bci\jclass\debug" /libpath:"..\..\..\bci\bcieng\bciengj\debug" /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\IA-32" 
215
LINK32_OBJS= \
216
LINK32_OBJS= \
216
	"$(INTDIR)\BCIEngProbe.obj" \
217
	"$(INTDIR)\BCIEngProbe.obj" \
217
	"$(INTDIR)\BCIEngProbeInterface.obj" \
218
	"$(INTDIR)\BCIEngProbeInterface.obj" \
218
	"..\BCIEngJ\Debug\BCIEngJ.lib"
219
	"..\BCIEngJ\Debug\BCIEngJ.lib" \
220
	"..\..\JClass\Debug\JClassStat.lib"
219
221
220
"$(OUTDIR)\BCIEngProbe.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
222
"$(OUTDIR)\BCIEngProbe.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
221
    $(LINK32) @<<
223
    $(LINK32) @<<
(-)src-native/BCI/BCIEng/BCIEngProbe/BCIEngProbeInterface.h (-1 / +4 lines)
Lines 53-61 Link Here
53
#ifndef _BCIENGPROBEINTERFACE_H
53
#ifndef _BCIENGPROBEINTERFACE_H
54
#define _BCIENGPROBEINTERFACE_H
54
#define _BCIENGPROBEINTERFACE_H
55
 // Make the "C" interface exported
55
 // Make the "C" interface exported
56
#include "CommonDef.h"
57
#include "BCIEngProbe.h"
56
#include "BCIEngProbe.h"
58
#include "BCIEngInterface.h"
57
#include "BCIEngInterface.h"
58
#include "CommonDef.h"
59
59
60
#define BCI_ENG_PROBE_1_0	0x00010000
60
#define BCI_ENG_PROBE_1_0	0x00010000
61
61
Lines 85-90 Link Here
85
85
86
private: 
86
private: 
87
	CBCIEngProbe m_peng;
87
	CBCIEngProbe m_peng;
88
	void UseStackMapRecalculation(bool a_use_recalculation);
89
	friend unsigned Instrument(pbcieng_t, void*, size_t , void** , size_t* );
90
	friend unsigned Instrument2(pbcieng_t, void*, size_t , void** , size_t*, void *(*f)(void **));
88
};
91
};
89
92
90
//------------------------------------------------------------------------------
93
//------------------------------------------------------------------------------
(-)src-native/BCI/BCIEng/BCIEngProbe/BCIEngProbe.cpp (-6 / +22 lines)
Lines 20-37 Link Here
20
#pragma convert(819)	/* see comment in CommonDef.h about this */
20
#pragma convert(819)	/* see comment in CommonDef.h about this */
21
#endif
21
#endif
22
22
23
#include <assert.h>
24
23
#ifdef WIN32
25
#ifdef WIN32
24
#pragma warning(disable:4786)
26
#pragma warning(disable:4786)
25
#endif
27
#endif
26
28
27
#include "CommonDef.h"
28
#include "ModuleJ.h"				// Instrumentation module for Java
29
#include "ModuleJ.h"				// Instrumentation module for Java
30
#include "CommonDef.h"
29
#include "JVMInsSet.h"				// JVM Instruction set
31
#include "JVMInsSet.h"				// JVM Instruction set
30
#include "ExtRefJ_StatMethod.h"		// Java external ref. implemented as static
32
#include "ExtRefJ_StatMethod.h"		// Java external ref. implemented as static
31
#include "JMemStream.h"				// Java memory stream
33
#include "JMemStream.h"				// Java memory stream
32
#include "BCIEngProbe.h"			// BCI Engine for Probe Kit
34
#include "BCIEngProbe.h"			// BCI Engine for Probe Kit
33
#include "BCIEngInterface.h"		// for callback message number defines
35
#include "BCIEngInterface.h"		// for callback message number defines
34
36
37
35
#include <stdio.h> // for sprintf on Linux
38
#include <stdio.h> // for sprintf on Linux
36
#ifdef MVS
39
#ifdef MVS
37
#    include <unistd.h> /* for __etoa */
40
#    include <unistd.h> /* for __etoa */
Lines 1830-1839 Link Here
1830
	// Starting with the call to Open, we don't need to delete pClass any more:
1833
	// Starting with the call to Open, we don't need to delete pClass any more:
1831
	// The module owns it.
1834
	// The module owns it.
1832
	CModuleJ* pModuleJ = new CModuleJ;
1835
	CModuleJ* pModuleJ = new CModuleJ;
1836
	pModuleJ->UseStackMapCalculation(m_use_external_verifier);
1833
	pModuleJ->Open(pClass, true);
1837
	pModuleJ->Open(pClass, true);
1834
	pModuleJ->SetAccessFlags(pClass->GetAccessFlags());
1838
	pModuleJ->SetAccessFlags(pClass->GetAccessFlags());
1835
	pModuleJ->Parse();
1839
	if (pModuleJ->Parse() != 0) {
1836
1840
		*o_pcbOutClass = i_cbInClass;
1841
		*o_ppOutClass = i_pInClass;
1842
		delete pClass;
1843
		return false;
1844
	}
1845
	
1837
	// If we were asked to, then dump the module before and after instrumentation
1846
	// If we were asked to, then dump the module before and after instrumentation
1838
	const char *dump_output_file;
1847
	const char *dump_output_file;
1839
	if ((dump_output_file = getenv("PROBEKIT_DUMP_FILE")) != NULL) {
1848
	if ((dump_output_file = getenv("PROBEKIT_DUMP_FILE")) != NULL) {
Lines 1845-1850 Link Here
1845
		output_stream << "=========== DUMP BEFORE INSTRUMENTATION" << endl;
1854
		output_stream << "=========== DUMP BEFORE INSTRUMENTATION" << endl;
1846
		pModuleJ->Dump(output_stream);
1855
		pModuleJ->Dump(output_stream);
1847
1856
1857
1848
#if defined(MVS) || defined(__OS400__)
1858
#if defined(MVS) || defined(__OS400__)
1849
		/* On EBCDIC systems, convert ASCII to EBCDIC */
1859
		/* On EBCDIC systems, convert ASCII to EBCDIC */
1850
		char* data = output_stream.str();
1860
		char* data = output_stream.str();
Lines 1864-1870 Link Here
1864
	// to this module, but we still ran callsite probes against this
1874
	// to this module, but we still ran callsite probes against this
1865
	// module and maybe we didn't actually do anything.
1875
	// module and maybe we didn't actually do anything.
1866
	// In that case we should set out == in and return without calling emit.
1876
	// In that case we should set out == in and return without calling emit.
1867
1868
	pModuleJ->Emit();
1877
	pModuleJ->Emit();
1869
1878
1870
	// Tell the client that's driving us that we did something to this module
1879
	// Tell the client that's driving us that we did something to this module
Lines 1882-1887 Link Here
1882
#else
1891
#else
1883
		ofstream output_stream(dump_output_file, ios::app);
1892
		ofstream output_stream(dump_output_file, ios::app);
1884
#endif
1893
#endif
1894
1885
		output_stream << "=========== DUMP AFTER INSTRUMENTATION" << endl;
1895
		output_stream << "=========== DUMP AFTER INSTRUMENTATION" << endl;
1886
		pModuleJ->Dump(output_stream);
1896
		pModuleJ->Dump(output_stream);
1887
1897
Lines 1898-1903 Link Here
1898
	}
1908
	}
1899
1909
1900
	*o_pcbOutClass = pClass->GetSize();
1910
	*o_pcbOutClass = pClass->GetSize();
1911
	if (m_pfnMalloc == NULL) {
1912
		/*skipping*/
1913
		*o_pcbOutClass = i_cbInClass;
1914
		*o_ppOutClass = i_pInClass;
1915
		delete pClass;
1916
		return false;
1917
	}
1901
	*o_ppOutClass = m_pfnMalloc(*o_pcbOutClass);
1918
	*o_ppOutClass = m_pfnMalloc(*o_pcbOutClass);
1902
1919
1903
	CJMemStream		OutStream;					// Memory stream
1920
	CJMemStream		OutStream;					// Memory stream
Lines 1998-2004 Link Here
1998
	{
2015
	{
1999
		InstrumentMethod(*itrMeth); 
2016
		InstrumentMethod(*itrMeth); 
2000
	}
2017
	}
2001
2002
	// Process any staticInitializer fragments that matched this class,
2018
	// Process any staticInitializer fragments that matched this class,
2003
	// and default initializers for staticField elements in probes that matched.
2019
	// and default initializers for staticField elements in probes that matched.
2004
	HandleStaticInitializers(pmodj);
2020
	HandleStaticInitializers(pmodj);
Lines 3179-3185 Link Here
3179
	{
3195
	{
3180
		return;
3196
		return;
3181
	}
3197
	}
3182
3198
	
3183
	// Allow the client that's driving us to veto instrumentation of this module
3199
	// Allow the client that's driving us to veto instrumentation of this module
3184
	if (NULL != m_pfnCallback &&
3200
	if (NULL != m_pfnCallback &&
3185
		(m_wCBFlags & BCIENGINTERFACE_CALLBACK_METHOD) &&
3201
		(m_wCBFlags & BCIENGINTERFACE_CALLBACK_METHOD) &&
(-)src-native/BCI/BCIEng/BCIEngProbe/BCIEngProbe.h (-1 / +3 lines)
Lines 23-30 Link Here
23
#include <string>
23
#include <string>
24
#include <list>
24
#include <list>
25
#include <set>
25
#include <set>
26
#include "BCIEng.h"
27
#include "ModuleJ.h"
26
#include "ModuleJ.h"
27
#include "BCIEng.h"
28
#include "CommonDef.h"
28
#include "CommonDef.h"
29
#include "JavaHelpers.h"			// Java helpers
29
#include "JavaHelpers.h"			// Java helpers
30
USE_NAMESPACE(std);
30
USE_NAMESPACE(std);
Lines 504-509 Link Here
504
	// These fields are reset and reused for each instrumented method
504
	// These fields are reset and reused for each instrumented method
505
	IP_t			m_ipFinally;				// Finally wrapper label
505
	IP_t			m_ipFinally;				// Finally wrapper label
506
	IP_t			m_ipCatchAll;				// catch-all wrapper label
506
	IP_t			m_ipCatchAll;				// catch-all wrapper label
507
friend class CBCIEngProbeInterface;
508
	bool m_use_external_verifier;
507
};
509
};
508
510
509
#endif // defined _BCIENGPROBE_H_
511
#endif // defined _BCIENGPROBE_H_
(-)src-native/BCI/BCIEng/BCIEngProbe/BCIEngProbe.mak64 (-8 / +8 lines)
Lines 76-82 Link Here
76
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
76
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
77
77
78
CPP=cl.exe
78
CPP=cl.exe
79
CPP_PROJ=/nologo /MT /W3 /EHsc /Zi /O2 /I "..\..\BCIEng\\" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Fp"$(INTDIR)\BCIEngProbe.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
79
CPP_PROJ=/nologo /MT /W3 /EHsc /Zi /O2 /I "..\..\BCIEng\BCIEngJ" /I "..\..\BCIEng" /I "..\..\JClass" /I "..\..\common" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "STATIC_BUILD" /Fp"$(INTDIR)\BCIEngProbe.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c
80
80
81
.c{$(INTDIR)}.obj::
81
.c{$(INTDIR)}.obj::
82
   $(CPP) @<<
82
   $(CPP) @<<
Lines 113-119 Link Here
113
RSC=rc.exe
113
RSC=rc.exe
114
114
115
LINK32=link.exe
115
LINK32=link.exe
116
LINK32_FLAGS=kernel32.lib bciengj.lib bufferoverflowU.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\BCIEngProbe.pdb" /debug /out:"$(OUTDIR)\BCIEngProbe.dll" /implib:"$(OUTDIR)\BCIEngProbe.lib" /libpath:"..\..\jclass\release" /libpath:"..\..\bcieng\bciengj\release" /machine:IA64
116
LINK32_FLAGS=bciengj.lib kernel32.lib verifier.lib bufferoverflowU.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\BCIEngProbe.pdb" /out:"$(OUTDIR)\BCIEngProbe.dll" /implib:"$(OUTDIR)\BCIEngProbe.lib" /libpath:"..\..\jclass\release" /libpath:"..\..\bcieng\bciengj\release" /machine:IA64 /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\IPF"
117
LINK32_OBJS= \
117
LINK32_OBJS= \
118
	"$(INTDIR)\BCIEngProbe.obj" \
118
	"$(INTDIR)\BCIEngProbe.obj" \
119
	"$(INTDIR)\BCIEngProbeInterface.obj" \
119
	"$(INTDIR)\BCIEngProbeInterface.obj" \
Lines 162-168 Link Here
162
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
162
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
163
163
164
CPP=cl.exe
164
CPP=cl.exe
165
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "..\..\BCIEng\\" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\BCIEngProbe.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
165
CPP_PROJ=/nologo /MTd /W3 /Gm /EHsc /Zi /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\..\BCIEng" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "STATIC_BUILD" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\BCIEngProbe.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c
166
166
167
.c{$(INTDIR)}.obj::
167
.c{$(INTDIR)}.obj::
168
   $(CPP) @<<
168
   $(CPP) @<<
Lines 199-205 Link Here
199
RSC=rc.exe
199
RSC=rc.exe
200
200
201
LINK32=link.exe
201
LINK32=link.exe
202
LINK32_FLAGS=bciengj.lib kernel32.lib bufferoverflowU.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\BCIEngProbe.pdb" /debug /out:"$(OUTDIR)\BCIEngProbe.dll" /implib:"$(OUTDIR)\BCIEngProbe.lib" /libpath:"..\..\jclass\debug" /libpath:"..\..\bcieng\bciengj\debug" /machine:IA64
202
LINK32_FLAGS=bciengj.lib kernel32.lib verifier.lib bufferoverflowU.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\BCIEngProbe.pdb" /debug /out:"$(OUTDIR)\BCIEngProbe.dll" /implib:"$(OUTDIR)\BCIEngProbe.lib" /libpath:"..\..\jclass\debug" /libpath:"..\..\bcieng\bciengj\debug" /machine:IA64 /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\IPF"
203
LINK32_OBJS= \
203
LINK32_OBJS= \
204
	"$(INTDIR)\BCIEngProbe.obj" \
204
	"$(INTDIR)\BCIEngProbe.obj" \
205
	"$(INTDIR)\BCIEngProbeInterface.obj" \
205
	"$(INTDIR)\BCIEngProbeInterface.obj" \
Lines 246-252 Link Here
246
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
246
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
247
247
248
CPP=cl.exe
248
CPP=cl.exe
249
CPP_PROJ=/nologo /MT /W3 /EHsc /Zi /O2 /I "..\..\BCIEng\\" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Fp"$(INTDIR)\BCIEngProbe.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
249
CPP_PROJ=/nologo /MT /W3 /EHsc /Zi /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\..\BCIEng" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "STATIC_BUILD" /Fp"$(INTDIR)\BCIEngProbe.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c
250
250
251
.c{$(INTDIR)}.obj::
251
.c{$(INTDIR)}.obj::
252
   $(CPP) @<<
252
   $(CPP) @<<
Lines 283-289 Link Here
283
RSC=rc.exe
283
RSC=rc.exe
284
284
285
LINK32=link.exe
285
LINK32=link.exe
286
LINK32_FLAGS=kernel32.lib bciengj.lib bufferoverflowU.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\BCIEngProbe.pdb" /debug /out:"$(OUTDIR)\BCIEngProbe.dll" /implib:"$(OUTDIR)\BCIEngProbe.lib" /libpath:"..\..\jclass\release" /libpath:"..\..\bcieng\bciengj\release" /machine:AMD64
286
LINK32_FLAGS=bciengj.lib kernel32.lib verifier.lib bufferoverflowU.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\BCIEngProbe.pdb" /out:"$(OUTDIR)\BCIEngProbe.dll" /implib:"$(OUTDIR)\BCIEngProbe.lib" /libpath:"..\..\jclass\release" /libpath:"..\..\bcieng\bciengj\release" /machine:AMD64 /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\EM64T"
287
LINK32_OBJS= \
287
LINK32_OBJS= \
288
	"$(INTDIR)\BCIEngProbe.obj" \
288
	"$(INTDIR)\BCIEngProbe.obj" \
289
	"$(INTDIR)\BCIEngProbeInterface.obj" \
289
	"$(INTDIR)\BCIEngProbeInterface.obj" \
Lines 332-338 Link Here
332
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
332
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
333
333
334
CPP=cl.exe
334
CPP=cl.exe
335
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "..\..\BCIEng\\" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\BCIEngProbe.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
335
CPP_PROJ=/nologo /MTd /W3 /Gm /EHsc /Zi /Od /I "..\..\BCIEng" /I "..\..\BCIEng\BCIEngJ" /I "..\..\JClass" /I "..\..\common" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "STATIC_BUILD" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\BCIEngProbe.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c
336
336
337
.c{$(INTDIR)}.obj::
337
.c{$(INTDIR)}.obj::
338
   $(CPP) @<<
338
   $(CPP) @<<
Lines 369-375 Link Here
369
RSC=rc.exe
369
RSC=rc.exe
370
370
371
LINK32=link.exe
371
LINK32=link.exe
372
LINK32_FLAGS=bciengj.lib kernel32.lib bufferoverflowU.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\BCIEngProbe.pdb" /debug /out:"$(OUTDIR)\BCIEngProbe.dll" /implib:"$(OUTDIR)\BCIEngProbe.lib" /libpath:"..\..\jclass\debug" /libpath:"..\..\bcieng\bciengj\debug" /machine:AMD64
372
LINK32_FLAGS=bciengj.lib kernel32.lib verifier.lib bufferoverflowU.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\BCIEngProbe.pdb" /debug /out:"$(OUTDIR)\BCIEngProbe.dll" /implib:"$(OUTDIR)\BCIEngProbe.lib" /libpath:"..\..\jclass\debug" /libpath:"..\..\bcieng\bciengj\debug" /machine:AMD64 /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\EM64T"
373
LINK32_OBJS= \
373
LINK32_OBJS= \
374
	"$(INTDIR)\BCIEngProbe.obj" \
374
	"$(INTDIR)\BCIEngProbe.obj" \
375
	"$(INTDIR)\BCIEngProbeInterface.obj" \
375
	"$(INTDIR)\BCIEngProbeInterface.obj" \
(-)src-native/BCI/BCIEng/BCIEngProbe/BCIEngProbe.dep (+14 lines)
Lines 1-6 Link Here
1
# Microsoft Developer Studio Generated Dependency File, included by BCIEngProbe.mak
1
# Microsoft Developer Studio Generated Dependency File, included by BCIEngProbe.mak
2
2
3
.\BCIEngProbe.cpp : \
3
.\BCIEngProbe.cpp : \
4
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\common.h"\
5
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\hycomp.h"\
6
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\platform_types.h"\
7
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include\verifier.h"\
8
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_class_interface.h"\
9
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_verifier.h"\
4
	"..\..\common\commondef.h"\
10
	"..\..\common\commondef.h"\
5
	"..\..\common\javadef.h"\
11
	"..\..\common\javadef.h"\
6
	"..\..\Common\JavaHelpers.h"\
12
	"..\..\Common\JavaHelpers.h"\
Lines 10-15 Link Here
10
	"..\..\JClass\JMemStream.h"\
16
	"..\..\JClass\JMemStream.h"\
11
	"..\..\JClass\JStream.h"\
17
	"..\..\JClass\JStream.h"\
12
	"..\BCIEng.h"\
18
	"..\BCIEng.h"\
19
	"..\bcienginterface.h"\
20
	"..\BCIEngJ\class_inerface_int.h"\
13
	"..\BCIEngJ\ExtRefJ_StatMethod.h"\
21
	"..\BCIEngJ\ExtRefJ_StatMethod.h"\
14
	"..\BCIEngJ\JVMInsSet.h"\
22
	"..\BCIEngJ\JVMInsSet.h"\
15
	"..\BCIEngJ\ModuleJ.h"\
23
	"..\BCIEngJ\ModuleJ.h"\
Lines 19-24 Link Here
19
	
27
	
20
28
21
.\BCIEngProbeInterface.cpp : \
29
.\BCIEngProbeInterface.cpp : \
30
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\common.h"\
31
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\hycomp.h"\
32
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\platform_types.h"\
33
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include\verifier.h"\
34
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_class_interface.h"\
35
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_verifier.h"\
22
	"..\..\common\commondef.h"\
36
	"..\..\common\commondef.h"\
23
	"..\..\common\javadef.h"\
37
	"..\..\common\javadef.h"\
24
	"..\..\Common\JavaHelpers.h"\
38
	"..\..\Common\JavaHelpers.h"\
(-)src-native/BCI/BCIEng/Module.h (-1 / +2 lines)
Lines 132-138 Link Here
132
132
133
	virtual const vector<string>& GetSourceFileNames() = 0;
133
	virtual const vector<string>& GetSourceFileNames() = 0;
134
134
135
	virtual void	Parse()=0;
135
	virtual int	Parse()=0;
136
	virtual void	Emit();
136
	virtual void	Emit();
137
137
138
	CMethods*		GetMethods(){return m_pMethods;}
138
	CMethods*		GetMethods(){return m_pMethods;}
Lines 527-532 Link Here
527
		X_REASON_PARSE_ERROR,			// Parsing error
527
		X_REASON_PARSE_ERROR,			// Parsing error
528
		X_REASON_INVALID_CALL,			// Invalid method call (e.g. abstract method)
528
		X_REASON_INVALID_CALL,			// Invalid method call (e.g. abstract method)
529
		X_REASON_CODE_OVERRUN,			// Code overrun during emission
529
		X_REASON_CODE_OVERRUN,			// Code overrun during emission
530
		X_REASON_VERIFICATION_FAILED,	// Verifier stack map recalculation failed
530
		X_REASON_LAST
531
		X_REASON_LAST
531
	};
532
	};
532
533
(-)src-native/BCI/BCIEng/BCIEng.mak (-2 / +2 lines)
Lines 49-55 Link Here
49
"$(OUTDIR)" :
49
"$(OUTDIR)" :
50
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
50
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
51
51
52
CPP_PROJ=/nologo /MT /W3 /GX /Zi /O2 /I "..\Common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\BCIEng.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
52
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "..\Common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
53
BSC32=bscmake.exe
53
BSC32=bscmake.exe
54
BSC32_FLAGS=/nologo /o"$(OUTDIR)\BCIEng.bsc" 
54
BSC32_FLAGS=/nologo /o"$(OUTDIR)\BCIEng.bsc" 
55
BSC32_SBRS= \
55
BSC32_SBRS= \
Lines 86-92 Link Here
86
"$(OUTDIR)" :
86
"$(OUTDIR)" :
87
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
87
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
88
88
89
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\Common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\BCIEng.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
89
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\Common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /GZ /c 
90
BSC32=bscmake.exe
90
BSC32=bscmake.exe
91
BSC32_FLAGS=/nologo /o"$(OUTDIR)\BCIEng.bsc" 
91
BSC32_FLAGS=/nologo /o"$(OUTDIR)\BCIEng.bsc" 
92
BSC32_SBRS= \
92
BSC32_SBRS= \
(-)src-native/BCI/BCIEng/BCIEng.mak64 (-4 / +4 lines)
Lines 51-57 Link Here
51
"$(OUTDIR)" :
51
"$(OUTDIR)" :
52
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
52
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
53
53
54
CPP_PROJ=/nologo /MT /W3 /EHsc /Zi /O2 /I "..\Common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\BCIEng.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
54
CPP_PROJ=/nologo /MT /W3 /EHsc /Zi /O2 /I "..\Common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\BCIEng.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
55
55
56
LIB32=link.exe -lib
56
LIB32=link.exe -lib
57
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEng.lib" 
57
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEng.lib" 
Lines 85-91 Link Here
85
"$(OUTDIR)" :
85
"$(OUTDIR)" :
86
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
86
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
87
87
88
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "..\Common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\BCIEng.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
88
CPP_PROJ=/nologo /MTd /W3 /Gm /EHsc /Zi /Od /I "..\Common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\BCIEng.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
89
89
90
LIB32=link.exe -lib
90
LIB32=link.exe -lib
91
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEng.lib" 
91
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEng.lib" 
Lines 119-125 Link Here
119
"$(OUTDIR)" :
119
"$(OUTDIR)" :
120
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
120
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
121
121
122
CPP_PROJ=/nologo /MT /W3 /EHsc /Zi /O2 /I "..\Common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\BCIEng.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
122
CPP_PROJ=/nologo /MT /W3 /EHsc /Zi /O2 /I "..\Common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\BCIEng.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
123
123
124
LIB32=link.exe -lib
124
LIB32=link.exe -lib
125
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEng.lib" 
125
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEng.lib" 
Lines 153-159 Link Here
153
"$(OUTDIR)" :
153
"$(OUTDIR)" :
154
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
154
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
155
155
156
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "..\Common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\BCIEng.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
156
CPP_PROJ=/nologo /MTd /W3 /Gm /EHsc /Zi /Od /I "..\Common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\BCIEng.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
157
157
158
LIB32=link.exe -lib
158
LIB32=link.exe -lib
159
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEng.lib" 
159
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEng.lib" 
(-)src-native/BCI/BCIEng/BCIEng.dsw (-8 / +8 lines)
Lines 3-9 Link Here
3
3
4
###############################################################################
4
###############################################################################
5
5
6
Project: "BCIEng"=.\BCIEng.dsp - Package Owner=<4>
6
Project: "BCIEng"=".\BCIEng.dsp" - Package Owner=<4>
7
7
8
Package=<5>
8
Package=<5>
9
{{{
9
{{{
Lines 15-21 Link Here
15
15
16
###############################################################################
16
###############################################################################
17
17
18
Project: "BCIEngJ"=.\BCIEngJ\BCIEngJ.dsp - Package Owner=<4>
18
Project: "BCIEngJ"=".\BCIEngJ\BCIEngJ.dsp" - Package Owner=<4>
19
19
20
Package=<5>
20
Package=<5>
21
{{{
21
{{{
Lines 30-36 Link Here
30
30
31
###############################################################################
31
###############################################################################
32
32
33
Project: "BCIEngProbe"=.\BCIEngProbe\BCIEngProbe.dsp - Package Owner=<4>
33
Project: "BCIEngProbe"=".\BCIEngProbe\BCIEngProbe.dsp" - Package Owner=<4>
34
34
35
Package=<5>
35
Package=<5>
36
{{{
36
{{{
Lines 48-54 Link Here
48
48
49
###############################################################################
49
###############################################################################
50
50
51
Project: "BciEngJTest"=.\BCIEngJ\BciEngJTest\BciEngJTest.dsp - Package Owner=<4>
51
Project: "BciEngJTest"=".\BCIEngJ\BciEngJTest\BciEngJTest.dsp" - Package Owner=<4>
52
52
53
Package=<5>
53
Package=<5>
54
{{{
54
{{{
Lines 60-66 Link Here
60
60
61
###############################################################################
61
###############################################################################
62
62
63
Project: "JClassStat"=..\JClass\JClassStat.dsp - Package Owner=<4>
63
Project: "JClassStat"="..\JClass\JClassStat.dsp" - Package Owner=<4>
64
64
65
Package=<5>
65
Package=<5>
66
{{{
66
{{{
Lines 72-78 Link Here
72
72
73
###############################################################################
73
###############################################################################
74
74
75
Project: "JDump"=..\JDump\JDump.dsp - Package Owner=<4>
75
Project: "JDump"="..\JDump\JDump.dsp" - Package Owner=<4>
76
76
77
Package=<5>
77
Package=<5>
78
{{{
78
{{{
Lines 90-96 Link Here
90
90
91
###############################################################################
91
###############################################################################
92
92
93
Project: "ProbeInstrumenter"=.\BCIEngProbe\ProbeInstrumenter\ProbeInstrumenter.dsp - Package Owner=<4>
93
Project: "ProbeInstrumenter"=".\BCIEngProbe\ProbeInstrumenter\ProbeInstrumenter.dsp" - Package Owner=<4>
94
94
95
Package=<5>
95
Package=<5>
96
{{{
96
{{{
Lines 105-111 Link Here
105
105
106
###############################################################################
106
###############################################################################
107
107
108
Project: "ProbeUnitTests"=.\ProbeUnitTests\ProbeUnitTests.dsp - Package Owner=<4>
108
Project: "ProbeUnitTests"=".\ProbeUnitTests\ProbeUnitTests.dsp" - Package Owner=<4>
109
109
110
Package=<5>
110
Package=<5>
111
{{{
111
{{{
(-)src-native/BCI/BCIEng/BCIEngInterface.h (+2 lines)
Lines 152-157 Link Here
152
	_BCIENGINTERFACE_EXT_REF unsigned Initialize(pbcieng_t i_pbcieng, const char* i_pchOptions, size_t i_cbOptions);
152
	_BCIENGINTERFACE_EXT_REF unsigned Initialize(pbcieng_t i_pbcieng, const char* i_pchOptions, size_t i_cbOptions);
153
	_BCIENGINTERFACE_EXT_REF unsigned Instrument(pbcieng_t i_pbcieng, void* i_pInClass, size_t i_cbInClass, 
153
	_BCIENGINTERFACE_EXT_REF unsigned Instrument(pbcieng_t i_pbcieng, void* i_pInClass, size_t i_cbInClass, 
154
							          void** o_ppOutClass, size_t* o_pcbOutClass);
154
							          void** o_ppOutClass, size_t* o_pcbOutClass);
155
	_BCIENGINTERFACE_EXT_REF unsigned Instrument2(pbcieng_t i_pbcieng, void* i_pInClass, size_t i_cbInClass, 
156
							          void** o_ppOutClass, size_t* o_pcbOutClass, void *(*)(void **));
155
	_BCIENGINTERFACE_EXT_REF unsigned SetAllocator(pbcieng_t i_pbcieng, pfnMalloc_t i_pfnMalloc);
157
	_BCIENGINTERFACE_EXT_REF unsigned SetAllocator(pbcieng_t i_pbcieng, pfnMalloc_t i_pfnMalloc);
156
	_BCIENGINTERFACE_EXT_REF unsigned SetCallback(pbcieng_t i_pbcieng, pfnCallback_t i_pfnCallback, unsigned i_uFlags);
158
	_BCIENGINTERFACE_EXT_REF unsigned SetCallback(pbcieng_t i_pbcieng, pfnCallback_t i_pfnCallback, unsigned i_uFlags);
157
159
(-)src-native/BCI/BCIEng/BCIEng.dsp (-1 / +3 lines)
Lines 23-28 Link Here
23
23
24
# Begin Project
24
# Begin Project
25
# PROP AllowPerConfigDependencies 0
25
# PROP AllowPerConfigDependencies 0
26
# PROP Scc_ProjName ""
27
# PROP Scc_LocalPath ""
26
CPP=cl.exe
28
CPP=cl.exe
27
RSC=rc.exe
29
RSC=rc.exe
28
30
Lines 62-68 Link Here
62
# PROP Intermediate_Dir "Debug"
64
# PROP Intermediate_Dir "Debug"
63
# PROP Target_Dir ""
65
# PROP Target_Dir ""
64
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
66
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
65
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\Common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
67
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\Common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FR /YX /FD /GZ /c
66
# ADD BASE RSC /l 0x409 /d "_DEBUG"
68
# ADD BASE RSC /l 0x409 /d "_DEBUG"
67
# ADD RSC /l 0x409 /d "_DEBUG"
69
# ADD RSC /l 0x409 /d "_DEBUG"
68
BSC32=bscmake.exe
70
BSC32=bscmake.exe
(-)src-native/BCI/JClass/JavaDef.h (-69 lines)
Removed Link Here
1
 /********************************************************************** 
2
 * Copyright (c) 2005, 2006 IBM Corporation and others. 
3
 * All rights reserved.   This program and the accompanying materials 
4
 * are made available under the terms of the Eclipse Public License v1.0 
5
 * which accompanies this distribution, and is available at 
6
 * http://www.eclipse.org/legal/epl-v10.html         
7
 * $Id: JavaDef.h,v 1.5 2006/03/24 22:00:45 hleung Exp $ 
8
 * 
9
 * Contributors: 
10
 * IBM - Initial API and implementation 
11
 **********************************************************************/ 
12
13
//==============================================================================
14
// JavaDef.h
15
//
16
// Some common Java definitions
17
//
18
//==============================================================================
19
20
//??? NameSpace ???
21
#ifndef _JAVADEF_H
22
#define _JAVADEF_H
23
24
#define JAVA_MAGIC					0xCAFEBABE;
25
26
// class_file.access_flags and field_info.access_flags values
27
#define ACC_PUBLIC					0x0001	// Public access
28
#define ACC_PRIVATE					0x0002	// Private access
29
#define ACC_PROTECTED				0x0004	// Protected access
30
#define ACC_STATIC					0x0008	// Static
31
#define ACC_FINAL					0x0010	// Final access
32
#define ACC_SUPER					0x0020	// Super access
33
#define ACC_SYNCHRONIZED			0x0020  // Synchronized (for methods)
34
#define ACC_INTERFACE				0x0200	// Interface acess
35
#define ACC_ABSTRACT				0x0400	// Abstract access
36
37
// cp_info.tag values
38
#define CONSTANT_Utf8				1		//
39
#define CONSTANT_Integer			3		//
40
#define CONSTANT_Float				4		//
41
#define CONSTANT_Long				5		//	
42
#define CONSTANT_Double				6		//
43
#define CONSTANT_Class				7		//	
44
#define CONSTANT_String				8		//
45
#define CONSTANT_Fieldref			9		//	
46
#define CONSTANT_Methodref			10		//
47
#define CONSTANT_InterfaceMethodref	11		//	
48
#define CONSTANT_NameAndType		12		//
49
50
#define CONSTANT_Unknown			0
51
52
// array types
53
#define T_BOOLEAN					4		// bool
54
#define T_CHAR						5		// char
55
#define T_FLOAT						6		// float
56
#define T_DOUBLE					7		// double
57
#define T_BYTE						8		// byte
58
#define T_SHORT						9		// short
59
#define T_INT						10		// int
60
#define T_LONG						11		// long
61
62
// ToDo: other Java specific definitions
63
typedef unsigned char				u1;		// 1 byte
64
typedef unsigned short				u2;		// 2 byte unsigned integer
65
typedef	unsigned int				u4;		// 4 byte unsigned integer
66
67
#endif	// _JAVADEF_H
68
69
//= End of JavaDef.h ===========================================================
(-)src-native/BCI/JClass/JClassStat.mak (-2 / +2 lines)
Lines 64-70 Link Here
64
"$(OUTDIR)" :
64
"$(OUTDIR)" :
65
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
65
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
66
66
67
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "..\common" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\JClassStat.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
67
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "..\common" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
68
BSC32=bscmake.exe
68
BSC32=bscmake.exe
69
BSC32_FLAGS=/nologo /o"$(OUTDIR)\JClassStat.bsc" 
69
BSC32_FLAGS=/nologo /o"$(OUTDIR)\JClassStat.bsc" 
70
BSC32_SBRS= \
70
BSC32_SBRS= \
Lines 109-115 Link Here
109
"$(OUTDIR)" :
109
"$(OUTDIR)" :
110
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
110
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
111
111
112
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\common" /I "..\Common" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
112
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\common" /I "..\Common" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /GZ /c 
113
BSC32=bscmake.exe
113
BSC32=bscmake.exe
114
BSC32_FLAGS=/nologo /o"$(OUTDIR)\JClassStat.bsc" 
114
BSC32_FLAGS=/nologo /o"$(OUTDIR)\JClassStat.bsc" 
115
BSC32_SBRS= \
115
BSC32_SBRS= \
(-)src-native/BCI/JClass/JClassBuilder.cpp (-1 / +19 lines)
Lines 80-86 Link Here
80
string
80
string
81
CJClassBuilder::GetSuperClassName()
81
CJClassBuilder::GetSuperClassName()
82
{
82
{
83
	CCPUtf8Info* pcpUtf8 = (CCPUtf8Info*)((*m_pConstPool)[GetSuperClass()]);
83
	CCPClassInfo* pccpClassInfo = (CCPClassInfo*)((*m_pConstPool)[GetSuperClass()]);
84
	CCPUtf8Info* pcpUtf8 = (CCPUtf8Info*)((*m_pConstPool)[pccpClassInfo->GetClassInd()]);
84
	string strSuperClass = (string)*pcpUtf8;
85
	string strSuperClass = (string)*pcpUtf8;
85
	return strSuperClass;
86
	return strSuperClass;
86
}
87
}
Lines 245-250 Link Here
245
	CConstPool::iterator itr = m_pConstPool->begin();
246
	CConstPool::iterator itr = m_pConstPool->begin();
246
	while(itr != m_pConstPool->end())
247
	while(itr != m_pConstPool->end())
247
	{
248
	{
249
		if (*itr == NULL) return NULL;
248
		if((*itr)->GetTag() == CONSTANT_Class)
250
		if((*itr)->GetTag() == CONSTANT_Class)
249
		{
251
		{
250
			CCPClassInfo* pcpci = (CCPClassInfo*)*itr;
252
			CCPClassInfo* pcpci = (CCPClassInfo*)*itr;
Lines 278-283 Link Here
278
}
280
}
279
281
280
//------------------------------------------------------------------------------
282
//------------------------------------------------------------------------------
283
// CreateClassConstant
284
// In:
285
//	i_szClassName - class name
286
// Returns:
287
//	CCPClassInfo* - pointer to the class infoin the constant pool
288
//
289
CCPClassInfo* 
290
CJClassBuilder::CreateClassConstant(CSTR i_szClassName)
291
{
292
	u2 u2ClassName = m_pConstPool->Add(new CCPUtf8Info(i_szClassName));
293
	u2 u2ClassRef  = m_pConstPool->Add(new CCPClassInfo(u2ClassName));
294
	CCPClassInfo* pcpClass = (CCPClassInfo*)((*m_pConstPool)[u2ClassRef]);
295
	return pcpClass;
296
}
297
298
//------------------------------------------------------------------------------
281
// CreateIntegerConstant
299
// CreateIntegerConstant
282
// In:
300
// In:
283
//	i_int - Integer value to add
301
//	i_int - Integer value to add
(-)src-native/BCI/JClass/JClassStat.dep (-4 / +22 lines)
Lines 13-43 Link Here
13
# Microsoft Developer Studio Generated Dependency File, included by JClassStat.mak
13
# Microsoft Developer Studio Generated Dependency File, included by JClassStat.mak
14
# Hand-edited by apratt to remove absolute paths and other silliness
14
# Hand-edited by apratt to remove absolute paths and other silliness
15
15
16
17
..\Common\JavaHelpers.cpp : \
18
	"..\common\commondef.h"\
19
	"..\common\JavaDef.h"\
20
	"..\Common\JavaHelpers.h"\
21
	
22
23
.\JClassBuilder.cpp : \
24
	"..\common\commondef.h"\
25
	"..\common\JavaDef.h"\
26
	"..\Common\JavaHelpers.h"\
27
	".\JBaseStream.h"\
28
	".\JClassBuilder.h"\
29
	".\JClassFile.h"\
30
	".\JStream.h"\
31
	
32
16
.\JClassFile.cpp : \
33
.\JClassFile.cpp : \
17
	"..\common\commondef.h"\
34
	"..\common\commondef.h"\
18
	".\JavaDef.h"\
35
	"..\common\JavaDef.h"\
19
	".\JBaseStream.h"\
36
	".\JBaseStream.h"\
20
	".\JClassFile.h"\
37
	".\JClassFile.h"\
38
	".\JMemStream.h"\
21
	".\JStream.h"\
39
	".\JStream.h"\
22
	
40
	
23
41
24
.\JFileStream.cpp : \
42
.\JFileStream.cpp : \
25
	"..\common\commondef.h"\
43
	"..\common\commondef.h"\
26
	".\JavaDef.h"\
44
	"..\common\JavaDef.h"\
27
	".\JBaseStream.h"\
45
	".\JBaseStream.h"\
28
	".\JFileStream.h"\
46
	".\JFileStream.h"\
29
	
47
	
30
48
31
.\JMemStream.cpp : \
49
.\JMemStream.cpp : \
32
	"..\common\commondef.h"\
50
	"..\common\commondef.h"\
33
	".\JavaDef.h"\
51
	"..\common\JavaDef.h"\
34
	".\JBaseStream.h"\
52
	".\JBaseStream.h"\
35
	".\JMemStream.h"\
53
	".\JMemStream.h"\
36
	
54
	
37
55
38
.\JStream.cpp : \
56
.\JStream.cpp : \
39
	"..\common\commondef.h"\
57
	"..\common\commondef.h"\
40
	".\JavaDef.h"\
58
	"..\common\JavaDef.h"\
41
	".\JBaseStream.h"\
59
	".\JBaseStream.h"\
42
	".\JStream.h"\
60
	".\JStream.h"\
43
	
61
	
(-)src-native/BCI/JClass/JClassBuilder.h (-1 / +2 lines)
Lines 62-68 Link Here
62
62
63
	// Constant pool manipulation
63
	// Constant pool manipulation
64
	CCPStringInfo* CreateStringConstant(CSTR i_szString);
64
	CCPStringInfo* CreateStringConstant(CSTR i_szString);
65
	CCPIntegerInfo* CreateIntegerConstant (JINTEGER i_int);
65
    CCPClassInfo* CreateClassConstant(CSTR i_szClassName);
66
    CCPIntegerInfo* CreateIntegerConstant (JINTEGER i_int);
66
	CCPLongInfo* CreateLongConstant(JLONG  i_long);
67
	CCPLongInfo* CreateLongConstant(JLONG  i_long);
67
	CCPFloatInfo* CreateFloatConstant(JFLOAT i_float);
68
	CCPFloatInfo* CreateFloatConstant(JFLOAT i_float);
68
	CCPDoubleInfo* CreateDoubleConstant(JDOUBLE i_double);
69
	CCPDoubleInfo* CreateDoubleConstant(JDOUBLE i_double);
(-)src-native/BCI/JClass/JClassStat.mak64 (-4 / +4 lines)
Lines 66-72 Link Here
66
"$(OUTDIR)" :
66
"$(OUTDIR)" :
67
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
67
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
68
68
69
CPP_PROJ=/nologo /MT /W3 /EHsc /O2 /I "..\common" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\JClassStat.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
69
CPP_PROJ=/nologo /MT /W3 /EHsc /O2 /I "..\common" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\JClassStat.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
70
70
71
LIB32=link.exe -lib
71
LIB32=link.exe -lib
72
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\JClassStat.lib" 
72
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\JClassStat.lib" 
Lines 108-114 Link Here
108
"$(OUTDIR)" :
108
"$(OUTDIR)" :
109
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
109
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
110
110
111
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "..\common" /I "..\Common" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
111
CPP_PROJ=/nologo /MTd /W3 /Gm /EHsc /Zi /Od /I "..\common" /I "..\Common" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
112
112
113
LIB32=link.exe -lib
113
LIB32=link.exe -lib
114
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\JClassStat.lib" 
114
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\JClassStat.lib" 
Lines 149-155 Link Here
149
"$(OUTDIR)" :
149
"$(OUTDIR)" :
150
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
150
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
151
151
152
CPP_PROJ=/nologo /MT /W3 /EHsc /O2 /I "..\common" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\JClassStat.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
152
CPP_PROJ=/nologo /MT /W3 /EHsc /O2 /I "..\common" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\JClassStat.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
153
153
154
LIB32=link.exe -lib
154
LIB32=link.exe -lib
155
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\JClassStat.lib" 
155
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\JClassStat.lib" 
Lines 191-197 Link Here
191
"$(OUTDIR)" :
191
"$(OUTDIR)" :
192
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
192
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
193
193
194
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "..\common" /I "..\Common" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
194
CPP_PROJ=/nologo /MTd /W3 /Gm /EHsc /Zi /Od /I "..\common" /I "..\Common" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
195
195
196
LIB32=link.exe -lib
196
LIB32=link.exe -lib
197
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\JClassStat.lib" 
197
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\JClassStat.lib" 
(-)src-native/BCI/JClass/JClassStat.dsp (-1 / +1 lines)
Lines 41-47 Link Here
41
# PROP Intermediate_Dir "Release"
41
# PROP Intermediate_Dir "Release"
42
# PROP Target_Dir ""
42
# PROP Target_Dir ""
43
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
43
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
44
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\common" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /c
44
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\common" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /Zl /FD /c
45
# ADD BASE RSC /l 0x409 /d "NDEBUG"
45
# ADD BASE RSC /l 0x409 /d "NDEBUG"
46
# ADD RSC /l 0x409 /d "NDEBUG"
46
# ADD RSC /l 0x409 /d "NDEBUG"
47
BSC32=bscmake.exe
47
BSC32=bscmake.exe
(-)src-native/BCI/JClass/JClassFile.h (-2 / +291 lines)
Lines 82-87 Link Here
82
class CLineNumberTableAttribute;
82
class CLineNumberTableAttribute;
83
class CLocalVariableTableAttribute;
83
class CLocalVariableTableAttribute;
84
class CLocalVariableTypeTableAttribute;
84
class CLocalVariableTypeTableAttribute;
85
class CStackMapTableAttribute;
85
86
86
//------------------------------------------------------------------------------
87
//------------------------------------------------------------------------------
87
// Container classes
88
// Container classes
Lines 182-189 Link Here
182
	const CCPUtf8Info& operator = (const CCPUtf8Info& i_utf8)
183
	const CCPUtf8Info& operator = (const CCPUtf8Info& i_utf8)
183
	{
184
	{
184
		m_u2Length = i_utf8.GetLength();
185
		m_u2Length = i_utf8.GetLength();
185
		m_pu1Bytes = new u1[m_u2Length];
186
		m_pu1Bytes = new u1[m_u2Length + 1];
186
		memcpy(m_pu1Bytes, i_utf8.GetBytes(), m_u2Length);
187
		memcpy(m_pu1Bytes, i_utf8.GetBytes(), m_u2Length);
188
		m_pu1Bytes[m_u2Length] = '\0';
187
		return *this;
189
		return *this;
188
	}
190
	}
189
	operator string ()
191
	operator string ()
Lines 672-677 Link Here
672
	CLineNumberTableAttribute* GetLineNumbers();
674
	CLineNumberTableAttribute* GetLineNumbers();
673
	CLocalVariableTableAttribute* GetLocalVariables();
675
	CLocalVariableTableAttribute* GetLocalVariables();
674
	CLocalVariableTypeTableAttribute* GetLocalVariableTypes();
676
	CLocalVariableTypeTableAttribute* GetLocalVariableTypes();
677
    CStackMapTableAttribute* GetStackMaps();
678
    CStackMapTableAttribute* GetOrCreateStackMaps();
679
675
680
676
protected:
681
protected:
677
	u2			m_u2MaxStack;
682
	u2			m_u2MaxStack;
Lines 899-904 Link Here
899
};
904
};
900
905
901
//------------------------------------------------------------------------------
906
//------------------------------------------------------------------------------
907
// Verification Type Information (new in Java 6)
908
//
909
// Represents the following verification types: Top, Integer, Float, Double, Long, Null,
910
// UninitializedThis
911
//
912
class CVerificationTypeInfo
913
{
914
public:
915
    CVerificationTypeInfo(u1 i_u1Tag);
916
    ~CVerificationTypeInfo();
917
    virtual void Read(CJStream& i_jstream);
918
	virtual u2 Read(u1* i_tbl);
919
	virtual void Write(CJStream& i_jstream) const;
920
	virtual u4	 GetSize() const;
921
    virtual CVerificationTypeInfo* Clone() const
922
    {
923
        return new CVerificationTypeInfo(*this);
924
    }
925
926
    u1 GetTag() { return m_u1Tag; }
927
928
private:
929
    u1 m_u1Tag;
930
};
931
932
//------------------------------------------------------------------------------
933
// Verification Type Information Vector
934
//
935
class CVerificationTypes : public vector<CVerificationTypeInfo*>
936
{
937
public:
938
    CVerificationTypes() { clear(); }
939
    CVerificationTypes(const CVerificationTypes &i_VerTypes);
940
	~CVerificationTypes();
941
942
    CVerificationTypes& operator = (const CVerificationTypes &i_VerTypes);
943
    
944
    virtual void	Read(CJStream& i_jstream, u2 i_u2EntriesToRead);
945
	virtual void	Write(CJStream& i_jstream) const;
946
	virtual u4	    GetSize() const;
947
948
private:
949
};
950
951
//------------------------------------------------------------------------------
952
// Verification Type Information: Object (new in Java 6)
953
//
954
class CVerificationTypeObjectInfo : public CVerificationTypeInfo
955
{
956
public:
957
    CVerificationTypeObjectInfo(u1 i_u1Tag);
958
    ~CVerificationTypeObjectInfo();
959
    virtual void Read(CJStream& i_jstream);
960
	virtual void Write(CJStream& i_jstream) const;
961
	virtual u4	 GetSize() const;
962
    virtual CVerificationTypeInfo* Clone() const
963
    {
964
        return new CVerificationTypeObjectInfo(*this);
965
    }
966
967
    u2   GetCpoolIndex() { return m_u2CpoolIndex; }
968
    void SetCpoolIndex(u2 i_u2CpoolIndex) { m_u2CpoolIndex = i_u2CpoolIndex; }
969
970
private:
971
    u2 m_u2CpoolIndex;
972
};
973
974
//------------------------------------------------------------------------------
975
// Verification Type Information: Uninitialized Variable (new in Java 6)
976
//
977
class CVerificationTypeUninitializedVariableInfo : public CVerificationTypeInfo
978
{
979
public:
980
    CVerificationTypeUninitializedVariableInfo(u1 i_u1Tag);
981
    ~CVerificationTypeUninitializedVariableInfo();
982
    virtual void Read(CJStream& i_jstream);
983
	virtual void Write(CJStream& i_jstream) const;
984
	virtual u4	 GetSize() const;
985
    virtual CVerificationTypeInfo* Clone() const
986
    {
987
        return new CVerificationTypeUninitializedVariableInfo(*this);
988
    }
989
990
    u2   GetOffset() { return m_u2Offset; }
991
    void SetOffset(u2 i_u2Offset) { m_u2Offset = i_u2Offset; }
992
993
private:
994
    u2 m_u2Offset;
995
};
996
997
998
//------------------------------------------------------------------------------
999
// Stack Map Frame Information (new in Java 6)
1000
//
1001
class CStackMapFrameInfo
1002
{
1003
    friend class CStackMapTable;
1004
public:
1005
    CStackMapFrameInfo(u1 i_u1FrameType);
1006
    CStackMapFrameInfo(const CStackMapFrameInfo &i_Other);
1007
    ~CStackMapFrameInfo();
1008
1009
    virtual void Read(CJStream& i_jstream);
1010
	virtual void Write(CJStream& i_jstream) const;
1011
	virtual u4	 GetSize() const;
1012
    virtual CStackMapFrameInfo* Clone() const = 0;
1013
    
1014
    u1 GetFrameType() const { return m_u1FrameType; }
1015
    u2 GetByteCodeOffset() { return m_u2ByteCodeOffset; }
1016
    void SetByteCodeOffset(u2 i_u2Offset);
1017
1018
protected:
1019
    virtual void AdjustOffsetDelta(int i_s2PrevFrameOffset);
1020
    
1021
    u2 m_u2ByteCodeOffset;
1022
    u2 m_u2OffsetDelta;
1023
    u1 m_u1FrameType;
1024
};
1025
1026
//------------------------------------------------------------------------------
1027
// Stack Map Frame Information: same_frame and same_frame_extended (new in Java 6)
1028
//
1029
class CStackMapSameFrameInfo : public CStackMapFrameInfo
1030
{
1031
    friend class CStackMapTable;
1032
public:
1033
    CStackMapSameFrameInfo(u1 i_u1FrameType, bool i_IsExtended);
1034
    ~CStackMapSameFrameInfo();
1035
1036
    virtual void Read(CJStream& i_jstream);
1037
	virtual void Write(CJStream& i_jstream) const;
1038
	virtual u4	 GetSize() const;
1039
    virtual CStackMapFrameInfo* Clone() const;
1040
1041
protected:
1042
    virtual void AdjustOffsetDelta(int i_s2PrevFrameOffset);
1043
1044
private:
1045
    bool m_IsExtended;
1046
};
1047
1048
//------------------------------------------------------------------------------
1049
// Stack Map Frame Information: chop_frame (new in Java 6)
1050
//
1051
class CStackMapChopFrameInfo : public CStackMapFrameInfo
1052
{
1053
public:
1054
    CStackMapChopFrameInfo(u1 i_u1FrameType);
1055
    ~CStackMapChopFrameInfo();
1056
1057
    virtual void Read(CJStream& i_jstream);
1058
	virtual void Write(CJStream& i_jstream) const;
1059
	virtual u4	 GetSize() const;
1060
    virtual CStackMapFrameInfo* Clone() const;
1061
1062
private:
1063
};
1064
1065
//------------------------------------------------------------------------------
1066
// Stack Map Frame Information: same_locals_1_stack_item_frame and 
1067
//                              same_locals_1_stack_item_frame_extended (new in Java 6)
1068
//
1069
class CStackMapSameLocals1StackItemFrameInfo : public CStackMapFrameInfo
1070
{
1071
    friend class CStackMapTable;
1072
public:
1073
    CStackMapSameLocals1StackItemFrameInfo(u1 i_u1FrameType, bool i_IsExtended);
1074
    CStackMapSameLocals1StackItemFrameInfo(const CStackMapSameLocals1StackItemFrameInfo &i_Other);
1075
    ~CStackMapSameLocals1StackItemFrameInfo();
1076
1077
    virtual void Read(CJStream& i_jstream);
1078
	virtual void Write(CJStream& i_jstream) const;
1079
	virtual u4	 GetSize() const;
1080
    virtual CStackMapFrameInfo* Clone() const;
1081
1082
    CVerificationTypes& GetStack() { return m_Stack; }
1083
1084
protected:
1085
    virtual void AdjustOffsetDelta(int i_s2PrevFrameOffset);
1086
1087
private:
1088
    CStackMapSameLocals1StackItemFrameInfo& operator = (CStackMapSameLocals1StackItemFrameInfo &i_Other);
1089
1090
    CVerificationTypes m_Stack;     // A vector with 1 entry
1091
    bool m_IsExtended;
1092
};
1093
1094
//------------------------------------------------------------------------------
1095
// Stack Map Frame Information: append_frame (new in Java 6)
1096
//
1097
class CStackMapAppendFrameInfo : public CStackMapFrameInfo
1098
{
1099
public:
1100
    CStackMapAppendFrameInfo(u1 i_u1FrameType);
1101
    CStackMapAppendFrameInfo(const CStackMapAppendFrameInfo &i_Other);
1102
    ~CStackMapAppendFrameInfo();
1103
1104
    virtual void Read(CJStream& i_jstream);
1105
	virtual void Write(CJStream& i_jstream) const;
1106
	virtual u4	 GetSize() const;
1107
    virtual CStackMapFrameInfo* Clone() const;
1108
1109
    CVerificationTypes& GetLocals() { return m_Locals; }
1110
1111
private:
1112
    CStackMapAppendFrameInfo& operator = (const CStackMapAppendFrameInfo &i_Other);
1113
1114
    CVerificationTypes m_Locals;
1115
};
1116
1117
//------------------------------------------------------------------------------
1118
// Stack Map Frame Information: full_frame (new in Java 6)
1119
//
1120
class CStackMapFullFrameInfo : public CStackMapFrameInfo
1121
{
1122
public:
1123
    CStackMapFullFrameInfo(u1 i_u1FrameType);
1124
    CStackMapFullFrameInfo(const CStackMapFullFrameInfo &i_Other);
1125
    ~CStackMapFullFrameInfo();
1126
1127
    virtual void Read(CJStream& i_jstream);
1128
	virtual void Write(CJStream& i_jstream) const;
1129
	virtual u4	 GetSize() const;
1130
    virtual CStackMapFrameInfo* Clone() const;
1131
1132
    CVerificationTypes& GetLocals() { return m_Locals; }
1133
    CVerificationTypes& GetStack()  { return m_Stack;  }
1134
    
1135
private:
1136
    CStackMapFullFrameInfo& operator = (const CStackMapFullFrameInfo &i_Other);
1137
1138
    u2 m_u2NumberOfLocals;
1139
    CVerificationTypes m_Locals;
1140
    u2 m_u2NumberOfStackItems;
1141
    CVerificationTypes m_Stack;
1142
};
1143
1144
1145
//------------------------------------------------------------------------------
1146
// Stack Map Table (new in Java 6)
1147
//
1148
class CStackMapTable : public vector<CStackMapFrameInfo*>
1149
{
1150
public:
1151
    CStackMapTable() { clear(); }
1152
	~CStackMapTable();
1153
	virtual void	Read(CJStream& i_jstream);
1154
	virtual void	Write(CJStream& i_jstream) const;
1155
	virtual u4	    GetSize() const;
1156
1157
    void                AdjustOffsetDeltas();
1158
    CStackMapFrameInfo* GetFrameAtOffset(u2 i_u2Offset);
1159
	
1160
    CStackMapTable& operator = (const CStackMapTable& i_StackMaps);
1161
};
1162
1163
//------------------------------------------------------------------------------
1164
// Stack Map Table Attribute (new in Java 6 - [4.8.4])
1165
//
1166
class CStackMapTableAttribute : public CAttributeInfo
1167
{
1168
	friend class CStackMapTable;
1169
public:
1170
    CStackMapTableAttribute(CJClassFile* i_pClassFile);
1171
    ~CStackMapTableAttribute();
1172
	virtual void	Read(CJStream& i_jstream);
1173
	virtual void	Write(CJStream& i_jstream) const;
1174
	virtual u4	    GetSize() const;
1175
	virtual u4		GetLength() const;
1176
1177
    CStackMapTable& GetStackMapTable() { return m_StackMapTable; }
1178
	void SetStackMapTable(const CStackMapTable& i_stackmap) {m_StackMapTable = i_stackmap;}
1179
	void RereadFromBuffer(u1 *i_u1Tbl);
1180
1181
private:
1182
    CStackMapTable m_StackMapTable;
1183
1184
    // Disable assignment operator.
1185
    // To enable, implement these functions as public
1186
    CStackMapTableAttribute& operator = (const CStackMapTableAttribute& i_other) {}
1187
};
1188
1189
//------------------------------------------------------------------------------
902
// Interface information
1190
// Interface information
903
//
1191
//
904
class CInterfaceInfo
1192
class CInterfaceInfo
Lines 999-1004 Link Here
999
	virtual u4	 GetSize() const;
1287
	virtual u4	 GetSize() const;
1000
1288
1001
	u2			GetAccessFlags() {return m_u2AccessFlags;}
1289
	u2			GetAccessFlags() {return m_u2AccessFlags;}
1290
    void        SetAccessFlags(u2 i_u2AccessFlags) {m_u2AccessFlags = i_u2AccessFlags;}
1002
	u2			GetNameInd() const {return m_u2NameInd;}
1291
	u2			GetNameInd() const {return m_u2NameInd;}
1003
	u2			GetDescriptorInd() const {return m_u2DescriptorInd;}
1292
	u2			GetDescriptorInd() const {return m_u2DescriptorInd;}
1004
	CJAttribs&	GetAttribs()	{return m_Attribs;}
1293
	CJAttribs&	GetAttribs()	{return m_Attribs;}
Lines 1070-1076 Link Here
1070
class CJClassFile  
1359
class CJClassFile  
1071
{
1360
{
1072
public:
1361
public:
1073
	enum {MajorVersion = 3, MinorVersion = 46};	// TODO: comment on version 
1362
	enum {MajorVersion = 46, MinorVersion = 3};	// J2SE 1.2
1074
	CJClassFile();
1363
	CJClassFile();
1075
	virtual ~CJClassFile();
1364
	virtual ~CJClassFile();
1076
1365
(-)src-native/BCI/JClass/JClassFile.cpp (-11 / +809 lines)
Lines 47-54 Link Here
47
#  include <iostream>
47
#  include <iostream>
48
#endif
48
#endif
49
49
50
#include "JavaDef.h"
50
#include "CommonDef.h"
51
#include "CommonDef.h"
52
51
#include "JClassFile.h"
53
#include "JClassFile.h"
54
#include "JMemStream.h"
52
55
53
USE_NAMESPACE(std);
56
USE_NAMESPACE(std);
54
57
Lines 224-231 Link Here
224
:CCPInfo(CONSTANT_Utf8)
227
:CCPInfo(CONSTANT_Utf8)
225
{
228
{
226
	m_u2Length = i_utf8Info.GetLength();
229
	m_u2Length = i_utf8Info.GetLength();
227
	m_pu1Bytes = new u1[m_u2Length];
230
	m_pu1Bytes = new u1[m_u2Length + 1];
228
	memcpy(m_pu1Bytes, i_utf8Info.GetBytes(), m_u2Length);
231
	m_pu1Bytes[m_u2Length] = '\0';
232
	memcpy(m_pu1Bytes, i_utf8Info.GetBytes(), m_u2Length + 1);
229
}
233
}
230
234
231
//------------------------------------------------------------------------------
235
//------------------------------------------------------------------------------
Lines 259-266 Link Here
259
void
263
void
260
CCPUtf8Info::Read(CJStream& i_jstream)
264
CCPUtf8Info::Read(CJStream& i_jstream)
261
{
265
{
262
	i_jstream >> m_u2Length;
266
	i_jstream >> m_u2Length; 
263
	m_pu1Bytes = new u1[m_u2Length];
267
	m_pu1Bytes = new u1[m_u2Length + 1];
268
	m_pu1Bytes[m_u2Length] = 0; /*Helps standard string functions find end of the string*/
264
	i_jstream.ReadUtf8((void*)m_pu1Bytes, m_u2Length);
269
	i_jstream.ReadUtf8((void*)m_pu1Bytes, m_u2Length);
265
}
270
}
266
271
Lines 1738-1743 Link Here
1738
		{
1743
		{
1739
			pCurrent = new CLocalVariableTypeTableAttribute(m_pClassFile);
1744
			pCurrent = new CLocalVariableTypeTableAttribute(m_pClassFile);
1740
		}
1745
		}
1746
 		else if(*pcpUtf8 == "StackMapTable")
1747
		{
1748
			pCurrent = new CStackMapTableAttribute(m_pClassFile);
1749
		}
1741
		else if(*pcpUtf8 == "Exceptions")
1750
		else if(*pcpUtf8 == "Exceptions")
1742
		{
1751
		{
1743
			pCurrent = new CExceptionsAttribute(m_pClassFile);
1752
			pCurrent = new CExceptionsAttribute(m_pClassFile);
Lines 2119-2124 Link Here
2119
	return NULL;
2128
	return NULL;
2120
}
2129
}
2121
2130
2131
//------------------------------------------------------------------------------
2132
CStackMapTableAttribute* 
2133
CCodeAttribute::GetStackMaps()
2134
{
2135
	for(CJAttribs::iterator iter = m_Attribs.begin(); iter < m_Attribs.end(); iter++)
2136
	{
2137
		if(*(*iter)->GetName() == "StackMapTable")
2138
			return (CStackMapTableAttribute*)*iter;
2139
	}
2140
	return NULL;
2141
}
2142
2143
//------------------------------------------------------------------------------
2144
CStackMapTableAttribute* 
2145
CCodeAttribute::GetOrCreateStackMaps()
2146
{
2147
    // Return the StackMapTable attribute of this Code attribute, creating a new one
2148
    // if such an attribute does not exist
2149
2150
    CStackMapTableAttribute* result = NULL;
2151
	for(CJAttribs::iterator iter = m_Attribs.begin(); iter < m_Attribs.end(); iter++)
2152
	{
2153
		if(*(*iter)->GetName() == "StackMapTable")
2154
        {
2155
			result = (CStackMapTableAttribute*)*iter;
2156
        }
2157
	}
2158
2159
    if (result == NULL)
2160
    {
2161
        result = new CStackMapTableAttribute(m_pClassFile);
2162
        m_Attribs.push_back(result);
2163
    }
2164
    return result;
2165
}
2122
2166
2123
//==============================================================================
2167
//==============================================================================
2124
// CExceptionsAttribute implementation
2168
// CExceptionsAttribute implementation
Lines 2500-2505 Link Here
2500
{}
2544
{}
2501
2545
2502
//==============================================================================
2546
//==============================================================================
2547
// CStackMapTableAttribute implementation
2548
//
2549
CVerificationTypeInfo::CVerificationTypeInfo(u1 i_u1Tag)
2550
: m_u1Tag(i_u1Tag)
2551
{
2552
}
2553
2554
CVerificationTypeInfo::~CVerificationTypeInfo()
2555
{
2556
}
2557
2558
void
2559
CVerificationTypeInfo::Read(CJStream& i_jstream)
2560
{
2561
    // m_u1Tag is read by the CVerificationTypes container.
2562
}
2563
2564
u2
2565
CVerificationTypeInfo::Read(u1 *i_tbl)
2566
{
2567
    // m_u1Tag is read by the CVerificationTypes container.
2568
	return 0;
2569
}
2570
2571
void
2572
CVerificationTypeInfo::Write(CJStream& i_jstream) const
2573
{
2574
    i_jstream << m_u1Tag;
2575
}
2576
2577
u4
2578
CVerificationTypeInfo::GetSize() const
2579
{
2580
    return sizeof(m_u1Tag);
2581
}
2582
2583
//------------------------------------------------------------------------------
2584
CVerificationTypes::~CVerificationTypes()
2585
{
2586
    for (iterator iter = begin(); iter != end(); iter++)
2587
    {
2588
        delete *iter;
2589
    }
2590
}
2591
2592
CVerificationTypes::CVerificationTypes(const CVerificationTypes &i_VerTypes)
2593
{
2594
    *this = i_VerTypes;
2595
}
2596
2597
CVerificationTypes&
2598
CVerificationTypes::operator =(const CVerificationTypes &i_VerTypes)
2599
{
2600
	for(iterator iter = begin(); iter != end(); iter++)
2601
	{
2602
		delete *iter;
2603
	}
2604
	if(!i_VerTypes.empty())
2605
	{
2606
		const_iterator iterIn;
2607
		clear();
2608
		for(iterIn = i_VerTypes.begin(); iterIn != i_VerTypes.end(); iterIn++)
2609
		{
2610
			push_back((*iterIn)->Clone());
2611
		}
2612
	}
2613
	return *this;
2614
}
2615
2616
void
2617
CVerificationTypes::Read(CJStream& i_jstream, u2 i_u2EntriesToRead)
2618
{
2619
    CVerificationTypeInfo* pCurrent;
2620
    
2621
    resize(i_u2EntriesToRead);
2622
    for(u2 u2Ind = 0; u2Ind < i_u2EntriesToRead; u2Ind++)
2623
    {
2624
        u1 u1Tag;
2625
        i_jstream >> u1Tag;
2626
        switch (u1Tag)
2627
        {
2628
        case ITEM_Top:
2629
        case ITEM_Integer:
2630
        case ITEM_Float:
2631
        case ITEM_Double:
2632
        case ITEM_Long:
2633
        case ITEM_Null:
2634
        case ITEM_UninitializedThis:
2635
            pCurrent = new CVerificationTypeInfo(u1Tag);
2636
            break;
2637
        case ITEM_Object:
2638
            pCurrent = new CVerificationTypeObjectInfo(u1Tag);
2639
            break;
2640
        case ITEM_Uninitialized:
2641
            pCurrent = new CVerificationTypeUninitializedVariableInfo(u1Tag);
2642
            break;
2643
        default:
2644
            throw CJClassFileException(CJClassFileException::X_INTERNAL_ERROR);
2645
        }
2646
2647
        pCurrent->Read(i_jstream);
2648
        (*this)[u2Ind] = pCurrent;
2649
    }
2650
}
2651
2652
void 
2653
CVerificationTypes::Write(CJStream& i_jstream) const
2654
{
2655
    for (u2 u2Ind = 0; u2Ind < size(); u2Ind++)
2656
    {
2657
        (*this)[u2Ind]->Write(i_jstream);
2658
    }
2659
}
2660
2661
u4
2662
CVerificationTypes::GetSize() const
2663
{
2664
    u4 u4Size = 0;
2665
	for (const_iterator iter = begin(); iter != end(); iter++)
2666
	{
2667
		u4Size += (*iter)->GetSize();
2668
	}
2669
    return u4Size;
2670
}
2671
2672
//------------------------------------------------------------------------------
2673
CVerificationTypeObjectInfo::CVerificationTypeObjectInfo(u1 i_u1Tag)
2674
: CVerificationTypeInfo(i_u1Tag)
2675
{
2676
}
2677
2678
CVerificationTypeObjectInfo::~CVerificationTypeObjectInfo()
2679
{
2680
}
2681
2682
void
2683
CVerificationTypeObjectInfo::Read(CJStream& i_jstream)
2684
{
2685
    CVerificationTypeInfo::Read(i_jstream);
2686
    i_jstream >> m_u2CpoolIndex;
2687
}
2688
2689
void
2690
CVerificationTypeObjectInfo::Write(CJStream& i_jstream) const
2691
{
2692
    CVerificationTypeInfo::Write(i_jstream);
2693
    i_jstream << m_u2CpoolIndex;
2694
}
2695
2696
u4
2697
CVerificationTypeObjectInfo::GetSize() const
2698
{
2699
    u4 u4Size = CVerificationTypeInfo::GetSize()
2700
        + sizeof(m_u2CpoolIndex);
2701
    return u4Size;
2702
}
2703
2704
//------------------------------------------------------------------------------
2705
CVerificationTypeUninitializedVariableInfo::CVerificationTypeUninitializedVariableInfo(u1 i_u1Tag)
2706
: CVerificationTypeInfo(i_u1Tag)
2707
{
2708
}
2709
2710
CVerificationTypeUninitializedVariableInfo::~CVerificationTypeUninitializedVariableInfo()
2711
{
2712
}
2713
2714
void
2715
CVerificationTypeUninitializedVariableInfo::Read(CJStream& i_jstream)
2716
{
2717
    CVerificationTypeInfo::Read(i_jstream);
2718
    i_jstream >> m_u2Offset;
2719
}
2720
2721
void
2722
CVerificationTypeUninitializedVariableInfo::Write(CJStream& i_jstream) const
2723
{
2724
    CVerificationTypeInfo::Write(i_jstream);
2725
    i_jstream << m_u2Offset;
2726
}
2727
2728
u4
2729
CVerificationTypeUninitializedVariableInfo::GetSize() const
2730
{
2731
    u4 u4Size = CVerificationTypeInfo::GetSize()
2732
        + sizeof(m_u2Offset);
2733
    return u4Size;
2734
}
2735
2736
//------------------------------------------------------------------------------
2737
CStackMapFrameInfo::CStackMapFrameInfo(u1 i_u1FrameType)
2738
: m_u1FrameType(i_u1FrameType)
2739
{
2740
    m_u2ByteCodeOffset = 0;
2741
    m_u2OffsetDelta = 0;
2742
}
2743
2744
CStackMapFrameInfo::~CStackMapFrameInfo()
2745
{
2746
}
2747
2748
void
2749
CStackMapFrameInfo::Read(CJStream& i_jstream)
2750
{
2751
    // m_u1FrameType is read by the CStackMapTable container
2752
}
2753
2754
void
2755
CStackMapFrameInfo::Write(CJStream& i_jstream) const
2756
{
2757
    i_jstream << m_u1FrameType;
2758
}
2759
2760
u4
2761
CStackMapFrameInfo::GetSize() const
2762
{
2763
    return sizeof(m_u1FrameType);
2764
}
2765
2766
void 
2767
CStackMapFrameInfo::SetByteCodeOffset(u2 i_u2Offset) 
2768
{ 
2769
    m_u2ByteCodeOffset = i_u2Offset; 
2770
}
2771
2772
void
2773
CStackMapFrameInfo::AdjustOffsetDelta(int i_s2PrevFrameOffset)
2774
{
2775
    int newOffsetDelta = m_u2ByteCodeOffset - 1 - i_s2PrevFrameOffset;
2776
    if (newOffsetDelta < 0)
2777
    {
2778
        // Frame order was changed. This is not supported
2779
        throw CJClassFileException(CJClassFileException::X_INTERNAL_ERROR);
2780
    }
2781
    m_u2OffsetDelta = (u2)newOffsetDelta; // this is a safe cast since newDelta >= 1
2782
}
2783
2784
CStackMapFrameInfo::CStackMapFrameInfo(const CStackMapFrameInfo &i_Other)
2785
: m_u2ByteCodeOffset(i_Other.m_u2ByteCodeOffset), m_u2OffsetDelta(i_Other.m_u2OffsetDelta),
2786
    m_u1FrameType(i_Other.m_u1FrameType)
2787
{
2788
}
2789
2790
//------------------------------------------------------------------------------
2791
CStackMapSameFrameInfo::CStackMapSameFrameInfo(u1 i_u1FrameType, bool i_IsExtended)
2792
: CStackMapFrameInfo(i_u1FrameType), m_IsExtended(i_IsExtended)
2793
{
2794
}
2795
2796
CStackMapSameFrameInfo::~CStackMapSameFrameInfo()
2797
{
2798
}
2799
2800
void
2801
CStackMapSameFrameInfo::Read(CJStream& i_jstream)
2802
{
2803
    CStackMapFrameInfo::Read(i_jstream);
2804
    if (m_IsExtended)
2805
    {
2806
        // SAME_FRAME_EXTENDED type
2807
        i_jstream >> m_u2OffsetDelta;
2808
    }
2809
    else        
2810
    {
2811
        // SAME frame type. offset_delta is stored in the tag
2812
        m_u2OffsetDelta = GetFrameType();
2813
    }
2814
}
2815
2816
void
2817
CStackMapSameFrameInfo::Write(CJStream& i_jstream) const
2818
{
2819
    CStackMapFrameInfo::Write(i_jstream);
2820
    if (m_IsExtended)
2821
    {
2822
        // SAME_FRAME_EXTENDED type
2823
        i_jstream << m_u2OffsetDelta;
2824
    }
2825
}
2826
2827
u4
2828
CStackMapSameFrameInfo::GetSize() const
2829
{
2830
    u4 u4Size = CStackMapFrameInfo::GetSize();
2831
    if (m_IsExtended)
2832
    {
2833
        u4Size += sizeof(m_u2OffsetDelta);
2834
    }
2835
    return u4Size;
2836
}
2837
2838
void
2839
CStackMapSameFrameInfo::AdjustOffsetDelta(int i_s2PrevFrameOffset)
2840
{
2841
    CStackMapFrameInfo::AdjustOffsetDelta(i_s2PrevFrameOffset);
2842
    if (m_u2OffsetDelta > 63)
2843
    {
2844
        // Frame type is SAME_FRAME_EXTENDED
2845
        m_u1FrameType = SAME_FRAME_EXTENDED;
2846
        m_IsExtended = true;
2847
    }
2848
    else
2849
    {
2850
        // Frame type is SAME_FRAME. offset_delta is stored in the tag
2851
        m_u1FrameType = (u1)m_u2OffsetDelta; // this is safe since m_u2OffsetDelta <= 63
2852
        m_IsExtended = false;
2853
    }
2854
}
2855
2856
CStackMapFrameInfo*
2857
CStackMapSameFrameInfo::Clone() const
2858
{
2859
    return new CStackMapSameFrameInfo(*this);
2860
}
2861
2862
//------------------------------------------------------------------------------
2863
CStackMapChopFrameInfo::CStackMapChopFrameInfo(u1 i_u1FrameType)
2864
: CStackMapFrameInfo(i_u1FrameType)
2865
{
2866
}
2867
2868
CStackMapChopFrameInfo::~CStackMapChopFrameInfo()
2869
{
2870
}
2871
2872
void
2873
CStackMapChopFrameInfo::Read(CJStream& i_jstream)
2874
{
2875
    CStackMapFrameInfo::Read(i_jstream);
2876
    i_jstream >> m_u2OffsetDelta;
2877
}
2878
2879
void
2880
CStackMapChopFrameInfo::Write(CJStream& i_jstream) const
2881
{
2882
    CStackMapFrameInfo::Write(i_jstream);
2883
    i_jstream << m_u2OffsetDelta;
2884
}
2885
2886
u4
2887
CStackMapChopFrameInfo::GetSize() const
2888
{
2889
    u4 u4Size = CStackMapFrameInfo::GetSize()
2890
        + sizeof(m_u2OffsetDelta);
2891
    return u4Size;
2892
}
2893
2894
CStackMapFrameInfo*
2895
CStackMapChopFrameInfo::Clone() const
2896
{
2897
    return new CStackMapChopFrameInfo(*this);
2898
}
2899
2900
//------------------------------------------------------------------------------
2901
CStackMapSameLocals1StackItemFrameInfo::CStackMapSameLocals1StackItemFrameInfo(u1 i_u1FrameType, 
2902
                                                                               bool i_IsExtended)
2903
: CStackMapFrameInfo(i_u1FrameType), m_IsExtended(i_IsExtended)
2904
{
2905
}
2906
2907
CStackMapSameLocals1StackItemFrameInfo::~CStackMapSameLocals1StackItemFrameInfo()
2908
{
2909
}
2910
2911
void
2912
CStackMapSameLocals1StackItemFrameInfo::Read(CJStream& i_jstream)
2913
{
2914
    CStackMapFrameInfo::Read(i_jstream);
2915
    if (m_IsExtended)
2916
    {
2917
        // SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED type
2918
        i_jstream >> m_u2OffsetDelta;
2919
    }
2920
    else        
2921
    {
2922
        // SAME_LOCALS_1_STACK_ITEM_FRAME frame type
2923
        m_u2OffsetDelta = GetFrameType() - 64;
2924
    }
2925
    m_Stack.Read(i_jstream, 1); // must hold exactly one stack item
2926
}
2927
2928
void
2929
CStackMapSameLocals1StackItemFrameInfo::Write(CJStream& i_jstream) const
2930
{
2931
    CStackMapFrameInfo::Write(i_jstream);
2932
    if (m_IsExtended)
2933
    {
2934
        // SAME_FRAME_EXTENDED type
2935
        i_jstream << m_u2OffsetDelta;
2936
    }
2937
    m_Stack.Write(i_jstream);
2938
}
2939
2940
u4
2941
CStackMapSameLocals1StackItemFrameInfo::GetSize() const
2942
{
2943
    u4 u4Size = CStackMapFrameInfo::GetSize();
2944
    if (m_IsExtended)
2945
    {
2946
        u4Size += sizeof(m_u2OffsetDelta);
2947
    }
2948
    u4Size += m_Stack.GetSize();
2949
    return u4Size;
2950
}
2951
2952
void
2953
CStackMapSameLocals1StackItemFrameInfo::AdjustOffsetDelta(int i_s2PrevFrameOffset)
2954
{
2955
    CStackMapFrameInfo::AdjustOffsetDelta(i_s2PrevFrameOffset);
2956
    if (m_u2OffsetDelta + 64 > 127)
2957
    {
2958
        // Frame type is SAME_LOCALS_1_STACK_FRAME_EXTENDED
2959
        m_u1FrameType = SAME_LOCALS_1_STACK_ITEM_EXTENDED;
2960
        m_IsExtended = true;
2961
    }
2962
    else
2963
    {
2964
        // Frame type is SAME_LOCALS_1_STACK_FRAME. offset_delta is stored in the tag
2965
        m_u1FrameType = (u1)(m_u2OffsetDelta + 64); // this is safe since m_u2OffsetDelta <= 63
2966
        m_IsExtended = false;
2967
    }
2968
}
2969
2970
CStackMapFrameInfo*
2971
CStackMapSameLocals1StackItemFrameInfo::Clone() const
2972
{
2973
    return new CStackMapSameLocals1StackItemFrameInfo(*this);
2974
}
2975
2976
CStackMapSameLocals1StackItemFrameInfo::CStackMapSameLocals1StackItemFrameInfo(const CStackMapSameLocals1StackItemFrameInfo &i_Other)
2977
: CStackMapFrameInfo(i_Other), m_Stack(i_Other.m_Stack), m_IsExtended(i_Other.m_IsExtended)
2978
{
2979
}
2980
2981
//------------------------------------------------------------------------------
2982
CStackMapAppendFrameInfo::CStackMapAppendFrameInfo(u1 i_u1FrameType)
2983
: CStackMapFrameInfo(i_u1FrameType)
2984
{
2985
}
2986
2987
CStackMapAppendFrameInfo::~CStackMapAppendFrameInfo()
2988
{
2989
}
2990
2991
void
2992
CStackMapAppendFrameInfo::Read(CJStream& i_jstream)
2993
{
2994
    CStackMapFrameInfo::Read(i_jstream);
2995
    i_jstream >> m_u2OffsetDelta;
2996
    m_Locals.Read(i_jstream, GetFrameType() - 251);
2997
}
2998
2999
void
3000
CStackMapAppendFrameInfo::Write(CJStream& i_jstream) const
3001
{
3002
    CStackMapFrameInfo::Write(i_jstream);
3003
    i_jstream << m_u2OffsetDelta;
3004
    m_Locals.Write(i_jstream);
3005
}
3006
3007
u4
3008
CStackMapAppendFrameInfo::GetSize() const
3009
{
3010
    u4 u4Size = CStackMapFrameInfo::GetSize()
3011
        + sizeof(m_u2OffsetDelta)
3012
        + m_Locals.GetSize();
3013
    return u4Size;
3014
}
3015
3016
CStackMapFrameInfo*
3017
CStackMapAppendFrameInfo::Clone() const
3018
{
3019
    return new CStackMapAppendFrameInfo(*this);
3020
}
3021
3022
CStackMapAppendFrameInfo::CStackMapAppendFrameInfo(const CStackMapAppendFrameInfo &i_Other)
3023
: CStackMapFrameInfo(i_Other), m_Locals(i_Other.m_Locals)
3024
{
3025
}
3026
3027
//------------------------------------------------------------------------------
3028
CStackMapFullFrameInfo::CStackMapFullFrameInfo(u1 i_u1FrameType)
3029
: CStackMapFrameInfo(i_u1FrameType), m_u2NumberOfLocals(0), m_u2NumberOfStackItems(0)
3030
{
3031
}
3032
3033
CStackMapFullFrameInfo::~CStackMapFullFrameInfo()
3034
{
3035
}
3036
3037
void
3038
CStackMapFullFrameInfo::Read(CJStream& i_jstream)
3039
{
3040
    CStackMapFrameInfo::Read(i_jstream);
3041
    i_jstream >> m_u2OffsetDelta
3042
              >> m_u2NumberOfLocals;
3043
    m_Locals.Read(i_jstream, m_u2NumberOfLocals);
3044
    i_jstream >> m_u2NumberOfStackItems;
3045
    m_Stack.Read(i_jstream, m_u2NumberOfStackItems);
3046
}
3047
3048
void
3049
CStackMapFullFrameInfo::Write(CJStream& i_jstream) const
3050
{
3051
    CStackMapFrameInfo::Write(i_jstream);
3052
    i_jstream << m_u2OffsetDelta
3053
              << m_u2NumberOfLocals;
3054
    m_Locals.Write(i_jstream);
3055
    i_jstream << m_u2NumberOfStackItems;
3056
    m_Stack.Write(i_jstream);
3057
}
3058
3059
u4
3060
CStackMapFullFrameInfo::GetSize() const
3061
{
3062
    u4 u4Size = CStackMapFrameInfo::GetSize()
3063
        + sizeof(m_u2OffsetDelta)
3064
        + sizeof(m_u2NumberOfLocals)
3065
        + m_Locals.GetSize()
3066
        + sizeof(m_u2NumberOfStackItems)
3067
        + m_Stack.GetSize();
3068
    return u4Size;
3069
}
3070
3071
CStackMapFrameInfo*
3072
CStackMapFullFrameInfo::Clone() const
3073
{
3074
    return new CStackMapFullFrameInfo(*this);
3075
}
3076
3077
CStackMapFullFrameInfo::CStackMapFullFrameInfo(const CStackMapFullFrameInfo &i_Other)
3078
: CStackMapFrameInfo(i_Other), m_Locals(i_Other.m_Locals), m_Stack(i_Other.m_Stack),
3079
    m_u2NumberOfLocals(i_Other.m_u2NumberOfLocals), 
3080
    m_u2NumberOfStackItems(i_Other.m_u2NumberOfStackItems)
3081
{
3082
}
3083
3084
//------------------------------------------------------------------------------
3085
CStackMapTable::~CStackMapTable()
3086
{
3087
    for (iterator iter = begin(); iter != end(); iter++)
3088
    {
3089
        delete *iter;
3090
    }
3091
}
3092
3093
void
3094
CStackMapTable::Read(CJStream& i_jstream)
3095
{
3096
    u2 u2Size;
3097
    CStackMapFrameInfo* pCurrent;
3098
    int s2PrevFrameOffset = -1;
3099
3100
    i_jstream >> u2Size;
3101
    resize(u2Size);
3102
    for(u2 u2Ind = 0; u2Ind < u2Size; u2Ind++)
3103
    {
3104
        u1 u1FrameType;
3105
        i_jstream >> u1FrameType;
3106
        if (u1FrameType >= 0 && u1FrameType <= 63)
3107
        {
3108
            pCurrent = new CStackMapSameFrameInfo(u1FrameType, false);
3109
        }
3110
        else if (u1FrameType >= 64 && u1FrameType <= 127)
3111
        {
3112
            pCurrent = new CStackMapSameLocals1StackItemFrameInfo(u1FrameType, false);
3113
        }
3114
        else if (u1FrameType == SAME_LOCALS_1_STACK_ITEM_EXTENDED)
3115
        {
3116
            pCurrent = new CStackMapSameLocals1StackItemFrameInfo(u1FrameType, true);
3117
        }
3118
        else if (u1FrameType >= 248 && u1FrameType <= 250)
3119
        {
3120
            pCurrent = new CStackMapChopFrameInfo(u1FrameType);
3121
        }
3122
        else if (u1FrameType == SAME_FRAME_EXTENDED)
3123
        {
3124
            pCurrent = new CStackMapSameFrameInfo(u1FrameType, true);
3125
        }
3126
        else if (u1FrameType >= 252 && u1FrameType <= 254)
3127
        {
3128
            pCurrent = new CStackMapAppendFrameInfo(u1FrameType);
3129
        }
3130
        else if (u1FrameType == FULL_FRAME)
3131
        {
3132
            pCurrent = new CStackMapFullFrameInfo(u1FrameType);
3133
        }
3134
        else
3135
        {
3136
            // Unknown frame type
3137
            throw CJClassFileException(CJClassFileException::X_INTERNAL_ERROR);
3138
        }
3139
        
3140
        pCurrent->Read(i_jstream);
3141
        pCurrent->SetByteCodeOffset(s2PrevFrameOffset + 1 + pCurrent->m_u2OffsetDelta);
3142
        (*this)[u2Ind] = pCurrent;
3143
        s2PrevFrameOffset = pCurrent->GetByteCodeOffset();
3144
    }
3145
}
3146
3147
void
3148
CStackMapTable::AdjustOffsetDeltas()
3149
{
3150
    // Recalculate offset deltas for all frames. This function must be called before
3151
    // writing the Stack Map Table to the class file or calculating its size
3152
    CStackMapFrameInfo* pCurrent;
3153
    int s2PrevFrameOffset = -1;
3154
3155
    for (u2 u2Ind = 0; u2Ind < size(); u2Ind++)
3156
    {
3157
        pCurrent = (*this)[u2Ind];
3158
        pCurrent->AdjustOffsetDelta(s2PrevFrameOffset);
3159
        s2PrevFrameOffset = pCurrent->GetByteCodeOffset();
3160
    }
3161
}
3162
3163
CStackMapFrameInfo*
3164
CStackMapTable::GetFrameAtOffset(u2 i_u2Offset)
3165
{
3166
    bool found = false;
3167
    iterator it = begin();
3168
    for (; it != end(); ++it)
3169
    {
3170
        if ((*it)->GetByteCodeOffset() == i_u2Offset)
3171
        {
3172
            found = true;
3173
            break;
3174
        }
3175
    }
3176
3177
    if (found)
3178
    {
3179
        return (*it);
3180
    }
3181
    else
3182
    {
3183
        return NULL;
3184
    }
3185
}
3186
3187
void
3188
CStackMapTable::Write(CJStream& i_jstream) const
3189
{
3190
    i_jstream << (u2)size(); // the number_of_entries field
3191
3192
    CStackMapFrameInfo* pCurrent;
3193
    int s2PrevFrameOffset = -1;
3194
3195
    for (u2 u2Ind = 0; u2Ind < size(); u2Ind++)
3196
    {
3197
        pCurrent = (*this)[u2Ind];
3198
        pCurrent->Write(i_jstream);
3199
        s2PrevFrameOffset = pCurrent->GetByteCodeOffset();
3200
    }
3201
}
3202
3203
u4
3204
CStackMapTable::GetSize() const
3205
{
3206
    u4 u4Size = sizeof(u2); // the number_of_entries field
3207
    for (const_iterator iter = begin(); iter != end(); iter++)
3208
    {
3209
        u4Size += (*iter)->GetSize();
3210
    }
3211
    return u4Size;
3212
}
3213
3214
CStackMapTable& 
3215
CStackMapTable::operator = (const CStackMapTable& i_StackMaps)
3216
{
3217
	for(iterator iter = begin(); iter != end(); iter++)
3218
	{
3219
		delete *iter;
3220
	}
3221
	if(!i_StackMaps.empty())
3222
	{
3223
		const_iterator iterIn;
3224
		clear();
3225
		for(iterIn = i_StackMaps.begin(); iterIn != i_StackMaps.end(); iterIn++)
3226
		{
3227
			push_back((*iterIn)->Clone());
3228
		}
3229
	}
3230
	return *this;
3231
}
3232
3233
//------------------------------------------------------------------------------
3234
CStackMapTableAttribute::CStackMapTableAttribute(CJClassFile* i_pClassFile)
3235
: CAttributeInfo(i_pClassFile)
3236
{
3237
    u2 u2NameInd = i_pClassFile->GetConstPool()->Add(new CCPUtf8Info("StackMapTable"));
3238
    m_u2NameInd = u2NameInd;
3239
    m_StackMapTable.clear();
3240
}
3241
3242
CStackMapTableAttribute::~CStackMapTableAttribute()
3243
{
3244
}
3245
3246
void
3247
CStackMapTableAttribute::Read(CJStream& i_jstream)
3248
{
3249
	CAttributeInfo::Read(i_jstream);
3250
    m_StackMapTable.Read(i_jstream);
3251
}
3252
3253
void
3254
CStackMapTableAttribute::Write(CJStream& i_jstream) const
3255
{
3256
	const u4 u4Length = GetLength() - CAttributeInfo::SizeOf();
3257
	i_jstream	<<	m_u2NameInd
3258
				<<	u4Length;
3259
    m_StackMapTable.Write(i_jstream);
3260
}
3261
3262
u4
3263
CStackMapTableAttribute::GetSize() const
3264
{
3265
    return GetLength();
3266
}
3267
3268
u4
3269
CStackMapTableAttribute::GetLength() const
3270
{
3271
    u4 u4Length = CAttributeInfo::SizeOf()
3272
        + m_StackMapTable.GetSize();
3273
    return u4Length;
3274
}
3275
3276
void
3277
CStackMapTableAttribute::RereadFromBuffer(u1 *i_u1Tbl) 
3278
{
3279
	u2 u2skip = 0;
3280
	u4 u4attributeLenght = 0;
3281
	
3282
	if (i_u1Tbl == NULL) return;
3283
3284
	u2skip = i_u1Tbl[0];
3285
	u2skip <<= 8;
3286
	u2skip |= i_u1Tbl[1];
3287
3288
	u4attributeLenght = i_u1Tbl[2];
3289
	u4attributeLenght <<= 8;
3290
	u4attributeLenght |= i_u1Tbl[3];
3291
	u4attributeLenght <<= 8;
3292
	u4attributeLenght |= i_u1Tbl[4];
3293
	u4attributeLenght <<= 8;
3294
	u4attributeLenght |= i_u1Tbl[5];
3295
	m_u4Length = u4attributeLenght;
3296
	CJMemStream memstream;
3297
	memstream.Open(&i_u1Tbl[2], u4attributeLenght 
3298
		+ sizeof(u2) /*part of attribute header (its length)*/
3299
		+ 2 /*workaround for end buffer checking*/);
3300
	CJStream mem_jstream(&memstream);
3301
	//GetStackMapTable().RereadFromBuffer(&i_u1Tbl[6]);
3302
	this->Read(mem_jstream);
3303
}
3304
//==============================================================================
2503
// CJClassFile implementation
3305
// CJClassFile implementation
2504
//
3306
//
2505
3307
Lines 2544-2555 Link Here
2544
	{
3346
	{
2545
		throw CJClassFileException(CJClassFileException::X_BAD_MAGIC);
3347
		throw CJClassFileException(CJClassFileException::X_BAD_MAGIC);
2546
	}
3348
	}
2547
	i_jstream	>>	m_u2MajorVersion;
2548
	if(CJClassFile::MajorVersion < m_u2MajorVersion)
2549
	{
2550
		throw CJClassFileException(CJClassFileException::X_BAD_VERSION);
2551
	}
2552
	i_jstream	>>	m_u2MinorVersion;
3349
	i_jstream	>>	m_u2MinorVersion;
3350
	i_jstream	>>	m_u2MajorVersion;
2553
	m_pConstPool->Read(i_jstream);
3351
	m_pConstPool->Read(i_jstream);
2554
	i_jstream	>>	m_u2AccessFlags
3352
	i_jstream	>>	m_u2AccessFlags
2555
				>>	m_u2ThisClass
3353
				>>	m_u2ThisClass
Lines 2565-2572 Link Here
2565
CJClassFile::Write(CJStream& i_jstream) const
3363
CJClassFile::Write(CJStream& i_jstream) const
2566
{
3364
{
2567
	i_jstream	<<	m_u4Magic
3365
	i_jstream	<<	m_u4Magic
2568
				<<	m_u2MajorVersion
3366
				<<	m_u2MinorVersion
2569
				<<	m_u2MinorVersion;
3367
				<<	m_u2MajorVersion;
2570
	m_pConstPool->Write(i_jstream);
3368
	m_pConstPool->Write(i_jstream);
2571
	i_jstream	<<	m_u2AccessFlags
3369
	i_jstream	<<	m_u2AccessFlags
2572
				<<	m_u2ThisClass
3370
				<<	m_u2ThisClass
(-)src-native/BCI/BCIEng/BCIEngProbe/ProbeInstrumenter/ProbeInstrumenter.mak (-2 / +2 lines)
Lines 74-80 Link Here
74
"$(OUTDIR)" :
74
"$(OUTDIR)" :
75
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
75
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
76
76
77
CPP_PROJ=/nologo /ML /W3 /GX /Zi /O2 /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR"..\Release\\" /Fp"$(INTDIR)\ProbeInstrumenter.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
77
CPP_PROJ=/nologo /ML /W3 /GX /Zi /O2 /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /FR"..\Release\\" /Fp"$(INTDIR)\ProbeInstrumenter.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
78
BSC32=bscmake.exe
78
BSC32=bscmake.exe
79
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ProbeInstrumenter.bsc" 
79
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ProbeInstrumenter.bsc" 
80
BSC32_SBRS= \
80
BSC32_SBRS= \
Lines 134-140 Link Here
134
"$(INTDIR)" :
134
"$(INTDIR)" :
135
    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
135
    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
136
136
137
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeInstrumenter.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
137
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeInstrumenter.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
138
BSC32=bscmake.exe
138
BSC32=bscmake.exe
139
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ProbeInstrumenter.bsc" 
139
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ProbeInstrumenter.bsc" 
140
BSC32_SBRS= \
140
BSC32_SBRS= \
(-)src-native/BCI/BCIEng/BCIEngProbe/ProbeInstrumenter/ProbeInstrumenter.cpp (-1 / +1 lines)
Lines 26-36 Link Here
26
#pragma warning(disable:4786)
26
#pragma warning(disable:4786)
27
#endif
27
#endif
28
28
29
#include "BCIEngProbeInterface.h"
29
#include "CommonDef.h"
30
#include "CommonDef.h"
30
#include <string>
31
#include <string>
31
#include <stdlib.h>
32
#include <stdlib.h>
32
#include <stdio.h>
33
#include <stdio.h>
33
#include "BCIEngProbeInterface.h"
34
34
35
USE_NAMESPACE(std);
35
USE_NAMESPACE(std);
36
36
(-)src-native/BCI/BCIEng/BCIEngProbe/ProbeInstrumenter/ProbeInstrumenter.dsp (-2 / +2 lines)
Lines 42-48 Link Here
42
# PROP Ignore_Export_Lib 0
42
# PROP Ignore_Export_Lib 0
43
# PROP Target_Dir ""
43
# PROP Target_Dir ""
44
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
44
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
45
# ADD CPP /nologo /W3 /GX /Zi /O2 /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR"..\Release\\" /YX /FD /c
45
# ADD CPP /nologo /W3 /GX /Zi /O2 /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /FR"..\Release\\" /YX /FD /c
46
# ADD BASE RSC /l 0x409 /d "NDEBUG"
46
# ADD BASE RSC /l 0x409 /d "NDEBUG"
47
# ADD RSC /l 0x409 /d "NDEBUG"
47
# ADD RSC /l 0x409 /d "NDEBUG"
48
BSC32=bscmake.exe
48
BSC32=bscmake.exe
Lines 66-72 Link Here
66
# PROP Ignore_Export_Lib 0
66
# PROP Ignore_Export_Lib 0
67
# PROP Target_Dir ""
67
# PROP Target_Dir ""
68
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
68
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
69
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
69
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /FR /YX /FD /GZ /c
70
# ADD BASE RSC /l 0x409 /d "_DEBUG"
70
# ADD BASE RSC /l 0x409 /d "_DEBUG"
71
# ADD RSC /l 0x409 /d "_DEBUG"
71
# ADD RSC /l 0x409 /d "_DEBUG"
72
BSC32=bscmake.exe
72
BSC32=bscmake.exe
(-)src-native/BCI/BCIEng/BCIEngProbe/ProbeInstrumenter/Makefile.unix (-2 / +5 lines)
Lines 21-30 Link Here
21
include ../../../Common/Makefile.include
21
include ../../../Common/Makefile.include
22
include ../../../makefile.include
22
include ../../../makefile.include
23
23
24
CPPFLAGS += -I.. -I../.. -I../../BCIEngJ -I../../../Common -I../../../JClass
24
CPPFLAGS += -I.. -I../.. -I../../BCIEngJ -I../../../Common -I../../../JClass 
25
CPPFLAGS += -I../../../../../../org.apache.harmony_vmcore_verifier/src/include -I../../../../../../org.apache.harmony_vmcore_verifier/src/vmcore/include -I../../../../../../org.apache.harmony_vmcore_verifier/src/vmcore/src/verifier-3363/x_verifier 
26
CPPFLAGS += -DSTATIC_BUILD -DLINUX -DPLATFORM_POSIX
25
CFLAGS += $(PIC_FLAG) 
27
CFLAGS += $(PIC_FLAG) 
26
LDIRS = -L.. -L../.. -L../../BCIEngJ -L../../../Common -L../../../JClass
28
LDIRS = -L.. -L../.. -L../../BCIEngJ -L../../../Common -L../../../JClass
27
LIBS = -lBCIEngProbe -lBCIEngJ -lBCIEng -lJClassStat -lCommon
29
LDIRS += -L../../../../../../org.apache.harmony_vmcore_verifier/lib/linux/$(BUILD_MODE_DIR)/$(ARCH_DIR)
30
LIBS = -lBCIEngProbe -lBCIEngJ -lBCIEng -lJClassStat -lCommon -lverifier
28
31
29
OBJS = 	ProbeInstrumenter.o
32
OBJS = 	ProbeInstrumenter.o
30
33
(-)src-native/BCI/BCIEng/BCIEngProbe/ProbeInstrumenter/ProbeInstrumenter.mak64 (-4 / +4 lines)
Lines 75-81 Link Here
75
"$(OUTDIR)" :
75
"$(OUTDIR)" :
76
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
76
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
77
77
78
CPP_PROJ=/nologo /ML /W3 /EHsc /Zi /O2 /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR"..\Release\\" /Fp"$(INTDIR)\ProbeInstrumenter.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
78
CPP_PROJ=/nologo /ML /W3 /EHsc /Zi /O2 /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /FR"..\Release\\" /Fp"$(INTDIR)\ProbeInstrumenter.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
79
79
80
LINK32=link.exe
80
LINK32=link.exe
81
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\ProbeInstrumenter.pdb" /out:"../Release/ProbeInstrumenter.exe" /libpath:"..\Release" /machine:IA64
81
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\ProbeInstrumenter.pdb" /out:"../Release/ProbeInstrumenter.exe" /libpath:"..\Release" /machine:IA64
Lines 125-131 Link Here
125
"$(INTDIR)" :
125
"$(INTDIR)" :
126
    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
126
    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
127
127
128
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /ZI /Od /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeInstrumenter.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
128
CPP_PROJ=/nologo /MTd /W3 /Gm /EHsc /ZI /Od /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeInstrumenter.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
129
129
130
LINK32=link.exe
130
LINK32=link.exe
131
LINK32_FLAGS=kernel32.lib bciengprobe.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\ProbeInstrumenter.pdb" /debug /out:"$(OUTDIR)\ProbeInstrumenter.exe" /libpath:"..\debug" /machine:IA64
131
LINK32_FLAGS=kernel32.lib bciengprobe.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\ProbeInstrumenter.pdb" /debug /out:"$(OUTDIR)\ProbeInstrumenter.exe" /libpath:"..\debug" /machine:IA64
Lines 170-176 Link Here
170
"$(OUTDIR)" :
170
"$(OUTDIR)" :
171
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
171
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
172
172
173
CPP_PROJ=/nologo /ML /W3 /EHsc /Zi /O2 /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR"..\Release\\" /Fp"$(INTDIR)\ProbeInstrumenter.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
173
CPP_PROJ=/nologo /ML /W3 /EHsc /Zi /O2 /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /FR"..\Release\\" /Fp"$(INTDIR)\ProbeInstrumenter.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
174
174
175
LINK32=link.exe
175
LINK32=link.exe
176
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\ProbeInstrumenter.pdb" /out:"../Release/ProbeInstrumenter.exe" /libpath:"..\Release" /machine:AMD64
176
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\ProbeInstrumenter.pdb" /out:"../Release/ProbeInstrumenter.exe" /libpath:"..\Release" /machine:AMD64
Lines 220-226 Link Here
220
"$(INTDIR)" :
220
"$(INTDIR)" :
221
    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
221
    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
222
222
223
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /ZI /Od /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeInstrumenter.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
223
CPP_PROJ=/nologo /MTd /W3 /Gm /EHsc /ZI /Od /I "..\..\..\Common" /I "..\..\..\jclass" /I "..\..\..\bcieng" /I "..\..\..\bcieng\bciengj" /I ".." /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeInstrumenter.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
224
224
225
LINK32=link.exe
225
LINK32=link.exe
226
LINK32_FLAGS=kernel32.lib bciengprobe.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\ProbeInstrumenter.pdb" /debug /out:"$(OUTDIR)\ProbeInstrumenter.exe" /libpath:"..\debug" /machine:AMD64
226
LINK32_FLAGS=kernel32.lib bciengprobe.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\ProbeInstrumenter.pdb" /debug /out:"$(OUTDIR)\ProbeInstrumenter.exe" /libpath:"..\debug" /machine:AMD64
(-)src-native/BCI/BCIEng/BCIEngProbe/ProbeInstrumenter/ProbeInstrumenter.dep (+7 lines)
Lines 1-6 Link Here
1
# Microsoft Developer Studio Generated Dependency File, included by ProbeInstrumenter.mak
1
# Microsoft Developer Studio Generated Dependency File, included by ProbeInstrumenter.mak
2
2
3
.\ProbeInstrumenter.cpp : \
3
.\ProbeInstrumenter.cpp : \
4
	"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\common.h"\
5
	"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\hycomp.h"\
6
	"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\platform_types.h"\
7
	"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include\verifier.h"\
8
	"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_class_interface.h"\
9
	"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_verifier.h"\
4
	"..\..\..\common\commondef.h"\
10
	"..\..\..\common\commondef.h"\
5
	"..\..\..\common\javadef.h"\
11
	"..\..\..\common\javadef.h"\
6
	"..\..\..\Common\JavaHelpers.h"\
12
	"..\..\..\Common\JavaHelpers.h"\
Lines 10-15 Link Here
10
	"..\..\..\JClass\JStream.h"\
16
	"..\..\..\JClass\JStream.h"\
11
	"..\..\BCIEng.h"\
17
	"..\..\BCIEng.h"\
12
	"..\..\BCIEngInterface.h"\
18
	"..\..\BCIEngInterface.h"\
19
	"..\..\BCIEngJ\class_inerface_int.h"\
13
	"..\..\BCIEngJ\ModuleJ.h"\
20
	"..\..\BCIEngJ\ModuleJ.h"\
14
	"..\..\InsSet.h"\
21
	"..\..\InsSet.h"\
15
	"..\..\Module.h"\
22
	"..\..\Module.h"\
(-)src-native/BCI/Common/CommonDef.h (-9 / +14 lines)
Lines 22-35 Link Here
22
// For this header to work, you need to define one of these ARCH symbols:
22
// For this header to work, you need to define one of these ARCH symbols:
23
//
23
//
24
//	WIN32 (means x86)
24
//	WIN32 (means x86)
25
//	IA32_ARCH (means x86)
25
//  IPF_ARCH (means Itanium Processor Family)
26
//  IPF_ARCH (means Itanium Processor Family)
26
//  EM64T_ARCH (means Intel/AMD 64-bit processors)
27
//  EM64T_ARCH (means Intel/AMD 64-bit processors)
27
//	IA32_ARCH (means x86)
28
//	SPARC_ARCH
28
//	SPARC_ARCH
29
//	HPPA_ARCH
29
//	HPPA_ARCH
30
//	ALPHA_ARCH
30
//	ALPHA_ARCH
31
//	PPC_ARCH
31
//	PPC_ARCH
32
//  LINUX_PPC_ARCH  (LINUX PPC64)
33
//	OS390_ARCH (means zSeries)
32
//	OS390_ARCH (means zSeries)
34
//	AS400_ARCH (means iSeries)
33
//	AS400_ARCH (means iSeries)
35
//
34
//
Lines 72-81 Link Here
72
    // This brings _WINDOWS_ into scope. Use _WINDOWS_ to wrap Windows code.
71
    // This brings _WINDOWS_ into scope. Use _WINDOWS_ to wrap Windows code.
73
#   include <windows.h>           /* for lots o' stuff, but esp. _WINDOWS_ */
72
#   include <windows.h>           /* for lots o' stuff, but esp. _WINDOWS_ */
74
#   include <malloc.h>            /* for alloca */
73
#   include <malloc.h>            /* for alloca */
75
#elif defined(IPF_ARCH) || (EM64T_ARCH) || (LINUX_PPC_ARCH)
74
#elif defined(IPF_ARCH) || (EM64T_ARCH)
76
#   include <stdint.h>         /* for int64_t and uint64_t */
75
#   include <stdint.h>         /* for int64_t and uint64_t */
77
#endif
76
#endif
78
77
78
/* On LinuxPPC64 we need this to get int64_t */
79
#if defined(PPC_ARCH)
80
#   include </usr/include/sys/types.h>
81
#endif
79
/* Only on OS400, we need this to get malloc/free */
82
/* Only on OS400, we need this to get malloc/free */
80
#ifdef OS400
83
#ifdef OS400
81
#include <stdlib.h>
84
#include <stdlib.h>
Lines 113-127 Link Here
113
	typedef signed long long int int64_t;
116
	typedef signed long long int int64_t;
114
	typedef unsigned long long int uint64_t;
117
	typedef unsigned long long int uint64_t;
115
#else
118
#else
116
#if defined(_WINDOWS_)
119
#   if defined(_WINDOWS_)
117
		typedef __int64 int64_t;
120
		typedef __int64 int64_t;
118
		typedef unsigned __int64 uint64_t;
121
		typedef unsigned __int64 uint64_t;
119
#else
122
#elif defined(PPC_ARCH)
120
#       if !defined(IPF_ARCH) && !defined(EM64T_ARCH) && !defined(LINUX_PPC_ARCH) // Already being declared in stdint.h
121
		typedef long long int64_t;
122
		typedef unsigned long long uint64_t;
123
		typedef unsigned long long uint64_t;
124
#   else
125
#       if !defined(IPF_ARCH) && !defined(EM64T_ARCH)
126
	        typedef long long int64_t;
127
			typedef unsigned long long uint64_t;
123
#       endif
128
#       endif
124
#endif
129
#   endif
125
#endif
130
#endif
126
131
127
//------------------------------------------------------------------------------
132
//------------------------------------------------------------------------------
Lines 197-203 Link Here
197
///////
202
///////
198
#if defined(WIN32) || defined(IA32_ARCH) || defined(IPF_ARCH) || defined(EM64T_ARCH) || defined(ALPHA_ARCH)
203
#if defined(WIN32) || defined(IA32_ARCH) || defined(IPF_ARCH) || defined(EM64T_ARCH) || defined(ALPHA_ARCH)
199
#   define BIG_ENDIAN_HW
204
#   define BIG_ENDIAN_HW
200
#elif defined(SPARC_ARCH) || defined(HPPA_ARCH) || defined(PPC_ARCH) || defined(AS400_ARCH) || defined(OS390_ARCH) || defined(LINUX_PPC_ARCH)
205
#elif defined(SPARC_ARCH) || defined(HPPA_ARCH) || defined(PPC_ARCH) || defined(AS400_ARCH) || defined(OS390_ARCH)
201
#   define LITTLE_ENDIAN_HW
206
#   define LITTLE_ENDIAN_HW
202
#else
207
#else
203
#   error "Platform-specific configuration required"
208
#   error "Platform-specific configuration required"
(-)src-native/BCI/Common/Makefile.include (+2 lines)
Lines 108-115 Link Here
108
###
108
###
109
ifdef debug
109
ifdef debug
110
   CFLAGS += -g
110
   CFLAGS += -g
111
   BUILD_MODE_DIR= debug
111
else
112
else
112
   CFLAGS += $(OPT_FLAG)
113
   CFLAGS += $(OPT_FLAG)
114
   BUILD_MODE_DIR= release
113
endif
115
endif
114
116
115
CPPFLAGS = -D_UNIX_ $(PLATFORM)
117
CPPFLAGS = -D_UNIX_ $(PLATFORM)
(-)src-native/BCI/Common/JavaDef.h (-1 / +16 lines)
Lines 50-55 Link Here
50
#define CONSTANT_InterfaceMethodref	11		// Interface method refernce constant 
50
#define CONSTANT_InterfaceMethodref	11		// Interface method refernce constant 
51
#define CONSTANT_NameAndType		12		// Name and type constant
51
#define CONSTANT_NameAndType		12		// Name and type constant
52
52
53
#define CONSTANT_Unknown			0
53
// Array types
54
// Array types
54
#define T_BOOLEAN					4		// bool
55
#define T_BOOLEAN					4		// bool
55
#define T_CHAR						5		// char
56
#define T_CHAR						5		// char
Lines 60-66 Link Here
60
#define T_INT						10		// int
61
#define T_INT						10		// int
61
#define T_LONG						11		// long
62
#define T_LONG						11		// long
62
63
63
#define CONSTANT_Unknown			0
64
// stack map frame types (new in Java 6.0)
65
#define SAME_LOCALS_1_STACK_ITEM_EXTENDED   247
66
#define SAME_FRAME_EXTENDED                 251
67
#define FULL_FRAME                          255
68
69
// verification types (new in Java 6.0)
70
#define ITEM_Top                    0
71
#define ITEM_Integer                1
72
#define ITEM_Float                  2
73
#define ITEM_Double                 3
74
#define ITEM_Long                   4
75
#define ITEM_Null                   5
76
#define ITEM_UninitializedThis      6
77
#define ITEM_Object                 7
78
#define ITEM_Uninitialized          8
64
79
65
// ToDo: other Java specific definitions
80
// ToDo: other Java specific definitions
66
typedef unsigned char				u1;		// 1 byte
81
typedef unsigned char				u1;		// 1 byte
(-)src-native/BCI/BCIEng/BCIEngJ/BCIEngJ.mak (-2 / +24 lines)
Lines 63-68 Link Here
63
!ELSE 
63
!ELSE 
64
CLEAN :
64
CLEAN :
65
!ENDIF 
65
!ENDIF 
66
	-@erase "$(INTDIR)\class_interface.obj"
66
	-@erase "$(INTDIR)\ExtRefJ_Interface.obj"
67
	-@erase "$(INTDIR)\ExtRefJ_Interface.obj"
67
	-@erase "$(INTDIR)\ExtRefJ_StatMethod.obj"
68
	-@erase "$(INTDIR)\ExtRefJ_StatMethod.obj"
68
	-@erase "$(INTDIR)\JVMInsSet.obj"
69
	-@erase "$(INTDIR)\JVMInsSet.obj"
Lines 74-80 Link Here
74
"$(OUTDIR)" :
75
"$(OUTDIR)" :
75
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
76
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
76
77
77
CPP_PROJ=/nologo /MT /W3 /GX /Zi /O2 /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "..\..\common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\BCIEngJ.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
78
CPP_PROJ=/nologo /MT /W3 /GX /Zi /O2 /I "..\..\Common" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "STATIC_BUILD" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
78
BSC32=bscmake.exe
79
BSC32=bscmake.exe
79
BSC32_FLAGS=/nologo /o"$(OUTDIR)\BCIEngJ.bsc" 
80
BSC32_FLAGS=/nologo /o"$(OUTDIR)\BCIEngJ.bsc" 
80
BSC32_SBRS= \
81
BSC32_SBRS= \
Lines 82-87 Link Here
82
LIB32=link.exe -lib
83
LIB32=link.exe -lib
83
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEngJ.lib" 
84
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEngJ.lib" 
84
LIB32_OBJS= \
85
LIB32_OBJS= \
86
	"$(INTDIR)\class_interface.obj" \
85
	"$(INTDIR)\ExtRefJ_Interface.obj" \
87
	"$(INTDIR)\ExtRefJ_Interface.obj" \
86
	"$(INTDIR)\ExtRefJ_StatMethod.obj" \
88
	"$(INTDIR)\ExtRefJ_StatMethod.obj" \
87
	"$(INTDIR)\JVMInsSet.obj" \
89
	"$(INTDIR)\JVMInsSet.obj" \
Lines 117-122 Link Here
117
!ELSE 
119
!ELSE 
118
CLEAN :
120
CLEAN :
119
!ENDIF 
121
!ENDIF 
122
	-@erase "$(INTDIR)\class_interface.obj"
123
	-@erase "$(INTDIR)\class_interface.sbr"
120
	-@erase "$(INTDIR)\ExtRefJ_Interface.obj"
124
	-@erase "$(INTDIR)\ExtRefJ_Interface.obj"
121
	-@erase "$(INTDIR)\ExtRefJ_Interface.sbr"
125
	-@erase "$(INTDIR)\ExtRefJ_Interface.sbr"
122
	-@erase "$(INTDIR)\ExtRefJ_StatMethod.obj"
126
	-@erase "$(INTDIR)\ExtRefJ_StatMethod.obj"
Lines 133-142 Link Here
133
"$(OUTDIR)" :
137
"$(OUTDIR)" :
134
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
138
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
135
139
136
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Common" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\BCIEngJ.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
140
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Common" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "STATIC_BUILD" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /GZ /c 
137
BSC32=bscmake.exe
141
BSC32=bscmake.exe
138
BSC32_FLAGS=/nologo /o"$(OUTDIR)\BCIEngJ.bsc" 
142
BSC32_FLAGS=/nologo /o"$(OUTDIR)\BCIEngJ.bsc" 
139
BSC32_SBRS= \
143
BSC32_SBRS= \
144
	"$(INTDIR)\class_interface.sbr" \
140
	"$(INTDIR)\ExtRefJ_Interface.sbr" \
145
	"$(INTDIR)\ExtRefJ_Interface.sbr" \
141
	"$(INTDIR)\ExtRefJ_StatMethod.sbr" \
146
	"$(INTDIR)\ExtRefJ_StatMethod.sbr" \
142
	"$(INTDIR)\JVMInsSet.sbr" \
147
	"$(INTDIR)\JVMInsSet.sbr" \
Lines 150-155 Link Here
150
LIB32=link.exe -lib
155
LIB32=link.exe -lib
151
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEngJ.lib" 
156
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEngJ.lib" 
152
LIB32_OBJS= \
157
LIB32_OBJS= \
158
	"$(INTDIR)\class_interface.obj" \
153
	"$(INTDIR)\ExtRefJ_Interface.obj" \
159
	"$(INTDIR)\ExtRefJ_Interface.obj" \
154
	"$(INTDIR)\ExtRefJ_StatMethod.obj" \
160
	"$(INTDIR)\ExtRefJ_StatMethod.obj" \
155
	"$(INTDIR)\JVMInsSet.obj" \
161
	"$(INTDIR)\JVMInsSet.obj" \
Lines 205-210 Link Here
205
211
206
212
207
!IF "$(CFG)" == "BCIEngJ - Win32 Release" || "$(CFG)" == "BCIEngJ - Win32 Debug"
213
!IF "$(CFG)" == "BCIEngJ - Win32 Release" || "$(CFG)" == "BCIEngJ - Win32 Debug"
214
SOURCE=.\class_interface.cpp
215
216
!IF  "$(CFG)" == "BCIEngJ - Win32 Release"
217
218
219
"$(INTDIR)\class_interface.obj" : $(SOURCE) "$(INTDIR)"
220
221
222
!ELSEIF  "$(CFG)" == "BCIEngJ - Win32 Debug"
223
224
225
"$(INTDIR)\class_interface.obj"	"$(INTDIR)\class_interface.sbr" : $(SOURCE) "$(INTDIR)"
226
227
228
!ENDIF 
229
208
SOURCE=.\ExtRefJ_Interface.cpp
230
SOURCE=.\ExtRefJ_Interface.cpp
209
231
210
!IF  "$(CFG)" == "BCIEngJ - Win32 Release"
232
!IF  "$(CFG)" == "BCIEngJ - Win32 Release"
(-)src-native/BCI/BCIEng/BCIEngJ/BCIEngJ.mak64 (-6 / +50 lines)
Lines 76-86 Link Here
76
"$(OUTDIR)" :
76
"$(OUTDIR)" :
77
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
77
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
78
78
79
CPP_PROJ=/nologo /MT /W3 /EHsc /Zi /O2 /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "..\..\common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\BCIEngJ.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
79
CPP_PROJ=/nologo /MT /W3 /EHsc /Zi /O2 /I "..\\" /I "..\..\common" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "STATIC_BUILD" /Fp"$(INTDIR)\BCIEngJ.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
80
80
81
LIB32=link.exe -lib
81
LIB32=link.exe -lib
82
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEngJ.lib" 
82
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEngJ.lib" 
83
LIB32_OBJS= \
83
LIB32_OBJS= \
84
	"$(INTDIR)\class_interface.obj" \
84
	"$(INTDIR)\ExtRefJ_Interface.obj" \
85
	"$(INTDIR)\ExtRefJ_Interface.obj" \
85
	"$(INTDIR)\ExtRefJ_StatMethod.obj" \
86
	"$(INTDIR)\ExtRefJ_StatMethod.obj" \
86
	"$(INTDIR)\JVMInsSet.obj" \
87
	"$(INTDIR)\JVMInsSet.obj" \
Lines 116-121 Link Here
116
!ELSE 
117
!ELSE 
117
CLEAN :
118
CLEAN :
118
!ENDIF 
119
!ENDIF 
120
	-@erase "$(INTDIR)\class_interface.obj"
121
	-@erase "$(INTDIR)\class_interface.sbr"
119
	-@erase "$(INTDIR)\ExtRefJ_Interface.obj"
122
	-@erase "$(INTDIR)\ExtRefJ_Interface.obj"
120
	-@erase "$(INTDIR)\ExtRefJ_Interface.sbr"
123
	-@erase "$(INTDIR)\ExtRefJ_Interface.sbr"
121
	-@erase "$(INTDIR)\ExtRefJ_StatMethod.obj"
124
	-@erase "$(INTDIR)\ExtRefJ_StatMethod.obj"
Lines 131-146 Link Here
131
"$(OUTDIR)" :
134
"$(OUTDIR)" :
132
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
135
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
133
136
134
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "..\..\Common" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\BCIEngJ.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
137
CPP_PROJ=/nologo /MTd /W3 /Gm /EHsc /Zi /Od /I "..\..\Common" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "STATIC_BUILD" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\BCIEngJ.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
135
LIB32=link.exe -lib
138
LIB32=link.exe -lib
136
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEngJ.lib" 
139
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEngJ.lib" 
137
LIB32_OBJS= \
140
LIB32_OBJS= \
141
	"$(INTDIR)\class_interface.obj" \
138
	"$(INTDIR)\ExtRefJ_Interface.obj" \
142
	"$(INTDIR)\ExtRefJ_Interface.obj" \
139
	"$(INTDIR)\ExtRefJ_StatMethod.obj" \
143
	"$(INTDIR)\ExtRefJ_StatMethod.obj" \
140
	"$(INTDIR)\JVMInsSet.obj" \
144
	"$(INTDIR)\JVMInsSet.obj" \
141
	"$(INTDIR)\ModuleJ.obj" \
145
	"$(INTDIR)\ModuleJ.obj" \
142
	"..\Debug\BCIEng.lib" \
146
	"..\Release\BCIEng.lib" \
143
	"..\..\JClass\Debug\JClassStat.lib"
147
	"..\..\JClass\Release\JClassStat.lib"
144
148
145
"$(OUTDIR)\BCIEngJ.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
149
"$(OUTDIR)\BCIEngJ.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
146
    $(LIB32) @<<
150
    $(LIB32) @<<
Lines 170-175 Link Here
170
!ELSE 
174
!ELSE 
171
CLEAN :
175
CLEAN :
172
!ENDIF 
176
!ENDIF 
177
	-@erase "$(INTDIR)\class_interface.obj"
173
	-@erase "$(INTDIR)\ExtRefJ_Interface.obj"
178
	-@erase "$(INTDIR)\ExtRefJ_Interface.obj"
174
	-@erase "$(INTDIR)\ExtRefJ_StatMethod.obj"
179
	-@erase "$(INTDIR)\ExtRefJ_StatMethod.obj"
175
	-@erase "$(INTDIR)\JVMInsSet.obj"
180
	-@erase "$(INTDIR)\JVMInsSet.obj"
Lines 181-191 Link Here
181
"$(OUTDIR)" :
186
"$(OUTDIR)" :
182
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
187
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
183
188
184
CPP_PROJ=/nologo /MT /W3 /EHsc /Zi /O2 /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "..\..\common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /Fp"$(INTDIR)\BCIEngJ.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
189
CPP_PROJ=/nologo /MT /W3 /EHsc /Zi /O2 /I "..\..\jclass" /I "..\..\..\sun" /I "..\..\common" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "STATIC_BUILD" /Fp"$(INTDIR)\BCIEngJ.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
185
190
186
LIB32=link.exe -lib
191
LIB32=link.exe -lib
187
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEngJ.lib" 
192
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEngJ.lib" 
188
LIB32_OBJS= \
193
LIB32_OBJS= \
194
	"$(INTDIR)\class_interface.obj" \
189
	"$(INTDIR)\ExtRefJ_Interface.obj" \
195
	"$(INTDIR)\ExtRefJ_Interface.obj" \
190
	"$(INTDIR)\ExtRefJ_StatMethod.obj" \
196
	"$(INTDIR)\ExtRefJ_StatMethod.obj" \
191
	"$(INTDIR)\JVMInsSet.obj" \
197
	"$(INTDIR)\JVMInsSet.obj" \
Lines 221-226 Link Here
221
!ELSE 
227
!ELSE 
222
CLEAN :
228
CLEAN :
223
!ENDIF 
229
!ENDIF 
230
	-@erase "$(INTDIR)\class_interface.obj"
224
	-@erase "$(INTDIR)\ExtRefJ_Interface.obj"
231
	-@erase "$(INTDIR)\ExtRefJ_Interface.obj"
225
	-@erase "$(INTDIR)\ExtRefJ_Interface.sbr"
232
	-@erase "$(INTDIR)\ExtRefJ_Interface.sbr"
226
	-@erase "$(INTDIR)\ExtRefJ_StatMethod.obj"
233
	-@erase "$(INTDIR)\ExtRefJ_StatMethod.obj"
Lines 236-245 Link Here
236
"$(OUTDIR)" :
243
"$(OUTDIR)" :
237
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
244
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
238
245
239
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "..\..\Common" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\BCIEngJ.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
246
CPP_PROJ=/nologo /MTd /W3 /Gm /EHsc /Zi /Od /I "..\..\Common" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "STATIC_BUILD" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\BCIEngJ.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
240
LIB32=link.exe -lib
247
LIB32=link.exe -lib
241
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEngJ.lib" 
248
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\BCIEngJ.lib" 
242
LIB32_OBJS= \
249
LIB32_OBJS= \
250
	"$(INTDIR)\class_interface.obj" \
243
	"$(INTDIR)\ExtRefJ_Interface.obj" \
251
	"$(INTDIR)\ExtRefJ_Interface.obj" \
244
	"$(INTDIR)\ExtRefJ_StatMethod.obj" \
252
	"$(INTDIR)\ExtRefJ_StatMethod.obj" \
245
	"$(INTDIR)\JVMInsSet.obj" \
253
	"$(INTDIR)\JVMInsSet.obj" \
Lines 285-291 Link Here
285
<<
293
<<
286
294
287
295
296
!IF "$(NO_EXTERNAL_DEPS)" != "1"
297
!IF EXISTS("BCIEngJ.dep")
298
!INCLUDE "BCIEngJ.dep"
299
!ELSE 
300
!MESSAGE Warning: cannot find "BCIEngJ.dep"
301
!ENDIF 
302
!ENDIF 
303
304
288
!IF "$(CFG)" == "BCIEngJ - IA64 Release" || "$(CFG)" == "BCIEngJ - IA64 Debug" || "$(CFG)" == "BCIEngJ - X64 Release" || "$(CFG)" == "BCIEngJ - X64 Debug"
305
!IF "$(CFG)" == "BCIEngJ - IA64 Release" || "$(CFG)" == "BCIEngJ - IA64 Debug" || "$(CFG)" == "BCIEngJ - X64 Release" || "$(CFG)" == "BCIEngJ - X64 Debug"
306
SOURCE=.\class_interface.cpp
307
308
!IF  "$(CFG)" == "BCIEngJ - IA64 Release"
309
310
311
"$(INTDIR)\class_interface.obj" : $(SOURCE) "$(INTDIR)"
312
313
314
!ELSEIF  "$(CFG)" == "BCIEngJ - IA64 Debug"
315
316
317
"$(INTDIR)\class_interface.obj"	"$(INTDIR)\class_interface.sbr" : $(SOURCE) "$(INTDIR)"
318
319
320
!ELSEIF  "$(CFG)" == "BCIEngJ - X64 Release"
321
322
323
"$(INTDIR)\class_interface.obj" : $(SOURCE) "$(INTDIR)"
324
325
326
!ELSEIF  "$(CFG)" == "BCIEngJ - X64 Debug"
327
328
329
"$(INTDIR)\class_interface.obj"	"$(INTDIR)\class_interface.sbr" : $(SOURCE) "$(INTDIR)"
330
331
!ENDIF 
332
289
SOURCE=.\ExtRefJ_Interface.cpp
333
SOURCE=.\ExtRefJ_Interface.cpp
290
334
291
!IF  "$(CFG)" == "BCIEngJ - IA64 Release"
335
!IF  "$(CFG)" == "BCIEngJ - IA64 Release"
(-)src-native/BCI/BCIEng/BCIEngJ/ModuleJ.cpp (-6 / +100 lines)
Lines 34-41 Link Here
34
#include <iostream>
34
#include <iostream>
35
#endif
35
#endif
36
36
37
static CInsSetJ InsSet;
37
#include <assert.h>
38
38
39
static CInsSetJ InsSet;
39
//==============================================================================
40
//==============================================================================
40
// CModuleJ implementation
41
// CModuleJ implementation
41
//------------------------------------------------------------------------------
42
//------------------------------------------------------------------------------
Lines 51-56 Link Here
51
	m_fDestroyClass = false;
52
	m_fDestroyClass = false;
52
	m_fAccessFlags = 0;
53
	m_fAccessFlags = 0;
53
	m_sourceFileNamesPopulated = false;
54
	m_sourceFileNamesPopulated = false;
55
	m_verificationContext = NULL;
56
	m_classHandler = NULL;
57
	m_methodContexts = NULL;
58
	m_use_stack_map_recalculation = false;
54
}
59
}
55
60
56
//------------------------------------------------------------------------------
61
//------------------------------------------------------------------------------
Lines 63-68 Link Here
63
	{
68
	{
64
		delete m_pClass;
69
		delete m_pClass;
65
	}
70
	}
71
	if (m_verificationContext != NULL) {
72
		free_verification_context(m_verificationContext);
73
		m_verificationContext = NULL; 
74
	}
75
	if (m_classHandler != NULL) {
76
		class_destroy_handler(m_classHandler);
77
		m_classHandler = NULL;
78
	}
79
	if (m_methodContexts != NULL) {
80
		free(m_methodContexts);
81
		m_methodContexts = NULL;
82
	}
66
}
83
}
67
84
68
//------------------------------------------------------------------------------
85
//------------------------------------------------------------------------------
Lines 83-88 Link Here
83
	m_fDestroyClass = true;
100
	m_fDestroyClass = true;
84
	FileStreamIn.Close();
101
	FileStreamIn.Close();
85
	Verify();
102
	Verify();
103
	
86
}
104
}
87
105
88
//------------------------------------------------------------------------------
106
//------------------------------------------------------------------------------
Lines 184-190 Link Here
184
}
202
}
185
203
186
//------------------------------------------------------------------------------
204
//------------------------------------------------------------------------------
187
void	
205
int	
188
CModuleJ::Parse()
206
CModuleJ::Parse()
189
{
207
{
190
	CJMethods* pMethods	= m_pClass->GetMethods();
208
	CJMethods* pMethods	= m_pClass->GetMethods();
Lines 227-238 Link Here
227
		}
245
		}
228
		m_pMethods->push_back(pMtd);
246
		m_pMethods->push_back(pMtd);
229
	}
247
	}
248
249
	vf_Result status;
250
	int ind;
251
	if (GetClassBuilder().GetMajorVersion() >= 50 
252
		&& IsStackMapCalculationUsed()) {
253
		m_classHandler = get_class_handler_from_builder(this);
254
		assert(m_classHandler);
255
		m_verificationContext = allocate_verification_context(m_classHandler);
256
		assert(m_verificationContext);
257
		m_methodContexts = (method_handler *)malloc(m_pMethods->size() * sizeof(method_handler));
258
		assert(m_methodContexts);
259
		memset(m_methodContexts, 0, m_pMethods->size() * sizeof(method_handler));
260
		//fprintf(stderr, "class : %s is java6 compiled\n", m_strName.c_str());
261
	}
230
	
262
	
231
	CMethods::iterator iterm;
263
	CMethods::iterator iterm;
232
	for(iterm =  m_pMethods->begin(); iterm < m_pMethods->end(); iterm++)
264
	for(iterm =  m_pMethods->begin(), ind = 0; iterm < m_pMethods->end(); iterm++, ind++)
233
	{
265
	{
234
		(*iterm)->Parse();
266
		(*iterm)->Parse();
267
		if (GetClassBuilder().GetMajorVersion() >= 50
268
			&& IsStackMapCalculationUsed()) {
269
			m_methodContexts[ind] = get_method_handler_for_cmethod(*iterm);
270
			assert(m_methodContexts[ind]);
271
			status = init_verification_context_for_method(m_methodContexts[ind], m_verificationContext);
272
273
			if (status != VF_OK) {
274
				//fprintf(stderr, "class was skiped: %s\n", m_strName.c_str());
275
				return (1); /*skip*/
276
			}
277
			//fprintf(stderr, "class was instrumented: %s\n", m_strName.c_str());
278
			((CMethodJ *)(*iterm))->SetMethodHandler(m_methodContexts[ind]);
279
			
280
		}
235
	}
281
	}
282
	return (0);
236
}
283
}
237
284
238
//------------------------------------------------------------------------------
285
//------------------------------------------------------------------------------
Lines 385-392 Link Here
385
	m_pMtdExTable->Emit();
432
	m_pMtdExTable->Emit();
386
433
387
	//-------
434
	//-------
388
	// Loop over instructions and patch the local variable info table
435
	// Loop over instructions and patch the local variable info table, 
436
    // local variable type table (Java 5.0) and stack map table (Java 6.0)
389
	//
437
	//
438
	
439
	
390
440
391
	// Local variable table LVT
441
	// Local variable table LVT
392
	CLocalVariableTableAttribute* pLclAttr = m_pCodeAttr->GetLocalVariables();
442
	CLocalVariableTableAttribute* pLclAttr = m_pCodeAttr->GetLocalVariables();
Lines 403-408 Link Here
403
	CLocalVariableTypeTable  LclTypeTableSav;
453
	CLocalVariableTypeTable  LclTypeTableSav;
404
	CLocalVariableTypeTable::iterator itrLclType, itrLclTypeSav; // LVTT Iterator
454
	CLocalVariableTypeTable::iterator itrLclType, itrLclTypeSav; // LVTT Iterator
405
455
456
    // The smtNull variable is for reference initialization in case the method does not have
457
    // a Stack Map Table attribute
458
    CStackMapTable smtNull;
459
    CStackMapTableAttribute* pSmtAttr = m_pCodeAttr->GetStackMaps();
460
    CStackMapTable& StackMapTable = pSmtAttr?pSmtAttr->GetStackMapTable():smtNull;
461
    CStackMapTable::iterator itrStackMapFrame = StackMapTable.begin();
462
406
	CInsBlocks::iterator iterBlocks;
463
	CInsBlocks::iterator iterBlocks;
407
	IP_t ip = 0;
464
	IP_t ip = 0;
408
465
Lines 458-463 Link Here
458
					}
515
					}
459
				}
516
				}
460
			}
517
			}
518
			
519
            // Scan for a relevant entry in the Stack Map Table and fix it
520
            while (itrStackMapFrame != StackMapTable.end()
521
                && (*itrStackMapFrame)->GetByteCodeOffset() < ipOrig)
522
            {
523
                ++itrStackMapFrame;
524
            }
525
            if (itrStackMapFrame != StackMapTable.end()
526
                && (*itrStackMapFrame)->GetByteCodeOffset() == ipOrig)
527
            {
528
                (*itrStackMapFrame)->SetByteCodeOffset(ip);
529
            }
461
530
462
			// Advance ip
531
			// Advance ip
463
			ip += (*iterIns)->GetSize(ip);
532
			ip += (*iterIns)->GetSize(ip);
Lines 503-513 Link Here
503
			}
572
			}
504
		}
573
		}
505
	}
574
	}
575
	// Replace the method body
576
	m_pCodeAttr->SetCode(m_pBody->GetCodeSize(), m_pBody->GiveAvayCode());
506
577
578
	// Calculate new stack depth
507
	CalcStackDepth();
579
	CalcStackDepth();
508
580
509
	// Replace the method body
581
	if (((CModuleJ *)GetModule())->GetClassBuilder().GetMajorVersion() >= 50 
510
	m_pCodeAttr->SetCode(m_pBody->GetCodeSize(), m_pBody->GiveAvayCode());
582
		&& ((CModuleJ *)GetModule())->IsStackMapCalculationUsed()) {
583
	
584
		u1 *tbl;
585
		vf_Result status;
586
		status = recompute_stackmaptable((uint8 **)&tbl, m_methodHandler, ((CModuleJ *)GetModule())->GetVerificationContext());
587
		if (status != VF_OK) {
588
			throw CModuleException(CModuleException::X_REASON_VERIFICATION_FAILED, "stack map recalcualtion failed");
589
		}
590
		else {
591
			//CStackMapTable smt (tbl);
592
			CStackMapTableAttribute* smta = GetCodeAttribute()->GetOrCreateStackMaps();
593
			if (tbl != NULL) {
594
				smta->RereadFromBuffer(tbl); //skiping name
595
				smta->GetStackMapTable().AdjustOffsetDeltas();
596
			}
597
		}
598
	}
599
    // Final Stack Map Table handling: adjust offset deltas
600
    //StackMapTable.AdjustOffsetDeltas();
601
602
    
603
511
604
512
}
605
}
513
606
Lines 628-633 Link Here
628
				}
721
				}
629
			}
722
			}
630
		}
723
		}
724
		
631
		CJException jex = CJException(uType, ipStart, ipRealEnd, ipHandler); 
725
		CJException jex = CJException(uType, ipStart, ipRealEnd, ipHandler); 
632
		extblj.push_back(jex);
726
		extblj.push_back(jex);
633
	}
727
	}
(-)src-native/BCI/BCIEng/BCIEngJ/Makefile.unix (-1 / +4 lines)
Lines 14-22 Link Here
14
include ../../makefile.include
14
include ../../makefile.include
15
15
16
CPPFLAGS += -I../../Common -I.. -I../../JClass
16
CPPFLAGS += -I../../Common -I.. -I../../JClass
17
CPPFLAGS += -I../../../../../org.apache.harmony_vmcore_verifier/src/include -I../../../../../org.apache.harmony_vmcore_verifier/src/vmcore/include -I../../../../../org.apache.harmony_vmcore_verifier/src/vmcore/src/verifier-3363/x_verifier 
18
CPPFLAGS += -DSTATIC_BUILD -DLINUX -DPLATFORM_POSIX
17
CFLAGS += $(PIC_FLAG)
19
CFLAGS += $(PIC_FLAG)
18
20
19
OBJS = 	ExtRefJ_Interface.o \
21
OBJS = 	class_interface.o \
22
	ExtRefJ_Interface.o \
20
	ExtRefJ_StatMethod.o \
23
	ExtRefJ_StatMethod.o \
21
	JVMInsSet.o \
24
	JVMInsSet.o \
22
	ModuleJ.o
25
	ModuleJ.o
(-)src-native/BCI/BCIEng/BCIEngJ/ModuleJ.h (-2 / +15 lines)
Lines 28-33 Link Here
28
#pragma warning(disable:4786)
28
#pragma warning(disable:4786)
29
#endif
29
#endif
30
30
31
#include "class_inerface_int.h"
31
#include "Module.h"
32
#include "Module.h"
32
#include "JClassBuilder.h"
33
#include "JClassBuilder.h"
33
34
Lines 57-75 Link Here
57
	virtual void	Open(CJClassBuilder* io_pClass, bool i_fDestroyClass = false);
58
	virtual void	Open(CJClassBuilder* io_pClass, bool i_fDestroyClass = false);
58
	virtual void	AddExtRef(CExtRef& i_ExtRef);
59
	virtual void	AddExtRef(CExtRef& i_ExtRef);
59
	virtual void	AddStringAttrib(CSTR i_szName, CSTR i_szValue);
60
	virtual void	AddStringAttrib(CSTR i_szName, CSTR i_szValue);
60
	virtual void	Parse();
61
	virtual int	Parse();
61
	virtual void	Emit();
62
	virtual void	Emit();
62
63
63
	void	Emit(CJStream& i_jstream);	// Java specific emission
64
	void	Emit(CJStream& i_jstream);	// Java specific emission
64
	CJClassFile&	GetClass();
65
	CJClassFile&	GetClass();
65
	CJClassBuilder& GetClassBuilder();
66
	CJClassBuilder& GetClassBuilder();
67
	class_handler GetClassHandler() {return m_classHandler;}
68
	verification_context GetVerificationContext(){return m_verificationContext;}
66
69
67
	virtual const vector<string>& GetSourceFileNames();
70
	virtual const vector<string>& GetSourceFileNames();
68
71
69
	// Module modification methods
72
	// Module modification methods
70
	CCPFieldrefInfo*	CreateFieldRef(u2 i_u2AccFlags, CSTR i_szName, CJavaType i_jtype);
73
	CCPFieldrefInfo*	CreateFieldRef(u2 i_u2AccFlags, CSTR i_szName, CJavaType i_jtype);
71
	CMethodJ*			CreateMethod(u2 i_u2AccFlags, CSTR i_szName, CSTR i_szSignature);
74
	CMethodJ*			CreateMethod(u2 i_u2AccFlags, CSTR i_szName, CSTR i_szSignature);
72
75
	bool IsStackMapCalculationUsed() const {return m_use_stack_map_recalculation;}
76
	void UseStackMapCalculation(bool a_use_stack_map_recalculation) {m_use_stack_map_recalculation = a_use_stack_map_recalculation;}
73
protected:
77
protected:
74
78
75
private:
79
private:
Lines 85-90 Link Here
85
	// Storage in support of GetSourceFileNames:
89
	// Storage in support of GetSourceFileNames:
86
	vector<string>	m_sourceFileNames;
90
	vector<string>	m_sourceFileNames;
87
	bool			m_sourceFileNamesPopulated;
91
	bool			m_sourceFileNamesPopulated;
92
	verification_context m_verificationContext; /*verifier context for support java 6.0 and latter*/
93
	class_handler m_classHandler; /* class descriptor used for verification needs(recalculations) introduced in java 6.0*/
94
	method_handler *m_methodContexts; /*collections of method handlers*/
95
	bool m_use_stack_map_recalculation;
88
};
96
};
89
97
90
//==============================================================================
98
//==============================================================================
Lines 100-105 Link Here
100
		m_strSignature = i_szSignature;
108
		m_strSignature = i_szSignature;
101
		m_pCodeAttr = i_pCodeAttr;
109
		m_pCodeAttr = i_pCodeAttr;
102
		m_u2AccessFlags = i_u2AccessFlags;
110
		m_u2AccessFlags = i_u2AccessFlags;
111
		m_methodHandler = NULL;
112
		
103
113
104
		// Set the "hasThis" attribute, which is accessible to all CMethod users
114
		// Set the "hasThis" attribute, which is accessible to all CMethod users
105
		SetHasThis(!(m_u2AccessFlags & ACC_STATIC));
115
		SetHasThis(!(m_u2AccessFlags & ACC_STATIC));
Lines 110-115 Link Here
110
	CSTR	GetSignature() const {return m_strSignature.c_str();}
120
	CSTR	GetSignature() const {return m_strSignature.c_str();}
111
	bool IsAbstract() { return ((m_u2AccessFlags & ACC_ABSTRACT) != 0); };
121
	bool IsAbstract() { return ((m_u2AccessFlags & ACC_ABSTRACT) != 0); };
112
    u2 GetAccessFlags() const { return m_u2AccessFlags; }
122
    u2 GetAccessFlags() const { return m_u2AccessFlags; }
123
	void SetMethodHandler(method_handler i_methodHandler) {m_methodHandler = i_methodHandler;}
124
	method_handler GetMethodHandler() {return m_methodHandler;}
113
125
114
	virtual void Parse();
126
	virtual void Parse();
115
	virtual void Emit();
127
	virtual void Emit();
Lines 121-126 Link Here
121
	CCodeAttribute*		m_pCodeAttr;		// Code attribute from CJClassFile
133
	CCodeAttribute*		m_pCodeAttr;		// Code attribute from CJClassFile
122
	u2					m_u2AccessFlags;	// Method access flags
134
	u2					m_u2AccessFlags;	// Method access flags
123
	IP_t				m_origCodeLength;	// Saved code length from Parse to Emit
135
	IP_t				m_origCodeLength;	// Saved code length from Parse to Emit
136
	method_handler		m_methodHandler;
124
};
137
};
125
138
126
139
(-)src-native/BCI/BCIEng/BCIEngJ/BCIEngJ.dep (+50 lines)
Lines 12-18 Link Here
12
12
13
# Microsoft Developer Studio Generated Dependency File, included by BCIEngJ.mak
13
# Microsoft Developer Studio Generated Dependency File, included by BCIEngJ.mak
14
14
15
.\class_interface.cpp : \
16
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\common.h"\
17
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\hycomp.h"\
18
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\platform_types.h"\
19
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include\verifier.h"\
20
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_class_interface.h"\
21
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_verifier.h"\
22
	"..\..\common\commondef.h"\
23
	"..\..\common\javadef.h"\
24
	"..\..\Common\JavaHelpers.h"\
25
	"..\..\JClass\JBaseStream.h"\
26
	"..\..\JClass\JClassBuilder.h"\
27
	"..\..\JClass\JClassFile.h"\
28
	"..\..\JClass\JMemStream.h"\
29
	"..\..\JClass\JStream.h"\
30
	"..\BCIEng.h"\
31
	"..\InsSet.h"\
32
	"..\Module.h"\
33
	".\class_inerface_int.h"\
34
	".\ModuleJ.h"\
35
	
36
15
.\ExtRefJ_Interface.cpp : \
37
.\ExtRefJ_Interface.cpp : \
38
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\common.h"\
39
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\hycomp.h"\
40
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\platform_types.h"\
41
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include\verifier.h"\
42
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_class_interface.h"\
43
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_verifier.h"\
16
	"..\..\common\commondef.h"\
44
	"..\..\common\commondef.h"\
17
	"..\..\common\javadef.h"\
45
	"..\..\common\javadef.h"\
18
	"..\..\Common\JavaHelpers.h"\
46
	"..\..\Common\JavaHelpers.h"\
Lines 22-32 Link Here
22
	"..\..\JClass\JStream.h"\
50
	"..\..\JClass\JStream.h"\
23
	"..\InsSet.h"\
51
	"..\InsSet.h"\
24
	"..\Module.h"\
52
	"..\Module.h"\
53
	".\class_inerface_int.h"\
25
	".\ExtRefJ_Interface.h"\
54
	".\ExtRefJ_Interface.h"\
26
	".\ModuleJ.h"\
55
	".\ModuleJ.h"\
27
	
56
	
28
57
29
.\ExtRefJ_StatMethod.cpp : \
58
.\ExtRefJ_StatMethod.cpp : \
59
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\common.h"\
60
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\hycomp.h"\
61
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\platform_types.h"\
62
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include\verifier.h"\
63
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_class_interface.h"\
64
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_verifier.h"\
30
	"..\..\common\commondef.h"\
65
	"..\..\common\commondef.h"\
31
	"..\..\common\javadef.h"\
66
	"..\..\common\javadef.h"\
32
	"..\..\Common\JavaHelpers.h"\
67
	"..\..\Common\JavaHelpers.h"\
Lines 36-46 Link Here
36
	"..\..\JClass\JStream.h"\
71
	"..\..\JClass\JStream.h"\
37
	"..\InsSet.h"\
72
	"..\InsSet.h"\
38
	"..\Module.h"\
73
	"..\Module.h"\
74
	".\class_inerface_int.h"\
39
	".\ExtRefJ_StatMethod.h"\
75
	".\ExtRefJ_StatMethod.h"\
40
	".\ModuleJ.h"\
76
	".\ModuleJ.h"\
41
	
77
	
42
78
43
.\JVMInsSet.cpp : \
79
.\JVMInsSet.cpp : \
80
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\common.h"\
81
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\hycomp.h"\
82
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\platform_types.h"\
83
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include\verifier.h"\
84
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_class_interface.h"\
85
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_verifier.h"\
44
	"..\..\common\commondef.h"\
86
	"..\..\common\commondef.h"\
45
	"..\..\common\javadef.h"\
87
	"..\..\common\javadef.h"\
46
	"..\..\Common\JavaHelpers.h"\
88
	"..\..\Common\JavaHelpers.h"\
Lines 50-61 Link Here
50
	"..\..\JClass\JStream.h"\
92
	"..\..\JClass\JStream.h"\
51
	"..\InsSet.h"\
93
	"..\InsSet.h"\
52
	"..\Module.h"\
94
	"..\Module.h"\
95
	".\class_inerface_int.h"\
53
	".\jvmins.def"\
96
	".\jvmins.def"\
54
	".\JVMInsSet.h"\
97
	".\JVMInsSet.h"\
55
	".\ModuleJ.h"\
98
	".\ModuleJ.h"\
56
	
99
	
57
100
58
.\ModuleJ.cpp : \
101
.\ModuleJ.cpp : \
102
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\common.h"\
103
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\hycomp.h"\
104
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\platform_types.h"\
105
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include\verifier.h"\
106
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_class_interface.h"\
107
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_verifier.h"\
59
	"..\..\common\commondef.h"\
108
	"..\..\common\commondef.h"\
60
	"..\..\common\javadef.h"\
109
	"..\..\common\javadef.h"\
61
	"..\..\Common\JavaHelpers.h"\
110
	"..\..\Common\JavaHelpers.h"\
Lines 66-71 Link Here
66
	"..\..\JClass\JStream.h"\
115
	"..\..\JClass\JStream.h"\
67
	"..\InsSet.h"\
116
	"..\InsSet.h"\
68
	"..\Module.h"\
117
	"..\Module.h"\
118
	".\class_inerface_int.h"\
69
	".\JVMInsSet.h"\
119
	".\JVMInsSet.h"\
70
	".\ModuleJ.h"\
120
	".\ModuleJ.h"\
71
	
121
	
(-)src-native/BCI/BCIEng/BCIEngJ/BCIEngJ.dsp (-2 / +15 lines)
Lines 41-47 Link Here
41
# PROP Intermediate_Dir "Release"
41
# PROP Intermediate_Dir "Release"
42
# PROP Target_Dir ""
42
# PROP Target_Dir ""
43
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
43
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
44
# ADD CPP /nologo /MT /W3 /GX /Zi /O2 /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "..\..\common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
44
# ADD CPP /nologo /MT /W3 /GX /Zi /O2 /I "..\..\Common" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "STATIC_BUILD" /YX /FD /c
45
# ADD BASE RSC /l 0x409 /d "NDEBUG"
45
# ADD BASE RSC /l 0x409 /d "NDEBUG"
46
# ADD RSC /l 0x409 /d "NDEBUG"
46
# ADD RSC /l 0x409 /d "NDEBUG"
47
BSC32=bscmake.exe
47
BSC32=bscmake.exe
Lines 64-70 Link Here
64
# PROP Intermediate_Dir "Debug"
64
# PROP Intermediate_Dir "Debug"
65
# PROP Target_Dir ""
65
# PROP Target_Dir ""
66
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
66
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
67
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Common" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FR /YX /FD /GZ /c
67
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\Common" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /I "..\\" /I "..\..\jclass" /I "..\..\..\sun" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "STATIC_BUILD" /FR /FD /GZ /c
68
# SUBTRACT CPP /YX
68
# ADD BASE RSC /l 0x409 /d "_DEBUG"
69
# ADD BASE RSC /l 0x409 /d "_DEBUG"
69
# ADD RSC /l 0x409 /d "_DEBUG"
70
# ADD RSC /l 0x409 /d "_DEBUG"
70
BSC32=bscmake.exe
71
BSC32=bscmake.exe
Lines 85-90 Link Here
85
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
86
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
86
# Begin Source File
87
# Begin Source File
87
88
89
SOURCE=.\class_interface.cpp
90
# End Source File
91
# Begin Source File
92
88
SOURCE=.\ExtRefJ_Interface.cpp
93
SOURCE=.\ExtRefJ_Interface.cpp
89
# End Source File
94
# End Source File
90
# Begin Source File
95
# Begin Source File
Lines 93-98 Link Here
93
# End Source File
98
# End Source File
94
# Begin Source File
99
# Begin Source File
95
100
101
SOURCE=..\InsSet.cpp
102
# End Source File
103
# Begin Source File
104
96
SOURCE=.\JVMInsSet.cpp
105
SOURCE=.\JVMInsSet.cpp
97
# End Source File
106
# End Source File
98
# Begin Source File
107
# Begin Source File
Lines 105-110 Link Here
105
# PROP Default_Filter "h;hpp;hxx;hm;inl"
114
# PROP Default_Filter "h;hpp;hxx;hm;inl"
106
# Begin Source File
115
# Begin Source File
107
116
117
SOURCE=.\class_inerface_int.h
118
# End Source File
119
# Begin Source File
120
108
SOURCE=.\ExtRefJ_Interface.h
121
SOURCE=.\ExtRefJ_Interface.h
109
# End Source File
122
# End Source File
110
# Begin Source File
123
# Begin Source File
(-)src-native/BCI/JDump/JDump.dep (-2 / +2 lines)
Lines 22-29 Link Here
22
	"..\BCIEng\InsSet.h"\
22
	"..\BCIEng\InsSet.h"\
23
	"..\BCIEng\Module.h"\
23
	"..\BCIEng\Module.h"\
24
	"..\Common\Command.h"\
24
	"..\Common\Command.h"\
25
	"..\common\commondef.h"\
25
	"..\Common\commondef.h"\
26
	"..\JClass\JavaDef.h"\
26
	"..\Common\JavaDef.h"\
27
	"..\JClass\JBaseStream.h"\
27
	"..\JClass\JBaseStream.h"\
28
	"..\JClass\JClassFile.h"\
28
	"..\JClass\JClassFile.h"\
29
	"..\JClass\JFileStream.h"\
29
	"..\JClass\JFileStream.h"\
(-)src-native/BCI/JDump/JDump.mak (-2 / +2 lines)
Lines 117-123 Link Here
117
<<
117
<<
118
118
119
LINK32=link.exe
119
LINK32=link.exe
120
LINK32_FLAGS=kernel32.lib user32.lib JclassStat.lib ..\bcieng\release\bcieng.lib ..\bcieng\bciengj\release\bciengj.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\JDump.pdb" /machine:I386 /out:"$(OUTDIR)\JDump.exe" /libpath:"..\JClass\Release" 
120
LINK32_FLAGS=kernel32.lib user32.lib JclassStat.lib ..\bcieng\release\bcieng.lib ..\bcieng\bciengj\release\bciengj.lib verifier.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\JDump.pdb" /machine:I386 /out:"$(OUTDIR)\JDump.exe" /libpath:"..\JClass\Release" /libpath:"..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\IA-32" 
121
LINK32_OBJS= \
121
LINK32_OBJS= \
122
	"$(INTDIR)\Command.obj" \
122
	"$(INTDIR)\Command.obj" \
123
	"$(INTDIR)\JDump.obj" \
123
	"$(INTDIR)\JDump.obj" \
Lines 212-218 Link Here
212
<<
212
<<
213
213
214
LINK32=link.exe
214
LINK32=link.exe
215
LINK32_FLAGS=kernel32.lib JClassStat.lib ..\bcieng\debug\bcieng.lib ..\bcieng\bciengj\debug\bciengj.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\JDump.pdb" /map:"$(INTDIR)\JDump.map" /debug /machine:I386 /out:"$(OUTDIR)\JDump.exe" /libpath:"..\JClass\debug\\" /fixed:no 
215
LINK32_FLAGS=kernel32.lib JClassStat.lib ..\bcieng\debug\bcieng.lib ..\bcieng\bciengj\debug\bciengj.lib verifier.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\JDump.pdb" /map:"$(INTDIR)\JDump.map" /debug /machine:I386 /out:"$(OUTDIR)\JDump.exe" /libpath:"..\JClass\debug" /libpath:"..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\IA-32" /fixed:no 
216
LINK32_OBJS= \
216
LINK32_OBJS= \
217
	"$(INTDIR)\Command.obj" \
217
	"$(INTDIR)\Command.obj" \
218
	"$(INTDIR)\JDump.obj" \
218
	"$(INTDIR)\JDump.obj" \
(-)src-native/BCI/JDump/JDump.dsp (-2 / +4 lines)
Lines 23-28 Link Here
23
23
24
# Begin Project
24
# Begin Project
25
# PROP AllowPerConfigDependencies 0
25
# PROP AllowPerConfigDependencies 0
26
# PROP Scc_ProjName ""
27
# PROP Scc_LocalPath ""
26
CPP=cl.exe
28
CPP=cl.exe
27
RSC=rc.exe
29
RSC=rc.exe
28
30
Lines 48-54 Link Here
48
# ADD BSC32 /nologo
50
# ADD BSC32 /nologo
49
LINK32=link.exe
51
LINK32=link.exe
50
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
52
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
51
# ADD LINK32 kernel32.lib user32.lib JclassStat.lib ..\bcieng\release\bcieng.lib ..\bcieng\bciengj\release\bciengj.lib /nologo /subsystem:console /machine:I386 /libpath:"..\JClass\Release"
53
# ADD LINK32 kernel32.lib user32.lib JclassStat.lib ..\bcieng\release\bcieng.lib ..\bcieng\bciengj\release\bciengj.lib verifier.lib /nologo /subsystem:console /machine:I386 /libpath:"..\JClass\Release" /libpath:"..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\IA-32"
52
54
53
!ELSEIF  "$(CFG)" == "JDump - Win32 Debug"
55
!ELSEIF  "$(CFG)" == "JDump - Win32 Debug"
54
56
Lines 72-78 Link Here
72
# ADD BSC32 /nologo
74
# ADD BSC32 /nologo
73
LINK32=link.exe
75
LINK32=link.exe
74
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
76
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
75
# ADD LINK32 kernel32.lib JClassStat.lib ..\bcieng\debug\bcieng.lib ..\bcieng\bciengj\debug\bciengj.lib /nologo /subsystem:console /incremental:no /map /debug /machine:I386 /libpath:"..\JClass\debug\\" /fixed:no
77
# ADD LINK32 kernel32.lib JClassStat.lib ..\bcieng\debug\bcieng.lib ..\bcieng\bciengj\debug\bciengj.lib verifier.lib /nologo /subsystem:console /incremental:no /map /debug /machine:I386 /libpath:"..\JClass\debug" /libpath:"..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\IA-32" /fixed:no
76
# SUBTRACT LINK32 /pdb:none
78
# SUBTRACT LINK32 /pdb:none
77
79
78
!ENDIF 
80
!ENDIF 
(-)src-native/BCI/BCIEng/ProbeUnitTests/ProbeUnitTests.dep (-2 / +21 lines)
Lines 2-14 Link Here
2
# Hand-edited by apratt to remove absolute paths and other silliness
2
# Hand-edited by apratt to remove absolute paths and other silliness
3
3
4
..\BCIEngProbe\BCIEngProbe.cpp : \
4
..\BCIEngProbe\BCIEngProbe.cpp : \
5
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\common.h"\
6
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\hycomp.h"\
7
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\platform_types.h"\
8
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include\verifier.h"\
9
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_class_interface.h"\
10
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_verifier.h"\
5
	"..\..\common\commondef.h"\
11
	"..\..\common\commondef.h"\
6
	"..\..\JClass\JavaDef.h"\
12
	"..\..\common\javadef.h"\
13
	"..\..\Common\JavaHelpers.h"\
7
	"..\..\JClass\JBaseStream.h"\
14
	"..\..\JClass\JBaseStream.h"\
15
	"..\..\JClass\JClassBuilder.h"\
8
	"..\..\JClass\JClassFile.h"\
16
	"..\..\JClass\JClassFile.h"\
9
	"..\..\JClass\JMemStream.h"\
17
	"..\..\JClass\JMemStream.h"\
10
	"..\..\JClass\JStream.h"\
18
	"..\..\JClass\JStream.h"\
11
	"..\BCIEng.h"\
19
	"..\BCIEng.h"\
20
	"..\bcienginterface.h"\
21
	"..\BCIEngJ\class_inerface_int.h"\
12
	"..\BCIEngJ\ExtRefJ_StatMethod.h"\
22
	"..\BCIEngJ\ExtRefJ_StatMethod.h"\
13
	"..\BCIEngJ\JVMInsSet.h"\
23
	"..\BCIEngJ\JVMInsSet.h"\
14
	"..\BCIEngJ\ModuleJ.h"\
24
	"..\BCIEngJ\ModuleJ.h"\
Lines 18-29 Link Here
18
	
28
	
19
29
20
.\ProbeUnitTests.cpp : \
30
.\ProbeUnitTests.cpp : \
31
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\common.h"\
32
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\hycomp.h"\
33
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\platform_types.h"\
34
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include\verifier.h"\
35
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_class_interface.h"\
36
	"..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_verifier.h"\
21
	"..\..\common\commondef.h"\
37
	"..\..\common\commondef.h"\
22
	"..\..\JClass\JavaDef.h"\
38
	"..\..\common\javadef.h"\
39
	"..\..\Common\JavaHelpers.h"\
23
	"..\..\JClass\JBaseStream.h"\
40
	"..\..\JClass\JBaseStream.h"\
41
	"..\..\JClass\JClassBuilder.h"\
24
	"..\..\JClass\JClassFile.h"\
42
	"..\..\JClass\JClassFile.h"\
25
	"..\..\JClass\JStream.h"\
43
	"..\..\JClass\JStream.h"\
26
	"..\BCIEng.h"\
44
	"..\BCIEng.h"\
45
	"..\BCIEngJ\class_inerface_int.h"\
27
	"..\BCIEngJ\ModuleJ.h"\
46
	"..\BCIEngJ\ModuleJ.h"\
28
	"..\BCIEngProbe\BCIEngProbe.h"\
47
	"..\BCIEngProbe\BCIEngProbe.h"\
29
	"..\InsSet.h"\
48
	"..\InsSet.h"\
(-)src-native/BCI/BCIEng/ProbeUnitTests/ProbeUnitTests.mak (-6 / +6 lines)
Lines 62-68 Link Here
62
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
62
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
63
63
64
CPP=cl.exe
64
CPP=cl.exe
65
CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\ProbeUnitTests.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
65
CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /Fp"$(INTDIR)\ProbeUnitTests.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
66
66
67
.c{$(INTDIR)}.obj::
67
.c{$(INTDIR)}.obj::
68
   $(CPP) @<<
68
   $(CPP) @<<
Lines 100-106 Link Here
100
BSC32_SBRS= \
100
BSC32_SBRS= \
101
	
101
	
102
LINK32=link.exe
102
LINK32=link.exe
103
LINK32_FLAGS=kernel32.lib ..\..\jclass\release\jclassstat.lib ..\release\bcieng.lib ..\bciengj\release\bciengj.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\ProbeUnitTests.pdb" /machine:I386 /out:"$(OUTDIR)\ProbeUnitTests.exe" 
103
LINK32_FLAGS=verifier.lib kernel32.lib ..\..\jclass\release\jclassstat.lib ..\release\bcieng.lib ..\bciengj\release\bciengj.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\ProbeUnitTests.pdb" /machine:I386 /out:"$(OUTDIR)\ProbeUnitTests.exe" /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\IA-32" 
104
LINK32_OBJS= \
104
LINK32_OBJS= \
105
	"$(INTDIR)\BCIEngProbe.obj" \
105
	"$(INTDIR)\BCIEngProbe.obj" \
106
	"$(INTDIR)\ProbeUnitTests.obj" \
106
	"$(INTDIR)\ProbeUnitTests.obj" \
Lines 141-147 Link Here
141
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
141
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
142
142
143
CPP=cl.exe
143
CPP=cl.exe
144
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeUnitTests.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
144
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeUnitTests.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
145
145
146
.c{$(INTDIR)}.obj::
146
.c{$(INTDIR)}.obj::
147
   $(CPP) @<<
147
   $(CPP) @<<
Lines 187-193 Link Here
187
<<
187
<<
188
188
189
LINK32=link.exe
189
LINK32=link.exe
190
LINK32_FLAGS=kernel32.lib ..\..\jclass\debug\jclassstat.lib ..\debug\bcieng.lib ..\bciengj\debug\bciengj.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\ProbeUnitTests.pdb" /debug /machine:I386 /out:"$(OUTDIR)\ProbeUnitTests.exe" /pdbtype:sept 
190
LINK32_FLAGS=verifier.lib kernel32.lib ..\..\jclass\debug\jclassstat.lib ..\debug\bcieng.lib ..\bciengj\debug\bciengj.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\ProbeUnitTests.pdb" /debug /machine:I386 /out:"$(OUTDIR)\ProbeUnitTests.exe" /pdbtype:sept /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\IA-32" 
191
LINK32_OBJS= \
191
LINK32_OBJS= \
192
	"$(INTDIR)\BCIEngProbe.obj" \
192
	"$(INTDIR)\BCIEngProbe.obj" \
193
	"$(INTDIR)\ProbeUnitTests.obj" \
193
	"$(INTDIR)\ProbeUnitTests.obj" \
Lines 249-255 Link Here
249
249
250
!IF  "$(CFG)" == "ProbeUnitTests - Win32 Release"
250
!IF  "$(CFG)" == "ProbeUnitTests - Win32 Release"
251
251
252
CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\ProbeUnitTests.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
252
CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /Fp"$(INTDIR)\ProbeUnitTests.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
253
253
254
"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\ProbeUnitTests.pch" : $(SOURCE) "$(INTDIR)"
254
"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\ProbeUnitTests.pch" : $(SOURCE) "$(INTDIR)"
255
	$(CPP) @<<
255
	$(CPP) @<<
Lines 259-265 Link Here
259
259
260
!ELSEIF  "$(CFG)" == "ProbeUnitTests - Win32 Debug"
260
!ELSEIF  "$(CFG)" == "ProbeUnitTests - Win32 Debug"
261
261
262
CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeUnitTests.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
262
CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeUnitTests.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
263
263
264
"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\StdAfx.sbr"	"$(INTDIR)\ProbeUnitTests.pch" : $(SOURCE) "$(INTDIR)"
264
"$(INTDIR)\StdAfx.obj"	"$(INTDIR)\StdAfx.sbr"	"$(INTDIR)\ProbeUnitTests.pch" : $(SOURCE) "$(INTDIR)"
265
	$(CPP) @<<
265
	$(CPP) @<<
(-)src-native/BCI/BCIEng/ProbeUnitTests/ProbeUnitTests.mak64 (-8 / +8 lines)
Lines 64-70 Link Here
64
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
64
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
65
65
66
CPP=cl.exe
66
CPP=cl.exe
67
CPP_PROJ=/nologo /MD /W3 /EHsc /O2 /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\ProbeUnitTests.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
67
CPP_PROJ=/nologo /MD /W3 /EHsc /O2 /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /Fp"$(INTDIR)\ProbeUnitTests.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
68
68
69
.c{$(INTDIR)}.obj::
69
.c{$(INTDIR)}.obj::
70
   $(CPP) @<<
70
   $(CPP) @<<
Lines 99-105 Link Here
99
RSC=rc.exe
99
RSC=rc.exe
100
100
101
LINK32=link.exe
101
LINK32=link.exe
102
LINK32_FLAGS=kernel32.lib ..\..\jclass\release\jclassstat.lib ..\release\bcieng.lib ..\bciengj\release\bciengj.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\ProbeUnitTests.pdb" /out:"$(OUTDIR)\ProbeUnitTests.exe" /machine:IA64
102
LINK32_FLAGS=verifier.lib kernel32.lib ..\..\jclass\release\jclassstat.lib ..\release\bcieng.lib ..\bciengj\release\bciengj.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\ProbeUnitTests.pdb" /out:"$(OUTDIR)\ProbeUnitTests.exe" /machine:IA64 /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\IA-32"
103
LINK32_OBJS= \
103
LINK32_OBJS= \
104
	"$(INTDIR)\BCIEngProbe.obj" \
104
	"$(INTDIR)\BCIEngProbe.obj" \
105
	"$(INTDIR)\ProbeUnitTests.obj" \
105
	"$(INTDIR)\ProbeUnitTests.obj" \
Lines 139-145 Link Here
139
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
139
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
140
140
141
CPP=cl.exe
141
CPP=cl.exe
142
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /ZI /Od /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeUnitTests.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
142
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /ZI /Od /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeUnitTests.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
143
143
144
.c{$(INTDIR)}.obj::
144
.c{$(INTDIR)}.obj::
145
   $(CPP) @<<
145
   $(CPP) @<<
Lines 174-180 Link Here
174
RSC=rc.exe
174
RSC=rc.exe
175
175
176
LINK32=link.exe
176
LINK32=link.exe
177
LINK32_FLAGS=kernel32.lib ..\..\jclass\debug\jclassstat.lib ..\debug\bcieng.lib ..\bciengj\debug\bciengj.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\ProbeUnitTests.pdb" /debug /out:"$(OUTDIR)\ProbeUnitTests.exe" /machine:IA64
177
LINK32_FLAGS=verifier.lib kernel32.lib ..\..\jclass\debug\jclassstat.lib ..\debug\bcieng.lib ..\bciengj\debug\bciengj.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\ProbeUnitTests.pdb" /debug /out:"$(OUTDIR)\ProbeUnitTests.exe" /machine:IA64 /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\IA-32"
178
LINK32_OBJS= \
178
LINK32_OBJS= \
179
	"$(INTDIR)\BCIEngProbe.obj" \
179
	"$(INTDIR)\BCIEngProbe.obj" \
180
	"$(INTDIR)\ProbeUnitTests.obj" \
180
	"$(INTDIR)\ProbeUnitTests.obj" \
Lines 208-214 Link Here
208
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
208
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
209
209
210
CPP=cl.exe
210
CPP=cl.exe
211
CPP_PROJ=/nologo /MD /W3 /EHsc /O2 /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\ProbeUnitTests.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
211
CPP_PROJ=/nologo /MD /W3 /EHsc /O2 /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /Fp"$(INTDIR)\ProbeUnitTests.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
212
212
213
.c{$(INTDIR)}.obj::
213
.c{$(INTDIR)}.obj::
214
   $(CPP) @<<
214
   $(CPP) @<<
Lines 243-249 Link Here
243
RSC=rc.exe
243
RSC=rc.exe
244
244
245
LINK32=link.exe
245
LINK32=link.exe
246
LINK32_FLAGS=kernel32.lib ..\..\jclass\release\jclassstat.lib ..\release\bcieng.lib ..\bciengj\release\bciengj.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\ProbeUnitTests.pdb" /out:"$(OUTDIR)\ProbeUnitTests.exe" /machine:AMD64
246
LINK32_FLAGS=verifier.lib kernel32.lib ..\..\jclass\release\jclassstat.lib ..\release\bcieng.lib ..\bciengj\release\bciengj.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\ProbeUnitTests.pdb" /out:"$(OUTDIR)\ProbeUnitTests.exe" /machine:AMD64 /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\IA-32"
247
LINK32_OBJS= \
247
LINK32_OBJS= \
248
	"$(INTDIR)\BCIEngProbe.obj" \
248
	"$(INTDIR)\BCIEngProbe.obj" \
249
	"$(INTDIR)\ProbeUnitTests.obj" \
249
	"$(INTDIR)\ProbeUnitTests.obj" \
Lines 283-289 Link Here
283
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
283
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
284
284
285
CPP=cl.exe
285
CPP=cl.exe
286
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /ZI /Od /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeUnitTests.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
286
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /ZI /Od /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\ProbeUnitTests.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
287
287
288
.c{$(INTDIR)}.obj::
288
.c{$(INTDIR)}.obj::
289
   $(CPP) @<<
289
   $(CPP) @<<
Lines 318-324 Link Here
318
RSC=rc.exe
318
RSC=rc.exe
319
319
320
LINK32=link.exe
320
LINK32=link.exe
321
LINK32_FLAGS=kernel32.lib ..\..\jclass\debug\jclassstat.lib ..\debug\bcieng.lib ..\bciengj\debug\bciengj.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\ProbeUnitTests.pdb" /debug /out:"$(OUTDIR)\ProbeUnitTests.exe" /machine:AMD64
321
LINK32_FLAGS=verifier.lib kernel32.lib ..\..\jclass\debug\jclassstat.lib ..\debug\bcieng.lib ..\bciengj\debug\bciengj.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\ProbeUnitTests.pdb" /debug /out:"$(OUTDIR)\ProbeUnitTests.exe" /machine:AMD64 /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\IA-32"
322
LINK32_OBJS= \
322
LINK32_OBJS= \
323
	"$(INTDIR)\BCIEngProbe.obj" \
323
	"$(INTDIR)\BCIEngProbe.obj" \
324
	"$(INTDIR)\ProbeUnitTests.obj" \
324
	"$(INTDIR)\ProbeUnitTests.obj" \
(-)src-native/BCI/BCIEng/ProbeUnitTests/ProbeUnitTests.dsp (-4 / +7 lines)
Lines 23-28 Link Here
23
23
24
# Begin Project
24
# Begin Project
25
# PROP AllowPerConfigDependencies 0
25
# PROP AllowPerConfigDependencies 0
26
# PROP Scc_ProjName ""
27
# PROP Scc_LocalPath ""
26
CPP=cl.exe
28
CPP=cl.exe
27
RSC=rc.exe
29
RSC=rc.exe
28
30
Lines 40-46 Link Here
40
# PROP Ignore_Export_Lib 0
42
# PROP Ignore_Export_Lib 0
41
# PROP Target_Dir ""
43
# PROP Target_Dir ""
42
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c
44
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c
43
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
45
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /YX /FD /c
44
# ADD BASE RSC /l 0x409 /d "NDEBUG"
46
# ADD BASE RSC /l 0x409 /d "NDEBUG"
45
# ADD RSC /l 0x409 /d "NDEBUG"
47
# ADD RSC /l 0x409 /d "NDEBUG"
46
BSC32=bscmake.exe
48
BSC32=bscmake.exe
Lines 48-54 Link Here
48
# ADD BSC32 /nologo
50
# ADD BSC32 /nologo
49
LINK32=link.exe
51
LINK32=link.exe
50
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
52
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
51
# ADD LINK32 kernel32.lib ..\..\jclass\release\jclassstat.lib ..\release\bcieng.lib ..\bciengj\release\bciengj.lib /nologo /subsystem:console /machine:I386
53
# ADD LINK32 verifier.lib kernel32.lib ..\..\jclass\release\jclassstat.lib ..\release\bcieng.lib ..\bciengj\release\bciengj.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt" /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\IA-32"
54
# SUBTRACT LINK32 /pdb:none
52
55
53
!ELSEIF  "$(CFG)" == "ProbeUnitTests - Win32 Debug"
56
!ELSEIF  "$(CFG)" == "ProbeUnitTests - Win32 Debug"
54
57
Lines 64-70 Link Here
64
# PROP Ignore_Export_Lib 0
67
# PROP Ignore_Export_Lib 0
65
# PROP Target_Dir ""
68
# PROP Target_Dir ""
66
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
69
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
67
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
70
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\BCIEngProbe" /I "..\BCIEngJ" /I ".." /I "..\..\JClass" /I "..\..\common" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /FR /YX /FD /GZ /c
68
# ADD BASE RSC /l 0x409 /d "_DEBUG"
71
# ADD BASE RSC /l 0x409 /d "_DEBUG"
69
# ADD RSC /l 0x409 /d "_DEBUG"
72
# ADD RSC /l 0x409 /d "_DEBUG"
70
BSC32=bscmake.exe
73
BSC32=bscmake.exe
Lines 72-78 Link Here
72
# ADD BSC32 /nologo
75
# ADD BSC32 /nologo
73
LINK32=link.exe
76
LINK32=link.exe
74
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
77
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
75
# ADD LINK32 kernel32.lib ..\..\jclass\debug\jclassstat.lib ..\debug\bcieng.lib ..\bciengj\debug\bciengj.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
78
# ADD LINK32 verifier.lib kernel32.lib ..\..\jclass\debug\jclassstat.lib ..\debug\bcieng.lib ..\bciengj\debug\bciengj.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\IA-32"
76
79
77
!ENDIF 
80
!ENDIF 
78
81
(-)src-native/BCI/BCIEng/BCIEngJ/BCIEngJTest/BCIEngJTest.cpp (-3 / +3 lines)
Lines 144-153 Link Here
144
void 
144
void 
145
CBCIEngJTest::OpenClass(const char* i_szClassName)
145
CBCIEngJTest::OpenClass(const char* i_szClassName)
146
{
146
{
147
	CJFileStream	InStream(i_szClassName);	// File stream
147
	CJFileStream	InStream(i_szClassName);	 // File stream
148
	CJStream		JStreamIn(&InStream);		// Java input stream
148
	CJStream		JStreamIn(&InStream);		 // Java input stream
149
	CModuleJ*		pModuleJ = new CModuleJ;
149
	CModuleJ*		pModuleJ = new CModuleJ;
150
	CJClassFile* pClass = new CJClassFile;      // Will be deleted in the module destructor
150
	CJClassBuilder* pClass = new CJClassBuilder; // Will be deleted in the module destructor
151
	pClass->Read(JStreamIn);
151
	pClass->Read(JStreamIn);
152
	pModuleJ->Open(pClass, true);
152
	pModuleJ->Open(pClass, true);
153
	pModuleJ->SetAccessFlags(pClass->GetAccessFlags());
153
	pModuleJ->SetAccessFlags(pClass->GetAccessFlags());
(-)src-native/BCI/BCIEng/BCIEngJ/BCIEngJTest/BciEngJTest.mak64 (-8 / +8 lines)
Lines 60-66 Link Here
60
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
60
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
61
61
62
CPP=cl.exe
62
CPP=cl.exe
63
CPP_PROJ=/nologo /MD /W3 /EHsc /O2 /I "..\\" /I "..\..\\" /I "..\..\..\commmon" /I "..\..\..\JClass" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\BciEngJTest.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
63
CPP_PROJ=/nologo /MD /W3 /EHsc /O2 /I "..\\" /I "..\..\\" /I "..\..\..\commmon" /I "..\..\..\JClass" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /Fp"$(INTDIR)\BciEngJTest.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
64
64
65
.c{$(INTDIR)}.obj::
65
.c{$(INTDIR)}.obj::
66
   $(CPP) @<<
66
   $(CPP) @<<
Lines 95-101 Link Here
95
RSC=rc.exe
95
RSC=rc.exe
96
96
97
LINK32=link.exe
97
LINK32=link.exe
98
LINK32_FLAGS=kernel32.lib JClassStat.lib BCIEng.lib BCIEngJ.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\BciEngJTest.pdb" /out:"$(OUTDIR)\BciEngJTest.exe" /libpath:"..\..\..\JClass\Release" /libpath:"..\..\Release" /libpath:"..\Release" /machine:IA64
98
LINK32_FLAGS=BCIEng.lib BCIEngJ.lib kernel32.lib JClassStat.lib verifier.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\BciEngJTest.pdb" /out:"$(OUTDIR)\BciEngJTest.exe" /libpath:"..\..\..\JClass\Release" /libpath:"..\..\Release" /libpath:"..\Release" /machine:IA64 /libpath:"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\IA-32"
99
LINK32_OBJS= \
99
LINK32_OBJS= \
100
	"$(INTDIR)\BCIEngJTest.obj"
100
	"$(INTDIR)\BCIEngJTest.obj"
101
101
Lines 126-132 Link Here
126
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
126
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
127
127
128
CPP=cl.exe
128
CPP=cl.exe
129
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "..\\" /I "..\..\\" /I "..\..\..\commmon" /I "..\..\..\JClass" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\BciEngJTest.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
129
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "..\\" /I "..\..\\" /I "..\..\..\commmon" /I "..\..\..\JClass" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /Fp"$(INTDIR)\BciEngJTest.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
130
130
131
.c{$(INTDIR)}.obj::
131
.c{$(INTDIR)}.obj::
132
   $(CPP) @<<
132
   $(CPP) @<<
Lines 161-167 Link Here
161
RSC=rc.exe
161
RSC=rc.exe
162
162
163
LINK32=link.exe
163
LINK32=link.exe
164
LINK32_FLAGS=BCIEng.lib BCIEngJ.lib kernel32.lib JClassStat.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\BciEngJTest.pdb" /debug /out:"$(OUTDIR)\BciEngJTest.exe" /libpath:"..\..\..\JClass\Debug" /libpath:"..\..\Debug" /libpath:"..\Debug" /fixed:no /machine:IA64
164
LINK32_FLAGS=BCIEng.lib BCIEngJ.lib kernel32.lib JClassStat.lib verifier.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\BciEngJTest.pdb" /debug /out:"$(OUTDIR)\BciEngJTest.exe" /libpath:"..\..\..\JClass\Debug" /libpath:"..\..\Debug" /libpath:"..\Debug" /fixed:no /machine:IA64 /libpath:"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\IA-32"
165
LINK32_OBJS= \
165
LINK32_OBJS= \
166
	"$(INTDIR)\BCIEngJTest.obj"
166
	"$(INTDIR)\BCIEngJTest.obj"
167
167
Lines 190-196 Link Here
190
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
190
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
191
191
192
CPP=cl.exe
192
CPP=cl.exe
193
CPP_PROJ=/nologo /MD /W3 /EHsc /O2 /I "..\\" /I "..\..\\" /I "..\..\..\commmon" /I "..\..\..\JClass" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\BciEngJTest.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
193
CPP_PROJ=/nologo /MD /W3 /EHsc /O2 /I "..\\" /I "..\..\\" /I "..\..\..\commmon" /I "..\..\..\JClass" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /Fp"$(INTDIR)\BciEngJTest.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
194
194
195
.c{$(INTDIR)}.obj::
195
.c{$(INTDIR)}.obj::
196
   $(CPP) @<<
196
   $(CPP) @<<
Lines 225-231 Link Here
225
RSC=rc.exe
225
RSC=rc.exe
226
226
227
LINK32=link.exe
227
LINK32=link.exe
228
LINK32_FLAGS=kernel32.lib JClassStat.lib BCIEng.lib BCIEngJ.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\BciEngJTest.pdb" /out:"$(OUTDIR)\BciEngJTest.exe" /libpath:"..\..\..\JClass\Release" /libpath:"..\..\Release" /libpath:"..\Release" /machine:AMD64
228
LINK32_FLAGS=kernel32.lib JClassStat.lib BCIEng.lib BCIEngJ.lib verifier.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\BciEngJTest.pdb" /out:"$(OUTDIR)\BciEngJTest.exe" /libpath:"..\..\..\JClass\Release" /libpath:"..\..\Release" /libpath:"..\Release" /machine:AMD64 /libpath:"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\IA-32"
229
LINK32_OBJS= \
229
LINK32_OBJS= \
230
	"$(INTDIR)\BCIEngJTest.obj"
230
	"$(INTDIR)\BCIEngJTest.obj"
231
231
Lines 256-262 Link Here
256
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
256
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
257
257
258
CPP=cl.exe
258
CPP=cl.exe
259
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "..\\" /I "..\..\\" /I "..\..\..\commmon" /I "..\..\..\JClass" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\BciEngJTest.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
259
CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "..\\" /I "..\..\\" /I "..\..\..\commmon" /I "..\..\..\JClass" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /Fp"$(INTDIR)\BciEngJTest.pch" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /c 
260
260
261
.c{$(INTDIR)}.obj::
261
.c{$(INTDIR)}.obj::
262
   $(CPP) @<<
262
   $(CPP) @<<
Lines 291-297 Link Here
291
RSC=rc.exe
291
RSC=rc.exe
292
292
293
LINK32=link.exe
293
LINK32=link.exe
294
LINK32_FLAGS=BCIEng.lib BCIEngJ.lib kernel32.lib JClassStat.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\BciEngJTest.pdb" /debug /out:"$(OUTDIR)\BciEngJTest.exe" /libpath:"..\..\..\JClass\Debug" /libpath:"..\..\Debug" /libpath:"..\Debug" /fixed:no /machine:AMD64
294
LINK32_FLAGS=BCIEng.lib BCIEngJ.lib kernel32.lib JClassStat.lib verifier.lib bufferoverflowU.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\BciEngJTest.pdb" /debug /out:"$(OUTDIR)\BciEngJTest.exe" /libpath:"..\..\..\JClass\Debug" /libpath:"..\..\Debug" /libpath:"..\Debug" /fixed:no /machine:AMD64 /libpath:"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\IA-32"
295
LINK32_OBJS= \
295
LINK32_OBJS= \
296
	"$(INTDIR)\BCIEngJTest.obj"
296
	"$(INTDIR)\BCIEngJTest.obj"
297
297
(-)src-native/BCI/BCIEng/BCIEngJ/BCIEngJTest/BciEngJTest.mak (-4 / +4 lines)
Lines 58-64 Link Here
58
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
58
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
59
59
60
CPP=cl.exe
60
CPP=cl.exe
61
CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\\" /I "..\..\\" /I "..\..\..\commmon" /I "..\..\..\JClass" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\BciEngJTest.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
61
CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\\" /I "..\..\\" /I "..\..\..\common" /I "..\..\..\JClass" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /Fp"$(INTDIR)\BciEngJTest.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
62
62
63
.c{$(INTDIR)}.obj::
63
.c{$(INTDIR)}.obj::
64
   $(CPP) @<<
64
   $(CPP) @<<
Lines 96-102 Link Here
96
BSC32_SBRS= \
96
BSC32_SBRS= \
97
	
97
	
98
LINK32=link.exe
98
LINK32=link.exe
99
LINK32_FLAGS=kernel32.lib JClassStat.lib BCIEng.lib BCIEngJ.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\BciEngJTest.pdb" /machine:I386 /out:"$(OUTDIR)\BciEngJTest.exe" /libpath:"..\..\..\JClass\Release" /libpath:"..\..\Release" /libpath:"..\Release" 
99
LINK32_FLAGS=BCIEng.lib BCIEngJ.lib kernel32.lib JClassStat.lib verifier.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\BciEngJTest.pdb" /machine:I386 /out:"$(OUTDIR)\BciEngJTest.exe" /libpath:"..\..\..\JClass\Release" /libpath:"..\..\Release" /libpath:"..\Release" /libpath:"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\IA-32" 
100
LINK32_OBJS= \
100
LINK32_OBJS= \
101
	"$(INTDIR)\BCIEngJTest.obj"
101
	"$(INTDIR)\BCIEngJTest.obj"
102
102
Lines 127-133 Link Here
127
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
127
    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
128
128
129
CPP=cl.exe
129
CPP=cl.exe
130
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\\" /I "..\..\\" /I "..\..\..\commmon" /I "..\..\..\JClass" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\BciEngJTest.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
130
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\\" /I "..\..\\" /I "..\..\..\common" /I "..\..\..\JClass" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /Fp"$(INTDIR)\BciEngJTest.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
131
131
132
.c{$(INTDIR)}.obj::
132
.c{$(INTDIR)}.obj::
133
   $(CPP) @<<
133
   $(CPP) @<<
Lines 165-171 Link Here
165
BSC32_SBRS= \
165
BSC32_SBRS= \
166
	
166
	
167
LINK32=link.exe
167
LINK32=link.exe
168
LINK32_FLAGS=BCIEng.lib BCIEngJ.lib kernel32.lib JClassStat.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\BciEngJTest.pdb" /debug /machine:I386 /out:"$(OUTDIR)\BciEngJTest.exe" /pdbtype:sept /libpath:"..\..\..\JClass\Debug" /libpath:"..\..\Debug" /libpath:"..\Debug" /fixed:no 
168
LINK32_FLAGS=BCIEng.lib BCIEngJ.lib kernel32.lib JClassStat.lib verifier.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\BciEngJTest.pdb" /debug /machine:I386 /out:"$(OUTDIR)\BciEngJTest.exe" /pdbtype:sept /libpath:"..\..\..\JClass\Debug" /libpath:"..\..\Debug" /libpath:"..\Debug" /libpath:"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\IA-32" /fixed:no 
169
LINK32_OBJS= \
169
LINK32_OBJS= \
170
	"$(INTDIR)\BCIEngJTest.obj"
170
	"$(INTDIR)\BCIEngJTest.obj"
171
171
(-)src-native/BCI/BCIEng/BCIEngJ/BCIEngJTest/BciEngJTest.dep (-1 / +12 lines)
Lines 13-24 Link Here
13
# Microsoft Developer Studio Generated Dependency File, included by BciEngJTest.mak
13
# Microsoft Developer Studio Generated Dependency File, included by BciEngJTest.mak
14
14
15
.\BCIEngJTest.cpp : \
15
.\BCIEngJTest.cpp : \
16
	"..\..\..\JClass\JavaDef.h"\
16
	"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\common.h"\
17
	"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\hycomp.h"\
18
	"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include\open\platform_types.h"\
19
	"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include\verifier.h"\
20
	"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_class_interface.h"\
21
	"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier\x_verifier.h"\
22
	"..\..\..\common\commondef.h"\
23
	"..\..\..\common\javadef.h"\
24
	"..\..\..\Common\JavaHelpers.h"\
17
	"..\..\..\JClass\JBaseStream.h"\
25
	"..\..\..\JClass\JBaseStream.h"\
26
	"..\..\..\JClass\JClassBuilder.h"\
18
	"..\..\..\JClass\JClassFile.h"\
27
	"..\..\..\JClass\JClassFile.h"\
19
	"..\..\..\JClass\JFileStream.h"\
28
	"..\..\..\JClass\JFileStream.h"\
20
	"..\..\..\JClass\JStream.h"\
29
	"..\..\..\JClass\JStream.h"\
21
	"..\..\InsSet.h"\
30
	"..\..\InsSet.h"\
22
	"..\..\Module.h"\
31
	"..\..\Module.h"\
32
	"..\class_inerface_int.h"\
23
	"..\ModuleJ.h"\
33
	"..\ModuleJ.h"\
34
	"c:\program files\microsoft visual studio\vc98\include\basetsd.h"\
24
	
35
	
(-)src-native/BCI/BCIEng/BCIEngJ/BCIEngJTest/BciEngJTest.dsp (-4 / +4 lines)
Lines 42-48 Link Here
42
# PROP Ignore_Export_Lib 0
42
# PROP Ignore_Export_Lib 0
43
# PROP Target_Dir ""
43
# PROP Target_Dir ""
44
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
44
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
45
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\\" /I "..\..\\" /I "..\..\..\common" /I "..\..\..\JClass" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
45
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\\" /I "..\..\\" /I "..\..\..\common" /I "..\..\..\JClass" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /YX /FD /c
46
# ADD BASE RSC /l 0x409 /d "NDEBUG"
46
# ADD BASE RSC /l 0x409 /d "NDEBUG"
47
# ADD RSC /l 0x409 /d "NDEBUG"
47
# ADD RSC /l 0x409 /d "NDEBUG"
48
BSC32=bscmake.exe
48
BSC32=bscmake.exe
Lines 50-56 Link Here
50
# ADD BSC32 /nologo
50
# ADD BSC32 /nologo
51
LINK32=link.exe
51
LINK32=link.exe
52
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
52
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
53
# ADD LINK32 kernel32.lib JClassStat.lib BCIEng.lib BCIEngJ.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\JClass\Release" /libpath:"..\..\Release" /libpath:"..\Release"
53
# ADD LINK32 BCIEng.lib BCIEngJ.lib kernel32.lib JClassStat.lib verifier.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\JClass\Release" /libpath:"..\..\Release" /libpath:"..\Release" /libpath:"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\release\IA-32"
54
54
55
!ELSEIF  "$(CFG)" == "BciEngJTest - Win32 Debug"
55
!ELSEIF  "$(CFG)" == "BciEngJTest - Win32 Debug"
56
56
Lines 66-72 Link Here
66
# PROP Ignore_Export_Lib 0
66
# PROP Ignore_Export_Lib 0
67
# PROP Target_Dir ""
67
# PROP Target_Dir ""
68
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
68
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
69
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\\" /I "..\..\\" /I "..\..\..\common" /I "..\..\..\JClass" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
69
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\\" /I "..\..\\" /I "..\..\..\common" /I "..\..\..\JClass" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\include" /I "..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\src\vmcore\src\verifier-3363\x_verifier" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "STATIC_BUILD" /YX /FD /GZ /c
70
# ADD BASE RSC /l 0x409 /d "_DEBUG"
70
# ADD BASE RSC /l 0x409 /d "_DEBUG"
71
# ADD RSC /l 0x409 /d "_DEBUG"
71
# ADD RSC /l 0x409 /d "_DEBUG"
72
BSC32=bscmake.exe
72
BSC32=bscmake.exe
Lines 74-80 Link Here
74
# ADD BSC32 /nologo
74
# ADD BSC32 /nologo
75
LINK32=link.exe
75
LINK32=link.exe
76
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
76
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
77
# ADD LINK32 BCIEng.lib BCIEngJ.lib kernel32.lib JClassStat.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\JClass\Debug" /libpath:"..\..\Debug" /libpath:"..\Debug" /fixed:no
77
# ADD LINK32 BCIEng.lib BCIEngJ.lib kernel32.lib JClassStat.lib verifier.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\JClass\Debug" /libpath:"..\..\Debug" /libpath:"..\Debug" /libpath:"..\..\..\..\..\..\org.apache.harmony_vmcore_verifier\lib\windows\debug\IA-32" /fixed:no
78
# SUBTRACT LINK32 /pdb:none
78
# SUBTRACT LINK32 /pdb:none
79
79
80
!ENDIF 
80
!ENDIF 
(-)src-native/BCI/makefile.include (-1 / +16 lines)
Lines 84-89 Link Here
84
ifneq ($(findstring Linux, $(UNAME)),)
84
ifneq ($(findstring Linux, $(UNAME)),)
85
   ENVIRON = linux
85
   ENVIRON = linux
86
   JDK_PLATFORM = linux
86
   JDK_PLATFORM = linux
87
   ifneq ($(findstring ia64,$(MACHINE)),)
88
      ARCH=IPF_ARCH
89
      BUILD_PLATFORM = linux_ipf
90
   endif # MACHINE
87
   ifneq ($(findstring i686,$(MACHINE)),)
91
   ifneq ($(findstring i686,$(MACHINE)),)
88
      # nslookup on Red Hat is whiny, so shut it up
92
      # nslookup on Red Hat is whiny, so shut it up
89
      NSLOOKUP = nslookup -silent 
93
      NSLOOKUP = nslookup -silent 
Lines 318-324 Link Here
318
  
322
  
319
  
323
  
320
  # Place BUILD_PLATFORM specific settings here, for example
324
  # Place BUILD_PLATFORM specific settings here, for example
321
  #    ifeq ($(BUILD_PLATFORM), linux_ia32) ... endif
325
  ifeq ($(BUILD_PLATFORM), linux_ia32)
326
     ARCH_DIR = IA-32
327
  endif #linux_ia32
328
  
329
  ifeq ($(BUILD_PLATFORM), linux_em64t)
330
     ARCH_DIR = EM64T
331
  endif
332
  
333
  ifeq ($(BUILD_PLATFORM), linux_ipf)
334
     ARCH_DIR = IPF
335
  endif
336
  
322
endif # linux
337
endif # linux
323
338
324
#####
339
#####
(-)src-native/BCI/makefile.unix (-1 / +3 lines)
Lines 50-55 Link Here
50
# To do this we have to extract all the *.o files from the archives
50
# To do this we have to extract all the *.o files from the archives
51
# and pass them to the linker.
51
# and pass them to the linker.
52
#
52
#
53
LDIRS += -L../../../org.apache.harmony_vmcore_verifier/lib/linux/$(BUILD_MODE_DIR)/$(ARCH_DIR)
54
LIBS = -lverifier
53
55
54
$(OUTDIR)/BCIEngProbe$(SHLIB_EXT) : $(OUTDIR)/probeinstrumenter
56
$(OUTDIR)/BCIEngProbe$(SHLIB_EXT) : $(OUTDIR)/probeinstrumenter
55
	rm -rf $(OUTDIR)/otemp
57
	rm -rf $(OUTDIR)/otemp
Lines 59-65 Link Here
59
	cd $(OUTDIR)/otemp ; $(AR) x ../../Common/libCommon.a
61
	cd $(OUTDIR)/otemp ; $(AR) x ../../Common/libCommon.a
60
	cd $(OUTDIR)/otemp ; $(AR) x ../../JClass/libJClassStat.a
62
	cd $(OUTDIR)/otemp ; $(AR) x ../../JClass/libJClassStat.a
61
	cd $(OUTDIR)/otemp ; $(AR) x ../../BCIEng/BCIEngProbe/libBCIEngProbe.a
63
	cd $(OUTDIR)/otemp ; $(AR) x ../../BCIEng/BCIEngProbe/libBCIEngProbe.a
62
	$(LINK_CXX_SHLIB) $(CXX_SHLIB_FLAG) -o $@ $(OUTDIR)/otemp/*.o $(SHLIB_CXX_LIBS) $(SHLIB_FINAL_FLAGS)
64
	$(LINK_CXX_SHLIB) $(CXX_SHLIB_FLAG) -o $@ $(OUTDIR)/otemp/*.o $(SHLIB_CXX_LIBS) $(SHLIB_FINAL_FLAGS) $(LDIRS) $(LIBS)
63
	rm -rf $(OUTDIR)/otemp
65
	rm -rf $(OUTDIR)/otemp
64
66
65
clean : 
67
clean : 
(-)src-native/BCI/BCIEng/BCIEngJ/class_interface_x.h (+46 lines)
Added Link Here
1
/********************************************************************** 
2
 * Copyright (c) 2008 IBM Corporation and others. 
3
 * All rights reserved.   This program and the accompanying materials 
4
 * are made available under the terms of the Eclipse Public License v1.0 
5
 * which accompanies this distribution, and is available at 
6
 * http://www.eclipse.org/legal/epl-v10.html         
7
 * $Id$ 
8
 * 
9
 * Contributors: 
10
 * Intel - Initial API and implementation 
11
 **********************************************************************/ 
12
13
#ifndef _CLASS_INTERFACE_X_H_
14
#define _CLASS_INTERFACE_X_H_
15
16
typedef unsigned long intptr;
17
18
19
#ifdef __cplusplus
20
//extern "C" {
21
#endif
22
23
#if 0
24
#include "class_interface.h"
25
#include "x_verifier.h"
26
#else
27
#define __INSURE__
28
#include "verifier-ext/class_interface.h"
29
#include "verifier-ext/x_verifier.h"
30
#endif
31
32
// removes given exception handler (handlers with greater indexes shift)
33
void method_remove_exc_handler( method_handler method, unsigned short idx );
34
35
//modifies start_pc, end_pc 
36
void method_modify_exc_handler_info(method_handler method, 
37
                                    unsigned short idx, 
38
                                    unsigned short start_pc,
39
                                    unsigned short end_pc, 
40
                                    unsigned short handler_pc, 
41
                                    unsigned short handler_cp_index );
42
unsigned short class_get_cp_class_entry(class_handler k_class, const char* name);
43
#ifdef __cplusplus
44
//}
45
#endif
46
#endif /*!_CLASS_INTERFACE_X_H_*/
(-)src-native/BCI/BCIEng/BCIEngJ/class_inerface_int.h (+42 lines)
Added Link Here
1
/********************************************************************** 
2
 * Copyright (c) 2008 IBM Corporation and others. 
3
 * All rights reserved.   This program and the accompanying materials 
4
 * are made available under the terms of the Eclipse Public License v1.0 
5
 * which accompanies this distribution, and is available at 
6
 * http://www.eclipse.org/legal/epl-v10.html         
7
 * $Id$ 
8
 * 
9
 * Contributors: 
10
 * Intel - Initial API and implementation 
11
 **********************************************************************/ 
12
13
#ifndef _CLASS_INTERFACE_INT_H_
14
#define _CLASS_INTERFACE_INT_H_
15
16
//typedef u1 uint8;
17
//typedef u2 uint16;
18
//#include "class_interface.h"
19
//#include "class_interface_x.h"
20
21
#include "x_class_interface.h"
22
#include "x_verifier.h"
23
24
#include "JClassBuilder.h"
25
26
typedef Class_Handle class_handler;
27
typedef Method_Handle method_handler;
28
typedef void *(*get_vm_pointer_t)(void **);
29
30
class_handler get_class_handler_from_builder(class CModuleJ *);
31
method_handler get_method_handler_for_cmethod(class CMethod *);
32
33
//extern "C" {
34
//unsigned method_get_bytecode_length( method_handler);
35
//}
36
37
extern int initialize_dynamic(get_vm_pointer_t);
38
void class_destroy_handler(class_handler);
39
40
int initialize_static();
41
42
#endif
(-)src-native/BCI/BCIEng/BCIEngJ/class_interface.cpp (+910 lines)
Added Link Here
1
/********************************************************************** 
2
 * Copyright (c) 2008 IBM Corporation and others. 
3
 * All rights reserved.   This program and the accompanying materials 
4
 * are made available under the terms of the Eclipse Public License v1.0 
5
 * which accompanies this distribution, and is available at 
6
 * http://www.eclipse.org/legal/epl-v10.html         
7
 * $Id$ 
8
 * 
9
 * Contributors: 
10
 * Intel - Initial API and implementation 
11
 **********************************************************************/ 
12
#ifdef WIN32
13
#pragma warning(disable:4786)
14
#endif
15
16
#include <stdlib.h>
17
#include <string.h>
18
19
#include <map>
20
21
#include <assert.h>
22
23
#include "class_inerface_int.h"
24
#include "BCIEng.h"
25
#include "JClassBuilder.h"
26
#include "ModuleJ.h"
27
28
#include "JMemStream.h"
29
30
#include <jni.h>
31
32
typedef unsigned long intptr;
33
34
static JNIEnv *(*m_get_vm_pointer)(void **);
35
static jclass m_j_l_class;
36
static jclass m_j_l_classloader;
37
static jmethodID m_j_l_class_getName; /*()Ljava/lang/String;*/
38
static jmethodID m_j_l_class_isInterface;/* ()Z */
39
static jmethodID m_j_l_class_getClassLoader; /*()Ljava/lang/ClassLoader;*/
40
static jmethodID m_j_l_classloader_findLoadedClass; /*(Ljava/lang/String;)Ljava/lang/Class;*/
41
static jmethodID m_j_l_classloader_getSystemClassLoader; /*()Ljava/lang/ClassLoader;*/
42
static jobject m_system_classloader;
43
/**
44
 * Define class handler
45
 */
46
/*[0xdead0001 - simplefied, 0xdead0002 - instrumented, 0xdead0000 - none]*/
47
#define CLASS_HANDLER_MASK 0xdeadffff
48
#define CLASS_HANDLER_SIMPLEFIED 0xdead0001
49
#define CLASS_HANDLER_INSTRUMENTED 0xdead0002
50
#define CLASS_HANDLER_NONE 0xdead0000
51
#define IS_CLASS_INSTRUMENTED(x) (((x)->magic & CLASS_HANDLER_MASK) == CLASS_HANDLER_INSTRUMENTED)
52
struct Class{
53
	int magic; 
54
	struct {
55
		class CModuleJ *instrumented_class;
56
		void *simplified_class;	
57
	} X; /*XXX: possible union here will be more applieble */
58
	int loaded;
59
	const char *class_name; /*used if loaded = 0*/
60
	struct Class *super_class;
61
};
62
63
typedef std::map<std::string,class_handler> name2ch_t;
64
static name2ch_t m_name2ch;
65
66
#define MEHTOD_HANDLER_MASK 0xbabeffff
67
#define METHOD_HANDLER_SELF 0xbabe0001
68
#define METHOD_HANDLER_EXT 0xbabe0002
69
#define METHOD_HANDLER_NONE 0xbabe0000
70
struct Method {
71
	int magic; 
72
	struct {
73
		class CMethodJ *instrumented_method;
74
		void *simplefied_method;
75
	} X; /*XXX: possible union here will be more applieble */
76
	class_handler class_owner;
77
	const char *method_name; /*used for METHOD_HANDLER_EXT only*/
78
	const char *method_descriptor; /*used for METHOD_HANDLER_EXT only*/
79
};
80
81
static struct Class *m_j_l_object_ch; 
82
/**
83
 * Define field handler
84
 */
85
typedef struct Field_ * field_handler;
86
87
/**
88
 * Define method handler
89
 */
90
//typedef struct Method_ * method_handler;
91
92
/**
93
 * Define class loader handler
94
 */
95
typedef struct ClassLoader_ * classloader_handler;
96
97
static int 
98
create_class_handler(class_handler *pch, int flag, const char *class_name, int loaded, void *dsk)
99
{
100
	class_handler ch0 = m_name2ch[class_name]; /*for debug*/
101
	if (m_name2ch[class_name] != NULL 
102
		&& m_name2ch[class_name]->magic == flag) {
103
			*pch = m_name2ch[class_name];
104
			return (0);
105
	} 
106
	class_handler ch = (class_handler)malloc(sizeof(struct Class));
107
	memset(ch, 0, sizeof(struct Class));
108
	assert(ch);
109
	ch->loaded = loaded;
110
	if (loaded == 0) {
111
		ch->class_name = class_name;
112
	}
113
	ch->magic = flag;
114
	switch(flag) {
115
	case (CLASS_HANDLER_SIMPLEFIED):
116
		ch->X.simplified_class = dsk;
117
		if (loaded == 0) {
118
			ch->class_name = class_name;
119
		}
120
		ch->loaded = loaded;
121
		break;
122
	case (CLASS_HANDLER_INSTRUMENTED):
123
		ch->X.instrumented_class = (CModuleJ *)dsk;
124
		break;
125
	default:
126
		assert(!"shouldn't be here!!!");
127
	}
128
	*pch = ch;
129
	m_name2ch[class_name] = ch;
130
	return (0);
131
}
132
133
extern "C" int
134
create_method_handler(method_handler *pmh, class_handler ch, int flag, void *dsk) 
135
{
136
	method_handler mh = (method_handler)malloc(sizeof(struct Method));
137
	assert(mh);
138
	memset(mh, 0, sizeof(struct Method));
139
	switch (flag) {
140
	case METHOD_HANDLER_SELF:
141
		mh->X.instrumented_method = (class CMethodJ *)dsk;
142
		break;
143
	case METHOD_HANDLER_EXT:
144
		mh->X.simplefied_method = dsk;
145
		break;
146
	default:
147
		assert(!"shouldn't enter here");
148
	}
149
	mh->magic = (IS_CLASS_INSTRUMENTED(ch))?METHOD_HANDLER_SELF:flag;
150
	mh->class_owner = ch;
151
	*pmh = mh;
152
	return (0);
153
}
154
/**
155
 * Class interface
156
 */
157
158
extern "C" unsigned short 
159
class_get_version( class_handler klass ) {
160
	if (IS_CLASS_INSTRUMENTED(klass)) {
161
		return klass->X.instrumented_class->GetClassBuilder().GetMajorVersion();
162
	} else {
163
		assert (!"not implemented yet!");
164
	}
165
	return (0);
166
}
167
168
extern "C" const char *
169
class_get_name( class_handler klass ) 
170
{
171
	JNIEnv *env;
172
	jstring class_name;
173
	if (IS_CLASS_INSTRUMENTED(klass)) {
174
		return klass->X.instrumented_class->GetName();
175
	} 
176
	else {
177
		if (klass->loaded == 0) {
178
			return(klass->class_name);
179
		}
180
		env = m_get_vm_pointer((void **)&env);
181
		class_name = (jstring)env->CallObjectMethod((jobject)klass->X.simplified_class, m_j_l_class_getName);
182
		if (class_name == NULL)
183
			return (NULL);
184
		char *class_name_simple = (char *)env->GetStringUTFChars(class_name, NULL);
185
		char *ch = strchr(class_name_simple, '.');
186
		while (ch != NULL) {
187
			*ch = '/';
188
			ch = strchr(ch, '.');
189
		}
190
		return(class_name_simple);
191
	
192
	}
193
	return (NULL);
194
}
195
196
extern "C" classloader_handler
197
class_get_class_loader( class_handler klass )
198
{
199
	if (IS_CLASS_INSTRUMENTED(klass)) {
200
		return (0);
201
	} else {
202
		assert(!"simplefied");
203
	}
204
	return (NULL);
205
}
206
207
extern "C" class_handler
208
class_get_super_class( class_handler klass )
209
{
210
211
	const char *class_name;
212
	const char *super_class_name = NULL;
213
	jobject this_class = NULL;
214
	jobject super_class;
215
	JNIEnv *env = NULL;
216
	env = m_get_vm_pointer((void **)&env);
217
	assert(env);
218
	int loaded = 1;
219
	if (klass->loaded == 0 && strcmp(klass->class_name,"java/lang/Object") == 0) return (NULL);
220
	if (klass->super_class != NULL) return (klass->super_class);
221
	
222
	if (IS_CLASS_INSTRUMENTED(klass)) {
223
		class_name = klass->X.instrumented_class->GetName();
224
		CConstPool* cpool = klass->X.instrumented_class->GetClass().GetConstPool();
225
		CCPUtf8Info* utfinfo = cpool->GetClass(klass->X.instrumented_class->GetClass().GetSuperClass());
226
		super_class_name = (const char *)utfinfo->GetBytes();
227
		assert(super_class_name);	
228
		super_class = (jclass)env->FindClass(super_class_name);		
229
	} 
230
	else {
231
		if (klass->loaded == 0) {
232
			assert(klass->class_name);
233
			this_class = (jclass)env->FindClass(klass->class_name);
234
			if (this_class == NULL && env->ExceptionCheck()) {
235
				//env->ExceptionDescribe();
236
				env->ExceptionClear();
237
				//XXX: class wasn't found or loaded
238
				return (m_j_l_object_ch);
239
				//return (NULL);
240
			}
241
		}
242
		this_class = this_class?this_class:(jobject)klass->X.simplified_class;
243
		super_class = (jobject)env->GetSuperclass((jclass)this_class);
244
	}
245
246
	if (super_class == NULL) {
247
		if (env->ExceptionCheck()) {
248
			//env->ExceptionDescribe();
249
			env->ExceptionClear();
250
			//XXX: class wasn't found or loaded
251
			loaded = 0;
252
			//return (NULL);
253
		}
254
		else {
255
			klass->super_class = m_j_l_object_ch;
256
			return (m_j_l_object_ch);
257
			//return (NULL); /*it happends when klass is java.lang.Object*/
258
		}
259
	}
260
	else {
261
		jstring jclass_name = (jstring)env->CallObjectMethod(super_class, m_j_l_class_getName);
262
		if (jclass_name == NULL) {
263
			return (m_j_l_object_ch);
264
		}
265
		char *class_name_simple = (char *)env->GetStringUTFChars(jclass_name, NULL);
266
		assert (class_name_simple);
267
		char *ch = strchr(class_name_simple, '.');
268
		while (ch != NULL) {
269
			*ch = '/';
270
			ch = strchr(ch, '.');
271
		}
272
		super_class_name = class_name_simple;
273
	}
274
	
275
	//assert(super_class);
276
	class_handler ch;
277
	jobject super_class_ref = env->NewGlobalRef(super_class);
278
	env->DeleteLocalRef(super_class);
279
	int status = create_class_handler(&ch, CLASS_HANDLER_SIMPLEFIED, super_class_name, loaded, super_class_ref);
280
	assert(status == 0);
281
	return (ch);
282
}
283
284
extern "C" unsigned
285
class_is_same_class( class_handler klass1, class_handler klass2 )
286
{
287
	assert(!"verifier entered!!");
288
	return 0;
289
}
290
291
static char* 
292
package_name(const char* kname)
293
{
294
	char *tokp;
295
	char *tok0;
296
	tokp = tok0 = (char *)&kname[0];
297
	tok0 = strchr(kname, '/');
298
	while (tok0 != NULL) {
299
		tokp = tok0;
300
		tok0 = strchr(tok0 + 1, '/');
301
	}
302
	return (tokp);
303
}
304
305
extern "C" unsigned
306
class_is_same_package( class_handler klass1, class_handler klass2 ) 
307
{
308
	if (klass1 == klass2) {
309
		return (1);
310
	}
311
	else {
312
		const char *klass1_name = class_get_name(klass1);
313
		const char *klass2_name = class_get_name(klass2);
314
		char* package1 = package_name(klass1_name);
315
		char* package2 = package_name(klass2_name);
316
		int package1_len = (package1 - klass1_name);
317
		int package2_len = (package2 - klass2_name);
318
		if (package1_len != package2_len)
319
			return (0);
320
		return(strncmp(klass1_name, klass2_name, package2_len) == 0);
321
		assert(!"verifier entered!!");
322
	}
323
	return (0);
324
}
325
326
extern "C" unsigned
327
class_is_interface( class_handler klass ) 
328
{
329
	JNIEnv *env;
330
	env = m_get_vm_pointer((void **)&env);
331
	assert(env);
332
	if (IS_CLASS_INSTRUMENTED(klass)) {
333
		return (0);
334
	} 
335
	else {
336
		return (unsigned)(env->CallBooleanMethod((jobject)klass->X.simplified_class, m_j_l_class_isInterface));
337
	}
338
	
339
	return (0);
340
}
341
342
extern "C" unsigned
343
class_is_array( class_handler klass ) 
344
{
345
	assert(!"verifier entered!!");
346
	return (0);
347
}
348
349
extern "C" unsigned
350
class_is_final_( class_handler klass ) 
351
{
352
	assert(!"verifier entered!!");
353
	return (0);
354
}
355
356
extern "C" unsigned short
357
class_get_superinterface_number( class_handler klass )
358
{
359
	assert(!"verifier entered!!");
360
	return (0);
361
}
362
363
extern "C" class_handler
364
class_get_superinterface( class_handler klass, unsigned short index )
365
{
366
	assert(!"verifier entered!!");
367
	return (NULL);
368
}
369
370
extern "C" class_handler
371
class_get_array_element_class( class_handler klass )
372
{
373
	assert(!"verifier entered!!");
374
	return (NULL);
375
}
376
377
378
extern "C" class_handler
379
class_get_extended_class( class_handler klass, const char *super_name )
380
{
381
	return (NULL);
382
}
383
384
extern "C" unsigned short
385
class_get_method_number( class_handler klass )
386
{
387
	assert(!"verifier entered!!");
388
	return (0);
389
}
390
391
extern "C" method_handler
392
class_get_method( class_handler klass, unsigned short index )
393
{
394
	assert(!"verifier entered!!");
395
	return (NULL);
396
}
397
398
399
/**
400
 * Constant pool inteface
401
 */
402
403
extern "C" unsigned short
404
class_cp_get_size( class_handler klass )
405
{
406
	assert(klass);
407
	if (IS_CLASS_INSTRUMENTED(klass)) {
408
		assert(klass->X.instrumented_class);
409
		assert(klass->X.instrumented_class->GetClassBuilder().GetConstPool());
410
		return klass->X.instrumented_class->GetClassBuilder().GetConstPool()->GetSize();
411
	} else {
412
		assert (!"not implemented yet!");
413
	}
414
	assert(!"verifier entered!!");
415
	return (0);
416
}
417
418
419
extern "C" unsigned char
420
class_cp_get_tag( class_handler klass, unsigned short index )
421
{
422
	if (IS_CLASS_INSTRUMENTED(klass)) {
423
		return (*klass->X.instrumented_class->GetClassBuilder().GetConstPool())[index]->GetTag();
424
	} else {
425
		assert (!"not implemented yet!");
426
	}
427
	return (0);
428
}
429
430
extern "C" unsigned short
431
class_cp_get_class_name_index( class_handler klass, unsigned short index )
432
{
433
	if (IS_CLASS_INSTRUMENTED(klass)) {
434
		CCPInfo * ccinfo = (*klass->X.instrumented_class->GetClassBuilder().GetConstPool())[index];
435
		assert(ccinfo->GetTag() == CONSTANT_Class);
436
		return ((CCPClassInfo *)ccinfo)->GetClassInd();
437
	} else {
438
		assert (!"not implemented yet!");
439
	}
440
	return (0);
441
}
442
443
extern "C" unsigned short
444
class_cp_get_ref_class_index( class_handler klass, unsigned short index )
445
{
446
	if (IS_CLASS_INSTRUMENTED(klass)) {
447
		CCPInfo * ccinfo = (*klass->X.instrumented_class->GetClassBuilder().GetConstPool())[index];
448
		unsigned char tag = ccinfo->GetTag();
449
		switch(tag) {
450
		case CONSTANT_Fieldref:
451
			return ((CCPFieldrefInfo *)ccinfo)->GetClassInd();
452
		break;
453
		case CONSTANT_Methodref:
454
			return ((CCPMethodrefInfo *)ccinfo)->GetClassInd();
455
		break;
456
		case CONSTANT_InterfaceMethodref:
457
			return ((CCPInterfaceMethodrefInfo *)ccinfo)->GetClassInd();
458
		break;
459
		default:
460
			assert(!"unsupported tag");
461
		}
462
	} else {
463
		assert (!"not implemented yet!");
464
	}
465
	return (0);
466
}
467
468
extern "C" unsigned short
469
class_cp_get_ref_name_and_type_index( class_handler klass, unsigned short index )
470
{
471
	if (IS_CLASS_INSTRUMENTED(klass)) {
472
		CCPInfo * ccinfo = (*klass->X.instrumented_class->GetClassBuilder().GetConstPool())[index];
473
		unsigned char tag = ccinfo->GetTag();
474
		switch(tag) {
475
		case CONSTANT_Fieldref:
476
			return ((CCPFieldrefInfo *)ccinfo)->GetNameAndTypeInd();
477
		break;
478
		case CONSTANT_Methodref:
479
			return ((CCPMethodrefInfo *)ccinfo)->GetNameAndTypeInd();
480
		break;
481
		case CONSTANT_InterfaceMethodref:
482
			return ((CCPInterfaceMethodrefInfo *)ccinfo)->GetNameAndTypeInd();
483
		break;
484
		default:
485
			assert(!"unsupported tag");
486
		}
487
	} else {
488
		assert (!"not implemented yet!");
489
	}
490
	return (0);
491
}
492
493
extern "C" unsigned short
494
class_cp_get_string_index( class_handler klass, unsigned short index )
495
{
496
	assert(!"verifier entered!!");
497
	return (0);
498
}
499
500
extern "C" unsigned short
501
class_cp_get_name_index( class_handler klass, unsigned short index )
502
{
503
	if (IS_CLASS_INSTRUMENTED(klass)) {
504
		CCPInfo * ccinfo = (*klass->X.instrumented_class->GetClassBuilder().GetConstPool())[index];
505
		unsigned char tag = ccinfo->GetTag();
506
		assert(tag == CONSTANT_NameAndType);
507
		return ((CCPNameAndTypeInfo *)ccinfo)->GetNameInd();
508
	} else {
509
		assert (!"not implemented yet!");
510
	}
511
	return (0);
512
}
513
514
extern "C" unsigned short
515
class_cp_get_descriptor_index( class_handler klass, unsigned short index )
516
{
517
	if (IS_CLASS_INSTRUMENTED(klass)) {
518
		CCPInfo * ccinfo = (*klass->X.instrumented_class->GetClassBuilder().GetConstPool())[index];
519
		unsigned char tag = ccinfo->GetTag();
520
		assert(tag == CONSTANT_NameAndType);
521
		return ((CCPNameAndTypeInfo *)ccinfo)->GetDescriptorInd();
522
	} else {
523
		assert (!"not implemented yet!");
524
	}
525
	return (0);
526
}
527
528
extern "C" const char *
529
class_cp_get_utf8_bytes( class_handler klass, unsigned short index )
530
{
531
	if (IS_CLASS_INSTRUMENTED(klass)) {
532
		return (const char *)((CCPUtf8Info *)(*klass->X.instrumented_class->GetClassBuilder().GetConstPool())[index])->GetBytes();
533
	} else {
534
		assert (!"not implemented yet!");
535
	}
536
	return (0);
537
}
538
539
extern "C" void
540
class_set_verify_data_ptr( class_handler klass, void *data )
541
{
542
	assert(!"verifier entered!!");
543
	return;
544
}
545
546
extern "C" void *
547
class_get_verify_data_ptr( class_handler klass )
548
{
549
	assert(!"verifier entered!!");
550
	return (NULL);
551
}
552
553
extern "C" method_handler
554
class_resolve_method( class_handler klass, unsigned short index )
555
{
556
	assert(!"verifier entered!!");
557
	return (NULL);
558
}
559
560
extern "C" field_handler
561
class_resolve_nonstatic_field( class_handler klass, unsigned short index )
562
{
563
	assert(!"verifier entered!!");
564
	return (NULL);
565
}
566
567
/**
568
 * Method interface
569
 */
570
571
extern "C" class_handler
572
method_get_class( method_handler hmethod )
573
{
574
	assert(hmethod);
575
	return hmethod->class_owner;
576
}
577
578
extern "C" const char *
579
method_get_name( method_handler method )
580
{
581
	if (method->magic == METHOD_HANDLER_SELF) {
582
		return (method->X.instrumented_method->GetName());
583
	}
584
	else {
585
		assert(!"verifier entered!!");
586
	}
587
	return (NULL);
588
}
589
590
extern "C" const char *
591
method_get_descriptor( method_handler method )
592
{
593
	if (method->magic == METHOD_HANDLER_SELF) {
594
		return (method->X.instrumented_method->GetSignature());
595
	}
596
	else {
597
		assert(!"verifier entered!!");
598
	}
599
	return (NULL);
600
}
601
602
extern "C" unsigned
603
method_get_bytecode_length( method_handler method )
604
{
605
	/*insert check about instrumentation*/
606
	if (method->magic == METHOD_HANDLER_SELF) {
607
		unsigned size = 0;
608
		CInstructions::const_iterator insIterator;
609
		if (method->X.instrumented_method->GetCodeAttribute() == NULL) return (0);
610
		return (method->X.instrumented_method->GetCodeAttribute()->GetCodeLength());
611
	}
612
	else {
613
		assert(!"verifier entered!!");
614
	}
615
	return (0);	
616
}
617
618
extern "C" unsigned char *
619
method_get_bytecode( method_handler method )
620
{
621
	if (method->magic == METHOD_HANDLER_SELF) {
622
		return (method->X.instrumented_method->GetCodeAttribute()->GetCode());
623
	}
624
	else {
625
		assert(!"verifier entered!!");
626
	}
627
	return (NULL);	
628
}
629
630
extern "C" unsigned
631
method_get_max_locals( method_handler method )
632
{
633
	if (method->magic == METHOD_HANDLER_SELF) {
634
		/*XXX: add check for instrumented method*/
635
		CMethodJ * jmethod = (CMethodJ *)(method->X.instrumented_method);
636
		return (jmethod->GetCodeAttribute()->GetMaxLocals());
637
	}
638
	else {
639
		assert(!"verifier entered!!");
640
	}
641
	return (0);	
642
	
643
}
644
645
extern "C" unsigned 
646
method_get_max_stack( method_handler method )
647
{
648
	if (method->magic == METHOD_HANDLER_SELF) {
649
		CMethodJ * jmethod = (CMethodJ *)(method->X.instrumented_method);
650
		return (jmethod->GetCodeAttribute()->GetMaxStack());
651
	}
652
	else {
653
		assert(!"verifier entered!!");
654
	}
655
	return (0);	
656
}
657
658
extern "C" unsigned
659
method_is_static( method_handler method )
660
{
661
	if (method->magic == METHOD_HANDLER_SELF) {
662
		return (method->X.instrumented_method->GetAccessFlags() & ACC_STATIC);
663
	}
664
	else {
665
		//assert(!"verifier entered!!");
666
		return (0); /*we're assuming that this function called after class_resolve_method and couldn't return static methods*/
667
	}
668
	return (0);	
669
	
670
}
671
672
extern "C" unsigned
673
method_is_protected( method_handler method )
674
{
675
	assert(!"verifier entered!!");
676
	return (0);
677
}
678
679
/**
680
 * Method exception handler
681
 */
682
683
extern "C" unsigned short
684
method_get_exc_handler_number( method_handler method )
685
{
686
	return (method->X.instrumented_method->GetExTable()->size());
687
}
688
689
extern "C" void
690
method_get_exc_handler_info( method_handler method, unsigned short index,
691
                             unsigned short *start_pc, unsigned short *end_pc,
692
                             unsigned short *handler_pc, unsigned short *catch_type )
693
{
694
	class CExTable& exc = method->X.instrumented_method->GetCodeAttribute()->GetExTable();
695
	*start_pc = exc[index].GetStartPC();
696
	*end_pc = exc[index].GetEndPC();
697
	*handler_pc = exc[index].GetHandlerPC();
698
	*catch_type = exc[index].GetCatchtype();
699
700
	return;
701
}
702
703
extern "C" unsigned short
704
method_get_number_exc_method_can_throw( method_handler hmethod )
705
{
706
	assert(!"verifier entered!!");
707
	return (0);
708
}
709
710
extern "C" const char *
711
method_get_exc_method_can_throw( method_handler hmethod, unsigned short index )
712
{
713
	assert(!"verifier entered!!");
714
	return (NULL);
715
}
716
717
718
extern "C" unsigned char *
719
method_get_stackmaptable( method_handler hmethod )
720
{
721
	
722
	CStackMapTableAttribute *attr = hmethod->X.instrumented_method->GetCodeAttribute()->GetStackMaps();
723
	if (attr == NULL)
724
		return (NULL);
725
	u4 length = attr->GetLength();
726
	u1 *stackmap = (u1 *)malloc(length);
727
	CJMemStream mem_stream;
728
	mem_stream.Open(stackmap, length);
729
	CJStream stream(&mem_stream);
730
	attr->Write(stream);
731
	//return (attr->GetInfo());
732
	return (stackmap);
733
}
734
735
extern "C" void 
736
method_modify_exc_handler_info(method_handler method, 
737
                                    unsigned short idx, 
738
                                    unsigned short start_pc,
739
                                    unsigned short end_pc, 
740
                                    unsigned short handler_pc, 
741
                                    unsigned short handler_cp_index )
742
{
743
744
	class CExTable& exc = method->X.instrumented_method->GetCodeAttribute()->GetExTable();
745
	exc[idx].SetStartPC(start_pc);
746
	exc[idx].SetEndPC(end_pc);
747
	exc[idx].SetHandlerPC(handler_pc);
748
	return;
749
}
750
751
extern "C" void 
752
method_remove_exc_handler( method_handler method, unsigned short idx )
753
{
754
	assert(!"verifier entered!!");
755
	return;
756
}
757
758
/**
759
 * Class loader interface
760
 */
761
762
extern "C" void
763
class_loader_set_verifier_data_ptr( classloader_handler classloader, void *data )
764
{
765
	assert(!"verifier entered!!");
766
	return;
767
}
768
769
extern "C" void *
770
class_loader_get_verifier_data_ptr( classloader_handler classloader )
771
{
772
	assert(!"verifier entered!!");
773
	return (NULL);
774
}
775
776
extern "C" void
777
class_loader_lock( classloader_handler classloader )
778
{
779
	assert(!"verifier entered!!");
780
	return;
781
}
782
783
extern "C" void
784
class_loader_unlock( classloader_handler classloader )
785
{
786
	assert(!"verifier entered!!");
787
	return;
788
}
789
790
extern "C" class_handler
791
class_loader_lookup_class( classloader_handler classloader, const char *name )
792
{
793
	if (m_name2ch[name] != NULL && IS_CLASS_INSTRUMENTED(m_name2ch[name])) 
794
		return (m_name2ch[name]);
795
	else
796
		return (NULL);
797
}
798
799
extern "C" class_handler
800
class_loader_load_class( classloader_handler classloader, const char *name )
801
{
802
	assert(!"verifier entered!!");
803
	return (NULL);
804
}
805
806
extern "C" unsigned
807
field_is_protected( field_handler field )
808
{
809
	assert(!"verifier entered!!");
810
	return (0);
811
}
812
813
class_handler
814
get_class_handler_from_builder(class CModuleJ *module) 
815
{
816
	class_handler ch;
817
818
	m_name2ch.clear();
819
	int status = create_class_handler(&m_j_l_object_ch, CLASS_HANDLER_SIMPLEFIED, "java/lang/Object", 0, NULL);
820
	assert(!status);
821
	
822
	status = create_class_handler(&ch, CLASS_HANDLER_INSTRUMENTED, module->GetName(), 1, module);
823
	assert(!status);
824
	return (ch);
825
}
826
827
method_handler 
828
get_method_handler_for_cmethod(class CMethod *method)
829
{
830
	class_handler ch = NULL;
831
	method_handler mh = NULL;
832
	int status;
833
	status = create_class_handler(&ch, CLASS_HANDLER_INSTRUMENTED, (const char *)method->GetModule()->GetName(), 1, method->GetModule());
834
	assert(!status);
835
	status = create_method_handler(&mh, ch, METHOD_HANDLER_SELF, method);
836
	assert(!status);
837
	return (mh);
838
}
839
840
extern "C" unsigned short
841
class_cp_get_class_entry(class_handler klass, const char* name)
842
{
843
844
	
845
	CCPClassInfo *cinfo;
846
	if (IS_CLASS_INSTRUMENTED(klass)) {
847
		/*for this class we'll have entry somewhere in some future */
848
		if (strcmp(klass->X.instrumented_class->GetName(), name) == 0) {
849
			return (klass->X.instrumented_class->GetClass().GetThisClass());
850
		}
851
		assert(name);
852
		cinfo = (klass->X.instrumented_class->GetClassBuilder().FindClass(name));
853
		if (cinfo == NULL) {
854
			/*should be created new class antry */
855
			cinfo = *klass->X.instrumented_class->GetClassBuilder().CreateClassConstant(name);
856
			assert(cinfo);
857
		} 
858
		return(cinfo->GetCpIndex());
859
	} else {
860
		assert (!"not implemented yet!");
861
	}
862
	return (0);
863
}
864
865
int
866
initialize_dynamic(get_vm_pointer_t a_get_vm_pointer)
867
{
868
	m_get_vm_pointer = (JNIEnv *(*)(void **))a_get_vm_pointer;
869
	JNIEnv *env;
870
	
871
	env = m_get_vm_pointer((void **)&env);
872
	assert(env);
873
	
874
	if (m_j_l_class) return (0);
875
	
876
	m_j_l_class = (jclass)env->NewGlobalRef(env->FindClass("java/lang/Class"));
877
		assert(m_j_l_class);
878
	
879
	m_j_l_class_getName = env->GetMethodID(m_j_l_class, "getName", "()Ljava/lang/String;");
880
	assert(m_j_l_class_getName);
881
	
882
	m_j_l_class_getClassLoader = env->GetMethodID(m_j_l_class, "getClassLoader", "()Ljava/lang/ClassLoader;");
883
	assert(m_j_l_class_getClassLoader);
884
	
885
	m_j_l_class_isInterface = env->GetMethodID(m_j_l_class, "isInterface", "()Z");
886
	assert(m_j_l_class_isInterface);
887
	
888
	m_j_l_classloader = (jclass)env->NewGlobalRef(env->FindClass("java/lang/ClassLoader"));
889
	assert(m_j_l_classloader);
890
891
	m_j_l_classloader_findLoadedClass = env->GetMethodID(m_j_l_classloader, "findLoadedClass", "(Ljava/lang/String;)Ljava/lang/Class;"); 
892
	assert(m_j_l_classloader_findLoadedClass);
893
894
	return (0);
895
}
896
897
void 
898
class_destroy_handler(class_handler ch) 
899
{
900
	if (ch == NULL) return;
901
	if (!IS_CLASS_INSTRUMENTED(ch) && ch->loaded == 1) {
902
		JNIEnv *env;
903
		env = m_get_vm_pointer((void **)&env);
904
		assert(env);
905
		env->DeleteGlobalRef((jobject)ch->X.simplified_class);
906
	
907
	}
908
	free(ch);
909
	ch = NULL;
910
}

Return to bug 148629