Skip to content

Commit 9455796

Browse files
committed
_struct: conditionally load optimised the pack and unpack functions if defined
1 parent ddf5923 commit 9455796

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/GraalPythonModuleBuiltins.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
*/
4141
package com.oracle.graal.python.builtins.modules;
4242

43+
import static com.oracle.graal.python.nodes.BuiltinNames.__GRAALPYTHON__;
4344
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__NAME__;
4445
import static com.oracle.graal.python.runtime.exception.PythonErrorType.ImportError;
4546
import static com.oracle.graal.python.runtime.exception.PythonErrorType.NotImplementedError;
@@ -64,7 +65,6 @@
6465
import com.oracle.graal.python.builtins.objects.method.PMethod;
6566
import com.oracle.graal.python.builtins.objects.module.PythonModule;
6667
import com.oracle.graal.python.builtins.objects.object.PythonObject;
67-
import com.oracle.graal.python.nodes.BuiltinNames;
6868
import com.oracle.graal.python.nodes.argument.ReadIndexedArgumentNode;
6969
import com.oracle.graal.python.nodes.argument.ReadVarArgsNode;
7070
import com.oracle.graal.python.nodes.call.PythonCallNode;
@@ -105,7 +105,7 @@
105105
import com.oracle.truffle.api.nodes.NodeVisitor;
106106
import com.oracle.truffle.llvm.api.Toolchain;
107107

108-
@CoreFunctions(defineModule = BuiltinNames.__GRAALPYTHON__)
108+
@CoreFunctions(defineModule = __GRAALPYTHON__)
109109
public class GraalPythonModuleBuiltins extends PythonBuiltins {
110110
public static final String LLVM_LANGUAGE = "llvm";
111111

@@ -126,7 +126,7 @@ public void initialize(PythonCore core) {
126126
public void postInitialize(PythonCore core) {
127127
super.postInitialize(core);
128128
PythonContext context = core.getContext();
129-
PythonModule mod = core.lookupBuiltinModule("__graalpython__");
129+
PythonModule mod = core.lookupBuiltinModule(__GRAALPYTHON__);
130130
if (!ImageInfo.inImageBuildtimeCode()) {
131131
mod.setAttribute("home", context.getLanguage().getHome());
132132
}

graalpython/lib-graalpython/_struct.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,26 @@
3838
# SOFTWARE.
3939

4040

41+
if "_truffle_pack" in globals():
42+
@__graalpython__.builtin
43+
def pack(fmt, *values):
44+
try:
45+
return _truffle_pack(fmt, *values)
46+
except:
47+
import _cpython_struct
48+
return _cpython_struct.pack(fmt, *values)
49+
50+
51+
if "_truffle_unpack" in globals():
52+
@__graalpython__.builtin
53+
def unpack(fmt, buffer):
54+
try:
55+
return _truffle_unpack(fmt, buffer)
56+
except:
57+
import _cpython_struct
58+
return _cpython_struct.unpack(fmt, buffer)
59+
60+
4161
__graalpython__.import_current_as_named_module_with_delegate(
4262
module_name="_struct",
4363
delegate_name="_cpython_struct",

0 commit comments

Comments
 (0)