Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Glasgow Haskell Compiler
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
0
Merge Requests
0
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Shayne Fletcher
Glasgow Haskell Compiler
Commits
de6c394e
Commit
de6c394e
authored
Aug 30, 2007
by
rl@cse.unsw.edu.au
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Find the correct array type for primitive tycons
parent
9f695847
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
30 additions
and
5 deletions
+30
-5
compiler/vectorise/VectBuiltIn.hs
compiler/vectorise/VectBuiltIn.hs
+10
-1
compiler/vectorise/VectMonad.hs
compiler/vectorise/VectMonad.hs
+5
-2
compiler/vectorise/VectUtils.hs
compiler/vectorise/VectUtils.hs
+15
-2
No files found.
compiler/vectorise/VectBuiltIn.hs
View file @
de6c394e
...
...
@@ -2,7 +2,7 @@ module VectBuiltIn (
Builtins
(
..
),
sumTyCon
,
prodTyCon
,
initBuiltins
,
initBuiltinTyCons
,
initBuiltinPAs
,
initBuiltinPRs
,
primMethod
primMethod
,
primPArray
)
where
#
include
"HsVersions.h"
...
...
@@ -20,6 +20,7 @@ import NameEnv
import
OccName
import
TypeRep
(
funTyCon
)
import
Type
(
Type
)
import
TysPrim
import
TysWiredIn
(
unitTyCon
,
tupleTyCon
,
intTyConName
)
import
PrelNames
...
...
@@ -203,6 +204,14 @@ primMethod tycon method
|
otherwise
=
return
Nothing
primPArray
::
TyCon
->
DsM
(
Maybe
TyCon
)
primPArray
tycon
|
Just
suffix
<-
lookupNameEnv
prim_ty_cons
(
tyConName
tycon
)
=
liftM
Just
$
dsLookupTyCon
=<<
lookupOrig
nDP_PRIM
(
mkOccName
tcName
$
"PArray"
++
suffix
)
|
otherwise
=
return
Nothing
prim_ty_cons
=
mkNameEnv
[
mk_prim
intPrimTyCon
]
where
mk_prim
tycon
=
(
tyConName
tycon
,
'_'
:
getOccString
tycon
)
compiler/vectorise/VectMonad.hs
View file @
de6c394e
...
...
@@ -24,7 +24,7 @@ module VectMonad (
lookupDataCon
,
defDataCon
,
lookupTyConPA
,
defTyConPA
,
defTyConPAs
,
lookupTyConPR
,
lookupPrimMethod
,
lookupPrimMethod
,
lookupPrimPArray
,
lookupTyVarPA
,
defLocalTyVar
,
defLocalTyVarWithPA
,
localTyVars
,
{-lookupInst,-}
lookupFamInst
...
...
@@ -355,8 +355,11 @@ defDataCon :: DataCon -> DataCon -> VM ()
defDataCon
dc
dc'
=
updGEnv
$
\
env
->
env
{
global_datacons
=
extendNameEnv
(
global_datacons
env
)
(
dataConName
dc
)
dc'
}
lookupPrimPArray
::
TyCon
->
VM
(
Maybe
TyCon
)
lookupPrimPArray
=
liftDs
.
primPArray
lookupPrimMethod
::
TyCon
->
String
->
VM
(
Maybe
Var
)
lookupPrimMethod
tycon
method
=
liftDs
$
primMethod
tycon
method
lookupPrimMethod
tycon
=
liftDs
.
primMethod
tycon
lookupTyConPA
::
TyCon
->
VM
(
Maybe
Var
)
lookupTyConPA
tc
=
readGEnv
$
\
env
->
lookupNameEnv
(
global_pa_funs
env
)
(
tyConName
tc
)
...
...
compiler/vectorise/VectUtils.hs
View file @
de6c394e
...
...
@@ -100,6 +100,14 @@ splitClosureTy = splitBinTy "splitClosureTy" closureTyConName
splitPArrayTy
::
Type
->
Type
splitPArrayTy
=
splitUnTy
"splitPArrayTy"
parrayTyConName
splitPrimTyCon
::
Type
->
Maybe
TyCon
splitPrimTyCon
ty
|
Just
(
tycon
,
[]
)
<-
splitTyConApp_maybe
ty
,
isPrimTyCon
tycon
=
Just
tycon
|
otherwise
=
Nothing
mkBuiltinTyConApp
::
(
Builtins
->
TyCon
)
->
[
Type
]
->
VM
Type
mkBuiltinTyConApp
get_tc
tys
=
do
...
...
@@ -138,6 +146,12 @@ mkPADictType :: Type -> VM Type
mkPADictType
ty
=
mkBuiltinTyConApp
paTyCon
[
ty
]
mkPArrayType
::
Type
->
VM
Type
mkPArrayType
ty
|
Just
tycon
<-
splitPrimTyCon
ty
=
do
arr
<-
traceMaybeV
"mkPArrayType"
(
ppr
tycon
)
$
lookupPrimPArray
tycon
return
$
mkTyConApp
arr
[]
mkPArrayType
ty
=
mkBuiltinTyConApp
parrayTyCon
[
ty
]
mkBuiltinCo
::
(
Builtins
->
TyCon
)
->
VM
Coercion
...
...
@@ -229,8 +243,7 @@ pa_empty = (emptyPAVar, "emptyPA")
paMethod
::
PAMethod
->
Type
->
VM
CoreExpr
paMethod
(
method
,
name
)
ty
|
Just
(
tycon
,
[]
)
<-
splitTyConApp_maybe
ty
,
isPrimTyCon
tycon
|
Just
tycon
<-
splitPrimTyCon
ty
=
do
fn
<-
traceMaybeV
"paMethod"
(
ppr
tycon
<+>
text
name
)
$
lookupPrimMethod
tycon
name
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment