Summary: These models for Memory Leaks have been ported to Pulse, so we can remove the models in biabduction and corresponding tests. Reviewed By: skcho Differential Revision: D22206287 fbshipit-source-id: e17499ad3master
parent
61ae2d1e1b
commit
fc7437abb0
@ -1,28 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
void __free_cf(CFTypeRef item);
|
||||
|
||||
void CFRelease(CFTypeRef item) { __free_cf(item); }
|
||||
|
||||
CFRunLoopObserverRef getAngelicObject();
|
||||
|
||||
CFRunLoopObserverRef CFRunLoopObserverCreateWithHandler(
|
||||
CFAllocatorRef allocator,
|
||||
CFOptionFlags activities,
|
||||
Boolean repeats,
|
||||
CFIndex order,
|
||||
void (^block)(CFRunLoopObserverRef observer, CFRunLoopActivity activity)) {
|
||||
// We need to skip allocation for this function since we currently don't
|
||||
// handle object finalizers in objc. This is to avoid false positive memory
|
||||
// leaks when the 'observer' is correctly freed in the block argument.
|
||||
|
||||
// undefined function will get skipped and thus make
|
||||
// CFRunLoopObserverCreateWithHandler return an angelic object
|
||||
return getAngelicObject();
|
||||
}
|
@ -1,70 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
void __free_cf(void* item);
|
||||
|
||||
void* CFAutorelease(void* item) { __free_cf(item); }
|
||||
|
||||
void* CFBridgingRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGAffineTransformRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGBaseRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGBitmapContextRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGColorRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGColorSpaceRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGContextRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGDataConsumerRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGDataProviderRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGErrorRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGFontRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGFunctionRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGGeometryRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGGradientRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGImageRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGLayerRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGPathRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGPatternRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGPDFArrayRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGPDFContentStreamRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGPDFContextRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGPDFDictionaryRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGPDFDocumentRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGPDFObjectRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGPDFOperatorTableRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGPDFPageRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGPDFScannerRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGPDFStreamRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGPDFStringRelease(void* item) { __free_cf(item); }
|
||||
|
||||
void CGShadingRelease(void* item) { __free_cf(item); }
|
@ -1,12 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
#import <CoreVideo/CVBuffer.h>
|
||||
#import <CoreVideo/CVPixelBuffer.h>
|
||||
|
||||
void __free_cf(CVPixelBufferRef item);
|
||||
|
||||
void CVPixelBufferRelease(CVPixelBufferRef pxbuffer) { __free_cf(pxbuffer); }
|
@ -1,197 +0,0 @@
|
||||
(*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*)
|
||||
|
||||
open! IStd
|
||||
|
||||
(** This module handles C or Objective-C types for which there are special rules for memory
|
||||
management *)
|
||||
|
||||
(** This module models special c struct types from the Apple's Core Foundation libraries for which
|
||||
there are particular rules for memory management. *)
|
||||
|
||||
module Core_foundation_model = struct
|
||||
let core_foundation =
|
||||
[ "__CFArray"
|
||||
; "__CFAttributedString"
|
||||
; "__CFBag"
|
||||
; "__CFNull"
|
||||
; "__CFAllocator"
|
||||
; "__CFBinaryHeap"
|
||||
; "__CFBitVector"
|
||||
; "__CFBundle"
|
||||
; "__CFCalendar"
|
||||
; "__CFCharacterSet"
|
||||
; "__CFDate"
|
||||
; "__CFDateFormatter"
|
||||
; "__CFDictionary"
|
||||
; "__CFError"
|
||||
; "__CFFileDescriptor"
|
||||
; "__CFFileSecurity"
|
||||
; "__CFLocale"
|
||||
; "__CFMachPort"
|
||||
; "__CFMessagePort"
|
||||
; "__CFNotificationCenter"
|
||||
; "__CFBoolean"
|
||||
; "__CFNumber"
|
||||
; "__CFNumberFormatter"
|
||||
; "__CFPlugInInstance"
|
||||
; "__CFReadStream"
|
||||
; "__CFWriteStream"
|
||||
; "__CFRunLoop"
|
||||
; "__CFRunLoopSource"
|
||||
; "__CFRunLoopObserver"
|
||||
; "__CFRunLoopTimer"
|
||||
; "__CFSet"
|
||||
; "__CFStringTokenizer"
|
||||
; "__CFSocket"
|
||||
; "__CFReadStream"
|
||||
; "__CFWriteStream"
|
||||
; "__CFTimeZone"
|
||||
; "__CFTree"
|
||||
; "__CFURLEnumerator"
|
||||
; "__CFUUID" ]
|
||||
|
||||
|
||||
let cf_network =
|
||||
[ "_CFHTTPAuthentication"
|
||||
; "__CFHTTPMessage"
|
||||
; "__CFHost"
|
||||
; "__CFNetDiagnostic"
|
||||
; "__CFNetService"
|
||||
; "__CFNetServiceMonitor"
|
||||
; "__CFNetServiceBrowser" ]
|
||||
|
||||
|
||||
let core_media =
|
||||
[ "OpaqueCMBlockBuffer"
|
||||
; "opaqueCMBufferQueue"
|
||||
; "opaqueCMBufferQueueTriggerToken"
|
||||
; "opaqueCMFormatDescription"
|
||||
; "OpaqueCMMemoryPool"
|
||||
; "opaqueCMSampleBuffer"
|
||||
; "opaqueCMSimpleQueue"
|
||||
; "OpaqueCMClock"
|
||||
; "OpaqueCMTimebase" ]
|
||||
|
||||
|
||||
let core_text =
|
||||
[ "__CTFont"
|
||||
; "__CTFontCollection"
|
||||
; "__CTFontDescriptor"
|
||||
; "__CTFrame"
|
||||
; "__CTFramesetter"
|
||||
; "__CTGlyphInfo"
|
||||
; "__CTLine"
|
||||
; "__CTParagraphStyle"
|
||||
; "__CTRubyAnnotation"
|
||||
; "__CTRun"
|
||||
; "__CTRunDelegate"
|
||||
; "__CTTextTab"
|
||||
; "__CTTypesetter" ]
|
||||
|
||||
|
||||
let core_video =
|
||||
["__CVBuffer"; "__CVMetalTextureCache"; "__CVOpenGLESTextureCache"; "__CVPixelBufferPool"]
|
||||
|
||||
|
||||
let image_io = ["CGImageDestination"; "CGImageMetadata"; "CGImageMetadataTag"; "CGImageSource"]
|
||||
|
||||
let security =
|
||||
[ "__SecCertificate"
|
||||
; "__SecIdentity"
|
||||
; "__SecKey"
|
||||
; "__SecPolicy"
|
||||
; "__SecAccessControl"
|
||||
; "__SecRandom"
|
||||
; "__SecCode"
|
||||
; "__SecTrust"
|
||||
; "__SecRequirement" ]
|
||||
|
||||
|
||||
let system_configuration =
|
||||
[ "__SCDynamicStore"
|
||||
; "__SCNetworkInterface"
|
||||
; "__SCBondStatus"
|
||||
; "__SCNetworkProtocol"
|
||||
; "__SCNetworkService"
|
||||
; "__SCNetworkSet"
|
||||
; "__SCNetworkConnection"
|
||||
; "__SCNetworkReachability"
|
||||
; "__SCPreferences" ]
|
||||
|
||||
|
||||
let core_graphics_types =
|
||||
[ "CGAffineTransform"
|
||||
; "CGBase"
|
||||
; "CGBitmapContext"
|
||||
; "CGColor"
|
||||
; "CGColorSpace"
|
||||
; "CGContext"
|
||||
; "CGDataConsumer"
|
||||
; "CGDataProvider"
|
||||
; "CGError"
|
||||
; "CGFont"
|
||||
; "CGFunction"
|
||||
; "CGGeometry"
|
||||
; "CGGradient"
|
||||
; "CGImage"
|
||||
; "CGLayer"
|
||||
; "CGPath"
|
||||
; "CGPattern"
|
||||
; "CGPDFArray"
|
||||
; "CGPDFContentStream"
|
||||
; "CGPDFContext"
|
||||
; "CGPDFDictionary"
|
||||
; "CGPDFDocument"
|
||||
; "CGPDFObject"
|
||||
; "CGPDFOperatorTable"
|
||||
; "CGPDFPage"
|
||||
; "CGPDFScanner"
|
||||
; "CGPDFStream"
|
||||
; "CGPDFString"
|
||||
; "CGShading" ]
|
||||
|
||||
|
||||
let core_foundation_types =
|
||||
core_foundation @ cf_network @ core_media @ core_text @ core_video @ image_io @ security
|
||||
@ system_configuration
|
||||
|
||||
|
||||
let copy = "Copy"
|
||||
|
||||
let create = "Create"
|
||||
|
||||
type core_lib = Core_foundation | Core_graphics
|
||||
|
||||
let core_lib_to_type_list lib =
|
||||
match lib with Core_foundation -> core_foundation_types | Core_graphics -> core_graphics_types
|
||||
|
||||
|
||||
let rec is_core_lib lib typ =
|
||||
match typ.Typ.desc with
|
||||
| Typ.Tptr (styp, _) ->
|
||||
is_core_lib lib styp
|
||||
| Typ.Tstruct name ->
|
||||
let core_lib_types = core_lib_to_type_list lib in
|
||||
List.mem ~equal:String.equal core_lib_types (Typ.Name.name name)
|
||||
| _ ->
|
||||
false
|
||||
|
||||
|
||||
let is_core_foundation_type typ = is_core_lib Core_foundation typ
|
||||
|
||||
let is_core_graphics_type typ = is_core_lib Core_graphics typ
|
||||
|
||||
let is_core_lib_type typ = is_core_foundation_type typ || is_core_graphics_type typ
|
||||
|
||||
let is_core_lib_create typ funct =
|
||||
is_core_lib_type typ
|
||||
&& (String.is_substring ~substring:create funct || String.is_substring ~substring:copy funct)
|
||||
end
|
||||
|
||||
let is_malloc_model return_type pname =
|
||||
Core_foundation_model.is_core_lib_create return_type (Procname.to_string pname)
|
@ -1,13 +0,0 @@
|
||||
(*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*)
|
||||
|
||||
open! IStd
|
||||
|
||||
(** This module models special c struct types from the Apple's Core Foundation libraries for which
|
||||
there are particular rules for memory management. *)
|
||||
|
||||
val is_malloc_model : Typ.t -> Procname.t -> bool
|
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#import <Foundation/NSObject.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int block_captured_var_leak_bad() {
|
||||
int* x = malloc(sizeof(int));
|
||||
*x = 2;
|
||||
int (^blk)(void) = ^() {
|
||||
return *x;
|
||||
};
|
||||
return blk();
|
||||
}
|
||||
|
||||
int block_free_ok_FP() {
|
||||
int* x = malloc(sizeof(int));
|
||||
*x = 2;
|
||||
int (^blk)(void) = ^() {
|
||||
int i = *x;
|
||||
free(x);
|
||||
return i;
|
||||
};
|
||||
return blk();
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#import <Foundation/NSObject.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface MemoryLeakExample : NSObject
|
||||
|
||||
@property(strong) UIView* backgroundCoveringView;
|
||||
@property(strong) UIView* attachmentContainerView;
|
||||
|
||||
@end
|
@ -1,111 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#import "MemoryLeakExample.h"
|
||||
#import <CoreText/CTFramesetter.h>
|
||||
#import <Security/SecKey.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@implementation MemoryLeakExample
|
||||
|
||||
// For now it doesn't contain memory leak by default. Later, if we remove
|
||||
// CFRelease, there should be a leak.
|
||||
- (void)layoutSubviews {
|
||||
UIView* attachmentContainerView = [UIView alloc];
|
||||
CGPathRef shadowPath =
|
||||
CGPathCreateWithRect(attachmentContainerView.bounds, NULL);
|
||||
// self.attachmentContainerView.layer.shadowPath = shadowPath;
|
||||
CGPathRelease(shadowPath);
|
||||
[attachmentContainerView release];
|
||||
}
|
||||
|
||||
- (void)test {
|
||||
CGPathRef shadowPath =
|
||||
CGPathCreateWithRect(self.backgroundCoveringView.bounds, NULL);
|
||||
self.backgroundCoveringView.layer.shadowPath = shadowPath;
|
||||
}
|
||||
|
||||
+ (void)measureFrameSizeForText {
|
||||
CFAttributedStringCreateMutable(nil, 0);
|
||||
}
|
||||
|
||||
+ (void)measureFrameSizeForTextNoLeak {
|
||||
CFMutableAttributedStringRef maString =
|
||||
CFAttributedStringCreateMutable(nil, 0);
|
||||
CFRelease(maString);
|
||||
}
|
||||
|
||||
+ (void)test1:(CFAttributedStringRef)str {
|
||||
CTFramesetterCreateWithAttributedString(str);
|
||||
}
|
||||
|
||||
+ (void)test1NoLeak {
|
||||
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(nil);
|
||||
CFRelease(framesetter);
|
||||
}
|
||||
|
||||
+ (void)createCloseCrossGlyph:(CGRect)rect {
|
||||
0.20f * CGRectGetHeight(rect);
|
||||
CGPathCreateMutable();
|
||||
}
|
||||
|
||||
+ (void)createCloseCrossGlyphNoLeak:(CGRect)rect {
|
||||
CGFloat lineThickness = 0.20f * CGRectGetHeight(rect);
|
||||
|
||||
// One rectangle
|
||||
CGMutablePathRef path1 = CGPathCreateMutable();
|
||||
CFRelease(path1);
|
||||
}
|
||||
|
||||
+ (void)test2:(SecTrustRef)trust {
|
||||
SecTrustCopyPublicKey(trust);
|
||||
}
|
||||
|
||||
+ (void)test2NoLeak {
|
||||
SecKeyRef allowedPublicKey = SecTrustCopyPublicKey(nil);
|
||||
CFRelease(allowedPublicKey);
|
||||
}
|
||||
|
||||
+ (void)testImageRefRelease {
|
||||
CGImageRef newImage = CGBitmapContextCreateImage(nil);
|
||||
CGImageRelease(newImage);
|
||||
}
|
||||
|
||||
CGColorRef FBColorCreateWithGray(CGFloat gray, CGFloat a);
|
||||
|
||||
- (id)testFBColorCreateWithGray {
|
||||
CGColorRef borderColor = FBColorCreateWithGray(0.0, 0.3);
|
||||
CGColorRelease(borderColor);
|
||||
}
|
||||
|
||||
- (int)regularLeak {
|
||||
int* x = malloc(sizeof(int));
|
||||
*x = 7;
|
||||
return *x;
|
||||
}
|
||||
|
||||
- (int)blockCapturedVarLeak {
|
||||
int* x = malloc(sizeof(int));
|
||||
*x = 2;
|
||||
int (^blk)(void) = ^() {
|
||||
return *x;
|
||||
};
|
||||
return blk();
|
||||
}
|
||||
|
||||
- (int)blockFreeNoLeak {
|
||||
int* x = malloc(sizeof(int));
|
||||
*x = 2;
|
||||
int (^blk)(void) = ^() {
|
||||
int i = *x;
|
||||
free(x);
|
||||
return i;
|
||||
};
|
||||
return blk();
|
||||
}
|
||||
|
||||
@end
|
@ -1,333 +0,0 @@
|
||||
/* @generated */
|
||||
digraph cfg {
|
||||
"objc_blockMemoryLeakExample.blockCapturedVarLeak_1.74cf15f2799999b1100e5a876dbb3ac4_1" [label="1: Start objc_blockMemoryLeakExample.blockCapturedVarLeak_1\nFormals: x:int*\nLocals: \nCaptured: x:int* \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"objc_blockMemoryLeakExample.blockCapturedVarLeak_1.74cf15f2799999b1100e5a876dbb3ac4_1" -> "objc_blockMemoryLeakExample.blockCapturedVarLeak_1.74cf15f2799999b1100e5a876dbb3ac4_3" ;
|
||||
"objc_blockMemoryLeakExample.blockCapturedVarLeak_1.74cf15f2799999b1100e5a876dbb3ac4_2" [label="2: Exit objc_blockMemoryLeakExample.blockCapturedVarLeak_1 \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"objc_blockMemoryLeakExample.blockCapturedVarLeak_1.74cf15f2799999b1100e5a876dbb3ac4_3" [label="3: Return Stmt \n n$52=*&x:int* [line 95, column 13]\n n$53=*n$52:int [line 95, column 12]\n *&return:int=n$53 [line 95, column 5]\n " shape="box"]
|
||||
|
||||
|
||||
"objc_blockMemoryLeakExample.blockCapturedVarLeak_1.74cf15f2799999b1100e5a876dbb3ac4_3" -> "objc_blockMemoryLeakExample.blockCapturedVarLeak_1.74cf15f2799999b1100e5a876dbb3ac4_2" ;
|
||||
"objc_blockMemoryLeakExample.blockFreeNoLeak_2.c788da2c768efd587ffe2f3483f8b01b_1" [label="1: Start objc_blockMemoryLeakExample.blockFreeNoLeak_2\nFormals: x:int*\nLocals: i:int\nCaptured: x:int* \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"objc_blockMemoryLeakExample.blockFreeNoLeak_2.c788da2c768efd587ffe2f3483f8b01b_1" -> "objc_blockMemoryLeakExample.blockFreeNoLeak_2.c788da2c768efd587ffe2f3483f8b01b_5" ;
|
||||
"objc_blockMemoryLeakExample.blockFreeNoLeak_2.c788da2c768efd587ffe2f3483f8b01b_2" [label="2: Exit objc_blockMemoryLeakExample.blockFreeNoLeak_2 \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"objc_blockMemoryLeakExample.blockFreeNoLeak_2.c788da2c768efd587ffe2f3483f8b01b_3" [label="3: Return Stmt \n n$59=*&i:int [line 106, column 12]\n *&return:int=n$59 [line 106, column 5]\n " shape="box"]
|
||||
|
||||
|
||||
"objc_blockMemoryLeakExample.blockFreeNoLeak_2.c788da2c768efd587ffe2f3483f8b01b_3" -> "objc_blockMemoryLeakExample.blockFreeNoLeak_2.c788da2c768efd587ffe2f3483f8b01b_2" ;
|
||||
"objc_blockMemoryLeakExample.blockFreeNoLeak_2.c788da2c768efd587ffe2f3483f8b01b_4" [label="4: Call _fun_free \n n$60=*&x:int* [line 105, column 10]\n n$61=_fun_free(n$60:void*) [line 105, column 5]\n " shape="box"]
|
||||
|
||||
|
||||
"objc_blockMemoryLeakExample.blockFreeNoLeak_2.c788da2c768efd587ffe2f3483f8b01b_4" -> "objc_blockMemoryLeakExample.blockFreeNoLeak_2.c788da2c768efd587ffe2f3483f8b01b_3" ;
|
||||
"objc_blockMemoryLeakExample.blockFreeNoLeak_2.c788da2c768efd587ffe2f3483f8b01b_5" [label="5: DeclStmt \n VARIABLE_DECLARED(i:int); [line 104, column 5]\n n$62=*&x:int* [line 104, column 14]\n n$63=*n$62:int [line 104, column 13]\n *&i:int=n$63 [line 104, column 5]\n " shape="box"]
|
||||
|
||||
|
||||
"objc_blockMemoryLeakExample.blockFreeNoLeak_2.c788da2c768efd587ffe2f3483f8b01b_5" -> "objc_blockMemoryLeakExample.blockFreeNoLeak_2.c788da2c768efd587ffe2f3483f8b01b_4" ;
|
||||
"createCloseCrossGlyph:#MemoryLeakExample#class.b78475cbe035b221b50538a8aad3c9cf_1" [label="1: Start MemoryLeakExample.createCloseCrossGlyph:\nFormals: rect:CGRect\nLocals: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"createCloseCrossGlyph:#MemoryLeakExample#class.b78475cbe035b221b50538a8aad3c9cf_1" -> "createCloseCrossGlyph:#MemoryLeakExample#class.b78475cbe035b221b50538a8aad3c9cf_4" ;
|
||||
"createCloseCrossGlyph:#MemoryLeakExample#class.b78475cbe035b221b50538a8aad3c9cf_2" [label="2: Exit MemoryLeakExample.createCloseCrossGlyph: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"createCloseCrossGlyph:#MemoryLeakExample#class.b78475cbe035b221b50538a8aad3c9cf_3" [label="3: Call _fun_CGPathCreateMutable \n n$26=_fun_CGPathCreateMutable() [line 53, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"createCloseCrossGlyph:#MemoryLeakExample#class.b78475cbe035b221b50538a8aad3c9cf_3" -> "createCloseCrossGlyph:#MemoryLeakExample#class.b78475cbe035b221b50538a8aad3c9cf_2" ;
|
||||
"createCloseCrossGlyph:#MemoryLeakExample#class.b78475cbe035b221b50538a8aad3c9cf_4" [label="4: BinaryOperatorStmt: Mul \n n$27=*&rect:CGRect [line 52, column 27]\n n$28=_fun_CGRectGetHeight(n$27:CGRect) [line 52, column 11]\n " shape="box"]
|
||||
|
||||
|
||||
"createCloseCrossGlyph:#MemoryLeakExample#class.b78475cbe035b221b50538a8aad3c9cf_4" -> "createCloseCrossGlyph:#MemoryLeakExample#class.b78475cbe035b221b50538a8aad3c9cf_3" ;
|
||||
"createCloseCrossGlyphNoLeak:#MemoryLeakExample#class.0954bcd442044fd9788af38303a3790b_1" [label="1: Start MemoryLeakExample.createCloseCrossGlyphNoLeak:\nFormals: rect:CGRect\nLocals: path1:CGPath* lineThickness:double \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"createCloseCrossGlyphNoLeak:#MemoryLeakExample#class.0954bcd442044fd9788af38303a3790b_1" -> "createCloseCrossGlyphNoLeak:#MemoryLeakExample#class.0954bcd442044fd9788af38303a3790b_5" ;
|
||||
"createCloseCrossGlyphNoLeak:#MemoryLeakExample#class.0954bcd442044fd9788af38303a3790b_2" [label="2: Exit MemoryLeakExample.createCloseCrossGlyphNoLeak: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"createCloseCrossGlyphNoLeak:#MemoryLeakExample#class.0954bcd442044fd9788af38303a3790b_3" [label="3: Call _fun_CFRelease \n n$29=*&path1:CGPath* [line 61, column 13]\n n$30=_fun_CFRelease(n$29:void const *) [line 61, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"createCloseCrossGlyphNoLeak:#MemoryLeakExample#class.0954bcd442044fd9788af38303a3790b_3" -> "createCloseCrossGlyphNoLeak:#MemoryLeakExample#class.0954bcd442044fd9788af38303a3790b_2" ;
|
||||
"createCloseCrossGlyphNoLeak:#MemoryLeakExample#class.0954bcd442044fd9788af38303a3790b_4" [label="4: DeclStmt \n VARIABLE_DECLARED(path1:CGPath*); [line 60, column 3]\n n$31=_fun_CGPathCreateMutable() [line 60, column 28]\n *&path1:CGPath*=n$31 [line 60, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"createCloseCrossGlyphNoLeak:#MemoryLeakExample#class.0954bcd442044fd9788af38303a3790b_4" -> "createCloseCrossGlyphNoLeak:#MemoryLeakExample#class.0954bcd442044fd9788af38303a3790b_3" ;
|
||||
"createCloseCrossGlyphNoLeak:#MemoryLeakExample#class.0954bcd442044fd9788af38303a3790b_5" [label="5: DeclStmt \n VARIABLE_DECLARED(lineThickness:double); [line 57, column 3]\n n$32=*&rect:CGRect [line 57, column 51]\n n$33=_fun_CGRectGetHeight(n$32:CGRect) [line 57, column 35]\n *&lineThickness:double=(0.200000003 * n$33) [line 57, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"createCloseCrossGlyphNoLeak:#MemoryLeakExample#class.0954bcd442044fd9788af38303a3790b_5" -> "createCloseCrossGlyphNoLeak:#MemoryLeakExample#class.0954bcd442044fd9788af38303a3790b_4" ;
|
||||
"measureFrameSizeForText#MemoryLeakExample#class.f59bd9e59cef3fd16475487a380b3804_1" [label="1: Start MemoryLeakExample.measureFrameSizeForText\nFormals: \nLocals: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"measureFrameSizeForText#MemoryLeakExample#class.f59bd9e59cef3fd16475487a380b3804_1" -> "measureFrameSizeForText#MemoryLeakExample#class.f59bd9e59cef3fd16475487a380b3804_3" ;
|
||||
"measureFrameSizeForText#MemoryLeakExample#class.f59bd9e59cef3fd16475487a380b3804_2" [label="2: Exit MemoryLeakExample.measureFrameSizeForText \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"measureFrameSizeForText#MemoryLeakExample#class.f59bd9e59cef3fd16475487a380b3804_3" [label="3: Call _fun_CFAttributedStringCreateMutable \n n$17=_fun_CFAttributedStringCreateMutable(null:__CFAllocator const *,0:long) [line 33, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"measureFrameSizeForText#MemoryLeakExample#class.f59bd9e59cef3fd16475487a380b3804_3" -> "measureFrameSizeForText#MemoryLeakExample#class.f59bd9e59cef3fd16475487a380b3804_2" ;
|
||||
"measureFrameSizeForTextNoLeak#MemoryLeakExample#class.9443bec011166230e1709abbe3c930d4_1" [label="1: Start MemoryLeakExample.measureFrameSizeForTextNoLeak\nFormals: \nLocals: maString:__CFAttributedString* \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"measureFrameSizeForTextNoLeak#MemoryLeakExample#class.9443bec011166230e1709abbe3c930d4_1" -> "measureFrameSizeForTextNoLeak#MemoryLeakExample#class.9443bec011166230e1709abbe3c930d4_4" ;
|
||||
"measureFrameSizeForTextNoLeak#MemoryLeakExample#class.9443bec011166230e1709abbe3c930d4_2" [label="2: Exit MemoryLeakExample.measureFrameSizeForTextNoLeak \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"measureFrameSizeForTextNoLeak#MemoryLeakExample#class.9443bec011166230e1709abbe3c930d4_3" [label="3: Call _fun_CFRelease \n n$18=*&maString:__CFAttributedString* [line 39, column 13]\n n$19=_fun_CFRelease(n$18:void const *) [line 39, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"measureFrameSizeForTextNoLeak#MemoryLeakExample#class.9443bec011166230e1709abbe3c930d4_3" -> "measureFrameSizeForTextNoLeak#MemoryLeakExample#class.9443bec011166230e1709abbe3c930d4_2" ;
|
||||
"measureFrameSizeForTextNoLeak#MemoryLeakExample#class.9443bec011166230e1709abbe3c930d4_4" [label="4: DeclStmt \n VARIABLE_DECLARED(maString:__CFAttributedString*); [line 37, column 3]\n n$20=_fun_CFAttributedStringCreateMutable(null:__CFAllocator const *,0:long) [line 38, column 7]\n *&maString:__CFAttributedString*=n$20 [line 37, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"measureFrameSizeForTextNoLeak#MemoryLeakExample#class.9443bec011166230e1709abbe3c930d4_4" -> "measureFrameSizeForTextNoLeak#MemoryLeakExample#class.9443bec011166230e1709abbe3c930d4_3" ;
|
||||
"test1:#MemoryLeakExample(struct __CFAttributedString)#class.5c69af4eb9da1845df6efe64785fd0c9_1" [label="1: Start MemoryLeakExample.test1:\nFormals: str:__CFAttributedString const *\nLocals: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"test1:#MemoryLeakExample(struct __CFAttributedString)#class.5c69af4eb9da1845df6efe64785fd0c9_1" -> "test1:#MemoryLeakExample(struct __CFAttributedString)#class.5c69af4eb9da1845df6efe64785fd0c9_3" ;
|
||||
"test1:#MemoryLeakExample(struct __CFAttributedString)#class.5c69af4eb9da1845df6efe64785fd0c9_2" [label="2: Exit MemoryLeakExample.test1: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"test1:#MemoryLeakExample(struct __CFAttributedString)#class.5c69af4eb9da1845df6efe64785fd0c9_3" [label="3: Call _fun_CTFramesetterCreateWithAttributedString \n n$21=*&str:__CFAttributedString const * [line 43, column 43]\n n$22=_fun_CTFramesetterCreateWithAttributedString(n$21:__CFAttributedString const *) [line 43, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"test1:#MemoryLeakExample(struct __CFAttributedString)#class.5c69af4eb9da1845df6efe64785fd0c9_3" -> "test1:#MemoryLeakExample(struct __CFAttributedString)#class.5c69af4eb9da1845df6efe64785fd0c9_2" ;
|
||||
"test1NoLeak#MemoryLeakExample#class.7e0d9640dbd86a21622e801793707bd9_1" [label="1: Start MemoryLeakExample.test1NoLeak\nFormals: \nLocals: framesetter:__CTFramesetter const * \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"test1NoLeak#MemoryLeakExample#class.7e0d9640dbd86a21622e801793707bd9_1" -> "test1NoLeak#MemoryLeakExample#class.7e0d9640dbd86a21622e801793707bd9_4" ;
|
||||
"test1NoLeak#MemoryLeakExample#class.7e0d9640dbd86a21622e801793707bd9_2" [label="2: Exit MemoryLeakExample.test1NoLeak \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"test1NoLeak#MemoryLeakExample#class.7e0d9640dbd86a21622e801793707bd9_3" [label="3: Call _fun_CFRelease \n n$23=*&framesetter:__CTFramesetter const * [line 48, column 13]\n n$24=_fun_CFRelease(n$23:void const *) [line 48, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"test1NoLeak#MemoryLeakExample#class.7e0d9640dbd86a21622e801793707bd9_3" -> "test1NoLeak#MemoryLeakExample#class.7e0d9640dbd86a21622e801793707bd9_2" ;
|
||||
"test1NoLeak#MemoryLeakExample#class.7e0d9640dbd86a21622e801793707bd9_4" [label="4: DeclStmt \n VARIABLE_DECLARED(framesetter:__CTFramesetter const *); [line 47, column 3]\n n$25=_fun_CTFramesetterCreateWithAttributedString(null:__CFAttributedString const *) [line 47, column 34]\n *&framesetter:__CTFramesetter const *=n$25 [line 47, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"test1NoLeak#MemoryLeakExample#class.7e0d9640dbd86a21622e801793707bd9_4" -> "test1NoLeak#MemoryLeakExample#class.7e0d9640dbd86a21622e801793707bd9_3" ;
|
||||
"test2:#MemoryLeakExample(struct __SecTrust)#class.0351c8bd25e5a49860146e05fbc5b49a_1" [label="1: Start MemoryLeakExample.test2:\nFormals: trust:__SecTrust*\nLocals: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"test2:#MemoryLeakExample(struct __SecTrust)#class.0351c8bd25e5a49860146e05fbc5b49a_1" -> "test2:#MemoryLeakExample(struct __SecTrust)#class.0351c8bd25e5a49860146e05fbc5b49a_3" ;
|
||||
"test2:#MemoryLeakExample(struct __SecTrust)#class.0351c8bd25e5a49860146e05fbc5b49a_2" [label="2: Exit MemoryLeakExample.test2: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"test2:#MemoryLeakExample(struct __SecTrust)#class.0351c8bd25e5a49860146e05fbc5b49a_3" [label="3: Call _fun_SecTrustCopyPublicKey \n n$34=*&trust:__SecTrust* [line 65, column 25]\n n$35=_fun_SecTrustCopyPublicKey(n$34:__SecTrust*) [line 65, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"test2:#MemoryLeakExample(struct __SecTrust)#class.0351c8bd25e5a49860146e05fbc5b49a_3" -> "test2:#MemoryLeakExample(struct __SecTrust)#class.0351c8bd25e5a49860146e05fbc5b49a_2" ;
|
||||
"test2NoLeak#MemoryLeakExample#class.69cf0c35f7df26deefa723cac655894d_1" [label="1: Start MemoryLeakExample.test2NoLeak\nFormals: \nLocals: allowedPublicKey:__SecKey* \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"test2NoLeak#MemoryLeakExample#class.69cf0c35f7df26deefa723cac655894d_1" -> "test2NoLeak#MemoryLeakExample#class.69cf0c35f7df26deefa723cac655894d_4" ;
|
||||
"test2NoLeak#MemoryLeakExample#class.69cf0c35f7df26deefa723cac655894d_2" [label="2: Exit MemoryLeakExample.test2NoLeak \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"test2NoLeak#MemoryLeakExample#class.69cf0c35f7df26deefa723cac655894d_3" [label="3: Call _fun_CFRelease \n n$36=*&allowedPublicKey:__SecKey* [line 70, column 13]\n n$37=_fun_CFRelease(n$36:void const *) [line 70, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"test2NoLeak#MemoryLeakExample#class.69cf0c35f7df26deefa723cac655894d_3" -> "test2NoLeak#MemoryLeakExample#class.69cf0c35f7df26deefa723cac655894d_2" ;
|
||||
"test2NoLeak#MemoryLeakExample#class.69cf0c35f7df26deefa723cac655894d_4" [label="4: DeclStmt \n VARIABLE_DECLARED(allowedPublicKey:__SecKey*); [line 69, column 3]\n n$38=_fun_SecTrustCopyPublicKey(null:__SecTrust*) [line 69, column 32]\n *&allowedPublicKey:__SecKey*=n$38 [line 69, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"test2NoLeak#MemoryLeakExample#class.69cf0c35f7df26deefa723cac655894d_4" -> "test2NoLeak#MemoryLeakExample#class.69cf0c35f7df26deefa723cac655894d_3" ;
|
||||
"testImageRefRelease#MemoryLeakExample#class.fa3cf5eac6a14b14c5050c7d62d2a79f_1" [label="1: Start MemoryLeakExample.testImageRefRelease\nFormals: \nLocals: newImage:CGImage* \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"testImageRefRelease#MemoryLeakExample#class.fa3cf5eac6a14b14c5050c7d62d2a79f_1" -> "testImageRefRelease#MemoryLeakExample#class.fa3cf5eac6a14b14c5050c7d62d2a79f_4" ;
|
||||
"testImageRefRelease#MemoryLeakExample#class.fa3cf5eac6a14b14c5050c7d62d2a79f_2" [label="2: Exit MemoryLeakExample.testImageRefRelease \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"testImageRefRelease#MemoryLeakExample#class.fa3cf5eac6a14b14c5050c7d62d2a79f_3" [label="3: Call _fun_CGImageRelease \n n$39=*&newImage:CGImage* [line 75, column 18]\n n$40=_fun_CGImageRelease(n$39:CGImage*) [line 75, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"testImageRefRelease#MemoryLeakExample#class.fa3cf5eac6a14b14c5050c7d62d2a79f_3" -> "testImageRefRelease#MemoryLeakExample#class.fa3cf5eac6a14b14c5050c7d62d2a79f_2" ;
|
||||
"testImageRefRelease#MemoryLeakExample#class.fa3cf5eac6a14b14c5050c7d62d2a79f_4" [label="4: DeclStmt \n VARIABLE_DECLARED(newImage:CGImage*); [line 74, column 3]\n n$41=_fun_CGBitmapContextCreateImage(null:CGContext*) [line 74, column 25]\n *&newImage:CGImage*=n$41 [line 74, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"testImageRefRelease#MemoryLeakExample#class.fa3cf5eac6a14b14c5050c7d62d2a79f_4" -> "testImageRefRelease#MemoryLeakExample#class.fa3cf5eac6a14b14c5050c7d62d2a79f_3" ;
|
||||
"attachmentContainerView#MemoryLeakExample#instance.aff4fd13563e9783b77bb7f4c56c06f7_1" [label="1: Start MemoryLeakExample.attachmentContainerView\nFormals: self:MemoryLeakExample*\nLocals: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"attachmentContainerView#MemoryLeakExample#instance.aff4fd13563e9783b77bb7f4c56c06f7_1" -> "attachmentContainerView#MemoryLeakExample#instance.aff4fd13563e9783b77bb7f4c56c06f7_3" ;
|
||||
"attachmentContainerView#MemoryLeakExample#instance.aff4fd13563e9783b77bb7f4c56c06f7_2" [label="2: Exit MemoryLeakExample.attachmentContainerView \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"attachmentContainerView#MemoryLeakExample#instance.aff4fd13563e9783b77bb7f4c56c06f7_3" [label="3: BinaryOperatorStmt: Node \n n$10=*&self:MemoryLeakExample* [line 14, column 27]\n n$11=*n$10._attachmentContainerView:UIView* [line 14, column 27]\n *&return:UIView*=n$11 [line 14, column 27]\n " shape="box"]
|
||||
|
||||
|
||||
"attachmentContainerView#MemoryLeakExample#instance.aff4fd13563e9783b77bb7f4c56c06f7_3" -> "attachmentContainerView#MemoryLeakExample#instance.aff4fd13563e9783b77bb7f4c56c06f7_2" ;
|
||||
"backgroundCoveringView#MemoryLeakExample#instance.274e2fe96127ee4833b32c350286035f_1" [label="1: Start MemoryLeakExample.backgroundCoveringView\nFormals: self:MemoryLeakExample*\nLocals: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"backgroundCoveringView#MemoryLeakExample#instance.274e2fe96127ee4833b32c350286035f_1" -> "backgroundCoveringView#MemoryLeakExample#instance.274e2fe96127ee4833b32c350286035f_3" ;
|
||||
"backgroundCoveringView#MemoryLeakExample#instance.274e2fe96127ee4833b32c350286035f_2" [label="2: Exit MemoryLeakExample.backgroundCoveringView \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"backgroundCoveringView#MemoryLeakExample#instance.274e2fe96127ee4833b32c350286035f_3" [label="3: BinaryOperatorStmt: Node \n n$6=*&self:MemoryLeakExample* [line 13, column 27]\n n$7=*n$6._backgroundCoveringView:UIView* [line 13, column 27]\n *&return:UIView*=n$7 [line 13, column 27]\n " shape="box"]
|
||||
|
||||
|
||||
"backgroundCoveringView#MemoryLeakExample#instance.274e2fe96127ee4833b32c350286035f_3" -> "backgroundCoveringView#MemoryLeakExample#instance.274e2fe96127ee4833b32c350286035f_2" ;
|
||||
"blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_1" [label="1: Start MemoryLeakExample.blockCapturedVarLeak\nFormals: self:MemoryLeakExample*\nLocals: blk:_fn_(*) x:int* \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_1" -> "blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_6" ;
|
||||
"blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_2" [label="2: Exit MemoryLeakExample.blockCapturedVarLeak \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_3" [label="3: Return Stmt \n n$49=*&blk:_fn_(*) [line 97, column 10]\n n$50=n$49() objc_block [line 97, column 10]\n *&return:int=n$50 [line 97, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_3" -> "blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_2" ;
|
||||
"blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_4" [label="4: DeclStmt \n VARIABLE_DECLARED(blk:_fn_(*)); [line 94, column 3]\n n$51=*&x:int* [line 94, column 22]\n *&blk:_fn_(*)=(_fun_objc_blockMemoryLeakExample.blockCapturedVarLeak_1,(n$51 &x:int*)) [line 94, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_4" -> "blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_3" ;
|
||||
"blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_5" [label="5: BinaryOperatorStmt: Assign \n n$54=*&x:int* [line 93, column 4]\n *n$54:int=2 [line 93, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_5" -> "blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_4" ;
|
||||
"blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_6" [label="6: DeclStmt \n VARIABLE_DECLARED(x:int*); [line 92, column 3]\n n$55=_fun_malloc_no_fail(sizeof(t=int;nbytes=4):int) [line 92, column 12]\n *&x:int*=(int*)n$55 [line 92, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_6" -> "blockCapturedVarLeak#MemoryLeakExample#instance.53bb018bc84d6a696dc756e20b5b3f52_5" ;
|
||||
"blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_1" [label="1: Start MemoryLeakExample.blockFreeNoLeak\nFormals: self:MemoryLeakExample*\nLocals: blk:_fn_(*) x:int* \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_1" -> "blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_6" ;
|
||||
"blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_2" [label="2: Exit MemoryLeakExample.blockFreeNoLeak \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_3" [label="3: Return Stmt \n n$56=*&blk:_fn_(*) [line 108, column 10]\n n$57=n$56() objc_block [line 108, column 10]\n *&return:int=n$57 [line 108, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_3" -> "blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_2" ;
|
||||
"blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_4" [label="4: DeclStmt \n VARIABLE_DECLARED(blk:_fn_(*)); [line 103, column 3]\n n$58=*&x:int* [line 103, column 22]\n *&blk:_fn_(*)=(_fun_objc_blockMemoryLeakExample.blockFreeNoLeak_2,(n$58 &x:int*)) [line 103, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_4" -> "blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_3" ;
|
||||
"blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_5" [label="5: BinaryOperatorStmt: Assign \n n$64=*&x:int* [line 102, column 4]\n *n$64:int=2 [line 102, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_5" -> "blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_4" ;
|
||||
"blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_6" [label="6: DeclStmt \n VARIABLE_DECLARED(x:int*); [line 101, column 3]\n n$65=_fun_malloc_no_fail(sizeof(t=int;nbytes=4):int) [line 101, column 12]\n *&x:int*=(int*)n$65 [line 101, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_6" -> "blockFreeNoLeak#MemoryLeakExample#instance.6bcefe2afb9f172f8aadbab54d9bd144_5" ;
|
||||
"dealloc#MemoryLeakExample#instance.f11793396cace30d3e6f98c00cf65308_1" [label="1: Start MemoryLeakExample.dealloc\nFormals: self:MemoryLeakExample*\nLocals: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"dealloc#MemoryLeakExample#instance.f11793396cace30d3e6f98c00cf65308_1" -> "dealloc#MemoryLeakExample#instance.f11793396cace30d3e6f98c00cf65308_3" ;
|
||||
"dealloc#MemoryLeakExample#instance.f11793396cace30d3e6f98c00cf65308_2" [label="2: Exit MemoryLeakExample.dealloc \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"dealloc#MemoryLeakExample#instance.f11793396cace30d3e6f98c00cf65308_3" [label="3: Call dealloc \n n$0=*&self:MemoryLeakExample* [line 111, column 1]\n n$1=*n$0._attachmentContainerView:UIView* [line 111, column 1]\n n$2=_fun_UIView.dealloc(n$1:UIView*) [line 111, column 1]\n n$3=*&self:MemoryLeakExample* [line 111, column 1]\n n$4=*n$3._backgroundCoveringView:UIView* [line 111, column 1]\n n$5=_fun_UIView.dealloc(n$4:UIView*) [line 111, column 1]\n " shape="box"]
|
||||
|
||||
|
||||
"dealloc#MemoryLeakExample#instance.f11793396cace30d3e6f98c00cf65308_3" -> "dealloc#MemoryLeakExample#instance.f11793396cace30d3e6f98c00cf65308_2" ;
|
||||
"layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_1" [label="1: Start MemoryLeakExample.layoutSubviews\nFormals: self:MemoryLeakExample*\nLocals: shadowPath:CGPath const * attachmentContainerView:UIView* \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_1" -> "layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_6" ;
|
||||
"layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_2" [label="2: Exit MemoryLeakExample.layoutSubviews \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_3" [label="3: Message Call: release \n n$0=*&attachmentContainerView:UIView* [line 23, column 4]\n n$1=_fun_NSObject.release(n$0:UIView*) virtual [line 23, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_3" -> "layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_2" ;
|
||||
"layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_4" [label="4: Call _fun_CGPathRelease \n n$2=*&shadowPath:CGPath const * [line 22, column 17]\n n$3=_fun_CGPathRelease(n$2:CGPath const *) [line 22, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_4" -> "layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_3" ;
|
||||
"layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_5" [label="5: DeclStmt \n VARIABLE_DECLARED(shadowPath:CGPath const *); [line 19, column 3]\n n$4=*&attachmentContainerView:UIView* [line 20, column 28]\n n$5=_fun_UIView.bounds(n$4:UIView*) [line 20, column 52]\n n$6=_fun_CGPathCreateWithRect(n$5:CGRect,null:CGAffineTransform const *) [line 20, column 7]\n *&shadowPath:CGPath const *=n$6 [line 19, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_5" -> "layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_4" ;
|
||||
"layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_6" [label="6: DeclStmt \n VARIABLE_DECLARED(attachmentContainerView:UIView*); [line 18, column 3]\n n$7=_fun___objc_alloc_no_fail(sizeof(t=UIView):unsigned long) [line 18, column 37]\n *&attachmentContainerView:UIView*=n$7 [line 18, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_6" -> "layoutSubviews#MemoryLeakExample#instance.2b3151f18431bcdbc08267ea4ff96f53_5" ;
|
||||
"regularLeak#MemoryLeakExample#instance.939a892cee505c3459f2d889292f218b_1" [label="1: Start MemoryLeakExample.regularLeak\nFormals: self:MemoryLeakExample*\nLocals: x:int* \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"regularLeak#MemoryLeakExample#instance.939a892cee505c3459f2d889292f218b_1" -> "regularLeak#MemoryLeakExample#instance.939a892cee505c3459f2d889292f218b_5" ;
|
||||
"regularLeak#MemoryLeakExample#instance.939a892cee505c3459f2d889292f218b_2" [label="2: Exit MemoryLeakExample.regularLeak \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"regularLeak#MemoryLeakExample#instance.939a892cee505c3459f2d889292f218b_3" [label="3: Return Stmt \n n$45=*&x:int* [line 88, column 11]\n n$46=*n$45:int [line 88, column 10]\n *&return:int=n$46 [line 88, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"regularLeak#MemoryLeakExample#instance.939a892cee505c3459f2d889292f218b_3" -> "regularLeak#MemoryLeakExample#instance.939a892cee505c3459f2d889292f218b_2" ;
|
||||
"regularLeak#MemoryLeakExample#instance.939a892cee505c3459f2d889292f218b_4" [label="4: BinaryOperatorStmt: Assign \n n$47=*&x:int* [line 87, column 4]\n *n$47:int=7 [line 87, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"regularLeak#MemoryLeakExample#instance.939a892cee505c3459f2d889292f218b_4" -> "regularLeak#MemoryLeakExample#instance.939a892cee505c3459f2d889292f218b_3" ;
|
||||
"regularLeak#MemoryLeakExample#instance.939a892cee505c3459f2d889292f218b_5" [label="5: DeclStmt \n VARIABLE_DECLARED(x:int*); [line 86, column 3]\n n$48=_fun_malloc_no_fail(sizeof(t=int;nbytes=4):int) [line 86, column 12]\n *&x:int*=(int*)n$48 [line 86, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"regularLeak#MemoryLeakExample#instance.939a892cee505c3459f2d889292f218b_5" -> "regularLeak#MemoryLeakExample#instance.939a892cee505c3459f2d889292f218b_4" ;
|
||||
"setAttachmentContainerView:#MemoryLeakExample(class UIView)#instance.8d85bf92171cba689e1f602ab1f4c0c7_1" [label="1: Start MemoryLeakExample.setAttachmentContainerView:\nFormals: self:MemoryLeakExample* attachmentContainerView:UIView*\nLocals: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"setAttachmentContainerView:#MemoryLeakExample(class UIView)#instance.8d85bf92171cba689e1f602ab1f4c0c7_1" -> "setAttachmentContainerView:#MemoryLeakExample(class UIView)#instance.8d85bf92171cba689e1f602ab1f4c0c7_3" ;
|
||||
"setAttachmentContainerView:#MemoryLeakExample(class UIView)#instance.8d85bf92171cba689e1f602ab1f4c0c7_2" [label="2: Exit MemoryLeakExample.setAttachmentContainerView: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"setAttachmentContainerView:#MemoryLeakExample(class UIView)#instance.8d85bf92171cba689e1f602ab1f4c0c7_3" [label="3: BinaryOperatorStmt: Node \n n$12=*&self:MemoryLeakExample* [line 14, column 27]\n n$13=*&attachmentContainerView:UIView* [line 14, column 27]\n *n$12._attachmentContainerView:UIView*=n$13 [line 14, column 27]\n " shape="box"]
|
||||
|
||||
|
||||
"setAttachmentContainerView:#MemoryLeakExample(class UIView)#instance.8d85bf92171cba689e1f602ab1f4c0c7_3" -> "setAttachmentContainerView:#MemoryLeakExample(class UIView)#instance.8d85bf92171cba689e1f602ab1f4c0c7_2" ;
|
||||
"setBackgroundCoveringView:#MemoryLeakExample(class UIView)#instance.aa3950cc83a096190a5b6798bab718e3_1" [label="1: Start MemoryLeakExample.setBackgroundCoveringView:\nFormals: self:MemoryLeakExample* backgroundCoveringView:UIView*\nLocals: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"setBackgroundCoveringView:#MemoryLeakExample(class UIView)#instance.aa3950cc83a096190a5b6798bab718e3_1" -> "setBackgroundCoveringView:#MemoryLeakExample(class UIView)#instance.aa3950cc83a096190a5b6798bab718e3_3" ;
|
||||
"setBackgroundCoveringView:#MemoryLeakExample(class UIView)#instance.aa3950cc83a096190a5b6798bab718e3_2" [label="2: Exit MemoryLeakExample.setBackgroundCoveringView: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"setBackgroundCoveringView:#MemoryLeakExample(class UIView)#instance.aa3950cc83a096190a5b6798bab718e3_3" [label="3: BinaryOperatorStmt: Node \n n$8=*&self:MemoryLeakExample* [line 13, column 27]\n n$9=*&backgroundCoveringView:UIView* [line 13, column 27]\n *n$8._backgroundCoveringView:UIView*=n$9 [line 13, column 27]\n " shape="box"]
|
||||
|
||||
|
||||
"setBackgroundCoveringView:#MemoryLeakExample(class UIView)#instance.aa3950cc83a096190a5b6798bab718e3_3" -> "setBackgroundCoveringView:#MemoryLeakExample(class UIView)#instance.aa3950cc83a096190a5b6798bab718e3_2" ;
|
||||
"test#MemoryLeakExample#instance.cbb708bfe735ac5e5777524359299e00_1" [label="1: Start MemoryLeakExample.test\nFormals: self:MemoryLeakExample*\nLocals: shadowPath:CGPath const * \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"test#MemoryLeakExample#instance.cbb708bfe735ac5e5777524359299e00_1" -> "test#MemoryLeakExample#instance.cbb708bfe735ac5e5777524359299e00_4" ;
|
||||
"test#MemoryLeakExample#instance.cbb708bfe735ac5e5777524359299e00_2" [label="2: Exit MemoryLeakExample.test \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"test#MemoryLeakExample#instance.cbb708bfe735ac5e5777524359299e00_3" [label="3: Message Call: setShadowPath: \n n$9=*&self:MemoryLeakExample* [line 29, column 3]\n n$10=_fun_MemoryLeakExample.backgroundCoveringView(n$9:MemoryLeakExample*) [line 29, column 8]\n n$11=_fun_UIView.layer(n$10:UIView*) [line 29, column 31]\n n$8=*&shadowPath:CGPath const * [line 29, column 50]\n n$12=_fun_CALayer.setShadowPath:(n$11:CALayer*,n$8:CGPath const *) [line 29, column 37]\n " shape="box"]
|
||||
|
||||
|
||||
"test#MemoryLeakExample#instance.cbb708bfe735ac5e5777524359299e00_3" -> "test#MemoryLeakExample#instance.cbb708bfe735ac5e5777524359299e00_2" ;
|
||||
"test#MemoryLeakExample#instance.cbb708bfe735ac5e5777524359299e00_4" [label="4: DeclStmt \n VARIABLE_DECLARED(shadowPath:CGPath const *); [line 27, column 3]\n n$13=*&self:MemoryLeakExample* [line 28, column 28]\n n$14=_fun_MemoryLeakExample.backgroundCoveringView(n$13:MemoryLeakExample*) [line 28, column 33]\n n$15=_fun_UIView.bounds(n$14:UIView*) [line 28, column 56]\n n$16=_fun_CGPathCreateWithRect(n$15:CGRect,null:CGAffineTransform const *) [line 28, column 7]\n *&shadowPath:CGPath const *=n$16 [line 27, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"test#MemoryLeakExample#instance.cbb708bfe735ac5e5777524359299e00_4" -> "test#MemoryLeakExample#instance.cbb708bfe735ac5e5777524359299e00_3" ;
|
||||
"testFBColorCreateWithGray#MemoryLeakExample#instance.4f74b525e11effa846f82d4205d48a4a_1" [label="1: Start MemoryLeakExample.testFBColorCreateWithGray\nFormals: self:MemoryLeakExample*\nLocals: borderColor:CGColor* \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"testFBColorCreateWithGray#MemoryLeakExample#instance.4f74b525e11effa846f82d4205d48a4a_1" -> "testFBColorCreateWithGray#MemoryLeakExample#instance.4f74b525e11effa846f82d4205d48a4a_4" ;
|
||||
"testFBColorCreateWithGray#MemoryLeakExample#instance.4f74b525e11effa846f82d4205d48a4a_2" [label="2: Exit MemoryLeakExample.testFBColorCreateWithGray \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"testFBColorCreateWithGray#MemoryLeakExample#instance.4f74b525e11effa846f82d4205d48a4a_3" [label="3: Call _fun_CGColorRelease \n n$42=*&borderColor:CGColor* [line 82, column 18]\n n$43=_fun_CGColorRelease(n$42:CGColor*) [line 82, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"testFBColorCreateWithGray#MemoryLeakExample#instance.4f74b525e11effa846f82d4205d48a4a_3" -> "testFBColorCreateWithGray#MemoryLeakExample#instance.4f74b525e11effa846f82d4205d48a4a_2" ;
|
||||
"testFBColorCreateWithGray#MemoryLeakExample#instance.4f74b525e11effa846f82d4205d48a4a_4" [label="4: DeclStmt \n VARIABLE_DECLARED(borderColor:CGColor*); [line 81, column 3]\n n$44=_fun_FBColorCreateWithGray(0.:double,0.3:double) [line 81, column 28]\n *&borderColor:CGColor*=n$44 [line 81, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"testFBColorCreateWithGray#MemoryLeakExample#instance.4f74b525e11effa846f82d4205d48a4a_4" -> "testFBColorCreateWithGray#MemoryLeakExample#instance.4f74b525e11effa846f82d4205d48a4a_3" ;
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#import <CoreText/CTFont.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface TollBridgeExample : NSObject
|
||||
|
||||
@end
|
||||
|
||||
@implementation TollBridgeExample
|
||||
|
||||
- (void)bridgeTransfer {
|
||||
CFLocaleRef nameRef = CFLocaleCreate(NULL, NULL);
|
||||
NSLocale* a = (__bridge_transfer NSLocale*)nameRef;
|
||||
}
|
||||
|
||||
- (void)bridge {
|
||||
CFLocaleRef nameRef = CFLocaleCreate(NULL, NULL);
|
||||
NSLocale* a = (__bridge NSLocale*)nameRef;
|
||||
}
|
||||
|
||||
- (void)brideRetained {
|
||||
id observer = [NSLocale alloc];
|
||||
CFLocaleRef a = (__bridge_retained CFLocaleRef)observer;
|
||||
}
|
||||
|
||||
- (void)_readHTTPHeader;
|
||||
{
|
||||
CFDictionaryRef ref = CFHTTPMessageCopyAllHeaderFields(NULL);
|
||||
CFBridgingRelease(ref);
|
||||
}
|
||||
|
||||
CTFontRef cfautorelease_test() {
|
||||
return CFAutorelease(CTFontCreateWithName(CFSTR("Icon"), 17.0, NULL));
|
||||
}
|
||||
|
||||
void bridgeDictionaryNoLeak() {
|
||||
NSDictionary* bufferAttributes = @{(NSString*)@"key" : @{}};
|
||||
CFDictionaryRef dict = (__bridge CFDictionaryRef)bufferAttributes;
|
||||
}
|
||||
|
||||
@end
|
@ -1,100 +0,0 @@
|
||||
/* @generated */
|
||||
digraph cfg {
|
||||
"bridgeDictionaryNoLeak.a9b55a0c8751bf95138aeb6870d0dec1_1" [label="1: Start bridgeDictionaryNoLeak\nFormals: \nLocals: dict:__CFDictionary const * bufferAttributes:NSDictionary* \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"bridgeDictionaryNoLeak.a9b55a0c8751bf95138aeb6870d0dec1_1" -> "bridgeDictionaryNoLeak.a9b55a0c8751bf95138aeb6870d0dec1_4" ;
|
||||
"bridgeDictionaryNoLeak.a9b55a0c8751bf95138aeb6870d0dec1_2" [label="2: Exit bridgeDictionaryNoLeak \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"bridgeDictionaryNoLeak.a9b55a0c8751bf95138aeb6870d0dec1_3" [label="3: DeclStmt \n VARIABLE_DECLARED(dict:__CFDictionary const *); [line 44, column 3]\n n$0=*&bufferAttributes:NSDictionary* [line 44, column 52]\n *&dict:__CFDictionary const *=n$0 [line 44, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"bridgeDictionaryNoLeak.a9b55a0c8751bf95138aeb6870d0dec1_3" -> "bridgeDictionaryNoLeak.a9b55a0c8751bf95138aeb6870d0dec1_2" ;
|
||||
"bridgeDictionaryNoLeak.a9b55a0c8751bf95138aeb6870d0dec1_4" [label="4: DeclStmt \n VARIABLE_DECLARED(bufferAttributes:NSDictionary*); [line 43, column 3]\n n$2=_fun_NSDictionary.dictionaryWithObjects:forKeys:count:(null:objc_object*) [line 43, column 58]\n n$1=_fun_NSString.stringWithUTF8String:(\"key\":char* const ) [line 43, column 49]\n n$3=_fun_NSDictionary.dictionaryWithObjects:forKeys:count:(n$2:objc_object*,n$1:objc_object*,null:objc_object*) [line 43, column 36]\n *&bufferAttributes:NSDictionary*=n$3 [line 43, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"bridgeDictionaryNoLeak.a9b55a0c8751bf95138aeb6870d0dec1_4" -> "bridgeDictionaryNoLeak.a9b55a0c8751bf95138aeb6870d0dec1_3" ;
|
||||
"cfautorelease_test.2ccea2233b65cd3828a2d5e2571ad69b_1" [label="1: Start cfautorelease_test\nFormals: \nLocals: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"cfautorelease_test.2ccea2233b65cd3828a2d5e2571ad69b_1" -> "cfautorelease_test.2ccea2233b65cd3828a2d5e2571ad69b_3" ;
|
||||
"cfautorelease_test.2ccea2233b65cd3828a2d5e2571ad69b_2" [label="2: Exit cfautorelease_test \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"cfautorelease_test.2ccea2233b65cd3828a2d5e2571ad69b_3" [label="3: Return Stmt \n n$0=_fun___builtin___CFStringMakeConstantString(\"Icon\":char*) [line 39, column 45]\n n$1=_fun_CTFontCreateWithName(n$0:__CFString const *,17.:double,null:CGAffineTransform const *) [line 39, column 24]\n n$2=_fun_CFAutorelease(n$1:void const *) [line 39, column 10]\n *&return:__CTFont const *=n$2 [line 39, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"cfautorelease_test.2ccea2233b65cd3828a2d5e2571ad69b_3" -> "cfautorelease_test.2ccea2233b65cd3828a2d5e2571ad69b_2" ;
|
||||
"_readHTTPHeader#TollBridgeExample#instance.3d37ce88cf13750e89ba404865a70554_1" [label="1: Start TollBridgeExample._readHTTPHeader\nFormals: self:TollBridgeExample*\nLocals: ref:__CFDictionary const * \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"_readHTTPHeader#TollBridgeExample#instance.3d37ce88cf13750e89ba404865a70554_1" -> "_readHTTPHeader#TollBridgeExample#instance.3d37ce88cf13750e89ba404865a70554_4" ;
|
||||
"_readHTTPHeader#TollBridgeExample#instance.3d37ce88cf13750e89ba404865a70554_2" [label="2: Exit TollBridgeExample._readHTTPHeader \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"_readHTTPHeader#TollBridgeExample#instance.3d37ce88cf13750e89ba404865a70554_3" [label="3: Call _fun_CFBridgingRelease \n n$6=*&ref:__CFDictionary const * [line 35, column 21]\n n$7=_fun_CFBridgingRelease(n$6:void const *) [line 35, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"_readHTTPHeader#TollBridgeExample#instance.3d37ce88cf13750e89ba404865a70554_3" -> "_readHTTPHeader#TollBridgeExample#instance.3d37ce88cf13750e89ba404865a70554_2" ;
|
||||
"_readHTTPHeader#TollBridgeExample#instance.3d37ce88cf13750e89ba404865a70554_4" [label="4: DeclStmt \n VARIABLE_DECLARED(ref:__CFDictionary const *); [line 34, column 3]\n n$8=_fun_CFHTTPMessageCopyAllHeaderFields(null:__CFHTTPMessage*) [line 34, column 25]\n *&ref:__CFDictionary const *=n$8 [line 34, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"_readHTTPHeader#TollBridgeExample#instance.3d37ce88cf13750e89ba404865a70554_4" -> "_readHTTPHeader#TollBridgeExample#instance.3d37ce88cf13750e89ba404865a70554_3" ;
|
||||
"brideRetained#TollBridgeExample#instance.de039e838ea3246eff789fdc0d11405c_1" [label="1: Start TollBridgeExample.brideRetained\nFormals: self:TollBridgeExample*\nLocals: a:__CFLocale const * observer:objc_object* \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"brideRetained#TollBridgeExample#instance.de039e838ea3246eff789fdc0d11405c_1" -> "brideRetained#TollBridgeExample#instance.de039e838ea3246eff789fdc0d11405c_4" ;
|
||||
"brideRetained#TollBridgeExample#instance.de039e838ea3246eff789fdc0d11405c_2" [label="2: Exit TollBridgeExample.brideRetained \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"brideRetained#TollBridgeExample#instance.de039e838ea3246eff789fdc0d11405c_3" [label="3: DeclStmt \n VARIABLE_DECLARED(a:__CFLocale const *); [line 29, column 3]\n n$4=*&observer:objc_object* [line 29, column 50]\n *&a:__CFLocale const *=n$4 [line 29, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"brideRetained#TollBridgeExample#instance.de039e838ea3246eff789fdc0d11405c_3" -> "brideRetained#TollBridgeExample#instance.de039e838ea3246eff789fdc0d11405c_2" ;
|
||||
"brideRetained#TollBridgeExample#instance.de039e838ea3246eff789fdc0d11405c_4" [label="4: DeclStmt \n VARIABLE_DECLARED(observer:objc_object*); [line 28, column 3]\n n$5=_fun___objc_alloc_no_fail(sizeof(t=NSLocale):unsigned long) [line 28, column 17]\n *&observer:objc_object*=n$5 [line 28, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"brideRetained#TollBridgeExample#instance.de039e838ea3246eff789fdc0d11405c_4" -> "brideRetained#TollBridgeExample#instance.de039e838ea3246eff789fdc0d11405c_3" ;
|
||||
"bridge#TollBridgeExample#instance.fadd5a014118113c960fa1a6e3ff27ba_1" [label="1: Start TollBridgeExample.bridge\nFormals: self:TollBridgeExample*\nLocals: a:NSLocale* nameRef:__CFLocale const * \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"bridge#TollBridgeExample#instance.fadd5a014118113c960fa1a6e3ff27ba_1" -> "bridge#TollBridgeExample#instance.fadd5a014118113c960fa1a6e3ff27ba_4" ;
|
||||
"bridge#TollBridgeExample#instance.fadd5a014118113c960fa1a6e3ff27ba_2" [label="2: Exit TollBridgeExample.bridge \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"bridge#TollBridgeExample#instance.fadd5a014118113c960fa1a6e3ff27ba_3" [label="3: DeclStmt \n VARIABLE_DECLARED(a:NSLocale*); [line 24, column 3]\n n$2=*&nameRef:__CFLocale const * [line 24, column 37]\n *&a:NSLocale*=n$2 [line 24, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"bridge#TollBridgeExample#instance.fadd5a014118113c960fa1a6e3ff27ba_3" -> "bridge#TollBridgeExample#instance.fadd5a014118113c960fa1a6e3ff27ba_2" ;
|
||||
"bridge#TollBridgeExample#instance.fadd5a014118113c960fa1a6e3ff27ba_4" [label="4: DeclStmt \n VARIABLE_DECLARED(nameRef:__CFLocale const *); [line 23, column 3]\n n$3=_fun_CFLocaleCreate(null:__CFAllocator const *,null:__CFString const *) [line 23, column 25]\n *&nameRef:__CFLocale const *=n$3 [line 23, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"bridge#TollBridgeExample#instance.fadd5a014118113c960fa1a6e3ff27ba_4" -> "bridge#TollBridgeExample#instance.fadd5a014118113c960fa1a6e3ff27ba_3" ;
|
||||
"bridgeTransfer#TollBridgeExample#instance.d0065913beb197e891ef0d8a0bb81b38_1" [label="1: Start TollBridgeExample.bridgeTransfer\nFormals: self:TollBridgeExample*\nLocals: a:NSLocale* nameRef:__CFLocale const * \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"bridgeTransfer#TollBridgeExample#instance.d0065913beb197e891ef0d8a0bb81b38_1" -> "bridgeTransfer#TollBridgeExample#instance.d0065913beb197e891ef0d8a0bb81b38_4" ;
|
||||
"bridgeTransfer#TollBridgeExample#instance.d0065913beb197e891ef0d8a0bb81b38_2" [label="2: Exit TollBridgeExample.bridgeTransfer \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"bridgeTransfer#TollBridgeExample#instance.d0065913beb197e891ef0d8a0bb81b38_3" [label="3: DeclStmt \n VARIABLE_DECLARED(a:NSLocale*); [line 19, column 3]\n n$0=*&nameRef:__CFLocale const * [line 19, column 46]\n *&a:NSLocale*=n$0 [line 19, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"bridgeTransfer#TollBridgeExample#instance.d0065913beb197e891ef0d8a0bb81b38_3" -> "bridgeTransfer#TollBridgeExample#instance.d0065913beb197e891ef0d8a0bb81b38_2" ;
|
||||
"bridgeTransfer#TollBridgeExample#instance.d0065913beb197e891ef0d8a0bb81b38_4" [label="4: DeclStmt \n VARIABLE_DECLARED(nameRef:__CFLocale const *); [line 18, column 3]\n n$1=_fun_CFLocaleCreate(null:__CFAllocator const *,null:__CFString const *) [line 18, column 25]\n *&nameRef:__CFLocale const *=n$1 [line 18, column 3]\n " shape="box"]
|
||||
|
||||
|
||||
"bridgeTransfer#TollBridgeExample#instance.d0065913beb197e891ef0d8a0bb81b38_4" -> "bridgeTransfer#TollBridgeExample#instance.d0065913beb197e891ef0d8a0bb81b38_3" ;
|
||||
"dealloc#TollBridgeExample#instance.c883387ebf7fc6e9cfedaafab66aec43_1" [label="1: Start TollBridgeExample.dealloc\nFormals: self:TollBridgeExample*\nLocals: \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"dealloc#TollBridgeExample#instance.c883387ebf7fc6e9cfedaafab66aec43_1" -> "dealloc#TollBridgeExample#instance.c883387ebf7fc6e9cfedaafab66aec43_3" ;
|
||||
"dealloc#TollBridgeExample#instance.c883387ebf7fc6e9cfedaafab66aec43_2" [label="2: Exit TollBridgeExample.dealloc \n " color=yellow style=filled]
|
||||
|
||||
|
||||
"dealloc#TollBridgeExample#instance.c883387ebf7fc6e9cfedaafab66aec43_3" [label="3: Call dealloc \n " shape="box"]
|
||||
|
||||
|
||||
"dealloc#TollBridgeExample#instance.c883387ebf7fc6e9cfedaafab66aec43_3" -> "dealloc#TollBridgeExample#instance.c883387ebf7fc6e9cfedaafab66aec43_2" ;
|
||||
}
|
Loading…
Reference in new issue