Skip to content
Snippets Groups Projects
Commit fa9d20e1 authored by Lukas Stadler's avatar Lukas Stadler
Browse files

only deoptimize frame slots with String identifiers

parent 145e7b91
No related branches found
No related tags found
No related merge requests found
......@@ -96,7 +96,7 @@ public class PromiseHelperNode extends RBaseNode {
boolean deoptOne = false;
for (FrameSlot slot : frame.getFrameDescriptor().getSlots().toArray(new FrameSlot[0])) {
// We're only interested in RPromises
if (slot.getKind() != FrameSlotKind.Object) {
if (slot.getKind() != FrameSlotKind.Object || !(slot.getIdentifier() instanceof String)) {
continue;
}
......
......@@ -681,7 +681,7 @@ public final class FrameSlotChangeMonitor {
Object info = slot.getInfo();
if (!(info instanceof FrameSlotInfoImpl)) {
CompilerDirectives.transferToInterpreter();
throw RInternalError.shouldNotReachHere("Each FrameSlot should hold a FrameSlotInfo in its info field!");
throw RInternalError.shouldNotReachHere("Each FrameSlot should hold a FrameSlotInfo in its info field! " + slot.getIdentifier().getClass() + " " + slot.getIdentifier());
}
return (FrameSlotInfoImpl) info;
}
......@@ -703,14 +703,10 @@ public final class FrameSlotChangeMonitor {
if (frameSlot != null) {
return frameSlot;
} else {
if (identifier instanceof String || ((RFrameSlot) identifier).isMultiSlot()) {
FrameDescriptorMetaData metaData = getMetaData(fd);
invalidateNames(metaData, Arrays.asList(identifier));
return fd.addFrameSlot(identifier, new FrameSlotInfoImpl(metaData.singletonFrame != null, "global".equals(metaData.name), identifier, metaData.name.startsWith("<new-env-")),
initialKind);
} else {
return fd.addFrameSlot(identifier, initialKind);
}
FrameDescriptorMetaData metaData = getMetaData(fd);
invalidateNames(metaData, Arrays.asList(identifier));
return fd.addFrameSlot(identifier, new FrameSlotInfoImpl(metaData.singletonFrame != null, "global".equals(metaData.name), identifier, metaData.name.startsWith("<new-env-")),
initialKind);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment