Skip to content

Commit 14468f9

Browse files
committed
Implement nqp::[get|bind]hllsym for JVM.
1 parent bd194cf commit 14468f9

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

src/vm/jvm/QAST/Compiler.nqp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1891,6 +1891,8 @@ QAST::OperationsJAST.map_classlib_core_op('getcomp', $TYPE_OPS, 'getcomp', [$RT_
18911891
QAST::OperationsJAST.map_classlib_core_op('bindcomp', $TYPE_OPS, 'bindcomp', [$RT_STR, $RT_OBJ], $RT_OBJ, :tc);
18921892
QAST::OperationsJAST.map_classlib_core_op('getcurhllsym', $TYPE_OPS, 'getcurhllsym', [$RT_STR], $RT_OBJ, :tc);
18931893
QAST::OperationsJAST.map_classlib_core_op('bindcurhllsym', $TYPE_OPS, 'bindcurhllsym', [$RT_STR, $RT_OBJ], $RT_OBJ, :tc);
1894+
QAST::OperationsJAST.map_classlib_core_op('gethllsym', $TYPE_OPS, 'gethllsym', [$RT_STR, $RT_STR], $RT_OBJ, :tc);
1895+
QAST::OperationsJAST.map_classlib_core_op('bindhllsym', $TYPE_OPS, 'bindhllsym', [$RT_STR, $RT_STR, $RT_OBJ], $RT_OBJ, :tc);
18941896
QAST::OperationsJAST.map_classlib_core_op('sethllconfig', $TYPE_OPS, 'sethllconfig', [$RT_STR, $RT_OBJ], $RT_OBJ, :tc);
18951897
QAST::OperationsJAST.map_classlib_core_op('loadbytecode', $TYPE_OPS, 'loadbytecode', [$RT_STR], $RT_STR, :tc);
18961898
QAST::OperationsJAST.map_classlib_core_op('usecompilerhllconfig', $TYPE_OPS, 'usecompilerhllconfig', [], $RT_INT, :tc);

src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2855,6 +2855,19 @@ public static SixModelObject bindcurhllsym(String name, SixModelObject value, Th
28552855
hllSyms.put(name, value);
28562856
return value;
28572857
}
2858+
public static SixModelObject gethllsym(String hllName, String name, ThreadContext tc) {
2859+
HashMap<String, SixModelObject> hllSyms = tc.gc.hllSyms.get(hllName);
2860+
return hllSyms == null ? null : hllSyms.get(name);
2861+
}
2862+
public static SixModelObject bindhllsym(String hllName, String name, SixModelObject value, ThreadContext tc) {
2863+
HashMap<String, SixModelObject> hllSyms = tc.gc.hllSyms.get(hllName);
2864+
if (hllSyms == null) {
2865+
hllSyms = new HashMap<String, SixModelObject>();
2866+
tc.gc.hllSyms.put(hllName, hllSyms);
2867+
}
2868+
hllSyms.put(name, value);
2869+
return value;
2870+
}
28582871
public static String loadbytecode(String filename, ThreadContext tc) {
28592872
new LibraryLoader().load(tc, filename);
28602873
return filename;

0 commit comments

Comments
 (0)