New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8239454: LLIntData : invalid opcode returned for 16 and 32 bit wide instructions #115
Conversation
👋 Welcome back ajoseph! A progress list of the required criteria for merging this PR into |
/reviewers 2 |
@kevinrushforth |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix looks good. Testing looks good.
@arun-joseph This change now passes all automated pre-integration checks. When the change also fulfills all project specific requirements, type
Since the source branch of this PR was last updated there have been 2 commits pushed to the As you do not have Committer status in this project, an existing Committer must agree to sponsor your change. Possible candidates are the reviewers of this PR (@guruhb, @kevinrushforth) but any other Committer may sponsor as well. ➡️ To flag this PR as ready for integration with the above commit message, type |
/integrate |
@arun-joseph |
/sponsor |
@guruhb @arun-joseph The following commits have been pushed to master since your change was applied: Your commit was automatically rebased without conflicts. Pushed as commit d8e7f85. |
Mailing list message from Guru Hb on openjfx-dev: Changeset: d8e7f85 8239454: LLIntData : invalid opcode returned for 16 and 32 bit wide instructions Reviewed-by: ghb, kcr ! modules/javafx.web/src/main/native/Source/JavaScriptCore/llint/LLIntData.h |
With new bytecode format introduced in Webkit 608.1, the unlinked and linked bytecodes were replaced by narrow (1-byte operand) and wide (4-byte operand) bytecodes. These were extended to narrow, wide16 and wide32 bytecodes in WebKit 609.1. In narrow instructions, each argument of the opcode has a fixed size of 1-byte. The same applies for wide 16 and wide32 with 2-byte and 4-byte, respectively.
In the Low Level Intepreter (LLInt), each opcode has a corresponding ID assigned for narrow, wide16 and wide32 implementation, and the variable
numOpcodeIDs
is used to denote the total number of opcodes. The narrow opcode IDs are mapped from 0 to (numOpcodeIDs
- 1). The nextnumOpcodeIDs
opcode IDs are mapped to wide16 opcodes, and similarly, the nextnumOpcodeIDs
to wide32 opcodes. The same can be found in LowLevelInterpreter.cpp and also in the autogenerated fileBytecodes.h
.Bug: When
getOpcodeWide(id)
is called inLLIntData.h
, the value (id
-numOpcodesIDs
) is returned.Fix: It's modified to (
id
+numOpcodesIDs
) ingetOpcodeWide16()
and (id
+numOpcodesIDs
*2) ingetOpcodeWide32()
.Progress
Issue
Reviewers
Download
$ git fetch https://git.openjdk.java.net/jfx pull/115/head:pull/115
$ git checkout pull/115