Changeset 220441 in webkit


Ignore:
Timestamp:
Aug 8, 2017 8:48:44 PM (7 years ago)
Author:
fpizlo@apple.com
Message:

ICs should do caging
https://bugs.webkit.org/show_bug.cgi?id=175295

Reviewed by Saam Barati.

Adds the appropriate cage() calls in our inline caches.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateImpl):

  • bytecode/InlineAccess.cpp:

(JSC::InlineAccess::dumpCacheSizesAndCrash):
(JSC::InlineAccess::generateSelfPropertyAccess):
(JSC::InlineAccess::generateSelfPropertyReplace):
(JSC::InlineAccess::generateArrayLength):

Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r220436 r220441  
     12017-08-08  Filip Pizlo  <fpizlo@apple.com>
     2
     3        ICs should do caging
     4        https://bugs.webkit.org/show_bug.cgi?id=175295
     5
     6        Reviewed by Saam Barati.
     7       
     8        Adds the appropriate cage() calls in our inline caches.
     9
     10        * bytecode/AccessCase.cpp:
     11        (JSC::AccessCase::generateImpl):
     12        * bytecode/InlineAccess.cpp:
     13        (JSC::InlineAccess::dumpCacheSizesAndCrash):
     14        (JSC::InlineAccess::generateSelfPropertyAccess):
     15        (JSC::InlineAccess::generateSelfPropertyReplace):
     16        (JSC::InlineAccess::generateArrayLength):
     17
    1182017-08-08  Devin Rousso  <drousso@apple.com>
    219
  • trunk/Source/JavaScriptCore/bytecode/AccessCase.cpp

    r220416 r220441  
    528528                    CCallHelpers::Address(baseForAccessGPR, JSObject::butterflyOffset()),
    529529                    loadedValueGPR);
    530                 // FIXME: Do caging!
    531                 // https://bugs.webkit.org/show_bug.cgi?id=175295
     530                jit.cage(Gigacage::JSValue, loadedValueGPR);
    532531                storageGPR = loadedValueGPR;
    533532            }
     
    880879
    881880                    jit.loadPtr(CCallHelpers::Address(baseGPR, JSObject::butterflyOffset()), scratchGPR3);
    882                     // FIXME: Do caging!
    883                     // https://bugs.webkit.org/show_bug.cgi?id=175295
     881                    jit.cage(Gigacage::JSValue, scratchGPR3);
    884882
    885883                    // We have scratchGPR = new storage, scratchGPR3 = old storage,
     
    962960            if (!allocating) {
    963961                jit.loadPtr(CCallHelpers::Address(baseGPR, JSObject::butterflyOffset()), scratchGPR);
    964                 // FIXME: Do caging!
    965                 // https://bugs.webkit.org/show_bug.cgi?id=175295
     962                jit.cage(Gigacage::JSValue, scratchGPR);
    966963            }
    967964            jit.storeValue(
     
    1000997    case ArrayLength: {
    1001998        jit.loadPtr(CCallHelpers::Address(baseGPR, JSObject::butterflyOffset()), scratchGPR);
    1002         // FIXME: Do caging!
    1003         // https://bugs.webkit.org/show_bug.cgi?id=175295
     999        jit.cage(Gigacage::JSValue, scratchGPR);
    10041000        jit.load32(CCallHelpers::Address(scratchGPR, ArrayStorage::lengthOffset()), scratchGPR);
    10051001        state.failAndIgnore.append(
  • trunk/Source/JavaScriptCore/bytecode/InlineAccess.cpp

    r220416 r220441  
    5858            CCallHelpers::NotEqual, value, CCallHelpers::TrustedImm32(IsArray | ContiguousShape));
    5959        jit.loadPtr(CCallHelpers::Address(base, JSObject::butterflyOffset()), value);
    60         // FIXME: Do caging!
    61         // https://bugs.webkit.org/show_bug.cgi?id=175295
     60        jit.cage(Gigacage::JSValue, value);
    6261        jit.load32(CCallHelpers::Address(value, ArrayStorage::lengthOffset()), value);
    6362        jit.boxInt32(scratchGPR, regs);
     
    7675            CCallHelpers::Address(base, JSObject::butterflyOffset()),
    7776            value);
    78         // FIXME: Do caging!
    79         // https://bugs.webkit.org/show_bug.cgi?id=175295
     77        jit.cage(Gigacage::JSValue, value);
    8078        GPRReg storageGPR = value;
    8179        jit.loadValue(
     
    121119
    122120        jit.loadPtr(MacroAssembler::Address(base, JSObject::butterflyOffset()), value);
    123         // FIXME: Do caging!
    124         // https://bugs.webkit.org/show_bug.cgi?id=175295
     121        jit.cage(Gigacage::JSValue, value);
    125122        jit.storeValue(
    126123            regs,
     
    177174    else {
    178175        jit.loadPtr(CCallHelpers::Address(base, JSObject::butterflyOffset()), value.payloadGPR());
    179         // FIXME: Do caging!
    180         // https://bugs.webkit.org/show_bug.cgi?id=175295
     176        jit.cage(Gigacage::JSValue, value.payloadGPR());
    181177        storage = value.payloadGPR();
    182178    }
     
    240236        ASSERT(storage != InvalidGPRReg);
    241237        jit.loadPtr(CCallHelpers::Address(base, JSObject::butterflyOffset()), storage);
    242         // FIXME: Do caging!
    243         // https://bugs.webkit.org/show_bug.cgi?id=175295
     238        jit.cage(Gigacage::JSValue, storage);
    244239    }
    245240
     
    280275        CCallHelpers::NotEqual, scratch, CCallHelpers::TrustedImm32(array->indexingType()));
    281276    jit.loadPtr(CCallHelpers::Address(base, JSObject::butterflyOffset()), value.payloadGPR());
    282     // FIXME: Do caging!
    283     // https://bugs.webkit.org/show_bug.cgi?id=175295
     277    jit.cage(Gigacage::JSValue, value.payloadGPR());
    284278    jit.load32(CCallHelpers::Address(value.payloadGPR(), ArrayStorage::lengthOffset()), value.payloadGPR());
    285279    jit.boxInt32(value.payloadGPR(), value);
Note: See TracChangeset for help on using the changeset viewer.