55//
66#include " CorLib.h"
77
8-
9- HRESULT Library_corlib_native_System_TimeSpan::Equals___BOOLEAN__OBJECT ( CLR_RT_StackFrame& stack )
8+ HRESULT Library_corlib_native_System_TimeSpan::Equals___BOOLEAN__OBJECT (CLR_RT_StackFrame &stack)
109{
1110 NATIVE_PROFILE_CLR_CORE ();
1211 NANOCLR_HEADER ();
1312
14- NANOCLR_CHECK_HRESULT (CompareTo___I4__OBJECT ( stack ));
13+ NANOCLR_CHECK_HRESULT (CompareTo___I4__OBJECT (stack));
1514
1615 {
17- CLR_RT_HeapBlock& res = stack.TopValue ();
16+ CLR_RT_HeapBlock & res = stack.TopValue ();
1817
19- res.SetBoolean ( res.NumericByRef ().s4 == 0 );
18+ res.SetBoolean (res.NumericByRef ().s4 == 0 );
2019 }
2120
2221 NANOCLR_NOCLEANUP ();
2322}
2423
25- HRESULT Library_corlib_native_System_TimeSpan::ToString___STRING ( CLR_RT_StackFrame& stack )
24+ HRESULT Library_corlib_native_System_TimeSpan::ToString___STRING (CLR_RT_StackFrame & stack)
2625{
2726 NATIVE_PROFILE_CLR_CORE ();
2827 NANOCLR_HEADER ();
2928
30- char rgBuffer[ 128 ];
31- char * szBuffer = rgBuffer;
32- size_t iBuffer = ARRAYSIZE (rgBuffer);
33- CLR_INT64* val = GetValuePtr ( stack ); FAULT_ON_NULL (val);
29+ char rgBuffer[128 ];
30+ char *szBuffer = rgBuffer;
31+ size_t iBuffer = ARRAYSIZE (rgBuffer);
32+ CLR_INT64 *val = GetValuePtr (stack);
33+ FAULT_ON_NULL (val);
3434
35- HAL_Time_TimeSpanToStringEx ( *val, szBuffer, iBuffer );
35+ HAL_Time_TimeSpanToStringEx (*val, szBuffer, iBuffer);
3636
37- NANOCLR_SET_AND_LEAVE (stack.SetResult_String ( rgBuffer ));
37+ NANOCLR_SET_AND_LEAVE (stack.SetResult_String (rgBuffer));
3838
3939 NANOCLR_NOCLEANUP ();
4040}
4141
42- HRESULT Library_corlib_native_System_TimeSpan::_ctor___VOID__I4__I4__I4 ( CLR_RT_StackFrame& stack )
42+ HRESULT Library_corlib_native_System_TimeSpan::_ctor___VOID__I4__I4__I4 (CLR_RT_StackFrame & stack)
4343{
4444 NATIVE_PROFILE_CLR_CORE ();
4545 NANOCLR_HEADER ();
4646
47- CLR_RT_HeapBlock* pArgs = &(stack.Arg1 ());
48- CLR_INT64* val = GetValuePtr ( stack ); FAULT_ON_NULL (val);
47+ CLR_RT_HeapBlock *pArgs = &(stack.Arg1 ());
48+ CLR_INT64 *val = GetValuePtr (stack);
49+ FAULT_ON_NULL (val);
4950
50- ConstructTimeSpan ( val, 0 , pArgs[ 0 ].NumericByRef ().s4 , pArgs[ 1 ].NumericByRef ().s4 , pArgs[ 2 ].NumericByRef ().s4 , 0 );
51+ ConstructTimeSpan (val, 0 , pArgs[0 ].NumericByRef ().s4 , pArgs[1 ].NumericByRef ().s4 , pArgs[2 ].NumericByRef ().s4 , 0 );
5152
5253 NANOCLR_NOCLEANUP ();
5354}
5455
55- HRESULT Library_corlib_native_System_TimeSpan::_ctor___VOID__I4__I4__I4__I4 ( CLR_RT_StackFrame& stack )
56+ HRESULT Library_corlib_native_System_TimeSpan::_ctor___VOID__I4__I4__I4__I4 (CLR_RT_StackFrame & stack)
5657{
5758 NATIVE_PROFILE_CLR_CORE ();
5859 NANOCLR_HEADER ();
5960
60- CLR_RT_HeapBlock* pArgs = &(stack.Arg1 ());
61- CLR_INT64* val = GetValuePtr ( stack ); FAULT_ON_NULL (val);
61+ CLR_RT_HeapBlock *pArgs = &(stack.Arg1 ());
62+ CLR_INT64 *val = GetValuePtr (stack);
63+ FAULT_ON_NULL (val);
6264
63- ConstructTimeSpan ( val, pArgs[ 0 ].NumericByRef ().s4 , pArgs[ 1 ].NumericByRef ().s4 , pArgs[ 2 ].NumericByRef ().s4 , pArgs[ 3 ].NumericByRef ().s4 , 0 );
65+ ConstructTimeSpan (
66+ val,
67+ pArgs[0 ].NumericByRef ().s4 ,
68+ pArgs[1 ].NumericByRef ().s4 ,
69+ pArgs[2 ].NumericByRef ().s4 ,
70+ pArgs[3 ].NumericByRef ().s4 ,
71+ 0 );
6472
6573 NANOCLR_NOCLEANUP ();
6674}
6775
68- HRESULT Library_corlib_native_System_TimeSpan::_ctor___VOID__I4__I4__I4__I4__I4 ( CLR_RT_StackFrame& stack )
76+ HRESULT Library_corlib_native_System_TimeSpan::_ctor___VOID__I4__I4__I4__I4__I4 (CLR_RT_StackFrame & stack)
6977{
7078 NATIVE_PROFILE_CLR_CORE ();
7179 NANOCLR_HEADER ();
7280
73- CLR_RT_HeapBlock* pArgs = &(stack.Arg1 ());
74- CLR_INT64* val = GetValuePtr ( stack ); FAULT_ON_NULL (val);
81+ CLR_RT_HeapBlock *pArgs = &(stack.Arg1 ());
82+ CLR_INT64 *val = GetValuePtr (stack);
83+ FAULT_ON_NULL (val);
7584
76- ConstructTimeSpan ( val, pArgs[ 0 ].NumericByRef ().s4 , pArgs[ 1 ].NumericByRef ().s4 , pArgs[ 2 ].NumericByRef ().s4 , pArgs[ 3 ].NumericByRef ().s4 , pArgs[ 4 ].NumericByRef ().s4 );
85+ ConstructTimeSpan (
86+ val,
87+ pArgs[0 ].NumericByRef ().s4 ,
88+ pArgs[1 ].NumericByRef ().s4 ,
89+ pArgs[2 ].NumericByRef ().s4 ,
90+ pArgs[3 ].NumericByRef ().s4 ,
91+ pArgs[4 ].NumericByRef ().s4 );
7792
7893 NANOCLR_NOCLEANUP ();
7994}
8095
81- void Library_corlib_native_System_TimeSpan::ConstructTimeSpan ( CLR_INT64* val, CLR_INT32 days, CLR_INT32 hours, CLR_INT32 minutes, CLR_INT32 seconds, CLR_INT32 msec )
96+ void Library_corlib_native_System_TimeSpan::ConstructTimeSpan (
97+ CLR_INT64 *val,
98+ CLR_INT32 days,
99+ CLR_INT32 hours,
100+ CLR_INT32 minutes,
101+ CLR_INT32 seconds,
102+ CLR_INT32 msec)
82103
83104{
84- *val = ((CLR_INT64)days) * TIME_CONVERSION__ONEDAY +
85- hours * TIME_CONVERSION__ONEHOUR +
86- minutes * TIME_CONVERSION__ONEMINUTE +
87- seconds * TIME_CONVERSION__ONESECOND;
105+ *val = ((CLR_INT64)days) * TIME_CONVERSION__ONEDAY + hours * TIME_CONVERSION__ONEHOUR +
106+ minutes * TIME_CONVERSION__ONEMINUTE + seconds * TIME_CONVERSION__ONESECOND;
88107
89108 *val *= 1000 ;
90- *val += msec;
91- *val *= TIME_CONVERSION__TICKUNITS;
109+
110+ if ((*val == 0 ) && (msec == -1 ))
111+ {
112+ // this is the edge case for creating a System.Threading.Timeout.InfiniteTimeSpan
113+ *val = -1 ;
114+ }
115+ else
116+ {
117+ // remaining situation, just take the milliseconds value as it is and convert to ticks
118+ *val += msec;
119+ *val *= TIME_CONVERSION__TICKUNITS;
120+ }
92121}
93122
94- HRESULT Library_corlib_native_System_TimeSpan::CompareTo___I4__OBJECT ( CLR_RT_StackFrame& stack )
123+ HRESULT Library_corlib_native_System_TimeSpan::CompareTo___I4__OBJECT (CLR_RT_StackFrame & stack)
95124{
96125 NATIVE_PROFILE_CLR_CORE ();
97126 NANOCLR_HEADER ();
98127
99- CLR_RT_HeapBlock* pRight = stack.Arg1 ().Dereference ();
128+ CLR_RT_HeapBlock * pRight = stack.Arg1 ().Dereference ();
100129
101- if (pRight)
130+ if (pRight)
102131 {
103- NANOCLR_SET_AND_LEAVE (Compare___STATIC__I4__SystemTimeSpan__SystemTimeSpan ( stack ));
132+ NANOCLR_SET_AND_LEAVE (Compare___STATIC__I4__SystemTimeSpan__SystemTimeSpan (stack));
104133 }
105134
106- stack.SetResult_I4 ( 1 );
135+ stack.SetResult_I4 (1 );
107136
108137 NANOCLR_NOCLEANUP ();
109138}
110139
111- HRESULT Library_corlib_native_System_TimeSpan::Compare___STATIC__I4__SystemTimeSpan__SystemTimeSpan ( CLR_RT_StackFrame& stack )
140+ HRESULT Library_corlib_native_System_TimeSpan::Compare___STATIC__I4__SystemTimeSpan__SystemTimeSpan (
141+ CLR_RT_StackFrame &stack)
112142{
113143 NATIVE_PROFILE_CLR_CORE ();
114144 NANOCLR_HEADER ();
115145
116- CLR_INT64* pLeft;
117- CLR_INT64* pRight;
146+ CLR_INT64 * pLeft;
147+ CLR_INT64 * pRight;
118148 CLR_RT_HeapBlock resLeft;
119149 CLR_RT_HeapBlock resRight;
120150
121- pLeft = Library_corlib_native_System_TimeSpan::GetValuePtr ( stack ); FAULT_ON_NULL (pLeft);
122- pRight = Library_corlib_native_System_TimeSpan::GetValuePtr ( stack.Arg1 () ); FAULT_ON_NULL (pRight);
151+ pLeft = Library_corlib_native_System_TimeSpan::GetValuePtr (stack);
152+ FAULT_ON_NULL (pLeft);
153+ pRight = Library_corlib_native_System_TimeSpan::GetValuePtr (stack.Arg1 ());
154+ FAULT_ON_NULL (pRight);
123155
124- resLeft .SetInteger ( *pLeft );
125- resRight.SetInteger ( *pRight );
156+ resLeft.SetInteger (*pLeft);
157+ resRight.SetInteger (*pRight);
126158
127- stack.SetResult_I4 ( CLR_RT_HeapBlock::Compare_Signed_Values ( resLeft, resRight ) );
159+ stack.SetResult_I4 (CLR_RT_HeapBlock::Compare_Signed_Values (resLeft, resRight) );
128160
129161 NANOCLR_NOCLEANUP ();
130162}
131163
132- HRESULT Library_corlib_native_System_TimeSpan::Equals___STATIC__BOOLEAN__SystemTimeSpan__SystemTimeSpan ( CLR_RT_StackFrame& stack )
164+ HRESULT Library_corlib_native_System_TimeSpan::Equals___STATIC__BOOLEAN__SystemTimeSpan__SystemTimeSpan (
165+ CLR_RT_StackFrame &stack)
133166{
134167 NATIVE_PROFILE_CLR_CORE ();
135168 NANOCLR_HEADER ();
136169
137- NANOCLR_CHECK_HRESULT (Compare___STATIC__I4__SystemTimeSpan__SystemTimeSpan ( stack ));
170+ NANOCLR_CHECK_HRESULT (Compare___STATIC__I4__SystemTimeSpan__SystemTimeSpan (stack));
138171
139172 stack.ConvertResultToBoolean ();
140173
@@ -143,51 +176,52 @@ HRESULT Library_corlib_native_System_TimeSpan::Equals___STATIC__BOOLEAN__SystemT
143176
144177// --//
145178
146- CLR_INT64* Library_corlib_native_System_TimeSpan::NewObject ( CLR_RT_StackFrame& stack )
179+ CLR_INT64 * Library_corlib_native_System_TimeSpan::NewObject (CLR_RT_StackFrame & stack)
147180{
148181 NATIVE_PROFILE_CLR_CORE ();
149- CLR_RT_HeapBlock& ref = stack.PushValue ();
182+ CLR_RT_HeapBlock & ref = stack.PushValue ();
150183
151- ref.SetDataId ( CLR_RT_HEAPBLOCK_RAW_ID ( DATATYPE_TIMESPAN, 0 , 1 ) );
152- ref.ClearData ( );
184+ ref.SetDataId (CLR_RT_HEAPBLOCK_RAW_ID (DATATYPE_TIMESPAN, 0 , 1 ) );
185+ ref.ClearData ();
153186
154- return (CLR_INT64*)&ref.NumericByRef ().s8 ;
187+ return (CLR_INT64 *)&ref.NumericByRef ().s8 ;
155188}
156189
157- CLR_INT64* Library_corlib_native_System_TimeSpan::GetValuePtr ( CLR_RT_StackFrame& stack )
190+ CLR_INT64 * Library_corlib_native_System_TimeSpan::GetValuePtr (CLR_RT_StackFrame & stack)
158191{
159192 NATIVE_PROFILE_CLR_CORE ();
160- return GetValuePtr ( stack.Arg0 () );
193+ return GetValuePtr (stack.Arg0 ());
161194}
162195
163- CLR_INT64* Library_corlib_native_System_TimeSpan::GetValuePtr ( CLR_RT_HeapBlock& ref )
196+ CLR_INT64 * Library_corlib_native_System_TimeSpan::GetValuePtr (CLR_RT_HeapBlock & ref)
164197{
165198 NATIVE_PROFILE_CLR_CORE ();
166- CLR_RT_HeapBlock* obj = &ref;
167- CLR_DataType dt = obj->DataType ();
199+ CLR_RT_HeapBlock * obj = &ref;
200+ CLR_DataType dt = obj->DataType ();
168201
169- if (dt == DATATYPE_OBJECT || dt == DATATYPE_BYREF)
202+ if (dt == DATATYPE_OBJECT || dt == DATATYPE_BYREF)
170203 {
171- obj = obj->Dereference (); if (!obj) return NULL ;
204+ obj = obj->Dereference ();
205+ if (!obj)
206+ return NULL ;
172207
173208 dt = obj->DataType ();
174209 }
175210
176- if (dt == DATATYPE_TIMESPAN)
211+ if (dt == DATATYPE_TIMESPAN)
177212 {
178- return (CLR_INT64*)&obj->NumericByRef ().s8 ;
213+ return (CLR_INT64 *)&obj->NumericByRef ().s8 ;
179214 }
180215
181- if (dt == DATATYPE_I8)
216+ if (dt == DATATYPE_I8)
182217 {
183- return (CLR_INT64*)&obj->NumericByRef ().s8 ;
218+ return (CLR_INT64 *)&obj->NumericByRef ().s8 ;
184219 }
185220
186- if (dt == DATATYPE_VALUETYPE && obj->ObjectCls ().m_data == g_CLR_RT_WellKnownTypes.m_TimeSpan .m_data )
221+ if (dt == DATATYPE_VALUETYPE && obj->ObjectCls ().m_data == g_CLR_RT_WellKnownTypes.m_TimeSpan .m_data )
187222 {
188- return (CLR_INT64*)&obj[ FIELD___ticks ].NumericByRef ().s8 ;
223+ return (CLR_INT64 *)&obj[FIELD___ticks].NumericByRef ().s8 ;
189224 }
190225
191226 return NULL ;
192227}
193-
0 commit comments