You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucy.apache.org by "Marvin Humphrey (JIRA)" <ji...@apache.org> on 2012/09/07 20:43:07 UTC
[lucy-issues] [jira] [Updated] (LUCY-234) Brittle object struct ABI
[ https://issues.apache.org/jira/browse/LUCY-234?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marvin Humphrey updated LUCY-234:
---------------------------------
Attachment: member_offset_variable.c
member_offset_constant.c
The files member_offset_constant.c and member_offset_variable.c illustrate one
approach: accessing member vars via variable offsets at runtime.
When those files are compiled to assembler with optimization enabled
({{cc -Wall -Wextra -c -S -O2}}), here are the only differences:
{noformat}
$ diff -u member_offset_constant.s member_offset_variable.s
--- member_offset_constant.s 2012-09-07 11:16:10.000000000 -0700
+++ member_offset_variable.s 2012-09-07 11:16:05.000000000 -0700
@@ -12,7 +12,8 @@
movq %rsp, %rbp
Ltmp4:
.cfi_def_cfa_register %rbp
- movl %esi, 8(%rdi)
+ movq _Foo_num_OFFSET(%rip), %rax
+ movl %esi, (%rdi,%rax)
popq %rbp
ret
.cfi_endproc
@@ -30,7 +31,8 @@
movq %rsp, %rbp
Ltmp9:
.cfi_def_cfa_register %rbp
- movl 8(%rdi), %eax
+ movq _Foo_num_OFFSET(%rip), %rax
+ movl (%rdi,%rax), %eax
popq %rbp
ret
.cfi_endproc
$
{noformat}
> Brittle object struct ABI
> -------------------------
>
> Key: LUCY-234
> URL: https://issues.apache.org/jira/browse/LUCY-234
> Project: Lucy
> Issue Type: Bug
> Components: Clownfish
> Reporter: Marvin Humphrey
> Attachments: member_offset_constant.c, member_offset_variable.c
>
>
> If an upstream parcel adds, removes or rearranges member variables,
> downstream extensions that build on the affected classes will break.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira