Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mruby
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
mruby
Commits
3c1b3478
Commit
3c1b3478
authored
Apr 20, 2012
by
Yukihiro Matsumoto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove dependency to SIZEOF_LONG/LONG_LONG
parent
2c28d29c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
6 additions
and
72 deletions
+6
-72
include/mrbconf.h
include/mrbconf.h
+0
-3
src/numeric.c
src/numeric.c
+4
-67
src/regint.h
src/regint.h
+2
-2
No files found.
include/mrbconf.h
View file @
3c1b3478
...
@@ -22,9 +22,6 @@ typedef intptr_t mrb_sym;
...
@@ -22,9 +22,6 @@ typedef intptr_t mrb_sym;
#undef HAVE_UNISTD_H
/* WINDOWS */
#undef HAVE_UNISTD_H
/* WINDOWS */
#define HAVE_UNISTD_H
/* LINUX */
#define HAVE_UNISTD_H
/* LINUX */
#define SIZEOF_LONG 4
#define SIZEOF_LONG_LONG 8
#ifndef FALSE
#ifndef FALSE
# define FALSE 0
# define FALSE 0
#endif
#endif
...
...
src/numeric.c
View file @
3c1b3478
...
@@ -88,10 +88,6 @@
...
@@ -88,10 +88,6 @@
#define mrb_rational_raw1(x) mrb_rational_raw(x, INT2FIX(1))
#define mrb_rational_raw1(x) mrb_rational_raw(x, INT2FIX(1))
#if SIZEOF_LONG_LONG > 0
# define LONG_LONG long long
#endif
typedef
uintptr_t
VALUE
;
typedef
uintptr_t
VALUE
;
typedef
uintptr_t
ID
;
typedef
uintptr_t
ID
;
#define SIGNED_VALUE intptr_t
#define SIGNED_VALUE intptr_t
...
@@ -984,55 +980,6 @@ mrb_num2fix(mrb_state *mrb, mrb_value val)
...
@@ -984,55 +980,6 @@ mrb_num2fix(mrb_state *mrb, mrb_value val)
return
mrb_fixnum_value
(
v
);
return
mrb_fixnum_value
(
v
);
}
}
#if HAVE_LONG_LONG
LONG_LONG
mrb_num2ll
(
mrb_state
*
mrb
,
mrb_value
val
)
{
if
(
mrb_nil_p
(
val
))
{
mrb_raise
(
mrb
,
E_TYPE_ERROR
,
"no implicit conversion from nil"
);
}
if
(
FIXNUM_P
(
val
))
return
(
LONG_LONG
)
mrb_fixnum
(
val
);
switch
(
mrb_type
(
val
))
{
case
MRB_TT_FLOAT
:
if
(
mrb_float
(
val
)
<=
(
double
)
LLONG_MAX
&&
mrb_float
(
val
)
>=
(
double
)
LLONG_MIN
)
{
return
(
LONG_LONG
)(
mrb_float
(
val
));
}
else
{
char
buf
[
24
];
char
*
s
;
snprintf
(
buf
,
sizeof
(
buf
),
"%-.10g"
,
mrb_float
(
val
));
if
((
s
=
strchr
(
buf
,
' '
))
!=
0
)
*
s
=
'\0'
;
mrb_raise
(
mrb
,
E_RANGE_ERROR
,
"float %s out of range of long long"
,
buf
);
}
case
MRB_TT_STRING
:
mrb_raise
(
mrb
,
E_TYPE_ERROR
,
"no implicit conversion from string"
);
return
mrb_nil_value
();
/* not reached */
case
MRB_TT_TRUE
:
case
MRB_TT_FALSE
:
mrb_raise
(
mrb
,
E_TYPE_ERROR
,
"no implicit conversion from boolean"
);
return
mrb_nil_value
();
/* not reached */
default:
val
=
mrb_to_int
(
mrb
,
val
);
return
NUM2LL
(
val
);
}
}
unsigned
LONG_LONG
mrb_num2ull
(
mrb_state
*
mrb
,
mrb_value
val
)
{
return
(
unsigned
LONG_LONG
)
mrb_num2ll
(
mrb
,
val
);
}
#endif
/* HAVE_LONG_LONG */
/*
/*
* Document-class: Integer
* Document-class: Integer
*
*
...
@@ -1133,7 +1080,7 @@ rb_fix2str(mrb_state *mrb, mrb_value x, int base)
...
@@ -1133,7 +1080,7 @@ rb_fix2str(mrb_state *mrb, mrb_value x, int base)
return
mrb_usascii_str_new2
(
mrb
,
b
);
return
mrb_usascii_str_new2
(
mrb
,
b
);
}
}
#define SQRT_LONG_MAX ((SIGNED_VALUE)1<<((
SIZEOF_LONG
*CHAR_BIT-1)/2))
#define SQRT_LONG_MAX ((SIGNED_VALUE)1<<((
sizeof(intptr_t)
*CHAR_BIT-1)/2))
/*tests if N*N would overflow*/
/*tests if N*N would overflow*/
#define FIT_SQRT_LONG(n) (((n)<SQRT_LONG_MAX)&&((n)>=-SQRT_LONG_MAX))
#define FIT_SQRT_LONG(n) (((n)<SQRT_LONG_MAX)&&((n)>=-SQRT_LONG_MAX))
...
@@ -1159,21 +1106,12 @@ fix_mul(mrb_state *mrb, mrb_value x)
...
@@ -1159,21 +1106,12 @@ fix_mul(mrb_state *mrb, mrb_value x)
volatile
volatile
#endif
#endif
long
a
,
b
;
long
a
,
b
;
#if SIZEOF_LONG * 2 <= SIZEOF_LONG_LONG
LONG_LONG
d
;
#else
long
c
;
long
c
;
mrb_value
r
;
mrb_value
r
;
#endif
a
=
mrb_fixnum
(
x
);
a
=
mrb_fixnum
(
x
);
b
=
mrb_fixnum
(
y
);
b
=
mrb_fixnum
(
y
);
#if SIZEOF_LONG * 2 <= SIZEOF_LONG_LONG
d
=
(
LONG_LONG
)
a
*
b
;
if
(
FIXABLE
(
d
))
return
mrb_fixnum_value
(
d
);
return
mrb_nil_value
();
// rb_ll2inum(d);
#else
if
(
FIT_SQRT_LONG
(
a
)
&&
FIT_SQRT_LONG
(
b
))
if
(
FIT_SQRT_LONG
(
a
)
&&
FIT_SQRT_LONG
(
b
))
return
mrb_fixnum_value
(
a
*
b
);
return
mrb_fixnum_value
(
a
*
b
);
c
=
a
*
b
;
c
=
a
*
b
;
...
@@ -1185,7 +1123,6 @@ fix_mul(mrb_state *mrb, mrb_value x)
...
@@ -1185,7 +1123,6 @@ fix_mul(mrb_state *mrb, mrb_value x)
r
=
mrb_fixnum_value
(
a
*
b
);
r
=
mrb_fixnum_value
(
a
*
b
);
}
}
return
r
;
return
r
;
#endif
}
}
switch
(
mrb_type
(
y
))
{
switch
(
mrb_type
(
y
))
{
case
MRB_TT_FLOAT
:
case
MRB_TT_FLOAT
:
...
@@ -1519,9 +1456,9 @@ mrb_fix_lshift(mrb_state *mrb, mrb_value x)
...
@@ -1519,9 +1456,9 @@ mrb_fix_lshift(mrb_state *mrb, mrb_value x)
static
mrb_value
static
mrb_value
fix_lshift
(
mrb_state
*
mrb
,
long
val
,
unsigned
long
width
)
fix_lshift
(
mrb_state
*
mrb
,
long
val
,
unsigned
long
width
)
{
{
if
(
width
>
(
SIZEOF_LONG
*
CHAR_BIT
-
1
)
if
(
width
>
(
sizeof
(
intptr_t
)
*
CHAR_BIT
-
1
)
||
((
unsigned
long
)
abs
(
val
))
>>
(
SIZEOF_LONG
*
CHAR_BIT
-
1
-
width
)
>
0
)
{
||
((
unsigned
long
)
abs
(
val
))
>>
(
sizeof
(
intptr_t
)
*
CHAR_BIT
-
1
-
width
)
>
0
)
{
mrb_raise
(
mrb
,
E_RANGE_ERROR
,
"width(%d) > (
SIZEOF_LONG
*CHAR_BIT-1)"
,
width
);
mrb_raise
(
mrb
,
E_RANGE_ERROR
,
"width(%d) > (
sizeof(intptr_t)
*CHAR_BIT-1)"
,
width
);
}
}
val
=
val
<<
width
;
val
=
val
<<
width
;
return
mrb_fixnum_value
(
val
);
return
mrb_fixnum_value
(
val
);
...
...
src/regint.h
View file @
3c1b3478
...
@@ -246,11 +246,11 @@
...
@@ -246,11 +246,11 @@
} while(0)
} while(0)
/* sizeof(OnigCodePoint) */
/* sizeof(OnigCodePoint) */
#define WORD_ALIGNMENT_SIZE
SIZEOF_LONG
#define WORD_ALIGNMENT_SIZE
sizeof(uintptr_t)
#define GET_ALIGNMENT_PAD_SIZE(addr,pad_size) do {\
#define GET_ALIGNMENT_PAD_SIZE(addr,pad_size) do {\
(pad_size) = WORD_ALIGNMENT_SIZE \
(pad_size) = WORD_ALIGNMENT_SIZE \
- ((uintptr_t
)(addr) % WORD_ALIGNMENT_SIZE);\
- ((uintptr_t)(addr) % WORD_ALIGNMENT_SIZE);\
if ((pad_size) == WORD_ALIGNMENT_SIZE) (pad_size) = 0;\
if ((pad_size) == WORD_ALIGNMENT_SIZE) (pad_size) = 0;\
} while (0)
} while (0)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment