• ggaren@apple.com's avatar
    JavaScriptCore: · b5b6b9a9
    ggaren@apple.com authored
    2008-07-16  Geoffrey Garen  <ggaren@apple.com>
    
            Reviewed by Oliver Hunt.
            
            First step toward putting doubles in registers: Turned Register into a
            proper abstraction layer. It is no longer possible to cast a Register
            to a JSValue*, or a Register& to a JSValue*&, or to access the union
            inside a Register directly.
            
            SunSpider reports no change.
            
            In support of this change, I had to make the following mechanical changes
            in a lot of places:
            
            1. Clients now use explicit accessors to read data out of Registers, and
            implicit copy constructors to write data into registers.
            
            So, assignment that used to look like
            
                x.u.jsValue = y;
            
            now looks like
            
                x = y;
                
            And access that used to look like
            
                x = y.u.jsValue;
            
            now looks like
            
                x = y.jsValue();
    
            2. I made generic flow control specific in opcodes that made their flow
            control generic by treating a Register& as a JSValue*&. This had the
            added benefit of removing some exception checking branches from immediate
            number code.
    
            3. I beefed up PropertySlot to support storing a Register* in a property
            slot. For now, only JSVariableObject's symbolTableGet and symbolTablePut
            use this functionality, but I expect more clients to use it in the future.
            
            4. I changed ArgList to be a buffer of Registers, not JSValue*'s, and I
            changed ArgList iterator clients to iterate Registers, not JSValue*'s.
    
    WebCore:
    
    2008-07-16  Geoffrey Garen  <ggaren@apple.com>
    
            Reviewed by Oliver Hunt.
    
            Support for JavaScriptCore's first step toward putting doubles in
            registers: Treat ArgList iterators as Register*'s, not JSValue*'s.
    
            * bindings/js/ScheduledAction.cpp:
            (WebCore::ScheduledAction::ScheduledAction):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@35203 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    b5b6b9a9
JSValue.h 7.72 KB