[ 
https://issues.apache.org/jira/browse/CASSANDRA-8325?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14227049#comment-14227049
 ] 

graham sanderson edited comment on CASSANDRA-8325 at 11/27/14 12:30 AM:
------------------------------------------------------------------------

Yeah the code in library_call.cpp is quite hard to introspect, however my sense 
is this probably comes down to a mixture of the case where a null (0) 32 bit 
compressedOop pointer is not equivalent to a null 64 bit address (i.e. the case 
where the heap does not fit in the 32 gig of address space) possibly coupled 
with whether the hotspot compiler could prove at compile time whether the value 
was statically null.

It seems like a slightly strange distinction to make given that you are using a 
64 bit offset anyway (and that other methods do using them interchangeably) but 
that doesn't change the fact that they made the distinction and apparently it 
matters at least in some implementations.

The question I was trying to get a sense of, is whether this explicitly 
disallows the sorts of pointer arithmetic C* is trying to achieve, or whether 
C* is just doing it wrong. Maybe that is actually quite simple and there are 
clearly distinctions in the C* usage between baseless pointers and static or 
otherwise field level offsets, but someone would have to have to dive in 
(probably with the ability to test) to make sure.


was (Author: graham sanderson):
Yeah the code in library_call.cpp is quite hard to introspect, however my sense 
is this probably comes down to a mixture of the case where a null (0) 32 bit 
compressedOop pointer is not equivalent to a null 64 bit address (i.e. the case 
where the heap does not fit in the 32 gig of address space) possibly coupled 
with whether the hotspot compiler could prove at compile time whether the value 
was statically null.

It seems like a slightly strange distinction to make given that you are using a 
64 bit offset anyway (and that other methods do using them interchangeably) but 
that doesn't change the fact that they made the distinction and apparently it 
matters at least in some implementations.

The question I was trying to get a sense of, is whether this explicitly 
disallows the sorts of pointer arithmetic C* is trying to achieve, or whether 
C* is just doing it wrong. Maybe that is actually quite simple and there are 
clearly distinctions between baseless pointers and static or otherwise field 
level offsets, but someone would have to have to dive in (probably with the 
ability to test) to make sure.

> Cassandra 2.1.x fails to start on FreeBSD (JVM crash)
> -----------------------------------------------------
>
>                 Key: CASSANDRA-8325
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8325
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: FreeBSD 10.0 with openjdk version "1.7.0_71", 64-Bit 
> Server VM
>            Reporter: Leonid Shalupov
>         Attachments: hs_err_pid1856.log, system.log
>
>
> See attached error file after JVM crash
> {quote}
> FreeBSD xxx.intellij.net 10.0-RELEASE FreeBSD 10.0-RELEASE #0 r260789: Thu 
> Jan 16 22:34:59 UTC 2014     
> r...@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64
> {quote}
> {quote}
>  % java -version
> openjdk version "1.7.0_71"
> OpenJDK Runtime Environment (build 1.7.0_71-b14)
> OpenJDK 64-Bit Server VM (build 24.71-b01, mixed mode)
> {quote}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to