bindex 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +16 -0
- data/.travis.yml +48 -0
- data/CONTRIBUTING.md +15 -0
- data/Gemfile +10 -0
- data/LICENSE.txt +22 -0
- data/README.md +38 -0
- data/Rakefile +48 -0
- data/bindex.gemspec +27 -0
- data/ext/bindex/bindex.h +11 -0
- data/ext/bindex/bindings.c +106 -0
- data/ext/bindex/com/gsamokovarov/bindex/BindingBuilder.java.erb +17 -0
- data/ext/bindex/com/gsamokovarov/bindex/CurrentBindingsIterator.java +54 -0
- data/ext/bindex/com/gsamokovarov/bindex/RubyBindingsCollector.java +34 -0
- data/ext/bindex/com/gsamokovarov/bindex/SetExceptionBindingsEventHook.java +21 -0
- data/ext/bindex/com/gsamokovarov/bindex/ThreadContextInterfaceException.java +14 -0
- data/ext/bindex/com/gsamokovarov/bindex/ThreadContextInternals.java +54 -0
- data/ext/bindex/cruby.c +34 -0
- data/ext/bindex/extconf.rb +29 -0
- data/ext/bindex/ruby_193.h +101 -0
- data/ext/bindex/ruby_193/addr2line.h +21 -0
- data/ext/bindex/ruby_193/constant.h +34 -0
- data/ext/bindex/ruby_193/debug.h +41 -0
- data/ext/bindex/ruby_193/dln.h +50 -0
- data/ext/bindex/ruby_193/encdb.h +167 -0
- data/ext/bindex/ruby_193/eval_intern.h +234 -0
- data/ext/bindex/ruby_193/gc.h +99 -0
- data/ext/bindex/ruby_193/id.h +177 -0
- data/ext/bindex/ruby_193/internal.h +242 -0
- data/ext/bindex/ruby_193/iseq.h +126 -0
- data/ext/bindex/ruby_193/method.h +105 -0
- data/ext/bindex/ruby_193/node.h +504 -0
- data/ext/bindex/ruby_193/parse.h +302 -0
- data/ext/bindex/ruby_193/probes.h +369 -0
- data/ext/bindex/ruby_193/regenc.h +219 -0
- data/ext/bindex/ruby_193/regint.h +850 -0
- data/ext/bindex/ruby_193/regparse.h +362 -0
- data/ext/bindex/ruby_193/revision.h +1 -0
- data/ext/bindex/ruby_193/ruby_atomic.h +175 -0
- data/ext/bindex/ruby_193/siphash.h +48 -0
- data/ext/bindex/ruby_193/thread_pthread.h +51 -0
- data/ext/bindex/ruby_193/thread_win32.h +40 -0
- data/ext/bindex/ruby_193/timev.h +21 -0
- data/ext/bindex/ruby_193/transcode_data.h +117 -0
- data/ext/bindex/ruby_193/transdb.h +186 -0
- data/ext/bindex/ruby_193/verconf.h +12 -0
- data/ext/bindex/ruby_193/version.h +52 -0
- data/ext/bindex/ruby_193/vm_core.h +763 -0
- data/ext/bindex/ruby_193/vm_exec.h +184 -0
- data/ext/bindex/ruby_193/vm_insnhelper.h +220 -0
- data/ext/bindex/ruby_193/vm_opts.h +51 -0
- data/ext/bindex/ruby_20.h +142 -0
- data/ext/bindex/ruby_20/addr2line.h +21 -0
- data/ext/bindex/ruby_20/constant.h +36 -0
- data/ext/bindex/ruby_20/dln.h +50 -0
- data/ext/bindex/ruby_20/encdb.h +169 -0
- data/ext/bindex/ruby_20/eval_intern.h +241 -0
- data/ext/bindex/ruby_20/gc.h +104 -0
- data/ext/bindex/ruby_20/id.h +135 -0
- data/ext/bindex/ruby_20/internal.h +395 -0
- data/ext/bindex/ruby_20/iseq.h +140 -0
- data/ext/bindex/ruby_20/method.h +138 -0
- data/ext/bindex/ruby_20/node.h +541 -0
- data/ext/bindex/ruby_20/parse.h +292 -0
- data/ext/bindex/ruby_20/probes.h +369 -0
- data/ext/bindex/ruby_20/probes_helper.h +67 -0
- data/ext/bindex/ruby_20/regenc.h +227 -0
- data/ext/bindex/ruby_20/regint.h +915 -0
- data/ext/bindex/ruby_20/regparse.h +367 -0
- data/ext/bindex/ruby_20/revision.h +1 -0
- data/ext/bindex/ruby_20/ruby_atomic.h +170 -0
- data/ext/bindex/ruby_20/siphash.h +48 -0
- data/ext/bindex/ruby_20/thread_pthread.h +56 -0
- data/ext/bindex/ruby_20/thread_win32.h +45 -0
- data/ext/bindex/ruby_20/timev.h +21 -0
- data/ext/bindex/ruby_20/transcode_data.h +127 -0
- data/ext/bindex/ruby_20/transdb.h +190 -0
- data/ext/bindex/ruby_20/verconf.h +12 -0
- data/ext/bindex/ruby_20/version.h +52 -0
- data/ext/bindex/ruby_20/vm_core.h +1018 -0
- data/ext/bindex/ruby_20/vm_debug.h +41 -0
- data/ext/bindex/ruby_20/vm_exec.h +173 -0
- data/ext/bindex/ruby_20/vm_insnhelper.h +274 -0
- data/ext/bindex/ruby_20/vm_opts.h +56 -0
- data/ext/bindex/ruby_21.h +142 -0
- data/ext/bindex/ruby_21/addr2line.h +21 -0
- data/ext/bindex/ruby_21/constant.h +36 -0
- data/ext/bindex/ruby_21/dln.h +51 -0
- data/ext/bindex/ruby_21/encdb.h +170 -0
- data/ext/bindex/ruby_21/eval_intern.h +260 -0
- data/ext/bindex/ruby_21/gc.h +101 -0
- data/ext/bindex/ruby_21/id.h +210 -0
- data/ext/bindex/ruby_21/internal.h +889 -0
- data/ext/bindex/ruby_21/iseq.h +136 -0
- data/ext/bindex/ruby_21/method.h +142 -0
- data/ext/bindex/ruby_21/node.h +543 -0
- data/ext/bindex/ruby_21/parse.h +298 -0
- data/ext/bindex/ruby_21/probes.h +401 -0
- data/ext/bindex/ruby_21/probes_helper.h +67 -0
- data/ext/bindex/ruby_21/regenc.h +223 -0
- data/ext/bindex/ruby_21/regint.h +911 -0
- data/ext/bindex/ruby_21/regparse.h +363 -0
- data/ext/bindex/ruby_21/revision.h +1 -0
- data/ext/bindex/ruby_21/ruby_atomic.h +170 -0
- data/ext/bindex/ruby_21/siphash.h +48 -0
- data/ext/bindex/ruby_21/thread_native.h +23 -0
- data/ext/bindex/ruby_21/thread_pthread.h +56 -0
- data/ext/bindex/ruby_21/thread_win32.h +45 -0
- data/ext/bindex/ruby_21/timev.h +42 -0
- data/ext/bindex/ruby_21/transcode_data.h +123 -0
- data/ext/bindex/ruby_21/transdb.h +190 -0
- data/ext/bindex/ruby_21/verconf.h +13 -0
- data/ext/bindex/ruby_21/version.h +52 -0
- data/ext/bindex/ruby_21/vm_core.h +1043 -0
- data/ext/bindex/ruby_21/vm_debug.h +37 -0
- data/ext/bindex/ruby_21/vm_exec.h +182 -0
- data/ext/bindex/ruby_21/vm_insnhelper.h +273 -0
- data/ext/bindex/ruby_21/vm_opts.h +56 -0
- data/ext/bindex/ruby_21preview.h +146 -0
- data/ext/bindex/ruby_21preview/addr2line.h +21 -0
- data/ext/bindex/ruby_21preview/constant.h +36 -0
- data/ext/bindex/ruby_21preview/dln.h +51 -0
- data/ext/bindex/ruby_21preview/encdb.h +270 -0
- data/ext/bindex/ruby_21preview/eval_intern.h +217 -0
- data/ext/bindex/ruby_21preview/gc.h +100 -0
- data/ext/bindex/ruby_21preview/id.h +169 -0
- data/ext/bindex/ruby_21preview/internal.h +765 -0
- data/ext/bindex/ruby_21preview/iseq.h +136 -0
- data/ext/bindex/ruby_21preview/method.h +141 -0
- data/ext/bindex/ruby_21preview/node.h +543 -0
- data/ext/bindex/ruby_21preview/parse.h +298 -0
- data/ext/bindex/ruby_21preview/probes.h +385 -0
- data/ext/bindex/ruby_21preview/probes_helper.h +67 -0
- data/ext/bindex/ruby_21preview/regenc.h +223 -0
- data/ext/bindex/ruby_21preview/regint.h +911 -0
- data/ext/bindex/ruby_21preview/regparse.h +363 -0
- data/ext/bindex/ruby_21preview/revision.h +1 -0
- data/ext/bindex/ruby_21preview/ruby_atomic.h +130 -0
- data/ext/bindex/ruby_21preview/siphash.h +48 -0
- data/ext/bindex/ruby_21preview/thread_native.h +23 -0
- data/ext/bindex/ruby_21preview/thread_pthread.h +56 -0
- data/ext/bindex/ruby_21preview/thread_win32.h +45 -0
- data/ext/bindex/ruby_21preview/timev.h +42 -0
- data/ext/bindex/ruby_21preview/transcode_data.h +123 -0
- data/ext/bindex/ruby_21preview/transdb.h +190 -0
- data/ext/bindex/ruby_21preview/verconf.h +13 -0
- data/ext/bindex/ruby_21preview/version.h +53 -0
- data/ext/bindex/ruby_21preview/vm_core.h +1017 -0
- data/ext/bindex/ruby_21preview/vm_debug.h +37 -0
- data/ext/bindex/ruby_21preview/vm_exec.h +180 -0
- data/ext/bindex/ruby_21preview/vm_insnhelper.h +272 -0
- data/ext/bindex/ruby_21preview/vm_opts.h +56 -0
- data/lib/bindex.rb +10 -0
- data/lib/bindex/jruby.rb +20 -0
- data/lib/bindex/jruby_internals.jar +0 -0
- data/lib/bindex/jruby_internals_9k.jar +0 -0
- data/lib/bindex/rubinius.rb +56 -0
- data/lib/bindex/version.rb +3 -0
- data/test/exception_test.rb +45 -0
- data/test/fixtures/basic_nested_fixture.rb +13 -0
- data/test/fixtures/custom_error_fixture.rb +9 -0
- data/test/fixtures/eval_nested_fixture.rb +13 -0
- data/test/fixtures/flat_fixture.rb +7 -0
- data/test/test_helper.rb +17 -0
- metadata +270 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
package com.gsamokovarov.bindex;
|
|
2
|
+
|
|
3
|
+
import org.jruby.runtime.EventHook;
|
|
4
|
+
import org.jruby.runtime.RubyEvent;
|
|
5
|
+
import org.jruby.runtime.ThreadContext;
|
|
6
|
+
import org.jruby.runtime.builtin.IRubyObject;
|
|
7
|
+
import org.jruby.RubyArray;
|
|
8
|
+
import org.jruby.RubyException;
|
|
9
|
+
|
|
10
|
+
public class SetExceptionBindingsEventHook extends EventHook {
|
|
11
|
+
public boolean isInterestedInEvent(RubyEvent event) {
|
|
12
|
+
return event == RubyEvent.RAISE;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public void eventHandler(ThreadContext context, String eventName, String file, int line, String name, IRubyObject type) {
|
|
16
|
+
RubyArray bindings = RubyBindingsCollector.collectCurrentFor(context);
|
|
17
|
+
RubyException exception = (RubyException) context.runtime.getGlobalVariables().get("$!");
|
|
18
|
+
|
|
19
|
+
exception.setInstanceVariable("@bindings", bindings);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
package com.gsamokovarov.bindex;
|
|
2
|
+
|
|
3
|
+
class ThreadContextInterfaceException extends RuntimeException {
|
|
4
|
+
private static final String MESSAGE_TEMPLATE =
|
|
5
|
+
"Expected private field %s in ThreadContext is missing";
|
|
6
|
+
|
|
7
|
+
ThreadContextInterfaceException(String fieldName) {
|
|
8
|
+
super(String.format(MESSAGE_TEMPLATE, fieldName));
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
ThreadContextInterfaceException(String fieldName, Throwable cause) {
|
|
12
|
+
super(String.format(MESSAGE_TEMPLATE, fieldName), cause);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
package com.gsamokovarov.bindex;
|
|
2
|
+
|
|
3
|
+
import java.lang.reflect.Field;
|
|
4
|
+
import org.jruby.runtime.ThreadContext;
|
|
5
|
+
import org.jruby.runtime.DynamicScope;
|
|
6
|
+
import org.jruby.runtime.Frame;
|
|
7
|
+
import org.jruby.runtime.backtrace.BacktraceElement;
|
|
8
|
+
import org.jruby.runtime.builtin.IRubyObject;
|
|
9
|
+
|
|
10
|
+
public class ThreadContextInternals {
|
|
11
|
+
private ThreadContext context;
|
|
12
|
+
|
|
13
|
+
public ThreadContextInternals(ThreadContext context) {
|
|
14
|
+
this.context = context;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public Frame[] getFrameStack() {
|
|
18
|
+
return (Frame[]) getPrivateField("frameStack");
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public int getFrameIndex() {
|
|
22
|
+
return (Integer) getPrivateField("frameIndex");
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public DynamicScope[] getScopeStack() {
|
|
26
|
+
return (DynamicScope[]) getPrivateField("scopeStack");
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public int getScopeIndex() {
|
|
30
|
+
return (Integer) getPrivateField("scopeIndex");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public BacktraceElement[] getBacktrace() {
|
|
34
|
+
return (BacktraceElement[]) getPrivateField("backtrace");
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public int getBacktraceIndex() {
|
|
38
|
+
return (Integer) getPrivateField("backtraceIndex");
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
private Object getPrivateField(String fieldName) {
|
|
42
|
+
try {
|
|
43
|
+
Field field = ThreadContext.class.getDeclaredField(fieldName);
|
|
44
|
+
|
|
45
|
+
field.setAccessible(true);
|
|
46
|
+
|
|
47
|
+
return field.get(context);
|
|
48
|
+
} catch (NoSuchFieldException exc) {
|
|
49
|
+
throw new ThreadContextInterfaceException(fieldName, exc);
|
|
50
|
+
} catch (IllegalAccessException exc) {
|
|
51
|
+
throw new ThreadContextInterfaceException(fieldName, exc);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
data/ext/bindex/cruby.c
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#include "bindex.h"
|
|
2
|
+
|
|
3
|
+
static VALUE
|
|
4
|
+
bx_exc_set_backtrace(VALUE self, VALUE bt)
|
|
5
|
+
{
|
|
6
|
+
/* rb_check_backtrace can raise an exception, if the input arguments are not
|
|
7
|
+
* to its likings. Set the bindings afterwards, so we don't waste when not
|
|
8
|
+
* needed. */
|
|
9
|
+
VALUE backtrace = rb_iv_set(self, "bt", rb_check_backtrace(bt));
|
|
10
|
+
|
|
11
|
+
rb_iv_set(self, "bindings", current_bindings());
|
|
12
|
+
|
|
13
|
+
return backtrace;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static VALUE
|
|
17
|
+
bx_exc_bindings(VALUE self, VALUE bt)
|
|
18
|
+
{
|
|
19
|
+
VALUE bindings;
|
|
20
|
+
|
|
21
|
+
bindings = rb_iv_get(self, "bindings");
|
|
22
|
+
if (NIL_P(bindings)) {
|
|
23
|
+
bindings = rb_ary_new();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return bindings;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
void
|
|
30
|
+
Init_cruby(void)
|
|
31
|
+
{
|
|
32
|
+
rb_define_method(rb_eException, "set_backtrace", bx_exc_set_backtrace, 1);
|
|
33
|
+
rb_define_method(rb_eException, "bindings", bx_exc_bindings, 0);
|
|
34
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
case RUBY_ENGINE
|
|
2
|
+
when "ruby"
|
|
3
|
+
require "mkmf"
|
|
4
|
+
|
|
5
|
+
case "#{RUBY_VERSION}#{RUBY_PATCHLEVEL}"
|
|
6
|
+
when /1\.9\.3/
|
|
7
|
+
$CFLAGS << " -D RUBY_193"
|
|
8
|
+
$INCFLAGS << " -I./ruby_193/"
|
|
9
|
+
when /2\.0\.*/
|
|
10
|
+
$CFLAGS << " -D RUBY_20"
|
|
11
|
+
$INCFLAGS << " -I./ruby_20/"
|
|
12
|
+
when "2.1.0-1"
|
|
13
|
+
$CFLAGS << " -D RUBY_21PREVIEW"
|
|
14
|
+
$INCFLAGS << " -I./ruby_21PREVIEW/"
|
|
15
|
+
when /2\.1\.*/
|
|
16
|
+
$CFLAGS << " -D RUBY_21"
|
|
17
|
+
$INCFLAGS << " -I./ruby_21/"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
$CFLAGS << " -g3 -O0" if ENV["DEBUG"]
|
|
21
|
+
|
|
22
|
+
create_makefile("bindex/cruby")
|
|
23
|
+
else
|
|
24
|
+
IO.write(File.expand_path("../Makefile", __FILE__), <<-END)
|
|
25
|
+
all install static install-so install-rb: Makefile
|
|
26
|
+
.PHONY: all install static install-so install-rb
|
|
27
|
+
.PHONY: clean clean-so clean-static clean-rb
|
|
28
|
+
END
|
|
29
|
+
end
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
|
|
3
|
+
Copyright (C) 1993-2013 Yukihiro Matsumoto. All rights reserved.
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions
|
|
7
|
+
are met:
|
|
8
|
+
1. Redistributions of source code must retain the above copyright
|
|
9
|
+
notice, this list of conditions and the following disclaimer.
|
|
10
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
11
|
+
notice, this list of conditions and the following disclaimer in the
|
|
12
|
+
documentation and/or other materials provided with the distribution.
|
|
13
|
+
|
|
14
|
+
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
15
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
16
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
17
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
18
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
19
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
20
|
+
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
21
|
+
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
22
|
+
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
23
|
+
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
24
|
+
SUCH DAMAGE.
|
|
25
|
+
|
|
26
|
+
**********************************************************************/
|
|
27
|
+
#ifndef _RUBY_193_H
|
|
28
|
+
#define _RUBY_193_H
|
|
29
|
+
|
|
30
|
+
#include "ruby_193/gc.h"
|
|
31
|
+
#include "ruby_193/internal.h"
|
|
32
|
+
#include "ruby_193/vm_core.h"
|
|
33
|
+
|
|
34
|
+
static void
|
|
35
|
+
binding_free(void *ptr)
|
|
36
|
+
{
|
|
37
|
+
rb_binding_t *bind;
|
|
38
|
+
RUBY_FREE_ENTER("binding");
|
|
39
|
+
if (ptr) {
|
|
40
|
+
bind = ptr;
|
|
41
|
+
ruby_xfree(ptr);
|
|
42
|
+
}
|
|
43
|
+
RUBY_FREE_LEAVE("binding");
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
static void
|
|
47
|
+
binding_mark(void *ptr)
|
|
48
|
+
{
|
|
49
|
+
rb_binding_t *bind;
|
|
50
|
+
RUBY_MARK_ENTER("binding");
|
|
51
|
+
if (ptr) {
|
|
52
|
+
bind = ptr;
|
|
53
|
+
RUBY_MARK_UNLESS_NULL(bind->env);
|
|
54
|
+
RUBY_MARK_UNLESS_NULL(bind->filename);
|
|
55
|
+
}
|
|
56
|
+
RUBY_MARK_LEAVE("binding");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
static size_t
|
|
60
|
+
binding_memsize(const void *ptr)
|
|
61
|
+
{
|
|
62
|
+
return ptr ? sizeof(rb_binding_t) : 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static const rb_data_type_t binding_data_type = {
|
|
66
|
+
"binding",
|
|
67
|
+
{binding_mark, binding_free, binding_memsize,},
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
static VALUE
|
|
71
|
+
binding_alloc(VALUE klass)
|
|
72
|
+
{
|
|
73
|
+
VALUE obj;
|
|
74
|
+
rb_binding_t *bind;
|
|
75
|
+
obj = TypedData_Make_Struct(klass, rb_binding_t, &binding_data_type, bind);
|
|
76
|
+
return obj;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
VALUE
|
|
80
|
+
rb_check_backtrace(VALUE bt)
|
|
81
|
+
{
|
|
82
|
+
long i;
|
|
83
|
+
static const char err[] = "backtrace must be Array of String";
|
|
84
|
+
|
|
85
|
+
if (!NIL_P(bt)) {
|
|
86
|
+
int t = TYPE(bt);
|
|
87
|
+
|
|
88
|
+
if (t == T_STRING) return rb_ary_new3(1, bt);
|
|
89
|
+
if (t != T_ARRAY) {
|
|
90
|
+
rb_raise(rb_eTypeError, err);
|
|
91
|
+
}
|
|
92
|
+
for (i=0;i<RARRAY_LEN(bt);i++) {
|
|
93
|
+
if (TYPE(RARRAY_PTR(bt)[i]) != T_STRING) {
|
|
94
|
+
rb_raise(rb_eTypeError, err);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return bt;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
#endif
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
|
|
3
|
+
addr2line.h -
|
|
4
|
+
|
|
5
|
+
$Author$
|
|
6
|
+
|
|
7
|
+
Copyright (C) 2010 Shinichiro Hamaji
|
|
8
|
+
|
|
9
|
+
**********************************************************************/
|
|
10
|
+
|
|
11
|
+
#ifndef RUBY_ADDR2LINE_H
|
|
12
|
+
#define RUBY_ADDR2LINE_H
|
|
13
|
+
|
|
14
|
+
#ifdef USE_ELF
|
|
15
|
+
|
|
16
|
+
void
|
|
17
|
+
rb_dump_backtrace_with_lines(int num_traces, void **traces, char **syms);
|
|
18
|
+
|
|
19
|
+
#endif /* USE_ELF */
|
|
20
|
+
|
|
21
|
+
#endif /* RUBY_ADDR2LINE_H */
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
|
|
3
|
+
constant.h -
|
|
4
|
+
|
|
5
|
+
$Author$
|
|
6
|
+
created at: Sun Nov 15 00:09:33 2009
|
|
7
|
+
|
|
8
|
+
Copyright (C) 2009 Yusuke Endoh
|
|
9
|
+
|
|
10
|
+
**********************************************************************/
|
|
11
|
+
#ifndef CONSTANT_H
|
|
12
|
+
#define CONSTANT_H
|
|
13
|
+
|
|
14
|
+
typedef enum {
|
|
15
|
+
CONST_PUBLIC = 0x00,
|
|
16
|
+
CONST_PRIVATE = 0x01
|
|
17
|
+
} rb_const_flag_t;
|
|
18
|
+
|
|
19
|
+
typedef struct rb_const_entry_struct {
|
|
20
|
+
rb_const_flag_t flag;
|
|
21
|
+
VALUE value; /* should be mark */
|
|
22
|
+
} rb_const_entry_t;
|
|
23
|
+
|
|
24
|
+
VALUE rb_mod_private_constant(int argc, VALUE *argv, VALUE obj);
|
|
25
|
+
VALUE rb_mod_public_constant(int argc, VALUE *argv, VALUE obj);
|
|
26
|
+
void rb_free_const_table(st_table *tbl);
|
|
27
|
+
VALUE rb_public_const_get(VALUE klass, ID id);
|
|
28
|
+
VALUE rb_public_const_get_at(VALUE klass, ID id);
|
|
29
|
+
VALUE rb_public_const_get_from(VALUE klass, ID id);
|
|
30
|
+
int rb_public_const_defined(VALUE klass, ID id);
|
|
31
|
+
int rb_public_const_defined_at(VALUE klass, ID id);
|
|
32
|
+
int rb_public_const_defined_from(VALUE klass, ID id);
|
|
33
|
+
|
|
34
|
+
#endif /* CONSTANT_H */
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
|
|
3
|
+
debug.h - YARV Debug function interface
|
|
4
|
+
|
|
5
|
+
$Author$
|
|
6
|
+
created at: 04/08/25 02:33:49 JST
|
|
7
|
+
|
|
8
|
+
Copyright (C) 2004-2007 Koichi Sasada
|
|
9
|
+
|
|
10
|
+
**********************************************************************/
|
|
11
|
+
|
|
12
|
+
#ifndef RUBY_DEBUG_H
|
|
13
|
+
#define RUBY_DEBUG_H
|
|
14
|
+
|
|
15
|
+
#include "ruby/ruby.h"
|
|
16
|
+
#include "node.h"
|
|
17
|
+
|
|
18
|
+
#if defined __GNUC__ && __GNUC__ >= 4
|
|
19
|
+
#pragma GCC visibility push(default)
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
#define dpv(h,v) ruby_debug_print_value(-1, 0, (h), (v))
|
|
23
|
+
#define dp(v) ruby_debug_print_value(-1, 0, "", (v))
|
|
24
|
+
#define dpi(i) ruby_debug_print_id(-1, 0, "", (i))
|
|
25
|
+
#define dpn(n) ruby_debug_print_node(-1, 0, "", (n))
|
|
26
|
+
|
|
27
|
+
#define bp() ruby_debug_breakpoint()
|
|
28
|
+
|
|
29
|
+
VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v);
|
|
30
|
+
ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id);
|
|
31
|
+
NODE *ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node);
|
|
32
|
+
int ruby_debug_print_indent(int level, int debug_level, int indent_level);
|
|
33
|
+
void ruby_debug_breakpoint(void);
|
|
34
|
+
void ruby_debug_gc_check_func(void);
|
|
35
|
+
void ruby_set_debug_option(const char *str);
|
|
36
|
+
|
|
37
|
+
#if defined __GNUC__ && __GNUC__ >= 4
|
|
38
|
+
#pragma GCC visibility pop
|
|
39
|
+
#endif
|
|
40
|
+
|
|
41
|
+
#endif /* RUBY_DEBUG_H */
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
|
|
3
|
+
dln.h -
|
|
4
|
+
|
|
5
|
+
$Author$
|
|
6
|
+
created at: Wed Jan 19 16:53:09 JST 1994
|
|
7
|
+
|
|
8
|
+
Copyright (C) 1993-2007 Yukihiro Matsumoto
|
|
9
|
+
|
|
10
|
+
**********************************************************************/
|
|
11
|
+
|
|
12
|
+
#ifndef DLN_H
|
|
13
|
+
#define DLN_H
|
|
14
|
+
|
|
15
|
+
#ifdef __cplusplus
|
|
16
|
+
# ifndef HAVE_PROTOTYPES
|
|
17
|
+
# define HAVE_PROTOTYPES 1
|
|
18
|
+
# endif
|
|
19
|
+
# ifndef HAVE_STDARG_PROTOTYPES
|
|
20
|
+
# define HAVE_STDARG_PROTOTYPES 1
|
|
21
|
+
# endif
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#undef _
|
|
25
|
+
#ifdef HAVE_PROTOTYPES
|
|
26
|
+
# define _(args) args
|
|
27
|
+
#else
|
|
28
|
+
# define _(args) ()
|
|
29
|
+
#endif
|
|
30
|
+
|
|
31
|
+
#if defined __GNUC__ && __GNUC__ >= 4
|
|
32
|
+
#pragma GCC visibility push(default)
|
|
33
|
+
#endif
|
|
34
|
+
|
|
35
|
+
DEPRECATED(char *dln_find_exe(const char*,const char*));
|
|
36
|
+
DEPRECATED(char *dln_find_file(const char*,const char*));
|
|
37
|
+
char *dln_find_exe_r(const char*,const char*,char*,size_t);
|
|
38
|
+
char *dln_find_file_r(const char*,const char*,char*,size_t);
|
|
39
|
+
|
|
40
|
+
#ifdef USE_DLN_A_OUT
|
|
41
|
+
extern char *dln_argv0;
|
|
42
|
+
#endif
|
|
43
|
+
|
|
44
|
+
void *dln_load(const char*);
|
|
45
|
+
|
|
46
|
+
#if defined __GNUC__ && __GNUC__ >= 4
|
|
47
|
+
#pragma GCC visibility pop
|
|
48
|
+
#endif
|
|
49
|
+
|
|
50
|
+
#endif
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
ENC_DEFINE("ASCII-8BIT");
|
|
2
|
+
ENC_DEFINE("Big5");
|
|
3
|
+
ENC_DEFINE("Big5-HKSCS");
|
|
4
|
+
ENC_DEFINE("Big5-UAO");
|
|
5
|
+
ENC_DEFINE("CP949");
|
|
6
|
+
ENC_DEFINE("Emacs-Mule");
|
|
7
|
+
ENC_DEFINE("EUC-JP");
|
|
8
|
+
ENC_DEFINE("EUC-KR");
|
|
9
|
+
ENC_DEFINE("EUC-TW");
|
|
10
|
+
ENC_DEFINE("GB18030");
|
|
11
|
+
ENC_DEFINE("GBK");
|
|
12
|
+
ENC_DEFINE("ISO-8859-1");
|
|
13
|
+
ENC_DEFINE("ISO-8859-2");
|
|
14
|
+
ENC_DEFINE("ISO-8859-3");
|
|
15
|
+
ENC_DEFINE("ISO-8859-4");
|
|
16
|
+
ENC_DEFINE("ISO-8859-5");
|
|
17
|
+
ENC_DEFINE("ISO-8859-6");
|
|
18
|
+
ENC_DEFINE("ISO-8859-7");
|
|
19
|
+
ENC_DEFINE("ISO-8859-8");
|
|
20
|
+
ENC_DEFINE("ISO-8859-9");
|
|
21
|
+
ENC_DEFINE("ISO-8859-10");
|
|
22
|
+
ENC_DEFINE("ISO-8859-11");
|
|
23
|
+
ENC_DEFINE("ISO-8859-13");
|
|
24
|
+
ENC_DEFINE("ISO-8859-14");
|
|
25
|
+
ENC_DEFINE("ISO-8859-15");
|
|
26
|
+
ENC_DEFINE("ISO-8859-16");
|
|
27
|
+
ENC_DEFINE("KOI8-R");
|
|
28
|
+
ENC_DEFINE("KOI8-U");
|
|
29
|
+
ENC_DEFINE("Shift_JIS");
|
|
30
|
+
ENC_DEFINE("US-ASCII");
|
|
31
|
+
ENC_DEFINE("UTF-8");
|
|
32
|
+
ENC_DEFINE("UTF-16BE");
|
|
33
|
+
ENC_DEFINE("UTF-16LE");
|
|
34
|
+
ENC_DEFINE("UTF-32BE");
|
|
35
|
+
ENC_DEFINE("UTF-32LE");
|
|
36
|
+
ENC_DEFINE("Windows-1251");
|
|
37
|
+
ENC_ALIAS("BINARY", "ASCII-8BIT");
|
|
38
|
+
ENC_REPLICATE("IBM437", "ASCII-8BIT");
|
|
39
|
+
ENC_ALIAS("CP437", "IBM437");
|
|
40
|
+
ENC_REPLICATE("IBM737", "ASCII-8BIT");
|
|
41
|
+
ENC_ALIAS("CP737", "IBM737");
|
|
42
|
+
ENC_REPLICATE("IBM775", "ASCII-8BIT");
|
|
43
|
+
ENC_ALIAS("CP775", "IBM775");
|
|
44
|
+
ENC_REPLICATE("CP850", "ASCII-8BIT");
|
|
45
|
+
ENC_ALIAS("IBM850", "CP850");
|
|
46
|
+
ENC_REPLICATE("IBM852", "ASCII-8BIT");
|
|
47
|
+
ENC_REPLICATE("CP852", "IBM852");
|
|
48
|
+
ENC_REPLICATE("IBM855", "ASCII-8BIT");
|
|
49
|
+
ENC_REPLICATE("CP855", "IBM855");
|
|
50
|
+
ENC_REPLICATE("IBM857", "ASCII-8BIT");
|
|
51
|
+
ENC_ALIAS("CP857", "IBM857");
|
|
52
|
+
ENC_REPLICATE("IBM860", "ASCII-8BIT");
|
|
53
|
+
ENC_ALIAS("CP860", "IBM860");
|
|
54
|
+
ENC_REPLICATE("IBM861", "ASCII-8BIT");
|
|
55
|
+
ENC_ALIAS("CP861", "IBM861");
|
|
56
|
+
ENC_REPLICATE("IBM862", "ASCII-8BIT");
|
|
57
|
+
ENC_ALIAS("CP862", "IBM862");
|
|
58
|
+
ENC_REPLICATE("IBM863", "ASCII-8BIT");
|
|
59
|
+
ENC_ALIAS("CP863", "IBM863");
|
|
60
|
+
ENC_REPLICATE("IBM864", "ASCII-8BIT");
|
|
61
|
+
ENC_ALIAS("CP864", "IBM864");
|
|
62
|
+
ENC_REPLICATE("IBM865", "ASCII-8BIT");
|
|
63
|
+
ENC_ALIAS("CP865", "IBM865");
|
|
64
|
+
ENC_REPLICATE("IBM866", "ASCII-8BIT");
|
|
65
|
+
ENC_ALIAS("CP866", "IBM866");
|
|
66
|
+
ENC_REPLICATE("IBM869", "ASCII-8BIT");
|
|
67
|
+
ENC_ALIAS("CP869", "IBM869");
|
|
68
|
+
ENC_REPLICATE("Windows-1258", "ASCII-8BIT");
|
|
69
|
+
ENC_ALIAS("CP1258", "Windows-1258");
|
|
70
|
+
ENC_REPLICATE("GB1988", "ASCII-8BIT");
|
|
71
|
+
ENC_REPLICATE("macCentEuro", "ASCII-8BIT");
|
|
72
|
+
ENC_REPLICATE("macCroatian", "ASCII-8BIT");
|
|
73
|
+
ENC_REPLICATE("macCyrillic", "ASCII-8BIT");
|
|
74
|
+
ENC_REPLICATE("macGreek", "ASCII-8BIT");
|
|
75
|
+
ENC_REPLICATE("macIceland", "ASCII-8BIT");
|
|
76
|
+
ENC_REPLICATE("macRoman", "ASCII-8BIT");
|
|
77
|
+
ENC_REPLICATE("macRomania", "ASCII-8BIT");
|
|
78
|
+
ENC_REPLICATE("macThai", "ASCII-8BIT");
|
|
79
|
+
ENC_REPLICATE("macTurkish", "ASCII-8BIT");
|
|
80
|
+
ENC_REPLICATE("macUkraine", "ASCII-8BIT");
|
|
81
|
+
ENC_REPLICATE("CP950", "Big5");
|
|
82
|
+
ENC_SET_BASE("Big5-HKSCS", "Big5");
|
|
83
|
+
ENC_ALIAS("Big5-HKSCS:2008", "Big5-HKSCS");
|
|
84
|
+
ENC_REPLICATE("CP951", "Big5-HKSCS");
|
|
85
|
+
ENC_SET_BASE("Big5-UAO", "Big5");
|
|
86
|
+
ENC_REPLICATE("stateless-ISO-2022-JP", "Emacs-Mule");
|
|
87
|
+
ENC_ALIAS("eucJP", "EUC-JP") /* UI-OSF Application Platform Profile for Japanese Environment Version 1.1 */;
|
|
88
|
+
ENC_REPLICATE("eucJP-ms", "EUC-JP") /* TOG/JVC CDE/Motif Technical WG */;
|
|
89
|
+
ENC_ALIAS("euc-jp-ms", "eucJP-ms");
|
|
90
|
+
ENC_REPLICATE("CP51932", "EUC-JP");
|
|
91
|
+
ENC_ALIAS("eucKR", "EUC-KR");
|
|
92
|
+
ENC_ALIAS("eucTW", "EUC-TW");
|
|
93
|
+
ENC_ALIAS("EUC-CN", "GB2312");
|
|
94
|
+
ENC_ALIAS("eucCN", "GB2312");
|
|
95
|
+
ENC_REPLICATE("GB12345", "GB2312");
|
|
96
|
+
ENC_ALIAS("CP936", "GBK");
|
|
97
|
+
ENC_DUMMY("ISO-2022-JP");
|
|
98
|
+
ENC_ALIAS("ISO2022-JP", "ISO-2022-JP");
|
|
99
|
+
ENC_REPLICATE("ISO-2022-JP-2", "ISO-2022-JP");
|
|
100
|
+
ENC_ALIAS("ISO2022-JP2", "ISO-2022-JP-2");
|
|
101
|
+
ENC_REPLICATE("CP50220", "ISO-2022-JP");
|
|
102
|
+
ENC_REPLICATE("CP50221", "ISO-2022-JP");
|
|
103
|
+
ENC_ALIAS("ISO8859-1", "ISO-8859-1");
|
|
104
|
+
ENC_REPLICATE("Windows-1252", "ISO-8859-1");
|
|
105
|
+
ENC_ALIAS("CP1252", "Windows-1252");
|
|
106
|
+
ENC_ALIAS("ISO8859-2", "ISO-8859-2");
|
|
107
|
+
ENC_REPLICATE("Windows-1250", "ISO-8859-2");
|
|
108
|
+
ENC_ALIAS("CP1250", "Windows-1250");
|
|
109
|
+
ENC_ALIAS("ISO8859-3", "ISO-8859-3");
|
|
110
|
+
ENC_ALIAS("ISO8859-4", "ISO-8859-4");
|
|
111
|
+
ENC_ALIAS("ISO8859-5", "ISO-8859-5");
|
|
112
|
+
ENC_ALIAS("ISO8859-6", "ISO-8859-6");
|
|
113
|
+
ENC_REPLICATE("Windows-1256", "ISO-8859-6");
|
|
114
|
+
ENC_ALIAS("CP1256", "Windows-1256");
|
|
115
|
+
ENC_ALIAS("ISO8859-7", "ISO-8859-7");
|
|
116
|
+
ENC_REPLICATE("Windows-1253", "ISO-8859-7");
|
|
117
|
+
ENC_ALIAS("CP1253", "Windows-1253");
|
|
118
|
+
ENC_ALIAS("ISO8859-8", "ISO-8859-8");
|
|
119
|
+
ENC_REPLICATE("Windows-1255", "ISO-8859-8");
|
|
120
|
+
ENC_ALIAS("CP1255", "Windows-1255");
|
|
121
|
+
ENC_ALIAS("ISO8859-9", "ISO-8859-9");
|
|
122
|
+
ENC_REPLICATE("Windows-1254", "ISO-8859-9");
|
|
123
|
+
ENC_ALIAS("CP1254", "Windows-1254");
|
|
124
|
+
ENC_ALIAS("ISO8859-10", "ISO-8859-10");
|
|
125
|
+
ENC_ALIAS("ISO8859-11", "ISO-8859-11");
|
|
126
|
+
ENC_REPLICATE("TIS-620", "ISO-8859-11");
|
|
127
|
+
ENC_REPLICATE("Windows-874", "ISO-8859-11");
|
|
128
|
+
ENC_ALIAS("CP874", "Windows-874");
|
|
129
|
+
ENC_ALIAS("ISO8859-13", "ISO-8859-13");
|
|
130
|
+
ENC_REPLICATE("Windows-1257", "ISO-8859-13");
|
|
131
|
+
ENC_ALIAS("CP1257", "Windows-1257");
|
|
132
|
+
ENC_ALIAS("ISO8859-14", "ISO-8859-14");
|
|
133
|
+
ENC_ALIAS("ISO8859-15", "ISO-8859-15");
|
|
134
|
+
ENC_ALIAS("ISO8859-16", "ISO-8859-16");
|
|
135
|
+
ENC_ALIAS("CP878", "KOI8-R");
|
|
136
|
+
ENC_REPLICATE("Windows-31J", "Shift_JIS");
|
|
137
|
+
ENC_ALIAS("CP932", "Windows-31J");
|
|
138
|
+
ENC_ALIAS("csWindows31J", "Windows-31J") /* IANA. IE6 don't accept Windows-31J but csWindows31J. */;
|
|
139
|
+
ENC_ALIAS("SJIS", "Windows-31J");
|
|
140
|
+
ENC_ALIAS("PCK", "Windows-31J");
|
|
141
|
+
ENC_REPLICATE("MacJapanese", "Shift_JIS");
|
|
142
|
+
ENC_ALIAS("MacJapan", "MacJapanese");
|
|
143
|
+
ENC_ALIAS("ASCII", "US-ASCII");
|
|
144
|
+
ENC_ALIAS("ANSI_X3.4-1968", "US-ASCII");
|
|
145
|
+
ENC_ALIAS("646", "US-ASCII");
|
|
146
|
+
ENC_DUMMY("UTF-7");
|
|
147
|
+
ENC_ALIAS("CP65000", "UTF-7");
|
|
148
|
+
ENC_ALIAS("CP65001", "UTF-8");
|
|
149
|
+
ENC_REPLICATE("UTF8-MAC", "UTF-8");
|
|
150
|
+
ENC_ALIAS("UTF-8-MAC", "UTF8-MAC");
|
|
151
|
+
ENC_ALIAS("UTF-8-HFS", "UTF8-MAC") /* Emacs 23.2 */;
|
|
152
|
+
ENC_DUMMY("UTF-16");
|
|
153
|
+
ENC_DUMMY("UTF-32");
|
|
154
|
+
ENC_ALIAS("UCS-2BE", "UTF-16BE");
|
|
155
|
+
ENC_ALIAS("UCS-4BE", "UTF-32BE");
|
|
156
|
+
ENC_ALIAS("UCS-4LE", "UTF-32LE");
|
|
157
|
+
ENC_ALIAS("CP1251", "Windows-1251");
|
|
158
|
+
ENC_REPLICATE("UTF8-DoCoMo", "UTF-8");
|
|
159
|
+
ENC_REPLICATE("SJIS-DoCoMo", "Windows-31J");
|
|
160
|
+
ENC_REPLICATE("UTF8-KDDI", "UTF-8");
|
|
161
|
+
ENC_REPLICATE("SJIS-KDDI", "Windows-31J");
|
|
162
|
+
ENC_REPLICATE("ISO-2022-JP-KDDI", "ISO-2022-JP");
|
|
163
|
+
ENC_REPLICATE("stateless-ISO-2022-JP-KDDI", "stateless-ISO-2022-JP");
|
|
164
|
+
ENC_REPLICATE("UTF8-SoftBank", "UTF-8");
|
|
165
|
+
ENC_REPLICATE("SJIS-SoftBank", "Windows-31J");
|
|
166
|
+
|
|
167
|
+
#define ENCODING_COUNT 99
|