Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 9 of 9 for IsUnsafePtr (0.16 sec)

  1. src/cmd/compile/internal/walk/convert.go

    	n.X = walkExpr(n.X, init)
    	if n.Op() == ir.OCONVNOP && n.Type() == n.X.Type() {
    		return n.X
    	}
    	if n.Op() == ir.OCONVNOP && ir.ShouldCheckPtr(ir.CurFunc, 1) {
    		if n.Type().IsUnsafePtr() && n.X.Type().IsUintptr() { // uintptr to unsafe.Pointer
    			return walkCheckPtrArithmetic(n, init)
    		}
    	}
    	param, result := rtconvfn(n.X.Type(), n.Type())
    	if param == types.Txxx {
    		return n
    	}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Oct 09 17:28:22 UTC 2023
    - 18.2K bytes
    - Viewed (0)
  2. src/cmd/compile/internal/typecheck/subr.go

    			return ir.OSTR2RUNES, ""
    		}
    	}
    
    	// 8. src is a pointer or uintptr and dst is unsafe.Pointer.
    	if (src.IsPtr() || src.IsUintptr()) && dst.IsUnsafePtr() {
    		return ir.OCONVNOP, ""
    	}
    
    	// 9. src is unsafe.Pointer and dst is a pointer or uintptr.
    	if src.IsUnsafePtr() && (dst.IsPtr() || dst.IsUintptr()) {
    		return ir.OCONVNOP, ""
    	}
    
    	// 10. src is a slice and dst is an array or pointer-to-array.
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu Oct 05 19:45:58 UTC 2023
    - 20.2K bytes
    - Viewed (0)
  3. src/cmd/compile/internal/typecheck/expr.go

    		base.Fatalf("no type specified for OSLICEHEADER")
    	}
    
    	if !t.IsSlice() {
    		base.Fatalf("invalid type %v for OSLICEHEADER", n.Type())
    	}
    
    	if n.Ptr == nil || n.Ptr.Type() == nil || !n.Ptr.Type().IsUnsafePtr() {
    		base.Fatalf("need unsafe.Pointer for OSLICEHEADER")
    	}
    
    	n.Ptr = Expr(n.Ptr)
    	n.Len = DefaultLit(Expr(n.Len), types.Types[types.TINT])
    	n.Cap = DefaultLit(Expr(n.Cap), types.Types[types.TINT])
    
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu Apr 04 14:29:45 UTC 2024
    - 23.1K bytes
    - Viewed (0)
  4. src/cmd/compile/internal/ssa/branchelim.go

    			for i := len(b.Values) - 1; i >= 0; i-- {
    				v := b.Values[i]
    				if !loadAddr.contains(v.ID) {
    					continue
    				}
    				for _, a := range v.Args {
    					if a.Type.IsInteger() || a.Type.IsPtr() || a.Type.IsUnsafePtr() {
    						loadAddr.add(a.ID)
    					}
    				}
    			}
    		}
    		if loadAddr.size() == n {
    			break
    		}
    	}
    
    	change := true
    	for change {
    		change = false
    		for _, b := range f.Blocks {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed Nov 30 17:46:51 UTC 2022
    - 12.7K bytes
    - Viewed (0)
  5. src/cmd/compile/internal/types/type.go

    	return t.kind == TPTR
    }
    
    // IsPtrElem reports whether t is the element of a pointer (to t).
    func (t *Type) IsPtrElem() bool {
    	return t.cache.ptr != nil
    }
    
    // IsUnsafePtr reports whether t is an unsafe pointer.
    func (t *Type) IsUnsafePtr() bool {
    	return t.kind == TUNSAFEPTR
    }
    
    // IsUintptr reports whether t is a uintptr.
    func (t *Type) IsUintptr() bool {
    	return t.kind == TUINTPTR
    }
    
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu Apr 04 14:29:45 UTC 2024
    - 49.5K bytes
    - Viewed (0)
  6. src/cmd/compile/internal/typecheck/stmt.go

    			// like fixedbugs/issue24491a.go correctly.
    			//
    			// TODO(mdempsky): Limit to static callees with
    			// //go:uintptr{escapes,keepalive}?
    			if arg.Type().IsUintptr() && arg.X.Type().IsUnsafePtr() {
    				visit(&arg.X)
    				return
    			}
    
    		case ir.OARRAYLIT, ir.OSLICELIT, ir.OSTRUCTLIT:
    			// TODO(mdempsky): For very large slices, it may be preferable
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Nov 20 15:10:54 UTC 2023
    - 17.8K bytes
    - Viewed (0)
  7. src/cmd/compile/internal/ssa/writebarrier.go

    				// calls to newobject, which will have result type
    				// unsafe.Pointer instead. We can't easily infer how large the
    				// allocated memory is, so just skip it.
    				if types.LocalPkg.Path == "runtime" && v.Type.IsUnsafePtr() {
    					continue
    				}
    
    				nptr := v.Type.Elem().Size() / ptrSize
    				if nptr > 64 {
    					nptr = 64
    				}
    				zeroes[mem.ID] = ZeroRegion{base: v, mask: 1<<uint(nptr) - 1}
    			}
    		}
    	}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Sep 08 19:09:14 UTC 2023
    - 23.5K bytes
    - Viewed (0)
  8. src/cmd/compile/internal/ssa/expand_calls.go

    	ft := from.Type
    	if offset == 0 {
    		if ft == pt {
    			return from
    		}
    		// This captures common, (apparently) safe cases.  The unsafe cases involve ft == uintptr
    		if (ft.IsPtr() || ft.IsUnsafePtr()) && pt.IsPtr() {
    			return from
    		}
    	}
    	// Simplify, canonicalize
    	for from.Op == OpOffPtr {
    		offset += from.AuxInt
    		from = from.Args[0]
    	}
    	if from == x.sp {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Nov 28 05:13:40 UTC 2023
    - 31.9K bytes
    - Viewed (0)
  9. src/cmd/compile/internal/ssagen/ssa.go

    		if from.Kind() == to.Kind() {
    			return v
    		}
    
    		// unsafe.Pointer <--> *T
    		if to.IsUnsafePtr() && from.IsPtrShaped() || from.IsUnsafePtr() && to.IsPtrShaped() {
    			if s.checkPtrEnabled && checkPtrOK && to.IsPtr() && from.IsUnsafePtr() {
    				s.checkPtrAlignment(n, v, nil)
    			}
    			return v
    		}
    
    		// map <--> *hmap
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Jun 10 19:44:43 UTC 2024
    - 284.9K bytes
    - Viewed (0)
Back to top