Comments (4)
Hi Daniel,
thanks for reporting. Can you please share a bit more code around; especially, what is your eventContext
?
Intuitively, the error could just mean you try to access this
where no this
yet exists.
Best,
Christian
from graaljs.
Hi Christian,
here is more context:
This is the Factory which creates and inserts the inline-parsed Node:
final class InlineEvaluationEventFactory implements ExecutionEventNodeFactory {
private final TruffleInstrument.Env env;
public InlineEvaluationEventFactory(TruffleInstrument.Env env) {
this.env = env;
}
public ExecutionEventNode create(final EventContext eventContext) {
return new ExecutionEventNode() {
@Override
protected void onEnter(VirtualFrame frame) {
final LanguageInfo info = eventContext.getInstrumentedNode().getRootNode().getLanguageInfo();
final String code = eventContext.getInstrumentedSourceSection().getCharacters().toString();
final Source source = Source.newBuilder(code).name("eval in context").language(info.getId()).mimeType("content/unknown").build();
ExecutableNode fragment = env.parseInline(source, eventContext.getInstrumentedNode(), frame.materialize());
if (fragment != null) {
insert(fragment);
Object result;
try {
result = fragment.execute(frame);
} catch (Exception e) {
...
}
...
}
}
};
}
}
The factory is used by:
CallTarget callTarget = parse(...);
EventBinding<ExecutionEventNodeFactory> binding = this.env.getInstrumenter().attachExecutionEventFactory(
createSourceSectionFilter(uri, sourceSection, name),
new InlineEvaluationEventFactory(this.env));
callTarget.call();
So what I am trying to do is getting runtime type information for a specific code snippet (e.g. this
) by executing some js source code, attaching a listener for a specific source section and then inline-evaluating the code snippet when the execution reaches the desired source location. Like setting a breakpoint in a debugger and evaluating a piece of code when execution pauses at the breakpoint.
The code snippet I was using is for example:
function Filter(number) {
this.number = number;
this // <- eval this expression when execution arrives here
}
new Filter(123);
So there should exist a this
in the context of the Filter function. For everything else except this
it is working.
from graaljs.
Thanks for the detailed information, this is helpful. We'll investigate.
from graaljs.
Should be fixed by 4d94b1c.
from graaljs.
Related Issues (20)
- Maps are not processed with JSON.stringify HOT 3
- [23.1.0] Error creating a GraalJS Engine in a Spring Boot app HOT 3
- Unable to use JavaScript Array in Java method requiring a Collection HOT 1
- How to install a Graalvm for Jdk 21 with included java, javascript and node.js on Linux (Ubuntu) HOT 2
- Do the maven artifacts for graaljs 23.0.0 onwards require Java 17 HOT 2
- GraalVM NodeJS AsyncLocalStorage context gets lost after await HOT 1
- Webpack example configs? HOT 1
- Number.isInteger is incorrectly false for a java.lang.Long HOT 3
- Pass JPA Entity Object as parameter to JavaScript Function HOT 7
- About Compiling the 'GraalJS' Project into an Executable File
- Performance degradation when moving to GraalJS 23.1.1 (and GraalVM for JDK21) HOT 1
- How to use Graal JavaScript engine on a stock JDK HOT 1
- How to do error handling on custom truffle filesystems HOT 3
- Numeric wrapper classes coverted based on its values HOT 2
- Method Signature Mismatch When Calling Java Method from JavaScript in GraalVM HOT 2
- TypeScript support
- No Graaljs and Graalvm node.js native community jvm images for 23.1.1 for windows HOT 2
- Instanceof check fails for custom error subtype using prototype setup HOT 2
- Allow implementation of delete operation in foreign arrays HOT 1
- Binding is slow HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from graaljs.