Changeset 15328 in webkit for trunk/JavaScriptCore/API/testapi.c


Ignore:
Timestamp:
Jul 10, 2006, 10:37:00 PM (19 years ago)
Author:
ggaren
Message:

Reviewed by Darin.


  • Changed public header includes to the <JavaScriptCore/ style.
  • Changed instances of 'buffer' to 'string' since we decided on JSInternalString instead of JSStringBuffer.
  • API/JSContextRef.h:
  • API/JSInternalStringRef.cpp: (JSStringMake): (JSInternalStringRetain): (JSInternalStringRelease): (JSValueCopyStringValue): (JSInternalStringGetLength): (JSInternalStringGetCharactersPtr): (JSInternalStringGetCharacters): (JSInternalStringGetMaxLengthUTF8): (JSInternalStringGetCharactersUTF8): (CFStringCreateWithJSInternalString):
  • API/JSInternalStringRef.h:
  • API/JSNode.c: (JSNodePrototype_appendChild): (JSNode_getNodeType):
  • API/JSObjectRef.cpp: (JSObjectCallAsConstructor):
  • API/JSValueRef.h:
  • API/JavaScriptCore.h:
  • API/minidom.c: (main): (print):
  • API/testapi.c: (MyObject_getPropertyList): (myConstructor_callAsConstructor): (main): I noticed that we were prematurely releasing some string buffers, so I moved their release calls to the end of main(). I got rid of 'Buf' in *Buf (sometimes changing to 'IString', when necessary to differentiate a variable) to match the buffer->string change.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/API/testapi.c

    r15317 r15328  
    194194    UNUSED_PARAM(context);
    195195   
    196     JSInternalStringRef propertyNameBuf;
    197    
    198     propertyNameBuf = JSInternalStringCreateUTF8("alwaysOne");
    199     JSPropertyListAdd(propertyList, object, propertyNameBuf);
    200     JSInternalStringRelease(propertyNameBuf);
    201    
    202     propertyNameBuf = JSInternalStringCreateUTF8("myPropertyName");
    203     JSPropertyListAdd(propertyList, object, propertyNameBuf);
    204     JSInternalStringRelease(propertyNameBuf);
     196    JSInternalStringRef propertyName;
     197   
     198    propertyName = JSInternalStringCreateUTF8("alwaysOne");
     199    JSPropertyListAdd(propertyList, object, propertyName);
     200    JSInternalStringRelease(propertyName);
     201   
     202    propertyName = JSInternalStringCreateUTF8("myPropertyName");
     203    JSPropertyListAdd(propertyList, object, propertyName);
     204    JSInternalStringRelease(propertyName);
    205205}
    206206
     
    303303    JSObjectRef result = JSObjectMake(context, NULL, 0);
    304304    if (argc > 0) {
    305         JSInternalStringRef valueBuffer = JSInternalStringCreateUTF8("value");
    306         JSObjectSetProperty(context, result, valueBuffer, argv[0], kJSPropertyAttributeNone);
    307         JSInternalStringRelease(valueBuffer);
     305        JSInternalStringRef value = JSInternalStringCreateUTF8("value");
     306        JSObjectSetProperty(context, result, value, argv[0], kJSPropertyAttributeNone);
     307        JSInternalStringRelease(value);
    308308    }
    309309   
     
    330330
    331331    // FIXME: test funny utf8 characters
    332     JSInternalStringRef jsEmptyStringBuf = JSInternalStringCreateUTF8("");
    333     JSValueRef jsEmptyString = JSStringMake(jsEmptyStringBuf);
    334    
    335     JSInternalStringRef jsOneStringBuf = JSInternalStringCreateUTF8("1");
    336     JSValueRef jsOneString = JSStringMake(jsOneStringBuf);
     332    JSInternalStringRef jsEmptyIString = JSInternalStringCreateUTF8("");
     333    JSValueRef jsEmptyString = JSStringMake(jsEmptyIString);
     334   
     335    JSInternalStringRef jsOneIString = JSInternalStringCreateUTF8("1");
     336    JSValueRef jsOneString = JSStringMake(jsOneIString);
    337337
    338338#if defined(__APPLE__)
     
    345345                                                          kCFAllocatorNull);
    346346
    347     JSInternalStringRef jsCFStringBuf = JSInternalStringCreateCF(cfString);
    348     JSValueRef jsCFString = JSStringMake(jsCFStringBuf);
     347    JSInternalStringRef jsCFIString = JSInternalStringCreateCF(cfString);
     348    JSValueRef jsCFString = JSStringMake(jsCFIString);
    349349   
    350350    CFStringRef cfEmptyString = CFStringCreateWithCString(kCFAllocatorDefault, "", kCFStringEncodingUTF8);
    351351   
    352     JSInternalStringRef jsCFEmptyStringBuf = JSInternalStringCreateCF(cfEmptyString);
    353     JSValueRef jsCFEmptyString = JSStringMake(jsCFEmptyStringBuf);
     352    JSInternalStringRef jsCFEmptyIString = JSInternalStringCreateCF(cfEmptyString);
     353    JSValueRef jsCFEmptyString = JSStringMake(jsCFEmptyIString);
    354354
    355355    CFIndex cfStringLength = CFStringGetLength(cfString);
     
    358358                          CFRangeMake(0, cfStringLength),
    359359                          buffer);
    360     JSInternalStringRef jsCFStringWithCharactersBuf = JSInternalStringCreate(buffer, cfStringLength);
    361     JSValueRef jsCFStringWithCharacters = JSStringMake(jsCFStringWithCharactersBuf);
    362    
    363     JSInternalStringRef jsCFEmptyStringWithCharactersBuf = JSInternalStringCreate(buffer, CFStringGetLength(cfEmptyString));
    364     JSValueRef jsCFEmptyStringWithCharacters = JSStringMake(jsCFEmptyStringWithCharactersBuf);
     360    JSInternalStringRef jsCFIStringWithCharacters = JSInternalStringCreate(buffer, cfStringLength);
     361    JSValueRef jsCFStringWithCharacters = JSStringMake(jsCFIStringWithCharacters);
     362   
     363    JSInternalStringRef jsCFEmptyIStringWithCharacters = JSInternalStringCreate(buffer, CFStringGetLength(cfEmptyString));
     364    JSValueRef jsCFEmptyStringWithCharacters = JSStringMake(jsCFEmptyIStringWithCharacters);
    365365#endif // __APPLE__
    366366
     
    474474   
    475475#if defined(__APPLE__)
    476     CFStringRef cfJSString = CFStringCreateWithJSInternalString(kCFAllocatorDefault, jsCFStringBuf);
    477     CFStringRef cfJSEmptyString = CFStringCreateWithJSInternalString(kCFAllocatorDefault, jsCFEmptyStringBuf);
     476    CFStringRef cfJSString = CFStringCreateWithJSInternalString(kCFAllocatorDefault, jsCFIString);
     477    CFStringRef cfJSEmptyString = CFStringCreateWithJSInternalString(kCFAllocatorDefault, jsCFEmptyIString);
    478478    assert(CFEqual(cfJSString, cfString));
    479479    assert(CFEqual(cfJSEmptyString, cfEmptyString));
     
    496496    assert(JSValueIsObject(globalObject));
    497497
    498     JSInternalStringRef goodSyntaxBuf = JSInternalStringCreateUTF8("x = 1;");
    499     JSInternalStringRef badSyntaxBuf = JSInternalStringCreateUTF8("x := 1;");
    500     assert(JSCheckSyntax(context, goodSyntaxBuf, NULL, 0, NULL));
    501     assert(!JSCheckSyntax(context, badSyntaxBuf, NULL, 0, NULL));
     498    JSInternalStringRef goodSyntax = JSInternalStringCreateUTF8("x = 1;");
     499    JSInternalStringRef badSyntax = JSInternalStringCreateUTF8("x := 1;");
     500    assert(JSCheckSyntax(context, goodSyntax, NULL, 0, NULL));
     501    assert(!JSCheckSyntax(context, badSyntax, NULL, 0, NULL));
    502502
    503503    JSValueRef result;
     
    506506    JSObjectRef o;
    507507
    508     result = JSEvaluate(context, goodSyntaxBuf, NULL, NULL, 1, NULL);
     508    result = JSEvaluate(context, goodSyntax, NULL, NULL, 1, NULL);
    509509    assert(result);
    510510    assert(JSValueIsEqual(context, result, jsOne));
    511511
    512512    exception = NULL;
    513     result = JSEvaluate(context, badSyntaxBuf, NULL, NULL, 1, &exception);
     513    result = JSEvaluate(context, badSyntax, NULL, NULL, 1, &exception);
    514514    assert(!result);
    515515    assert(JSValueIsObject(exception));
    516516   
    517     JSInternalStringRelease(jsEmptyStringBuf);
    518     JSInternalStringRelease(jsOneStringBuf);
    519 #if defined(__APPLE__)
    520     JSInternalStringRelease(jsCFStringBuf);
    521     JSInternalStringRelease(jsCFEmptyStringBuf);
    522     JSInternalStringRelease(jsCFStringWithCharactersBuf);
    523     JSInternalStringRelease(jsCFEmptyStringWithCharactersBuf);
    524 #endif // __APPLE__
    525     JSInternalStringRelease(goodSyntaxBuf);
    526     JSInternalStringRelease(badSyntaxBuf);
    527 
    528     JSInternalStringRef arrayBuf = JSInternalStringCreateUTF8("Array");
    529     v = JSObjectGetProperty(context, globalObject, arrayBuf);
     517    JSInternalStringRef array = JSInternalStringCreateUTF8("Array");
     518    v = JSObjectGetProperty(context, globalObject, array);
    530519    assert(v);
    531520    JSObjectRef arrayConstructor = JSValueToObject(context, v);
    532     JSInternalStringRelease(arrayBuf);
     521    JSInternalStringRelease(array);
    533522    result = JSObjectCallAsConstructor(context, arrayConstructor, 0, NULL, NULL);
    534523    assert(result);
     
    536525    assert(!JSValueIsInstanceOf(context, JSNullMake(), arrayConstructor));
    537526   
    538     JSInternalStringRef functionBuf;
     527    JSInternalStringRef functionBody;
    539528   
    540529    exception = NULL;
    541     functionBuf = JSInternalStringCreateUTF8("rreturn Array;");
    542     JSInternalStringRef lineBuf = JSInternalStringCreateUTF8("line");
    543     assert(!JSFunctionMakeWithBody(context, functionBuf, NULL, 1, &exception));
     530    functionBody = JSInternalStringCreateUTF8("rreturn Array;");
     531    JSInternalStringRef line = JSInternalStringCreateUTF8("line");
     532    assert(!JSFunctionMakeWithBody(context, functionBody, NULL, 1, &exception));
    544533    assert(JSValueIsObject(exception));
    545     v = JSObjectGetProperty(context, JSValueToObject(context, exception), lineBuf);
     534    v = JSObjectGetProperty(context, JSValueToObject(context, exception), line);
    546535    assert(v);
    547536    assertEqualsAsNumber(v, 2); // FIXME: Lexer::setCode bumps startingLineNumber by 1 -- we need to change internal callers so that it doesn't have to (saying '0' to mean '1' in the API would be really confusing -- it's really confusing internally, in fact)
    548     JSInternalStringRelease(functionBuf);
    549     JSInternalStringRelease(lineBuf);
    550 
    551     functionBuf = JSInternalStringCreateUTF8("return Array;");
    552     JSObjectRef function = JSFunctionMakeWithBody(context, functionBuf, NULL, 1, NULL);
    553     JSInternalStringRelease(functionBuf);
     537    JSInternalStringRelease(functionBody);
     538    JSInternalStringRelease(line);
     539
     540    functionBody = JSInternalStringCreateUTF8("return Array;");
     541    JSObjectRef function = JSFunctionMakeWithBody(context, functionBody, NULL, 1, NULL);
     542    JSInternalStringRelease(functionBody);
    554543
    555544    assert(JSObjectIsFunction(function));
     
    559548    JSObjectRef myObject = JSObjectMake(context, MyObject_class(context), NULL);
    560549    assert(didInitialize);
    561     JSInternalStringRef myObjectBuf = JSInternalStringCreateUTF8("MyObject");
    562     JSObjectSetProperty(context, globalObject, myObjectBuf, myObject, kJSPropertyAttributeNone);
    563     JSInternalStringRelease(myObjectBuf);
    564 
    565     JSInternalStringRef printBuf = JSInternalStringCreateUTF8("print");
     550    JSInternalStringRef myObjectIString = JSInternalStringCreateUTF8("MyObject");
     551    JSObjectSetProperty(context, globalObject, myObjectIString, myObject, kJSPropertyAttributeNone);
     552    JSInternalStringRelease(myObjectIString);
     553
     554    JSInternalStringRef print = JSInternalStringCreateUTF8("print");
    566555    JSObjectRef printFunction = JSFunctionMake(context, print_callAsFunction);
    567     JSObjectSetProperty(context, globalObject, printBuf, printFunction, kJSPropertyAttributeNone);
    568     JSInternalStringRelease(printBuf);
     556    JSObjectSetProperty(context, globalObject, print, printFunction, kJSPropertyAttributeNone);
     557    JSInternalStringRelease(print);
    569558   
    570559    assert(JSObjectSetPrivate(printFunction, (void*)1));
    571560    assert(JSObjectGetPrivate(printFunction) == (void*)1);
    572561
    573     JSInternalStringRef myConstructorBuf = JSInternalStringCreateUTF8("MyConstructor");
     562    JSInternalStringRef myConstructorIString = JSInternalStringCreateUTF8("MyConstructor");
    574563    JSObjectRef myConstructor = JSConstructorMake(context, myConstructor_callAsConstructor);
    575     JSObjectSetProperty(context, globalObject, myConstructorBuf, myConstructor, kJSPropertyAttributeNone);
    576     JSInternalStringRelease(myConstructorBuf);
     564    JSObjectSetProperty(context, globalObject, myConstructorIString, myConstructor, kJSPropertyAttributeNone);
     565    JSInternalStringRelease(myConstructorIString);
    577566   
    578567    assert(JSObjectSetPrivate(myConstructor, (void*)1));
     
    580569   
    581570    o = JSObjectMake(context, NULL, NULL);
    582     JSObjectSetProperty(context, o, jsOneStringBuf, JSNumberMake(1), kJSPropertyAttributeNone);
    583     JSObjectSetProperty(context, o, jsCFStringBuf,  JSNumberMake(1), kJSPropertyAttributeDontEnum);
     571    JSObjectSetProperty(context, o, jsOneIString, JSNumberMake(1), kJSPropertyAttributeNone);
     572    JSObjectSetProperty(context, o, jsCFIString,  JSNumberMake(1), kJSPropertyAttributeDontEnum);
    584573    JSPropertyEnumeratorRef enumerator = JSObjectCreatePropertyEnumerator(context, o);
    585574    int count = 0;
     
    592581    JSClassRelease(nullCallbacksClass);
    593582   
    594     functionBuf = JSInternalStringCreateUTF8("return this;");
    595     function = JSFunctionMakeWithBody(context, functionBuf, NULL, 1, NULL);
    596     JSInternalStringRelease(functionBuf);
     583    functionBody = JSInternalStringCreateUTF8("return this;");
     584    function = JSFunctionMakeWithBody(context, functionBody, NULL, 1, NULL);
     585    JSInternalStringRelease(functionBody);
    597586    v = JSObjectCallAsFunction(context, function, NULL, 0, NULL, NULL);
    598587    assert(JSValueIsEqual(context, v, globalObject));
     
    600589    assert(JSValueIsEqual(context, v, o));
    601590   
    602     char* script = createStringWithContentsOfFile("testapi.js");
    603     JSInternalStringRef scriptBuf = JSInternalStringCreateUTF8(script);
    604     result = JSEvaluate(context, scriptBuf, NULL, NULL, 1, &exception);
     591    char* scriptUTF8 = createStringWithContentsOfFile("testapi.js");
     592    JSInternalStringRef script = JSInternalStringCreateUTF8(scriptUTF8);
     593    result = JSEvaluate(context, script, NULL, NULL, 1, &exception);
    605594    if (JSValueIsUndefined(result))
    606595        printf("PASS: Test script executed successfully.\n");
    607596    else {
    608597        printf("FAIL: Test script returned unexcpected value:\n");
    609         JSInternalStringRef exceptionBuf = JSValueCopyStringValue(context, exception);
    610         CFStringRef exceptionCF = CFStringCreateWithJSInternalString(kCFAllocatorDefault, exceptionBuf);
     598        JSInternalStringRef exceptionIString = JSValueCopyStringValue(context, exception);
     599        CFStringRef exceptionCF = CFStringCreateWithJSInternalString(kCFAllocatorDefault, exceptionIString);
    611600        CFShow(exceptionCF);
    612601        CFRelease(exceptionCF);
    613         JSInternalStringRelease(exceptionBuf);
    614     }
    615     JSInternalStringRelease(scriptBuf);
    616     free(script);
     602        JSInternalStringRelease(exceptionIString);
     603    }
     604    JSInternalStringRelease(script);
     605    free(scriptUTF8);
    617606
    618607    // Allocate a few dummies so that at least one will be collected
     
    622611    assert(didFinalize);
    623612
     613    JSInternalStringRelease(jsEmptyIString);
     614    JSInternalStringRelease(jsOneIString);
     615#if defined(__APPLE__)
     616    JSInternalStringRelease(jsCFIString);
     617    JSInternalStringRelease(jsCFEmptyIString);
     618    JSInternalStringRelease(jsCFIStringWithCharacters);
     619    JSInternalStringRelease(jsCFEmptyIStringWithCharacters);
     620#endif // __APPLE__
     621    JSInternalStringRelease(goodSyntax);
     622    JSInternalStringRelease(badSyntax);
     623   
    624624    JSContextDestroy(context);
    625625    printf("PASS: Program exited normally.\n");
Note: See TracChangeset for help on using the changeset viewer.