Skip to content

Commit 9052358

Browse files
committed
[GR-67853] Remove VirtualFrame parameter from CreateObjectNode.
PullRequest: js/3571
2 parents 194fbc5 + 454bfe9 commit 9052358

File tree

41 files changed

+330
-362
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+330
-362
lines changed

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/builtins/ArrayIteratorPrototypeBuiltins.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
import com.oracle.truffle.api.dsl.GenerateCached;
4848
import com.oracle.truffle.api.dsl.GenerateInline;
4949
import com.oracle.truffle.api.dsl.Specialization;
50-
import com.oracle.truffle.api.frame.VirtualFrame;
5150
import com.oracle.truffle.api.nodes.Node;
5251
import com.oracle.truffle.api.profiles.InlinedBranchProfile;
5352
import com.oracle.truffle.api.profiles.InlinedIntValueProfile;
@@ -114,7 +113,7 @@ protected ArrayIteratorNextNode(JSContext context, JSBuiltin builtin) {
114113
}
115114

116115
@Specialization(guards = {"!isUndefined(array)"})
117-
JSObject doArrayIterator(VirtualFrame frame, JSArrayIteratorObject iterator,
116+
JSObject doArrayIterator(JSArrayIteratorObject iterator,
118117
@Bind("iterator.getIteratedObject()") Object array,
119118
@Shared @Cached("create(getContext())") CreateIterResultObjectNode createIterResultObjectNode,
120119
@Cached("create(getContext())") ReadElementNode readElementNode,
@@ -127,7 +126,7 @@ JSObject doArrayIterator(VirtualFrame frame, JSArrayIteratorObject iterator,
127126

128127
if (index >= length) {
129128
iterator.setIteratedObject(Undefined.instance);
130-
return createIterResultObjectNode.execute(frame, Undefined.instance, true);
129+
return createIterResultObjectNode.execute(Undefined.instance, true);
131130
}
132131

133132
iterator.setNextIndex(index + 1);
@@ -147,13 +146,13 @@ JSObject doArrayIterator(VirtualFrame frame, JSArrayIteratorObject iterator,
147146
result = JSArray.createConstantObjectArray(getContext(), getRealm(), new Object[]{indexNumber, elementValue});
148147
}
149148
}
150-
return createIterResultObjectNode.execute(frame, result, false);
149+
return createIterResultObjectNode.execute(result, false);
151150
}
152151

153152
@Specialization(guards = {"isUndefined(iterator.getIteratedObject())"})
154-
static JSObject doArrayIteratorDetached(VirtualFrame frame, @SuppressWarnings("unused") JSArrayIteratorObject iterator,
153+
static JSObject doArrayIteratorDetached(@SuppressWarnings("unused") JSArrayIteratorObject iterator,
155154
@Cached("create(getContext())") @Shared CreateIterResultObjectNode createIterResultObjectNode) {
156-
return createIterResultObjectNode.execute(frame, Undefined.instance, true);
155+
return createIterResultObjectNode.execute(Undefined.instance, true);
157156
}
158157

159158
@SuppressWarnings("unused")

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/builtins/AsyncFromSyncIteratorPrototypeBuiltins.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -253,15 +253,15 @@ class AsyncFromSyncIteratorValueUnwrapRootNode extends JavaScriptRootNode {
253253

254254
@Override
255255
public Object execute(VirtualFrame frame) {
256-
JSDynamicObject functionObject = JSFrameUtil.getFunctionObject(frame);
256+
JSFunctionObject functionObject = JSFrameUtil.getFunctionObject(frame);
257257
Object value = valueNode.execute(frame);
258258
boolean done;
259259
try {
260260
done = isDoneNode.getValueBoolean(functionObject);
261261
} catch (UnexpectedResultException e) {
262262
throw Errors.shouldNotReachHere();
263263
}
264-
return createIterResult.execute(frame, value, done);
264+
return createIterResult.execute(value, done);
265265
}
266266
}
267267
return JSFunctionData.createCallOnly(context, new AsyncFromSyncIteratorValueUnwrapRootNode().getCallTarget(), 1, Strings.EMPTY_STRING);
@@ -341,7 +341,7 @@ public AsyncFromSyncMethod(JSContext context, JSBuiltin builtin, boolean closeOn
341341

342342
protected abstract GetMethodNode getMethod();
343343

344-
protected abstract Object processUndefinedMethod(VirtualFrame frame, PromiseCapabilityRecord promiseCapability, Object value, Object syncIterator);
344+
protected abstract Object processUndefinedMethod(PromiseCapabilityRecord promiseCapability, Object value, Object syncIterator);
345345

346346
@Specialization
347347
protected final Object doMethod(VirtualFrame frame, JSAsyncFromSyncIteratorObject thisObj, Object value,
@@ -351,7 +351,7 @@ protected final Object doMethod(VirtualFrame frame, JSAsyncFromSyncIteratorObjec
351351
Object syncIterator = syncIteratorRecord.getIterator();
352352
Object method = getMethod().executeWithTarget(syncIterator);
353353
if (method == Undefined.instance) {
354-
return processUndefinedMethod(frame, promiseCapability, value, syncIterator);
354+
return processUndefinedMethod(promiseCapability, value, syncIterator);
355355
}
356356
Object returnResult;
357357
try {
@@ -389,8 +389,8 @@ protected GetMethodNode getMethod() {
389389
}
390390

391391
@Override
392-
protected Object processUndefinedMethod(VirtualFrame frame, PromiseCapabilityRecord promiseCapability, Object value, Object syncIterator) {
393-
JSDynamicObject iterResult = createIterResult.execute(frame, value, true);
392+
protected Object processUndefinedMethod(PromiseCapabilityRecord promiseCapability, Object value, Object syncIterator) {
393+
JSDynamicObject iterResult = createIterResult.execute(value, true);
394394
promiseCapabilityResolve(promiseCapability, iterResult);
395395
return promiseCapability.getPromise();
396396
}
@@ -411,7 +411,7 @@ protected GetMethodNode getMethod() {
411411
}
412412

413413
@Override
414-
protected Object processUndefinedMethod(VirtualFrame frame, PromiseCapabilityRecord promiseCapability, Object value, Object syncIterator) {
414+
protected Object processUndefinedMethod(PromiseCapabilityRecord promiseCapability, Object value, Object syncIterator) {
415415
try {
416416
iteratorCloseNode.executeVoid(syncIterator);
417417
} catch (AbstractTruffleException e) {

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/builtins/AsyncGeneratorPrototypeBuiltins.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -41,7 +41,6 @@
4141
package com.oracle.truffle.js.builtins;
4242

4343
import com.oracle.truffle.api.dsl.Specialization;
44-
import com.oracle.truffle.api.frame.VirtualFrame;
4544
import com.oracle.truffle.js.builtins.AsyncGeneratorPrototypeBuiltinsFactory.AsyncGeneratorResumeNodeGen;
4645
import com.oracle.truffle.js.nodes.control.AsyncGeneratorEnqueueNode;
4746
import com.oracle.truffle.js.nodes.function.JSBuiltin;
@@ -111,9 +110,9 @@ public AsyncGeneratorResumeNode(JSContext context, JSBuiltin builtin, Completion
111110
}
112111

113112
@Specialization
114-
protected Object resume(VirtualFrame frame, Object thisObj, Object value) {
113+
protected Object resume(Object thisObj, Object value) {
115114
Completion completion = Completion.create(resumeType, value);
116-
return enqueueNode.execute(frame, thisObj, completion);
115+
return enqueueNode.execute(thisObj, completion);
117116
}
118117
}
119118
}

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/builtins/AsyncIteratorHelperPrototypeBuiltins.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2022, 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -46,7 +46,6 @@
4646
import com.oracle.truffle.api.CompilerDirectives;
4747
import com.oracle.truffle.api.dsl.Specialization;
4848
import com.oracle.truffle.api.exception.AbstractTruffleException;
49-
import com.oracle.truffle.api.frame.VirtualFrame;
5049
import com.oracle.truffle.api.object.HiddenKey;
5150
import com.oracle.truffle.api.strings.TruffleString;
5251
import com.oracle.truffle.js.nodes.JavaScriptBaseNode;
@@ -168,15 +167,15 @@ protected AsyncIteratorHelperResumeNode(JSContext context, JSBuiltin builtin) {
168167
this.callNode = JSFunctionCallNode.createCall();
169168
}
170169

171-
protected Object validateAndResume(VirtualFrame frame, Object thisObj) {
170+
protected Object validateAndResume(Object thisObj) {
172171
PromiseCapabilityRecord promiseCapability = newPromiseCapabilityNode.executeDefault();
173172
try {
174173
// AsyncGeneratorValidate(generator, brand = "Async Iterator Helper")
175174
// We assume that the correct 'brand' implies all the required slots are there.
176175
if (!(thisObj instanceof JSAsyncGeneratorObject generator) || generator.getGeneratorBrand() != GENERATOR_BRAND) {
177176
throw Errors.createTypeErrorIncompatibleReceiver(getBuiltin().getName(), thisObj);
178177
}
179-
performNextOrReturn(frame, generator, promiseCapability);
178+
performNextOrReturn(generator, promiseCapability);
180179
} catch (AbstractTruffleException ex) {
181180
if (getErrorObjectNode == null) {
182181
CompilerDirectives.transferToInterpreterAndInvalidate();
@@ -188,7 +187,7 @@ protected Object validateAndResume(VirtualFrame frame, Object thisObj) {
188187
return promiseCapability.getPromise();
189188
}
190189

191-
protected abstract void performNextOrReturn(VirtualFrame frame, JSAsyncGeneratorObject generator, PromiseCapabilityRecord promiseCapability);
190+
protected abstract void performNextOrReturn(JSAsyncGeneratorObject generator, PromiseCapabilityRecord promiseCapability);
192191

193192
protected final void performResumeNext(JSAsyncGeneratorObject iterator, Completion completion, JSFunction.AsyncGeneratorState state) {
194193
assert state == JSFunction.AsyncGeneratorState.SuspendedStart || state == JSFunction.AsyncGeneratorState.SuspendedYield : state;
@@ -213,12 +212,12 @@ protected IteratorHelperReturnNode(JSContext context, JSBuiltin builtin) {
213212

214213
@Specialization
215214
@Override
216-
protected final Object validateAndResume(VirtualFrame frame, Object thisObj) {
217-
return super.validateAndResume(frame, thisObj);
215+
protected final Object validateAndResume(Object thisObj) {
216+
return super.validateAndResume(thisObj);
218217
}
219218

220219
@Override
221-
protected final void performNextOrReturn(VirtualFrame frame, JSAsyncGeneratorObject generator, PromiseCapabilityRecord promiseCapability) {
220+
protected final void performNextOrReturn(JSAsyncGeneratorObject generator, PromiseCapabilityRecord promiseCapability) {
222221
Completion completion = Completion.forReturn(Undefined.instance);
223222
// Perform AsyncGeneratorEnqueue(generator, completion, promiseCapability).
224223
ArrayDeque<AsyncGeneratorRequest> queue = generator.getAsyncGeneratorQueue();
@@ -227,7 +226,7 @@ protected final void performNextOrReturn(VirtualFrame frame, JSAsyncGeneratorObj
227226
JSFunction.AsyncGeneratorState state = generator.getAsyncGeneratorState();
228227
if (state == JSFunction.AsyncGeneratorState.SuspendedStart || state == JSFunction.AsyncGeneratorState.Completed) {
229228
// Perform ! AsyncGeneratorAwaitReturn(generator).
230-
asyncGeneratorAwaitReturnNode.executeAsyncGeneratorAwaitReturn(frame, generator, queue);
229+
asyncGeneratorAwaitReturnNode.executeAsyncGeneratorAwaitReturn(generator, queue);
231230
} else if (state == JSFunction.AsyncGeneratorState.SuspendedYield) {
232231
// Perform AsyncGeneratorResume(generator, completion).
233232
performResumeNext(generator, completion, state);
@@ -251,15 +250,15 @@ protected AsyncIteratorHelperNextNode(JSContext context, JSBuiltin builtin) {
251250

252251
@Specialization
253252
@Override
254-
protected final Object validateAndResume(VirtualFrame frame, Object thisObj) {
255-
return super.validateAndResume(frame, thisObj);
253+
protected final Object validateAndResume(Object thisObj) {
254+
return super.validateAndResume(thisObj);
256255
}
257256

258257
@Override
259-
protected final void performNextOrReturn(VirtualFrame frame, JSAsyncGeneratorObject generator, PromiseCapabilityRecord promiseCapability) {
258+
protected final void performNextOrReturn(JSAsyncGeneratorObject generator, PromiseCapabilityRecord promiseCapability) {
260259
JSFunction.AsyncGeneratorState state = generator.getAsyncGeneratorState();
261260
if (state == JSFunction.AsyncGeneratorState.Completed) {
262-
Object iteratorResult = createIterResultObjectNode.execute(frame, Undefined.instance, true);
261+
Object iteratorResult = createIterResultObjectNode.execute(Undefined.instance, true);
263262
callResolveNode.executeCall(JSArguments.createOneArg(Undefined.instance, promiseCapability.getResolve(), iteratorResult));
264263
} else {
265264
Completion completion = Completion.forNormal(Undefined.instance);

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/builtins/AsyncIteratorPrototypeBuiltins.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -402,12 +402,12 @@ protected final Object getErrorObject(AbstractTruffleException ex) {
402402

403403
protected final Object asyncGeneratorComplete(VirtualFrame frame, Completion.Type resultType, Object resultValue) {
404404
var generator = getThis(frame);
405-
asyncGeneratorOpNode.asyncGeneratorCompleteStepAndDrainQueue(frame, generator, resultType, resultValue);
405+
asyncGeneratorOpNode.asyncGeneratorCompleteStepAndDrainQueue(generator, resultType, resultValue);
406406
return Undefined.instance;
407407
}
408408

409-
protected final void asyncGeneratorCompleteStep(VirtualFrame frame, Completion.Type completionType, Object completionValue, boolean done, ArrayDeque<AsyncGeneratorRequest> queue) {
410-
asyncGeneratorOpNode.asyncGeneratorCompleteStep(frame, completionType, completionValue, done, queue);
409+
protected final void asyncGeneratorCompleteStep(Completion.Type completionType, Object completionValue, boolean done, ArrayDeque<AsyncGeneratorRequest> queue) {
410+
asyncGeneratorOpNode.asyncGeneratorCompleteStep(completionType, completionValue, done, queue);
411411
}
412412
}
413413

@@ -714,7 +714,7 @@ public Object execute(VirtualFrame frame) {
714714
ArrayDeque<AsyncGeneratorRequest> queue = generator.getAsyncGeneratorQueue();
715715
assert !queue.isEmpty();
716716
// Perform AsyncGeneratorCompleteStep
717-
asyncGeneratorCompleteStep(frame, Completion.Type.Normal, value, false, queue);
717+
asyncGeneratorCompleteStep(Completion.Type.Normal, value, false, queue);
718718

719719
if (!queue.isEmpty()) {
720720
// NOTE: Execution continues without suspending the generator.

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/builtins/AtomicsBuiltins.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -117,7 +117,7 @@
117117
import com.oracle.truffle.js.runtime.builtins.JSArrayBufferView;
118118
import com.oracle.truffle.js.runtime.builtins.JSSharedArrayBuffer;
119119
import com.oracle.truffle.js.runtime.builtins.JSTypedArrayObject;
120-
import com.oracle.truffle.js.runtime.objects.JSDynamicObject;
120+
import com.oracle.truffle.js.runtime.objects.JSObject;
121121
import com.oracle.truffle.js.runtime.objects.PromiseCapabilityRecord;
122122
import com.oracle.truffle.js.runtime.objects.Undefined;
123123

@@ -1155,20 +1155,21 @@ protected Object doWait(VirtualFrame frame, Object maybeTarget, Object index, Ob
11551155
t = Math.max(q, 0);
11561156
}
11571157

1158-
JSAgent agent = getRealm().getAgent();
1158+
JSRealm realm = getRealm();
1159+
JSAgent agent = realm.getAgent();
11591160
if (!isAsync && !agent.canBlock()) {
11601161
errorBranch.enter();
11611162
throw createTypeErrorUnsupported();
11621163
}
11631164
JSAgentWaiterListEntry wl = SharedMemorySync.getWaiterList(getContext(), target, i);
11641165

11651166
PromiseCapabilityRecord promiseCapability = null;
1166-
JSDynamicObject resultObject = null;
1167+
JSObject resultObject = null;
11671168

11681169
if (isAsyncProfile.profile(isAsync)) {
11691170
getContext().signalAsyncWaiterRecordUsage();
11701171
promiseCapability = newPromiseCapability();
1171-
resultObject = ordinaryObjectCreate(frame);
1172+
resultObject = ordinaryObjectCreate(realm);
11721173
}
11731174

11741175
wl.enterCriticalSection();
@@ -1238,12 +1239,12 @@ private PromiseCapabilityRecord newPromiseCapability() {
12381239
return newPromiseCapabilityNode.executeDefault();
12391240
}
12401241

1241-
private JSDynamicObject ordinaryObjectCreate(VirtualFrame frame) {
1242+
private JSObject ordinaryObjectCreate(JSRealm realm) {
12421243
if (objectCreateNode == null) {
12431244
CompilerDirectives.transferToInterpreterAndInvalidate();
12441245
objectCreateNode = insert(CreateObjectNode.create(getContext()));
12451246
}
1246-
return objectCreateNode.execute(frame);
1247+
return objectCreateNode.execute(realm);
12471248
}
12481249
}
12491250

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/builtins/EnumerateIteratorPrototypeBuiltins.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -43,7 +43,6 @@
4343
import com.oracle.truffle.api.dsl.Cached;
4444
import com.oracle.truffle.api.dsl.ImportStatic;
4545
import com.oracle.truffle.api.dsl.Specialization;
46-
import com.oracle.truffle.api.frame.VirtualFrame;
4746
import com.oracle.truffle.api.interop.InteropLibrary;
4847
import com.oracle.truffle.api.interop.StopIterationException;
4948
import com.oracle.truffle.api.interop.UnsupportedMessageException;
@@ -108,7 +107,7 @@ public EnumerateNextNode(JSContext context, JSBuiltin builtin) {
108107
}
109108

110109
@Specialization
111-
public JSDynamicObject next(VirtualFrame frame, Object target,
110+
public JSDynamicObject next(Object target,
112111
@CachedLibrary(limit = "InteropLibraryLimit") InteropLibrary interop,
113112
@Cached("create(getContext())") CreateIterResultObjectNode createIterResultObjectNode,
114113
@Cached ImportValueNode importValueNode,
@@ -123,12 +122,12 @@ public JSDynamicObject next(VirtualFrame frame, Object target,
123122
try {
124123
Object nextValue = interop.getIteratorNextElement(iterator);
125124
Object importedValue = importValueNode.executeWithTarget(nextValue);
126-
return createIterResultObjectNode.execute(frame, importedValue, false);
125+
return createIterResultObjectNode.execute(importedValue, false);
127126
} catch (StopIterationException e) {
128127
// fall through
129128
}
130129
}
131-
return createIterResultObjectNode.execute(frame, Undefined.instance, true);
130+
return createIterResultObjectNode.execute(Undefined.instance, true);
132131
} catch (UnsupportedMessageException e) {
133132
errorBranch.enter(this);
134133
throw Errors.createTypeErrorInteropException(iterator, e, "next", null);

0 commit comments

Comments
 (0)