Changeset 33317

Show
Ignore:
Timestamp:
05/12/08 23:03:02 (6 months ago)
Author:
mrowe@apple.com
Message:

Minor code restructuring to prepare for getters and setters,
also helps exception semantics a bit.

Reviewed by Maciej

Location:
branches/squirrelfish/JavaScriptCore
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/squirrelfish/JavaScriptCore/ChangeLog

    r33316 r33317  
     12008-04-30  Oliver Hunt  <oliver@apple.com> 
     2 
     3        Reviewed by Maciej. 
     4 
     5        Minor code restructuring to prepare for getters and setters,  
     6        also helps exception semantics a bit. 
     7 
     8        * VM/Machine.cpp: 
     9        (KJS::Machine::privateExecute): 
     10 
    1112008-04-30  Geoffrey Garen  <ggaren@apple.com> 
    212 
  • branches/squirrelfish/JavaScriptCore/VM/Machine.cpp

    r33314 r33317  
    11991199 
    12001200        Identifier& ident = codeBlock->identifiers[property]; 
    1201         r[dst].u.jsValue = baseObj->get(exec, ident); 
     1201        JSValue *result = baseObj->get(exec, ident); 
    12021202        VM_CHECK_EXCEPTION(); 
     1203        r[dst].u.jsValue = result; 
    12031204        ++vPC; 
    12041205        NEXT_OPCODE; 
     
    12421243         
    12431244        Identifier& ident = codeBlock->identifiers[property]; 
    1244         r[dst].u.jsValue = jsBoolean(baseObj->deleteProperty(exec, ident)); 
    1245          
     1245        JSValue* result = jsBoolean(baseObj->deleteProperty(exec, ident)); 
    12461246        VM_CHECK_EXCEPTION(); 
     1247        r[dst].u.jsValue = result; 
    12471248        ++vPC; 
    12481249        NEXT_OPCODE; 
     
    12631264         
    12641265        JSValue* subscript = r[property].u.jsValue; 
    1265  
     1266        JSValue* result; 
    12661267        uint32_t i; 
    12671268        if (subscript->getUInt32(i)) 
    1268             r[dst].u.jsValue = baseObj->get(exec, i); 
     1269            result = baseObj->get(exec, i); 
    12691270        else { 
    12701271            VM_CHECK_EXCEPTION(); // If toObject threw, we must not call toString, which may execute arbitrary code 
    1271             r[dst].u.jsValue = baseObj->get(exec, Identifier(subscript->toString(exec))); 
     1272            result = baseObj->get(exec, Identifier(subscript->toString(exec))); 
    12721273        } 
    12731274         
    12741275        VM_CHECK_EXCEPTION(); 
     1276        r[dst].u.jsValue = result; 
    12751277        ++vPC; 
    12761278        NEXT_OPCODE; 
     
    13221324 
    13231325        JSValue* subscript = r[property].u.jsValue; 
    1324  
     1326        JSValue* result; 
    13251327        uint32_t i; 
    13261328        if (subscript->getUInt32(i)) 
    1327             r[dst].u.jsValue = jsBoolean(baseObj->deleteProperty(exec, i)); 
     1329            result = jsBoolean(baseObj->deleteProperty(exec, i)); 
    13281330        else { 
    13291331            VM_CHECK_EXCEPTION(); // If toObject threw, we must not call toString, which may execute arbitrary code 
    1330             r[dst].u.jsValue = jsBoolean(baseObj->deleteProperty(exec, Identifier(subscript->toString(exec)))); 
     1332            result = jsBoolean(baseObj->deleteProperty(exec, Identifier(subscript->toString(exec)))); 
    13311333        } 
    13321334         
    13331335        VM_CHECK_EXCEPTION(); 
     1336        r[dst].u.jsValue = result; 
    13341337        ++vPC; 
    13351338        NEXT_OPCODE;