#include "native/llni.h"
-#include "threads/lock-common.h"
+#include "threads/lock.hpp"
#include "threads/mutex.hpp"
#include "threads/thread.hpp"
#include "toolbox/logging.h"
#include "toolbox/util.h"
-#include "vm/array.h"
+#include "vm/array.hpp"
#include "vm/jit/builtin.hpp"
#include "vm/class.h"
#include "vm/cycles-stats.h"
LLNI_vftbl_direct(o) = c->vftbl;
#if defined(ENABLE_THREADS)
- lock_init_object_lock(LLNI_DIRECT(o));
+ LLNI_DIRECT(o)->lockword.init();
#endif
CYCLES_STATS_GET(cycles_end);
LLNI_vftbl_direct(o) = c->vftbl;
# if defined(ENABLE_THREADS)
- lock_init_object_lock(LLNI_DIRECT(o));
+ LLNI_DIRECT(o)->lockword.init();
# endif
CYCLES_STATS_GET(cycles_end);
o->vftbl = c->vftbl;
#if defined(ENABLE_THREADS)
- lock_init_object_lock(o);
+ LLNI_DIRECT(o)->lockword.init();
#endif
CYCLES_STATS_GET(cycles_end);
LLNI_vftbl_direct(a) = arrayclass->vftbl;
#if defined(ENABLE_THREADS)
- lock_init_object_lock(LLNI_DIRECT(a));
+ LLNI_DIRECT(a)->lockword.init();
#endif
LLNI_array_size(a) = size;
{
s8 c;
-#if U8_AVAILABLE
c = a + b;
-#else
- c = builtin_i2l(0);
-#endif
return c;
}
{
s8 c;
-#if U8_AVAILABLE
c = a - b;
-#else
- c = builtin_i2l(0);
-#endif
return c;
}
{
s8 c;
-#if U8_AVAILABLE
c = -a;
-#else
- c = builtin_i2l(0);
-#endif
return c;
}
{
s8 c;
-#if U8_AVAILABLE
c = a * b;
-#else
- c = builtin_i2l(0);
-#endif
return c;
}
{
s8 c;
-#if U8_AVAILABLE
c = a / b;
-#else
- c = builtin_i2l(0);
-#endif
return c;
}
{
s8 c;
-#if U8_AVAILABLE
c = a % b;
-#else
- c = builtin_i2l(0);
-#endif
return c;
}
{
s8 c;
-#if U8_AVAILABLE
c = a << (b & 63);
-#else
- c = builtin_i2l(0);
-#endif
return c;
}
{
s8 c;
-#if U8_AVAILABLE
c = a >> (b & 63);
-#else
- c = builtin_i2l(0);
-#endif
return c;
}
{
s8 c;
-#if U8_AVAILABLE
c = ((u8) a) >> (b & 63);
-#else
- c = builtin_i2l(0);
-#endif
return c;
}
{
s8 c;
-#if U8_AVAILABLE
c = a & b;
-#else
- c = builtin_i2l(0);
-#endif
return c;
}
{
s8 c;
-#if U8_AVAILABLE
c = a | b;
-#else
- c = builtin_i2l(0);
-#endif
return c;
}
{
s8 c;
-#if U8_AVAILABLE
c = a ^ b;
-#else
- c = builtin_i2l(0);
-#endif
return c;
}
#if !(SUPPORT_LONG && SUPPORT_LONG_CMP)
s4 builtin_lcmp(s8 a, s8 b)
{
-#if U8_AVAILABLE
if (a < b)
return -1;
return 1;
return 0;
-#else
- return 0;
-#endif
}
#endif /* !(SUPPORT_LONG && SUPPORT_LONG_CMP) */
/* conversion operations ******************************************************/
-#if 0
-s8 builtin_i2l(s4 i)
-{
-#if U8_AVAILABLE
- return i;
-#else
- s8 v;
- v.high = 0;
- v.low = i;
- return v;
-#endif
-}
-
-s4 builtin_l2i(s8 l)
-{
-#if U8_AVAILABLE
- return (s4) l;
-#else
- return l.low;
-#endif
-}
-#endif
-
-
#if !(SUPPORT_FLOAT && SUPPORT_I2F)
float builtin_i2f(s4 a)
{
#if !(SUPPORT_LONG && SUPPORT_FLOAT && SUPPORT_L2F)
float builtin_l2f(s8 a)
{
-#if U8_AVAILABLE
float f = (float) a;
return f;
-#else
- return 0.0;
-#endif
}
#endif /* !(SUPPORT_LONG && SUPPORT_FLOAT && SUPPORT_L2F) */
#if !(SUPPORT_LONG && SUPPORT_DOUBLE && SUPPORT_L2D)
double builtin_l2d(s8 a)
{
-#if U8_AVAILABLE
double d = (double) a;
return d;
-#else
- return 0.0;
-#endif
}
#endif /* !(SUPPORT_LONG && SUPPORT_DOUBLE && SUPPORT_L2D) */
#endif
#if defined(ENABLE_THREADS)
- lock_init_object_lock(LLNI_DIRECT(co));
+ LLNI_DIRECT(co)->lockword.init();
#endif
LLNI_CRITICAL_END;
#endif
#if defined(ENABLE_THREADS)
- lock_init_object_lock(LLNI_DIRECT(co));
+ LLNI_DIRECT(co)->lockword.init();
#endif
LLNI_CRITICAL_END;