On Wed, Oct 12, 2011 at 7:29 PM, Eliot Miranda <eliot.miranda@gmail.com> wrote:
 


On Wed, Oct 12, 2011 at 10:26 AM, Mariano Martinez Peck <marianopeck@gmail.com> wrote:
 


On Wed, Oct 12, 2011 at 6:44 PM, Eliot Miranda <eliot.miranda@gmail.com> wrote:
 


On Wed, Oct 12, 2011 at 8:38 AM, Levente Uzonyi <leves@elte.hu> wrote:
On Wed, 12 Oct 2011, Clara Allende wrote:

Hi guys,

I'm wondering, why?

ProtoObject>> ~~ anObject
  "Answer whether the receiver and the argument are not the same object
  (do not have the same object pointer)."

  self == anObject
      ifTrue: [^ false]
      ifFalse: [^ true]

Instead of:
ProtoObject>> ~~ anObject
  "Answer whether the receiver and the argument are not the same object
  (do not have the same object pointer)."

  ^(self == anObject) not

And why?
Object >> ~= anObject
  "Answer whether the receiver and the argument do not represent the
  same object."

  ^self = anObject == false

Instead of
Object>> ~= anObject
  "Answer whether the receiver and the argument do not represent the
  same object."

  ^(self = anObject) not.

Is there any particular reason for this that I'm missing?

Performance.

But better still is to add a ~~ primitive.  I did this for VisualWorks.  e.g. primitive 150 is free.  why don't we use that for 1.4/4.3?
 

with or without special bytecode associated?

Initially without.  

+1
 
Dynamic frequency is low, and primitive adds significant performance over the non-primitive version.  One could use the blockCopy: special bytecode but I'd wait until doing a complete bytecode set redesign.
 

 


Levente

Thanks in advance!
--

"*Most good programmers do programming not because they expect to get paid
or get adulation by the public, but because it is fun to program.*"

Linus Torvalds





--
best,
Eliot





--
Mariano
http://marianopeck.wordpress.com





--
best,
Eliot





--
Mariano
http://marianopeck.wordpress.com