Commit graph

255 commits

Author SHA1 Message Date
kazu
c8a5126d50 xmalloc never returns NULL
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62390 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-13 00:03:18 +00:00
k0kubun
dd64636a85 mjit.c: print JIT failure
mjit_compile.inc.erb: show unsupported insn name on --jit-verbose=1 too.
Also, removed osboleted workaround. Now some insn-related functions are
declared with MAYBE_UNUSED.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-12 05:04:24 +00:00
k0kubun
8f7d354269 mjit.c: some flags are no longer for GCC
Obviously they are for clang. For simplicity, just inlined them.

Also another obsoleted commant was removed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62369 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-11 12:28:10 +00:00
nobu
58dfae4693 mjit.c: alwasy -fPIC flag to gcc
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62365 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-11 08:57:22 +00:00
nobu
fa6e29175b mjit_config.h: include trailing comma for empty list
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62362 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-11 07:10:37 +00:00
nobu
8f66876988 mjit_config.h: more macros
* Makefie.in, win32/Makefile.sub: add more macros for compiler to
  mjit_config.h.

* mjit.c: unification VC and GCC in progress.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62356 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-11 04:54:15 +00:00
nobu
a16e93fb9e mjit.c: constified command arguments
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62346 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-10 10:07:40 +00:00
nobu
f6ca5edf3e mjit_config.h
* Makefie.in, win32/Makefile.sub: make mjit_config.h from
  configured variables, including necessary options, e.g., `-m32`
  for 32bit binary on 64bit platform.

* mjit.c: always use configured CC command.  as config.h depends
  on the compiler, different compilers cannot work.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62343 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-10 06:22:38 +00:00
nobu
5b794fee39 mjit.c: replaced magic numbers
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-10 01:55:47 +00:00
nobu
9da6b8dfdd mjit.c: chomp suffix first
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-10 01:23:47 +00:00
nobu
b30b1c13ad mjit.c: binary mode
* mjit.c (convert_unit_to_func): write source code in binary
  mode.  not conversion is needed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62338 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-10 01:07:04 +00:00
usa
72ebd85559 append_str don't look the length of string
* mjit.c (compile_c_to_so): use append_str2() and pass the length of
	  so_name.  append_str() uses the size of the 2nd argument, not the
	  length of it.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62337 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-09 15:28:09 +00:00
nobu
57c1d434ae mjit.c: set umask
* mjit.c (start_process): set umask so other users cannot access
  generated files.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-09 15:21:19 +00:00
nobu
932f46ae65 mjit.c: exclusively create
* mjit.c (convert_unit_to_func): create new file exclusively.
  overwriting existing file could cause security issues.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62334 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-09 15:21:18 +00:00
usa
0c8a6c91a0 refoctoring
* mjit.c (compile_c_to_so): refactored.

* mjit.c (init_header_filename): xmalloc never returns NULL.

* mjit.c (init_header_filename): report the filename of the header if failed.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62325 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-08 18:51:33 +00:00
nobu
d2b9f5b3a6 mjit.c: rb_w32_system_tmpdir is not in headers
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62323 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-08 15:47:24 +00:00
nobu
60ea4d03ed mjit.c: revert r62316 partially
* mjit.c (compile_c_to_so): libs is not constant on Windows.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62322 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-08 15:46:11 +00:00
nobu
b2104fa810 mjit.c: ruby_version from version.c
* mjit.c (init_header_filename): get version name from the
  particular global variable, not from the macro in version.h.
  to get rid of re-compilation for each revision.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62318 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-08 15:00:28 +00:00
nobu
cb2fd073d9 mjit.c: argument arrays
* mjit.c (compile_c_to_so): constified constat array and make
  variable arrays local.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-08 15:00:27 +00:00
nobu
ec0a0da84a internal.h: moved ruby_null_device declaration
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-08 08:09:49 +00:00
nobu
e5f0a4b20b mjit.c: make filename in allocated buffer
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-08 02:00:21 +00:00
nobu
93f0613753 mjit.c: untabified [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62289 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-07 14:13:57 +00:00
k0kubun
612985f5bf mjit.c: fix -Wdiscarded-qualifiers warning
../mjit.c: In function ‘system_tmpdir’:
../mjit.c:1231:9: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  tmpdir = "/tmp";
         ^
../mjit.c: At top level:

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-07 14:08:24 +00:00
nobu
a8c03c45c4 mjit.c: system_tmpdir
* mjit.c (system_tmpdir): use system provided temporary directory,
  and TMPDIR as well as mktemp(1), before TMP and "/tmp".

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-07 13:41:32 +00:00
nobu
0dd0971ee7 mjit.c: fix buffer overflow
* mjit.c (sprint_uniq_filename): get rid of silent buffer
  overflow.

* mjit.c (get_uniq_filename, convert_unit_to_func): allocate
  enough buffer before formatting.

* mjit.c (convert_unit_to_func): use DLEXT instead of hard coded
  extension.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62281 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-07 13:26:09 +00:00
k0kubun
a08ab9d1d6 mjit.c: windows should include fcntl.h too
Fixing build failure on mswin by r62279

mjit.c
../mjit.c(1137) : error C2065: 'O_RDONLY' : undeclared identifier
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\cl.EXE"' : return code '0x2'

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62280 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-07 11:44:36 +00:00
nobu
2cb31e5327 mjit.c: FD instead of FILE
* mjit.c (init_header_filename): just FD instead of FILE to check
  file is accessible.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62279 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-07 08:14:15 +00:00
nobu
039db0d2fa mjit.c: fd is no longer valid after fclose
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-07 07:48:24 +00:00
nobu
c5e114528b mjit.c: fix declaration of ruby_null_device
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-07 07:29:02 +00:00
usa
da83d210e0 mjit mswin support (WIP)
* mjit.c (compile_c_to_so): fixed broken xfree position.

	* mjit.c (init_header_filename): refactored.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62273 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-07 03:21:28 +00:00
nobu
f0137f05e1 share ruby_null_device
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-06 23:40:19 +00:00
usa
d8c19c3e6e mjit mswin support (WIP)
* win32/Makefile.sub (LIBRUBYARG_SHARED): define for MJIT because it is used in
  common.mk.

* mjit.c (make_pch): skip temporary for mswin.

* mjit.c (compile_c_to_so, init_header_filename, mjit_init): mswin support.

* mjig_compile.c (mjit_compile): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-06 18:59:18 +00:00
k0kubun
36991485d4 mjit.c: make null device portable
for future mswin support

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62266 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-06 16:57:46 +00:00
k0kubun
e31eedbdb8 mjit.c: prefix "_ruby" to precompiled header too
for consistency and to clarify who created it.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-06 16:16:25 +00:00
nobu
15ede8ae82 mjit.c: try installed header only
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62262 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-06 16:03:10 +00:00
k0kubun
1a64f842ef mjit.c: handle fopen error
[Bug #14441]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62258 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-06 15:19:10 +00:00
kazu
1c8d23796f Fix wrong comment
`ruby_strdup` does not return NULL.
[ci skip]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-06 13:58:04 +00:00
nobu
2b90469ac7 mjit.c: suppress unused-value warning
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62251 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-06 13:23:25 +00:00
nobu
94d89c27d7 mjit.c: fixed missing variable
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-06 10:36:03 +00:00
nobu
4917aef04e mjit.c: build dir prefix
* mjit.c (init_header_filename): prepend basedir to header build
  dir too, so that the header can be found when running not in the
  build directory.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62248 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-06 10:30:53 +00:00
nobu
1f003810c2 thread_pthread.c: cast inside rb_thread_create_mjit_thread
* thread_pthread.c (rb_thread_create_mjit_thread): cast
  worker_func pointer to void pointer inside.  adjusted to the
  declaration in mjit.c and the definition in thread_win32.c.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62242 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-06 01:42:38 +00:00
nobu
75ffce2863 mjit.c: use ruby_strdup as get_string
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62241 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-06 01:42:37 +00:00
k0kubun
b64f7258f4 mjit.c: fix MinGW warning by r62221
mjit.c: In function 'worker':
mjit.c:126:64: warning: passing argument 1 of '_InterlockedExchangePointer' from incompatible pointer type [-Wincompatible-pointer-types]
 #  define MJIT_ATOMIC_SET(var, val) InterlockedExchangePointer(&(var), val)
                                                                ^
mjit.c:828:17: note: in expansion of macro 'MJIT_ATOMIC_SET'
                 MJIT_ATOMIC_SET(node->unit->iseq->body->jit_func, func);
                 ^
In file included from C:/msys64/mingw64/x86_64-w64-mingw32/include/winnt.h:27:0,
                 from C:/msys64/mingw64/x86_64-w64-mingw32/include/minwindef.h:163,
                 from C:/msys64/mingw64/x86_64-w64-mingw32/include/windef.h:8,
                 from C:/msys64/mingw64/x86_64-w64-mingw32/include/windows.h:69,
                 from C:/msys64/mingw64/x86_64-w64-mingw32/include/winsock2.h:23,
                 from ./include/ruby/win32.h:41,
                 from ./include/ruby/defines.h:250,
                 from ./include/ruby/ruby.h:29,
                 from ./include/ruby.h:33,
                 from internal.h:15,
                 from mjit.c:76:
C:/msys64/mingw64/x86_64-w64-mingw32/include/psdk_inc/intrin-impl.h:1420:7: note: expected 'void * volatile*' but argument is of type 'VALUE (**)(struct rb_execution_context_struct *, struct rb_control_frame_struct *) {aka long long unsigned int (**)(struct rb_execution_context_struct *, struct rb_control_frame_struct *)}'
 void *_InterlockedExchangePointer(void *volatile *Target,void *Value) {
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62239 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-05 17:00:43 +00:00
k0kubun
1fd0a7a660 mjit.c: determine prefix of MJIT header at runtime
so that MJIT can work if Ruby is distributed as prebuilt binary.

Now mjit_init() depends on the internal const TMP_RUBY_PREFIX which is
only available after ruby_init_loadpath_safe() (L1608) and before
ruby_init_prelude() (L1681). So the place of mjit_init() is moved.

Makefile.in: Removed static prefix from MJIT_HEADER_ISNTALL_DIR macro.
And this removes the unused LIBRUBY_LIBDIR macro as well.
win32/Makefile.sub: ditto.

Patch by: Lars Kanis <lars@greiz-reinsdorf.de>
[Bug #14445]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-05 16:51:12 +00:00
k0kubun
827322569f mjit.c: prefer using --jit-cc=clang if __clang__
is defined.  This is basically for OpenBSD.

Failure on using the compiler which is
not used for Ruby compilation is not supported.

[Bug #14440]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-05 12:57:24 +00:00
k0kubun
d7195ec5c3 mjit.c: try changing the order of includes
Hoping to fix the AIX's build failure like:

In file included from ./include/ruby/defines.h:139:0,
                 from ./include/ruby/ruby.h:29,
                 from ./include/ruby.h:33,
                 from internal.h:15,
                 from mjit.c:81:
/opt/freeware/lib/gcc/powerpc-ibm-aix7.1.0.0/4.8.1/include-fixed/unistd.h:939:14: error: conflicting types for 'ftruncate64'
  extern int  ftruncate64(int, off64_t);
              ^
In file included from ./include/ruby/defines.h:139:0,
                 from ./include/ruby/ruby.h:29,
                 from ./include/ruby.h:33,
                 from internal.h:15,
                 from mjit.c:81:
/opt/freeware/lib/gcc/powerpc-ibm-aix7.1.0.0/4.8.1/include-fixed/unistd.h:937:14: note: previous declaration of 'ftruncate64' was here
  extern int  ftruncate(int, off_t);
              ^

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62227 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-05 12:33:36 +00:00
shyouhei
8427fca49b assigning void* to a function pointer is a POSIXism
No implicit cast is defined between these types.  Should be explicit.
Also, NULL is defined to be ((void*)0) so not usable as a function
pointer value.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62221 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-05 04:17:44 +00:00
shyouhei
779c18bf23 va_copy is a C99ism
Should provide appropriate fallback implementation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62220 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-05 04:07:25 +00:00
k0kubun
2c179b12de mjit.c: define __EXTENSIONS__ earlier
Another try of r62204 and r62192.

As far as I can see from solaris's signal.h and sys/procset.h, the only
possibility that causes the following error would be that sys/procset.h
is included without __EXTENSIONS__ and signal.h included it again but it
doesn't define procset_t.  Let's define __EXTENSIONS__ from first.

---
In file included from vm_core.h:87:0,
                 from mjit.c:85:
/usr/include/signal.h:77:29: error: unknown type name 'procset_t'
 extern int sigsendset(const procset_t *, int);
                             ^

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62211 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-04 15:40:06 +00:00
k0kubun
ec7dd29902 mjit.c: another try for fixing solaris build
Reverted r62192 and added another try.
I prepared Solaris environment but I couldn't reproduce the RubyCI build
failure. So I'm testing on trunk.

I found the following article and it fixed the same problem with passing
`-D__EXTENSIONS__`. So this commit defines `__EXTENSIONS__` for Solaris.
https://bitbucket.org/ged/ruby-pg/issues/236/compile-error-usr-include-signalh-92-1

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62204 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-04 13:49:38 +00:00